commit 15f148013b5426001cef0721f7d36495c742ae5e Author: King_DuckZ Date: Mon Feb 17 22:05:20 2020 +0100 v1.0 diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..54110a9c --- /dev/null +++ b/LICENSE @@ -0,0 +1,6 @@ +The XQilla software is a combination of what was previously two +separate libraries -- Pathan and and XQuery library. Each +has its own license file in this directory. See these files +for license information for XQilla: + Pathan -- LICENSE.pathan.txt + XQuery -- LICENSE.xquery.txt diff --git a/LICENSE.pathan.txt b/LICENSE.pathan.txt new file mode 100644 index 00000000..9dde4e96 --- /dev/null +++ b/LICENSE.pathan.txt @@ -0,0 +1,34 @@ +The DecisionSoft Open Source Licence + +This licence is based on the BSD Licence template. + +Copyright (c) 2001, DecisionSoft Limited +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +* Neither the name of DecisionSoft Limited nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE diff --git a/LICENSE.xquery.txt b/LICENSE.xquery.txt new file mode 100644 index 00000000..dc7fecf0 --- /dev/null +++ b/LICENSE.xquery.txt @@ -0,0 +1,73 @@ + +The following is the license that applies to this copy of the Berkeley DB XML +XQuery software. For a license to use the Berkeley DB XML software under conditions +other than those described here, or to purchase support for this software, +please contact Oracle at berkeleydb-info_us@oracle.com. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +/* + * Copyright (c) 2001,2006 Oracle. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Redistributions in any form must be accompanied by information on + * how to obtain complete source code for the DB software and any + * accompanying software that uses the DB software. The source code + * must either be included in the distribution or be available for no + * more than the cost of distribution plus a nominal fee, and must be + * freely redistributable under reasonable conditions. For an + * executable file, complete source code means the source code for all + * modules it contains. It does not include source code for modules or + * files that typically accompany the major components of the operating + * system on which the executable file runs. + * + * THIS SOFTWARE IS PROVIDED BY ORACLE ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR + * NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL ORACLE + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +/* + * Copyright (c) 2005,2006 + * Progress Software Corporation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The end-user documentation included with the redistribution, if any, + * must include the following acknowledgment: "This product includes + * software developed by Progress Software Corporation." Alternately, + * this acknowledgment may appear in the software itself, if and wherever + * such third-party acknowledgments normally appear. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN + * NO EVENT SHALL PROGRESS SOFTWARE CORPORATION BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 00000000..7d5377a7 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,468 @@ +AUTOMAKE_OPTIONS = foreign dist-zip +SUBDIRS = include + +INCLUDES = -I$(top_srcdir)/include/ -I$(xerces_include) -I$(top_srcdir)/src/lexer/ +LDFLAGS = -L$(xerces_lib) -R$(xerces_lib) +LDADD = libxqilla.la -lxerces-c + +bin_PROGRAMS = xqilla +noinst_PROGRAMS = basicXQillaUsage xqtsRunner + +lib_LTLIBRARIES = libxqilla.la + +libxqilla_la_SOURCES = \ +src/framework/ReferenceCounted.cpp \ +src/framework/BaseMemoryManager.cpp \ +src/framework/ProxyMemoryManager.cpp \ +src/framework/StringPool.cpp \ +src/framework/XPath2MemoryManagerImpl.cpp \ +src/context/XQScopedNamespace.cpp \ +src/context/impl/CollationImpl.cpp \ +src/context/impl/CodepointCollation.cpp \ +src/context/impl/VarStoreImpl.hpp \ +src/context/impl/VarStoreImpl.cpp \ +src/context/impl/VarTypeStoreImpl.hpp \ +src/context/impl/VarTypeStoreImpl.cpp \ +src/context/impl/VarHashEntryImpl.cpp \ +src/context/impl/XQContextImpl.cpp \ +src/context/impl/XQDynamicContextImpl.cpp \ +src/context/impl/ItemFactoryImpl.cpp \ +src/context/impl/XQRemoteDebugger.cpp \ +src/ast/XQAtomize.cpp \ +src/ast/XQCastableAs.cpp \ +src/ast/XQCastAs.cpp \ +src/ast/XQContextItem.cpp \ +src/ast/XQFunction.cpp \ +src/ast/XQIf.cpp \ +src/ast/ASTNodeImpl.cpp \ +src/ast/XQInstanceOf.cpp \ +src/ast/XQLiteral.cpp \ +src/ast/XQNav.cpp \ +src/ast/XQOperator.cpp \ +src/ast/XQParenthesizedExpr.cpp \ +src/ast/XQSequence.cpp \ +src/ast/XQStep.cpp \ +src/ast/XQTreatAs.cpp \ +src/ast/XQVariable.cpp \ +src/ast/StaticResolutionContext.cpp \ +src/ast/StaticType.cpp \ +src/ast/AggregateFunction.cpp \ +src/ast/ConstantFoldingFunction.cpp \ +src/ast/NumericFunction.cpp \ +src/ast/XQDebugHook.cpp \ +src/ast/XQDOMConstructor.cpp \ +src/ast/XQDocumentConstructor.cpp \ +src/ast/XQElementConstructor.cpp \ +src/ast/XQAttributeConstructor.cpp \ +src/ast/XQPIConstructor.cpp \ +src/ast/XQCommentConstructor.cpp \ +src/ast/XQTextConstructor.cpp \ +src/ast/XQFLWOR.cpp \ +src/ast/XQFunctionCall.cpp \ +src/ast/XQGlobalVariable.cpp \ +src/ast/XQOrderingChange.cpp \ +src/ast/XQQuantified.cpp \ +src/ast/XQValidate.cpp \ +src/ast/XQTypeswitch.cpp \ +src/ast/XQVariableBinding.cpp \ +src/ast/XPath1Compat.cpp \ +src/ast/ConvertFunctionArg.cpp \ +src/ast/XQDocumentOrder.cpp \ +src/ast/XQPredicate.cpp \ +src/fulltext/FTContains.cpp \ +src/fulltext/FTWords.cpp \ +src/fulltext/FTOr.cpp \ +src/fulltext/FTAnd.cpp \ +src/fulltext/FTMildnot.cpp \ +src/fulltext/FTUnaryNot.cpp \ +src/fulltext/DefaultTokenizer.cpp \ +src/fulltext/DefaultTokenStore.cpp \ +src/fulltext/FTOrder.cpp \ +src/fulltext/FTDistance.cpp \ +src/fulltext/FTScope.cpp \ +src/fulltext/FTContent.cpp \ +src/fulltext/FTWindow.cpp \ +src/dom-api/impl/XQillaBuilderImpl.cpp \ +src/dom-api/impl/XQillaBuilderImpl.hpp \ +src/dom-api/impl/XQillaDocumentImpl.cpp \ +src/dom-api/impl/XQillaDocumentImpl.hpp \ +src/dom-api/impl/XQillaExpressionImpl.cpp \ +src/dom-api/impl/XQillaExpressionImpl.hpp \ +src/dom-api/impl/XQillaNSResolverImpl.cpp \ +src/dom-api/impl/XQillaXMLGrammarPoolImpl.cpp \ +src/dom-api/impl/XQillaXMLGrammarPoolImpl.hpp \ +src/dom-api/impl/XPathDocumentImpl.cpp \ +src/dom-api/impl/XPathDocumentImpl.hpp \ +src/dom-api/impl/XPathNamespaceImpl.cpp \ +src/dom-api/impl/XPathNamespaceImpl.hpp \ +src/dom-api/impl/XPath2ResultImpl.cpp \ +src/dom-api/impl/XPath2ResultImpl.hpp \ +src/dom-api/XQillaImplementation.cpp \ +src/dom-api/XQillaImplementation.hpp \ +src/dom-api/XPath2NodeSerializer.cpp \ +src/dom-api/XPath2NodeSerializer.hpp \ +src/simple-api/XQilla.cpp \ +src/simple-api/XQQuery.cpp \ +src/utils/UTF8Str.cpp \ +src/utils/XMLChCompare.cpp \ +src/utils/XStr.cpp \ +src/utils/ContextUtils.cpp \ +src/utils/DateUtils.cpp \ +src/utils/DateUtils.hpp \ +src/utils/NumUtils.cpp \ +src/utils/XQillaPlatformUtils.cpp \ +src/utils/PrintAST.cpp \ +src/utils/XPath2NSUtils.cpp \ +src/utils/XPath2Utils.cpp \ +src/utils/UCANormalizer1.cpp \ +src/utils/UCANormalizer2.cpp \ +src/utils/UCANormalizer3.cpp \ +src/utils/UCANormalizer4.cpp \ +src/utils/UCANormalizer.cpp \ +src/exceptions/XQillaException.cpp \ +src/exceptions/XQException.cpp \ +src/exceptions/InvalidLexicalSpaceException.hpp \ +src/exceptions/MiscException.hpp \ +src/functions/FuncFactory.cpp \ +src/functions/FuncFactoryTemplate.hpp \ +src/functions/FunctionLookupImpl.cpp \ +src/functions/FunctionLookupImpl.hpp \ +src/functions/FunctionAbs.cpp \ +src/functions/FunctionAvg.cpp \ +src/functions/FunctionBaseURI.cpp \ +src/functions/FunctionBoolean.cpp \ +src/functions/FunctionCeiling.cpp \ +src/functions/FunctionCodepointEqual.cpp \ +src/functions/FunctionCodepointsToString.cpp \ +src/functions/FunctionCollection.cpp \ +src/functions/FunctionCompare.cpp \ +src/functions/FunctionConcat.cpp \ +src/functions/FunctionConstructor.cpp \ +src/functions/FunctionContains.cpp \ +src/functions/FunctionCount.cpp \ +src/functions/FunctionCurrentDate.cpp \ +src/functions/FunctionCurrentDateTime.cpp \ +src/functions/FunctionCurrentTime.cpp \ +src/functions/FunctionData.cpp \ +src/functions/FunctionDateTime.cpp \ +src/functions/FunctionDeepEqual.cpp \ +src/functions/FunctionDefaultCollation.cpp \ +src/functions/FunctionDistinctValues.cpp \ +src/functions/FunctionDocAvailable.cpp \ +src/functions/FunctionDoc.cpp \ +src/functions/FunctionDocumentURI.cpp \ +src/functions/FunctionEmpty.cpp \ +src/functions/FunctionEncodeForUri.cpp \ +src/functions/FunctionEndsWith.cpp \ +src/functions/FunctionError.cpp \ +src/functions/FunctionEscapeHtmlUri.cpp \ +src/functions/FunctionExactlyOne.cpp \ +src/functions/FunctionExists.cpp \ +src/functions/FunctionFalse.cpp \ +src/functions/FunctionFloor.cpp \ +src/functions/FunctionId.cpp \ +src/functions/FunctionIdref.cpp \ +src/functions/FunctionImplicitTimezone.cpp \ +src/functions/FunctionIndexOf.cpp \ +src/functions/FunctionInScopePrefixes.cpp \ +src/functions/FunctionInsertBefore.cpp \ +src/functions/FunctionIriToUri.cpp \ +src/functions/FunctionLang.cpp \ +src/functions/FunctionLast.cpp \ +src/functions/FunctionLocalname.cpp \ +src/functions/FunctionLocalNameFromQName.cpp \ +src/functions/FunctionLowerCase.cpp \ +src/functions/FunctionMatches.cpp \ +src/functions/FunctionMax.cpp \ +src/functions/FunctionMin.cpp \ +src/functions/FunctionName.cpp \ +src/functions/FunctionNamespaceUri.cpp \ +src/functions/FunctionNamespaceURIForPrefix.cpp \ +src/functions/FunctionNamespaceURIFromQName.cpp \ +src/functions/FunctionNilled.cpp \ +src/functions/FunctionNodeName.cpp \ +src/functions/FunctionNormalizeSpace.cpp \ +src/functions/FunctionNormalizeUnicode.cpp \ +src/functions/FunctionNot.cpp \ +src/functions/FunctionNumber.cpp \ +src/functions/FunctionOneOrMore.cpp \ +src/functions/FunctionPosition.cpp \ +src/functions/FunctionPrefixFromQName.cpp \ +src/functions/FunctionQName.cpp \ +src/functions/FunctionRemove.cpp \ +src/functions/FunctionReplace.cpp \ +src/functions/FunctionResolveQName.cpp \ +src/functions/FunctionResolveURI.cpp \ +src/functions/FunctionReverse.cpp \ +src/functions/FunctionRoot.cpp \ +src/functions/FunctionRound.cpp \ +src/functions/FunctionRoundHalfToEven.cpp \ +src/functions/FunctionStartsWith.cpp \ +src/functions/FunctionStaticBaseURI.cpp \ +src/functions/FunctionString.cpp \ +src/functions/FunctionStringJoin.cpp \ +src/functions/FunctionStringLength.cpp \ +src/functions/FunctionStringToCodepoints.cpp \ +src/functions/FunctionSubsequence.cpp \ +src/functions/FunctionSubstringAfter.cpp \ +src/functions/FunctionSubstringBefore.cpp \ +src/functions/FunctionSubstring.cpp \ +src/functions/FunctionSum.cpp \ +src/functions/FunctionTokenize.cpp \ +src/functions/FunctionTrace.cpp \ +src/functions/FunctionTranslate.cpp \ +src/functions/FunctionTrue.cpp \ +src/functions/FunctionUnordered.cpp \ +src/functions/FunctionUpperCase.cpp \ +src/functions/FunctionZeroOrOne.cpp \ +src/functions/FunctionAdjustDateTimeToTimezone.cpp \ +src/functions/FunctionAdjustDateToTimezone.cpp \ +src/functions/FunctionAdjustTimeToTimezone.cpp \ +src/functions/FunctionDayFromDate.cpp \ +src/functions/FunctionDayFromDateTime.cpp \ +src/functions/FunctionDaysFromDuration.cpp \ +src/functions/FunctionHoursFromDateTime.cpp \ +src/functions/FunctionHoursFromDuration.cpp \ +src/functions/FunctionHoursFromTime.cpp \ +src/functions/FunctionMinutesFromDateTime.cpp \ +src/functions/FunctionMinutesFromDuration.cpp \ +src/functions/FunctionMinutesFromTime.cpp \ +src/functions/FunctionMonthFromDate.cpp \ +src/functions/FunctionMonthFromDateTime.cpp \ +src/functions/FunctionMonthsFromDuration.cpp \ +src/functions/FunctionSecondsFromDateTime.cpp \ +src/functions/FunctionSecondsFromDuration.cpp \ +src/functions/FunctionSecondsFromTime.cpp \ +src/functions/FunctionTimezoneFromDate.cpp \ +src/functions/FunctionTimezoneFromDateTime.cpp \ +src/functions/FunctionTimezoneFromTime.cpp \ +src/functions/FunctionYearFromDate.cpp \ +src/functions/FunctionYearFromDateTime.cpp \ +src/functions/FunctionYearsFromDuration.cpp \ +src/functions/XQUserFunction.cpp \ +src/items/impl/ATAnySimpleTypeImpl.cpp \ +src/items/impl/ATAnySimpleTypeImpl.hpp \ +src/items/impl/ATAnyURIOrDerivedImpl.cpp \ +src/items/impl/ATAnyURIOrDerivedImpl.hpp \ +src/items/impl/ATBase64BinaryOrDerivedImpl.cpp \ +src/items/impl/ATBase64BinaryOrDerivedImpl.hpp \ +src/items/impl/ATBooleanOrDerivedImpl.cpp \ +src/items/impl/ATDateOrDerivedImpl.cpp \ +src/items/impl/ATDateTimeOrDerivedImpl.cpp \ +src/items/impl/ATDecimalOrDerivedImpl.cpp \ +src/items/impl/ATDoubleOrDerivedImpl.cpp \ +src/items/impl/ATDurationOrDerivedImpl.cpp \ +src/items/impl/ATFloatOrDerivedImpl.cpp \ +src/items/impl/ATGDayOrDerivedImpl.cpp \ +src/items/impl/ATGMonthDayOrDerivedImpl.cpp \ +src/items/impl/ATGMonthOrDerivedImpl.cpp \ +src/items/impl/ATGYearMonthOrDerivedImpl.cpp \ +src/items/impl/ATGYearOrDerivedImpl.cpp \ +src/items/impl/ATHexBinaryOrDerivedImpl.cpp \ +src/items/impl/ATHexBinaryOrDerivedImpl.hpp \ +src/items/impl/ATNotationOrDerivedImpl.cpp \ +src/items/impl/ATNotationOrDerivedImpl.hpp \ +src/items/impl/ATQNameOrDerivedImpl.cpp \ +src/items/impl/ATStringOrDerivedImpl.cpp \ +src/items/impl/ATStringOrDerivedImpl.hpp \ +src/items/impl/ATTimeOrDerivedImpl.cpp \ +src/items/impl/ATUntypedAtomicImpl.cpp \ +src/items/impl/ATUntypedAtomicImpl.hpp \ +src/items/impl/NodeImpl.cpp \ +src/items/DatatypeFactory.cpp \ +src/items/DatatypeFactoryTemplate.hpp \ +src/items/DatatypeLookup.cpp \ +src/items/AnyAtomicTypeConstructor.cpp \ +src/items/AnyAtomicType.cpp \ +src/items/ATDurationOrDerived.cpp \ +src/items/ATQNameConstructor.cpp \ +src/items/ATUntypedAtomic.cpp \ +src/items/DateOrTimeType.cpp \ +src/items/Item.cpp \ +src/items/Node.cpp \ +src/items/Numeric.cpp \ +src/items/NumericTypeConstructor.cpp \ +src/items/Timezone.cpp \ +src/parser/QName.cpp \ +src/parser/XQParser.cpp \ +src/parser/XQParser.hpp \ +src/lexer/FlexLexer.h \ +src/lexer/XQillaLexer.hpp \ +src/lexer/XQLexer.cpp \ +src/lexer/XQLexer.hpp \ +src/mapm/mapm5sin.c \ +src/mapm/mapm_add.c \ +src/mapm/mapmasin.c \ +src/mapm/mapmasn0.c \ +src/mapm/mapmcbrt.c \ +src/mapm/mapmcnst.c \ +src/mapm/mapm_cpi.c \ +src/mapm/m_apm.cpp \ +src/mapm/mapm_div.c \ +src/mapm/mapm_exp.c \ +src/mapm/mapmfact.c \ +src/mapm/mapm_fam.c \ +src/mapm/mapm_fft.c \ +src/mapm/mapm_flr.c \ +src/mapm/mapmfmul.c \ +src/mapm/mapm_fpf.c \ +src/mapm/mapm_gcd.c \ +src/mapm/mapmgues.c \ +src/mapm/mapmhasn.c \ +src/mapm/mapmhsin.c \ +src/mapm/mapmipwr.c \ +src/mapm/mapmistr.c \ +src/mapm/m_apm_lc.h \ +src/mapm/mapm_lg2.c \ +src/mapm/mapm_lg3.c \ +src/mapm/mapm_log.c \ +src/mapm/mapm_mt.cpp \ +src/mapm/mapm_mul.c \ +src/mapm/mapm_pow.c \ +src/mapm/mapmpwr2.c \ +src/mapm/mapm_rcp.c \ +src/mapm/mapm_rnd.c \ +src/mapm/mapmrsin.c \ +src/mapm/mapm_set.c \ +src/mapm/mapm_sin.c \ +src/mapm/mapmsqrt.c \ +src/mapm/mapmstck.c \ +src/mapm/mapmutil.c \ +src/mapm/mapmutl2.c \ +src/mapm/README \ +src/axis/AncestorAxis.cpp \ +src/axis/AncestorOrSelfAxis.cpp \ +src/axis/AttributeAxis.cpp \ +src/axis/Axis.cpp \ +src/axis/ChildAxis.cpp \ +src/axis/DescendantAxis.cpp \ +src/axis/DescendantOrSelfAxis.cpp \ +src/axis/FollowingAxis.cpp \ +src/axis/FollowingSiblingAxis.cpp \ +src/axis/NamespaceAxis.cpp \ +src/axis/NodeTest.cpp \ +src/axis/ParentAxis.cpp \ +src/axis/PrecedingAxis.cpp \ +src/axis/PrecedingSiblingAxis.cpp \ +src/axis/SelfAxis.cpp \ +src/operators/And.cpp \ +src/operators/ArithmeticOperator.cpp \ +src/operators/ComparisonOperator.cpp \ +src/operators/Divide.cpp \ +src/operators/Equals.cpp \ +src/operators/Except.cpp \ +src/operators/GeneralComp.cpp \ +src/operators/GreaterThan.cpp \ +src/operators/GreaterThanEqual.cpp \ +src/operators/IntegerDivide.cpp \ +src/operators/Intersect.cpp \ +src/operators/LessThan.cpp \ +src/operators/LessThanEqual.cpp \ +src/operators/Minus.cpp \ +src/operators/Mod.cpp \ +src/operators/Multiply.cpp \ +src/operators/NodeComparison.cpp \ +src/operators/NotEquals.cpp \ +src/operators/Or.cpp \ +src/operators/OrderComparison.cpp \ +src/operators/Plus.cpp \ +src/operators/Range.cpp \ +src/operators/UnaryMinus.cpp \ +src/operators/Union.cpp \ +src/schema/DocumentCacheImpl.cpp \ +src/schema/SequenceType.cpp \ +src/schema/AnyAtomicTypeDatatypeValidator.cpp \ +src/runtime/EmptyResult.cpp \ +src/runtime/LazySequenceResult.cpp \ +src/runtime/ResultBuffer.cpp \ +src/runtime/ResultBufferImpl.cpp \ +src/runtime/Result.cpp \ +src/runtime/ResultImpl.cpp \ +src/runtime/SequenceResult.cpp \ +src/runtime/SingleResult.cpp \ +src/runtime/Sequence.cpp \ +src/config/xqilla_config.h \ +src/config/xqilla_config_win32.h \ +src/xqts/TestSuiteParser.cpp \ +src/xqts/TestSuiteResultListener.cpp \ +src/xqts/TestSuiteRunner.cpp + +EXTRA_DIST = \ +src/lexer/flex.skl \ +src/lexer/XQLexer.l \ +src/parser/XQParser.y \ +LICENSE \ +LICENSE.pathan.txt \ +LICENSE.xquery.txt \ +docs/Doxyfile.simpleapi.in \ +docs/Doxyfile.dom3api.in \ +docs/Doxyfile.devapi.in \ +docs/simple-api \ +docs/dom3-api \ +Win32Projects/VC6/xqilla.dsp \ +Win32Projects/VC6/xqilla_cmd.dsp \ +Win32Projects/VC6/basicXQillaUsage.dsp \ +Win32Projects/VC6/xqtsRunner.dsp \ +Win32Projects/VC6/XQilla.dsw \ +Win32Projects/VC7.1/xqilla.vcproj \ +Win32Projects/VC7.1/xqilla_cmd.vcproj \ +Win32Projects/VC7.1/basicXQillaUsage.vcproj \ +Win32Projects/VC7.1/xqtsRunner.vcproj \ +Win32Projects/VC7.1/XQilla.sln \ +tests/xqts/xqts_testsuite/errors.xml \ +wintools/app_dsp.src \ +wintools/app_vcproj.src \ +wintools/filter_dsp.end \ +wintools/filter_dsp.start \ +wintools/filter_vcproj.end \ +wintools/filter_vcproj.start \ +wintools/lib_paths.sed \ +wintools/README \ +wintools/srcfile_dsp.src \ +wintools/srcfile_filt_vcproj.src \ +wintools/srcfiles.in \ +wintools/srcfile_vcproj.src \ +wintools/s_win32 \ +wintools/s_win32_common \ +wintools/s_win32_dsp \ +wintools/s_win32_vcproj \ +wintools/xqilla_cmd.dsp.src \ +wintools/xqilla_cmd.vcproj.src \ +wintools/xqilla_dsp.src \ +wintools/xqilla_vcproj.src + + +xqilla_SOURCES = \ +src/samples/xqilla/xqilla-commandline.cpp + +basicXQillaUsage_SOURCES = \ +src/samples/basic/basicXQillaUsage.cpp + +xqtsRunner_SOURCES = \ +tests/xqts/runner.cpp + +LEXERFILE = $(top_srcdir)/src/lexer/XQLexer.cpp +LEXTEMPLATE = $(top_srcdir)/src/lexer/XQLexer.l +LEXSKEL = $(top_srcdir)/src/lexer/flex.skl + +PARSERFILE = $(top_srcdir)/src/parser/XQParser.y +PARSERCPP = $(top_srcdir)/src/parser/XQParser.cpp +PARSERHPP = $(top_srcdir)/src/parser/XQParser.hpp + +$(LEXERFILE): $(LEXTEMPLATE) $(LEXSKEL) + $(LEX) -BUs -Pxq -S$(LEXSKEL) -o$(LEXERFILE) $(LEXTEMPLATE) # This can take a long time + +$(PARSERCPP) $(PARSERHPP): $(PARSERFILE) + $(YACC) -d -v -o $(PARSERCPP) $(PARSERFILE) + +.PHONY: test docs + +docs: + $(MAKE) -C include docs + +devdocs: + $(MAKE) -C include devdocs + +$(top_srcdir)/docs/simple-api: docs + +$(top_srcdir)/docs/dom3-api: docs diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 00000000..e5847f57 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,4178 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = . +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +bin_PROGRAMS = xqilla$(EXEEXT) +noinst_PROGRAMS = basicXQillaUsage$(EXEEXT) xqtsRunner$(EXEEXT) +DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in $(top_srcdir)/configure \ + $(top_srcdir)/src/config/xqilla_config_unix.h.in \ + autotools/config.guess autotools/config.sub autotools/depcomp \ + autotools/install-sh autotools/ltmain.sh autotools/missing \ + autotools/mkinstalldirs +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno configure.status.lineno +mkinstalldirs = $(SHELL) $(top_srcdir)/autotools/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/src/config/xqilla_config_unix.h +CONFIG_CLEAN_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" +libLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(lib_LTLIBRARIES) +libxqilla_la_LIBADD = +am_libxqilla_la_OBJECTS = ReferenceCounted.lo BaseMemoryManager.lo \ + ProxyMemoryManager.lo StringPool.lo XPath2MemoryManagerImpl.lo \ + XQScopedNamespace.lo CollationImpl.lo CodepointCollation.lo \ + VarStoreImpl.lo VarTypeStoreImpl.lo VarHashEntryImpl.lo \ + XQContextImpl.lo XQDynamicContextImpl.lo ItemFactoryImpl.lo \ + XQRemoteDebugger.lo XQAtomize.lo XQCastableAs.lo XQCastAs.lo \ + XQContextItem.lo XQFunction.lo XQIf.lo ASTNodeImpl.lo \ + XQInstanceOf.lo XQLiteral.lo XQNav.lo XQOperator.lo \ + XQParenthesizedExpr.lo XQSequence.lo XQStep.lo XQTreatAs.lo \ + XQVariable.lo StaticResolutionContext.lo StaticType.lo \ + AggregateFunction.lo ConstantFoldingFunction.lo \ + NumericFunction.lo XQDebugHook.lo XQDOMConstructor.lo \ + XQDocumentConstructor.lo XQElementConstructor.lo \ + XQAttributeConstructor.lo XQPIConstructor.lo \ + XQCommentConstructor.lo XQTextConstructor.lo XQFLWOR.lo \ + XQFunctionCall.lo XQGlobalVariable.lo XQOrderingChange.lo \ + XQQuantified.lo XQValidate.lo XQTypeswitch.lo \ + XQVariableBinding.lo XPath1Compat.lo ConvertFunctionArg.lo \ + XQDocumentOrder.lo XQPredicate.lo FTContains.lo FTWords.lo \ + FTOr.lo FTAnd.lo FTMildnot.lo FTUnaryNot.lo \ + DefaultTokenizer.lo DefaultTokenStore.lo FTOrder.lo \ + FTDistance.lo FTScope.lo FTContent.lo FTWindow.lo \ + XQillaBuilderImpl.lo XQillaDocumentImpl.lo \ + XQillaExpressionImpl.lo XQillaNSResolverImpl.lo \ + XQillaXMLGrammarPoolImpl.lo XPathDocumentImpl.lo \ + XPathNamespaceImpl.lo XPath2ResultImpl.lo \ + XQillaImplementation.lo XPath2NodeSerializer.lo XQilla.lo \ + XQQuery.lo UTF8Str.lo XMLChCompare.lo XStr.lo ContextUtils.lo \ + DateUtils.lo NumUtils.lo XQillaPlatformUtils.lo PrintAST.lo \ + XPath2NSUtils.lo XPath2Utils.lo UCANormalizer1.lo \ + UCANormalizer2.lo UCANormalizer3.lo UCANormalizer4.lo \ + UCANormalizer.lo XQillaException.lo XQException.lo \ + FuncFactory.lo FunctionLookupImpl.lo FunctionAbs.lo \ + FunctionAvg.lo FunctionBaseURI.lo FunctionBoolean.lo \ + FunctionCeiling.lo FunctionCodepointEqual.lo \ + FunctionCodepointsToString.lo FunctionCollection.lo \ + FunctionCompare.lo FunctionConcat.lo FunctionConstructor.lo \ + FunctionContains.lo FunctionCount.lo FunctionCurrentDate.lo \ + FunctionCurrentDateTime.lo FunctionCurrentTime.lo \ + FunctionData.lo FunctionDateTime.lo FunctionDeepEqual.lo \ + FunctionDefaultCollation.lo FunctionDistinctValues.lo \ + FunctionDocAvailable.lo FunctionDoc.lo FunctionDocumentURI.lo \ + FunctionEmpty.lo FunctionEncodeForUri.lo FunctionEndsWith.lo \ + FunctionError.lo FunctionEscapeHtmlUri.lo \ + FunctionExactlyOne.lo FunctionExists.lo FunctionFalse.lo \ + FunctionFloor.lo FunctionId.lo FunctionIdref.lo \ + FunctionImplicitTimezone.lo FunctionIndexOf.lo \ + FunctionInScopePrefixes.lo FunctionInsertBefore.lo \ + FunctionIriToUri.lo FunctionLang.lo FunctionLast.lo \ + FunctionLocalname.lo FunctionLocalNameFromQName.lo \ + FunctionLowerCase.lo FunctionMatches.lo FunctionMax.lo \ + FunctionMin.lo FunctionName.lo FunctionNamespaceUri.lo \ + FunctionNamespaceURIForPrefix.lo \ + FunctionNamespaceURIFromQName.lo FunctionNilled.lo \ + FunctionNodeName.lo FunctionNormalizeSpace.lo \ + FunctionNormalizeUnicode.lo FunctionNot.lo FunctionNumber.lo \ + FunctionOneOrMore.lo FunctionPosition.lo \ + FunctionPrefixFromQName.lo FunctionQName.lo FunctionRemove.lo \ + FunctionReplace.lo FunctionResolveQName.lo \ + FunctionResolveURI.lo FunctionReverse.lo FunctionRoot.lo \ + FunctionRound.lo FunctionRoundHalfToEven.lo \ + FunctionStartsWith.lo FunctionStaticBaseURI.lo \ + FunctionString.lo FunctionStringJoin.lo \ + FunctionStringLength.lo FunctionStringToCodepoints.lo \ + FunctionSubsequence.lo FunctionSubstringAfter.lo \ + FunctionSubstringBefore.lo FunctionSubstring.lo FunctionSum.lo \ + FunctionTokenize.lo FunctionTrace.lo FunctionTranslate.lo \ + FunctionTrue.lo FunctionUnordered.lo FunctionUpperCase.lo \ + FunctionZeroOrOne.lo FunctionAdjustDateTimeToTimezone.lo \ + FunctionAdjustDateToTimezone.lo \ + FunctionAdjustTimeToTimezone.lo FunctionDayFromDate.lo \ + FunctionDayFromDateTime.lo FunctionDaysFromDuration.lo \ + FunctionHoursFromDateTime.lo FunctionHoursFromDuration.lo \ + FunctionHoursFromTime.lo FunctionMinutesFromDateTime.lo \ + FunctionMinutesFromDuration.lo FunctionMinutesFromTime.lo \ + FunctionMonthFromDate.lo FunctionMonthFromDateTime.lo \ + FunctionMonthsFromDuration.lo FunctionSecondsFromDateTime.lo \ + FunctionSecondsFromDuration.lo FunctionSecondsFromTime.lo \ + FunctionTimezoneFromDate.lo FunctionTimezoneFromDateTime.lo \ + FunctionTimezoneFromTime.lo FunctionYearFromDate.lo \ + FunctionYearFromDateTime.lo FunctionYearsFromDuration.lo \ + XQUserFunction.lo ATAnySimpleTypeImpl.lo \ + ATAnyURIOrDerivedImpl.lo ATBase64BinaryOrDerivedImpl.lo \ + ATBooleanOrDerivedImpl.lo ATDateOrDerivedImpl.lo \ + ATDateTimeOrDerivedImpl.lo ATDecimalOrDerivedImpl.lo \ + ATDoubleOrDerivedImpl.lo ATDurationOrDerivedImpl.lo \ + ATFloatOrDerivedImpl.lo ATGDayOrDerivedImpl.lo \ + ATGMonthDayOrDerivedImpl.lo ATGMonthOrDerivedImpl.lo \ + ATGYearMonthOrDerivedImpl.lo ATGYearOrDerivedImpl.lo \ + ATHexBinaryOrDerivedImpl.lo ATNotationOrDerivedImpl.lo \ + ATQNameOrDerivedImpl.lo ATStringOrDerivedImpl.lo \ + ATTimeOrDerivedImpl.lo ATUntypedAtomicImpl.lo NodeImpl.lo \ + DatatypeFactory.lo DatatypeLookup.lo \ + AnyAtomicTypeConstructor.lo AnyAtomicType.lo \ + ATDurationOrDerived.lo ATQNameConstructor.lo \ + ATUntypedAtomic.lo DateOrTimeType.lo Item.lo Node.lo \ + Numeric.lo NumericTypeConstructor.lo Timezone.lo QName.lo \ + XQParser.lo XQLexer.lo mapm5sin.lo mapm_add.lo mapmasin.lo \ + mapmasn0.lo mapmcbrt.lo mapmcnst.lo mapm_cpi.lo m_apm.lo \ + mapm_div.lo mapm_exp.lo mapmfact.lo mapm_fam.lo mapm_fft.lo \ + mapm_flr.lo mapmfmul.lo mapm_fpf.lo mapm_gcd.lo mapmgues.lo \ + mapmhasn.lo mapmhsin.lo mapmipwr.lo mapmistr.lo mapm_lg2.lo \ + mapm_lg3.lo mapm_log.lo mapm_mt.lo mapm_mul.lo mapm_pow.lo \ + mapmpwr2.lo mapm_rcp.lo mapm_rnd.lo mapmrsin.lo mapm_set.lo \ + mapm_sin.lo mapmsqrt.lo mapmstck.lo mapmutil.lo mapmutl2.lo \ + AncestorAxis.lo AncestorOrSelfAxis.lo AttributeAxis.lo Axis.lo \ + ChildAxis.lo DescendantAxis.lo DescendantOrSelfAxis.lo \ + FollowingAxis.lo FollowingSiblingAxis.lo NamespaceAxis.lo \ + NodeTest.lo ParentAxis.lo PrecedingAxis.lo \ + PrecedingSiblingAxis.lo SelfAxis.lo And.lo \ + ArithmeticOperator.lo ComparisonOperator.lo Divide.lo \ + Equals.lo Except.lo GeneralComp.lo GreaterThan.lo \ + GreaterThanEqual.lo IntegerDivide.lo Intersect.lo LessThan.lo \ + LessThanEqual.lo Minus.lo Mod.lo Multiply.lo NodeComparison.lo \ + NotEquals.lo Or.lo OrderComparison.lo Plus.lo Range.lo \ + UnaryMinus.lo Union.lo DocumentCacheImpl.lo SequenceType.lo \ + AnyAtomicTypeDatatypeValidator.lo EmptyResult.lo \ + LazySequenceResult.lo ResultBuffer.lo ResultBufferImpl.lo \ + Result.lo ResultImpl.lo SequenceResult.lo SingleResult.lo \ + Sequence.lo TestSuiteParser.lo TestSuiteResultListener.lo \ + TestSuiteRunner.lo +libxqilla_la_OBJECTS = $(am_libxqilla_la_OBJECTS) +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) +am_basicXQillaUsage_OBJECTS = basicXQillaUsage.$(OBJEXT) +basicXQillaUsage_OBJECTS = $(am_basicXQillaUsage_OBJECTS) +basicXQillaUsage_LDADD = $(LDADD) +basicXQillaUsage_DEPENDENCIES = libxqilla.la +am_xqilla_OBJECTS = xqilla-commandline.$(OBJEXT) +xqilla_OBJECTS = $(am_xqilla_OBJECTS) +xqilla_LDADD = $(LDADD) +xqilla_DEPENDENCIES = libxqilla.la +am_xqtsRunner_OBJECTS = runner.$(OBJEXT) +xqtsRunner_OBJECTS = $(am_xqtsRunner_OBJECTS) +xqtsRunner_LDADD = $(LDADD) +xqtsRunner_DEPENDENCIES = libxqilla.la +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/src/config +depcomp = $(SHELL) $(top_srcdir)/autotools/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(libxqilla_la_SOURCES) $(basicXQillaUsage_SOURCES) \ + $(xqilla_SOURCES) $(xqtsRunner_SOURCES) +DIST_SOURCES = $(libxqilla_la_SOURCES) $(basicXQillaUsage_SOURCES) \ + $(xqilla_SOURCES) $(xqtsRunner_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-exec-recursive install-info-recursive \ + install-recursive installcheck-recursive installdirs-recursive \ + pdf-recursive ps-recursive uninstall-info-recursive \ + uninstall-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz $(distdir).zip +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = -L$(xerces_lib) -R$(xerces_lib) +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +YACC = @YACC@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +xerces_include = @xerces_include@ +xerces_lib = @xerces_lib@ +AUTOMAKE_OPTIONS = foreign dist-zip +SUBDIRS = include +INCLUDES = -I$(top_srcdir)/include/ -I$(xerces_include) -I$(top_srcdir)/src/lexer/ +LDADD = libxqilla.la -lxerces-c +lib_LTLIBRARIES = libxqilla.la +libxqilla_la_SOURCES = \ +src/framework/ReferenceCounted.cpp \ +src/framework/BaseMemoryManager.cpp \ +src/framework/ProxyMemoryManager.cpp \ +src/framework/StringPool.cpp \ +src/framework/XPath2MemoryManagerImpl.cpp \ +src/context/XQScopedNamespace.cpp \ +src/context/impl/CollationImpl.cpp \ +src/context/impl/CodepointCollation.cpp \ +src/context/impl/VarStoreImpl.hpp \ +src/context/impl/VarStoreImpl.cpp \ +src/context/impl/VarTypeStoreImpl.hpp \ +src/context/impl/VarTypeStoreImpl.cpp \ +src/context/impl/VarHashEntryImpl.cpp \ +src/context/impl/XQContextImpl.cpp \ +src/context/impl/XQDynamicContextImpl.cpp \ +src/context/impl/ItemFactoryImpl.cpp \ +src/context/impl/XQRemoteDebugger.cpp \ +src/ast/XQAtomize.cpp \ +src/ast/XQCastableAs.cpp \ +src/ast/XQCastAs.cpp \ +src/ast/XQContextItem.cpp \ +src/ast/XQFunction.cpp \ +src/ast/XQIf.cpp \ +src/ast/ASTNodeImpl.cpp \ +src/ast/XQInstanceOf.cpp \ +src/ast/XQLiteral.cpp \ +src/ast/XQNav.cpp \ +src/ast/XQOperator.cpp \ +src/ast/XQParenthesizedExpr.cpp \ +src/ast/XQSequence.cpp \ +src/ast/XQStep.cpp \ +src/ast/XQTreatAs.cpp \ +src/ast/XQVariable.cpp \ +src/ast/StaticResolutionContext.cpp \ +src/ast/StaticType.cpp \ +src/ast/AggregateFunction.cpp \ +src/ast/ConstantFoldingFunction.cpp \ +src/ast/NumericFunction.cpp \ +src/ast/XQDebugHook.cpp \ +src/ast/XQDOMConstructor.cpp \ +src/ast/XQDocumentConstructor.cpp \ +src/ast/XQElementConstructor.cpp \ +src/ast/XQAttributeConstructor.cpp \ +src/ast/XQPIConstructor.cpp \ +src/ast/XQCommentConstructor.cpp \ +src/ast/XQTextConstructor.cpp \ +src/ast/XQFLWOR.cpp \ +src/ast/XQFunctionCall.cpp \ +src/ast/XQGlobalVariable.cpp \ +src/ast/XQOrderingChange.cpp \ +src/ast/XQQuantified.cpp \ +src/ast/XQValidate.cpp \ +src/ast/XQTypeswitch.cpp \ +src/ast/XQVariableBinding.cpp \ +src/ast/XPath1Compat.cpp \ +src/ast/ConvertFunctionArg.cpp \ +src/ast/XQDocumentOrder.cpp \ +src/ast/XQPredicate.cpp \ +src/fulltext/FTContains.cpp \ +src/fulltext/FTWords.cpp \ +src/fulltext/FTOr.cpp \ +src/fulltext/FTAnd.cpp \ +src/fulltext/FTMildnot.cpp \ +src/fulltext/FTUnaryNot.cpp \ +src/fulltext/DefaultTokenizer.cpp \ +src/fulltext/DefaultTokenStore.cpp \ +src/fulltext/FTOrder.cpp \ +src/fulltext/FTDistance.cpp \ +src/fulltext/FTScope.cpp \ +src/fulltext/FTContent.cpp \ +src/fulltext/FTWindow.cpp \ +src/dom-api/impl/XQillaBuilderImpl.cpp \ +src/dom-api/impl/XQillaBuilderImpl.hpp \ +src/dom-api/impl/XQillaDocumentImpl.cpp \ +src/dom-api/impl/XQillaDocumentImpl.hpp \ +src/dom-api/impl/XQillaExpressionImpl.cpp \ +src/dom-api/impl/XQillaExpressionImpl.hpp \ +src/dom-api/impl/XQillaNSResolverImpl.cpp \ +src/dom-api/impl/XQillaXMLGrammarPoolImpl.cpp \ +src/dom-api/impl/XQillaXMLGrammarPoolImpl.hpp \ +src/dom-api/impl/XPathDocumentImpl.cpp \ +src/dom-api/impl/XPathDocumentImpl.hpp \ +src/dom-api/impl/XPathNamespaceImpl.cpp \ +src/dom-api/impl/XPathNamespaceImpl.hpp \ +src/dom-api/impl/XPath2ResultImpl.cpp \ +src/dom-api/impl/XPath2ResultImpl.hpp \ +src/dom-api/XQillaImplementation.cpp \ +src/dom-api/XQillaImplementation.hpp \ +src/dom-api/XPath2NodeSerializer.cpp \ +src/dom-api/XPath2NodeSerializer.hpp \ +src/simple-api/XQilla.cpp \ +src/simple-api/XQQuery.cpp \ +src/utils/UTF8Str.cpp \ +src/utils/XMLChCompare.cpp \ +src/utils/XStr.cpp \ +src/utils/ContextUtils.cpp \ +src/utils/DateUtils.cpp \ +src/utils/DateUtils.hpp \ +src/utils/NumUtils.cpp \ +src/utils/XQillaPlatformUtils.cpp \ +src/utils/PrintAST.cpp \ +src/utils/XPath2NSUtils.cpp \ +src/utils/XPath2Utils.cpp \ +src/utils/UCANormalizer1.cpp \ +src/utils/UCANormalizer2.cpp \ +src/utils/UCANormalizer3.cpp \ +src/utils/UCANormalizer4.cpp \ +src/utils/UCANormalizer.cpp \ +src/exceptions/XQillaException.cpp \ +src/exceptions/XQException.cpp \ +src/exceptions/InvalidLexicalSpaceException.hpp \ +src/exceptions/MiscException.hpp \ +src/functions/FuncFactory.cpp \ +src/functions/FuncFactoryTemplate.hpp \ +src/functions/FunctionLookupImpl.cpp \ +src/functions/FunctionLookupImpl.hpp \ +src/functions/FunctionAbs.cpp \ +src/functions/FunctionAvg.cpp \ +src/functions/FunctionBaseURI.cpp \ +src/functions/FunctionBoolean.cpp \ +src/functions/FunctionCeiling.cpp \ +src/functions/FunctionCodepointEqual.cpp \ +src/functions/FunctionCodepointsToString.cpp \ +src/functions/FunctionCollection.cpp \ +src/functions/FunctionCompare.cpp \ +src/functions/FunctionConcat.cpp \ +src/functions/FunctionConstructor.cpp \ +src/functions/FunctionContains.cpp \ +src/functions/FunctionCount.cpp \ +src/functions/FunctionCurrentDate.cpp \ +src/functions/FunctionCurrentDateTime.cpp \ +src/functions/FunctionCurrentTime.cpp \ +src/functions/FunctionData.cpp \ +src/functions/FunctionDateTime.cpp \ +src/functions/FunctionDeepEqual.cpp \ +src/functions/FunctionDefaultCollation.cpp \ +src/functions/FunctionDistinctValues.cpp \ +src/functions/FunctionDocAvailable.cpp \ +src/functions/FunctionDoc.cpp \ +src/functions/FunctionDocumentURI.cpp \ +src/functions/FunctionEmpty.cpp \ +src/functions/FunctionEncodeForUri.cpp \ +src/functions/FunctionEndsWith.cpp \ +src/functions/FunctionError.cpp \ +src/functions/FunctionEscapeHtmlUri.cpp \ +src/functions/FunctionExactlyOne.cpp \ +src/functions/FunctionExists.cpp \ +src/functions/FunctionFalse.cpp \ +src/functions/FunctionFloor.cpp \ +src/functions/FunctionId.cpp \ +src/functions/FunctionIdref.cpp \ +src/functions/FunctionImplicitTimezone.cpp \ +src/functions/FunctionIndexOf.cpp \ +src/functions/FunctionInScopePrefixes.cpp \ +src/functions/FunctionInsertBefore.cpp \ +src/functions/FunctionIriToUri.cpp \ +src/functions/FunctionLang.cpp \ +src/functions/FunctionLast.cpp \ +src/functions/FunctionLocalname.cpp \ +src/functions/FunctionLocalNameFromQName.cpp \ +src/functions/FunctionLowerCase.cpp \ +src/functions/FunctionMatches.cpp \ +src/functions/FunctionMax.cpp \ +src/functions/FunctionMin.cpp \ +src/functions/FunctionName.cpp \ +src/functions/FunctionNamespaceUri.cpp \ +src/functions/FunctionNamespaceURIForPrefix.cpp \ +src/functions/FunctionNamespaceURIFromQName.cpp \ +src/functions/FunctionNilled.cpp \ +src/functions/FunctionNodeName.cpp \ +src/functions/FunctionNormalizeSpace.cpp \ +src/functions/FunctionNormalizeUnicode.cpp \ +src/functions/FunctionNot.cpp \ +src/functions/FunctionNumber.cpp \ +src/functions/FunctionOneOrMore.cpp \ +src/functions/FunctionPosition.cpp \ +src/functions/FunctionPrefixFromQName.cpp \ +src/functions/FunctionQName.cpp \ +src/functions/FunctionRemove.cpp \ +src/functions/FunctionReplace.cpp \ +src/functions/FunctionResolveQName.cpp \ +src/functions/FunctionResolveURI.cpp \ +src/functions/FunctionReverse.cpp \ +src/functions/FunctionRoot.cpp \ +src/functions/FunctionRound.cpp \ +src/functions/FunctionRoundHalfToEven.cpp \ +src/functions/FunctionStartsWith.cpp \ +src/functions/FunctionStaticBaseURI.cpp \ +src/functions/FunctionString.cpp \ +src/functions/FunctionStringJoin.cpp \ +src/functions/FunctionStringLength.cpp \ +src/functions/FunctionStringToCodepoints.cpp \ +src/functions/FunctionSubsequence.cpp \ +src/functions/FunctionSubstringAfter.cpp \ +src/functions/FunctionSubstringBefore.cpp \ +src/functions/FunctionSubstring.cpp \ +src/functions/FunctionSum.cpp \ +src/functions/FunctionTokenize.cpp \ +src/functions/FunctionTrace.cpp \ +src/functions/FunctionTranslate.cpp \ +src/functions/FunctionTrue.cpp \ +src/functions/FunctionUnordered.cpp \ +src/functions/FunctionUpperCase.cpp \ +src/functions/FunctionZeroOrOne.cpp \ +src/functions/FunctionAdjustDateTimeToTimezone.cpp \ +src/functions/FunctionAdjustDateToTimezone.cpp \ +src/functions/FunctionAdjustTimeToTimezone.cpp \ +src/functions/FunctionDayFromDate.cpp \ +src/functions/FunctionDayFromDateTime.cpp \ +src/functions/FunctionDaysFromDuration.cpp \ +src/functions/FunctionHoursFromDateTime.cpp \ +src/functions/FunctionHoursFromDuration.cpp \ +src/functions/FunctionHoursFromTime.cpp \ +src/functions/FunctionMinutesFromDateTime.cpp \ +src/functions/FunctionMinutesFromDuration.cpp \ +src/functions/FunctionMinutesFromTime.cpp \ +src/functions/FunctionMonthFromDate.cpp \ +src/functions/FunctionMonthFromDateTime.cpp \ +src/functions/FunctionMonthsFromDuration.cpp \ +src/functions/FunctionSecondsFromDateTime.cpp \ +src/functions/FunctionSecondsFromDuration.cpp \ +src/functions/FunctionSecondsFromTime.cpp \ +src/functions/FunctionTimezoneFromDate.cpp \ +src/functions/FunctionTimezoneFromDateTime.cpp \ +src/functions/FunctionTimezoneFromTime.cpp \ +src/functions/FunctionYearFromDate.cpp \ +src/functions/FunctionYearFromDateTime.cpp \ +src/functions/FunctionYearsFromDuration.cpp \ +src/functions/XQUserFunction.cpp \ +src/items/impl/ATAnySimpleTypeImpl.cpp \ +src/items/impl/ATAnySimpleTypeImpl.hpp \ +src/items/impl/ATAnyURIOrDerivedImpl.cpp \ +src/items/impl/ATAnyURIOrDerivedImpl.hpp \ +src/items/impl/ATBase64BinaryOrDerivedImpl.cpp \ +src/items/impl/ATBase64BinaryOrDerivedImpl.hpp \ +src/items/impl/ATBooleanOrDerivedImpl.cpp \ +src/items/impl/ATDateOrDerivedImpl.cpp \ +src/items/impl/ATDateTimeOrDerivedImpl.cpp \ +src/items/impl/ATDecimalOrDerivedImpl.cpp \ +src/items/impl/ATDoubleOrDerivedImpl.cpp \ +src/items/impl/ATDurationOrDerivedImpl.cpp \ +src/items/impl/ATFloatOrDerivedImpl.cpp \ +src/items/impl/ATGDayOrDerivedImpl.cpp \ +src/items/impl/ATGMonthDayOrDerivedImpl.cpp \ +src/items/impl/ATGMonthOrDerivedImpl.cpp \ +src/items/impl/ATGYearMonthOrDerivedImpl.cpp \ +src/items/impl/ATGYearOrDerivedImpl.cpp \ +src/items/impl/ATHexBinaryOrDerivedImpl.cpp \ +src/items/impl/ATHexBinaryOrDerivedImpl.hpp \ +src/items/impl/ATNotationOrDerivedImpl.cpp \ +src/items/impl/ATNotationOrDerivedImpl.hpp \ +src/items/impl/ATQNameOrDerivedImpl.cpp \ +src/items/impl/ATStringOrDerivedImpl.cpp \ +src/items/impl/ATStringOrDerivedImpl.hpp \ +src/items/impl/ATTimeOrDerivedImpl.cpp \ +src/items/impl/ATUntypedAtomicImpl.cpp \ +src/items/impl/ATUntypedAtomicImpl.hpp \ +src/items/impl/NodeImpl.cpp \ +src/items/DatatypeFactory.cpp \ +src/items/DatatypeFactoryTemplate.hpp \ +src/items/DatatypeLookup.cpp \ +src/items/AnyAtomicTypeConstructor.cpp \ +src/items/AnyAtomicType.cpp \ +src/items/ATDurationOrDerived.cpp \ +src/items/ATQNameConstructor.cpp \ +src/items/ATUntypedAtomic.cpp \ +src/items/DateOrTimeType.cpp \ +src/items/Item.cpp \ +src/items/Node.cpp \ +src/items/Numeric.cpp \ +src/items/NumericTypeConstructor.cpp \ +src/items/Timezone.cpp \ +src/parser/QName.cpp \ +src/parser/XQParser.cpp \ +src/parser/XQParser.hpp \ +src/lexer/FlexLexer.h \ +src/lexer/XQillaLexer.hpp \ +src/lexer/XQLexer.cpp \ +src/lexer/XQLexer.hpp \ +src/mapm/mapm5sin.c \ +src/mapm/mapm_add.c \ +src/mapm/mapmasin.c \ +src/mapm/mapmasn0.c \ +src/mapm/mapmcbrt.c \ +src/mapm/mapmcnst.c \ +src/mapm/mapm_cpi.c \ +src/mapm/m_apm.cpp \ +src/mapm/mapm_div.c \ +src/mapm/mapm_exp.c \ +src/mapm/mapmfact.c \ +src/mapm/mapm_fam.c \ +src/mapm/mapm_fft.c \ +src/mapm/mapm_flr.c \ +src/mapm/mapmfmul.c \ +src/mapm/mapm_fpf.c \ +src/mapm/mapm_gcd.c \ +src/mapm/mapmgues.c \ +src/mapm/mapmhasn.c \ +src/mapm/mapmhsin.c \ +src/mapm/mapmipwr.c \ +src/mapm/mapmistr.c \ +src/mapm/m_apm_lc.h \ +src/mapm/mapm_lg2.c \ +src/mapm/mapm_lg3.c \ +src/mapm/mapm_log.c \ +src/mapm/mapm_mt.cpp \ +src/mapm/mapm_mul.c \ +src/mapm/mapm_pow.c \ +src/mapm/mapmpwr2.c \ +src/mapm/mapm_rcp.c \ +src/mapm/mapm_rnd.c \ +src/mapm/mapmrsin.c \ +src/mapm/mapm_set.c \ +src/mapm/mapm_sin.c \ +src/mapm/mapmsqrt.c \ +src/mapm/mapmstck.c \ +src/mapm/mapmutil.c \ +src/mapm/mapmutl2.c \ +src/mapm/README \ +src/axis/AncestorAxis.cpp \ +src/axis/AncestorOrSelfAxis.cpp \ +src/axis/AttributeAxis.cpp \ +src/axis/Axis.cpp \ +src/axis/ChildAxis.cpp \ +src/axis/DescendantAxis.cpp \ +src/axis/DescendantOrSelfAxis.cpp \ +src/axis/FollowingAxis.cpp \ +src/axis/FollowingSiblingAxis.cpp \ +src/axis/NamespaceAxis.cpp \ +src/axis/NodeTest.cpp \ +src/axis/ParentAxis.cpp \ +src/axis/PrecedingAxis.cpp \ +src/axis/PrecedingSiblingAxis.cpp \ +src/axis/SelfAxis.cpp \ +src/operators/And.cpp \ +src/operators/ArithmeticOperator.cpp \ +src/operators/ComparisonOperator.cpp \ +src/operators/Divide.cpp \ +src/operators/Equals.cpp \ +src/operators/Except.cpp \ +src/operators/GeneralComp.cpp \ +src/operators/GreaterThan.cpp \ +src/operators/GreaterThanEqual.cpp \ +src/operators/IntegerDivide.cpp \ +src/operators/Intersect.cpp \ +src/operators/LessThan.cpp \ +src/operators/LessThanEqual.cpp \ +src/operators/Minus.cpp \ +src/operators/Mod.cpp \ +src/operators/Multiply.cpp \ +src/operators/NodeComparison.cpp \ +src/operators/NotEquals.cpp \ +src/operators/Or.cpp \ +src/operators/OrderComparison.cpp \ +src/operators/Plus.cpp \ +src/operators/Range.cpp \ +src/operators/UnaryMinus.cpp \ +src/operators/Union.cpp \ +src/schema/DocumentCacheImpl.cpp \ +src/schema/SequenceType.cpp \ +src/schema/AnyAtomicTypeDatatypeValidator.cpp \ +src/runtime/EmptyResult.cpp \ +src/runtime/LazySequenceResult.cpp \ +src/runtime/ResultBuffer.cpp \ +src/runtime/ResultBufferImpl.cpp \ +src/runtime/Result.cpp \ +src/runtime/ResultImpl.cpp \ +src/runtime/SequenceResult.cpp \ +src/runtime/SingleResult.cpp \ +src/runtime/Sequence.cpp \ +src/config/xqilla_config.h \ +src/config/xqilla_config_win32.h \ +src/xqts/TestSuiteParser.cpp \ +src/xqts/TestSuiteResultListener.cpp \ +src/xqts/TestSuiteRunner.cpp + +EXTRA_DIST = \ +src/lexer/flex.skl \ +src/lexer/XQLexer.l \ +src/parser/XQParser.y \ +LICENSE \ +LICENSE.pathan.txt \ +LICENSE.xquery.txt \ +docs/Doxyfile.simpleapi.in \ +docs/Doxyfile.dom3api.in \ +docs/Doxyfile.devapi.in \ +docs/simple-api \ +docs/dom3-api \ +Win32Projects/VC6/xqilla.dsp \ +Win32Projects/VC6/xqilla_cmd.dsp \ +Win32Projects/VC6/basicXQillaUsage.dsp \ +Win32Projects/VC6/xqtsRunner.dsp \ +Win32Projects/VC6/XQilla.dsw \ +Win32Projects/VC7.1/xqilla.vcproj \ +Win32Projects/VC7.1/xqilla_cmd.vcproj \ +Win32Projects/VC7.1/basicXQillaUsage.vcproj \ +Win32Projects/VC7.1/xqtsRunner.vcproj \ +Win32Projects/VC7.1/XQilla.sln \ +tests/xqts/xqts_testsuite/errors.xml \ +wintools/app_dsp.src \ +wintools/app_vcproj.src \ +wintools/filter_dsp.end \ +wintools/filter_dsp.start \ +wintools/filter_vcproj.end \ +wintools/filter_vcproj.start \ +wintools/lib_paths.sed \ +wintools/README \ +wintools/srcfile_dsp.src \ +wintools/srcfile_filt_vcproj.src \ +wintools/srcfiles.in \ +wintools/srcfile_vcproj.src \ +wintools/s_win32 \ +wintools/s_win32_common \ +wintools/s_win32_dsp \ +wintools/s_win32_vcproj \ +wintools/xqilla_cmd.dsp.src \ +wintools/xqilla_cmd.vcproj.src \ +wintools/xqilla_dsp.src \ +wintools/xqilla_vcproj.src + +xqilla_SOURCES = \ +src/samples/xqilla/xqilla-commandline.cpp + +basicXQillaUsage_SOURCES = \ +src/samples/basic/basicXQillaUsage.cpp + +xqtsRunner_SOURCES = \ +tests/xqts/runner.cpp + +LEXERFILE = $(top_srcdir)/src/lexer/XQLexer.cpp +LEXTEMPLATE = $(top_srcdir)/src/lexer/XQLexer.l +LEXSKEL = $(top_srcdir)/src/lexer/flex.skl +PARSERFILE = $(top_srcdir)/src/parser/XQParser.y +PARSERCPP = $(top_srcdir)/src/parser/XQParser.cpp +PARSERHPP = $(top_srcdir)/src/parser/XQParser.hpp +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .cpp .lo .o .obj +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \ + cd $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +src/config/xqilla_config_unix.h: src/config/stamp-h1 + @if test ! -f $@; then \ + rm -f src/config/stamp-h1; \ + $(MAKE) src/config/stamp-h1; \ + else :; fi + +src/config/stamp-h1: $(top_srcdir)/src/config/xqilla_config_unix.h.in $(top_builddir)/config.status + @rm -f src/config/stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status src/config/xqilla_config_unix.h +$(top_srcdir)/src/config/xqilla_config_unix.h.in: $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) + rm -f src/config/stamp-h1 + touch $@ + +distclean-hdr: + -rm -f src/config/xqilla_config_unix.h src/config/stamp-h1 +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +libxqilla.la: $(libxqilla_la_OBJECTS) $(libxqilla_la_DEPENDENCIES) + $(CXXLINK) -rpath $(libdir) $(libxqilla_la_LDFLAGS) $(libxqilla_la_OBJECTS) $(libxqilla_la_LIBADD) $(LIBS) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +basicXQillaUsage$(EXEEXT): $(basicXQillaUsage_OBJECTS) $(basicXQillaUsage_DEPENDENCIES) + @rm -f basicXQillaUsage$(EXEEXT) + $(CXXLINK) $(basicXQillaUsage_LDFLAGS) $(basicXQillaUsage_OBJECTS) $(basicXQillaUsage_LDADD) $(LIBS) +xqilla$(EXEEXT): $(xqilla_OBJECTS) $(xqilla_DEPENDENCIES) + @rm -f xqilla$(EXEEXT) + $(CXXLINK) $(xqilla_LDFLAGS) $(xqilla_OBJECTS) $(xqilla_LDADD) $(LIBS) +xqtsRunner$(EXEEXT): $(xqtsRunner_OBJECTS) $(xqtsRunner_DEPENDENCIES) + @rm -f xqtsRunner$(EXEEXT) + $(CXXLINK) $(xqtsRunner_LDFLAGS) $(xqtsRunner_OBJECTS) $(xqtsRunner_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ASTNodeImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATAnySimpleTypeImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATAnyURIOrDerivedImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATBase64BinaryOrDerivedImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATBooleanOrDerivedImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATDateOrDerivedImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATDateTimeOrDerivedImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATDecimalOrDerivedImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATDoubleOrDerivedImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATDurationOrDerived.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATDurationOrDerivedImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATFloatOrDerivedImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATGDayOrDerivedImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATGMonthDayOrDerivedImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATGMonthOrDerivedImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATGYearMonthOrDerivedImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATGYearOrDerivedImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATHexBinaryOrDerivedImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATNotationOrDerivedImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATQNameConstructor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATQNameOrDerivedImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATStringOrDerivedImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATTimeOrDerivedImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATUntypedAtomic.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ATUntypedAtomicImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AggregateFunction.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AncestorAxis.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AncestorOrSelfAxis.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/And.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AnyAtomicType.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AnyAtomicTypeConstructor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AnyAtomicTypeDatatypeValidator.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ArithmeticOperator.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AttributeAxis.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Axis.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BaseMemoryManager.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ChildAxis.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CodepointCollation.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CollationImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ComparisonOperator.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ConstantFoldingFunction.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ContextUtils.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ConvertFunctionArg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DatatypeFactory.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DatatypeLookup.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DateOrTimeType.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DateUtils.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DefaultTokenStore.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DefaultTokenizer.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DescendantAxis.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DescendantOrSelfAxis.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Divide.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DocumentCacheImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/EmptyResult.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Equals.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Except.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FTAnd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FTContains.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FTContent.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FTDistance.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FTMildnot.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FTOr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FTOrder.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FTScope.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FTUnaryNot.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FTWindow.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FTWords.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FollowingAxis.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FollowingSiblingAxis.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FuncFactory.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionAbs.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionAdjustDateTimeToTimezone.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionAdjustDateToTimezone.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionAdjustTimeToTimezone.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionAvg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionBaseURI.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionBoolean.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionCeiling.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionCodepointEqual.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionCodepointsToString.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionCollection.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionCompare.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionConcat.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionConstructor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionContains.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionCount.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionCurrentDate.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionCurrentDateTime.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionCurrentTime.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionData.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionDateTime.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionDayFromDate.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionDayFromDateTime.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionDaysFromDuration.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionDeepEqual.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionDefaultCollation.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionDistinctValues.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionDoc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionDocAvailable.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionDocumentURI.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionEmpty.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionEncodeForUri.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionEndsWith.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionError.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionEscapeHtmlUri.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionExactlyOne.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionExists.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionFalse.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionFloor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionHoursFromDateTime.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionHoursFromDuration.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionHoursFromTime.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionId.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionIdref.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionImplicitTimezone.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionInScopePrefixes.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionIndexOf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionInsertBefore.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionIriToUri.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionLang.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionLast.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionLocalNameFromQName.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionLocalname.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionLookupImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionLowerCase.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionMatches.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionMax.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionMin.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionMinutesFromDateTime.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionMinutesFromDuration.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionMinutesFromTime.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionMonthFromDate.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionMonthFromDateTime.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionMonthsFromDuration.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionName.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionNamespaceURIForPrefix.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionNamespaceURIFromQName.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionNamespaceUri.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionNilled.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionNodeName.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionNormalizeSpace.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionNormalizeUnicode.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionNot.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionNumber.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionOneOrMore.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionPosition.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionPrefixFromQName.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionQName.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionRemove.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionReplace.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionResolveQName.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionResolveURI.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionReverse.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionRoot.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionRound.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionRoundHalfToEven.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionSecondsFromDateTime.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionSecondsFromDuration.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionSecondsFromTime.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionStartsWith.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionStaticBaseURI.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionString.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionStringJoin.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionStringLength.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionStringToCodepoints.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionSubsequence.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionSubstring.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionSubstringAfter.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionSubstringBefore.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionSum.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionTimezoneFromDate.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionTimezoneFromDateTime.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionTimezoneFromTime.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionTokenize.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionTrace.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionTranslate.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionTrue.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionUnordered.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionUpperCase.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionYearFromDate.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionYearFromDateTime.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionYearsFromDuration.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FunctionZeroOrOne.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GeneralComp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GreaterThan.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GreaterThanEqual.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IntegerDivide.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Intersect.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Item.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ItemFactoryImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LazySequenceResult.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LessThan.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LessThanEqual.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Minus.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Mod.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Multiply.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NamespaceAxis.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Node.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NodeComparison.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NodeImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NodeTest.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NotEquals.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NumUtils.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Numeric.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NumericFunction.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NumericTypeConstructor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Or.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OrderComparison.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ParentAxis.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Plus.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PrecedingAxis.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PrecedingSiblingAxis.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PrintAST.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ProxyMemoryManager.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/QName.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Range.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ReferenceCounted.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Result.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ResultBuffer.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ResultBufferImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ResultImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SelfAxis.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Sequence.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SequenceResult.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SequenceType.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SingleResult.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StaticResolutionContext.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StaticType.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StringPool.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestSuiteParser.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestSuiteResultListener.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestSuiteRunner.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Timezone.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UCANormalizer.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UCANormalizer1.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UCANormalizer2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UCANormalizer3.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UCANormalizer4.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UTF8Str.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UnaryMinus.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Union.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VarHashEntryImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VarStoreImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VarTypeStoreImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XMLChCompare.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XPath1Compat.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XPath2MemoryManagerImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XPath2NSUtils.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XPath2NodeSerializer.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XPath2ResultImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XPath2Utils.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XPathDocumentImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XPathNamespaceImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQAtomize.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQAttributeConstructor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQCastAs.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQCastableAs.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQCommentConstructor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQContextImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQContextItem.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQDOMConstructor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQDebugHook.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQDocumentConstructor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQDocumentOrder.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQDynamicContextImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQElementConstructor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQException.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQFLWOR.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQFunction.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQFunctionCall.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQGlobalVariable.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQIf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQInstanceOf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQLexer.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQLiteral.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQNav.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQOperator.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQOrderingChange.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQPIConstructor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQParenthesizedExpr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQParser.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQPredicate.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQQuantified.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQQuery.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQRemoteDebugger.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQScopedNamespace.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQSequence.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQStep.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQTextConstructor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQTreatAs.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQTypeswitch.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQUserFunction.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQValidate.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQVariable.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQVariableBinding.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQilla.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQillaBuilderImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQillaDocumentImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQillaException.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQillaExpressionImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQillaImplementation.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQillaNSResolverImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQillaPlatformUtils.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XQillaXMLGrammarPoolImpl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XStr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basicXQillaUsage.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/m_apm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapm5sin.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapm_add.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapm_cpi.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapm_div.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapm_exp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapm_fam.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapm_fft.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapm_flr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapm_fpf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapm_gcd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapm_lg2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapm_lg3.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapm_log.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapm_mt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapm_mul.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapm_pow.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapm_rcp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapm_rnd.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapm_set.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapm_sin.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapmasin.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapmasn0.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapmcbrt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapmcnst.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapmfact.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapmfmul.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapmgues.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapmhasn.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapmhsin.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapmipwr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapmistr.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapmpwr2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapmrsin.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapmsqrt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapmstck.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapmutil.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mapmutl2.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/runner.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xqilla-commandline.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mapm5sin.lo: src/mapm/mapm5sin.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapm5sin.lo -MD -MP -MF "$(DEPDIR)/mapm5sin.Tpo" -c -o mapm5sin.lo `test -f 'src/mapm/mapm5sin.c' || echo '$(srcdir)/'`src/mapm/mapm5sin.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapm5sin.Tpo" "$(DEPDIR)/mapm5sin.Plo"; else rm -f "$(DEPDIR)/mapm5sin.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapm5sin.c' object='mapm5sin.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapm5sin.lo `test -f 'src/mapm/mapm5sin.c' || echo '$(srcdir)/'`src/mapm/mapm5sin.c + +mapm_add.lo: src/mapm/mapm_add.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapm_add.lo -MD -MP -MF "$(DEPDIR)/mapm_add.Tpo" -c -o mapm_add.lo `test -f 'src/mapm/mapm_add.c' || echo '$(srcdir)/'`src/mapm/mapm_add.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapm_add.Tpo" "$(DEPDIR)/mapm_add.Plo"; else rm -f "$(DEPDIR)/mapm_add.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapm_add.c' object='mapm_add.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapm_add.lo `test -f 'src/mapm/mapm_add.c' || echo '$(srcdir)/'`src/mapm/mapm_add.c + +mapmasin.lo: src/mapm/mapmasin.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapmasin.lo -MD -MP -MF "$(DEPDIR)/mapmasin.Tpo" -c -o mapmasin.lo `test -f 'src/mapm/mapmasin.c' || echo '$(srcdir)/'`src/mapm/mapmasin.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapmasin.Tpo" "$(DEPDIR)/mapmasin.Plo"; else rm -f "$(DEPDIR)/mapmasin.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapmasin.c' object='mapmasin.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapmasin.lo `test -f 'src/mapm/mapmasin.c' || echo '$(srcdir)/'`src/mapm/mapmasin.c + +mapmasn0.lo: src/mapm/mapmasn0.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapmasn0.lo -MD -MP -MF "$(DEPDIR)/mapmasn0.Tpo" -c -o mapmasn0.lo `test -f 'src/mapm/mapmasn0.c' || echo '$(srcdir)/'`src/mapm/mapmasn0.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapmasn0.Tpo" "$(DEPDIR)/mapmasn0.Plo"; else rm -f "$(DEPDIR)/mapmasn0.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapmasn0.c' object='mapmasn0.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapmasn0.lo `test -f 'src/mapm/mapmasn0.c' || echo '$(srcdir)/'`src/mapm/mapmasn0.c + +mapmcbrt.lo: src/mapm/mapmcbrt.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapmcbrt.lo -MD -MP -MF "$(DEPDIR)/mapmcbrt.Tpo" -c -o mapmcbrt.lo `test -f 'src/mapm/mapmcbrt.c' || echo '$(srcdir)/'`src/mapm/mapmcbrt.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapmcbrt.Tpo" "$(DEPDIR)/mapmcbrt.Plo"; else rm -f "$(DEPDIR)/mapmcbrt.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapmcbrt.c' object='mapmcbrt.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapmcbrt.lo `test -f 'src/mapm/mapmcbrt.c' || echo '$(srcdir)/'`src/mapm/mapmcbrt.c + +mapmcnst.lo: src/mapm/mapmcnst.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapmcnst.lo -MD -MP -MF "$(DEPDIR)/mapmcnst.Tpo" -c -o mapmcnst.lo `test -f 'src/mapm/mapmcnst.c' || echo '$(srcdir)/'`src/mapm/mapmcnst.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapmcnst.Tpo" "$(DEPDIR)/mapmcnst.Plo"; else rm -f "$(DEPDIR)/mapmcnst.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapmcnst.c' object='mapmcnst.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapmcnst.lo `test -f 'src/mapm/mapmcnst.c' || echo '$(srcdir)/'`src/mapm/mapmcnst.c + +mapm_cpi.lo: src/mapm/mapm_cpi.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapm_cpi.lo -MD -MP -MF "$(DEPDIR)/mapm_cpi.Tpo" -c -o mapm_cpi.lo `test -f 'src/mapm/mapm_cpi.c' || echo '$(srcdir)/'`src/mapm/mapm_cpi.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapm_cpi.Tpo" "$(DEPDIR)/mapm_cpi.Plo"; else rm -f "$(DEPDIR)/mapm_cpi.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapm_cpi.c' object='mapm_cpi.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapm_cpi.lo `test -f 'src/mapm/mapm_cpi.c' || echo '$(srcdir)/'`src/mapm/mapm_cpi.c + +mapm_div.lo: src/mapm/mapm_div.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapm_div.lo -MD -MP -MF "$(DEPDIR)/mapm_div.Tpo" -c -o mapm_div.lo `test -f 'src/mapm/mapm_div.c' || echo '$(srcdir)/'`src/mapm/mapm_div.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapm_div.Tpo" "$(DEPDIR)/mapm_div.Plo"; else rm -f "$(DEPDIR)/mapm_div.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapm_div.c' object='mapm_div.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapm_div.lo `test -f 'src/mapm/mapm_div.c' || echo '$(srcdir)/'`src/mapm/mapm_div.c + +mapm_exp.lo: src/mapm/mapm_exp.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapm_exp.lo -MD -MP -MF "$(DEPDIR)/mapm_exp.Tpo" -c -o mapm_exp.lo `test -f 'src/mapm/mapm_exp.c' || echo '$(srcdir)/'`src/mapm/mapm_exp.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapm_exp.Tpo" "$(DEPDIR)/mapm_exp.Plo"; else rm -f "$(DEPDIR)/mapm_exp.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapm_exp.c' object='mapm_exp.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapm_exp.lo `test -f 'src/mapm/mapm_exp.c' || echo '$(srcdir)/'`src/mapm/mapm_exp.c + +mapmfact.lo: src/mapm/mapmfact.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapmfact.lo -MD -MP -MF "$(DEPDIR)/mapmfact.Tpo" -c -o mapmfact.lo `test -f 'src/mapm/mapmfact.c' || echo '$(srcdir)/'`src/mapm/mapmfact.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapmfact.Tpo" "$(DEPDIR)/mapmfact.Plo"; else rm -f "$(DEPDIR)/mapmfact.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapmfact.c' object='mapmfact.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapmfact.lo `test -f 'src/mapm/mapmfact.c' || echo '$(srcdir)/'`src/mapm/mapmfact.c + +mapm_fam.lo: src/mapm/mapm_fam.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapm_fam.lo -MD -MP -MF "$(DEPDIR)/mapm_fam.Tpo" -c -o mapm_fam.lo `test -f 'src/mapm/mapm_fam.c' || echo '$(srcdir)/'`src/mapm/mapm_fam.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapm_fam.Tpo" "$(DEPDIR)/mapm_fam.Plo"; else rm -f "$(DEPDIR)/mapm_fam.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapm_fam.c' object='mapm_fam.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapm_fam.lo `test -f 'src/mapm/mapm_fam.c' || echo '$(srcdir)/'`src/mapm/mapm_fam.c + +mapm_fft.lo: src/mapm/mapm_fft.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapm_fft.lo -MD -MP -MF "$(DEPDIR)/mapm_fft.Tpo" -c -o mapm_fft.lo `test -f 'src/mapm/mapm_fft.c' || echo '$(srcdir)/'`src/mapm/mapm_fft.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapm_fft.Tpo" "$(DEPDIR)/mapm_fft.Plo"; else rm -f "$(DEPDIR)/mapm_fft.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapm_fft.c' object='mapm_fft.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapm_fft.lo `test -f 'src/mapm/mapm_fft.c' || echo '$(srcdir)/'`src/mapm/mapm_fft.c + +mapm_flr.lo: src/mapm/mapm_flr.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapm_flr.lo -MD -MP -MF "$(DEPDIR)/mapm_flr.Tpo" -c -o mapm_flr.lo `test -f 'src/mapm/mapm_flr.c' || echo '$(srcdir)/'`src/mapm/mapm_flr.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapm_flr.Tpo" "$(DEPDIR)/mapm_flr.Plo"; else rm -f "$(DEPDIR)/mapm_flr.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapm_flr.c' object='mapm_flr.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapm_flr.lo `test -f 'src/mapm/mapm_flr.c' || echo '$(srcdir)/'`src/mapm/mapm_flr.c + +mapmfmul.lo: src/mapm/mapmfmul.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapmfmul.lo -MD -MP -MF "$(DEPDIR)/mapmfmul.Tpo" -c -o mapmfmul.lo `test -f 'src/mapm/mapmfmul.c' || echo '$(srcdir)/'`src/mapm/mapmfmul.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapmfmul.Tpo" "$(DEPDIR)/mapmfmul.Plo"; else rm -f "$(DEPDIR)/mapmfmul.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapmfmul.c' object='mapmfmul.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapmfmul.lo `test -f 'src/mapm/mapmfmul.c' || echo '$(srcdir)/'`src/mapm/mapmfmul.c + +mapm_fpf.lo: src/mapm/mapm_fpf.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapm_fpf.lo -MD -MP -MF "$(DEPDIR)/mapm_fpf.Tpo" -c -o mapm_fpf.lo `test -f 'src/mapm/mapm_fpf.c' || echo '$(srcdir)/'`src/mapm/mapm_fpf.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapm_fpf.Tpo" "$(DEPDIR)/mapm_fpf.Plo"; else rm -f "$(DEPDIR)/mapm_fpf.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapm_fpf.c' object='mapm_fpf.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapm_fpf.lo `test -f 'src/mapm/mapm_fpf.c' || echo '$(srcdir)/'`src/mapm/mapm_fpf.c + +mapm_gcd.lo: src/mapm/mapm_gcd.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapm_gcd.lo -MD -MP -MF "$(DEPDIR)/mapm_gcd.Tpo" -c -o mapm_gcd.lo `test -f 'src/mapm/mapm_gcd.c' || echo '$(srcdir)/'`src/mapm/mapm_gcd.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapm_gcd.Tpo" "$(DEPDIR)/mapm_gcd.Plo"; else rm -f "$(DEPDIR)/mapm_gcd.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapm_gcd.c' object='mapm_gcd.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapm_gcd.lo `test -f 'src/mapm/mapm_gcd.c' || echo '$(srcdir)/'`src/mapm/mapm_gcd.c + +mapmgues.lo: src/mapm/mapmgues.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapmgues.lo -MD -MP -MF "$(DEPDIR)/mapmgues.Tpo" -c -o mapmgues.lo `test -f 'src/mapm/mapmgues.c' || echo '$(srcdir)/'`src/mapm/mapmgues.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapmgues.Tpo" "$(DEPDIR)/mapmgues.Plo"; else rm -f "$(DEPDIR)/mapmgues.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapmgues.c' object='mapmgues.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapmgues.lo `test -f 'src/mapm/mapmgues.c' || echo '$(srcdir)/'`src/mapm/mapmgues.c + +mapmhasn.lo: src/mapm/mapmhasn.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapmhasn.lo -MD -MP -MF "$(DEPDIR)/mapmhasn.Tpo" -c -o mapmhasn.lo `test -f 'src/mapm/mapmhasn.c' || echo '$(srcdir)/'`src/mapm/mapmhasn.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapmhasn.Tpo" "$(DEPDIR)/mapmhasn.Plo"; else rm -f "$(DEPDIR)/mapmhasn.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapmhasn.c' object='mapmhasn.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapmhasn.lo `test -f 'src/mapm/mapmhasn.c' || echo '$(srcdir)/'`src/mapm/mapmhasn.c + +mapmhsin.lo: src/mapm/mapmhsin.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapmhsin.lo -MD -MP -MF "$(DEPDIR)/mapmhsin.Tpo" -c -o mapmhsin.lo `test -f 'src/mapm/mapmhsin.c' || echo '$(srcdir)/'`src/mapm/mapmhsin.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapmhsin.Tpo" "$(DEPDIR)/mapmhsin.Plo"; else rm -f "$(DEPDIR)/mapmhsin.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapmhsin.c' object='mapmhsin.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapmhsin.lo `test -f 'src/mapm/mapmhsin.c' || echo '$(srcdir)/'`src/mapm/mapmhsin.c + +mapmipwr.lo: src/mapm/mapmipwr.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapmipwr.lo -MD -MP -MF "$(DEPDIR)/mapmipwr.Tpo" -c -o mapmipwr.lo `test -f 'src/mapm/mapmipwr.c' || echo '$(srcdir)/'`src/mapm/mapmipwr.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapmipwr.Tpo" "$(DEPDIR)/mapmipwr.Plo"; else rm -f "$(DEPDIR)/mapmipwr.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapmipwr.c' object='mapmipwr.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapmipwr.lo `test -f 'src/mapm/mapmipwr.c' || echo '$(srcdir)/'`src/mapm/mapmipwr.c + +mapmistr.lo: src/mapm/mapmistr.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapmistr.lo -MD -MP -MF "$(DEPDIR)/mapmistr.Tpo" -c -o mapmistr.lo `test -f 'src/mapm/mapmistr.c' || echo '$(srcdir)/'`src/mapm/mapmistr.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapmistr.Tpo" "$(DEPDIR)/mapmistr.Plo"; else rm -f "$(DEPDIR)/mapmistr.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapmistr.c' object='mapmistr.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapmistr.lo `test -f 'src/mapm/mapmistr.c' || echo '$(srcdir)/'`src/mapm/mapmistr.c + +mapm_lg2.lo: src/mapm/mapm_lg2.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapm_lg2.lo -MD -MP -MF "$(DEPDIR)/mapm_lg2.Tpo" -c -o mapm_lg2.lo `test -f 'src/mapm/mapm_lg2.c' || echo '$(srcdir)/'`src/mapm/mapm_lg2.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapm_lg2.Tpo" "$(DEPDIR)/mapm_lg2.Plo"; else rm -f "$(DEPDIR)/mapm_lg2.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapm_lg2.c' object='mapm_lg2.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapm_lg2.lo `test -f 'src/mapm/mapm_lg2.c' || echo '$(srcdir)/'`src/mapm/mapm_lg2.c + +mapm_lg3.lo: src/mapm/mapm_lg3.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapm_lg3.lo -MD -MP -MF "$(DEPDIR)/mapm_lg3.Tpo" -c -o mapm_lg3.lo `test -f 'src/mapm/mapm_lg3.c' || echo '$(srcdir)/'`src/mapm/mapm_lg3.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapm_lg3.Tpo" "$(DEPDIR)/mapm_lg3.Plo"; else rm -f "$(DEPDIR)/mapm_lg3.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapm_lg3.c' object='mapm_lg3.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapm_lg3.lo `test -f 'src/mapm/mapm_lg3.c' || echo '$(srcdir)/'`src/mapm/mapm_lg3.c + +mapm_log.lo: src/mapm/mapm_log.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapm_log.lo -MD -MP -MF "$(DEPDIR)/mapm_log.Tpo" -c -o mapm_log.lo `test -f 'src/mapm/mapm_log.c' || echo '$(srcdir)/'`src/mapm/mapm_log.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapm_log.Tpo" "$(DEPDIR)/mapm_log.Plo"; else rm -f "$(DEPDIR)/mapm_log.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapm_log.c' object='mapm_log.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapm_log.lo `test -f 'src/mapm/mapm_log.c' || echo '$(srcdir)/'`src/mapm/mapm_log.c + +mapm_mul.lo: src/mapm/mapm_mul.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapm_mul.lo -MD -MP -MF "$(DEPDIR)/mapm_mul.Tpo" -c -o mapm_mul.lo `test -f 'src/mapm/mapm_mul.c' || echo '$(srcdir)/'`src/mapm/mapm_mul.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapm_mul.Tpo" "$(DEPDIR)/mapm_mul.Plo"; else rm -f "$(DEPDIR)/mapm_mul.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapm_mul.c' object='mapm_mul.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapm_mul.lo `test -f 'src/mapm/mapm_mul.c' || echo '$(srcdir)/'`src/mapm/mapm_mul.c + +mapm_pow.lo: src/mapm/mapm_pow.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapm_pow.lo -MD -MP -MF "$(DEPDIR)/mapm_pow.Tpo" -c -o mapm_pow.lo `test -f 'src/mapm/mapm_pow.c' || echo '$(srcdir)/'`src/mapm/mapm_pow.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapm_pow.Tpo" "$(DEPDIR)/mapm_pow.Plo"; else rm -f "$(DEPDIR)/mapm_pow.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapm_pow.c' object='mapm_pow.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapm_pow.lo `test -f 'src/mapm/mapm_pow.c' || echo '$(srcdir)/'`src/mapm/mapm_pow.c + +mapmpwr2.lo: src/mapm/mapmpwr2.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapmpwr2.lo -MD -MP -MF "$(DEPDIR)/mapmpwr2.Tpo" -c -o mapmpwr2.lo `test -f 'src/mapm/mapmpwr2.c' || echo '$(srcdir)/'`src/mapm/mapmpwr2.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapmpwr2.Tpo" "$(DEPDIR)/mapmpwr2.Plo"; else rm -f "$(DEPDIR)/mapmpwr2.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapmpwr2.c' object='mapmpwr2.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapmpwr2.lo `test -f 'src/mapm/mapmpwr2.c' || echo '$(srcdir)/'`src/mapm/mapmpwr2.c + +mapm_rcp.lo: src/mapm/mapm_rcp.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapm_rcp.lo -MD -MP -MF "$(DEPDIR)/mapm_rcp.Tpo" -c -o mapm_rcp.lo `test -f 'src/mapm/mapm_rcp.c' || echo '$(srcdir)/'`src/mapm/mapm_rcp.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapm_rcp.Tpo" "$(DEPDIR)/mapm_rcp.Plo"; else rm -f "$(DEPDIR)/mapm_rcp.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapm_rcp.c' object='mapm_rcp.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapm_rcp.lo `test -f 'src/mapm/mapm_rcp.c' || echo '$(srcdir)/'`src/mapm/mapm_rcp.c + +mapm_rnd.lo: src/mapm/mapm_rnd.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapm_rnd.lo -MD -MP -MF "$(DEPDIR)/mapm_rnd.Tpo" -c -o mapm_rnd.lo `test -f 'src/mapm/mapm_rnd.c' || echo '$(srcdir)/'`src/mapm/mapm_rnd.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapm_rnd.Tpo" "$(DEPDIR)/mapm_rnd.Plo"; else rm -f "$(DEPDIR)/mapm_rnd.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapm_rnd.c' object='mapm_rnd.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapm_rnd.lo `test -f 'src/mapm/mapm_rnd.c' || echo '$(srcdir)/'`src/mapm/mapm_rnd.c + +mapmrsin.lo: src/mapm/mapmrsin.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapmrsin.lo -MD -MP -MF "$(DEPDIR)/mapmrsin.Tpo" -c -o mapmrsin.lo `test -f 'src/mapm/mapmrsin.c' || echo '$(srcdir)/'`src/mapm/mapmrsin.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapmrsin.Tpo" "$(DEPDIR)/mapmrsin.Plo"; else rm -f "$(DEPDIR)/mapmrsin.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapmrsin.c' object='mapmrsin.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapmrsin.lo `test -f 'src/mapm/mapmrsin.c' || echo '$(srcdir)/'`src/mapm/mapmrsin.c + +mapm_set.lo: src/mapm/mapm_set.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapm_set.lo -MD -MP -MF "$(DEPDIR)/mapm_set.Tpo" -c -o mapm_set.lo `test -f 'src/mapm/mapm_set.c' || echo '$(srcdir)/'`src/mapm/mapm_set.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapm_set.Tpo" "$(DEPDIR)/mapm_set.Plo"; else rm -f "$(DEPDIR)/mapm_set.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapm_set.c' object='mapm_set.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapm_set.lo `test -f 'src/mapm/mapm_set.c' || echo '$(srcdir)/'`src/mapm/mapm_set.c + +mapm_sin.lo: src/mapm/mapm_sin.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapm_sin.lo -MD -MP -MF "$(DEPDIR)/mapm_sin.Tpo" -c -o mapm_sin.lo `test -f 'src/mapm/mapm_sin.c' || echo '$(srcdir)/'`src/mapm/mapm_sin.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapm_sin.Tpo" "$(DEPDIR)/mapm_sin.Plo"; else rm -f "$(DEPDIR)/mapm_sin.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapm_sin.c' object='mapm_sin.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapm_sin.lo `test -f 'src/mapm/mapm_sin.c' || echo '$(srcdir)/'`src/mapm/mapm_sin.c + +mapmsqrt.lo: src/mapm/mapmsqrt.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapmsqrt.lo -MD -MP -MF "$(DEPDIR)/mapmsqrt.Tpo" -c -o mapmsqrt.lo `test -f 'src/mapm/mapmsqrt.c' || echo '$(srcdir)/'`src/mapm/mapmsqrt.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapmsqrt.Tpo" "$(DEPDIR)/mapmsqrt.Plo"; else rm -f "$(DEPDIR)/mapmsqrt.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapmsqrt.c' object='mapmsqrt.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapmsqrt.lo `test -f 'src/mapm/mapmsqrt.c' || echo '$(srcdir)/'`src/mapm/mapmsqrt.c + +mapmstck.lo: src/mapm/mapmstck.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapmstck.lo -MD -MP -MF "$(DEPDIR)/mapmstck.Tpo" -c -o mapmstck.lo `test -f 'src/mapm/mapmstck.c' || echo '$(srcdir)/'`src/mapm/mapmstck.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapmstck.Tpo" "$(DEPDIR)/mapmstck.Plo"; else rm -f "$(DEPDIR)/mapmstck.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapmstck.c' object='mapmstck.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapmstck.lo `test -f 'src/mapm/mapmstck.c' || echo '$(srcdir)/'`src/mapm/mapmstck.c + +mapmutil.lo: src/mapm/mapmutil.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapmutil.lo -MD -MP -MF "$(DEPDIR)/mapmutil.Tpo" -c -o mapmutil.lo `test -f 'src/mapm/mapmutil.c' || echo '$(srcdir)/'`src/mapm/mapmutil.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapmutil.Tpo" "$(DEPDIR)/mapmutil.Plo"; else rm -f "$(DEPDIR)/mapmutil.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapmutil.c' object='mapmutil.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapmutil.lo `test -f 'src/mapm/mapmutil.c' || echo '$(srcdir)/'`src/mapm/mapmutil.c + +mapmutl2.lo: src/mapm/mapmutl2.c +@am__fastdepCC_TRUE@ if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mapmutl2.lo -MD -MP -MF "$(DEPDIR)/mapmutl2.Tpo" -c -o mapmutl2.lo `test -f 'src/mapm/mapmutl2.c' || echo '$(srcdir)/'`src/mapm/mapmutl2.c; \ +@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/mapmutl2.Tpo" "$(DEPDIR)/mapmutl2.Plo"; else rm -f "$(DEPDIR)/mapmutl2.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='src/mapm/mapmutl2.c' object='mapmutl2.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mapmutl2.lo `test -f 'src/mapm/mapmutl2.c' || echo '$(srcdir)/'`src/mapm/mapmutl2.c + +.cpp.o: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +ReferenceCounted.lo: src/framework/ReferenceCounted.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ReferenceCounted.lo -MD -MP -MF "$(DEPDIR)/ReferenceCounted.Tpo" -c -o ReferenceCounted.lo `test -f 'src/framework/ReferenceCounted.cpp' || echo '$(srcdir)/'`src/framework/ReferenceCounted.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ReferenceCounted.Tpo" "$(DEPDIR)/ReferenceCounted.Plo"; else rm -f "$(DEPDIR)/ReferenceCounted.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/framework/ReferenceCounted.cpp' object='ReferenceCounted.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ReferenceCounted.lo `test -f 'src/framework/ReferenceCounted.cpp' || echo '$(srcdir)/'`src/framework/ReferenceCounted.cpp + +BaseMemoryManager.lo: src/framework/BaseMemoryManager.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT BaseMemoryManager.lo -MD -MP -MF "$(DEPDIR)/BaseMemoryManager.Tpo" -c -o BaseMemoryManager.lo `test -f 'src/framework/BaseMemoryManager.cpp' || echo '$(srcdir)/'`src/framework/BaseMemoryManager.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/BaseMemoryManager.Tpo" "$(DEPDIR)/BaseMemoryManager.Plo"; else rm -f "$(DEPDIR)/BaseMemoryManager.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/framework/BaseMemoryManager.cpp' object='BaseMemoryManager.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o BaseMemoryManager.lo `test -f 'src/framework/BaseMemoryManager.cpp' || echo '$(srcdir)/'`src/framework/BaseMemoryManager.cpp + +ProxyMemoryManager.lo: src/framework/ProxyMemoryManager.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ProxyMemoryManager.lo -MD -MP -MF "$(DEPDIR)/ProxyMemoryManager.Tpo" -c -o ProxyMemoryManager.lo `test -f 'src/framework/ProxyMemoryManager.cpp' || echo '$(srcdir)/'`src/framework/ProxyMemoryManager.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ProxyMemoryManager.Tpo" "$(DEPDIR)/ProxyMemoryManager.Plo"; else rm -f "$(DEPDIR)/ProxyMemoryManager.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/framework/ProxyMemoryManager.cpp' object='ProxyMemoryManager.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ProxyMemoryManager.lo `test -f 'src/framework/ProxyMemoryManager.cpp' || echo '$(srcdir)/'`src/framework/ProxyMemoryManager.cpp + +StringPool.lo: src/framework/StringPool.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT StringPool.lo -MD -MP -MF "$(DEPDIR)/StringPool.Tpo" -c -o StringPool.lo `test -f 'src/framework/StringPool.cpp' || echo '$(srcdir)/'`src/framework/StringPool.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/StringPool.Tpo" "$(DEPDIR)/StringPool.Plo"; else rm -f "$(DEPDIR)/StringPool.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/framework/StringPool.cpp' object='StringPool.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o StringPool.lo `test -f 'src/framework/StringPool.cpp' || echo '$(srcdir)/'`src/framework/StringPool.cpp + +XPath2MemoryManagerImpl.lo: src/framework/XPath2MemoryManagerImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XPath2MemoryManagerImpl.lo -MD -MP -MF "$(DEPDIR)/XPath2MemoryManagerImpl.Tpo" -c -o XPath2MemoryManagerImpl.lo `test -f 'src/framework/XPath2MemoryManagerImpl.cpp' || echo '$(srcdir)/'`src/framework/XPath2MemoryManagerImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XPath2MemoryManagerImpl.Tpo" "$(DEPDIR)/XPath2MemoryManagerImpl.Plo"; else rm -f "$(DEPDIR)/XPath2MemoryManagerImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/framework/XPath2MemoryManagerImpl.cpp' object='XPath2MemoryManagerImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XPath2MemoryManagerImpl.lo `test -f 'src/framework/XPath2MemoryManagerImpl.cpp' || echo '$(srcdir)/'`src/framework/XPath2MemoryManagerImpl.cpp + +XQScopedNamespace.lo: src/context/XQScopedNamespace.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQScopedNamespace.lo -MD -MP -MF "$(DEPDIR)/XQScopedNamespace.Tpo" -c -o XQScopedNamespace.lo `test -f 'src/context/XQScopedNamespace.cpp' || echo '$(srcdir)/'`src/context/XQScopedNamespace.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQScopedNamespace.Tpo" "$(DEPDIR)/XQScopedNamespace.Plo"; else rm -f "$(DEPDIR)/XQScopedNamespace.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/context/XQScopedNamespace.cpp' object='XQScopedNamespace.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQScopedNamespace.lo `test -f 'src/context/XQScopedNamespace.cpp' || echo '$(srcdir)/'`src/context/XQScopedNamespace.cpp + +CollationImpl.lo: src/context/impl/CollationImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CollationImpl.lo -MD -MP -MF "$(DEPDIR)/CollationImpl.Tpo" -c -o CollationImpl.lo `test -f 'src/context/impl/CollationImpl.cpp' || echo '$(srcdir)/'`src/context/impl/CollationImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/CollationImpl.Tpo" "$(DEPDIR)/CollationImpl.Plo"; else rm -f "$(DEPDIR)/CollationImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/context/impl/CollationImpl.cpp' object='CollationImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CollationImpl.lo `test -f 'src/context/impl/CollationImpl.cpp' || echo '$(srcdir)/'`src/context/impl/CollationImpl.cpp + +CodepointCollation.lo: src/context/impl/CodepointCollation.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CodepointCollation.lo -MD -MP -MF "$(DEPDIR)/CodepointCollation.Tpo" -c -o CodepointCollation.lo `test -f 'src/context/impl/CodepointCollation.cpp' || echo '$(srcdir)/'`src/context/impl/CodepointCollation.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/CodepointCollation.Tpo" "$(DEPDIR)/CodepointCollation.Plo"; else rm -f "$(DEPDIR)/CodepointCollation.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/context/impl/CodepointCollation.cpp' object='CodepointCollation.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CodepointCollation.lo `test -f 'src/context/impl/CodepointCollation.cpp' || echo '$(srcdir)/'`src/context/impl/CodepointCollation.cpp + +VarStoreImpl.lo: src/context/impl/VarStoreImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT VarStoreImpl.lo -MD -MP -MF "$(DEPDIR)/VarStoreImpl.Tpo" -c -o VarStoreImpl.lo `test -f 'src/context/impl/VarStoreImpl.cpp' || echo '$(srcdir)/'`src/context/impl/VarStoreImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/VarStoreImpl.Tpo" "$(DEPDIR)/VarStoreImpl.Plo"; else rm -f "$(DEPDIR)/VarStoreImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/context/impl/VarStoreImpl.cpp' object='VarStoreImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o VarStoreImpl.lo `test -f 'src/context/impl/VarStoreImpl.cpp' || echo '$(srcdir)/'`src/context/impl/VarStoreImpl.cpp + +VarTypeStoreImpl.lo: src/context/impl/VarTypeStoreImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT VarTypeStoreImpl.lo -MD -MP -MF "$(DEPDIR)/VarTypeStoreImpl.Tpo" -c -o VarTypeStoreImpl.lo `test -f 'src/context/impl/VarTypeStoreImpl.cpp' || echo '$(srcdir)/'`src/context/impl/VarTypeStoreImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/VarTypeStoreImpl.Tpo" "$(DEPDIR)/VarTypeStoreImpl.Plo"; else rm -f "$(DEPDIR)/VarTypeStoreImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/context/impl/VarTypeStoreImpl.cpp' object='VarTypeStoreImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o VarTypeStoreImpl.lo `test -f 'src/context/impl/VarTypeStoreImpl.cpp' || echo '$(srcdir)/'`src/context/impl/VarTypeStoreImpl.cpp + +VarHashEntryImpl.lo: src/context/impl/VarHashEntryImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT VarHashEntryImpl.lo -MD -MP -MF "$(DEPDIR)/VarHashEntryImpl.Tpo" -c -o VarHashEntryImpl.lo `test -f 'src/context/impl/VarHashEntryImpl.cpp' || echo '$(srcdir)/'`src/context/impl/VarHashEntryImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/VarHashEntryImpl.Tpo" "$(DEPDIR)/VarHashEntryImpl.Plo"; else rm -f "$(DEPDIR)/VarHashEntryImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/context/impl/VarHashEntryImpl.cpp' object='VarHashEntryImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o VarHashEntryImpl.lo `test -f 'src/context/impl/VarHashEntryImpl.cpp' || echo '$(srcdir)/'`src/context/impl/VarHashEntryImpl.cpp + +XQContextImpl.lo: src/context/impl/XQContextImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQContextImpl.lo -MD -MP -MF "$(DEPDIR)/XQContextImpl.Tpo" -c -o XQContextImpl.lo `test -f 'src/context/impl/XQContextImpl.cpp' || echo '$(srcdir)/'`src/context/impl/XQContextImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQContextImpl.Tpo" "$(DEPDIR)/XQContextImpl.Plo"; else rm -f "$(DEPDIR)/XQContextImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/context/impl/XQContextImpl.cpp' object='XQContextImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQContextImpl.lo `test -f 'src/context/impl/XQContextImpl.cpp' || echo '$(srcdir)/'`src/context/impl/XQContextImpl.cpp + +XQDynamicContextImpl.lo: src/context/impl/XQDynamicContextImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQDynamicContextImpl.lo -MD -MP -MF "$(DEPDIR)/XQDynamicContextImpl.Tpo" -c -o XQDynamicContextImpl.lo `test -f 'src/context/impl/XQDynamicContextImpl.cpp' || echo '$(srcdir)/'`src/context/impl/XQDynamicContextImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQDynamicContextImpl.Tpo" "$(DEPDIR)/XQDynamicContextImpl.Plo"; else rm -f "$(DEPDIR)/XQDynamicContextImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/context/impl/XQDynamicContextImpl.cpp' object='XQDynamicContextImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQDynamicContextImpl.lo `test -f 'src/context/impl/XQDynamicContextImpl.cpp' || echo '$(srcdir)/'`src/context/impl/XQDynamicContextImpl.cpp + +ItemFactoryImpl.lo: src/context/impl/ItemFactoryImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ItemFactoryImpl.lo -MD -MP -MF "$(DEPDIR)/ItemFactoryImpl.Tpo" -c -o ItemFactoryImpl.lo `test -f 'src/context/impl/ItemFactoryImpl.cpp' || echo '$(srcdir)/'`src/context/impl/ItemFactoryImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ItemFactoryImpl.Tpo" "$(DEPDIR)/ItemFactoryImpl.Plo"; else rm -f "$(DEPDIR)/ItemFactoryImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/context/impl/ItemFactoryImpl.cpp' object='ItemFactoryImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ItemFactoryImpl.lo `test -f 'src/context/impl/ItemFactoryImpl.cpp' || echo '$(srcdir)/'`src/context/impl/ItemFactoryImpl.cpp + +XQRemoteDebugger.lo: src/context/impl/XQRemoteDebugger.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQRemoteDebugger.lo -MD -MP -MF "$(DEPDIR)/XQRemoteDebugger.Tpo" -c -o XQRemoteDebugger.lo `test -f 'src/context/impl/XQRemoteDebugger.cpp' || echo '$(srcdir)/'`src/context/impl/XQRemoteDebugger.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQRemoteDebugger.Tpo" "$(DEPDIR)/XQRemoteDebugger.Plo"; else rm -f "$(DEPDIR)/XQRemoteDebugger.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/context/impl/XQRemoteDebugger.cpp' object='XQRemoteDebugger.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQRemoteDebugger.lo `test -f 'src/context/impl/XQRemoteDebugger.cpp' || echo '$(srcdir)/'`src/context/impl/XQRemoteDebugger.cpp + +XQAtomize.lo: src/ast/XQAtomize.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQAtomize.lo -MD -MP -MF "$(DEPDIR)/XQAtomize.Tpo" -c -o XQAtomize.lo `test -f 'src/ast/XQAtomize.cpp' || echo '$(srcdir)/'`src/ast/XQAtomize.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQAtomize.Tpo" "$(DEPDIR)/XQAtomize.Plo"; else rm -f "$(DEPDIR)/XQAtomize.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQAtomize.cpp' object='XQAtomize.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQAtomize.lo `test -f 'src/ast/XQAtomize.cpp' || echo '$(srcdir)/'`src/ast/XQAtomize.cpp + +XQCastableAs.lo: src/ast/XQCastableAs.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQCastableAs.lo -MD -MP -MF "$(DEPDIR)/XQCastableAs.Tpo" -c -o XQCastableAs.lo `test -f 'src/ast/XQCastableAs.cpp' || echo '$(srcdir)/'`src/ast/XQCastableAs.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQCastableAs.Tpo" "$(DEPDIR)/XQCastableAs.Plo"; else rm -f "$(DEPDIR)/XQCastableAs.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQCastableAs.cpp' object='XQCastableAs.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQCastableAs.lo `test -f 'src/ast/XQCastableAs.cpp' || echo '$(srcdir)/'`src/ast/XQCastableAs.cpp + +XQCastAs.lo: src/ast/XQCastAs.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQCastAs.lo -MD -MP -MF "$(DEPDIR)/XQCastAs.Tpo" -c -o XQCastAs.lo `test -f 'src/ast/XQCastAs.cpp' || echo '$(srcdir)/'`src/ast/XQCastAs.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQCastAs.Tpo" "$(DEPDIR)/XQCastAs.Plo"; else rm -f "$(DEPDIR)/XQCastAs.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQCastAs.cpp' object='XQCastAs.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQCastAs.lo `test -f 'src/ast/XQCastAs.cpp' || echo '$(srcdir)/'`src/ast/XQCastAs.cpp + +XQContextItem.lo: src/ast/XQContextItem.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQContextItem.lo -MD -MP -MF "$(DEPDIR)/XQContextItem.Tpo" -c -o XQContextItem.lo `test -f 'src/ast/XQContextItem.cpp' || echo '$(srcdir)/'`src/ast/XQContextItem.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQContextItem.Tpo" "$(DEPDIR)/XQContextItem.Plo"; else rm -f "$(DEPDIR)/XQContextItem.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQContextItem.cpp' object='XQContextItem.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQContextItem.lo `test -f 'src/ast/XQContextItem.cpp' || echo '$(srcdir)/'`src/ast/XQContextItem.cpp + +XQFunction.lo: src/ast/XQFunction.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQFunction.lo -MD -MP -MF "$(DEPDIR)/XQFunction.Tpo" -c -o XQFunction.lo `test -f 'src/ast/XQFunction.cpp' || echo '$(srcdir)/'`src/ast/XQFunction.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQFunction.Tpo" "$(DEPDIR)/XQFunction.Plo"; else rm -f "$(DEPDIR)/XQFunction.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQFunction.cpp' object='XQFunction.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQFunction.lo `test -f 'src/ast/XQFunction.cpp' || echo '$(srcdir)/'`src/ast/XQFunction.cpp + +XQIf.lo: src/ast/XQIf.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQIf.lo -MD -MP -MF "$(DEPDIR)/XQIf.Tpo" -c -o XQIf.lo `test -f 'src/ast/XQIf.cpp' || echo '$(srcdir)/'`src/ast/XQIf.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQIf.Tpo" "$(DEPDIR)/XQIf.Plo"; else rm -f "$(DEPDIR)/XQIf.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQIf.cpp' object='XQIf.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQIf.lo `test -f 'src/ast/XQIf.cpp' || echo '$(srcdir)/'`src/ast/XQIf.cpp + +ASTNodeImpl.lo: src/ast/ASTNodeImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ASTNodeImpl.lo -MD -MP -MF "$(DEPDIR)/ASTNodeImpl.Tpo" -c -o ASTNodeImpl.lo `test -f 'src/ast/ASTNodeImpl.cpp' || echo '$(srcdir)/'`src/ast/ASTNodeImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ASTNodeImpl.Tpo" "$(DEPDIR)/ASTNodeImpl.Plo"; else rm -f "$(DEPDIR)/ASTNodeImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/ASTNodeImpl.cpp' object='ASTNodeImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ASTNodeImpl.lo `test -f 'src/ast/ASTNodeImpl.cpp' || echo '$(srcdir)/'`src/ast/ASTNodeImpl.cpp + +XQInstanceOf.lo: src/ast/XQInstanceOf.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQInstanceOf.lo -MD -MP -MF "$(DEPDIR)/XQInstanceOf.Tpo" -c -o XQInstanceOf.lo `test -f 'src/ast/XQInstanceOf.cpp' || echo '$(srcdir)/'`src/ast/XQInstanceOf.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQInstanceOf.Tpo" "$(DEPDIR)/XQInstanceOf.Plo"; else rm -f "$(DEPDIR)/XQInstanceOf.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQInstanceOf.cpp' object='XQInstanceOf.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQInstanceOf.lo `test -f 'src/ast/XQInstanceOf.cpp' || echo '$(srcdir)/'`src/ast/XQInstanceOf.cpp + +XQLiteral.lo: src/ast/XQLiteral.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQLiteral.lo -MD -MP -MF "$(DEPDIR)/XQLiteral.Tpo" -c -o XQLiteral.lo `test -f 'src/ast/XQLiteral.cpp' || echo '$(srcdir)/'`src/ast/XQLiteral.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQLiteral.Tpo" "$(DEPDIR)/XQLiteral.Plo"; else rm -f "$(DEPDIR)/XQLiteral.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQLiteral.cpp' object='XQLiteral.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQLiteral.lo `test -f 'src/ast/XQLiteral.cpp' || echo '$(srcdir)/'`src/ast/XQLiteral.cpp + +XQNav.lo: src/ast/XQNav.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQNav.lo -MD -MP -MF "$(DEPDIR)/XQNav.Tpo" -c -o XQNav.lo `test -f 'src/ast/XQNav.cpp' || echo '$(srcdir)/'`src/ast/XQNav.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQNav.Tpo" "$(DEPDIR)/XQNav.Plo"; else rm -f "$(DEPDIR)/XQNav.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQNav.cpp' object='XQNav.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQNav.lo `test -f 'src/ast/XQNav.cpp' || echo '$(srcdir)/'`src/ast/XQNav.cpp + +XQOperator.lo: src/ast/XQOperator.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQOperator.lo -MD -MP -MF "$(DEPDIR)/XQOperator.Tpo" -c -o XQOperator.lo `test -f 'src/ast/XQOperator.cpp' || echo '$(srcdir)/'`src/ast/XQOperator.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQOperator.Tpo" "$(DEPDIR)/XQOperator.Plo"; else rm -f "$(DEPDIR)/XQOperator.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQOperator.cpp' object='XQOperator.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQOperator.lo `test -f 'src/ast/XQOperator.cpp' || echo '$(srcdir)/'`src/ast/XQOperator.cpp + +XQParenthesizedExpr.lo: src/ast/XQParenthesizedExpr.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQParenthesizedExpr.lo -MD -MP -MF "$(DEPDIR)/XQParenthesizedExpr.Tpo" -c -o XQParenthesizedExpr.lo `test -f 'src/ast/XQParenthesizedExpr.cpp' || echo '$(srcdir)/'`src/ast/XQParenthesizedExpr.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQParenthesizedExpr.Tpo" "$(DEPDIR)/XQParenthesizedExpr.Plo"; else rm -f "$(DEPDIR)/XQParenthesizedExpr.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQParenthesizedExpr.cpp' object='XQParenthesizedExpr.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQParenthesizedExpr.lo `test -f 'src/ast/XQParenthesizedExpr.cpp' || echo '$(srcdir)/'`src/ast/XQParenthesizedExpr.cpp + +XQSequence.lo: src/ast/XQSequence.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQSequence.lo -MD -MP -MF "$(DEPDIR)/XQSequence.Tpo" -c -o XQSequence.lo `test -f 'src/ast/XQSequence.cpp' || echo '$(srcdir)/'`src/ast/XQSequence.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQSequence.Tpo" "$(DEPDIR)/XQSequence.Plo"; else rm -f "$(DEPDIR)/XQSequence.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQSequence.cpp' object='XQSequence.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQSequence.lo `test -f 'src/ast/XQSequence.cpp' || echo '$(srcdir)/'`src/ast/XQSequence.cpp + +XQStep.lo: src/ast/XQStep.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQStep.lo -MD -MP -MF "$(DEPDIR)/XQStep.Tpo" -c -o XQStep.lo `test -f 'src/ast/XQStep.cpp' || echo '$(srcdir)/'`src/ast/XQStep.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQStep.Tpo" "$(DEPDIR)/XQStep.Plo"; else rm -f "$(DEPDIR)/XQStep.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQStep.cpp' object='XQStep.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQStep.lo `test -f 'src/ast/XQStep.cpp' || echo '$(srcdir)/'`src/ast/XQStep.cpp + +XQTreatAs.lo: src/ast/XQTreatAs.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQTreatAs.lo -MD -MP -MF "$(DEPDIR)/XQTreatAs.Tpo" -c -o XQTreatAs.lo `test -f 'src/ast/XQTreatAs.cpp' || echo '$(srcdir)/'`src/ast/XQTreatAs.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQTreatAs.Tpo" "$(DEPDIR)/XQTreatAs.Plo"; else rm -f "$(DEPDIR)/XQTreatAs.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQTreatAs.cpp' object='XQTreatAs.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQTreatAs.lo `test -f 'src/ast/XQTreatAs.cpp' || echo '$(srcdir)/'`src/ast/XQTreatAs.cpp + +XQVariable.lo: src/ast/XQVariable.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQVariable.lo -MD -MP -MF "$(DEPDIR)/XQVariable.Tpo" -c -o XQVariable.lo `test -f 'src/ast/XQVariable.cpp' || echo '$(srcdir)/'`src/ast/XQVariable.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQVariable.Tpo" "$(DEPDIR)/XQVariable.Plo"; else rm -f "$(DEPDIR)/XQVariable.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQVariable.cpp' object='XQVariable.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQVariable.lo `test -f 'src/ast/XQVariable.cpp' || echo '$(srcdir)/'`src/ast/XQVariable.cpp + +StaticResolutionContext.lo: src/ast/StaticResolutionContext.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT StaticResolutionContext.lo -MD -MP -MF "$(DEPDIR)/StaticResolutionContext.Tpo" -c -o StaticResolutionContext.lo `test -f 'src/ast/StaticResolutionContext.cpp' || echo '$(srcdir)/'`src/ast/StaticResolutionContext.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/StaticResolutionContext.Tpo" "$(DEPDIR)/StaticResolutionContext.Plo"; else rm -f "$(DEPDIR)/StaticResolutionContext.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/StaticResolutionContext.cpp' object='StaticResolutionContext.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o StaticResolutionContext.lo `test -f 'src/ast/StaticResolutionContext.cpp' || echo '$(srcdir)/'`src/ast/StaticResolutionContext.cpp + +StaticType.lo: src/ast/StaticType.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT StaticType.lo -MD -MP -MF "$(DEPDIR)/StaticType.Tpo" -c -o StaticType.lo `test -f 'src/ast/StaticType.cpp' || echo '$(srcdir)/'`src/ast/StaticType.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/StaticType.Tpo" "$(DEPDIR)/StaticType.Plo"; else rm -f "$(DEPDIR)/StaticType.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/StaticType.cpp' object='StaticType.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o StaticType.lo `test -f 'src/ast/StaticType.cpp' || echo '$(srcdir)/'`src/ast/StaticType.cpp + +AggregateFunction.lo: src/ast/AggregateFunction.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT AggregateFunction.lo -MD -MP -MF "$(DEPDIR)/AggregateFunction.Tpo" -c -o AggregateFunction.lo `test -f 'src/ast/AggregateFunction.cpp' || echo '$(srcdir)/'`src/ast/AggregateFunction.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/AggregateFunction.Tpo" "$(DEPDIR)/AggregateFunction.Plo"; else rm -f "$(DEPDIR)/AggregateFunction.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/AggregateFunction.cpp' object='AggregateFunction.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o AggregateFunction.lo `test -f 'src/ast/AggregateFunction.cpp' || echo '$(srcdir)/'`src/ast/AggregateFunction.cpp + +ConstantFoldingFunction.lo: src/ast/ConstantFoldingFunction.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ConstantFoldingFunction.lo -MD -MP -MF "$(DEPDIR)/ConstantFoldingFunction.Tpo" -c -o ConstantFoldingFunction.lo `test -f 'src/ast/ConstantFoldingFunction.cpp' || echo '$(srcdir)/'`src/ast/ConstantFoldingFunction.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ConstantFoldingFunction.Tpo" "$(DEPDIR)/ConstantFoldingFunction.Plo"; else rm -f "$(DEPDIR)/ConstantFoldingFunction.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/ConstantFoldingFunction.cpp' object='ConstantFoldingFunction.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ConstantFoldingFunction.lo `test -f 'src/ast/ConstantFoldingFunction.cpp' || echo '$(srcdir)/'`src/ast/ConstantFoldingFunction.cpp + +NumericFunction.lo: src/ast/NumericFunction.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT NumericFunction.lo -MD -MP -MF "$(DEPDIR)/NumericFunction.Tpo" -c -o NumericFunction.lo `test -f 'src/ast/NumericFunction.cpp' || echo '$(srcdir)/'`src/ast/NumericFunction.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/NumericFunction.Tpo" "$(DEPDIR)/NumericFunction.Plo"; else rm -f "$(DEPDIR)/NumericFunction.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/NumericFunction.cpp' object='NumericFunction.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o NumericFunction.lo `test -f 'src/ast/NumericFunction.cpp' || echo '$(srcdir)/'`src/ast/NumericFunction.cpp + +XQDebugHook.lo: src/ast/XQDebugHook.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQDebugHook.lo -MD -MP -MF "$(DEPDIR)/XQDebugHook.Tpo" -c -o XQDebugHook.lo `test -f 'src/ast/XQDebugHook.cpp' || echo '$(srcdir)/'`src/ast/XQDebugHook.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQDebugHook.Tpo" "$(DEPDIR)/XQDebugHook.Plo"; else rm -f "$(DEPDIR)/XQDebugHook.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQDebugHook.cpp' object='XQDebugHook.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQDebugHook.lo `test -f 'src/ast/XQDebugHook.cpp' || echo '$(srcdir)/'`src/ast/XQDebugHook.cpp + +XQDOMConstructor.lo: src/ast/XQDOMConstructor.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQDOMConstructor.lo -MD -MP -MF "$(DEPDIR)/XQDOMConstructor.Tpo" -c -o XQDOMConstructor.lo `test -f 'src/ast/XQDOMConstructor.cpp' || echo '$(srcdir)/'`src/ast/XQDOMConstructor.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQDOMConstructor.Tpo" "$(DEPDIR)/XQDOMConstructor.Plo"; else rm -f "$(DEPDIR)/XQDOMConstructor.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQDOMConstructor.cpp' object='XQDOMConstructor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQDOMConstructor.lo `test -f 'src/ast/XQDOMConstructor.cpp' || echo '$(srcdir)/'`src/ast/XQDOMConstructor.cpp + +XQDocumentConstructor.lo: src/ast/XQDocumentConstructor.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQDocumentConstructor.lo -MD -MP -MF "$(DEPDIR)/XQDocumentConstructor.Tpo" -c -o XQDocumentConstructor.lo `test -f 'src/ast/XQDocumentConstructor.cpp' || echo '$(srcdir)/'`src/ast/XQDocumentConstructor.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQDocumentConstructor.Tpo" "$(DEPDIR)/XQDocumentConstructor.Plo"; else rm -f "$(DEPDIR)/XQDocumentConstructor.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQDocumentConstructor.cpp' object='XQDocumentConstructor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQDocumentConstructor.lo `test -f 'src/ast/XQDocumentConstructor.cpp' || echo '$(srcdir)/'`src/ast/XQDocumentConstructor.cpp + +XQElementConstructor.lo: src/ast/XQElementConstructor.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQElementConstructor.lo -MD -MP -MF "$(DEPDIR)/XQElementConstructor.Tpo" -c -o XQElementConstructor.lo `test -f 'src/ast/XQElementConstructor.cpp' || echo '$(srcdir)/'`src/ast/XQElementConstructor.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQElementConstructor.Tpo" "$(DEPDIR)/XQElementConstructor.Plo"; else rm -f "$(DEPDIR)/XQElementConstructor.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQElementConstructor.cpp' object='XQElementConstructor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQElementConstructor.lo `test -f 'src/ast/XQElementConstructor.cpp' || echo '$(srcdir)/'`src/ast/XQElementConstructor.cpp + +XQAttributeConstructor.lo: src/ast/XQAttributeConstructor.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQAttributeConstructor.lo -MD -MP -MF "$(DEPDIR)/XQAttributeConstructor.Tpo" -c -o XQAttributeConstructor.lo `test -f 'src/ast/XQAttributeConstructor.cpp' || echo '$(srcdir)/'`src/ast/XQAttributeConstructor.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQAttributeConstructor.Tpo" "$(DEPDIR)/XQAttributeConstructor.Plo"; else rm -f "$(DEPDIR)/XQAttributeConstructor.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQAttributeConstructor.cpp' object='XQAttributeConstructor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQAttributeConstructor.lo `test -f 'src/ast/XQAttributeConstructor.cpp' || echo '$(srcdir)/'`src/ast/XQAttributeConstructor.cpp + +XQPIConstructor.lo: src/ast/XQPIConstructor.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQPIConstructor.lo -MD -MP -MF "$(DEPDIR)/XQPIConstructor.Tpo" -c -o XQPIConstructor.lo `test -f 'src/ast/XQPIConstructor.cpp' || echo '$(srcdir)/'`src/ast/XQPIConstructor.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQPIConstructor.Tpo" "$(DEPDIR)/XQPIConstructor.Plo"; else rm -f "$(DEPDIR)/XQPIConstructor.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQPIConstructor.cpp' object='XQPIConstructor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQPIConstructor.lo `test -f 'src/ast/XQPIConstructor.cpp' || echo '$(srcdir)/'`src/ast/XQPIConstructor.cpp + +XQCommentConstructor.lo: src/ast/XQCommentConstructor.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQCommentConstructor.lo -MD -MP -MF "$(DEPDIR)/XQCommentConstructor.Tpo" -c -o XQCommentConstructor.lo `test -f 'src/ast/XQCommentConstructor.cpp' || echo '$(srcdir)/'`src/ast/XQCommentConstructor.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQCommentConstructor.Tpo" "$(DEPDIR)/XQCommentConstructor.Plo"; else rm -f "$(DEPDIR)/XQCommentConstructor.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQCommentConstructor.cpp' object='XQCommentConstructor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQCommentConstructor.lo `test -f 'src/ast/XQCommentConstructor.cpp' || echo '$(srcdir)/'`src/ast/XQCommentConstructor.cpp + +XQTextConstructor.lo: src/ast/XQTextConstructor.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQTextConstructor.lo -MD -MP -MF "$(DEPDIR)/XQTextConstructor.Tpo" -c -o XQTextConstructor.lo `test -f 'src/ast/XQTextConstructor.cpp' || echo '$(srcdir)/'`src/ast/XQTextConstructor.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQTextConstructor.Tpo" "$(DEPDIR)/XQTextConstructor.Plo"; else rm -f "$(DEPDIR)/XQTextConstructor.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQTextConstructor.cpp' object='XQTextConstructor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQTextConstructor.lo `test -f 'src/ast/XQTextConstructor.cpp' || echo '$(srcdir)/'`src/ast/XQTextConstructor.cpp + +XQFLWOR.lo: src/ast/XQFLWOR.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQFLWOR.lo -MD -MP -MF "$(DEPDIR)/XQFLWOR.Tpo" -c -o XQFLWOR.lo `test -f 'src/ast/XQFLWOR.cpp' || echo '$(srcdir)/'`src/ast/XQFLWOR.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQFLWOR.Tpo" "$(DEPDIR)/XQFLWOR.Plo"; else rm -f "$(DEPDIR)/XQFLWOR.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQFLWOR.cpp' object='XQFLWOR.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQFLWOR.lo `test -f 'src/ast/XQFLWOR.cpp' || echo '$(srcdir)/'`src/ast/XQFLWOR.cpp + +XQFunctionCall.lo: src/ast/XQFunctionCall.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQFunctionCall.lo -MD -MP -MF "$(DEPDIR)/XQFunctionCall.Tpo" -c -o XQFunctionCall.lo `test -f 'src/ast/XQFunctionCall.cpp' || echo '$(srcdir)/'`src/ast/XQFunctionCall.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQFunctionCall.Tpo" "$(DEPDIR)/XQFunctionCall.Plo"; else rm -f "$(DEPDIR)/XQFunctionCall.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQFunctionCall.cpp' object='XQFunctionCall.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQFunctionCall.lo `test -f 'src/ast/XQFunctionCall.cpp' || echo '$(srcdir)/'`src/ast/XQFunctionCall.cpp + +XQGlobalVariable.lo: src/ast/XQGlobalVariable.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQGlobalVariable.lo -MD -MP -MF "$(DEPDIR)/XQGlobalVariable.Tpo" -c -o XQGlobalVariable.lo `test -f 'src/ast/XQGlobalVariable.cpp' || echo '$(srcdir)/'`src/ast/XQGlobalVariable.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQGlobalVariable.Tpo" "$(DEPDIR)/XQGlobalVariable.Plo"; else rm -f "$(DEPDIR)/XQGlobalVariable.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQGlobalVariable.cpp' object='XQGlobalVariable.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQGlobalVariable.lo `test -f 'src/ast/XQGlobalVariable.cpp' || echo '$(srcdir)/'`src/ast/XQGlobalVariable.cpp + +XQOrderingChange.lo: src/ast/XQOrderingChange.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQOrderingChange.lo -MD -MP -MF "$(DEPDIR)/XQOrderingChange.Tpo" -c -o XQOrderingChange.lo `test -f 'src/ast/XQOrderingChange.cpp' || echo '$(srcdir)/'`src/ast/XQOrderingChange.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQOrderingChange.Tpo" "$(DEPDIR)/XQOrderingChange.Plo"; else rm -f "$(DEPDIR)/XQOrderingChange.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQOrderingChange.cpp' object='XQOrderingChange.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQOrderingChange.lo `test -f 'src/ast/XQOrderingChange.cpp' || echo '$(srcdir)/'`src/ast/XQOrderingChange.cpp + +XQQuantified.lo: src/ast/XQQuantified.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQQuantified.lo -MD -MP -MF "$(DEPDIR)/XQQuantified.Tpo" -c -o XQQuantified.lo `test -f 'src/ast/XQQuantified.cpp' || echo '$(srcdir)/'`src/ast/XQQuantified.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQQuantified.Tpo" "$(DEPDIR)/XQQuantified.Plo"; else rm -f "$(DEPDIR)/XQQuantified.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQQuantified.cpp' object='XQQuantified.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQQuantified.lo `test -f 'src/ast/XQQuantified.cpp' || echo '$(srcdir)/'`src/ast/XQQuantified.cpp + +XQValidate.lo: src/ast/XQValidate.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQValidate.lo -MD -MP -MF "$(DEPDIR)/XQValidate.Tpo" -c -o XQValidate.lo `test -f 'src/ast/XQValidate.cpp' || echo '$(srcdir)/'`src/ast/XQValidate.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQValidate.Tpo" "$(DEPDIR)/XQValidate.Plo"; else rm -f "$(DEPDIR)/XQValidate.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQValidate.cpp' object='XQValidate.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQValidate.lo `test -f 'src/ast/XQValidate.cpp' || echo '$(srcdir)/'`src/ast/XQValidate.cpp + +XQTypeswitch.lo: src/ast/XQTypeswitch.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQTypeswitch.lo -MD -MP -MF "$(DEPDIR)/XQTypeswitch.Tpo" -c -o XQTypeswitch.lo `test -f 'src/ast/XQTypeswitch.cpp' || echo '$(srcdir)/'`src/ast/XQTypeswitch.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQTypeswitch.Tpo" "$(DEPDIR)/XQTypeswitch.Plo"; else rm -f "$(DEPDIR)/XQTypeswitch.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQTypeswitch.cpp' object='XQTypeswitch.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQTypeswitch.lo `test -f 'src/ast/XQTypeswitch.cpp' || echo '$(srcdir)/'`src/ast/XQTypeswitch.cpp + +XQVariableBinding.lo: src/ast/XQVariableBinding.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQVariableBinding.lo -MD -MP -MF "$(DEPDIR)/XQVariableBinding.Tpo" -c -o XQVariableBinding.lo `test -f 'src/ast/XQVariableBinding.cpp' || echo '$(srcdir)/'`src/ast/XQVariableBinding.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQVariableBinding.Tpo" "$(DEPDIR)/XQVariableBinding.Plo"; else rm -f "$(DEPDIR)/XQVariableBinding.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQVariableBinding.cpp' object='XQVariableBinding.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQVariableBinding.lo `test -f 'src/ast/XQVariableBinding.cpp' || echo '$(srcdir)/'`src/ast/XQVariableBinding.cpp + +XPath1Compat.lo: src/ast/XPath1Compat.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XPath1Compat.lo -MD -MP -MF "$(DEPDIR)/XPath1Compat.Tpo" -c -o XPath1Compat.lo `test -f 'src/ast/XPath1Compat.cpp' || echo '$(srcdir)/'`src/ast/XPath1Compat.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XPath1Compat.Tpo" "$(DEPDIR)/XPath1Compat.Plo"; else rm -f "$(DEPDIR)/XPath1Compat.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XPath1Compat.cpp' object='XPath1Compat.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XPath1Compat.lo `test -f 'src/ast/XPath1Compat.cpp' || echo '$(srcdir)/'`src/ast/XPath1Compat.cpp + +ConvertFunctionArg.lo: src/ast/ConvertFunctionArg.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ConvertFunctionArg.lo -MD -MP -MF "$(DEPDIR)/ConvertFunctionArg.Tpo" -c -o ConvertFunctionArg.lo `test -f 'src/ast/ConvertFunctionArg.cpp' || echo '$(srcdir)/'`src/ast/ConvertFunctionArg.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ConvertFunctionArg.Tpo" "$(DEPDIR)/ConvertFunctionArg.Plo"; else rm -f "$(DEPDIR)/ConvertFunctionArg.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/ConvertFunctionArg.cpp' object='ConvertFunctionArg.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ConvertFunctionArg.lo `test -f 'src/ast/ConvertFunctionArg.cpp' || echo '$(srcdir)/'`src/ast/ConvertFunctionArg.cpp + +XQDocumentOrder.lo: src/ast/XQDocumentOrder.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQDocumentOrder.lo -MD -MP -MF "$(DEPDIR)/XQDocumentOrder.Tpo" -c -o XQDocumentOrder.lo `test -f 'src/ast/XQDocumentOrder.cpp' || echo '$(srcdir)/'`src/ast/XQDocumentOrder.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQDocumentOrder.Tpo" "$(DEPDIR)/XQDocumentOrder.Plo"; else rm -f "$(DEPDIR)/XQDocumentOrder.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQDocumentOrder.cpp' object='XQDocumentOrder.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQDocumentOrder.lo `test -f 'src/ast/XQDocumentOrder.cpp' || echo '$(srcdir)/'`src/ast/XQDocumentOrder.cpp + +XQPredicate.lo: src/ast/XQPredicate.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQPredicate.lo -MD -MP -MF "$(DEPDIR)/XQPredicate.Tpo" -c -o XQPredicate.lo `test -f 'src/ast/XQPredicate.cpp' || echo '$(srcdir)/'`src/ast/XQPredicate.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQPredicate.Tpo" "$(DEPDIR)/XQPredicate.Plo"; else rm -f "$(DEPDIR)/XQPredicate.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/ast/XQPredicate.cpp' object='XQPredicate.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQPredicate.lo `test -f 'src/ast/XQPredicate.cpp' || echo '$(srcdir)/'`src/ast/XQPredicate.cpp + +FTContains.lo: src/fulltext/FTContains.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FTContains.lo -MD -MP -MF "$(DEPDIR)/FTContains.Tpo" -c -o FTContains.lo `test -f 'src/fulltext/FTContains.cpp' || echo '$(srcdir)/'`src/fulltext/FTContains.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FTContains.Tpo" "$(DEPDIR)/FTContains.Plo"; else rm -f "$(DEPDIR)/FTContains.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/fulltext/FTContains.cpp' object='FTContains.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FTContains.lo `test -f 'src/fulltext/FTContains.cpp' || echo '$(srcdir)/'`src/fulltext/FTContains.cpp + +FTWords.lo: src/fulltext/FTWords.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FTWords.lo -MD -MP -MF "$(DEPDIR)/FTWords.Tpo" -c -o FTWords.lo `test -f 'src/fulltext/FTWords.cpp' || echo '$(srcdir)/'`src/fulltext/FTWords.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FTWords.Tpo" "$(DEPDIR)/FTWords.Plo"; else rm -f "$(DEPDIR)/FTWords.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/fulltext/FTWords.cpp' object='FTWords.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FTWords.lo `test -f 'src/fulltext/FTWords.cpp' || echo '$(srcdir)/'`src/fulltext/FTWords.cpp + +FTOr.lo: src/fulltext/FTOr.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FTOr.lo -MD -MP -MF "$(DEPDIR)/FTOr.Tpo" -c -o FTOr.lo `test -f 'src/fulltext/FTOr.cpp' || echo '$(srcdir)/'`src/fulltext/FTOr.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FTOr.Tpo" "$(DEPDIR)/FTOr.Plo"; else rm -f "$(DEPDIR)/FTOr.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/fulltext/FTOr.cpp' object='FTOr.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FTOr.lo `test -f 'src/fulltext/FTOr.cpp' || echo '$(srcdir)/'`src/fulltext/FTOr.cpp + +FTAnd.lo: src/fulltext/FTAnd.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FTAnd.lo -MD -MP -MF "$(DEPDIR)/FTAnd.Tpo" -c -o FTAnd.lo `test -f 'src/fulltext/FTAnd.cpp' || echo '$(srcdir)/'`src/fulltext/FTAnd.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FTAnd.Tpo" "$(DEPDIR)/FTAnd.Plo"; else rm -f "$(DEPDIR)/FTAnd.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/fulltext/FTAnd.cpp' object='FTAnd.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FTAnd.lo `test -f 'src/fulltext/FTAnd.cpp' || echo '$(srcdir)/'`src/fulltext/FTAnd.cpp + +FTMildnot.lo: src/fulltext/FTMildnot.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FTMildnot.lo -MD -MP -MF "$(DEPDIR)/FTMildnot.Tpo" -c -o FTMildnot.lo `test -f 'src/fulltext/FTMildnot.cpp' || echo '$(srcdir)/'`src/fulltext/FTMildnot.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FTMildnot.Tpo" "$(DEPDIR)/FTMildnot.Plo"; else rm -f "$(DEPDIR)/FTMildnot.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/fulltext/FTMildnot.cpp' object='FTMildnot.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FTMildnot.lo `test -f 'src/fulltext/FTMildnot.cpp' || echo '$(srcdir)/'`src/fulltext/FTMildnot.cpp + +FTUnaryNot.lo: src/fulltext/FTUnaryNot.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FTUnaryNot.lo -MD -MP -MF "$(DEPDIR)/FTUnaryNot.Tpo" -c -o FTUnaryNot.lo `test -f 'src/fulltext/FTUnaryNot.cpp' || echo '$(srcdir)/'`src/fulltext/FTUnaryNot.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FTUnaryNot.Tpo" "$(DEPDIR)/FTUnaryNot.Plo"; else rm -f "$(DEPDIR)/FTUnaryNot.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/fulltext/FTUnaryNot.cpp' object='FTUnaryNot.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FTUnaryNot.lo `test -f 'src/fulltext/FTUnaryNot.cpp' || echo '$(srcdir)/'`src/fulltext/FTUnaryNot.cpp + +DefaultTokenizer.lo: src/fulltext/DefaultTokenizer.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DefaultTokenizer.lo -MD -MP -MF "$(DEPDIR)/DefaultTokenizer.Tpo" -c -o DefaultTokenizer.lo `test -f 'src/fulltext/DefaultTokenizer.cpp' || echo '$(srcdir)/'`src/fulltext/DefaultTokenizer.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/DefaultTokenizer.Tpo" "$(DEPDIR)/DefaultTokenizer.Plo"; else rm -f "$(DEPDIR)/DefaultTokenizer.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/fulltext/DefaultTokenizer.cpp' object='DefaultTokenizer.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DefaultTokenizer.lo `test -f 'src/fulltext/DefaultTokenizer.cpp' || echo '$(srcdir)/'`src/fulltext/DefaultTokenizer.cpp + +DefaultTokenStore.lo: src/fulltext/DefaultTokenStore.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DefaultTokenStore.lo -MD -MP -MF "$(DEPDIR)/DefaultTokenStore.Tpo" -c -o DefaultTokenStore.lo `test -f 'src/fulltext/DefaultTokenStore.cpp' || echo '$(srcdir)/'`src/fulltext/DefaultTokenStore.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/DefaultTokenStore.Tpo" "$(DEPDIR)/DefaultTokenStore.Plo"; else rm -f "$(DEPDIR)/DefaultTokenStore.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/fulltext/DefaultTokenStore.cpp' object='DefaultTokenStore.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DefaultTokenStore.lo `test -f 'src/fulltext/DefaultTokenStore.cpp' || echo '$(srcdir)/'`src/fulltext/DefaultTokenStore.cpp + +FTOrder.lo: src/fulltext/FTOrder.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FTOrder.lo -MD -MP -MF "$(DEPDIR)/FTOrder.Tpo" -c -o FTOrder.lo `test -f 'src/fulltext/FTOrder.cpp' || echo '$(srcdir)/'`src/fulltext/FTOrder.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FTOrder.Tpo" "$(DEPDIR)/FTOrder.Plo"; else rm -f "$(DEPDIR)/FTOrder.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/fulltext/FTOrder.cpp' object='FTOrder.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FTOrder.lo `test -f 'src/fulltext/FTOrder.cpp' || echo '$(srcdir)/'`src/fulltext/FTOrder.cpp + +FTDistance.lo: src/fulltext/FTDistance.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FTDistance.lo -MD -MP -MF "$(DEPDIR)/FTDistance.Tpo" -c -o FTDistance.lo `test -f 'src/fulltext/FTDistance.cpp' || echo '$(srcdir)/'`src/fulltext/FTDistance.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FTDistance.Tpo" "$(DEPDIR)/FTDistance.Plo"; else rm -f "$(DEPDIR)/FTDistance.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/fulltext/FTDistance.cpp' object='FTDistance.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FTDistance.lo `test -f 'src/fulltext/FTDistance.cpp' || echo '$(srcdir)/'`src/fulltext/FTDistance.cpp + +FTScope.lo: src/fulltext/FTScope.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FTScope.lo -MD -MP -MF "$(DEPDIR)/FTScope.Tpo" -c -o FTScope.lo `test -f 'src/fulltext/FTScope.cpp' || echo '$(srcdir)/'`src/fulltext/FTScope.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FTScope.Tpo" "$(DEPDIR)/FTScope.Plo"; else rm -f "$(DEPDIR)/FTScope.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/fulltext/FTScope.cpp' object='FTScope.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FTScope.lo `test -f 'src/fulltext/FTScope.cpp' || echo '$(srcdir)/'`src/fulltext/FTScope.cpp + +FTContent.lo: src/fulltext/FTContent.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FTContent.lo -MD -MP -MF "$(DEPDIR)/FTContent.Tpo" -c -o FTContent.lo `test -f 'src/fulltext/FTContent.cpp' || echo '$(srcdir)/'`src/fulltext/FTContent.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FTContent.Tpo" "$(DEPDIR)/FTContent.Plo"; else rm -f "$(DEPDIR)/FTContent.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/fulltext/FTContent.cpp' object='FTContent.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FTContent.lo `test -f 'src/fulltext/FTContent.cpp' || echo '$(srcdir)/'`src/fulltext/FTContent.cpp + +FTWindow.lo: src/fulltext/FTWindow.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FTWindow.lo -MD -MP -MF "$(DEPDIR)/FTWindow.Tpo" -c -o FTWindow.lo `test -f 'src/fulltext/FTWindow.cpp' || echo '$(srcdir)/'`src/fulltext/FTWindow.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FTWindow.Tpo" "$(DEPDIR)/FTWindow.Plo"; else rm -f "$(DEPDIR)/FTWindow.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/fulltext/FTWindow.cpp' object='FTWindow.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FTWindow.lo `test -f 'src/fulltext/FTWindow.cpp' || echo '$(srcdir)/'`src/fulltext/FTWindow.cpp + +XQillaBuilderImpl.lo: src/dom-api/impl/XQillaBuilderImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQillaBuilderImpl.lo -MD -MP -MF "$(DEPDIR)/XQillaBuilderImpl.Tpo" -c -o XQillaBuilderImpl.lo `test -f 'src/dom-api/impl/XQillaBuilderImpl.cpp' || echo '$(srcdir)/'`src/dom-api/impl/XQillaBuilderImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQillaBuilderImpl.Tpo" "$(DEPDIR)/XQillaBuilderImpl.Plo"; else rm -f "$(DEPDIR)/XQillaBuilderImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/dom-api/impl/XQillaBuilderImpl.cpp' object='XQillaBuilderImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQillaBuilderImpl.lo `test -f 'src/dom-api/impl/XQillaBuilderImpl.cpp' || echo '$(srcdir)/'`src/dom-api/impl/XQillaBuilderImpl.cpp + +XQillaDocumentImpl.lo: src/dom-api/impl/XQillaDocumentImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQillaDocumentImpl.lo -MD -MP -MF "$(DEPDIR)/XQillaDocumentImpl.Tpo" -c -o XQillaDocumentImpl.lo `test -f 'src/dom-api/impl/XQillaDocumentImpl.cpp' || echo '$(srcdir)/'`src/dom-api/impl/XQillaDocumentImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQillaDocumentImpl.Tpo" "$(DEPDIR)/XQillaDocumentImpl.Plo"; else rm -f "$(DEPDIR)/XQillaDocumentImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/dom-api/impl/XQillaDocumentImpl.cpp' object='XQillaDocumentImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQillaDocumentImpl.lo `test -f 'src/dom-api/impl/XQillaDocumentImpl.cpp' || echo '$(srcdir)/'`src/dom-api/impl/XQillaDocumentImpl.cpp + +XQillaExpressionImpl.lo: src/dom-api/impl/XQillaExpressionImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQillaExpressionImpl.lo -MD -MP -MF "$(DEPDIR)/XQillaExpressionImpl.Tpo" -c -o XQillaExpressionImpl.lo `test -f 'src/dom-api/impl/XQillaExpressionImpl.cpp' || echo '$(srcdir)/'`src/dom-api/impl/XQillaExpressionImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQillaExpressionImpl.Tpo" "$(DEPDIR)/XQillaExpressionImpl.Plo"; else rm -f "$(DEPDIR)/XQillaExpressionImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/dom-api/impl/XQillaExpressionImpl.cpp' object='XQillaExpressionImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQillaExpressionImpl.lo `test -f 'src/dom-api/impl/XQillaExpressionImpl.cpp' || echo '$(srcdir)/'`src/dom-api/impl/XQillaExpressionImpl.cpp + +XQillaNSResolverImpl.lo: src/dom-api/impl/XQillaNSResolverImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQillaNSResolverImpl.lo -MD -MP -MF "$(DEPDIR)/XQillaNSResolverImpl.Tpo" -c -o XQillaNSResolverImpl.lo `test -f 'src/dom-api/impl/XQillaNSResolverImpl.cpp' || echo '$(srcdir)/'`src/dom-api/impl/XQillaNSResolverImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQillaNSResolverImpl.Tpo" "$(DEPDIR)/XQillaNSResolverImpl.Plo"; else rm -f "$(DEPDIR)/XQillaNSResolverImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/dom-api/impl/XQillaNSResolverImpl.cpp' object='XQillaNSResolverImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQillaNSResolverImpl.lo `test -f 'src/dom-api/impl/XQillaNSResolverImpl.cpp' || echo '$(srcdir)/'`src/dom-api/impl/XQillaNSResolverImpl.cpp + +XQillaXMLGrammarPoolImpl.lo: src/dom-api/impl/XQillaXMLGrammarPoolImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQillaXMLGrammarPoolImpl.lo -MD -MP -MF "$(DEPDIR)/XQillaXMLGrammarPoolImpl.Tpo" -c -o XQillaXMLGrammarPoolImpl.lo `test -f 'src/dom-api/impl/XQillaXMLGrammarPoolImpl.cpp' || echo '$(srcdir)/'`src/dom-api/impl/XQillaXMLGrammarPoolImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQillaXMLGrammarPoolImpl.Tpo" "$(DEPDIR)/XQillaXMLGrammarPoolImpl.Plo"; else rm -f "$(DEPDIR)/XQillaXMLGrammarPoolImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/dom-api/impl/XQillaXMLGrammarPoolImpl.cpp' object='XQillaXMLGrammarPoolImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQillaXMLGrammarPoolImpl.lo `test -f 'src/dom-api/impl/XQillaXMLGrammarPoolImpl.cpp' || echo '$(srcdir)/'`src/dom-api/impl/XQillaXMLGrammarPoolImpl.cpp + +XPathDocumentImpl.lo: src/dom-api/impl/XPathDocumentImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XPathDocumentImpl.lo -MD -MP -MF "$(DEPDIR)/XPathDocumentImpl.Tpo" -c -o XPathDocumentImpl.lo `test -f 'src/dom-api/impl/XPathDocumentImpl.cpp' || echo '$(srcdir)/'`src/dom-api/impl/XPathDocumentImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XPathDocumentImpl.Tpo" "$(DEPDIR)/XPathDocumentImpl.Plo"; else rm -f "$(DEPDIR)/XPathDocumentImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/dom-api/impl/XPathDocumentImpl.cpp' object='XPathDocumentImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XPathDocumentImpl.lo `test -f 'src/dom-api/impl/XPathDocumentImpl.cpp' || echo '$(srcdir)/'`src/dom-api/impl/XPathDocumentImpl.cpp + +XPathNamespaceImpl.lo: src/dom-api/impl/XPathNamespaceImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XPathNamespaceImpl.lo -MD -MP -MF "$(DEPDIR)/XPathNamespaceImpl.Tpo" -c -o XPathNamespaceImpl.lo `test -f 'src/dom-api/impl/XPathNamespaceImpl.cpp' || echo '$(srcdir)/'`src/dom-api/impl/XPathNamespaceImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XPathNamespaceImpl.Tpo" "$(DEPDIR)/XPathNamespaceImpl.Plo"; else rm -f "$(DEPDIR)/XPathNamespaceImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/dom-api/impl/XPathNamespaceImpl.cpp' object='XPathNamespaceImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XPathNamespaceImpl.lo `test -f 'src/dom-api/impl/XPathNamespaceImpl.cpp' || echo '$(srcdir)/'`src/dom-api/impl/XPathNamespaceImpl.cpp + +XPath2ResultImpl.lo: src/dom-api/impl/XPath2ResultImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XPath2ResultImpl.lo -MD -MP -MF "$(DEPDIR)/XPath2ResultImpl.Tpo" -c -o XPath2ResultImpl.lo `test -f 'src/dom-api/impl/XPath2ResultImpl.cpp' || echo '$(srcdir)/'`src/dom-api/impl/XPath2ResultImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XPath2ResultImpl.Tpo" "$(DEPDIR)/XPath2ResultImpl.Plo"; else rm -f "$(DEPDIR)/XPath2ResultImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/dom-api/impl/XPath2ResultImpl.cpp' object='XPath2ResultImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XPath2ResultImpl.lo `test -f 'src/dom-api/impl/XPath2ResultImpl.cpp' || echo '$(srcdir)/'`src/dom-api/impl/XPath2ResultImpl.cpp + +XQillaImplementation.lo: src/dom-api/XQillaImplementation.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQillaImplementation.lo -MD -MP -MF "$(DEPDIR)/XQillaImplementation.Tpo" -c -o XQillaImplementation.lo `test -f 'src/dom-api/XQillaImplementation.cpp' || echo '$(srcdir)/'`src/dom-api/XQillaImplementation.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQillaImplementation.Tpo" "$(DEPDIR)/XQillaImplementation.Plo"; else rm -f "$(DEPDIR)/XQillaImplementation.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/dom-api/XQillaImplementation.cpp' object='XQillaImplementation.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQillaImplementation.lo `test -f 'src/dom-api/XQillaImplementation.cpp' || echo '$(srcdir)/'`src/dom-api/XQillaImplementation.cpp + +XPath2NodeSerializer.lo: src/dom-api/XPath2NodeSerializer.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XPath2NodeSerializer.lo -MD -MP -MF "$(DEPDIR)/XPath2NodeSerializer.Tpo" -c -o XPath2NodeSerializer.lo `test -f 'src/dom-api/XPath2NodeSerializer.cpp' || echo '$(srcdir)/'`src/dom-api/XPath2NodeSerializer.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XPath2NodeSerializer.Tpo" "$(DEPDIR)/XPath2NodeSerializer.Plo"; else rm -f "$(DEPDIR)/XPath2NodeSerializer.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/dom-api/XPath2NodeSerializer.cpp' object='XPath2NodeSerializer.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XPath2NodeSerializer.lo `test -f 'src/dom-api/XPath2NodeSerializer.cpp' || echo '$(srcdir)/'`src/dom-api/XPath2NodeSerializer.cpp + +XQilla.lo: src/simple-api/XQilla.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQilla.lo -MD -MP -MF "$(DEPDIR)/XQilla.Tpo" -c -o XQilla.lo `test -f 'src/simple-api/XQilla.cpp' || echo '$(srcdir)/'`src/simple-api/XQilla.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQilla.Tpo" "$(DEPDIR)/XQilla.Plo"; else rm -f "$(DEPDIR)/XQilla.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/simple-api/XQilla.cpp' object='XQilla.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQilla.lo `test -f 'src/simple-api/XQilla.cpp' || echo '$(srcdir)/'`src/simple-api/XQilla.cpp + +XQQuery.lo: src/simple-api/XQQuery.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQQuery.lo -MD -MP -MF "$(DEPDIR)/XQQuery.Tpo" -c -o XQQuery.lo `test -f 'src/simple-api/XQQuery.cpp' || echo '$(srcdir)/'`src/simple-api/XQQuery.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQQuery.Tpo" "$(DEPDIR)/XQQuery.Plo"; else rm -f "$(DEPDIR)/XQQuery.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/simple-api/XQQuery.cpp' object='XQQuery.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQQuery.lo `test -f 'src/simple-api/XQQuery.cpp' || echo '$(srcdir)/'`src/simple-api/XQQuery.cpp + +UTF8Str.lo: src/utils/UTF8Str.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UTF8Str.lo -MD -MP -MF "$(DEPDIR)/UTF8Str.Tpo" -c -o UTF8Str.lo `test -f 'src/utils/UTF8Str.cpp' || echo '$(srcdir)/'`src/utils/UTF8Str.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/UTF8Str.Tpo" "$(DEPDIR)/UTF8Str.Plo"; else rm -f "$(DEPDIR)/UTF8Str.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/utils/UTF8Str.cpp' object='UTF8Str.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UTF8Str.lo `test -f 'src/utils/UTF8Str.cpp' || echo '$(srcdir)/'`src/utils/UTF8Str.cpp + +XMLChCompare.lo: src/utils/XMLChCompare.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XMLChCompare.lo -MD -MP -MF "$(DEPDIR)/XMLChCompare.Tpo" -c -o XMLChCompare.lo `test -f 'src/utils/XMLChCompare.cpp' || echo '$(srcdir)/'`src/utils/XMLChCompare.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XMLChCompare.Tpo" "$(DEPDIR)/XMLChCompare.Plo"; else rm -f "$(DEPDIR)/XMLChCompare.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/utils/XMLChCompare.cpp' object='XMLChCompare.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XMLChCompare.lo `test -f 'src/utils/XMLChCompare.cpp' || echo '$(srcdir)/'`src/utils/XMLChCompare.cpp + +XStr.lo: src/utils/XStr.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XStr.lo -MD -MP -MF "$(DEPDIR)/XStr.Tpo" -c -o XStr.lo `test -f 'src/utils/XStr.cpp' || echo '$(srcdir)/'`src/utils/XStr.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XStr.Tpo" "$(DEPDIR)/XStr.Plo"; else rm -f "$(DEPDIR)/XStr.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/utils/XStr.cpp' object='XStr.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XStr.lo `test -f 'src/utils/XStr.cpp' || echo '$(srcdir)/'`src/utils/XStr.cpp + +ContextUtils.lo: src/utils/ContextUtils.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ContextUtils.lo -MD -MP -MF "$(DEPDIR)/ContextUtils.Tpo" -c -o ContextUtils.lo `test -f 'src/utils/ContextUtils.cpp' || echo '$(srcdir)/'`src/utils/ContextUtils.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ContextUtils.Tpo" "$(DEPDIR)/ContextUtils.Plo"; else rm -f "$(DEPDIR)/ContextUtils.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/utils/ContextUtils.cpp' object='ContextUtils.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ContextUtils.lo `test -f 'src/utils/ContextUtils.cpp' || echo '$(srcdir)/'`src/utils/ContextUtils.cpp + +DateUtils.lo: src/utils/DateUtils.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DateUtils.lo -MD -MP -MF "$(DEPDIR)/DateUtils.Tpo" -c -o DateUtils.lo `test -f 'src/utils/DateUtils.cpp' || echo '$(srcdir)/'`src/utils/DateUtils.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/DateUtils.Tpo" "$(DEPDIR)/DateUtils.Plo"; else rm -f "$(DEPDIR)/DateUtils.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/utils/DateUtils.cpp' object='DateUtils.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DateUtils.lo `test -f 'src/utils/DateUtils.cpp' || echo '$(srcdir)/'`src/utils/DateUtils.cpp + +NumUtils.lo: src/utils/NumUtils.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT NumUtils.lo -MD -MP -MF "$(DEPDIR)/NumUtils.Tpo" -c -o NumUtils.lo `test -f 'src/utils/NumUtils.cpp' || echo '$(srcdir)/'`src/utils/NumUtils.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/NumUtils.Tpo" "$(DEPDIR)/NumUtils.Plo"; else rm -f "$(DEPDIR)/NumUtils.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/utils/NumUtils.cpp' object='NumUtils.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o NumUtils.lo `test -f 'src/utils/NumUtils.cpp' || echo '$(srcdir)/'`src/utils/NumUtils.cpp + +XQillaPlatformUtils.lo: src/utils/XQillaPlatformUtils.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQillaPlatformUtils.lo -MD -MP -MF "$(DEPDIR)/XQillaPlatformUtils.Tpo" -c -o XQillaPlatformUtils.lo `test -f 'src/utils/XQillaPlatformUtils.cpp' || echo '$(srcdir)/'`src/utils/XQillaPlatformUtils.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQillaPlatformUtils.Tpo" "$(DEPDIR)/XQillaPlatformUtils.Plo"; else rm -f "$(DEPDIR)/XQillaPlatformUtils.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/utils/XQillaPlatformUtils.cpp' object='XQillaPlatformUtils.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQillaPlatformUtils.lo `test -f 'src/utils/XQillaPlatformUtils.cpp' || echo '$(srcdir)/'`src/utils/XQillaPlatformUtils.cpp + +PrintAST.lo: src/utils/PrintAST.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PrintAST.lo -MD -MP -MF "$(DEPDIR)/PrintAST.Tpo" -c -o PrintAST.lo `test -f 'src/utils/PrintAST.cpp' || echo '$(srcdir)/'`src/utils/PrintAST.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/PrintAST.Tpo" "$(DEPDIR)/PrintAST.Plo"; else rm -f "$(DEPDIR)/PrintAST.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/utils/PrintAST.cpp' object='PrintAST.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PrintAST.lo `test -f 'src/utils/PrintAST.cpp' || echo '$(srcdir)/'`src/utils/PrintAST.cpp + +XPath2NSUtils.lo: src/utils/XPath2NSUtils.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XPath2NSUtils.lo -MD -MP -MF "$(DEPDIR)/XPath2NSUtils.Tpo" -c -o XPath2NSUtils.lo `test -f 'src/utils/XPath2NSUtils.cpp' || echo '$(srcdir)/'`src/utils/XPath2NSUtils.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XPath2NSUtils.Tpo" "$(DEPDIR)/XPath2NSUtils.Plo"; else rm -f "$(DEPDIR)/XPath2NSUtils.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/utils/XPath2NSUtils.cpp' object='XPath2NSUtils.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XPath2NSUtils.lo `test -f 'src/utils/XPath2NSUtils.cpp' || echo '$(srcdir)/'`src/utils/XPath2NSUtils.cpp + +XPath2Utils.lo: src/utils/XPath2Utils.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XPath2Utils.lo -MD -MP -MF "$(DEPDIR)/XPath2Utils.Tpo" -c -o XPath2Utils.lo `test -f 'src/utils/XPath2Utils.cpp' || echo '$(srcdir)/'`src/utils/XPath2Utils.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XPath2Utils.Tpo" "$(DEPDIR)/XPath2Utils.Plo"; else rm -f "$(DEPDIR)/XPath2Utils.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/utils/XPath2Utils.cpp' object='XPath2Utils.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XPath2Utils.lo `test -f 'src/utils/XPath2Utils.cpp' || echo '$(srcdir)/'`src/utils/XPath2Utils.cpp + +UCANormalizer1.lo: src/utils/UCANormalizer1.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UCANormalizer1.lo -MD -MP -MF "$(DEPDIR)/UCANormalizer1.Tpo" -c -o UCANormalizer1.lo `test -f 'src/utils/UCANormalizer1.cpp' || echo '$(srcdir)/'`src/utils/UCANormalizer1.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/UCANormalizer1.Tpo" "$(DEPDIR)/UCANormalizer1.Plo"; else rm -f "$(DEPDIR)/UCANormalizer1.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/utils/UCANormalizer1.cpp' object='UCANormalizer1.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UCANormalizer1.lo `test -f 'src/utils/UCANormalizer1.cpp' || echo '$(srcdir)/'`src/utils/UCANormalizer1.cpp + +UCANormalizer2.lo: src/utils/UCANormalizer2.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UCANormalizer2.lo -MD -MP -MF "$(DEPDIR)/UCANormalizer2.Tpo" -c -o UCANormalizer2.lo `test -f 'src/utils/UCANormalizer2.cpp' || echo '$(srcdir)/'`src/utils/UCANormalizer2.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/UCANormalizer2.Tpo" "$(DEPDIR)/UCANormalizer2.Plo"; else rm -f "$(DEPDIR)/UCANormalizer2.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/utils/UCANormalizer2.cpp' object='UCANormalizer2.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UCANormalizer2.lo `test -f 'src/utils/UCANormalizer2.cpp' || echo '$(srcdir)/'`src/utils/UCANormalizer2.cpp + +UCANormalizer3.lo: src/utils/UCANormalizer3.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UCANormalizer3.lo -MD -MP -MF "$(DEPDIR)/UCANormalizer3.Tpo" -c -o UCANormalizer3.lo `test -f 'src/utils/UCANormalizer3.cpp' || echo '$(srcdir)/'`src/utils/UCANormalizer3.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/UCANormalizer3.Tpo" "$(DEPDIR)/UCANormalizer3.Plo"; else rm -f "$(DEPDIR)/UCANormalizer3.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/utils/UCANormalizer3.cpp' object='UCANormalizer3.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UCANormalizer3.lo `test -f 'src/utils/UCANormalizer3.cpp' || echo '$(srcdir)/'`src/utils/UCANormalizer3.cpp + +UCANormalizer4.lo: src/utils/UCANormalizer4.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UCANormalizer4.lo -MD -MP -MF "$(DEPDIR)/UCANormalizer4.Tpo" -c -o UCANormalizer4.lo `test -f 'src/utils/UCANormalizer4.cpp' || echo '$(srcdir)/'`src/utils/UCANormalizer4.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/UCANormalizer4.Tpo" "$(DEPDIR)/UCANormalizer4.Plo"; else rm -f "$(DEPDIR)/UCANormalizer4.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/utils/UCANormalizer4.cpp' object='UCANormalizer4.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UCANormalizer4.lo `test -f 'src/utils/UCANormalizer4.cpp' || echo '$(srcdir)/'`src/utils/UCANormalizer4.cpp + +UCANormalizer.lo: src/utils/UCANormalizer.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UCANormalizer.lo -MD -MP -MF "$(DEPDIR)/UCANormalizer.Tpo" -c -o UCANormalizer.lo `test -f 'src/utils/UCANormalizer.cpp' || echo '$(srcdir)/'`src/utils/UCANormalizer.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/UCANormalizer.Tpo" "$(DEPDIR)/UCANormalizer.Plo"; else rm -f "$(DEPDIR)/UCANormalizer.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/utils/UCANormalizer.cpp' object='UCANormalizer.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UCANormalizer.lo `test -f 'src/utils/UCANormalizer.cpp' || echo '$(srcdir)/'`src/utils/UCANormalizer.cpp + +XQillaException.lo: src/exceptions/XQillaException.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQillaException.lo -MD -MP -MF "$(DEPDIR)/XQillaException.Tpo" -c -o XQillaException.lo `test -f 'src/exceptions/XQillaException.cpp' || echo '$(srcdir)/'`src/exceptions/XQillaException.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQillaException.Tpo" "$(DEPDIR)/XQillaException.Plo"; else rm -f "$(DEPDIR)/XQillaException.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/exceptions/XQillaException.cpp' object='XQillaException.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQillaException.lo `test -f 'src/exceptions/XQillaException.cpp' || echo '$(srcdir)/'`src/exceptions/XQillaException.cpp + +XQException.lo: src/exceptions/XQException.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQException.lo -MD -MP -MF "$(DEPDIR)/XQException.Tpo" -c -o XQException.lo `test -f 'src/exceptions/XQException.cpp' || echo '$(srcdir)/'`src/exceptions/XQException.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQException.Tpo" "$(DEPDIR)/XQException.Plo"; else rm -f "$(DEPDIR)/XQException.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/exceptions/XQException.cpp' object='XQException.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQException.lo `test -f 'src/exceptions/XQException.cpp' || echo '$(srcdir)/'`src/exceptions/XQException.cpp + +FuncFactory.lo: src/functions/FuncFactory.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FuncFactory.lo -MD -MP -MF "$(DEPDIR)/FuncFactory.Tpo" -c -o FuncFactory.lo `test -f 'src/functions/FuncFactory.cpp' || echo '$(srcdir)/'`src/functions/FuncFactory.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FuncFactory.Tpo" "$(DEPDIR)/FuncFactory.Plo"; else rm -f "$(DEPDIR)/FuncFactory.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FuncFactory.cpp' object='FuncFactory.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FuncFactory.lo `test -f 'src/functions/FuncFactory.cpp' || echo '$(srcdir)/'`src/functions/FuncFactory.cpp + +FunctionLookupImpl.lo: src/functions/FunctionLookupImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionLookupImpl.lo -MD -MP -MF "$(DEPDIR)/FunctionLookupImpl.Tpo" -c -o FunctionLookupImpl.lo `test -f 'src/functions/FunctionLookupImpl.cpp' || echo '$(srcdir)/'`src/functions/FunctionLookupImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionLookupImpl.Tpo" "$(DEPDIR)/FunctionLookupImpl.Plo"; else rm -f "$(DEPDIR)/FunctionLookupImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionLookupImpl.cpp' object='FunctionLookupImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionLookupImpl.lo `test -f 'src/functions/FunctionLookupImpl.cpp' || echo '$(srcdir)/'`src/functions/FunctionLookupImpl.cpp + +FunctionAbs.lo: src/functions/FunctionAbs.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionAbs.lo -MD -MP -MF "$(DEPDIR)/FunctionAbs.Tpo" -c -o FunctionAbs.lo `test -f 'src/functions/FunctionAbs.cpp' || echo '$(srcdir)/'`src/functions/FunctionAbs.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionAbs.Tpo" "$(DEPDIR)/FunctionAbs.Plo"; else rm -f "$(DEPDIR)/FunctionAbs.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionAbs.cpp' object='FunctionAbs.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionAbs.lo `test -f 'src/functions/FunctionAbs.cpp' || echo '$(srcdir)/'`src/functions/FunctionAbs.cpp + +FunctionAvg.lo: src/functions/FunctionAvg.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionAvg.lo -MD -MP -MF "$(DEPDIR)/FunctionAvg.Tpo" -c -o FunctionAvg.lo `test -f 'src/functions/FunctionAvg.cpp' || echo '$(srcdir)/'`src/functions/FunctionAvg.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionAvg.Tpo" "$(DEPDIR)/FunctionAvg.Plo"; else rm -f "$(DEPDIR)/FunctionAvg.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionAvg.cpp' object='FunctionAvg.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionAvg.lo `test -f 'src/functions/FunctionAvg.cpp' || echo '$(srcdir)/'`src/functions/FunctionAvg.cpp + +FunctionBaseURI.lo: src/functions/FunctionBaseURI.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionBaseURI.lo -MD -MP -MF "$(DEPDIR)/FunctionBaseURI.Tpo" -c -o FunctionBaseURI.lo `test -f 'src/functions/FunctionBaseURI.cpp' || echo '$(srcdir)/'`src/functions/FunctionBaseURI.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionBaseURI.Tpo" "$(DEPDIR)/FunctionBaseURI.Plo"; else rm -f "$(DEPDIR)/FunctionBaseURI.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionBaseURI.cpp' object='FunctionBaseURI.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionBaseURI.lo `test -f 'src/functions/FunctionBaseURI.cpp' || echo '$(srcdir)/'`src/functions/FunctionBaseURI.cpp + +FunctionBoolean.lo: src/functions/FunctionBoolean.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionBoolean.lo -MD -MP -MF "$(DEPDIR)/FunctionBoolean.Tpo" -c -o FunctionBoolean.lo `test -f 'src/functions/FunctionBoolean.cpp' || echo '$(srcdir)/'`src/functions/FunctionBoolean.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionBoolean.Tpo" "$(DEPDIR)/FunctionBoolean.Plo"; else rm -f "$(DEPDIR)/FunctionBoolean.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionBoolean.cpp' object='FunctionBoolean.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionBoolean.lo `test -f 'src/functions/FunctionBoolean.cpp' || echo '$(srcdir)/'`src/functions/FunctionBoolean.cpp + +FunctionCeiling.lo: src/functions/FunctionCeiling.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionCeiling.lo -MD -MP -MF "$(DEPDIR)/FunctionCeiling.Tpo" -c -o FunctionCeiling.lo `test -f 'src/functions/FunctionCeiling.cpp' || echo '$(srcdir)/'`src/functions/FunctionCeiling.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionCeiling.Tpo" "$(DEPDIR)/FunctionCeiling.Plo"; else rm -f "$(DEPDIR)/FunctionCeiling.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionCeiling.cpp' object='FunctionCeiling.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionCeiling.lo `test -f 'src/functions/FunctionCeiling.cpp' || echo '$(srcdir)/'`src/functions/FunctionCeiling.cpp + +FunctionCodepointEqual.lo: src/functions/FunctionCodepointEqual.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionCodepointEqual.lo -MD -MP -MF "$(DEPDIR)/FunctionCodepointEqual.Tpo" -c -o FunctionCodepointEqual.lo `test -f 'src/functions/FunctionCodepointEqual.cpp' || echo '$(srcdir)/'`src/functions/FunctionCodepointEqual.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionCodepointEqual.Tpo" "$(DEPDIR)/FunctionCodepointEqual.Plo"; else rm -f "$(DEPDIR)/FunctionCodepointEqual.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionCodepointEqual.cpp' object='FunctionCodepointEqual.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionCodepointEqual.lo `test -f 'src/functions/FunctionCodepointEqual.cpp' || echo '$(srcdir)/'`src/functions/FunctionCodepointEqual.cpp + +FunctionCodepointsToString.lo: src/functions/FunctionCodepointsToString.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionCodepointsToString.lo -MD -MP -MF "$(DEPDIR)/FunctionCodepointsToString.Tpo" -c -o FunctionCodepointsToString.lo `test -f 'src/functions/FunctionCodepointsToString.cpp' || echo '$(srcdir)/'`src/functions/FunctionCodepointsToString.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionCodepointsToString.Tpo" "$(DEPDIR)/FunctionCodepointsToString.Plo"; else rm -f "$(DEPDIR)/FunctionCodepointsToString.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionCodepointsToString.cpp' object='FunctionCodepointsToString.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionCodepointsToString.lo `test -f 'src/functions/FunctionCodepointsToString.cpp' || echo '$(srcdir)/'`src/functions/FunctionCodepointsToString.cpp + +FunctionCollection.lo: src/functions/FunctionCollection.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionCollection.lo -MD -MP -MF "$(DEPDIR)/FunctionCollection.Tpo" -c -o FunctionCollection.lo `test -f 'src/functions/FunctionCollection.cpp' || echo '$(srcdir)/'`src/functions/FunctionCollection.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionCollection.Tpo" "$(DEPDIR)/FunctionCollection.Plo"; else rm -f "$(DEPDIR)/FunctionCollection.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionCollection.cpp' object='FunctionCollection.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionCollection.lo `test -f 'src/functions/FunctionCollection.cpp' || echo '$(srcdir)/'`src/functions/FunctionCollection.cpp + +FunctionCompare.lo: src/functions/FunctionCompare.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionCompare.lo -MD -MP -MF "$(DEPDIR)/FunctionCompare.Tpo" -c -o FunctionCompare.lo `test -f 'src/functions/FunctionCompare.cpp' || echo '$(srcdir)/'`src/functions/FunctionCompare.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionCompare.Tpo" "$(DEPDIR)/FunctionCompare.Plo"; else rm -f "$(DEPDIR)/FunctionCompare.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionCompare.cpp' object='FunctionCompare.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionCompare.lo `test -f 'src/functions/FunctionCompare.cpp' || echo '$(srcdir)/'`src/functions/FunctionCompare.cpp + +FunctionConcat.lo: src/functions/FunctionConcat.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionConcat.lo -MD -MP -MF "$(DEPDIR)/FunctionConcat.Tpo" -c -o FunctionConcat.lo `test -f 'src/functions/FunctionConcat.cpp' || echo '$(srcdir)/'`src/functions/FunctionConcat.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionConcat.Tpo" "$(DEPDIR)/FunctionConcat.Plo"; else rm -f "$(DEPDIR)/FunctionConcat.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionConcat.cpp' object='FunctionConcat.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionConcat.lo `test -f 'src/functions/FunctionConcat.cpp' || echo '$(srcdir)/'`src/functions/FunctionConcat.cpp + +FunctionConstructor.lo: src/functions/FunctionConstructor.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionConstructor.lo -MD -MP -MF "$(DEPDIR)/FunctionConstructor.Tpo" -c -o FunctionConstructor.lo `test -f 'src/functions/FunctionConstructor.cpp' || echo '$(srcdir)/'`src/functions/FunctionConstructor.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionConstructor.Tpo" "$(DEPDIR)/FunctionConstructor.Plo"; else rm -f "$(DEPDIR)/FunctionConstructor.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionConstructor.cpp' object='FunctionConstructor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionConstructor.lo `test -f 'src/functions/FunctionConstructor.cpp' || echo '$(srcdir)/'`src/functions/FunctionConstructor.cpp + +FunctionContains.lo: src/functions/FunctionContains.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionContains.lo -MD -MP -MF "$(DEPDIR)/FunctionContains.Tpo" -c -o FunctionContains.lo `test -f 'src/functions/FunctionContains.cpp' || echo '$(srcdir)/'`src/functions/FunctionContains.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionContains.Tpo" "$(DEPDIR)/FunctionContains.Plo"; else rm -f "$(DEPDIR)/FunctionContains.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionContains.cpp' object='FunctionContains.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionContains.lo `test -f 'src/functions/FunctionContains.cpp' || echo '$(srcdir)/'`src/functions/FunctionContains.cpp + +FunctionCount.lo: src/functions/FunctionCount.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionCount.lo -MD -MP -MF "$(DEPDIR)/FunctionCount.Tpo" -c -o FunctionCount.lo `test -f 'src/functions/FunctionCount.cpp' || echo '$(srcdir)/'`src/functions/FunctionCount.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionCount.Tpo" "$(DEPDIR)/FunctionCount.Plo"; else rm -f "$(DEPDIR)/FunctionCount.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionCount.cpp' object='FunctionCount.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionCount.lo `test -f 'src/functions/FunctionCount.cpp' || echo '$(srcdir)/'`src/functions/FunctionCount.cpp + +FunctionCurrentDate.lo: src/functions/FunctionCurrentDate.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionCurrentDate.lo -MD -MP -MF "$(DEPDIR)/FunctionCurrentDate.Tpo" -c -o FunctionCurrentDate.lo `test -f 'src/functions/FunctionCurrentDate.cpp' || echo '$(srcdir)/'`src/functions/FunctionCurrentDate.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionCurrentDate.Tpo" "$(DEPDIR)/FunctionCurrentDate.Plo"; else rm -f "$(DEPDIR)/FunctionCurrentDate.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionCurrentDate.cpp' object='FunctionCurrentDate.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionCurrentDate.lo `test -f 'src/functions/FunctionCurrentDate.cpp' || echo '$(srcdir)/'`src/functions/FunctionCurrentDate.cpp + +FunctionCurrentDateTime.lo: src/functions/FunctionCurrentDateTime.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionCurrentDateTime.lo -MD -MP -MF "$(DEPDIR)/FunctionCurrentDateTime.Tpo" -c -o FunctionCurrentDateTime.lo `test -f 'src/functions/FunctionCurrentDateTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionCurrentDateTime.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionCurrentDateTime.Tpo" "$(DEPDIR)/FunctionCurrentDateTime.Plo"; else rm -f "$(DEPDIR)/FunctionCurrentDateTime.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionCurrentDateTime.cpp' object='FunctionCurrentDateTime.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionCurrentDateTime.lo `test -f 'src/functions/FunctionCurrentDateTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionCurrentDateTime.cpp + +FunctionCurrentTime.lo: src/functions/FunctionCurrentTime.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionCurrentTime.lo -MD -MP -MF "$(DEPDIR)/FunctionCurrentTime.Tpo" -c -o FunctionCurrentTime.lo `test -f 'src/functions/FunctionCurrentTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionCurrentTime.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionCurrentTime.Tpo" "$(DEPDIR)/FunctionCurrentTime.Plo"; else rm -f "$(DEPDIR)/FunctionCurrentTime.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionCurrentTime.cpp' object='FunctionCurrentTime.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionCurrentTime.lo `test -f 'src/functions/FunctionCurrentTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionCurrentTime.cpp + +FunctionData.lo: src/functions/FunctionData.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionData.lo -MD -MP -MF "$(DEPDIR)/FunctionData.Tpo" -c -o FunctionData.lo `test -f 'src/functions/FunctionData.cpp' || echo '$(srcdir)/'`src/functions/FunctionData.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionData.Tpo" "$(DEPDIR)/FunctionData.Plo"; else rm -f "$(DEPDIR)/FunctionData.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionData.cpp' object='FunctionData.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionData.lo `test -f 'src/functions/FunctionData.cpp' || echo '$(srcdir)/'`src/functions/FunctionData.cpp + +FunctionDateTime.lo: src/functions/FunctionDateTime.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionDateTime.lo -MD -MP -MF "$(DEPDIR)/FunctionDateTime.Tpo" -c -o FunctionDateTime.lo `test -f 'src/functions/FunctionDateTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionDateTime.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionDateTime.Tpo" "$(DEPDIR)/FunctionDateTime.Plo"; else rm -f "$(DEPDIR)/FunctionDateTime.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionDateTime.cpp' object='FunctionDateTime.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionDateTime.lo `test -f 'src/functions/FunctionDateTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionDateTime.cpp + +FunctionDeepEqual.lo: src/functions/FunctionDeepEqual.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionDeepEqual.lo -MD -MP -MF "$(DEPDIR)/FunctionDeepEqual.Tpo" -c -o FunctionDeepEqual.lo `test -f 'src/functions/FunctionDeepEqual.cpp' || echo '$(srcdir)/'`src/functions/FunctionDeepEqual.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionDeepEqual.Tpo" "$(DEPDIR)/FunctionDeepEqual.Plo"; else rm -f "$(DEPDIR)/FunctionDeepEqual.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionDeepEqual.cpp' object='FunctionDeepEqual.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionDeepEqual.lo `test -f 'src/functions/FunctionDeepEqual.cpp' || echo '$(srcdir)/'`src/functions/FunctionDeepEqual.cpp + +FunctionDefaultCollation.lo: src/functions/FunctionDefaultCollation.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionDefaultCollation.lo -MD -MP -MF "$(DEPDIR)/FunctionDefaultCollation.Tpo" -c -o FunctionDefaultCollation.lo `test -f 'src/functions/FunctionDefaultCollation.cpp' || echo '$(srcdir)/'`src/functions/FunctionDefaultCollation.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionDefaultCollation.Tpo" "$(DEPDIR)/FunctionDefaultCollation.Plo"; else rm -f "$(DEPDIR)/FunctionDefaultCollation.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionDefaultCollation.cpp' object='FunctionDefaultCollation.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionDefaultCollation.lo `test -f 'src/functions/FunctionDefaultCollation.cpp' || echo '$(srcdir)/'`src/functions/FunctionDefaultCollation.cpp + +FunctionDistinctValues.lo: src/functions/FunctionDistinctValues.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionDistinctValues.lo -MD -MP -MF "$(DEPDIR)/FunctionDistinctValues.Tpo" -c -o FunctionDistinctValues.lo `test -f 'src/functions/FunctionDistinctValues.cpp' || echo '$(srcdir)/'`src/functions/FunctionDistinctValues.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionDistinctValues.Tpo" "$(DEPDIR)/FunctionDistinctValues.Plo"; else rm -f "$(DEPDIR)/FunctionDistinctValues.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionDistinctValues.cpp' object='FunctionDistinctValues.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionDistinctValues.lo `test -f 'src/functions/FunctionDistinctValues.cpp' || echo '$(srcdir)/'`src/functions/FunctionDistinctValues.cpp + +FunctionDocAvailable.lo: src/functions/FunctionDocAvailable.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionDocAvailable.lo -MD -MP -MF "$(DEPDIR)/FunctionDocAvailable.Tpo" -c -o FunctionDocAvailable.lo `test -f 'src/functions/FunctionDocAvailable.cpp' || echo '$(srcdir)/'`src/functions/FunctionDocAvailable.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionDocAvailable.Tpo" "$(DEPDIR)/FunctionDocAvailable.Plo"; else rm -f "$(DEPDIR)/FunctionDocAvailable.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionDocAvailable.cpp' object='FunctionDocAvailable.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionDocAvailable.lo `test -f 'src/functions/FunctionDocAvailable.cpp' || echo '$(srcdir)/'`src/functions/FunctionDocAvailable.cpp + +FunctionDoc.lo: src/functions/FunctionDoc.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionDoc.lo -MD -MP -MF "$(DEPDIR)/FunctionDoc.Tpo" -c -o FunctionDoc.lo `test -f 'src/functions/FunctionDoc.cpp' || echo '$(srcdir)/'`src/functions/FunctionDoc.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionDoc.Tpo" "$(DEPDIR)/FunctionDoc.Plo"; else rm -f "$(DEPDIR)/FunctionDoc.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionDoc.cpp' object='FunctionDoc.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionDoc.lo `test -f 'src/functions/FunctionDoc.cpp' || echo '$(srcdir)/'`src/functions/FunctionDoc.cpp + +FunctionDocumentURI.lo: src/functions/FunctionDocumentURI.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionDocumentURI.lo -MD -MP -MF "$(DEPDIR)/FunctionDocumentURI.Tpo" -c -o FunctionDocumentURI.lo `test -f 'src/functions/FunctionDocumentURI.cpp' || echo '$(srcdir)/'`src/functions/FunctionDocumentURI.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionDocumentURI.Tpo" "$(DEPDIR)/FunctionDocumentURI.Plo"; else rm -f "$(DEPDIR)/FunctionDocumentURI.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionDocumentURI.cpp' object='FunctionDocumentURI.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionDocumentURI.lo `test -f 'src/functions/FunctionDocumentURI.cpp' || echo '$(srcdir)/'`src/functions/FunctionDocumentURI.cpp + +FunctionEmpty.lo: src/functions/FunctionEmpty.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionEmpty.lo -MD -MP -MF "$(DEPDIR)/FunctionEmpty.Tpo" -c -o FunctionEmpty.lo `test -f 'src/functions/FunctionEmpty.cpp' || echo '$(srcdir)/'`src/functions/FunctionEmpty.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionEmpty.Tpo" "$(DEPDIR)/FunctionEmpty.Plo"; else rm -f "$(DEPDIR)/FunctionEmpty.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionEmpty.cpp' object='FunctionEmpty.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionEmpty.lo `test -f 'src/functions/FunctionEmpty.cpp' || echo '$(srcdir)/'`src/functions/FunctionEmpty.cpp + +FunctionEncodeForUri.lo: src/functions/FunctionEncodeForUri.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionEncodeForUri.lo -MD -MP -MF "$(DEPDIR)/FunctionEncodeForUri.Tpo" -c -o FunctionEncodeForUri.lo `test -f 'src/functions/FunctionEncodeForUri.cpp' || echo '$(srcdir)/'`src/functions/FunctionEncodeForUri.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionEncodeForUri.Tpo" "$(DEPDIR)/FunctionEncodeForUri.Plo"; else rm -f "$(DEPDIR)/FunctionEncodeForUri.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionEncodeForUri.cpp' object='FunctionEncodeForUri.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionEncodeForUri.lo `test -f 'src/functions/FunctionEncodeForUri.cpp' || echo '$(srcdir)/'`src/functions/FunctionEncodeForUri.cpp + +FunctionEndsWith.lo: src/functions/FunctionEndsWith.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionEndsWith.lo -MD -MP -MF "$(DEPDIR)/FunctionEndsWith.Tpo" -c -o FunctionEndsWith.lo `test -f 'src/functions/FunctionEndsWith.cpp' || echo '$(srcdir)/'`src/functions/FunctionEndsWith.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionEndsWith.Tpo" "$(DEPDIR)/FunctionEndsWith.Plo"; else rm -f "$(DEPDIR)/FunctionEndsWith.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionEndsWith.cpp' object='FunctionEndsWith.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionEndsWith.lo `test -f 'src/functions/FunctionEndsWith.cpp' || echo '$(srcdir)/'`src/functions/FunctionEndsWith.cpp + +FunctionError.lo: src/functions/FunctionError.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionError.lo -MD -MP -MF "$(DEPDIR)/FunctionError.Tpo" -c -o FunctionError.lo `test -f 'src/functions/FunctionError.cpp' || echo '$(srcdir)/'`src/functions/FunctionError.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionError.Tpo" "$(DEPDIR)/FunctionError.Plo"; else rm -f "$(DEPDIR)/FunctionError.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionError.cpp' object='FunctionError.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionError.lo `test -f 'src/functions/FunctionError.cpp' || echo '$(srcdir)/'`src/functions/FunctionError.cpp + +FunctionEscapeHtmlUri.lo: src/functions/FunctionEscapeHtmlUri.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionEscapeHtmlUri.lo -MD -MP -MF "$(DEPDIR)/FunctionEscapeHtmlUri.Tpo" -c -o FunctionEscapeHtmlUri.lo `test -f 'src/functions/FunctionEscapeHtmlUri.cpp' || echo '$(srcdir)/'`src/functions/FunctionEscapeHtmlUri.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionEscapeHtmlUri.Tpo" "$(DEPDIR)/FunctionEscapeHtmlUri.Plo"; else rm -f "$(DEPDIR)/FunctionEscapeHtmlUri.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionEscapeHtmlUri.cpp' object='FunctionEscapeHtmlUri.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionEscapeHtmlUri.lo `test -f 'src/functions/FunctionEscapeHtmlUri.cpp' || echo '$(srcdir)/'`src/functions/FunctionEscapeHtmlUri.cpp + +FunctionExactlyOne.lo: src/functions/FunctionExactlyOne.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionExactlyOne.lo -MD -MP -MF "$(DEPDIR)/FunctionExactlyOne.Tpo" -c -o FunctionExactlyOne.lo `test -f 'src/functions/FunctionExactlyOne.cpp' || echo '$(srcdir)/'`src/functions/FunctionExactlyOne.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionExactlyOne.Tpo" "$(DEPDIR)/FunctionExactlyOne.Plo"; else rm -f "$(DEPDIR)/FunctionExactlyOne.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionExactlyOne.cpp' object='FunctionExactlyOne.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionExactlyOne.lo `test -f 'src/functions/FunctionExactlyOne.cpp' || echo '$(srcdir)/'`src/functions/FunctionExactlyOne.cpp + +FunctionExists.lo: src/functions/FunctionExists.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionExists.lo -MD -MP -MF "$(DEPDIR)/FunctionExists.Tpo" -c -o FunctionExists.lo `test -f 'src/functions/FunctionExists.cpp' || echo '$(srcdir)/'`src/functions/FunctionExists.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionExists.Tpo" "$(DEPDIR)/FunctionExists.Plo"; else rm -f "$(DEPDIR)/FunctionExists.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionExists.cpp' object='FunctionExists.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionExists.lo `test -f 'src/functions/FunctionExists.cpp' || echo '$(srcdir)/'`src/functions/FunctionExists.cpp + +FunctionFalse.lo: src/functions/FunctionFalse.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionFalse.lo -MD -MP -MF "$(DEPDIR)/FunctionFalse.Tpo" -c -o FunctionFalse.lo `test -f 'src/functions/FunctionFalse.cpp' || echo '$(srcdir)/'`src/functions/FunctionFalse.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionFalse.Tpo" "$(DEPDIR)/FunctionFalse.Plo"; else rm -f "$(DEPDIR)/FunctionFalse.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionFalse.cpp' object='FunctionFalse.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionFalse.lo `test -f 'src/functions/FunctionFalse.cpp' || echo '$(srcdir)/'`src/functions/FunctionFalse.cpp + +FunctionFloor.lo: src/functions/FunctionFloor.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionFloor.lo -MD -MP -MF "$(DEPDIR)/FunctionFloor.Tpo" -c -o FunctionFloor.lo `test -f 'src/functions/FunctionFloor.cpp' || echo '$(srcdir)/'`src/functions/FunctionFloor.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionFloor.Tpo" "$(DEPDIR)/FunctionFloor.Plo"; else rm -f "$(DEPDIR)/FunctionFloor.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionFloor.cpp' object='FunctionFloor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionFloor.lo `test -f 'src/functions/FunctionFloor.cpp' || echo '$(srcdir)/'`src/functions/FunctionFloor.cpp + +FunctionId.lo: src/functions/FunctionId.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionId.lo -MD -MP -MF "$(DEPDIR)/FunctionId.Tpo" -c -o FunctionId.lo `test -f 'src/functions/FunctionId.cpp' || echo '$(srcdir)/'`src/functions/FunctionId.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionId.Tpo" "$(DEPDIR)/FunctionId.Plo"; else rm -f "$(DEPDIR)/FunctionId.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionId.cpp' object='FunctionId.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionId.lo `test -f 'src/functions/FunctionId.cpp' || echo '$(srcdir)/'`src/functions/FunctionId.cpp + +FunctionIdref.lo: src/functions/FunctionIdref.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionIdref.lo -MD -MP -MF "$(DEPDIR)/FunctionIdref.Tpo" -c -o FunctionIdref.lo `test -f 'src/functions/FunctionIdref.cpp' || echo '$(srcdir)/'`src/functions/FunctionIdref.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionIdref.Tpo" "$(DEPDIR)/FunctionIdref.Plo"; else rm -f "$(DEPDIR)/FunctionIdref.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionIdref.cpp' object='FunctionIdref.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionIdref.lo `test -f 'src/functions/FunctionIdref.cpp' || echo '$(srcdir)/'`src/functions/FunctionIdref.cpp + +FunctionImplicitTimezone.lo: src/functions/FunctionImplicitTimezone.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionImplicitTimezone.lo -MD -MP -MF "$(DEPDIR)/FunctionImplicitTimezone.Tpo" -c -o FunctionImplicitTimezone.lo `test -f 'src/functions/FunctionImplicitTimezone.cpp' || echo '$(srcdir)/'`src/functions/FunctionImplicitTimezone.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionImplicitTimezone.Tpo" "$(DEPDIR)/FunctionImplicitTimezone.Plo"; else rm -f "$(DEPDIR)/FunctionImplicitTimezone.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionImplicitTimezone.cpp' object='FunctionImplicitTimezone.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionImplicitTimezone.lo `test -f 'src/functions/FunctionImplicitTimezone.cpp' || echo '$(srcdir)/'`src/functions/FunctionImplicitTimezone.cpp + +FunctionIndexOf.lo: src/functions/FunctionIndexOf.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionIndexOf.lo -MD -MP -MF "$(DEPDIR)/FunctionIndexOf.Tpo" -c -o FunctionIndexOf.lo `test -f 'src/functions/FunctionIndexOf.cpp' || echo '$(srcdir)/'`src/functions/FunctionIndexOf.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionIndexOf.Tpo" "$(DEPDIR)/FunctionIndexOf.Plo"; else rm -f "$(DEPDIR)/FunctionIndexOf.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionIndexOf.cpp' object='FunctionIndexOf.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionIndexOf.lo `test -f 'src/functions/FunctionIndexOf.cpp' || echo '$(srcdir)/'`src/functions/FunctionIndexOf.cpp + +FunctionInScopePrefixes.lo: src/functions/FunctionInScopePrefixes.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionInScopePrefixes.lo -MD -MP -MF "$(DEPDIR)/FunctionInScopePrefixes.Tpo" -c -o FunctionInScopePrefixes.lo `test -f 'src/functions/FunctionInScopePrefixes.cpp' || echo '$(srcdir)/'`src/functions/FunctionInScopePrefixes.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionInScopePrefixes.Tpo" "$(DEPDIR)/FunctionInScopePrefixes.Plo"; else rm -f "$(DEPDIR)/FunctionInScopePrefixes.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionInScopePrefixes.cpp' object='FunctionInScopePrefixes.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionInScopePrefixes.lo `test -f 'src/functions/FunctionInScopePrefixes.cpp' || echo '$(srcdir)/'`src/functions/FunctionInScopePrefixes.cpp + +FunctionInsertBefore.lo: src/functions/FunctionInsertBefore.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionInsertBefore.lo -MD -MP -MF "$(DEPDIR)/FunctionInsertBefore.Tpo" -c -o FunctionInsertBefore.lo `test -f 'src/functions/FunctionInsertBefore.cpp' || echo '$(srcdir)/'`src/functions/FunctionInsertBefore.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionInsertBefore.Tpo" "$(DEPDIR)/FunctionInsertBefore.Plo"; else rm -f "$(DEPDIR)/FunctionInsertBefore.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionInsertBefore.cpp' object='FunctionInsertBefore.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionInsertBefore.lo `test -f 'src/functions/FunctionInsertBefore.cpp' || echo '$(srcdir)/'`src/functions/FunctionInsertBefore.cpp + +FunctionIriToUri.lo: src/functions/FunctionIriToUri.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionIriToUri.lo -MD -MP -MF "$(DEPDIR)/FunctionIriToUri.Tpo" -c -o FunctionIriToUri.lo `test -f 'src/functions/FunctionIriToUri.cpp' || echo '$(srcdir)/'`src/functions/FunctionIriToUri.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionIriToUri.Tpo" "$(DEPDIR)/FunctionIriToUri.Plo"; else rm -f "$(DEPDIR)/FunctionIriToUri.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionIriToUri.cpp' object='FunctionIriToUri.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionIriToUri.lo `test -f 'src/functions/FunctionIriToUri.cpp' || echo '$(srcdir)/'`src/functions/FunctionIriToUri.cpp + +FunctionLang.lo: src/functions/FunctionLang.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionLang.lo -MD -MP -MF "$(DEPDIR)/FunctionLang.Tpo" -c -o FunctionLang.lo `test -f 'src/functions/FunctionLang.cpp' || echo '$(srcdir)/'`src/functions/FunctionLang.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionLang.Tpo" "$(DEPDIR)/FunctionLang.Plo"; else rm -f "$(DEPDIR)/FunctionLang.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionLang.cpp' object='FunctionLang.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionLang.lo `test -f 'src/functions/FunctionLang.cpp' || echo '$(srcdir)/'`src/functions/FunctionLang.cpp + +FunctionLast.lo: src/functions/FunctionLast.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionLast.lo -MD -MP -MF "$(DEPDIR)/FunctionLast.Tpo" -c -o FunctionLast.lo `test -f 'src/functions/FunctionLast.cpp' || echo '$(srcdir)/'`src/functions/FunctionLast.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionLast.Tpo" "$(DEPDIR)/FunctionLast.Plo"; else rm -f "$(DEPDIR)/FunctionLast.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionLast.cpp' object='FunctionLast.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionLast.lo `test -f 'src/functions/FunctionLast.cpp' || echo '$(srcdir)/'`src/functions/FunctionLast.cpp + +FunctionLocalname.lo: src/functions/FunctionLocalname.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionLocalname.lo -MD -MP -MF "$(DEPDIR)/FunctionLocalname.Tpo" -c -o FunctionLocalname.lo `test -f 'src/functions/FunctionLocalname.cpp' || echo '$(srcdir)/'`src/functions/FunctionLocalname.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionLocalname.Tpo" "$(DEPDIR)/FunctionLocalname.Plo"; else rm -f "$(DEPDIR)/FunctionLocalname.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionLocalname.cpp' object='FunctionLocalname.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionLocalname.lo `test -f 'src/functions/FunctionLocalname.cpp' || echo '$(srcdir)/'`src/functions/FunctionLocalname.cpp + +FunctionLocalNameFromQName.lo: src/functions/FunctionLocalNameFromQName.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionLocalNameFromQName.lo -MD -MP -MF "$(DEPDIR)/FunctionLocalNameFromQName.Tpo" -c -o FunctionLocalNameFromQName.lo `test -f 'src/functions/FunctionLocalNameFromQName.cpp' || echo '$(srcdir)/'`src/functions/FunctionLocalNameFromQName.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionLocalNameFromQName.Tpo" "$(DEPDIR)/FunctionLocalNameFromQName.Plo"; else rm -f "$(DEPDIR)/FunctionLocalNameFromQName.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionLocalNameFromQName.cpp' object='FunctionLocalNameFromQName.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionLocalNameFromQName.lo `test -f 'src/functions/FunctionLocalNameFromQName.cpp' || echo '$(srcdir)/'`src/functions/FunctionLocalNameFromQName.cpp + +FunctionLowerCase.lo: src/functions/FunctionLowerCase.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionLowerCase.lo -MD -MP -MF "$(DEPDIR)/FunctionLowerCase.Tpo" -c -o FunctionLowerCase.lo `test -f 'src/functions/FunctionLowerCase.cpp' || echo '$(srcdir)/'`src/functions/FunctionLowerCase.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionLowerCase.Tpo" "$(DEPDIR)/FunctionLowerCase.Plo"; else rm -f "$(DEPDIR)/FunctionLowerCase.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionLowerCase.cpp' object='FunctionLowerCase.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionLowerCase.lo `test -f 'src/functions/FunctionLowerCase.cpp' || echo '$(srcdir)/'`src/functions/FunctionLowerCase.cpp + +FunctionMatches.lo: src/functions/FunctionMatches.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionMatches.lo -MD -MP -MF "$(DEPDIR)/FunctionMatches.Tpo" -c -o FunctionMatches.lo `test -f 'src/functions/FunctionMatches.cpp' || echo '$(srcdir)/'`src/functions/FunctionMatches.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionMatches.Tpo" "$(DEPDIR)/FunctionMatches.Plo"; else rm -f "$(DEPDIR)/FunctionMatches.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionMatches.cpp' object='FunctionMatches.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionMatches.lo `test -f 'src/functions/FunctionMatches.cpp' || echo '$(srcdir)/'`src/functions/FunctionMatches.cpp + +FunctionMax.lo: src/functions/FunctionMax.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionMax.lo -MD -MP -MF "$(DEPDIR)/FunctionMax.Tpo" -c -o FunctionMax.lo `test -f 'src/functions/FunctionMax.cpp' || echo '$(srcdir)/'`src/functions/FunctionMax.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionMax.Tpo" "$(DEPDIR)/FunctionMax.Plo"; else rm -f "$(DEPDIR)/FunctionMax.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionMax.cpp' object='FunctionMax.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionMax.lo `test -f 'src/functions/FunctionMax.cpp' || echo '$(srcdir)/'`src/functions/FunctionMax.cpp + +FunctionMin.lo: src/functions/FunctionMin.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionMin.lo -MD -MP -MF "$(DEPDIR)/FunctionMin.Tpo" -c -o FunctionMin.lo `test -f 'src/functions/FunctionMin.cpp' || echo '$(srcdir)/'`src/functions/FunctionMin.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionMin.Tpo" "$(DEPDIR)/FunctionMin.Plo"; else rm -f "$(DEPDIR)/FunctionMin.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionMin.cpp' object='FunctionMin.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionMin.lo `test -f 'src/functions/FunctionMin.cpp' || echo '$(srcdir)/'`src/functions/FunctionMin.cpp + +FunctionName.lo: src/functions/FunctionName.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionName.lo -MD -MP -MF "$(DEPDIR)/FunctionName.Tpo" -c -o FunctionName.lo `test -f 'src/functions/FunctionName.cpp' || echo '$(srcdir)/'`src/functions/FunctionName.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionName.Tpo" "$(DEPDIR)/FunctionName.Plo"; else rm -f "$(DEPDIR)/FunctionName.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionName.cpp' object='FunctionName.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionName.lo `test -f 'src/functions/FunctionName.cpp' || echo '$(srcdir)/'`src/functions/FunctionName.cpp + +FunctionNamespaceUri.lo: src/functions/FunctionNamespaceUri.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionNamespaceUri.lo -MD -MP -MF "$(DEPDIR)/FunctionNamespaceUri.Tpo" -c -o FunctionNamespaceUri.lo `test -f 'src/functions/FunctionNamespaceUri.cpp' || echo '$(srcdir)/'`src/functions/FunctionNamespaceUri.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionNamespaceUri.Tpo" "$(DEPDIR)/FunctionNamespaceUri.Plo"; else rm -f "$(DEPDIR)/FunctionNamespaceUri.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionNamespaceUri.cpp' object='FunctionNamespaceUri.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionNamespaceUri.lo `test -f 'src/functions/FunctionNamespaceUri.cpp' || echo '$(srcdir)/'`src/functions/FunctionNamespaceUri.cpp + +FunctionNamespaceURIForPrefix.lo: src/functions/FunctionNamespaceURIForPrefix.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionNamespaceURIForPrefix.lo -MD -MP -MF "$(DEPDIR)/FunctionNamespaceURIForPrefix.Tpo" -c -o FunctionNamespaceURIForPrefix.lo `test -f 'src/functions/FunctionNamespaceURIForPrefix.cpp' || echo '$(srcdir)/'`src/functions/FunctionNamespaceURIForPrefix.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionNamespaceURIForPrefix.Tpo" "$(DEPDIR)/FunctionNamespaceURIForPrefix.Plo"; else rm -f "$(DEPDIR)/FunctionNamespaceURIForPrefix.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionNamespaceURIForPrefix.cpp' object='FunctionNamespaceURIForPrefix.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionNamespaceURIForPrefix.lo `test -f 'src/functions/FunctionNamespaceURIForPrefix.cpp' || echo '$(srcdir)/'`src/functions/FunctionNamespaceURIForPrefix.cpp + +FunctionNamespaceURIFromQName.lo: src/functions/FunctionNamespaceURIFromQName.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionNamespaceURIFromQName.lo -MD -MP -MF "$(DEPDIR)/FunctionNamespaceURIFromQName.Tpo" -c -o FunctionNamespaceURIFromQName.lo `test -f 'src/functions/FunctionNamespaceURIFromQName.cpp' || echo '$(srcdir)/'`src/functions/FunctionNamespaceURIFromQName.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionNamespaceURIFromQName.Tpo" "$(DEPDIR)/FunctionNamespaceURIFromQName.Plo"; else rm -f "$(DEPDIR)/FunctionNamespaceURIFromQName.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionNamespaceURIFromQName.cpp' object='FunctionNamespaceURIFromQName.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionNamespaceURIFromQName.lo `test -f 'src/functions/FunctionNamespaceURIFromQName.cpp' || echo '$(srcdir)/'`src/functions/FunctionNamespaceURIFromQName.cpp + +FunctionNilled.lo: src/functions/FunctionNilled.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionNilled.lo -MD -MP -MF "$(DEPDIR)/FunctionNilled.Tpo" -c -o FunctionNilled.lo `test -f 'src/functions/FunctionNilled.cpp' || echo '$(srcdir)/'`src/functions/FunctionNilled.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionNilled.Tpo" "$(DEPDIR)/FunctionNilled.Plo"; else rm -f "$(DEPDIR)/FunctionNilled.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionNilled.cpp' object='FunctionNilled.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionNilled.lo `test -f 'src/functions/FunctionNilled.cpp' || echo '$(srcdir)/'`src/functions/FunctionNilled.cpp + +FunctionNodeName.lo: src/functions/FunctionNodeName.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionNodeName.lo -MD -MP -MF "$(DEPDIR)/FunctionNodeName.Tpo" -c -o FunctionNodeName.lo `test -f 'src/functions/FunctionNodeName.cpp' || echo '$(srcdir)/'`src/functions/FunctionNodeName.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionNodeName.Tpo" "$(DEPDIR)/FunctionNodeName.Plo"; else rm -f "$(DEPDIR)/FunctionNodeName.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionNodeName.cpp' object='FunctionNodeName.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionNodeName.lo `test -f 'src/functions/FunctionNodeName.cpp' || echo '$(srcdir)/'`src/functions/FunctionNodeName.cpp + +FunctionNormalizeSpace.lo: src/functions/FunctionNormalizeSpace.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionNormalizeSpace.lo -MD -MP -MF "$(DEPDIR)/FunctionNormalizeSpace.Tpo" -c -o FunctionNormalizeSpace.lo `test -f 'src/functions/FunctionNormalizeSpace.cpp' || echo '$(srcdir)/'`src/functions/FunctionNormalizeSpace.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionNormalizeSpace.Tpo" "$(DEPDIR)/FunctionNormalizeSpace.Plo"; else rm -f "$(DEPDIR)/FunctionNormalizeSpace.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionNormalizeSpace.cpp' object='FunctionNormalizeSpace.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionNormalizeSpace.lo `test -f 'src/functions/FunctionNormalizeSpace.cpp' || echo '$(srcdir)/'`src/functions/FunctionNormalizeSpace.cpp + +FunctionNormalizeUnicode.lo: src/functions/FunctionNormalizeUnicode.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionNormalizeUnicode.lo -MD -MP -MF "$(DEPDIR)/FunctionNormalizeUnicode.Tpo" -c -o FunctionNormalizeUnicode.lo `test -f 'src/functions/FunctionNormalizeUnicode.cpp' || echo '$(srcdir)/'`src/functions/FunctionNormalizeUnicode.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionNormalizeUnicode.Tpo" "$(DEPDIR)/FunctionNormalizeUnicode.Plo"; else rm -f "$(DEPDIR)/FunctionNormalizeUnicode.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionNormalizeUnicode.cpp' object='FunctionNormalizeUnicode.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionNormalizeUnicode.lo `test -f 'src/functions/FunctionNormalizeUnicode.cpp' || echo '$(srcdir)/'`src/functions/FunctionNormalizeUnicode.cpp + +FunctionNot.lo: src/functions/FunctionNot.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionNot.lo -MD -MP -MF "$(DEPDIR)/FunctionNot.Tpo" -c -o FunctionNot.lo `test -f 'src/functions/FunctionNot.cpp' || echo '$(srcdir)/'`src/functions/FunctionNot.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionNot.Tpo" "$(DEPDIR)/FunctionNot.Plo"; else rm -f "$(DEPDIR)/FunctionNot.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionNot.cpp' object='FunctionNot.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionNot.lo `test -f 'src/functions/FunctionNot.cpp' || echo '$(srcdir)/'`src/functions/FunctionNot.cpp + +FunctionNumber.lo: src/functions/FunctionNumber.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionNumber.lo -MD -MP -MF "$(DEPDIR)/FunctionNumber.Tpo" -c -o FunctionNumber.lo `test -f 'src/functions/FunctionNumber.cpp' || echo '$(srcdir)/'`src/functions/FunctionNumber.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionNumber.Tpo" "$(DEPDIR)/FunctionNumber.Plo"; else rm -f "$(DEPDIR)/FunctionNumber.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionNumber.cpp' object='FunctionNumber.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionNumber.lo `test -f 'src/functions/FunctionNumber.cpp' || echo '$(srcdir)/'`src/functions/FunctionNumber.cpp + +FunctionOneOrMore.lo: src/functions/FunctionOneOrMore.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionOneOrMore.lo -MD -MP -MF "$(DEPDIR)/FunctionOneOrMore.Tpo" -c -o FunctionOneOrMore.lo `test -f 'src/functions/FunctionOneOrMore.cpp' || echo '$(srcdir)/'`src/functions/FunctionOneOrMore.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionOneOrMore.Tpo" "$(DEPDIR)/FunctionOneOrMore.Plo"; else rm -f "$(DEPDIR)/FunctionOneOrMore.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionOneOrMore.cpp' object='FunctionOneOrMore.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionOneOrMore.lo `test -f 'src/functions/FunctionOneOrMore.cpp' || echo '$(srcdir)/'`src/functions/FunctionOneOrMore.cpp + +FunctionPosition.lo: src/functions/FunctionPosition.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionPosition.lo -MD -MP -MF "$(DEPDIR)/FunctionPosition.Tpo" -c -o FunctionPosition.lo `test -f 'src/functions/FunctionPosition.cpp' || echo '$(srcdir)/'`src/functions/FunctionPosition.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionPosition.Tpo" "$(DEPDIR)/FunctionPosition.Plo"; else rm -f "$(DEPDIR)/FunctionPosition.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionPosition.cpp' object='FunctionPosition.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionPosition.lo `test -f 'src/functions/FunctionPosition.cpp' || echo '$(srcdir)/'`src/functions/FunctionPosition.cpp + +FunctionPrefixFromQName.lo: src/functions/FunctionPrefixFromQName.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionPrefixFromQName.lo -MD -MP -MF "$(DEPDIR)/FunctionPrefixFromQName.Tpo" -c -o FunctionPrefixFromQName.lo `test -f 'src/functions/FunctionPrefixFromQName.cpp' || echo '$(srcdir)/'`src/functions/FunctionPrefixFromQName.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionPrefixFromQName.Tpo" "$(DEPDIR)/FunctionPrefixFromQName.Plo"; else rm -f "$(DEPDIR)/FunctionPrefixFromQName.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionPrefixFromQName.cpp' object='FunctionPrefixFromQName.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionPrefixFromQName.lo `test -f 'src/functions/FunctionPrefixFromQName.cpp' || echo '$(srcdir)/'`src/functions/FunctionPrefixFromQName.cpp + +FunctionQName.lo: src/functions/FunctionQName.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionQName.lo -MD -MP -MF "$(DEPDIR)/FunctionQName.Tpo" -c -o FunctionQName.lo `test -f 'src/functions/FunctionQName.cpp' || echo '$(srcdir)/'`src/functions/FunctionQName.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionQName.Tpo" "$(DEPDIR)/FunctionQName.Plo"; else rm -f "$(DEPDIR)/FunctionQName.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionQName.cpp' object='FunctionQName.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionQName.lo `test -f 'src/functions/FunctionQName.cpp' || echo '$(srcdir)/'`src/functions/FunctionQName.cpp + +FunctionRemove.lo: src/functions/FunctionRemove.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionRemove.lo -MD -MP -MF "$(DEPDIR)/FunctionRemove.Tpo" -c -o FunctionRemove.lo `test -f 'src/functions/FunctionRemove.cpp' || echo '$(srcdir)/'`src/functions/FunctionRemove.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionRemove.Tpo" "$(DEPDIR)/FunctionRemove.Plo"; else rm -f "$(DEPDIR)/FunctionRemove.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionRemove.cpp' object='FunctionRemove.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionRemove.lo `test -f 'src/functions/FunctionRemove.cpp' || echo '$(srcdir)/'`src/functions/FunctionRemove.cpp + +FunctionReplace.lo: src/functions/FunctionReplace.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionReplace.lo -MD -MP -MF "$(DEPDIR)/FunctionReplace.Tpo" -c -o FunctionReplace.lo `test -f 'src/functions/FunctionReplace.cpp' || echo '$(srcdir)/'`src/functions/FunctionReplace.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionReplace.Tpo" "$(DEPDIR)/FunctionReplace.Plo"; else rm -f "$(DEPDIR)/FunctionReplace.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionReplace.cpp' object='FunctionReplace.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionReplace.lo `test -f 'src/functions/FunctionReplace.cpp' || echo '$(srcdir)/'`src/functions/FunctionReplace.cpp + +FunctionResolveQName.lo: src/functions/FunctionResolveQName.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionResolveQName.lo -MD -MP -MF "$(DEPDIR)/FunctionResolveQName.Tpo" -c -o FunctionResolveQName.lo `test -f 'src/functions/FunctionResolveQName.cpp' || echo '$(srcdir)/'`src/functions/FunctionResolveQName.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionResolveQName.Tpo" "$(DEPDIR)/FunctionResolveQName.Plo"; else rm -f "$(DEPDIR)/FunctionResolveQName.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionResolveQName.cpp' object='FunctionResolveQName.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionResolveQName.lo `test -f 'src/functions/FunctionResolveQName.cpp' || echo '$(srcdir)/'`src/functions/FunctionResolveQName.cpp + +FunctionResolveURI.lo: src/functions/FunctionResolveURI.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionResolveURI.lo -MD -MP -MF "$(DEPDIR)/FunctionResolveURI.Tpo" -c -o FunctionResolveURI.lo `test -f 'src/functions/FunctionResolveURI.cpp' || echo '$(srcdir)/'`src/functions/FunctionResolveURI.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionResolveURI.Tpo" "$(DEPDIR)/FunctionResolveURI.Plo"; else rm -f "$(DEPDIR)/FunctionResolveURI.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionResolveURI.cpp' object='FunctionResolveURI.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionResolveURI.lo `test -f 'src/functions/FunctionResolveURI.cpp' || echo '$(srcdir)/'`src/functions/FunctionResolveURI.cpp + +FunctionReverse.lo: src/functions/FunctionReverse.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionReverse.lo -MD -MP -MF "$(DEPDIR)/FunctionReverse.Tpo" -c -o FunctionReverse.lo `test -f 'src/functions/FunctionReverse.cpp' || echo '$(srcdir)/'`src/functions/FunctionReverse.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionReverse.Tpo" "$(DEPDIR)/FunctionReverse.Plo"; else rm -f "$(DEPDIR)/FunctionReverse.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionReverse.cpp' object='FunctionReverse.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionReverse.lo `test -f 'src/functions/FunctionReverse.cpp' || echo '$(srcdir)/'`src/functions/FunctionReverse.cpp + +FunctionRoot.lo: src/functions/FunctionRoot.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionRoot.lo -MD -MP -MF "$(DEPDIR)/FunctionRoot.Tpo" -c -o FunctionRoot.lo `test -f 'src/functions/FunctionRoot.cpp' || echo '$(srcdir)/'`src/functions/FunctionRoot.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionRoot.Tpo" "$(DEPDIR)/FunctionRoot.Plo"; else rm -f "$(DEPDIR)/FunctionRoot.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionRoot.cpp' object='FunctionRoot.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionRoot.lo `test -f 'src/functions/FunctionRoot.cpp' || echo '$(srcdir)/'`src/functions/FunctionRoot.cpp + +FunctionRound.lo: src/functions/FunctionRound.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionRound.lo -MD -MP -MF "$(DEPDIR)/FunctionRound.Tpo" -c -o FunctionRound.lo `test -f 'src/functions/FunctionRound.cpp' || echo '$(srcdir)/'`src/functions/FunctionRound.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionRound.Tpo" "$(DEPDIR)/FunctionRound.Plo"; else rm -f "$(DEPDIR)/FunctionRound.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionRound.cpp' object='FunctionRound.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionRound.lo `test -f 'src/functions/FunctionRound.cpp' || echo '$(srcdir)/'`src/functions/FunctionRound.cpp + +FunctionRoundHalfToEven.lo: src/functions/FunctionRoundHalfToEven.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionRoundHalfToEven.lo -MD -MP -MF "$(DEPDIR)/FunctionRoundHalfToEven.Tpo" -c -o FunctionRoundHalfToEven.lo `test -f 'src/functions/FunctionRoundHalfToEven.cpp' || echo '$(srcdir)/'`src/functions/FunctionRoundHalfToEven.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionRoundHalfToEven.Tpo" "$(DEPDIR)/FunctionRoundHalfToEven.Plo"; else rm -f "$(DEPDIR)/FunctionRoundHalfToEven.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionRoundHalfToEven.cpp' object='FunctionRoundHalfToEven.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionRoundHalfToEven.lo `test -f 'src/functions/FunctionRoundHalfToEven.cpp' || echo '$(srcdir)/'`src/functions/FunctionRoundHalfToEven.cpp + +FunctionStartsWith.lo: src/functions/FunctionStartsWith.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionStartsWith.lo -MD -MP -MF "$(DEPDIR)/FunctionStartsWith.Tpo" -c -o FunctionStartsWith.lo `test -f 'src/functions/FunctionStartsWith.cpp' || echo '$(srcdir)/'`src/functions/FunctionStartsWith.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionStartsWith.Tpo" "$(DEPDIR)/FunctionStartsWith.Plo"; else rm -f "$(DEPDIR)/FunctionStartsWith.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionStartsWith.cpp' object='FunctionStartsWith.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionStartsWith.lo `test -f 'src/functions/FunctionStartsWith.cpp' || echo '$(srcdir)/'`src/functions/FunctionStartsWith.cpp + +FunctionStaticBaseURI.lo: src/functions/FunctionStaticBaseURI.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionStaticBaseURI.lo -MD -MP -MF "$(DEPDIR)/FunctionStaticBaseURI.Tpo" -c -o FunctionStaticBaseURI.lo `test -f 'src/functions/FunctionStaticBaseURI.cpp' || echo '$(srcdir)/'`src/functions/FunctionStaticBaseURI.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionStaticBaseURI.Tpo" "$(DEPDIR)/FunctionStaticBaseURI.Plo"; else rm -f "$(DEPDIR)/FunctionStaticBaseURI.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionStaticBaseURI.cpp' object='FunctionStaticBaseURI.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionStaticBaseURI.lo `test -f 'src/functions/FunctionStaticBaseURI.cpp' || echo '$(srcdir)/'`src/functions/FunctionStaticBaseURI.cpp + +FunctionString.lo: src/functions/FunctionString.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionString.lo -MD -MP -MF "$(DEPDIR)/FunctionString.Tpo" -c -o FunctionString.lo `test -f 'src/functions/FunctionString.cpp' || echo '$(srcdir)/'`src/functions/FunctionString.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionString.Tpo" "$(DEPDIR)/FunctionString.Plo"; else rm -f "$(DEPDIR)/FunctionString.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionString.cpp' object='FunctionString.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionString.lo `test -f 'src/functions/FunctionString.cpp' || echo '$(srcdir)/'`src/functions/FunctionString.cpp + +FunctionStringJoin.lo: src/functions/FunctionStringJoin.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionStringJoin.lo -MD -MP -MF "$(DEPDIR)/FunctionStringJoin.Tpo" -c -o FunctionStringJoin.lo `test -f 'src/functions/FunctionStringJoin.cpp' || echo '$(srcdir)/'`src/functions/FunctionStringJoin.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionStringJoin.Tpo" "$(DEPDIR)/FunctionStringJoin.Plo"; else rm -f "$(DEPDIR)/FunctionStringJoin.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionStringJoin.cpp' object='FunctionStringJoin.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionStringJoin.lo `test -f 'src/functions/FunctionStringJoin.cpp' || echo '$(srcdir)/'`src/functions/FunctionStringJoin.cpp + +FunctionStringLength.lo: src/functions/FunctionStringLength.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionStringLength.lo -MD -MP -MF "$(DEPDIR)/FunctionStringLength.Tpo" -c -o FunctionStringLength.lo `test -f 'src/functions/FunctionStringLength.cpp' || echo '$(srcdir)/'`src/functions/FunctionStringLength.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionStringLength.Tpo" "$(DEPDIR)/FunctionStringLength.Plo"; else rm -f "$(DEPDIR)/FunctionStringLength.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionStringLength.cpp' object='FunctionStringLength.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionStringLength.lo `test -f 'src/functions/FunctionStringLength.cpp' || echo '$(srcdir)/'`src/functions/FunctionStringLength.cpp + +FunctionStringToCodepoints.lo: src/functions/FunctionStringToCodepoints.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionStringToCodepoints.lo -MD -MP -MF "$(DEPDIR)/FunctionStringToCodepoints.Tpo" -c -o FunctionStringToCodepoints.lo `test -f 'src/functions/FunctionStringToCodepoints.cpp' || echo '$(srcdir)/'`src/functions/FunctionStringToCodepoints.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionStringToCodepoints.Tpo" "$(DEPDIR)/FunctionStringToCodepoints.Plo"; else rm -f "$(DEPDIR)/FunctionStringToCodepoints.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionStringToCodepoints.cpp' object='FunctionStringToCodepoints.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionStringToCodepoints.lo `test -f 'src/functions/FunctionStringToCodepoints.cpp' || echo '$(srcdir)/'`src/functions/FunctionStringToCodepoints.cpp + +FunctionSubsequence.lo: src/functions/FunctionSubsequence.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionSubsequence.lo -MD -MP -MF "$(DEPDIR)/FunctionSubsequence.Tpo" -c -o FunctionSubsequence.lo `test -f 'src/functions/FunctionSubsequence.cpp' || echo '$(srcdir)/'`src/functions/FunctionSubsequence.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionSubsequence.Tpo" "$(DEPDIR)/FunctionSubsequence.Plo"; else rm -f "$(DEPDIR)/FunctionSubsequence.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionSubsequence.cpp' object='FunctionSubsequence.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionSubsequence.lo `test -f 'src/functions/FunctionSubsequence.cpp' || echo '$(srcdir)/'`src/functions/FunctionSubsequence.cpp + +FunctionSubstringAfter.lo: src/functions/FunctionSubstringAfter.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionSubstringAfter.lo -MD -MP -MF "$(DEPDIR)/FunctionSubstringAfter.Tpo" -c -o FunctionSubstringAfter.lo `test -f 'src/functions/FunctionSubstringAfter.cpp' || echo '$(srcdir)/'`src/functions/FunctionSubstringAfter.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionSubstringAfter.Tpo" "$(DEPDIR)/FunctionSubstringAfter.Plo"; else rm -f "$(DEPDIR)/FunctionSubstringAfter.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionSubstringAfter.cpp' object='FunctionSubstringAfter.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionSubstringAfter.lo `test -f 'src/functions/FunctionSubstringAfter.cpp' || echo '$(srcdir)/'`src/functions/FunctionSubstringAfter.cpp + +FunctionSubstringBefore.lo: src/functions/FunctionSubstringBefore.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionSubstringBefore.lo -MD -MP -MF "$(DEPDIR)/FunctionSubstringBefore.Tpo" -c -o FunctionSubstringBefore.lo `test -f 'src/functions/FunctionSubstringBefore.cpp' || echo '$(srcdir)/'`src/functions/FunctionSubstringBefore.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionSubstringBefore.Tpo" "$(DEPDIR)/FunctionSubstringBefore.Plo"; else rm -f "$(DEPDIR)/FunctionSubstringBefore.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionSubstringBefore.cpp' object='FunctionSubstringBefore.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionSubstringBefore.lo `test -f 'src/functions/FunctionSubstringBefore.cpp' || echo '$(srcdir)/'`src/functions/FunctionSubstringBefore.cpp + +FunctionSubstring.lo: src/functions/FunctionSubstring.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionSubstring.lo -MD -MP -MF "$(DEPDIR)/FunctionSubstring.Tpo" -c -o FunctionSubstring.lo `test -f 'src/functions/FunctionSubstring.cpp' || echo '$(srcdir)/'`src/functions/FunctionSubstring.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionSubstring.Tpo" "$(DEPDIR)/FunctionSubstring.Plo"; else rm -f "$(DEPDIR)/FunctionSubstring.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionSubstring.cpp' object='FunctionSubstring.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionSubstring.lo `test -f 'src/functions/FunctionSubstring.cpp' || echo '$(srcdir)/'`src/functions/FunctionSubstring.cpp + +FunctionSum.lo: src/functions/FunctionSum.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionSum.lo -MD -MP -MF "$(DEPDIR)/FunctionSum.Tpo" -c -o FunctionSum.lo `test -f 'src/functions/FunctionSum.cpp' || echo '$(srcdir)/'`src/functions/FunctionSum.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionSum.Tpo" "$(DEPDIR)/FunctionSum.Plo"; else rm -f "$(DEPDIR)/FunctionSum.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionSum.cpp' object='FunctionSum.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionSum.lo `test -f 'src/functions/FunctionSum.cpp' || echo '$(srcdir)/'`src/functions/FunctionSum.cpp + +FunctionTokenize.lo: src/functions/FunctionTokenize.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionTokenize.lo -MD -MP -MF "$(DEPDIR)/FunctionTokenize.Tpo" -c -o FunctionTokenize.lo `test -f 'src/functions/FunctionTokenize.cpp' || echo '$(srcdir)/'`src/functions/FunctionTokenize.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionTokenize.Tpo" "$(DEPDIR)/FunctionTokenize.Plo"; else rm -f "$(DEPDIR)/FunctionTokenize.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionTokenize.cpp' object='FunctionTokenize.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionTokenize.lo `test -f 'src/functions/FunctionTokenize.cpp' || echo '$(srcdir)/'`src/functions/FunctionTokenize.cpp + +FunctionTrace.lo: src/functions/FunctionTrace.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionTrace.lo -MD -MP -MF "$(DEPDIR)/FunctionTrace.Tpo" -c -o FunctionTrace.lo `test -f 'src/functions/FunctionTrace.cpp' || echo '$(srcdir)/'`src/functions/FunctionTrace.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionTrace.Tpo" "$(DEPDIR)/FunctionTrace.Plo"; else rm -f "$(DEPDIR)/FunctionTrace.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionTrace.cpp' object='FunctionTrace.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionTrace.lo `test -f 'src/functions/FunctionTrace.cpp' || echo '$(srcdir)/'`src/functions/FunctionTrace.cpp + +FunctionTranslate.lo: src/functions/FunctionTranslate.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionTranslate.lo -MD -MP -MF "$(DEPDIR)/FunctionTranslate.Tpo" -c -o FunctionTranslate.lo `test -f 'src/functions/FunctionTranslate.cpp' || echo '$(srcdir)/'`src/functions/FunctionTranslate.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionTranslate.Tpo" "$(DEPDIR)/FunctionTranslate.Plo"; else rm -f "$(DEPDIR)/FunctionTranslate.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionTranslate.cpp' object='FunctionTranslate.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionTranslate.lo `test -f 'src/functions/FunctionTranslate.cpp' || echo '$(srcdir)/'`src/functions/FunctionTranslate.cpp + +FunctionTrue.lo: src/functions/FunctionTrue.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionTrue.lo -MD -MP -MF "$(DEPDIR)/FunctionTrue.Tpo" -c -o FunctionTrue.lo `test -f 'src/functions/FunctionTrue.cpp' || echo '$(srcdir)/'`src/functions/FunctionTrue.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionTrue.Tpo" "$(DEPDIR)/FunctionTrue.Plo"; else rm -f "$(DEPDIR)/FunctionTrue.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionTrue.cpp' object='FunctionTrue.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionTrue.lo `test -f 'src/functions/FunctionTrue.cpp' || echo '$(srcdir)/'`src/functions/FunctionTrue.cpp + +FunctionUnordered.lo: src/functions/FunctionUnordered.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionUnordered.lo -MD -MP -MF "$(DEPDIR)/FunctionUnordered.Tpo" -c -o FunctionUnordered.lo `test -f 'src/functions/FunctionUnordered.cpp' || echo '$(srcdir)/'`src/functions/FunctionUnordered.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionUnordered.Tpo" "$(DEPDIR)/FunctionUnordered.Plo"; else rm -f "$(DEPDIR)/FunctionUnordered.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionUnordered.cpp' object='FunctionUnordered.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionUnordered.lo `test -f 'src/functions/FunctionUnordered.cpp' || echo '$(srcdir)/'`src/functions/FunctionUnordered.cpp + +FunctionUpperCase.lo: src/functions/FunctionUpperCase.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionUpperCase.lo -MD -MP -MF "$(DEPDIR)/FunctionUpperCase.Tpo" -c -o FunctionUpperCase.lo `test -f 'src/functions/FunctionUpperCase.cpp' || echo '$(srcdir)/'`src/functions/FunctionUpperCase.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionUpperCase.Tpo" "$(DEPDIR)/FunctionUpperCase.Plo"; else rm -f "$(DEPDIR)/FunctionUpperCase.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionUpperCase.cpp' object='FunctionUpperCase.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionUpperCase.lo `test -f 'src/functions/FunctionUpperCase.cpp' || echo '$(srcdir)/'`src/functions/FunctionUpperCase.cpp + +FunctionZeroOrOne.lo: src/functions/FunctionZeroOrOne.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionZeroOrOne.lo -MD -MP -MF "$(DEPDIR)/FunctionZeroOrOne.Tpo" -c -o FunctionZeroOrOne.lo `test -f 'src/functions/FunctionZeroOrOne.cpp' || echo '$(srcdir)/'`src/functions/FunctionZeroOrOne.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionZeroOrOne.Tpo" "$(DEPDIR)/FunctionZeroOrOne.Plo"; else rm -f "$(DEPDIR)/FunctionZeroOrOne.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionZeroOrOne.cpp' object='FunctionZeroOrOne.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionZeroOrOne.lo `test -f 'src/functions/FunctionZeroOrOne.cpp' || echo '$(srcdir)/'`src/functions/FunctionZeroOrOne.cpp + +FunctionAdjustDateTimeToTimezone.lo: src/functions/FunctionAdjustDateTimeToTimezone.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionAdjustDateTimeToTimezone.lo -MD -MP -MF "$(DEPDIR)/FunctionAdjustDateTimeToTimezone.Tpo" -c -o FunctionAdjustDateTimeToTimezone.lo `test -f 'src/functions/FunctionAdjustDateTimeToTimezone.cpp' || echo '$(srcdir)/'`src/functions/FunctionAdjustDateTimeToTimezone.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionAdjustDateTimeToTimezone.Tpo" "$(DEPDIR)/FunctionAdjustDateTimeToTimezone.Plo"; else rm -f "$(DEPDIR)/FunctionAdjustDateTimeToTimezone.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionAdjustDateTimeToTimezone.cpp' object='FunctionAdjustDateTimeToTimezone.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionAdjustDateTimeToTimezone.lo `test -f 'src/functions/FunctionAdjustDateTimeToTimezone.cpp' || echo '$(srcdir)/'`src/functions/FunctionAdjustDateTimeToTimezone.cpp + +FunctionAdjustDateToTimezone.lo: src/functions/FunctionAdjustDateToTimezone.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionAdjustDateToTimezone.lo -MD -MP -MF "$(DEPDIR)/FunctionAdjustDateToTimezone.Tpo" -c -o FunctionAdjustDateToTimezone.lo `test -f 'src/functions/FunctionAdjustDateToTimezone.cpp' || echo '$(srcdir)/'`src/functions/FunctionAdjustDateToTimezone.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionAdjustDateToTimezone.Tpo" "$(DEPDIR)/FunctionAdjustDateToTimezone.Plo"; else rm -f "$(DEPDIR)/FunctionAdjustDateToTimezone.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionAdjustDateToTimezone.cpp' object='FunctionAdjustDateToTimezone.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionAdjustDateToTimezone.lo `test -f 'src/functions/FunctionAdjustDateToTimezone.cpp' || echo '$(srcdir)/'`src/functions/FunctionAdjustDateToTimezone.cpp + +FunctionAdjustTimeToTimezone.lo: src/functions/FunctionAdjustTimeToTimezone.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionAdjustTimeToTimezone.lo -MD -MP -MF "$(DEPDIR)/FunctionAdjustTimeToTimezone.Tpo" -c -o FunctionAdjustTimeToTimezone.lo `test -f 'src/functions/FunctionAdjustTimeToTimezone.cpp' || echo '$(srcdir)/'`src/functions/FunctionAdjustTimeToTimezone.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionAdjustTimeToTimezone.Tpo" "$(DEPDIR)/FunctionAdjustTimeToTimezone.Plo"; else rm -f "$(DEPDIR)/FunctionAdjustTimeToTimezone.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionAdjustTimeToTimezone.cpp' object='FunctionAdjustTimeToTimezone.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionAdjustTimeToTimezone.lo `test -f 'src/functions/FunctionAdjustTimeToTimezone.cpp' || echo '$(srcdir)/'`src/functions/FunctionAdjustTimeToTimezone.cpp + +FunctionDayFromDate.lo: src/functions/FunctionDayFromDate.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionDayFromDate.lo -MD -MP -MF "$(DEPDIR)/FunctionDayFromDate.Tpo" -c -o FunctionDayFromDate.lo `test -f 'src/functions/FunctionDayFromDate.cpp' || echo '$(srcdir)/'`src/functions/FunctionDayFromDate.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionDayFromDate.Tpo" "$(DEPDIR)/FunctionDayFromDate.Plo"; else rm -f "$(DEPDIR)/FunctionDayFromDate.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionDayFromDate.cpp' object='FunctionDayFromDate.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionDayFromDate.lo `test -f 'src/functions/FunctionDayFromDate.cpp' || echo '$(srcdir)/'`src/functions/FunctionDayFromDate.cpp + +FunctionDayFromDateTime.lo: src/functions/FunctionDayFromDateTime.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionDayFromDateTime.lo -MD -MP -MF "$(DEPDIR)/FunctionDayFromDateTime.Tpo" -c -o FunctionDayFromDateTime.lo `test -f 'src/functions/FunctionDayFromDateTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionDayFromDateTime.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionDayFromDateTime.Tpo" "$(DEPDIR)/FunctionDayFromDateTime.Plo"; else rm -f "$(DEPDIR)/FunctionDayFromDateTime.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionDayFromDateTime.cpp' object='FunctionDayFromDateTime.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionDayFromDateTime.lo `test -f 'src/functions/FunctionDayFromDateTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionDayFromDateTime.cpp + +FunctionDaysFromDuration.lo: src/functions/FunctionDaysFromDuration.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionDaysFromDuration.lo -MD -MP -MF "$(DEPDIR)/FunctionDaysFromDuration.Tpo" -c -o FunctionDaysFromDuration.lo `test -f 'src/functions/FunctionDaysFromDuration.cpp' || echo '$(srcdir)/'`src/functions/FunctionDaysFromDuration.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionDaysFromDuration.Tpo" "$(DEPDIR)/FunctionDaysFromDuration.Plo"; else rm -f "$(DEPDIR)/FunctionDaysFromDuration.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionDaysFromDuration.cpp' object='FunctionDaysFromDuration.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionDaysFromDuration.lo `test -f 'src/functions/FunctionDaysFromDuration.cpp' || echo '$(srcdir)/'`src/functions/FunctionDaysFromDuration.cpp + +FunctionHoursFromDateTime.lo: src/functions/FunctionHoursFromDateTime.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionHoursFromDateTime.lo -MD -MP -MF "$(DEPDIR)/FunctionHoursFromDateTime.Tpo" -c -o FunctionHoursFromDateTime.lo `test -f 'src/functions/FunctionHoursFromDateTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionHoursFromDateTime.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionHoursFromDateTime.Tpo" "$(DEPDIR)/FunctionHoursFromDateTime.Plo"; else rm -f "$(DEPDIR)/FunctionHoursFromDateTime.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionHoursFromDateTime.cpp' object='FunctionHoursFromDateTime.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionHoursFromDateTime.lo `test -f 'src/functions/FunctionHoursFromDateTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionHoursFromDateTime.cpp + +FunctionHoursFromDuration.lo: src/functions/FunctionHoursFromDuration.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionHoursFromDuration.lo -MD -MP -MF "$(DEPDIR)/FunctionHoursFromDuration.Tpo" -c -o FunctionHoursFromDuration.lo `test -f 'src/functions/FunctionHoursFromDuration.cpp' || echo '$(srcdir)/'`src/functions/FunctionHoursFromDuration.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionHoursFromDuration.Tpo" "$(DEPDIR)/FunctionHoursFromDuration.Plo"; else rm -f "$(DEPDIR)/FunctionHoursFromDuration.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionHoursFromDuration.cpp' object='FunctionHoursFromDuration.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionHoursFromDuration.lo `test -f 'src/functions/FunctionHoursFromDuration.cpp' || echo '$(srcdir)/'`src/functions/FunctionHoursFromDuration.cpp + +FunctionHoursFromTime.lo: src/functions/FunctionHoursFromTime.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionHoursFromTime.lo -MD -MP -MF "$(DEPDIR)/FunctionHoursFromTime.Tpo" -c -o FunctionHoursFromTime.lo `test -f 'src/functions/FunctionHoursFromTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionHoursFromTime.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionHoursFromTime.Tpo" "$(DEPDIR)/FunctionHoursFromTime.Plo"; else rm -f "$(DEPDIR)/FunctionHoursFromTime.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionHoursFromTime.cpp' object='FunctionHoursFromTime.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionHoursFromTime.lo `test -f 'src/functions/FunctionHoursFromTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionHoursFromTime.cpp + +FunctionMinutesFromDateTime.lo: src/functions/FunctionMinutesFromDateTime.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionMinutesFromDateTime.lo -MD -MP -MF "$(DEPDIR)/FunctionMinutesFromDateTime.Tpo" -c -o FunctionMinutesFromDateTime.lo `test -f 'src/functions/FunctionMinutesFromDateTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionMinutesFromDateTime.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionMinutesFromDateTime.Tpo" "$(DEPDIR)/FunctionMinutesFromDateTime.Plo"; else rm -f "$(DEPDIR)/FunctionMinutesFromDateTime.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionMinutesFromDateTime.cpp' object='FunctionMinutesFromDateTime.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionMinutesFromDateTime.lo `test -f 'src/functions/FunctionMinutesFromDateTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionMinutesFromDateTime.cpp + +FunctionMinutesFromDuration.lo: src/functions/FunctionMinutesFromDuration.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionMinutesFromDuration.lo -MD -MP -MF "$(DEPDIR)/FunctionMinutesFromDuration.Tpo" -c -o FunctionMinutesFromDuration.lo `test -f 'src/functions/FunctionMinutesFromDuration.cpp' || echo '$(srcdir)/'`src/functions/FunctionMinutesFromDuration.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionMinutesFromDuration.Tpo" "$(DEPDIR)/FunctionMinutesFromDuration.Plo"; else rm -f "$(DEPDIR)/FunctionMinutesFromDuration.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionMinutesFromDuration.cpp' object='FunctionMinutesFromDuration.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionMinutesFromDuration.lo `test -f 'src/functions/FunctionMinutesFromDuration.cpp' || echo '$(srcdir)/'`src/functions/FunctionMinutesFromDuration.cpp + +FunctionMinutesFromTime.lo: src/functions/FunctionMinutesFromTime.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionMinutesFromTime.lo -MD -MP -MF "$(DEPDIR)/FunctionMinutesFromTime.Tpo" -c -o FunctionMinutesFromTime.lo `test -f 'src/functions/FunctionMinutesFromTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionMinutesFromTime.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionMinutesFromTime.Tpo" "$(DEPDIR)/FunctionMinutesFromTime.Plo"; else rm -f "$(DEPDIR)/FunctionMinutesFromTime.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionMinutesFromTime.cpp' object='FunctionMinutesFromTime.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionMinutesFromTime.lo `test -f 'src/functions/FunctionMinutesFromTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionMinutesFromTime.cpp + +FunctionMonthFromDate.lo: src/functions/FunctionMonthFromDate.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionMonthFromDate.lo -MD -MP -MF "$(DEPDIR)/FunctionMonthFromDate.Tpo" -c -o FunctionMonthFromDate.lo `test -f 'src/functions/FunctionMonthFromDate.cpp' || echo '$(srcdir)/'`src/functions/FunctionMonthFromDate.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionMonthFromDate.Tpo" "$(DEPDIR)/FunctionMonthFromDate.Plo"; else rm -f "$(DEPDIR)/FunctionMonthFromDate.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionMonthFromDate.cpp' object='FunctionMonthFromDate.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionMonthFromDate.lo `test -f 'src/functions/FunctionMonthFromDate.cpp' || echo '$(srcdir)/'`src/functions/FunctionMonthFromDate.cpp + +FunctionMonthFromDateTime.lo: src/functions/FunctionMonthFromDateTime.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionMonthFromDateTime.lo -MD -MP -MF "$(DEPDIR)/FunctionMonthFromDateTime.Tpo" -c -o FunctionMonthFromDateTime.lo `test -f 'src/functions/FunctionMonthFromDateTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionMonthFromDateTime.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionMonthFromDateTime.Tpo" "$(DEPDIR)/FunctionMonthFromDateTime.Plo"; else rm -f "$(DEPDIR)/FunctionMonthFromDateTime.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionMonthFromDateTime.cpp' object='FunctionMonthFromDateTime.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionMonthFromDateTime.lo `test -f 'src/functions/FunctionMonthFromDateTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionMonthFromDateTime.cpp + +FunctionMonthsFromDuration.lo: src/functions/FunctionMonthsFromDuration.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionMonthsFromDuration.lo -MD -MP -MF "$(DEPDIR)/FunctionMonthsFromDuration.Tpo" -c -o FunctionMonthsFromDuration.lo `test -f 'src/functions/FunctionMonthsFromDuration.cpp' || echo '$(srcdir)/'`src/functions/FunctionMonthsFromDuration.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionMonthsFromDuration.Tpo" "$(DEPDIR)/FunctionMonthsFromDuration.Plo"; else rm -f "$(DEPDIR)/FunctionMonthsFromDuration.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionMonthsFromDuration.cpp' object='FunctionMonthsFromDuration.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionMonthsFromDuration.lo `test -f 'src/functions/FunctionMonthsFromDuration.cpp' || echo '$(srcdir)/'`src/functions/FunctionMonthsFromDuration.cpp + +FunctionSecondsFromDateTime.lo: src/functions/FunctionSecondsFromDateTime.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionSecondsFromDateTime.lo -MD -MP -MF "$(DEPDIR)/FunctionSecondsFromDateTime.Tpo" -c -o FunctionSecondsFromDateTime.lo `test -f 'src/functions/FunctionSecondsFromDateTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionSecondsFromDateTime.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionSecondsFromDateTime.Tpo" "$(DEPDIR)/FunctionSecondsFromDateTime.Plo"; else rm -f "$(DEPDIR)/FunctionSecondsFromDateTime.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionSecondsFromDateTime.cpp' object='FunctionSecondsFromDateTime.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionSecondsFromDateTime.lo `test -f 'src/functions/FunctionSecondsFromDateTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionSecondsFromDateTime.cpp + +FunctionSecondsFromDuration.lo: src/functions/FunctionSecondsFromDuration.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionSecondsFromDuration.lo -MD -MP -MF "$(DEPDIR)/FunctionSecondsFromDuration.Tpo" -c -o FunctionSecondsFromDuration.lo `test -f 'src/functions/FunctionSecondsFromDuration.cpp' || echo '$(srcdir)/'`src/functions/FunctionSecondsFromDuration.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionSecondsFromDuration.Tpo" "$(DEPDIR)/FunctionSecondsFromDuration.Plo"; else rm -f "$(DEPDIR)/FunctionSecondsFromDuration.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionSecondsFromDuration.cpp' object='FunctionSecondsFromDuration.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionSecondsFromDuration.lo `test -f 'src/functions/FunctionSecondsFromDuration.cpp' || echo '$(srcdir)/'`src/functions/FunctionSecondsFromDuration.cpp + +FunctionSecondsFromTime.lo: src/functions/FunctionSecondsFromTime.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionSecondsFromTime.lo -MD -MP -MF "$(DEPDIR)/FunctionSecondsFromTime.Tpo" -c -o FunctionSecondsFromTime.lo `test -f 'src/functions/FunctionSecondsFromTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionSecondsFromTime.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionSecondsFromTime.Tpo" "$(DEPDIR)/FunctionSecondsFromTime.Plo"; else rm -f "$(DEPDIR)/FunctionSecondsFromTime.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionSecondsFromTime.cpp' object='FunctionSecondsFromTime.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionSecondsFromTime.lo `test -f 'src/functions/FunctionSecondsFromTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionSecondsFromTime.cpp + +FunctionTimezoneFromDate.lo: src/functions/FunctionTimezoneFromDate.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionTimezoneFromDate.lo -MD -MP -MF "$(DEPDIR)/FunctionTimezoneFromDate.Tpo" -c -o FunctionTimezoneFromDate.lo `test -f 'src/functions/FunctionTimezoneFromDate.cpp' || echo '$(srcdir)/'`src/functions/FunctionTimezoneFromDate.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionTimezoneFromDate.Tpo" "$(DEPDIR)/FunctionTimezoneFromDate.Plo"; else rm -f "$(DEPDIR)/FunctionTimezoneFromDate.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionTimezoneFromDate.cpp' object='FunctionTimezoneFromDate.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionTimezoneFromDate.lo `test -f 'src/functions/FunctionTimezoneFromDate.cpp' || echo '$(srcdir)/'`src/functions/FunctionTimezoneFromDate.cpp + +FunctionTimezoneFromDateTime.lo: src/functions/FunctionTimezoneFromDateTime.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionTimezoneFromDateTime.lo -MD -MP -MF "$(DEPDIR)/FunctionTimezoneFromDateTime.Tpo" -c -o FunctionTimezoneFromDateTime.lo `test -f 'src/functions/FunctionTimezoneFromDateTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionTimezoneFromDateTime.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionTimezoneFromDateTime.Tpo" "$(DEPDIR)/FunctionTimezoneFromDateTime.Plo"; else rm -f "$(DEPDIR)/FunctionTimezoneFromDateTime.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionTimezoneFromDateTime.cpp' object='FunctionTimezoneFromDateTime.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionTimezoneFromDateTime.lo `test -f 'src/functions/FunctionTimezoneFromDateTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionTimezoneFromDateTime.cpp + +FunctionTimezoneFromTime.lo: src/functions/FunctionTimezoneFromTime.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionTimezoneFromTime.lo -MD -MP -MF "$(DEPDIR)/FunctionTimezoneFromTime.Tpo" -c -o FunctionTimezoneFromTime.lo `test -f 'src/functions/FunctionTimezoneFromTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionTimezoneFromTime.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionTimezoneFromTime.Tpo" "$(DEPDIR)/FunctionTimezoneFromTime.Plo"; else rm -f "$(DEPDIR)/FunctionTimezoneFromTime.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionTimezoneFromTime.cpp' object='FunctionTimezoneFromTime.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionTimezoneFromTime.lo `test -f 'src/functions/FunctionTimezoneFromTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionTimezoneFromTime.cpp + +FunctionYearFromDate.lo: src/functions/FunctionYearFromDate.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionYearFromDate.lo -MD -MP -MF "$(DEPDIR)/FunctionYearFromDate.Tpo" -c -o FunctionYearFromDate.lo `test -f 'src/functions/FunctionYearFromDate.cpp' || echo '$(srcdir)/'`src/functions/FunctionYearFromDate.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionYearFromDate.Tpo" "$(DEPDIR)/FunctionYearFromDate.Plo"; else rm -f "$(DEPDIR)/FunctionYearFromDate.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionYearFromDate.cpp' object='FunctionYearFromDate.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionYearFromDate.lo `test -f 'src/functions/FunctionYearFromDate.cpp' || echo '$(srcdir)/'`src/functions/FunctionYearFromDate.cpp + +FunctionYearFromDateTime.lo: src/functions/FunctionYearFromDateTime.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionYearFromDateTime.lo -MD -MP -MF "$(DEPDIR)/FunctionYearFromDateTime.Tpo" -c -o FunctionYearFromDateTime.lo `test -f 'src/functions/FunctionYearFromDateTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionYearFromDateTime.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionYearFromDateTime.Tpo" "$(DEPDIR)/FunctionYearFromDateTime.Plo"; else rm -f "$(DEPDIR)/FunctionYearFromDateTime.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionYearFromDateTime.cpp' object='FunctionYearFromDateTime.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionYearFromDateTime.lo `test -f 'src/functions/FunctionYearFromDateTime.cpp' || echo '$(srcdir)/'`src/functions/FunctionYearFromDateTime.cpp + +FunctionYearsFromDuration.lo: src/functions/FunctionYearsFromDuration.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FunctionYearsFromDuration.lo -MD -MP -MF "$(DEPDIR)/FunctionYearsFromDuration.Tpo" -c -o FunctionYearsFromDuration.lo `test -f 'src/functions/FunctionYearsFromDuration.cpp' || echo '$(srcdir)/'`src/functions/FunctionYearsFromDuration.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FunctionYearsFromDuration.Tpo" "$(DEPDIR)/FunctionYearsFromDuration.Plo"; else rm -f "$(DEPDIR)/FunctionYearsFromDuration.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/FunctionYearsFromDuration.cpp' object='FunctionYearsFromDuration.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FunctionYearsFromDuration.lo `test -f 'src/functions/FunctionYearsFromDuration.cpp' || echo '$(srcdir)/'`src/functions/FunctionYearsFromDuration.cpp + +XQUserFunction.lo: src/functions/XQUserFunction.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQUserFunction.lo -MD -MP -MF "$(DEPDIR)/XQUserFunction.Tpo" -c -o XQUserFunction.lo `test -f 'src/functions/XQUserFunction.cpp' || echo '$(srcdir)/'`src/functions/XQUserFunction.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQUserFunction.Tpo" "$(DEPDIR)/XQUserFunction.Plo"; else rm -f "$(DEPDIR)/XQUserFunction.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/functions/XQUserFunction.cpp' object='XQUserFunction.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQUserFunction.lo `test -f 'src/functions/XQUserFunction.cpp' || echo '$(srcdir)/'`src/functions/XQUserFunction.cpp + +ATAnySimpleTypeImpl.lo: src/items/impl/ATAnySimpleTypeImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATAnySimpleTypeImpl.lo -MD -MP -MF "$(DEPDIR)/ATAnySimpleTypeImpl.Tpo" -c -o ATAnySimpleTypeImpl.lo `test -f 'src/items/impl/ATAnySimpleTypeImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATAnySimpleTypeImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATAnySimpleTypeImpl.Tpo" "$(DEPDIR)/ATAnySimpleTypeImpl.Plo"; else rm -f "$(DEPDIR)/ATAnySimpleTypeImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/ATAnySimpleTypeImpl.cpp' object='ATAnySimpleTypeImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATAnySimpleTypeImpl.lo `test -f 'src/items/impl/ATAnySimpleTypeImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATAnySimpleTypeImpl.cpp + +ATAnyURIOrDerivedImpl.lo: src/items/impl/ATAnyURIOrDerivedImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATAnyURIOrDerivedImpl.lo -MD -MP -MF "$(DEPDIR)/ATAnyURIOrDerivedImpl.Tpo" -c -o ATAnyURIOrDerivedImpl.lo `test -f 'src/items/impl/ATAnyURIOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATAnyURIOrDerivedImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATAnyURIOrDerivedImpl.Tpo" "$(DEPDIR)/ATAnyURIOrDerivedImpl.Plo"; else rm -f "$(DEPDIR)/ATAnyURIOrDerivedImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/ATAnyURIOrDerivedImpl.cpp' object='ATAnyURIOrDerivedImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATAnyURIOrDerivedImpl.lo `test -f 'src/items/impl/ATAnyURIOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATAnyURIOrDerivedImpl.cpp + +ATBase64BinaryOrDerivedImpl.lo: src/items/impl/ATBase64BinaryOrDerivedImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATBase64BinaryOrDerivedImpl.lo -MD -MP -MF "$(DEPDIR)/ATBase64BinaryOrDerivedImpl.Tpo" -c -o ATBase64BinaryOrDerivedImpl.lo `test -f 'src/items/impl/ATBase64BinaryOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATBase64BinaryOrDerivedImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATBase64BinaryOrDerivedImpl.Tpo" "$(DEPDIR)/ATBase64BinaryOrDerivedImpl.Plo"; else rm -f "$(DEPDIR)/ATBase64BinaryOrDerivedImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/ATBase64BinaryOrDerivedImpl.cpp' object='ATBase64BinaryOrDerivedImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATBase64BinaryOrDerivedImpl.lo `test -f 'src/items/impl/ATBase64BinaryOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATBase64BinaryOrDerivedImpl.cpp + +ATBooleanOrDerivedImpl.lo: src/items/impl/ATBooleanOrDerivedImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATBooleanOrDerivedImpl.lo -MD -MP -MF "$(DEPDIR)/ATBooleanOrDerivedImpl.Tpo" -c -o ATBooleanOrDerivedImpl.lo `test -f 'src/items/impl/ATBooleanOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATBooleanOrDerivedImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATBooleanOrDerivedImpl.Tpo" "$(DEPDIR)/ATBooleanOrDerivedImpl.Plo"; else rm -f "$(DEPDIR)/ATBooleanOrDerivedImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/ATBooleanOrDerivedImpl.cpp' object='ATBooleanOrDerivedImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATBooleanOrDerivedImpl.lo `test -f 'src/items/impl/ATBooleanOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATBooleanOrDerivedImpl.cpp + +ATDateOrDerivedImpl.lo: src/items/impl/ATDateOrDerivedImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATDateOrDerivedImpl.lo -MD -MP -MF "$(DEPDIR)/ATDateOrDerivedImpl.Tpo" -c -o ATDateOrDerivedImpl.lo `test -f 'src/items/impl/ATDateOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATDateOrDerivedImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATDateOrDerivedImpl.Tpo" "$(DEPDIR)/ATDateOrDerivedImpl.Plo"; else rm -f "$(DEPDIR)/ATDateOrDerivedImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/ATDateOrDerivedImpl.cpp' object='ATDateOrDerivedImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATDateOrDerivedImpl.lo `test -f 'src/items/impl/ATDateOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATDateOrDerivedImpl.cpp + +ATDateTimeOrDerivedImpl.lo: src/items/impl/ATDateTimeOrDerivedImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATDateTimeOrDerivedImpl.lo -MD -MP -MF "$(DEPDIR)/ATDateTimeOrDerivedImpl.Tpo" -c -o ATDateTimeOrDerivedImpl.lo `test -f 'src/items/impl/ATDateTimeOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATDateTimeOrDerivedImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATDateTimeOrDerivedImpl.Tpo" "$(DEPDIR)/ATDateTimeOrDerivedImpl.Plo"; else rm -f "$(DEPDIR)/ATDateTimeOrDerivedImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/ATDateTimeOrDerivedImpl.cpp' object='ATDateTimeOrDerivedImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATDateTimeOrDerivedImpl.lo `test -f 'src/items/impl/ATDateTimeOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATDateTimeOrDerivedImpl.cpp + +ATDecimalOrDerivedImpl.lo: src/items/impl/ATDecimalOrDerivedImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATDecimalOrDerivedImpl.lo -MD -MP -MF "$(DEPDIR)/ATDecimalOrDerivedImpl.Tpo" -c -o ATDecimalOrDerivedImpl.lo `test -f 'src/items/impl/ATDecimalOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATDecimalOrDerivedImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATDecimalOrDerivedImpl.Tpo" "$(DEPDIR)/ATDecimalOrDerivedImpl.Plo"; else rm -f "$(DEPDIR)/ATDecimalOrDerivedImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/ATDecimalOrDerivedImpl.cpp' object='ATDecimalOrDerivedImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATDecimalOrDerivedImpl.lo `test -f 'src/items/impl/ATDecimalOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATDecimalOrDerivedImpl.cpp + +ATDoubleOrDerivedImpl.lo: src/items/impl/ATDoubleOrDerivedImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATDoubleOrDerivedImpl.lo -MD -MP -MF "$(DEPDIR)/ATDoubleOrDerivedImpl.Tpo" -c -o ATDoubleOrDerivedImpl.lo `test -f 'src/items/impl/ATDoubleOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATDoubleOrDerivedImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATDoubleOrDerivedImpl.Tpo" "$(DEPDIR)/ATDoubleOrDerivedImpl.Plo"; else rm -f "$(DEPDIR)/ATDoubleOrDerivedImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/ATDoubleOrDerivedImpl.cpp' object='ATDoubleOrDerivedImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATDoubleOrDerivedImpl.lo `test -f 'src/items/impl/ATDoubleOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATDoubleOrDerivedImpl.cpp + +ATDurationOrDerivedImpl.lo: src/items/impl/ATDurationOrDerivedImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATDurationOrDerivedImpl.lo -MD -MP -MF "$(DEPDIR)/ATDurationOrDerivedImpl.Tpo" -c -o ATDurationOrDerivedImpl.lo `test -f 'src/items/impl/ATDurationOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATDurationOrDerivedImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATDurationOrDerivedImpl.Tpo" "$(DEPDIR)/ATDurationOrDerivedImpl.Plo"; else rm -f "$(DEPDIR)/ATDurationOrDerivedImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/ATDurationOrDerivedImpl.cpp' object='ATDurationOrDerivedImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATDurationOrDerivedImpl.lo `test -f 'src/items/impl/ATDurationOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATDurationOrDerivedImpl.cpp + +ATFloatOrDerivedImpl.lo: src/items/impl/ATFloatOrDerivedImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATFloatOrDerivedImpl.lo -MD -MP -MF "$(DEPDIR)/ATFloatOrDerivedImpl.Tpo" -c -o ATFloatOrDerivedImpl.lo `test -f 'src/items/impl/ATFloatOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATFloatOrDerivedImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATFloatOrDerivedImpl.Tpo" "$(DEPDIR)/ATFloatOrDerivedImpl.Plo"; else rm -f "$(DEPDIR)/ATFloatOrDerivedImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/ATFloatOrDerivedImpl.cpp' object='ATFloatOrDerivedImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATFloatOrDerivedImpl.lo `test -f 'src/items/impl/ATFloatOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATFloatOrDerivedImpl.cpp + +ATGDayOrDerivedImpl.lo: src/items/impl/ATGDayOrDerivedImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATGDayOrDerivedImpl.lo -MD -MP -MF "$(DEPDIR)/ATGDayOrDerivedImpl.Tpo" -c -o ATGDayOrDerivedImpl.lo `test -f 'src/items/impl/ATGDayOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATGDayOrDerivedImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATGDayOrDerivedImpl.Tpo" "$(DEPDIR)/ATGDayOrDerivedImpl.Plo"; else rm -f "$(DEPDIR)/ATGDayOrDerivedImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/ATGDayOrDerivedImpl.cpp' object='ATGDayOrDerivedImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATGDayOrDerivedImpl.lo `test -f 'src/items/impl/ATGDayOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATGDayOrDerivedImpl.cpp + +ATGMonthDayOrDerivedImpl.lo: src/items/impl/ATGMonthDayOrDerivedImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATGMonthDayOrDerivedImpl.lo -MD -MP -MF "$(DEPDIR)/ATGMonthDayOrDerivedImpl.Tpo" -c -o ATGMonthDayOrDerivedImpl.lo `test -f 'src/items/impl/ATGMonthDayOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATGMonthDayOrDerivedImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATGMonthDayOrDerivedImpl.Tpo" "$(DEPDIR)/ATGMonthDayOrDerivedImpl.Plo"; else rm -f "$(DEPDIR)/ATGMonthDayOrDerivedImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/ATGMonthDayOrDerivedImpl.cpp' object='ATGMonthDayOrDerivedImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATGMonthDayOrDerivedImpl.lo `test -f 'src/items/impl/ATGMonthDayOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATGMonthDayOrDerivedImpl.cpp + +ATGMonthOrDerivedImpl.lo: src/items/impl/ATGMonthOrDerivedImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATGMonthOrDerivedImpl.lo -MD -MP -MF "$(DEPDIR)/ATGMonthOrDerivedImpl.Tpo" -c -o ATGMonthOrDerivedImpl.lo `test -f 'src/items/impl/ATGMonthOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATGMonthOrDerivedImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATGMonthOrDerivedImpl.Tpo" "$(DEPDIR)/ATGMonthOrDerivedImpl.Plo"; else rm -f "$(DEPDIR)/ATGMonthOrDerivedImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/ATGMonthOrDerivedImpl.cpp' object='ATGMonthOrDerivedImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATGMonthOrDerivedImpl.lo `test -f 'src/items/impl/ATGMonthOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATGMonthOrDerivedImpl.cpp + +ATGYearMonthOrDerivedImpl.lo: src/items/impl/ATGYearMonthOrDerivedImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATGYearMonthOrDerivedImpl.lo -MD -MP -MF "$(DEPDIR)/ATGYearMonthOrDerivedImpl.Tpo" -c -o ATGYearMonthOrDerivedImpl.lo `test -f 'src/items/impl/ATGYearMonthOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATGYearMonthOrDerivedImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATGYearMonthOrDerivedImpl.Tpo" "$(DEPDIR)/ATGYearMonthOrDerivedImpl.Plo"; else rm -f "$(DEPDIR)/ATGYearMonthOrDerivedImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/ATGYearMonthOrDerivedImpl.cpp' object='ATGYearMonthOrDerivedImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATGYearMonthOrDerivedImpl.lo `test -f 'src/items/impl/ATGYearMonthOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATGYearMonthOrDerivedImpl.cpp + +ATGYearOrDerivedImpl.lo: src/items/impl/ATGYearOrDerivedImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATGYearOrDerivedImpl.lo -MD -MP -MF "$(DEPDIR)/ATGYearOrDerivedImpl.Tpo" -c -o ATGYearOrDerivedImpl.lo `test -f 'src/items/impl/ATGYearOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATGYearOrDerivedImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATGYearOrDerivedImpl.Tpo" "$(DEPDIR)/ATGYearOrDerivedImpl.Plo"; else rm -f "$(DEPDIR)/ATGYearOrDerivedImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/ATGYearOrDerivedImpl.cpp' object='ATGYearOrDerivedImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATGYearOrDerivedImpl.lo `test -f 'src/items/impl/ATGYearOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATGYearOrDerivedImpl.cpp + +ATHexBinaryOrDerivedImpl.lo: src/items/impl/ATHexBinaryOrDerivedImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATHexBinaryOrDerivedImpl.lo -MD -MP -MF "$(DEPDIR)/ATHexBinaryOrDerivedImpl.Tpo" -c -o ATHexBinaryOrDerivedImpl.lo `test -f 'src/items/impl/ATHexBinaryOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATHexBinaryOrDerivedImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATHexBinaryOrDerivedImpl.Tpo" "$(DEPDIR)/ATHexBinaryOrDerivedImpl.Plo"; else rm -f "$(DEPDIR)/ATHexBinaryOrDerivedImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/ATHexBinaryOrDerivedImpl.cpp' object='ATHexBinaryOrDerivedImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATHexBinaryOrDerivedImpl.lo `test -f 'src/items/impl/ATHexBinaryOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATHexBinaryOrDerivedImpl.cpp + +ATNotationOrDerivedImpl.lo: src/items/impl/ATNotationOrDerivedImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATNotationOrDerivedImpl.lo -MD -MP -MF "$(DEPDIR)/ATNotationOrDerivedImpl.Tpo" -c -o ATNotationOrDerivedImpl.lo `test -f 'src/items/impl/ATNotationOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATNotationOrDerivedImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATNotationOrDerivedImpl.Tpo" "$(DEPDIR)/ATNotationOrDerivedImpl.Plo"; else rm -f "$(DEPDIR)/ATNotationOrDerivedImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/ATNotationOrDerivedImpl.cpp' object='ATNotationOrDerivedImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATNotationOrDerivedImpl.lo `test -f 'src/items/impl/ATNotationOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATNotationOrDerivedImpl.cpp + +ATQNameOrDerivedImpl.lo: src/items/impl/ATQNameOrDerivedImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATQNameOrDerivedImpl.lo -MD -MP -MF "$(DEPDIR)/ATQNameOrDerivedImpl.Tpo" -c -o ATQNameOrDerivedImpl.lo `test -f 'src/items/impl/ATQNameOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATQNameOrDerivedImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATQNameOrDerivedImpl.Tpo" "$(DEPDIR)/ATQNameOrDerivedImpl.Plo"; else rm -f "$(DEPDIR)/ATQNameOrDerivedImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/ATQNameOrDerivedImpl.cpp' object='ATQNameOrDerivedImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATQNameOrDerivedImpl.lo `test -f 'src/items/impl/ATQNameOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATQNameOrDerivedImpl.cpp + +ATStringOrDerivedImpl.lo: src/items/impl/ATStringOrDerivedImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATStringOrDerivedImpl.lo -MD -MP -MF "$(DEPDIR)/ATStringOrDerivedImpl.Tpo" -c -o ATStringOrDerivedImpl.lo `test -f 'src/items/impl/ATStringOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATStringOrDerivedImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATStringOrDerivedImpl.Tpo" "$(DEPDIR)/ATStringOrDerivedImpl.Plo"; else rm -f "$(DEPDIR)/ATStringOrDerivedImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/ATStringOrDerivedImpl.cpp' object='ATStringOrDerivedImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATStringOrDerivedImpl.lo `test -f 'src/items/impl/ATStringOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATStringOrDerivedImpl.cpp + +ATTimeOrDerivedImpl.lo: src/items/impl/ATTimeOrDerivedImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATTimeOrDerivedImpl.lo -MD -MP -MF "$(DEPDIR)/ATTimeOrDerivedImpl.Tpo" -c -o ATTimeOrDerivedImpl.lo `test -f 'src/items/impl/ATTimeOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATTimeOrDerivedImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATTimeOrDerivedImpl.Tpo" "$(DEPDIR)/ATTimeOrDerivedImpl.Plo"; else rm -f "$(DEPDIR)/ATTimeOrDerivedImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/ATTimeOrDerivedImpl.cpp' object='ATTimeOrDerivedImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATTimeOrDerivedImpl.lo `test -f 'src/items/impl/ATTimeOrDerivedImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATTimeOrDerivedImpl.cpp + +ATUntypedAtomicImpl.lo: src/items/impl/ATUntypedAtomicImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATUntypedAtomicImpl.lo -MD -MP -MF "$(DEPDIR)/ATUntypedAtomicImpl.Tpo" -c -o ATUntypedAtomicImpl.lo `test -f 'src/items/impl/ATUntypedAtomicImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATUntypedAtomicImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATUntypedAtomicImpl.Tpo" "$(DEPDIR)/ATUntypedAtomicImpl.Plo"; else rm -f "$(DEPDIR)/ATUntypedAtomicImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/ATUntypedAtomicImpl.cpp' object='ATUntypedAtomicImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATUntypedAtomicImpl.lo `test -f 'src/items/impl/ATUntypedAtomicImpl.cpp' || echo '$(srcdir)/'`src/items/impl/ATUntypedAtomicImpl.cpp + +NodeImpl.lo: src/items/impl/NodeImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT NodeImpl.lo -MD -MP -MF "$(DEPDIR)/NodeImpl.Tpo" -c -o NodeImpl.lo `test -f 'src/items/impl/NodeImpl.cpp' || echo '$(srcdir)/'`src/items/impl/NodeImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/NodeImpl.Tpo" "$(DEPDIR)/NodeImpl.Plo"; else rm -f "$(DEPDIR)/NodeImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/impl/NodeImpl.cpp' object='NodeImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o NodeImpl.lo `test -f 'src/items/impl/NodeImpl.cpp' || echo '$(srcdir)/'`src/items/impl/NodeImpl.cpp + +DatatypeFactory.lo: src/items/DatatypeFactory.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DatatypeFactory.lo -MD -MP -MF "$(DEPDIR)/DatatypeFactory.Tpo" -c -o DatatypeFactory.lo `test -f 'src/items/DatatypeFactory.cpp' || echo '$(srcdir)/'`src/items/DatatypeFactory.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/DatatypeFactory.Tpo" "$(DEPDIR)/DatatypeFactory.Plo"; else rm -f "$(DEPDIR)/DatatypeFactory.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/DatatypeFactory.cpp' object='DatatypeFactory.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DatatypeFactory.lo `test -f 'src/items/DatatypeFactory.cpp' || echo '$(srcdir)/'`src/items/DatatypeFactory.cpp + +DatatypeLookup.lo: src/items/DatatypeLookup.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DatatypeLookup.lo -MD -MP -MF "$(DEPDIR)/DatatypeLookup.Tpo" -c -o DatatypeLookup.lo `test -f 'src/items/DatatypeLookup.cpp' || echo '$(srcdir)/'`src/items/DatatypeLookup.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/DatatypeLookup.Tpo" "$(DEPDIR)/DatatypeLookup.Plo"; else rm -f "$(DEPDIR)/DatatypeLookup.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/DatatypeLookup.cpp' object='DatatypeLookup.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DatatypeLookup.lo `test -f 'src/items/DatatypeLookup.cpp' || echo '$(srcdir)/'`src/items/DatatypeLookup.cpp + +AnyAtomicTypeConstructor.lo: src/items/AnyAtomicTypeConstructor.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT AnyAtomicTypeConstructor.lo -MD -MP -MF "$(DEPDIR)/AnyAtomicTypeConstructor.Tpo" -c -o AnyAtomicTypeConstructor.lo `test -f 'src/items/AnyAtomicTypeConstructor.cpp' || echo '$(srcdir)/'`src/items/AnyAtomicTypeConstructor.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/AnyAtomicTypeConstructor.Tpo" "$(DEPDIR)/AnyAtomicTypeConstructor.Plo"; else rm -f "$(DEPDIR)/AnyAtomicTypeConstructor.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/AnyAtomicTypeConstructor.cpp' object='AnyAtomicTypeConstructor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o AnyAtomicTypeConstructor.lo `test -f 'src/items/AnyAtomicTypeConstructor.cpp' || echo '$(srcdir)/'`src/items/AnyAtomicTypeConstructor.cpp + +AnyAtomicType.lo: src/items/AnyAtomicType.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT AnyAtomicType.lo -MD -MP -MF "$(DEPDIR)/AnyAtomicType.Tpo" -c -o AnyAtomicType.lo `test -f 'src/items/AnyAtomicType.cpp' || echo '$(srcdir)/'`src/items/AnyAtomicType.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/AnyAtomicType.Tpo" "$(DEPDIR)/AnyAtomicType.Plo"; else rm -f "$(DEPDIR)/AnyAtomicType.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/AnyAtomicType.cpp' object='AnyAtomicType.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o AnyAtomicType.lo `test -f 'src/items/AnyAtomicType.cpp' || echo '$(srcdir)/'`src/items/AnyAtomicType.cpp + +ATDurationOrDerived.lo: src/items/ATDurationOrDerived.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATDurationOrDerived.lo -MD -MP -MF "$(DEPDIR)/ATDurationOrDerived.Tpo" -c -o ATDurationOrDerived.lo `test -f 'src/items/ATDurationOrDerived.cpp' || echo '$(srcdir)/'`src/items/ATDurationOrDerived.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATDurationOrDerived.Tpo" "$(DEPDIR)/ATDurationOrDerived.Plo"; else rm -f "$(DEPDIR)/ATDurationOrDerived.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/ATDurationOrDerived.cpp' object='ATDurationOrDerived.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATDurationOrDerived.lo `test -f 'src/items/ATDurationOrDerived.cpp' || echo '$(srcdir)/'`src/items/ATDurationOrDerived.cpp + +ATQNameConstructor.lo: src/items/ATQNameConstructor.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATQNameConstructor.lo -MD -MP -MF "$(DEPDIR)/ATQNameConstructor.Tpo" -c -o ATQNameConstructor.lo `test -f 'src/items/ATQNameConstructor.cpp' || echo '$(srcdir)/'`src/items/ATQNameConstructor.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATQNameConstructor.Tpo" "$(DEPDIR)/ATQNameConstructor.Plo"; else rm -f "$(DEPDIR)/ATQNameConstructor.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/ATQNameConstructor.cpp' object='ATQNameConstructor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATQNameConstructor.lo `test -f 'src/items/ATQNameConstructor.cpp' || echo '$(srcdir)/'`src/items/ATQNameConstructor.cpp + +ATUntypedAtomic.lo: src/items/ATUntypedAtomic.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ATUntypedAtomic.lo -MD -MP -MF "$(DEPDIR)/ATUntypedAtomic.Tpo" -c -o ATUntypedAtomic.lo `test -f 'src/items/ATUntypedAtomic.cpp' || echo '$(srcdir)/'`src/items/ATUntypedAtomic.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ATUntypedAtomic.Tpo" "$(DEPDIR)/ATUntypedAtomic.Plo"; else rm -f "$(DEPDIR)/ATUntypedAtomic.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/ATUntypedAtomic.cpp' object='ATUntypedAtomic.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ATUntypedAtomic.lo `test -f 'src/items/ATUntypedAtomic.cpp' || echo '$(srcdir)/'`src/items/ATUntypedAtomic.cpp + +DateOrTimeType.lo: src/items/DateOrTimeType.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DateOrTimeType.lo -MD -MP -MF "$(DEPDIR)/DateOrTimeType.Tpo" -c -o DateOrTimeType.lo `test -f 'src/items/DateOrTimeType.cpp' || echo '$(srcdir)/'`src/items/DateOrTimeType.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/DateOrTimeType.Tpo" "$(DEPDIR)/DateOrTimeType.Plo"; else rm -f "$(DEPDIR)/DateOrTimeType.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/DateOrTimeType.cpp' object='DateOrTimeType.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DateOrTimeType.lo `test -f 'src/items/DateOrTimeType.cpp' || echo '$(srcdir)/'`src/items/DateOrTimeType.cpp + +Item.lo: src/items/Item.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Item.lo -MD -MP -MF "$(DEPDIR)/Item.Tpo" -c -o Item.lo `test -f 'src/items/Item.cpp' || echo '$(srcdir)/'`src/items/Item.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/Item.Tpo" "$(DEPDIR)/Item.Plo"; else rm -f "$(DEPDIR)/Item.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/Item.cpp' object='Item.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Item.lo `test -f 'src/items/Item.cpp' || echo '$(srcdir)/'`src/items/Item.cpp + +Node.lo: src/items/Node.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Node.lo -MD -MP -MF "$(DEPDIR)/Node.Tpo" -c -o Node.lo `test -f 'src/items/Node.cpp' || echo '$(srcdir)/'`src/items/Node.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/Node.Tpo" "$(DEPDIR)/Node.Plo"; else rm -f "$(DEPDIR)/Node.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/Node.cpp' object='Node.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Node.lo `test -f 'src/items/Node.cpp' || echo '$(srcdir)/'`src/items/Node.cpp + +Numeric.lo: src/items/Numeric.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Numeric.lo -MD -MP -MF "$(DEPDIR)/Numeric.Tpo" -c -o Numeric.lo `test -f 'src/items/Numeric.cpp' || echo '$(srcdir)/'`src/items/Numeric.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/Numeric.Tpo" "$(DEPDIR)/Numeric.Plo"; else rm -f "$(DEPDIR)/Numeric.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/Numeric.cpp' object='Numeric.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Numeric.lo `test -f 'src/items/Numeric.cpp' || echo '$(srcdir)/'`src/items/Numeric.cpp + +NumericTypeConstructor.lo: src/items/NumericTypeConstructor.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT NumericTypeConstructor.lo -MD -MP -MF "$(DEPDIR)/NumericTypeConstructor.Tpo" -c -o NumericTypeConstructor.lo `test -f 'src/items/NumericTypeConstructor.cpp' || echo '$(srcdir)/'`src/items/NumericTypeConstructor.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/NumericTypeConstructor.Tpo" "$(DEPDIR)/NumericTypeConstructor.Plo"; else rm -f "$(DEPDIR)/NumericTypeConstructor.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/NumericTypeConstructor.cpp' object='NumericTypeConstructor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o NumericTypeConstructor.lo `test -f 'src/items/NumericTypeConstructor.cpp' || echo '$(srcdir)/'`src/items/NumericTypeConstructor.cpp + +Timezone.lo: src/items/Timezone.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Timezone.lo -MD -MP -MF "$(DEPDIR)/Timezone.Tpo" -c -o Timezone.lo `test -f 'src/items/Timezone.cpp' || echo '$(srcdir)/'`src/items/Timezone.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/Timezone.Tpo" "$(DEPDIR)/Timezone.Plo"; else rm -f "$(DEPDIR)/Timezone.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/items/Timezone.cpp' object='Timezone.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Timezone.lo `test -f 'src/items/Timezone.cpp' || echo '$(srcdir)/'`src/items/Timezone.cpp + +QName.lo: src/parser/QName.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT QName.lo -MD -MP -MF "$(DEPDIR)/QName.Tpo" -c -o QName.lo `test -f 'src/parser/QName.cpp' || echo '$(srcdir)/'`src/parser/QName.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/QName.Tpo" "$(DEPDIR)/QName.Plo"; else rm -f "$(DEPDIR)/QName.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/parser/QName.cpp' object='QName.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o QName.lo `test -f 'src/parser/QName.cpp' || echo '$(srcdir)/'`src/parser/QName.cpp + +XQParser.lo: src/parser/XQParser.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQParser.lo -MD -MP -MF "$(DEPDIR)/XQParser.Tpo" -c -o XQParser.lo `test -f 'src/parser/XQParser.cpp' || echo '$(srcdir)/'`src/parser/XQParser.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQParser.Tpo" "$(DEPDIR)/XQParser.Plo"; else rm -f "$(DEPDIR)/XQParser.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/parser/XQParser.cpp' object='XQParser.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQParser.lo `test -f 'src/parser/XQParser.cpp' || echo '$(srcdir)/'`src/parser/XQParser.cpp + +XQLexer.lo: src/lexer/XQLexer.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT XQLexer.lo -MD -MP -MF "$(DEPDIR)/XQLexer.Tpo" -c -o XQLexer.lo `test -f 'src/lexer/XQLexer.cpp' || echo '$(srcdir)/'`src/lexer/XQLexer.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/XQLexer.Tpo" "$(DEPDIR)/XQLexer.Plo"; else rm -f "$(DEPDIR)/XQLexer.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/lexer/XQLexer.cpp' object='XQLexer.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o XQLexer.lo `test -f 'src/lexer/XQLexer.cpp' || echo '$(srcdir)/'`src/lexer/XQLexer.cpp + +m_apm.lo: src/mapm/m_apm.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT m_apm.lo -MD -MP -MF "$(DEPDIR)/m_apm.Tpo" -c -o m_apm.lo `test -f 'src/mapm/m_apm.cpp' || echo '$(srcdir)/'`src/mapm/m_apm.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/m_apm.Tpo" "$(DEPDIR)/m_apm.Plo"; else rm -f "$(DEPDIR)/m_apm.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/mapm/m_apm.cpp' object='m_apm.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o m_apm.lo `test -f 'src/mapm/m_apm.cpp' || echo '$(srcdir)/'`src/mapm/m_apm.cpp + +mapm_mt.lo: src/mapm/mapm_mt.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT mapm_mt.lo -MD -MP -MF "$(DEPDIR)/mapm_mt.Tpo" -c -o mapm_mt.lo `test -f 'src/mapm/mapm_mt.cpp' || echo '$(srcdir)/'`src/mapm/mapm_mt.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/mapm_mt.Tpo" "$(DEPDIR)/mapm_mt.Plo"; else rm -f "$(DEPDIR)/mapm_mt.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/mapm/mapm_mt.cpp' object='mapm_mt.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o mapm_mt.lo `test -f 'src/mapm/mapm_mt.cpp' || echo '$(srcdir)/'`src/mapm/mapm_mt.cpp + +AncestorAxis.lo: src/axis/AncestorAxis.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT AncestorAxis.lo -MD -MP -MF "$(DEPDIR)/AncestorAxis.Tpo" -c -o AncestorAxis.lo `test -f 'src/axis/AncestorAxis.cpp' || echo '$(srcdir)/'`src/axis/AncestorAxis.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/AncestorAxis.Tpo" "$(DEPDIR)/AncestorAxis.Plo"; else rm -f "$(DEPDIR)/AncestorAxis.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/axis/AncestorAxis.cpp' object='AncestorAxis.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o AncestorAxis.lo `test -f 'src/axis/AncestorAxis.cpp' || echo '$(srcdir)/'`src/axis/AncestorAxis.cpp + +AncestorOrSelfAxis.lo: src/axis/AncestorOrSelfAxis.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT AncestorOrSelfAxis.lo -MD -MP -MF "$(DEPDIR)/AncestorOrSelfAxis.Tpo" -c -o AncestorOrSelfAxis.lo `test -f 'src/axis/AncestorOrSelfAxis.cpp' || echo '$(srcdir)/'`src/axis/AncestorOrSelfAxis.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/AncestorOrSelfAxis.Tpo" "$(DEPDIR)/AncestorOrSelfAxis.Plo"; else rm -f "$(DEPDIR)/AncestorOrSelfAxis.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/axis/AncestorOrSelfAxis.cpp' object='AncestorOrSelfAxis.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o AncestorOrSelfAxis.lo `test -f 'src/axis/AncestorOrSelfAxis.cpp' || echo '$(srcdir)/'`src/axis/AncestorOrSelfAxis.cpp + +AttributeAxis.lo: src/axis/AttributeAxis.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT AttributeAxis.lo -MD -MP -MF "$(DEPDIR)/AttributeAxis.Tpo" -c -o AttributeAxis.lo `test -f 'src/axis/AttributeAxis.cpp' || echo '$(srcdir)/'`src/axis/AttributeAxis.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/AttributeAxis.Tpo" "$(DEPDIR)/AttributeAxis.Plo"; else rm -f "$(DEPDIR)/AttributeAxis.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/axis/AttributeAxis.cpp' object='AttributeAxis.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o AttributeAxis.lo `test -f 'src/axis/AttributeAxis.cpp' || echo '$(srcdir)/'`src/axis/AttributeAxis.cpp + +Axis.lo: src/axis/Axis.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Axis.lo -MD -MP -MF "$(DEPDIR)/Axis.Tpo" -c -o Axis.lo `test -f 'src/axis/Axis.cpp' || echo '$(srcdir)/'`src/axis/Axis.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/Axis.Tpo" "$(DEPDIR)/Axis.Plo"; else rm -f "$(DEPDIR)/Axis.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/axis/Axis.cpp' object='Axis.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Axis.lo `test -f 'src/axis/Axis.cpp' || echo '$(srcdir)/'`src/axis/Axis.cpp + +ChildAxis.lo: src/axis/ChildAxis.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ChildAxis.lo -MD -MP -MF "$(DEPDIR)/ChildAxis.Tpo" -c -o ChildAxis.lo `test -f 'src/axis/ChildAxis.cpp' || echo '$(srcdir)/'`src/axis/ChildAxis.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ChildAxis.Tpo" "$(DEPDIR)/ChildAxis.Plo"; else rm -f "$(DEPDIR)/ChildAxis.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/axis/ChildAxis.cpp' object='ChildAxis.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ChildAxis.lo `test -f 'src/axis/ChildAxis.cpp' || echo '$(srcdir)/'`src/axis/ChildAxis.cpp + +DescendantAxis.lo: src/axis/DescendantAxis.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DescendantAxis.lo -MD -MP -MF "$(DEPDIR)/DescendantAxis.Tpo" -c -o DescendantAxis.lo `test -f 'src/axis/DescendantAxis.cpp' || echo '$(srcdir)/'`src/axis/DescendantAxis.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/DescendantAxis.Tpo" "$(DEPDIR)/DescendantAxis.Plo"; else rm -f "$(DEPDIR)/DescendantAxis.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/axis/DescendantAxis.cpp' object='DescendantAxis.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DescendantAxis.lo `test -f 'src/axis/DescendantAxis.cpp' || echo '$(srcdir)/'`src/axis/DescendantAxis.cpp + +DescendantOrSelfAxis.lo: src/axis/DescendantOrSelfAxis.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DescendantOrSelfAxis.lo -MD -MP -MF "$(DEPDIR)/DescendantOrSelfAxis.Tpo" -c -o DescendantOrSelfAxis.lo `test -f 'src/axis/DescendantOrSelfAxis.cpp' || echo '$(srcdir)/'`src/axis/DescendantOrSelfAxis.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/DescendantOrSelfAxis.Tpo" "$(DEPDIR)/DescendantOrSelfAxis.Plo"; else rm -f "$(DEPDIR)/DescendantOrSelfAxis.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/axis/DescendantOrSelfAxis.cpp' object='DescendantOrSelfAxis.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DescendantOrSelfAxis.lo `test -f 'src/axis/DescendantOrSelfAxis.cpp' || echo '$(srcdir)/'`src/axis/DescendantOrSelfAxis.cpp + +FollowingAxis.lo: src/axis/FollowingAxis.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FollowingAxis.lo -MD -MP -MF "$(DEPDIR)/FollowingAxis.Tpo" -c -o FollowingAxis.lo `test -f 'src/axis/FollowingAxis.cpp' || echo '$(srcdir)/'`src/axis/FollowingAxis.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FollowingAxis.Tpo" "$(DEPDIR)/FollowingAxis.Plo"; else rm -f "$(DEPDIR)/FollowingAxis.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/axis/FollowingAxis.cpp' object='FollowingAxis.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FollowingAxis.lo `test -f 'src/axis/FollowingAxis.cpp' || echo '$(srcdir)/'`src/axis/FollowingAxis.cpp + +FollowingSiblingAxis.lo: src/axis/FollowingSiblingAxis.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FollowingSiblingAxis.lo -MD -MP -MF "$(DEPDIR)/FollowingSiblingAxis.Tpo" -c -o FollowingSiblingAxis.lo `test -f 'src/axis/FollowingSiblingAxis.cpp' || echo '$(srcdir)/'`src/axis/FollowingSiblingAxis.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FollowingSiblingAxis.Tpo" "$(DEPDIR)/FollowingSiblingAxis.Plo"; else rm -f "$(DEPDIR)/FollowingSiblingAxis.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/axis/FollowingSiblingAxis.cpp' object='FollowingSiblingAxis.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FollowingSiblingAxis.lo `test -f 'src/axis/FollowingSiblingAxis.cpp' || echo '$(srcdir)/'`src/axis/FollowingSiblingAxis.cpp + +NamespaceAxis.lo: src/axis/NamespaceAxis.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT NamespaceAxis.lo -MD -MP -MF "$(DEPDIR)/NamespaceAxis.Tpo" -c -o NamespaceAxis.lo `test -f 'src/axis/NamespaceAxis.cpp' || echo '$(srcdir)/'`src/axis/NamespaceAxis.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/NamespaceAxis.Tpo" "$(DEPDIR)/NamespaceAxis.Plo"; else rm -f "$(DEPDIR)/NamespaceAxis.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/axis/NamespaceAxis.cpp' object='NamespaceAxis.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o NamespaceAxis.lo `test -f 'src/axis/NamespaceAxis.cpp' || echo '$(srcdir)/'`src/axis/NamespaceAxis.cpp + +NodeTest.lo: src/axis/NodeTest.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT NodeTest.lo -MD -MP -MF "$(DEPDIR)/NodeTest.Tpo" -c -o NodeTest.lo `test -f 'src/axis/NodeTest.cpp' || echo '$(srcdir)/'`src/axis/NodeTest.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/NodeTest.Tpo" "$(DEPDIR)/NodeTest.Plo"; else rm -f "$(DEPDIR)/NodeTest.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/axis/NodeTest.cpp' object='NodeTest.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o NodeTest.lo `test -f 'src/axis/NodeTest.cpp' || echo '$(srcdir)/'`src/axis/NodeTest.cpp + +ParentAxis.lo: src/axis/ParentAxis.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ParentAxis.lo -MD -MP -MF "$(DEPDIR)/ParentAxis.Tpo" -c -o ParentAxis.lo `test -f 'src/axis/ParentAxis.cpp' || echo '$(srcdir)/'`src/axis/ParentAxis.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ParentAxis.Tpo" "$(DEPDIR)/ParentAxis.Plo"; else rm -f "$(DEPDIR)/ParentAxis.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/axis/ParentAxis.cpp' object='ParentAxis.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ParentAxis.lo `test -f 'src/axis/ParentAxis.cpp' || echo '$(srcdir)/'`src/axis/ParentAxis.cpp + +PrecedingAxis.lo: src/axis/PrecedingAxis.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PrecedingAxis.lo -MD -MP -MF "$(DEPDIR)/PrecedingAxis.Tpo" -c -o PrecedingAxis.lo `test -f 'src/axis/PrecedingAxis.cpp' || echo '$(srcdir)/'`src/axis/PrecedingAxis.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/PrecedingAxis.Tpo" "$(DEPDIR)/PrecedingAxis.Plo"; else rm -f "$(DEPDIR)/PrecedingAxis.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/axis/PrecedingAxis.cpp' object='PrecedingAxis.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PrecedingAxis.lo `test -f 'src/axis/PrecedingAxis.cpp' || echo '$(srcdir)/'`src/axis/PrecedingAxis.cpp + +PrecedingSiblingAxis.lo: src/axis/PrecedingSiblingAxis.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PrecedingSiblingAxis.lo -MD -MP -MF "$(DEPDIR)/PrecedingSiblingAxis.Tpo" -c -o PrecedingSiblingAxis.lo `test -f 'src/axis/PrecedingSiblingAxis.cpp' || echo '$(srcdir)/'`src/axis/PrecedingSiblingAxis.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/PrecedingSiblingAxis.Tpo" "$(DEPDIR)/PrecedingSiblingAxis.Plo"; else rm -f "$(DEPDIR)/PrecedingSiblingAxis.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/axis/PrecedingSiblingAxis.cpp' object='PrecedingSiblingAxis.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PrecedingSiblingAxis.lo `test -f 'src/axis/PrecedingSiblingAxis.cpp' || echo '$(srcdir)/'`src/axis/PrecedingSiblingAxis.cpp + +SelfAxis.lo: src/axis/SelfAxis.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SelfAxis.lo -MD -MP -MF "$(DEPDIR)/SelfAxis.Tpo" -c -o SelfAxis.lo `test -f 'src/axis/SelfAxis.cpp' || echo '$(srcdir)/'`src/axis/SelfAxis.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/SelfAxis.Tpo" "$(DEPDIR)/SelfAxis.Plo"; else rm -f "$(DEPDIR)/SelfAxis.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/axis/SelfAxis.cpp' object='SelfAxis.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SelfAxis.lo `test -f 'src/axis/SelfAxis.cpp' || echo '$(srcdir)/'`src/axis/SelfAxis.cpp + +And.lo: src/operators/And.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT And.lo -MD -MP -MF "$(DEPDIR)/And.Tpo" -c -o And.lo `test -f 'src/operators/And.cpp' || echo '$(srcdir)/'`src/operators/And.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/And.Tpo" "$(DEPDIR)/And.Plo"; else rm -f "$(DEPDIR)/And.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/And.cpp' object='And.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o And.lo `test -f 'src/operators/And.cpp' || echo '$(srcdir)/'`src/operators/And.cpp + +ArithmeticOperator.lo: src/operators/ArithmeticOperator.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ArithmeticOperator.lo -MD -MP -MF "$(DEPDIR)/ArithmeticOperator.Tpo" -c -o ArithmeticOperator.lo `test -f 'src/operators/ArithmeticOperator.cpp' || echo '$(srcdir)/'`src/operators/ArithmeticOperator.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ArithmeticOperator.Tpo" "$(DEPDIR)/ArithmeticOperator.Plo"; else rm -f "$(DEPDIR)/ArithmeticOperator.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/ArithmeticOperator.cpp' object='ArithmeticOperator.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ArithmeticOperator.lo `test -f 'src/operators/ArithmeticOperator.cpp' || echo '$(srcdir)/'`src/operators/ArithmeticOperator.cpp + +ComparisonOperator.lo: src/operators/ComparisonOperator.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ComparisonOperator.lo -MD -MP -MF "$(DEPDIR)/ComparisonOperator.Tpo" -c -o ComparisonOperator.lo `test -f 'src/operators/ComparisonOperator.cpp' || echo '$(srcdir)/'`src/operators/ComparisonOperator.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ComparisonOperator.Tpo" "$(DEPDIR)/ComparisonOperator.Plo"; else rm -f "$(DEPDIR)/ComparisonOperator.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/ComparisonOperator.cpp' object='ComparisonOperator.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ComparisonOperator.lo `test -f 'src/operators/ComparisonOperator.cpp' || echo '$(srcdir)/'`src/operators/ComparisonOperator.cpp + +Divide.lo: src/operators/Divide.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Divide.lo -MD -MP -MF "$(DEPDIR)/Divide.Tpo" -c -o Divide.lo `test -f 'src/operators/Divide.cpp' || echo '$(srcdir)/'`src/operators/Divide.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/Divide.Tpo" "$(DEPDIR)/Divide.Plo"; else rm -f "$(DEPDIR)/Divide.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/Divide.cpp' object='Divide.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Divide.lo `test -f 'src/operators/Divide.cpp' || echo '$(srcdir)/'`src/operators/Divide.cpp + +Equals.lo: src/operators/Equals.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Equals.lo -MD -MP -MF "$(DEPDIR)/Equals.Tpo" -c -o Equals.lo `test -f 'src/operators/Equals.cpp' || echo '$(srcdir)/'`src/operators/Equals.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/Equals.Tpo" "$(DEPDIR)/Equals.Plo"; else rm -f "$(DEPDIR)/Equals.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/Equals.cpp' object='Equals.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Equals.lo `test -f 'src/operators/Equals.cpp' || echo '$(srcdir)/'`src/operators/Equals.cpp + +Except.lo: src/operators/Except.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Except.lo -MD -MP -MF "$(DEPDIR)/Except.Tpo" -c -o Except.lo `test -f 'src/operators/Except.cpp' || echo '$(srcdir)/'`src/operators/Except.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/Except.Tpo" "$(DEPDIR)/Except.Plo"; else rm -f "$(DEPDIR)/Except.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/Except.cpp' object='Except.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Except.lo `test -f 'src/operators/Except.cpp' || echo '$(srcdir)/'`src/operators/Except.cpp + +GeneralComp.lo: src/operators/GeneralComp.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GeneralComp.lo -MD -MP -MF "$(DEPDIR)/GeneralComp.Tpo" -c -o GeneralComp.lo `test -f 'src/operators/GeneralComp.cpp' || echo '$(srcdir)/'`src/operators/GeneralComp.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/GeneralComp.Tpo" "$(DEPDIR)/GeneralComp.Plo"; else rm -f "$(DEPDIR)/GeneralComp.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/GeneralComp.cpp' object='GeneralComp.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GeneralComp.lo `test -f 'src/operators/GeneralComp.cpp' || echo '$(srcdir)/'`src/operators/GeneralComp.cpp + +GreaterThan.lo: src/operators/GreaterThan.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GreaterThan.lo -MD -MP -MF "$(DEPDIR)/GreaterThan.Tpo" -c -o GreaterThan.lo `test -f 'src/operators/GreaterThan.cpp' || echo '$(srcdir)/'`src/operators/GreaterThan.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/GreaterThan.Tpo" "$(DEPDIR)/GreaterThan.Plo"; else rm -f "$(DEPDIR)/GreaterThan.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/GreaterThan.cpp' object='GreaterThan.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GreaterThan.lo `test -f 'src/operators/GreaterThan.cpp' || echo '$(srcdir)/'`src/operators/GreaterThan.cpp + +GreaterThanEqual.lo: src/operators/GreaterThanEqual.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GreaterThanEqual.lo -MD -MP -MF "$(DEPDIR)/GreaterThanEqual.Tpo" -c -o GreaterThanEqual.lo `test -f 'src/operators/GreaterThanEqual.cpp' || echo '$(srcdir)/'`src/operators/GreaterThanEqual.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/GreaterThanEqual.Tpo" "$(DEPDIR)/GreaterThanEqual.Plo"; else rm -f "$(DEPDIR)/GreaterThanEqual.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/GreaterThanEqual.cpp' object='GreaterThanEqual.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GreaterThanEqual.lo `test -f 'src/operators/GreaterThanEqual.cpp' || echo '$(srcdir)/'`src/operators/GreaterThanEqual.cpp + +IntegerDivide.lo: src/operators/IntegerDivide.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT IntegerDivide.lo -MD -MP -MF "$(DEPDIR)/IntegerDivide.Tpo" -c -o IntegerDivide.lo `test -f 'src/operators/IntegerDivide.cpp' || echo '$(srcdir)/'`src/operators/IntegerDivide.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/IntegerDivide.Tpo" "$(DEPDIR)/IntegerDivide.Plo"; else rm -f "$(DEPDIR)/IntegerDivide.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/IntegerDivide.cpp' object='IntegerDivide.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o IntegerDivide.lo `test -f 'src/operators/IntegerDivide.cpp' || echo '$(srcdir)/'`src/operators/IntegerDivide.cpp + +Intersect.lo: src/operators/Intersect.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Intersect.lo -MD -MP -MF "$(DEPDIR)/Intersect.Tpo" -c -o Intersect.lo `test -f 'src/operators/Intersect.cpp' || echo '$(srcdir)/'`src/operators/Intersect.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/Intersect.Tpo" "$(DEPDIR)/Intersect.Plo"; else rm -f "$(DEPDIR)/Intersect.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/Intersect.cpp' object='Intersect.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Intersect.lo `test -f 'src/operators/Intersect.cpp' || echo '$(srcdir)/'`src/operators/Intersect.cpp + +LessThan.lo: src/operators/LessThan.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LessThan.lo -MD -MP -MF "$(DEPDIR)/LessThan.Tpo" -c -o LessThan.lo `test -f 'src/operators/LessThan.cpp' || echo '$(srcdir)/'`src/operators/LessThan.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/LessThan.Tpo" "$(DEPDIR)/LessThan.Plo"; else rm -f "$(DEPDIR)/LessThan.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/LessThan.cpp' object='LessThan.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o LessThan.lo `test -f 'src/operators/LessThan.cpp' || echo '$(srcdir)/'`src/operators/LessThan.cpp + +LessThanEqual.lo: src/operators/LessThanEqual.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LessThanEqual.lo -MD -MP -MF "$(DEPDIR)/LessThanEqual.Tpo" -c -o LessThanEqual.lo `test -f 'src/operators/LessThanEqual.cpp' || echo '$(srcdir)/'`src/operators/LessThanEqual.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/LessThanEqual.Tpo" "$(DEPDIR)/LessThanEqual.Plo"; else rm -f "$(DEPDIR)/LessThanEqual.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/LessThanEqual.cpp' object='LessThanEqual.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o LessThanEqual.lo `test -f 'src/operators/LessThanEqual.cpp' || echo '$(srcdir)/'`src/operators/LessThanEqual.cpp + +Minus.lo: src/operators/Minus.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Minus.lo -MD -MP -MF "$(DEPDIR)/Minus.Tpo" -c -o Minus.lo `test -f 'src/operators/Minus.cpp' || echo '$(srcdir)/'`src/operators/Minus.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/Minus.Tpo" "$(DEPDIR)/Minus.Plo"; else rm -f "$(DEPDIR)/Minus.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/Minus.cpp' object='Minus.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Minus.lo `test -f 'src/operators/Minus.cpp' || echo '$(srcdir)/'`src/operators/Minus.cpp + +Mod.lo: src/operators/Mod.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Mod.lo -MD -MP -MF "$(DEPDIR)/Mod.Tpo" -c -o Mod.lo `test -f 'src/operators/Mod.cpp' || echo '$(srcdir)/'`src/operators/Mod.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/Mod.Tpo" "$(DEPDIR)/Mod.Plo"; else rm -f "$(DEPDIR)/Mod.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/Mod.cpp' object='Mod.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Mod.lo `test -f 'src/operators/Mod.cpp' || echo '$(srcdir)/'`src/operators/Mod.cpp + +Multiply.lo: src/operators/Multiply.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Multiply.lo -MD -MP -MF "$(DEPDIR)/Multiply.Tpo" -c -o Multiply.lo `test -f 'src/operators/Multiply.cpp' || echo '$(srcdir)/'`src/operators/Multiply.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/Multiply.Tpo" "$(DEPDIR)/Multiply.Plo"; else rm -f "$(DEPDIR)/Multiply.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/Multiply.cpp' object='Multiply.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Multiply.lo `test -f 'src/operators/Multiply.cpp' || echo '$(srcdir)/'`src/operators/Multiply.cpp + +NodeComparison.lo: src/operators/NodeComparison.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT NodeComparison.lo -MD -MP -MF "$(DEPDIR)/NodeComparison.Tpo" -c -o NodeComparison.lo `test -f 'src/operators/NodeComparison.cpp' || echo '$(srcdir)/'`src/operators/NodeComparison.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/NodeComparison.Tpo" "$(DEPDIR)/NodeComparison.Plo"; else rm -f "$(DEPDIR)/NodeComparison.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/NodeComparison.cpp' object='NodeComparison.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o NodeComparison.lo `test -f 'src/operators/NodeComparison.cpp' || echo '$(srcdir)/'`src/operators/NodeComparison.cpp + +NotEquals.lo: src/operators/NotEquals.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT NotEquals.lo -MD -MP -MF "$(DEPDIR)/NotEquals.Tpo" -c -o NotEquals.lo `test -f 'src/operators/NotEquals.cpp' || echo '$(srcdir)/'`src/operators/NotEquals.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/NotEquals.Tpo" "$(DEPDIR)/NotEquals.Plo"; else rm -f "$(DEPDIR)/NotEquals.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/NotEquals.cpp' object='NotEquals.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o NotEquals.lo `test -f 'src/operators/NotEquals.cpp' || echo '$(srcdir)/'`src/operators/NotEquals.cpp + +Or.lo: src/operators/Or.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Or.lo -MD -MP -MF "$(DEPDIR)/Or.Tpo" -c -o Or.lo `test -f 'src/operators/Or.cpp' || echo '$(srcdir)/'`src/operators/Or.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/Or.Tpo" "$(DEPDIR)/Or.Plo"; else rm -f "$(DEPDIR)/Or.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/Or.cpp' object='Or.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Or.lo `test -f 'src/operators/Or.cpp' || echo '$(srcdir)/'`src/operators/Or.cpp + +OrderComparison.lo: src/operators/OrderComparison.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT OrderComparison.lo -MD -MP -MF "$(DEPDIR)/OrderComparison.Tpo" -c -o OrderComparison.lo `test -f 'src/operators/OrderComparison.cpp' || echo '$(srcdir)/'`src/operators/OrderComparison.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/OrderComparison.Tpo" "$(DEPDIR)/OrderComparison.Plo"; else rm -f "$(DEPDIR)/OrderComparison.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/OrderComparison.cpp' object='OrderComparison.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o OrderComparison.lo `test -f 'src/operators/OrderComparison.cpp' || echo '$(srcdir)/'`src/operators/OrderComparison.cpp + +Plus.lo: src/operators/Plus.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Plus.lo -MD -MP -MF "$(DEPDIR)/Plus.Tpo" -c -o Plus.lo `test -f 'src/operators/Plus.cpp' || echo '$(srcdir)/'`src/operators/Plus.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/Plus.Tpo" "$(DEPDIR)/Plus.Plo"; else rm -f "$(DEPDIR)/Plus.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/Plus.cpp' object='Plus.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Plus.lo `test -f 'src/operators/Plus.cpp' || echo '$(srcdir)/'`src/operators/Plus.cpp + +Range.lo: src/operators/Range.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Range.lo -MD -MP -MF "$(DEPDIR)/Range.Tpo" -c -o Range.lo `test -f 'src/operators/Range.cpp' || echo '$(srcdir)/'`src/operators/Range.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/Range.Tpo" "$(DEPDIR)/Range.Plo"; else rm -f "$(DEPDIR)/Range.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/Range.cpp' object='Range.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Range.lo `test -f 'src/operators/Range.cpp' || echo '$(srcdir)/'`src/operators/Range.cpp + +UnaryMinus.lo: src/operators/UnaryMinus.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UnaryMinus.lo -MD -MP -MF "$(DEPDIR)/UnaryMinus.Tpo" -c -o UnaryMinus.lo `test -f 'src/operators/UnaryMinus.cpp' || echo '$(srcdir)/'`src/operators/UnaryMinus.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/UnaryMinus.Tpo" "$(DEPDIR)/UnaryMinus.Plo"; else rm -f "$(DEPDIR)/UnaryMinus.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/UnaryMinus.cpp' object='UnaryMinus.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UnaryMinus.lo `test -f 'src/operators/UnaryMinus.cpp' || echo '$(srcdir)/'`src/operators/UnaryMinus.cpp + +Union.lo: src/operators/Union.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Union.lo -MD -MP -MF "$(DEPDIR)/Union.Tpo" -c -o Union.lo `test -f 'src/operators/Union.cpp' || echo '$(srcdir)/'`src/operators/Union.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/Union.Tpo" "$(DEPDIR)/Union.Plo"; else rm -f "$(DEPDIR)/Union.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/operators/Union.cpp' object='Union.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Union.lo `test -f 'src/operators/Union.cpp' || echo '$(srcdir)/'`src/operators/Union.cpp + +DocumentCacheImpl.lo: src/schema/DocumentCacheImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DocumentCacheImpl.lo -MD -MP -MF "$(DEPDIR)/DocumentCacheImpl.Tpo" -c -o DocumentCacheImpl.lo `test -f 'src/schema/DocumentCacheImpl.cpp' || echo '$(srcdir)/'`src/schema/DocumentCacheImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/DocumentCacheImpl.Tpo" "$(DEPDIR)/DocumentCacheImpl.Plo"; else rm -f "$(DEPDIR)/DocumentCacheImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/schema/DocumentCacheImpl.cpp' object='DocumentCacheImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DocumentCacheImpl.lo `test -f 'src/schema/DocumentCacheImpl.cpp' || echo '$(srcdir)/'`src/schema/DocumentCacheImpl.cpp + +SequenceType.lo: src/schema/SequenceType.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SequenceType.lo -MD -MP -MF "$(DEPDIR)/SequenceType.Tpo" -c -o SequenceType.lo `test -f 'src/schema/SequenceType.cpp' || echo '$(srcdir)/'`src/schema/SequenceType.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/SequenceType.Tpo" "$(DEPDIR)/SequenceType.Plo"; else rm -f "$(DEPDIR)/SequenceType.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/schema/SequenceType.cpp' object='SequenceType.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SequenceType.lo `test -f 'src/schema/SequenceType.cpp' || echo '$(srcdir)/'`src/schema/SequenceType.cpp + +AnyAtomicTypeDatatypeValidator.lo: src/schema/AnyAtomicTypeDatatypeValidator.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT AnyAtomicTypeDatatypeValidator.lo -MD -MP -MF "$(DEPDIR)/AnyAtomicTypeDatatypeValidator.Tpo" -c -o AnyAtomicTypeDatatypeValidator.lo `test -f 'src/schema/AnyAtomicTypeDatatypeValidator.cpp' || echo '$(srcdir)/'`src/schema/AnyAtomicTypeDatatypeValidator.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/AnyAtomicTypeDatatypeValidator.Tpo" "$(DEPDIR)/AnyAtomicTypeDatatypeValidator.Plo"; else rm -f "$(DEPDIR)/AnyAtomicTypeDatatypeValidator.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/schema/AnyAtomicTypeDatatypeValidator.cpp' object='AnyAtomicTypeDatatypeValidator.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o AnyAtomicTypeDatatypeValidator.lo `test -f 'src/schema/AnyAtomicTypeDatatypeValidator.cpp' || echo '$(srcdir)/'`src/schema/AnyAtomicTypeDatatypeValidator.cpp + +EmptyResult.lo: src/runtime/EmptyResult.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT EmptyResult.lo -MD -MP -MF "$(DEPDIR)/EmptyResult.Tpo" -c -o EmptyResult.lo `test -f 'src/runtime/EmptyResult.cpp' || echo '$(srcdir)/'`src/runtime/EmptyResult.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/EmptyResult.Tpo" "$(DEPDIR)/EmptyResult.Plo"; else rm -f "$(DEPDIR)/EmptyResult.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/runtime/EmptyResult.cpp' object='EmptyResult.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o EmptyResult.lo `test -f 'src/runtime/EmptyResult.cpp' || echo '$(srcdir)/'`src/runtime/EmptyResult.cpp + +LazySequenceResult.lo: src/runtime/LazySequenceResult.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LazySequenceResult.lo -MD -MP -MF "$(DEPDIR)/LazySequenceResult.Tpo" -c -o LazySequenceResult.lo `test -f 'src/runtime/LazySequenceResult.cpp' || echo '$(srcdir)/'`src/runtime/LazySequenceResult.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/LazySequenceResult.Tpo" "$(DEPDIR)/LazySequenceResult.Plo"; else rm -f "$(DEPDIR)/LazySequenceResult.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/runtime/LazySequenceResult.cpp' object='LazySequenceResult.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o LazySequenceResult.lo `test -f 'src/runtime/LazySequenceResult.cpp' || echo '$(srcdir)/'`src/runtime/LazySequenceResult.cpp + +ResultBuffer.lo: src/runtime/ResultBuffer.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ResultBuffer.lo -MD -MP -MF "$(DEPDIR)/ResultBuffer.Tpo" -c -o ResultBuffer.lo `test -f 'src/runtime/ResultBuffer.cpp' || echo '$(srcdir)/'`src/runtime/ResultBuffer.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ResultBuffer.Tpo" "$(DEPDIR)/ResultBuffer.Plo"; else rm -f "$(DEPDIR)/ResultBuffer.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/runtime/ResultBuffer.cpp' object='ResultBuffer.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ResultBuffer.lo `test -f 'src/runtime/ResultBuffer.cpp' || echo '$(srcdir)/'`src/runtime/ResultBuffer.cpp + +ResultBufferImpl.lo: src/runtime/ResultBufferImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ResultBufferImpl.lo -MD -MP -MF "$(DEPDIR)/ResultBufferImpl.Tpo" -c -o ResultBufferImpl.lo `test -f 'src/runtime/ResultBufferImpl.cpp' || echo '$(srcdir)/'`src/runtime/ResultBufferImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ResultBufferImpl.Tpo" "$(DEPDIR)/ResultBufferImpl.Plo"; else rm -f "$(DEPDIR)/ResultBufferImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/runtime/ResultBufferImpl.cpp' object='ResultBufferImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ResultBufferImpl.lo `test -f 'src/runtime/ResultBufferImpl.cpp' || echo '$(srcdir)/'`src/runtime/ResultBufferImpl.cpp + +Result.lo: src/runtime/Result.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Result.lo -MD -MP -MF "$(DEPDIR)/Result.Tpo" -c -o Result.lo `test -f 'src/runtime/Result.cpp' || echo '$(srcdir)/'`src/runtime/Result.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/Result.Tpo" "$(DEPDIR)/Result.Plo"; else rm -f "$(DEPDIR)/Result.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/runtime/Result.cpp' object='Result.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Result.lo `test -f 'src/runtime/Result.cpp' || echo '$(srcdir)/'`src/runtime/Result.cpp + +ResultImpl.lo: src/runtime/ResultImpl.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ResultImpl.lo -MD -MP -MF "$(DEPDIR)/ResultImpl.Tpo" -c -o ResultImpl.lo `test -f 'src/runtime/ResultImpl.cpp' || echo '$(srcdir)/'`src/runtime/ResultImpl.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ResultImpl.Tpo" "$(DEPDIR)/ResultImpl.Plo"; else rm -f "$(DEPDIR)/ResultImpl.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/runtime/ResultImpl.cpp' object='ResultImpl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ResultImpl.lo `test -f 'src/runtime/ResultImpl.cpp' || echo '$(srcdir)/'`src/runtime/ResultImpl.cpp + +SequenceResult.lo: src/runtime/SequenceResult.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SequenceResult.lo -MD -MP -MF "$(DEPDIR)/SequenceResult.Tpo" -c -o SequenceResult.lo `test -f 'src/runtime/SequenceResult.cpp' || echo '$(srcdir)/'`src/runtime/SequenceResult.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/SequenceResult.Tpo" "$(DEPDIR)/SequenceResult.Plo"; else rm -f "$(DEPDIR)/SequenceResult.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/runtime/SequenceResult.cpp' object='SequenceResult.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SequenceResult.lo `test -f 'src/runtime/SequenceResult.cpp' || echo '$(srcdir)/'`src/runtime/SequenceResult.cpp + +SingleResult.lo: src/runtime/SingleResult.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SingleResult.lo -MD -MP -MF "$(DEPDIR)/SingleResult.Tpo" -c -o SingleResult.lo `test -f 'src/runtime/SingleResult.cpp' || echo '$(srcdir)/'`src/runtime/SingleResult.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/SingleResult.Tpo" "$(DEPDIR)/SingleResult.Plo"; else rm -f "$(DEPDIR)/SingleResult.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/runtime/SingleResult.cpp' object='SingleResult.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SingleResult.lo `test -f 'src/runtime/SingleResult.cpp' || echo '$(srcdir)/'`src/runtime/SingleResult.cpp + +Sequence.lo: src/runtime/Sequence.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT Sequence.lo -MD -MP -MF "$(DEPDIR)/Sequence.Tpo" -c -o Sequence.lo `test -f 'src/runtime/Sequence.cpp' || echo '$(srcdir)/'`src/runtime/Sequence.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/Sequence.Tpo" "$(DEPDIR)/Sequence.Plo"; else rm -f "$(DEPDIR)/Sequence.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/runtime/Sequence.cpp' object='Sequence.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o Sequence.lo `test -f 'src/runtime/Sequence.cpp' || echo '$(srcdir)/'`src/runtime/Sequence.cpp + +TestSuiteParser.lo: src/xqts/TestSuiteParser.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT TestSuiteParser.lo -MD -MP -MF "$(DEPDIR)/TestSuiteParser.Tpo" -c -o TestSuiteParser.lo `test -f 'src/xqts/TestSuiteParser.cpp' || echo '$(srcdir)/'`src/xqts/TestSuiteParser.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/TestSuiteParser.Tpo" "$(DEPDIR)/TestSuiteParser.Plo"; else rm -f "$(DEPDIR)/TestSuiteParser.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/xqts/TestSuiteParser.cpp' object='TestSuiteParser.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o TestSuiteParser.lo `test -f 'src/xqts/TestSuiteParser.cpp' || echo '$(srcdir)/'`src/xqts/TestSuiteParser.cpp + +TestSuiteResultListener.lo: src/xqts/TestSuiteResultListener.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT TestSuiteResultListener.lo -MD -MP -MF "$(DEPDIR)/TestSuiteResultListener.Tpo" -c -o TestSuiteResultListener.lo `test -f 'src/xqts/TestSuiteResultListener.cpp' || echo '$(srcdir)/'`src/xqts/TestSuiteResultListener.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/TestSuiteResultListener.Tpo" "$(DEPDIR)/TestSuiteResultListener.Plo"; else rm -f "$(DEPDIR)/TestSuiteResultListener.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/xqts/TestSuiteResultListener.cpp' object='TestSuiteResultListener.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o TestSuiteResultListener.lo `test -f 'src/xqts/TestSuiteResultListener.cpp' || echo '$(srcdir)/'`src/xqts/TestSuiteResultListener.cpp + +TestSuiteRunner.lo: src/xqts/TestSuiteRunner.cpp +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT TestSuiteRunner.lo -MD -MP -MF "$(DEPDIR)/TestSuiteRunner.Tpo" -c -o TestSuiteRunner.lo `test -f 'src/xqts/TestSuiteRunner.cpp' || echo '$(srcdir)/'`src/xqts/TestSuiteRunner.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/TestSuiteRunner.Tpo" "$(DEPDIR)/TestSuiteRunner.Plo"; else rm -f "$(DEPDIR)/TestSuiteRunner.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/xqts/TestSuiteRunner.cpp' object='TestSuiteRunner.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o TestSuiteRunner.lo `test -f 'src/xqts/TestSuiteRunner.cpp' || echo '$(srcdir)/'`src/xqts/TestSuiteRunner.cpp + +basicXQillaUsage.o: src/samples/basic/basicXQillaUsage.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT basicXQillaUsage.o -MD -MP -MF "$(DEPDIR)/basicXQillaUsage.Tpo" -c -o basicXQillaUsage.o `test -f 'src/samples/basic/basicXQillaUsage.cpp' || echo '$(srcdir)/'`src/samples/basic/basicXQillaUsage.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/basicXQillaUsage.Tpo" "$(DEPDIR)/basicXQillaUsage.Po"; else rm -f "$(DEPDIR)/basicXQillaUsage.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/samples/basic/basicXQillaUsage.cpp' object='basicXQillaUsage.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o basicXQillaUsage.o `test -f 'src/samples/basic/basicXQillaUsage.cpp' || echo '$(srcdir)/'`src/samples/basic/basicXQillaUsage.cpp + +basicXQillaUsage.obj: src/samples/basic/basicXQillaUsage.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT basicXQillaUsage.obj -MD -MP -MF "$(DEPDIR)/basicXQillaUsage.Tpo" -c -o basicXQillaUsage.obj `if test -f 'src/samples/basic/basicXQillaUsage.cpp'; then $(CYGPATH_W) 'src/samples/basic/basicXQillaUsage.cpp'; else $(CYGPATH_W) '$(srcdir)/src/samples/basic/basicXQillaUsage.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/basicXQillaUsage.Tpo" "$(DEPDIR)/basicXQillaUsage.Po"; else rm -f "$(DEPDIR)/basicXQillaUsage.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/samples/basic/basicXQillaUsage.cpp' object='basicXQillaUsage.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o basicXQillaUsage.obj `if test -f 'src/samples/basic/basicXQillaUsage.cpp'; then $(CYGPATH_W) 'src/samples/basic/basicXQillaUsage.cpp'; else $(CYGPATH_W) '$(srcdir)/src/samples/basic/basicXQillaUsage.cpp'; fi` + +xqilla-commandline.o: src/samples/xqilla/xqilla-commandline.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT xqilla-commandline.o -MD -MP -MF "$(DEPDIR)/xqilla-commandline.Tpo" -c -o xqilla-commandline.o `test -f 'src/samples/xqilla/xqilla-commandline.cpp' || echo '$(srcdir)/'`src/samples/xqilla/xqilla-commandline.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/xqilla-commandline.Tpo" "$(DEPDIR)/xqilla-commandline.Po"; else rm -f "$(DEPDIR)/xqilla-commandline.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/samples/xqilla/xqilla-commandline.cpp' object='xqilla-commandline.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o xqilla-commandline.o `test -f 'src/samples/xqilla/xqilla-commandline.cpp' || echo '$(srcdir)/'`src/samples/xqilla/xqilla-commandline.cpp + +xqilla-commandline.obj: src/samples/xqilla/xqilla-commandline.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT xqilla-commandline.obj -MD -MP -MF "$(DEPDIR)/xqilla-commandline.Tpo" -c -o xqilla-commandline.obj `if test -f 'src/samples/xqilla/xqilla-commandline.cpp'; then $(CYGPATH_W) 'src/samples/xqilla/xqilla-commandline.cpp'; else $(CYGPATH_W) '$(srcdir)/src/samples/xqilla/xqilla-commandline.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/xqilla-commandline.Tpo" "$(DEPDIR)/xqilla-commandline.Po"; else rm -f "$(DEPDIR)/xqilla-commandline.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/samples/xqilla/xqilla-commandline.cpp' object='xqilla-commandline.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o xqilla-commandline.obj `if test -f 'src/samples/xqilla/xqilla-commandline.cpp'; then $(CYGPATH_W) 'src/samples/xqilla/xqilla-commandline.cpp'; else $(CYGPATH_W) '$(srcdir)/src/samples/xqilla/xqilla-commandline.cpp'; fi` + +runner.o: tests/xqts/runner.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT runner.o -MD -MP -MF "$(DEPDIR)/runner.Tpo" -c -o runner.o `test -f 'tests/xqts/runner.cpp' || echo '$(srcdir)/'`tests/xqts/runner.cpp; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/runner.Tpo" "$(DEPDIR)/runner.Po"; else rm -f "$(DEPDIR)/runner.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tests/xqts/runner.cpp' object='runner.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o runner.o `test -f 'tests/xqts/runner.cpp' || echo '$(srcdir)/'`tests/xqts/runner.cpp + +runner.obj: tests/xqts/runner.cpp +@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT runner.obj -MD -MP -MF "$(DEPDIR)/runner.Tpo" -c -o runner.obj `if test -f 'tests/xqts/runner.cpp'; then $(CYGPATH_W) 'tests/xqts/runner.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/xqts/runner.cpp'; fi`; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/runner.Tpo" "$(DEPDIR)/runner.Po"; else rm -f "$(DEPDIR)/runner.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tests/xqts/runner.cpp' object='runner.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o runner.obj `if test -f 'tests/xqts/runner.cpp'; then $(CYGPATH_W) 'tests/xqts/runner.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/xqts/runner.cpp'; fi` + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + $(mkdir_p) $(distdir)/Win32Projects/VC6 $(distdir)/Win32Projects/VC7.1 $(distdir)/autotools $(distdir)/docs $(distdir)/src/config $(distdir)/src/lexer $(distdir)/src/parser $(distdir)/tests/xqts/xqts_testsuite $(distdir)/wintools + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(mkdir_p) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) +install-binPROGRAMS: install-libLTLIBRARIES + +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-hdr distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: install-binPROGRAMS install-libLTLIBRARIES + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-info-am \ + uninstall-libLTLIBRARIES + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ + check-am clean clean-binPROGRAMS clean-generic \ + clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS \ + clean-recursive ctags ctags-recursive dist dist-all dist-bzip2 \ + dist-gzip dist-shar dist-tarZ dist-zip distcheck distclean \ + distclean-compile distclean-generic distclean-hdr \ + distclean-libtool distclean-recursive distclean-tags \ + distcleancheck distdir distuninstallcheck dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-libLTLIBRARIES \ + install-man install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am \ + uninstall-binPROGRAMS uninstall-info-am \ + uninstall-libLTLIBRARIES + + +$(LEXERFILE): $(LEXTEMPLATE) $(LEXSKEL) + $(LEX) -BUs -Pxq -S$(LEXSKEL) -o$(LEXERFILE) $(LEXTEMPLATE) # This can take a long time + +$(PARSERCPP) $(PARSERHPP): $(PARSERFILE) + $(YACC) -d -v -o $(PARSERCPP) $(PARSERFILE) + +.PHONY: test docs + +docs: + $(MAKE) -C include docs + +devdocs: + $(MAKE) -C include devdocs + +$(top_srcdir)/docs/simple-api: docs + +$(top_srcdir)/docs/dom3-api: docs +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/Win32Projects/VC6/XQilla.dsw b/Win32Projects/VC6/XQilla.dsw new file mode 100644 index 00000000..4fbd95d7 --- /dev/null +++ b/Win32Projects/VC6/XQilla.dsw @@ -0,0 +1,74 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "basicXQillaUsage"=.\basicXQillaUsage.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name xqilla + End Project Dependency +}}} + +############################################################################### + +Project: "xqilla"=.\xqilla.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "xqilla_cmd"=.\xqilla_cmd.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name xqilla + End Project Dependency +}}} + +############################################################################### + +Project: "xqtsRunner"=.\xqtsRunner.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name xqilla + End Project Dependency +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/Win32Projects/VC6/basicXQillaUsage.dsp b/Win32Projects/VC6/basicXQillaUsage.dsp new file mode 100644 index 00000000..71a7e72e --- /dev/null +++ b/Win32Projects/VC6/basicXQillaUsage.dsp @@ -0,0 +1,90 @@ +# Microsoft Developer Studio Project File - Name="basicXQillaUsage" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=basicXQillaUsage - 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 "basicXQillaUsage.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 "basicXQillaUsage.mak" CFG="basicXQillaUsage - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "basicXQillaUsage - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "basicXQillaUsage - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "basicXQillaUsage - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "../../build/windows/VC6\Release" +# PROP BASE Intermediate_Dir "../../build/windows/VC6\Release\basicXQillaUsage" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "../../build/windows/VC6\Release" +# PROP Intermediate_Dir "../../build/windows/VC6\Release\basicXQillaUsage" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../../include" /I "../../../xerces-c-src/include" /I "../../../xerces-c-src/src"/I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /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 /nologo /subsystem:console /machine:I386 +# ADD LINK32 /libpath:../../build/windows/VC6/Release xerces-c_2.lib xqilla10.lib /libpath:../../../xerces-c-src/Build/Win32/VC6/Release /nologo /out:../../build/windows/VC6/Release/basicXQillaUsage.exe /subsystem:console /machine:I386 /nodefaultlib:"libcmt" + +!ELSEIF "$(CFG)" == "basicXQillaUsage - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "../../build/windows/VC6\Debug" +# PROP BASE Intermediate_Dir "../../build/windows/VC6\Debug\basicXQillaUsage" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "../../build/windows/VC6\Debug" +# PROP Intermediate_Dir "../../build/windows/VC6\Debug\basicXQillaUsage" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "." /I "../../include" /I "../../../xerces-c-src/include" /I "../../../xerces-c-src/src" /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /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 /libpath:../../build/windows/VC6/Debug xerces-c_2d.lib xqilla10d.lib /libpath:../../../xerces-c-src/Build/Win32/VC6/Debug /nologo /out:../../build/windows/VC6/Debug/basicXQillaUsage.exe /pdb:"../../build/windows/VC6/Debug/basicXQillaUsage.pdb" /subsystem:console /debug /machine:I386 /nodefaultlib:"libcmt" + +!ENDIF + +# Begin Target + +# Name "basicXQillaUsage - Win32 Release" +# Name "basicXQillaUsage - Win32 Debug" +# Begin Source File + +SOURCE=..\..\src\samples\basic\basicXQillaUsage.cpp +# End Source File +# End Target +# End Project diff --git a/Win32Projects/VC6/xqilla.dsp b/Win32Projects/VC6/xqilla.dsp new file mode 100644 index 00000000..c5c108ee --- /dev/null +++ b/Win32Projects/VC6/xqilla.dsp @@ -0,0 +1,3056 @@ +# Microsoft Developer Studio Project File - Name="xqilla" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=xqilla - 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 "xqilla.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 "xqilla.mak" CFG="xqilla - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "xqilla - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "xqilla - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "xqilla - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "../../build/windows/VC6\Release" +# PROP BASE Intermediate_Dir "../../build/windows/VC6\Release\xqilla" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "../../build/windows/VC6\Release" +# PROP Intermediate_Dir "../../build/windows/VC6\Release\xqilla" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XQILLA_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../include" /I "../../src/lexer" /I "../../../xerces-c-src/include" /I "../../../xerces-c-src/src" /I "../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XQILLA_APIS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x410 /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 /libpath:"../../build/windows/VC6/Release" xerces-c_2.lib /nologo /base:"0x69000000" /dll /machine:I386 /out:"../../build/windows/VC6/Release/xqilla10.dll" /implib:"../../build/windows/VC6/Release/xqilla10.lib" /libpath:"../../../xerces-c-src/Build/Win32/VC6/Release" /OPT:REF +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "xqilla - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "../../build/windows/VC6\Debug" +# PROP BASE Intermediate_Dir "../../build/windows/VC6\Debug\xqilla" +# PROP BASE Target_Dir "" +# PROP Use_MFC 2 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "../../build/windows/VC6\Debug" +# PROP Intermediate_Dir "../../build/windows/VC6\Debug\xqilla" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XQILLA_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../../include" /I "../../src/lexer" /I "../../../xerces-c-src/include" /I "../../../xerces-c-src/src" /I "../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XQILLA_APIS" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x410 /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 /libpath:"../../build/windows/VC6/Debug" xerces-c_2D.lib /nologo /base:"0x69000000" /dll /debug /machine:I386 /out:"../../build/windows/VC6/Debug/xqilla10d.dll" /implib:"../../build/windows/VC6/Debug/xqilla10d.lib" /pdbtype:sept /pdb:"../../build/windows/VC6/Debug/xqilla10.pdb" /libpath:"../../../xerces-c-src/Build/Win32/VC6/Debug" + +!ENDIF + +# Begin Target + +# Name "xqilla - Win32 Release" +# Name "xqilla - Win32 Debug" +# Begin Group "ast" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\ast\ASTNodeImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\AggregateFunction.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\ConstantFoldingFunction.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\ConvertFunctionArg.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\NumericFunction.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\StaticResolutionContext.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\StaticType.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XPath1Compat.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQAtomize.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQCastAs.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQCastableAs.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQContextItem.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQDOMConstructor.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQDocumentConstructor.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQElementConstructor.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQAttributeConstructor.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQPIConstructor.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQCommentConstructor.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQTextConstructor.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQDebugHook.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQDocumentOrder.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQFLWOR.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQFunction.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQFunctionCall.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQGlobalVariable.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQIf.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQInstanceOf.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQLiteral.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQNav.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQOperator.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQOrderingChange.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQParenthesizedExpr.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQPredicate.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQQuantified.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQSequence.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQStep.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQTreatAs.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQTypeswitch.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQValidate.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQVariable.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\ast\XQVariableBinding.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\ASTNode.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\ASTNodeImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\AggregateFunction.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\ConstantFoldingFunction.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\ConvertFunctionArg.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\LocationInfo.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\NumericFunction.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\StaticResolutionContext.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\StaticType.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XPath1Compat.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQAtomize.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQCastAs.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQCastableAs.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQContextItem.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQDOMConstructor.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQDocumentConstructor.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQElementConstructor.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQAttributeConstructor.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQPIConstructor.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQCommentConstructor.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQTextConstructor.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQDebugHook.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQDocumentOrder.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQFLWOR.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQFunction.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQFunctionCall.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQGlobalVariable.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQIf.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQInstanceOf.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQLiteral.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQNav.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQOperator.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQOrderingChange.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQParenthesizedExpr.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQPredicate.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQQuantified.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQSequence.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQStep.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQTreatAs.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQTypeswitch.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQValidate.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQVariable.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\ast\XQVariableBinding.hpp +# End Source File +# End Group +# Begin Group "axis" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\axis\AncestorAxis.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\axis\AncestorOrSelfAxis.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\axis\AttributeAxis.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\axis\Axis.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\axis\ChildAxis.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\axis\DescendantAxis.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\axis\DescendantOrSelfAxis.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\axis\FollowingAxis.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\axis\FollowingSiblingAxis.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\axis\NamespaceAxis.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\axis\NodeTest.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\axis\ParentAxis.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\axis\PrecedingAxis.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\axis\PrecedingSiblingAxis.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\axis\SelfAxis.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\axis\AncestorAxis.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\axis\AncestorOrSelfAxis.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\axis\AttributeAxis.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\axis\Axis.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\axis\ChildAxis.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\axis\DescendantAxis.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\axis\DescendantOrSelfAxis.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\axis\FollowingAxis.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\axis\FollowingSiblingAxis.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\axis\NamespaceAxis.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\axis\NodeTest.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\axis\ParentAxis.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\axis\PrecedingAxis.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\axis\PrecedingSiblingAxis.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\axis\SelfAxis.hpp +# End Source File +# End Group +# Begin Group "context" + +# PROP Default_Filter "" +# Begin Group "impl" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\context\impl\CodepointCollation.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\context\impl\CollationImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\context\impl\ItemFactoryImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\context\impl\VarHashEntryImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\context\impl\VarStoreImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\context\impl\VarStoreImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\context\impl\VarTypeStoreImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\context\impl\VarTypeStoreImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\context\impl\XQContextImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\context\impl\XQDynamicContextImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\context\impl\XQRemoteDebugger.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\context\impl\CodepointCollation.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\context\impl\CollationImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\context\impl\ItemFactoryImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\context\impl\VarHashEntryImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\context\impl\VariableStoreTemplate.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\context\impl\XQContextImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\context\impl\XQDynamicContextImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\context\impl\XQRemoteDebugger.hpp +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\src\context\XQScopedNamespace.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\context\Collation.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\context\ContextHelpers.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\context\DynamicContext.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\context\ItemFactory.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\context\Scope.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\context\StaticContext.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\context\URIResolver.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\context\ModuleResolver.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\context\VarHashEntry.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\context\VariableStore.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\context\VariableTypeStore.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\context\XQDebugCallback.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\context\XQScopedNamespace.hpp +# End Source File +# End Group +# Begin Group "dom-api" + +# PROP Default_Filter "" +# Begin Group "impl" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\dom-api\impl\XPath2ResultImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\dom-api\impl\XPath2ResultImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\dom-api\impl\XPathDocumentImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\dom-api\impl\XPathDocumentImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\dom-api\impl\XPathNamespaceImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\dom-api\impl\XPathNamespaceImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\dom-api\impl\XQillaBuilderImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\dom-api\impl\XQillaBuilderImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\dom-api\impl\XQillaDocumentImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\dom-api\impl\XQillaDocumentImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\dom-api\impl\XQillaExpressionImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\dom-api\impl\XQillaExpressionImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\dom-api\impl\XQillaNSResolverImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\dom-api\impl\XQillaXMLGrammarPoolImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\dom-api\impl\XQillaXMLGrammarPoolImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\dom-api\impl\XQillaNSResolverImpl.hpp +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\src\dom-api\XPath2NodeSerializer.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\dom-api\XPath2NodeSerializer.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\dom-api\XQillaImplementation.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\dom-api\XQillaImplementation.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\dom-api\XPath2Result.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\dom-api\XQillaExpression.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\dom-api\XQillaNSResolver.hpp +# End Source File +# End Group +# Begin Group "exceptions" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\exceptions\InvalidLexicalSpaceException.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\exceptions\MiscException.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\exceptions\XQException.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\exceptions\XQillaException.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\exceptions\ASTException.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\exceptions\ContextException.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\exceptions\DynamicErrorException.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\exceptions\FunctionException.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\exceptions\IllegalArgumentException.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\exceptions\ItemException.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\exceptions\NamespaceLookupException.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\exceptions\QueryInterruptedException.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\exceptions\QueryTimeoutException.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\exceptions\StaticErrorException.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\exceptions\TypeErrorException.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\exceptions\TypeNotFoundException.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\exceptions\XMLParseException.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\exceptions\XPath2ErrorException.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\exceptions\XPath2TypeCastException.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\exceptions\XPath2TypeMatchException.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\exceptions\XQException.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\exceptions\XQillaException.hpp +# End Source File +# End Group +# Begin Group "framework" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\framework\BaseMemoryManager.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\framework\ProxyMemoryManager.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\framework\ReferenceCounted.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\framework\StringPool.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\framework\XPath2MemoryManagerImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\framework\BaseMemoryManager.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\framework\ProxyMemoryManager.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\framework\ReferenceCounted.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\framework\StringPool.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\framework\XPath2MemoryManager.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\framework\XPath2MemoryManagerImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\framework\XQillaExport.hpp +# End Source File +# End Group +# Begin Group "fulltext" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\fulltext\FTContains.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\fulltext\FTWords.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\fulltext\FTOr.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\fulltext\FTAnd.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\fulltext\FTMildnot.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\fulltext\FTUnaryNot.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\fulltext\DefaultTokenizer.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\fulltext\DefaultTokenStore.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\fulltext\FTOrder.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\fulltext\FTDistance.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\fulltext\FTScope.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\fulltext\FTContent.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\fulltext\FTWindow.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\fulltext\AllMatches.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\fulltext\DefaultTokenizer.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\fulltext\DefaultTokenStore.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\fulltext\FTAnd.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\fulltext\FTContains.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\fulltext\FTContent.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\fulltext\FTDistance.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\fulltext\FTMildnot.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\fulltext\FTOption.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\fulltext\FTOr.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\fulltext\FTOrder.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\fulltext\FTRange.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\fulltext\FTScope.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\fulltext\FTSelection.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\fulltext\FTUnaryNot.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\fulltext\FTWindow.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\fulltext\FTWords.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\fulltext\Match.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\fulltext\TokenInfo.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\fulltext\Tokenizer.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\fulltext\TokenStore.hpp +# End Source File +# End Group +# Begin Group "functions" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\functions\FuncFactory.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FuncFactoryTemplate.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionAbs.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionAdjustDateTimeToTimezone.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionAdjustDateToTimezone.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionAdjustTimeToTimezone.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionAvg.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionBaseURI.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionBoolean.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionCeiling.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionCodepointEqual.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionCodepointsToString.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionCollection.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionCompare.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionConcat.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionConstructor.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionContains.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionCount.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionCurrentDate.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionCurrentDateTime.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionCurrentTime.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionData.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionDateTime.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionDayFromDate.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionDayFromDateTime.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionDaysFromDuration.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionDeepEqual.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionDefaultCollation.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionDistinctValues.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionDoc.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionDocAvailable.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionDocumentURI.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionEmpty.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionEncodeForUri.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionEndsWith.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionError.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionEscapeHtmlUri.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionExactlyOne.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionExists.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionFalse.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionFloor.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionHoursFromDateTime.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionHoursFromDuration.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionHoursFromTime.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionId.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionIdref.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionImplicitTimezone.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionInScopePrefixes.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionIndexOf.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionInsertBefore.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionIriToUri.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionLang.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionLast.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionLocalNameFromQName.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionLocalname.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionLookupImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionLookupImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionLowerCase.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionMatches.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionMax.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionMin.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionMinutesFromDateTime.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionMinutesFromDuration.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionMinutesFromTime.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionMonthFromDate.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionMonthFromDateTime.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionMonthsFromDuration.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionName.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionNamespaceURIForPrefix.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionNamespaceURIFromQName.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionNamespaceUri.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionNilled.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionNodeName.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionNormalizeSpace.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionNormalizeUnicode.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionNot.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionNumber.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionOneOrMore.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionPosition.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionPrefixFromQName.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionQName.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionRemove.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionReplace.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionResolveQName.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionResolveURI.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionReverse.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionRoot.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionRound.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionRoundHalfToEven.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionSecondsFromDateTime.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionSecondsFromDuration.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionSecondsFromTime.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionStartsWith.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionStaticBaseURI.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionString.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionStringJoin.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionStringLength.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionStringToCodepoints.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionSubsequence.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionSubstring.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionSubstringAfter.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionSubstringBefore.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionSum.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionTimezoneFromDate.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionTimezoneFromDateTime.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionTimezoneFromTime.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionTokenize.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionTrace.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionTranslate.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionTrue.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionUnordered.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionUpperCase.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionYearFromDate.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionYearFromDateTime.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionYearsFromDuration.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\FunctionZeroOrOne.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\functions\XQUserFunction.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FuncFactory.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionAbs.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionAdjustDateTimeToTimezone.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionAdjustDateToTimezone.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionAdjustTimeToTimezone.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionAvg.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionBaseURI.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionBoolean.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionCeiling.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionCodepointEqual.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionCodepointsToString.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionCollection.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionCompare.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionConcat.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionConstructor.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionContains.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionCount.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionCurrentDate.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionCurrentDateTime.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionCurrentTime.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionData.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionDateTime.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionDayFromDate.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionDayFromDateTime.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionDaysFromDuration.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionDeepEqual.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionDefaultCollation.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionDistinctValues.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionDoc.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionDocAvailable.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionDocumentURI.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionEmpty.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionEncodeForUri.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionEndsWith.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionError.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionEscapeHtmlUri.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionExactlyOne.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionExists.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionFalse.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionFloor.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionHoursFromDateTime.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionHoursFromDuration.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionHoursFromTime.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionId.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionIdref.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionImplicitTimezone.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionInScopePrefixes.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionIndexOf.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionInsertBefore.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionIriToUri.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionLang.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionLast.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionLocalNameFromQName.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionLocalname.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionLookup.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionLowerCase.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionMatches.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionMax.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionMin.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionMinutesFromDateTime.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionMinutesFromDuration.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionMinutesFromTime.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionMonthFromDate.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionMonthFromDateTime.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionMonthsFromDuration.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionName.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionNamespaceURIForPrefix.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionNamespaceURIFromQName.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionNamespaceUri.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionNilled.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionNodeName.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionNormalizeSpace.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionNormalizeUnicode.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionNot.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionNumber.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionOneOrMore.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionPosition.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionPrefixFromQName.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionQName.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionRemove.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionReplace.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionResolveQName.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionResolveURI.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionReverse.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionRoot.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionRound.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionRoundHalfToEven.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionSecondsFromDateTime.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionSecondsFromDuration.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionSecondsFromTime.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionStartsWith.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionStaticBaseURI.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionString.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionStringJoin.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionStringLength.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionStringToCodepoints.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionSubsequence.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionSubstring.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionSubstringAfter.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionSubstringBefore.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionSum.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionTimezoneFromDate.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionTimezoneFromDateTime.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionTimezoneFromTime.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionTokenize.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionTrace.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionTranslate.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionTrue.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionUnordered.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionUpperCase.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionYearFromDate.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionYearFromDateTime.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionYearsFromDuration.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\FunctionZeroOrOne.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\functions\XQUserFunction.hpp +# End Source File +# End Group +# Begin Group "items" + +# PROP Default_Filter "" +# Begin Group "impl" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\items\impl\ATAnySimpleTypeImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATAnySimpleTypeImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATAnyURIOrDerivedImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATAnyURIOrDerivedImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATBase64BinaryOrDerivedImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATBase64BinaryOrDerivedImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATBooleanOrDerivedImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATDateOrDerivedImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATDateTimeOrDerivedImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATDecimalOrDerivedImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATDoubleOrDerivedImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATDurationOrDerivedImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATFloatOrDerivedImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATGDayOrDerivedImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATGMonthDayOrDerivedImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATGMonthOrDerivedImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATGYearMonthOrDerivedImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATGYearOrDerivedImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATHexBinaryOrDerivedImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATHexBinaryOrDerivedImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATNotationOrDerivedImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATNotationOrDerivedImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATQNameOrDerivedImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATStringOrDerivedImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATStringOrDerivedImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATTimeOrDerivedImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATUntypedAtomicImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\ATUntypedAtomicImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\impl\NodeImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\impl\ATBooleanOrDerivedImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\impl\ATDecimalOrDerivedImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\impl\ATDoubleOrDerivedImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\impl\ATFloatOrDerivedImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\impl\ATQNameOrDerivedImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\impl\NodeImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\impl\ATDurationOrDerivedImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\impl\ATDateTimeOrDerivedImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\impl\ATDateOrDerivedImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\impl\ATTimeOrDerivedImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\impl\ATGDayOrDerivedImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\impl\ATGMonthDayOrDerivedImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\impl\ATGMonthOrDerivedImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\impl\ATGYearMonthOrDerivedImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\impl\ATGYearOrDerivedImpl.hpp +# End Source File +# End Group +# Begin Source File + +SOURCE=..\..\src\items\ATDurationOrDerived.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\ATQNameConstructor.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\ATUntypedAtomic.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\AnyAtomicType.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\AnyAtomicTypeConstructor.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\DatatypeFactory.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\DatatypeFactoryTemplate.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\DatatypeLookup.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\DateOrTimeType.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\Item.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\Node.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\Numeric.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\NumericTypeConstructor.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\items\Timezone.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATAnySimpleType.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATAnyURIOrDerived.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATBase64BinaryOrDerived.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATBooleanOrDerived.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATDateOrDerived.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATDateTimeOrDerived.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATDecimalOrDerived.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATDoubleOrDerived.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATDurationOrDerived.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATFloatOrDerived.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATGDayOrDerived.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATGMonthDayOrDerived.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATGMonthOrDerived.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATGYearMonthOrDerived.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATGYearOrDerived.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATHexBinaryOrDerived.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATNotationOrDerived.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATQNameConstructor.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATQNameOrDerived.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATStringOrDerived.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATTimeOrDerived.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ATUntypedAtomic.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\AnyAtomicType.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\AnyAtomicTypeConstructor.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\DatatypeFactory.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\DatatypeLookup.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\DateOrTimeType.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\Item.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\ItemConstructor.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\Node.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\Numeric.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\NumericTypeConstructor.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\items\Timezone.hpp +# End Source File +# End Group +# Begin Group "lexer" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\lexer\FlexLexer.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\lexer\XQLexer.l +# End Source File +# Begin Source File + +SOURCE=..\..\src\lexer\XQLexer.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\lexer\XQLexer.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\lexer\XQillaLexer.hpp +# End Source File +# End Group +# Begin Group "mapm" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\mapm\m_apm.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\m_apm_lc.h +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapm5sin.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapm_add.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapm_cpi.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapm_div.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapm_exp.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapm_fam.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapm_fft.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapm_flr.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapm_fpf.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapm_gcd.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapm_lg2.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapm_lg3.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapm_log.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapm_mt.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapm_mul.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapm_pow.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapm_rcp.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapm_rnd.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapm_set.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapm_sin.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapmasin.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapmasn0.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapmcbrt.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapmcnst.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapmfact.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapmfmul.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapmgues.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapmhasn.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapmhsin.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapmipwr.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapmistr.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapmpwr2.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapmrsin.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapmsqrt.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapmstck.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapmutil.c +# End Source File +# Begin Source File + +SOURCE=..\..\src\mapm\mapmutl2.c +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\mapm\m_apm.h +# End Source File +# End Group +# Begin Group "operators" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\operators\And.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\ArithmeticOperator.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\ComparisonOperator.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\Divide.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\Equals.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\Except.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\GeneralComp.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\GreaterThan.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\GreaterThanEqual.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\IntegerDivide.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\Intersect.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\LessThan.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\LessThanEqual.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\Minus.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\Mod.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\Multiply.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\NodeComparison.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\NotEquals.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\Or.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\OrderComparison.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\Plus.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\Range.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\UnaryMinus.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\operators\Union.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\And.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\ArithmeticOperator.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\ComparisonOperator.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\Divide.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\Equals.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\Except.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\GeneralComp.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\GreaterThan.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\GreaterThanEqual.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\IntegerDivide.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\Intersect.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\LessThan.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\LessThanEqual.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\Minus.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\Mod.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\Multiply.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\NodeComparison.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\NotEquals.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\Or.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\OrderComparison.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\Plus.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\Range.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\UnaryMinus.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\operators\Union.hpp +# End Source File +# End Group +# Begin Group "parser" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\parser\QName.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\parser\XQParser.y +# End Source File +# Begin Source File + +SOURCE=..\..\src\parser\XQParser.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\parser\XQParser.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\parser\QName.hpp +# End Source File +# End Group +# Begin Group "runtime" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\runtime\EmptyResult.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\runtime\LazySequenceResult.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\runtime\Result.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\runtime\ResultBuffer.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\runtime\ResultBufferImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\runtime\ResultImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\runtime\Sequence.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\runtime\SequenceResult.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\runtime\SingleResult.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\runtime\EmptyResult.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\runtime\LazySequenceResult.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\runtime\Result.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\runtime\ResultBuffer.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\runtime\ResultBufferImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\runtime\ResultImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\runtime\Sequence.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\runtime\SequenceResult.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\runtime\SingleResult.hpp +# End Source File +# End Group +# Begin Group "schema" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\schema\AnyAtomicTypeDatatypeValidator.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\schema\DocumentCacheImpl.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\schema\SequenceType.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\schema\AnyAtomicTypeDatatypeValidator.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\schema\DocumentCache.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\schema\DocumentCacheImpl.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\schema\SequenceType.hpp +# End Source File +# End Group +# Begin Group "simple-api" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\simple-api\XQQuery.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\simple-api\XQilla.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\simple-api\XQQuery.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\simple-api\XQilla.hpp +# End Source File +# End Group +# Begin Group "utils" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\utils\ContextUtils.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\utils\DateUtils.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\utils\DateUtils.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\utils\NumUtils.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\utils\PrintAST.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\utils\UCANormalizer.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\utils\UCANormalizer1.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\utils\UCANormalizer2.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\utils\UCANormalizer3.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\utils\UCANormalizer4.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\utils\UTF8Str.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\utils\XMLChCompare.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\utils\XPath2NSUtils.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\utils\XPath2Utils.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\utils\XQillaPlatformUtils.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\utils\XStr.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\utils\ContextUtils.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\utils\NumUtils.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\utils\PrintAST.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\utils\UCANormalizer.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\utils\UTF8Str.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\utils\XMLChCompare.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\utils\XPath2NSUtils.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\utils\XPath2Utils.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\utils\XQillaPlatformUtils.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\utils\XStr.hpp +# End Source File +# End Group +# Begin Group "xqts" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\src\xqts\TestSuiteParser.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\xqts\TestSuiteResultListener.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\src\xqts\TestSuiteRunner.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\xqts\TestSuiteParser.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\xqts\TestSuiteResultListener.hpp +# End Source File +# Begin Source File + +SOURCE=..\..\include\xqilla\xqts\TestSuiteRunner.hpp +# End Source File +# End Group +# End Target +# End Project diff --git a/Win32Projects/VC6/xqilla_cmd.dsp b/Win32Projects/VC6/xqilla_cmd.dsp new file mode 100644 index 00000000..2a1839db --- /dev/null +++ b/Win32Projects/VC6/xqilla_cmd.dsp @@ -0,0 +1,90 @@ +# Microsoft Developer Studio Project File - Name="xqilla_cmd" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=xqilla_cmd - 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 "xqilla_cmd.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 "xqilla_cmd.mak" CFG="xqilla_cmd - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "xqilla_cmd - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "xqilla_cmd - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "xqilla_cmd - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "../../build/windows/VC6\Release" +# PROP BASE Intermediate_Dir "../../build/windows/VC6\Release\xqilla_cmd" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "../../build/windows/VC6\Release" +# PROP Intermediate_Dir "../../build/windows/VC6\Release\xqilla_cmd" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../../include" /I "../../../xerces-c-src/include" /I "../../../xerces-c-src/src"/I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /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 /nologo /subsystem:console /machine:I386 +# ADD LINK32 /libpath:../../build/windows/VC6/Release xerces-c_2.lib xqilla10.lib /libpath:../../../xerces-c-src/Build/Win32/VC6/Release /nologo /out:../../build/windows/VC6/Release/xqilla.exe /subsystem:console /machine:I386 /nodefaultlib:"libcmt" + +!ELSEIF "$(CFG)" == "xqilla_cmd - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "../../build/windows/VC6\Debug" +# PROP BASE Intermediate_Dir "../../build/windows/VC6\Debug\xqilla_cmd" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "../../build/windows/VC6\Debug" +# PROP Intermediate_Dir "../../build/windows/VC6\Debug\xqilla_cmd" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "." /I "../../include" /I "../../../xerces-c-src/include" /I "../../../xerces-c-src/src" /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /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 /libpath:../../build/windows/VC6/Debug xerces-c_2d.lib xqilla10d.lib /libpath:../../../xerces-c-src/Build/Win32/VC6/Debug /nologo /out:../../build/windows/VC6/Debug/xqilla.exe /pdb:"../../build/windows/VC6/Debug/xqilla.pdb" /subsystem:console /debug /machine:I386 /nodefaultlib:"libcmt" + +!ENDIF + +# Begin Target + +# Name "xqilla_cmd - Win32 Release" +# Name "xqilla_cmd - Win32 Debug" +# Begin Source File + +SOURCE=..\..\src\samples\xqilla\xqilla-commandline.cpp +# End Source File +# End Target +# End Project diff --git a/Win32Projects/VC6/xqtsRunner.dsp b/Win32Projects/VC6/xqtsRunner.dsp new file mode 100644 index 00000000..6ac61593 --- /dev/null +++ b/Win32Projects/VC6/xqtsRunner.dsp @@ -0,0 +1,90 @@ +# Microsoft Developer Studio Project File - Name="xqtsRunner" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=xqtsRunner - 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 "xqtsRunner.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 "xqtsRunner.mak" CFG="xqtsRunner - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "xqtsRunner - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "xqtsRunner - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "xqtsRunner - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "../../build/windows/VC6\Release" +# PROP BASE Intermediate_Dir "../../build/windows/VC6\Release\xqtsRunner" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "../../build/windows/VC6\Release" +# PROP Intermediate_Dir "../../build/windows/VC6\Release\xqtsRunner" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../../include" /I "../../../xerces-c-src/include" /I "../../../xerces-c-src/src"/I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /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 /nologo /subsystem:console /machine:I386 +# ADD LINK32 /libpath:../../build/windows/VC6/Release xerces-c_2.lib xqilla10.lib /libpath:../../../xerces-c-src/Build/Win32/VC6/Release /nologo /out:../../build/windows/VC6/Release/xqtsRunner.exe /subsystem:console /machine:I386 /nodefaultlib:"libcmt" + +!ELSEIF "$(CFG)" == "xqtsRunner - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "../../build/windows/VC6\Debug" +# PROP BASE Intermediate_Dir "../../build/windows/VC6\Debug\xqtsRunner" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "../../build/windows/VC6\Debug" +# PROP Intermediate_Dir "../../build/windows/VC6\Debug\xqtsRunner" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "." /I "../../include" /I "../../../xerces-c-src/include" /I "../../../xerces-c-src/src" /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /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 /libpath:../../build/windows/VC6/Debug xerces-c_2d.lib xqilla10d.lib /libpath:../../../xerces-c-src/Build/Win32/VC6/Debug /nologo /out:../../build/windows/VC6/Debug/xqtsRunner.exe /pdb:"../../build/windows/VC6/Debug/xqtsRunner.pdb" /subsystem:console /debug /machine:I386 /nodefaultlib:"libcmt" + +!ENDIF + +# Begin Target + +# Name "xqtsRunner - Win32 Release" +# Name "xqtsRunner - Win32 Debug" +# Begin Source File + +SOURCE=..\..\tests\xqts\runner.cpp +# End Source File +# End Target +# End Project diff --git a/Win32Projects/VC7.1/XQilla.sln b/Win32Projects/VC7.1/XQilla.sln new file mode 100644 index 00000000..c4acf72a --- /dev/null +++ b/Win32Projects/VC7.1/XQilla.sln @@ -0,0 +1,87 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xqilla", "XQilla.vcproj", "{63E85107-41E0-4FC7-8083-40E85861B426}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "basicXQillaUsage", "basicXQillaUsage.vcproj", "{FF1806C2-8740-43F7-9A2F-800B617EFF15}" + ProjectSection(ProjectDependencies) = postProject + {63E85107-41E0-4FC7-8083-40E85861B426} = {63E85107-41E0-4FC7-8083-40E85861B426} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xqilla_cmd", "xqilla_cmd.vcproj", "{44F4673C-C971-4085-8750-3BA0D7FE6FD2}" + ProjectSection(ProjectDependencies) = postProject + {63E85107-41E0-4FC7-8083-40E85861B426} = {63E85107-41E0-4FC7-8083-40E85861B426} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xqtsRunner", "xqtsRunner.vcproj", "{E8F410F3-AA0A-4E73-97DC-B444C2CBDAA3}" + ProjectSection(ProjectDependencies) = postProject + {63E85107-41E0-4FC7-8083-40E85861B426} = {63E85107-41E0-4FC7-8083-40E85861B426} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + Debug AMD64 = Debug AMD64 + Release AMD64 = Release AMD64 + Debug IA64 = Debug IA64 + Release IA64 = Release IA64 + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {63E85107-41E0-4FC7-8083-40E85861B426}.Debug.ActiveCfg = Debug|Win32 + {63E85107-41E0-4FC7-8083-40E85861B426}.Debug.Build.0 = Debug|Win32 + {63E85107-41E0-4FC7-8083-40E85861B426}.Release.ActiveCfg = Release|Win32 + {63E85107-41E0-4FC7-8083-40E85861B426}.Release.Build.0 = Release|Win32 + {63E85107-41E0-4FC7-8083-40E85861B426}.Debug IA64.ActiveCfg = Debug IA64|Win32 + {63E85107-41E0-4FC7-8083-40E85861B426}.Debug IA64.Build.0 = Debug IA64|Win32 + {63E85107-41E0-4FC7-8083-40E85861B426}.Release IA64.ActiveCfg = Release IA64|Win32 + {63E85107-41E0-4FC7-8083-40E85861B426}.Release IA64.Build.0 = Release IA64|Win32 + {63E85107-41E0-4FC7-8083-40E85861B426}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 + {63E85107-41E0-4FC7-8083-40E85861B426}.Debug AMD64.Build.0 = Debug AMD64|Win32 + {63E85107-41E0-4FC7-8083-40E85861B426}.Release AMD64.ActiveCfg = Release AMD64|Win32 + {63E85107-41E0-4FC7-8083-40E85861B426}.Release AMD64.Build.0 = Release AMD64|Win32 + {FF1806C2-8740-43F7-9A2F-800B617EFF15}.Debug.ActiveCfg = Debug|Win32 + {FF1806C2-8740-43F7-9A2F-800B617EFF15}.Debug.Build.0 = Debug|Win32 + {FF1806C2-8740-43F7-9A2F-800B617EFF15}.Release.ActiveCfg = Release|Win32 + {FF1806C2-8740-43F7-9A2F-800B617EFF15}.Release.Build.0 = Release|Win32 + {FF1806C2-8740-43F7-9A2F-800B617EFF15}.Debug IA64.ActiveCfg = Debug IA64|Win32 + {FF1806C2-8740-43F7-9A2F-800B617EFF15}.Debug IA64.Build.0 = Debug IA64|Win32 + {FF1806C2-8740-43F7-9A2F-800B617EFF15}.Release IA64.ActiveCfg = Release IA64|Win32 + {FF1806C2-8740-43F7-9A2F-800B617EFF15}.Release IA64.Build.0 = Release IA64|Win32 + {FF1806C2-8740-43F7-9A2F-800B617EFF15}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 + {FF1806C2-8740-43F7-9A2F-800B617EFF15}.Debug AMD64.Build.0 = Debug AMD64|Win32 + {FF1806C2-8740-43F7-9A2F-800B617EFF15}.Release AMD64.ActiveCfg = Release AMD64|Win32 + {FF1806C2-8740-43F7-9A2F-800B617EFF15}.Release AMD64.Build.0 = Release AMD64|Win32 + {44F4673C-C971-4085-8750-3BA0D7FE6FD2}.Debug.ActiveCfg = Debug|Win32 + {44F4673C-C971-4085-8750-3BA0D7FE6FD2}.Debug.Build.0 = Debug|Win32 + {44F4673C-C971-4085-8750-3BA0D7FE6FD2}.Release.ActiveCfg = Release|Win32 + {44F4673C-C971-4085-8750-3BA0D7FE6FD2}.Release.Build.0 = Release|Win32 + {44F4673C-C971-4085-8750-3BA0D7FE6FD2}.Debug IA64.ActiveCfg = Debug IA64|Win32 + {44F4673C-C971-4085-8750-3BA0D7FE6FD2}.Debug IA64.Build.0 = Debug IA64|Win32 + {44F4673C-C971-4085-8750-3BA0D7FE6FD2}.Release IA64.ActiveCfg = Release IA64|Win32 + {44F4673C-C971-4085-8750-3BA0D7FE6FD2}.Release IA64.Build.0 = Release IA64|Win32 + {44F4673C-C971-4085-8750-3BA0D7FE6FD2}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 + {44F4673C-C971-4085-8750-3BA0D7FE6FD2}.Debug AMD64.Build.0 = Debug AMD64|Win32 + {44F4673C-C971-4085-8750-3BA0D7FE6FD2}.Release AMD64.ActiveCfg = Release AMD64|Win32 + {44F4673C-C971-4085-8750-3BA0D7FE6FD2}.Release AMD64.Build.0 = Release AMD64|Win32 + {E8F410F3-AA0A-4E73-97DC-B444C2CBDAA3}.Debug.ActiveCfg = Debug|Win32 + {E8F410F3-AA0A-4E73-97DC-B444C2CBDAA3}.Debug.Build.0 = Debug|Win32 + {E8F410F3-AA0A-4E73-97DC-B444C2CBDAA3}.Release.ActiveCfg = Release|Win32 + {E8F410F3-AA0A-4E73-97DC-B444C2CBDAA3}.Release.Build.0 = Release|Win32 + {E8F410F3-AA0A-4E73-97DC-B444C2CBDAA3}.Debug IA64.ActiveCfg = Debug IA64|Win32 + {E8F410F3-AA0A-4E73-97DC-B444C2CBDAA3}.Debug IA64.Build.0 = Debug IA64|Win32 + {E8F410F3-AA0A-4E73-97DC-B444C2CBDAA3}.Release IA64.ActiveCfg = Release IA64|Win32 + {E8F410F3-AA0A-4E73-97DC-B444C2CBDAA3}.Release IA64.Build.0 = Release IA64|Win32 + {E8F410F3-AA0A-4E73-97DC-B444C2CBDAA3}.Debug AMD64.ActiveCfg = Debug AMD64|Win32 + {E8F410F3-AA0A-4E73-97DC-B444C2CBDAA3}.Debug AMD64.Build.0 = Debug AMD64|Win32 + {E8F410F3-AA0A-4E73-97DC-B444C2CBDAA3}.Release AMD64.ActiveCfg = Release AMD64|Win32 + {E8F410F3-AA0A-4E73-97DC-B444C2CBDAA3}.Release AMD64.Build.0 = Release AMD64|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection + GlobalSection(DPCodeReviewSolutionGUID) = preSolution + DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000} + EndGlobalSection +EndGlobal diff --git a/Win32Projects/VC7.1/basicXQillaUsage.vcproj b/Win32Projects/VC7.1/basicXQillaUsage.vcproj new file mode 100644 index 00000000..df6b9101 --- /dev/null +++ b/Win32Projects/VC7.1/basicXQillaUsage.vcproj @@ -0,0 +1,401 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Win32Projects/VC7.1/xqilla.vcproj b/Win32Projects/VC7.1/xqilla.vcproj new file mode 100644 index 00000000..0f6f8398 --- /dev/null +++ b/Win32Projects/VC7.1/xqilla.vcproj @@ -0,0 +1,2650 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Win32Projects/VC7.1/xqilla_cmd.vcproj b/Win32Projects/VC7.1/xqilla_cmd.vcproj new file mode 100644 index 00000000..1c84aeab --- /dev/null +++ b/Win32Projects/VC7.1/xqilla_cmd.vcproj @@ -0,0 +1,401 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Win32Projects/VC7.1/xqtsRunner.vcproj b/Win32Projects/VC7.1/xqtsRunner.vcproj new file mode 100644 index 00000000..d9dfdcd9 --- /dev/null +++ b/Win32Projects/VC7.1/xqtsRunner.vcproj @@ -0,0 +1,401 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 00000000..32888374 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,7276 @@ +# generated automatically by aclocal 1.9.6 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + +# serial 48 Debian 1.5.22-2 AC_PROG_LIBTOOL + + +# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) +# ----------------------------------------------------------- +# If this macro is not defined by Autoconf, define it here. +m4_ifdef([AC_PROVIDE_IFELSE], + [], + [m4_define([AC_PROVIDE_IFELSE], + [m4_ifdef([AC_PROVIDE_$1], + [$2], [$3])])]) + + +# AC_PROG_LIBTOOL +# --------------- +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl +dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX +dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. + AC_PROVIDE_IFELSE([AC_PROG_CXX], + [AC_LIBTOOL_CXX], + [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX + ])]) +dnl And a similar setup for Fortran 77 support + AC_PROVIDE_IFELSE([AC_PROG_F77], + [AC_LIBTOOL_F77], + [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 +])]) + +dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. +dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run +dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. + AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [ifdef([AC_PROG_GCJ], + [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([A][M_PROG_GCJ], + [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([LT_AC_PROG_GCJ], + [define([LT_AC_PROG_GCJ], + defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) +])])# AC_PROG_LIBTOOL + + +# _AC_PROG_LIBTOOL +# ---------------- +AC_DEFUN([_AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl +AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl +AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl +AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +])# _AC_PROG_LIBTOOL + + +# AC_LIBTOOL_SETUP +# ---------------- +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.50)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl + +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl + +AC_LIBTOOL_SYS_MAX_CMD_LEN +AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +AC_LIBTOOL_OBJDIR + +AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +_LT_AC_PROG_ECHO_BACKSLASH + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] + +# Same as above, but do not quote variable references. +[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +AC_CHECK_TOOL(AR, ar, false) +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +AC_ARG_WITH([pic], + [AC_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +AC_LIBTOOL_LANG_C_CONFIG +_LT_AC_TAGCONFIG +])# AC_LIBTOOL_SETUP + + +# _LT_AC_SYS_COMPILER +# ------------------- +AC_DEFUN([_LT_AC_SYS_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_AC_SYS_COMPILER + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +AC_DEFUN([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +]) + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +AC_DEFUN([_LT_COMPILER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +AC_DEFUN([_LT_LINKER_BOILERPLATE], +[ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_LINKER_BOILERPLATE + + +# _LT_AC_SYS_LIBPATH_AIX +# ---------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], +[AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_AC_SYS_LIBPATH_AIX + + +# _LT_AC_SHELL_INIT(ARG) +# ---------------------- +AC_DEFUN([_LT_AC_SHELL_INIT], +[ifdef([AC_DIVERSION_NOTICE], + [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +$1 +AC_DIVERT_POP +])# _LT_AC_SHELL_INIT + + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[_LT_AC_SHELL_INIT([ +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string=`eval $cmd`) 2>/dev/null && + echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +])])# _LT_AC_PROG_ECHO_BACKSLASH + + +# _LT_AC_LOCK +# ----------- +AC_DEFUN([_LT_AC_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) LD="${LD-ld} -64" ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; + ]) +esac + +need_locks="$enable_libtool_lock" + +])# _LT_AC_LOCK + + +# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], +[AC_REQUIRE([LT_AC_PROG_SED]) +AC_CACHE_CHECK([$1], [$2], + [$2=no + ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $rm conftest* +]) + +if test x"[$]$2" = xyes; then + ifelse([$5], , :, [$5]) +else + ifelse([$6], , :, [$6]) +fi +])# AC_LIBTOOL_COMPILER_OPTION + + +# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ------------------------------------------------------------ +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], +[AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + ifelse([$4], , :, [$4]) +else + ifelse([$5], , :, [$5]) +fi +])# AC_LIBTOOL_LINKER_OPTION + + +# AC_LIBTOOL_SYS_MAX_CMD_LEN +# -------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], +[# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +])# AC_LIBTOOL_SYS_MAX_CMD_LEN + + +# _LT_AC_CHECK_DLFCN +# ------------------ +AC_DEFUN([_LT_AC_CHECK_DLFCN], +[AC_CHECK_HEADERS(dlfcn.h)dnl +])# _LT_AC_CHECK_DLFCN + + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# --------------------------------------------------------------------- +AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + + +# AC_LIBTOOL_DLOPEN_SELF +# ---------------------- +AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +])# AC_LIBTOOL_DLOPEN_SELF + + +# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) +# --------------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler +AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* +]) +])# AC_LIBTOOL_PROG_CC_C_O + + +# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) +# ----------------------------------------- +# Check to see if we can do hard links to lock some files if needed +AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], +[AC_REQUIRE([_LT_AC_LOCK])dnl + +hard_links="nottested" +if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS + + +# AC_LIBTOOL_OBJDIR +# ----------------- +AC_DEFUN([AC_LIBTOOL_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +])# AC_LIBTOOL_OBJDIR + + +# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) +# ---------------------------------------------- +# Check hardcoding attributes. +AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_AC_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ + test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ + test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_AC_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_AC_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_AC_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH + + +# AC_LIBTOOL_SYS_LIB_STRIP +# ------------------------ +AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], +[striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) +fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +])# AC_LIBTOOL_SYS_LIB_STRIP + + +# AC_LIBTOOL_SYS_DYNAMIC_LINKER +# ----------------------------- +# PORTME Fill in your ld.so characteristics +AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], +[AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[123]]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi +])# AC_LIBTOOL_SYS_DYNAMIC_LINKER + + +# _LT_AC_TAGCONFIG +# ---------------- +AC_DEFUN([_LT_AC_TAGCONFIG], +[AC_ARG_WITH([tags], + [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], + [include additional configurations @<:@automatic@:>@])], + [tagnames="$withval"]) + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + AC_MSG_WARN([output file `$ofile' does not exist]) + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) + else + AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) + fi + fi + if test -z "$LTCFLAGS"; then + eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in + "") ;; + *) AC_MSG_ERROR([invalid tag name: $tagname]) + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + AC_MSG_ERROR([tag name \"$tagname\" already exists]) + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_LIBTOOL_LANG_CXX_CONFIG + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + AC_LIBTOOL_LANG_F77_CONFIG + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + AC_LIBTOOL_LANG_GCJ_CONFIG + else + tagname="" + fi + ;; + + RC) + AC_LIBTOOL_LANG_RC_CONFIG + ;; + + *) + AC_MSG_ERROR([Unsupported tag name: $tagname]) + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + AC_MSG_ERROR([unable to update list of available tagged configurations.]) + fi +fi +])# _LT_AC_TAGCONFIG + + +# AC_LIBTOOL_DLOPEN +# ----------------- +# enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], + [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_DLOPEN + + +# AC_LIBTOOL_WIN32_DLL +# -------------------- +# declare package support for building win32 DLLs +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_WIN32_DLL + + +# AC_ENABLE_SHARED([DEFAULT]) +# --------------------------- +# implement the --enable-shared flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([shared], + [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]AC_ENABLE_SHARED_DEFAULT) +])# AC_ENABLE_SHARED + + +# AC_DISABLE_SHARED +# ----------------- +# set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no) +])# AC_DISABLE_SHARED + + +# AC_ENABLE_STATIC([DEFAULT]) +# --------------------------- +# implement the --enable-static flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([static], + [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]AC_ENABLE_STATIC_DEFAULT) +])# AC_ENABLE_STATIC + + +# AC_DISABLE_STATIC +# ----------------- +# set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no) +])# AC_DISABLE_STATIC + + +# AC_ENABLE_FAST_INSTALL([DEFAULT]) +# --------------------------------- +# implement the --enable-fast-install flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([fast-install], + [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) +])# AC_ENABLE_FAST_INSTALL + + +# AC_DISABLE_FAST_INSTALL +# ----------------------- +# set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no) +])# AC_DISABLE_FAST_INSTALL + + +# AC_LIBTOOL_PICMODE([MODE]) +# -------------------------- +# implement the --with-pic flag +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default) +])# AC_LIBTOOL_PICMODE + + +# AC_PROG_EGREP +# ------------- +# This is predefined starting with Autoconf 2.54, so this conditional +# definition can be removed once we require Autoconf 2.54 or later. +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], +[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], + [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]) + EGREP=$ac_cv_prog_egrep + AC_SUBST([EGREP]) +])]) + + +# AC_PATH_TOOL_PREFIX +# ------------------- +# find a file program which can recognise shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +])# AC_PATH_TOOL_PREFIX + + +# AC_PATH_MAGIC +# ------------- +# find a file program which can recognise a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# AC_PATH_MAGIC + + +# AC_PROG_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH([gnu-ld], + [AC_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no]) +AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix3*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown +])# AC_DEPLIBS_CHECK_METHOD + + +# AC_PROG_NM +# ---------- +# find the pathname to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +])# AC_PROG_NM + + +# AC_CHECK_LIBM +# ------------- +# check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +])# AC_CHECK_LIBM + + +# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl convenience library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-convenience to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +# it is assumed to be `libltdl'. LIBLTDL will be prefixed with +# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' +# (note the single quotes!). If your package is not flat and you're not +# using automake, define top_builddir and top_srcdir appropriately in +# the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_CONVENIENCE + + +# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl installable library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-install to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +# and an installed libltdl is not found, it is assumed to be `libltdl'. +# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and top_srcdir +# appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, lt_dlinit, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + LTDLINCL= + fi + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_INSTALLABLE + + +# AC_LIBTOOL_CXX +# -------------- +# enable support for C++ libraries +AC_DEFUN([AC_LIBTOOL_CXX], +[AC_REQUIRE([_LT_AC_LANG_CXX]) +])# AC_LIBTOOL_CXX + + +# _LT_AC_LANG_CXX +# --------------- +AC_DEFUN([_LT_AC_LANG_CXX], +[AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) +])# _LT_AC_LANG_CXX + +# _LT_AC_PROG_CXXCPP +# ------------------ +AC_DEFUN([_LT_AC_PROG_CXXCPP], +[ +AC_REQUIRE([AC_PROG_CXX]) +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +fi +])# _LT_AC_PROG_CXXCPP + +# AC_LIBTOOL_F77 +# -------------- +# enable support for Fortran 77 libraries +AC_DEFUN([AC_LIBTOOL_F77], +[AC_REQUIRE([_LT_AC_LANG_F77]) +])# AC_LIBTOOL_F77 + + +# _LT_AC_LANG_F77 +# --------------- +AC_DEFUN([_LT_AC_LANG_F77], +[AC_REQUIRE([AC_PROG_F77]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) +])# _LT_AC_LANG_F77 + + +# AC_LIBTOOL_GCJ +# -------------- +# enable support for GCJ libraries +AC_DEFUN([AC_LIBTOOL_GCJ], +[AC_REQUIRE([_LT_AC_LANG_GCJ]) +])# AC_LIBTOOL_GCJ + + +# _LT_AC_LANG_GCJ +# --------------- +AC_DEFUN([_LT_AC_LANG_GCJ], +[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], + [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], + [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], + [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) +])# _LT_AC_LANG_GCJ + + +# AC_LIBTOOL_RC +# ------------- +# enable support for Windows resource files +AC_DEFUN([AC_LIBTOOL_RC], +[AC_REQUIRE([LT_AC_PROG_RC]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) +])# AC_LIBTOOL_RC + + +# AC_LIBTOOL_LANG_C_CONFIG +# ------------------------ +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) +AC_DEFUN([_LT_AC_LANG_C_CONFIG], +[lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF + +# Report which library types will actually be built +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_C_CONFIG + + +# AC_LIBTOOL_LANG_CXX_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) +AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], +[AC_LANG_PUSH(C++) +AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) + +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(allow_undefined_flag, $1)= +_LT_AC_TAGVAR(always_export_symbols, $1)=no +_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_direct, $1)=no +_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_AC_TAGVAR(hardcode_automatic, $1)=no +_LT_AC_TAGVAR(module_cmds, $1)= +_LT_AC_TAGVAR(module_expsym_cmds, $1)= +_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_AC_TAGVAR(no_undefined_flag, $1)= +_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Dependencies to place before and after the object being linked: +_LT_AC_TAGVAR(predep_objects, $1)= +_LT_AC_TAGVAR(postdep_objects, $1)= +_LT_AC_TAGVAR(predeps, $1)= +_LT_AC_TAGVAR(postdeps, $1)= +_LT_AC_TAGVAR(compiler_lib_search_path, $1)= + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + $as_unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + $as_unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +else + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + AC_PROG_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +_LT_AC_TAGVAR(ld_shlibs, $1)=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + freebsd-elf*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + ;; + gnu*) + ;; + hpux9*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + ;; + *) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + interix3*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + linux*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC*) + # Portland Group C++ compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + m88k*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + # So that behaviour is only enabled if SCOABSPATH is set to a + # non-empty value in the environment. Most likely only useful for + # creating official distributions of packages. + # This is a hack until libtool officially supports absolute path + # names for shared libraries. + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; +esac +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_AC_TAGVAR(GCC, $1)="$GXX" +_LT_AC_TAGVAR(LD, $1)="$LD" + +AC_LIBTOOL_POSTDEP_PREDEP($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +])# AC_LIBTOOL_LANG_CXX_CONFIG + +# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) +# ------------------------------------ +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" +ifelse([$1], [], +[#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG], +[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) + +# Is the compiler the GNU C compiler? +with_gcc=$_LT_AC_TAGVAR(GCC, $1) + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_[]_LT_AC_TAGVAR(LD, $1) + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) + +# Commands used to build and install a shared archive. +archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) +archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) +module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" + +# Set to yes if exported symbols are required. +always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) + +# The commands to list exported symbols. +export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) + +# Symbols that must always be exported. +include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) + +ifelse([$1],[], +[# ### END LIBTOOL CONFIG], +[# ### END LIBTOOL TAG CONFIG: $tagname]) + +__EOF__ + +ifelse([$1],[], [ + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +]) +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi +])# AC_LIBTOOL_CONFIG + + +# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl + +_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + + AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI + + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDGIRSTW]]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[[]] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + + +# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) +# --------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], +[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) + ifelse([$1],[CXX],[ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC*) + # Portland Group C++ compiler. + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + newsos6) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then + AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], + _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), + [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\" +AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) +]) + + +# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) +# ------------------------------------ +# See if the linker supports building shared libraries. +AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], +[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +ifelse([$1],[CXX],[ + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + kfreebsd*-gnu) + _LT_AC_TAGVAR(link_all_deplibs, $1)=no + ;; + linux*) + _LT_AC_TAGVAR(link_all_deplibs, $1)=no + ;; + *) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +],[ + runpath_var= + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)= + _LT_AC_TAGVAR(archive_expsym_cmds, $1)= + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown + _LT_AC_TAGVAR(hardcode_automatic, $1)=no + _LT_AC_TAGVAR(module_cmds, $1)= + _LT_AC_TAGVAR(module_expsym_cmds, $1)= + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_AC_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + _LT_CC_BASENAME([$compiler]) + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + interix3*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + _LT_AC_TAGVAR(link_all_deplibs, $1)=no + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + # see comment about different semantics on the GNU ld section + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + bsdi[[45]]*) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' + _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # GNU/kFreeBSD uses gcc -shared to do shared libraries. + kfreebsd*-gnu) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(link_all_deplibs, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + openbsd*) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; + *) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_AC_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + else + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) + ;; + esac + fi + ;; +esac +])# AC_LIBTOOL_PROG_LD_SHLIBS + + +# _LT_AC_FILE_LTDLL_C +# ------------------- +# Be careful that the start marker always follows a newline. +AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ +])# _LT_AC_FILE_LTDLL_C + + +# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) +# --------------------------------- +AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) + + +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +AC_DEFUN([LT_AC_PROG_GCJ], +[AC_CHECK_TOOL(GCJ, gcj, no) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS) +]) + +AC_DEFUN([LT_AC_PROG_RC], +[AC_CHECK_TOOL(RC, windres, no) +]) + +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +# LT_AC_PROG_SED +# -------------- +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +AC_DEFUN([LT_AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_MSG_RESULT([$SED]) +]) + +# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.9.6])]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 7 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 3 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 12 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.58])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $1 | $1:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# AM_PROG_LEX +# ----------- +# Autoconf leaves LEX=: if lex or flex can't be found. Change that to a +# "missing" invocation, for better error output. +AC_DEFUN([AM_PROG_LEX], +[AC_PREREQ(2.50)dnl +AC_REQUIRE([AM_MISSING_HAS_RUN])dnl +AC_REQUIRE([AC_PROG_LEX])dnl +if test "$LEX" = :; then + LEX=${am_missing_run}flex +fi]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. +# +# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories +# created by `make install' are always world readable, even if the +# installer happens to have an overly restrictive umask (e.g. 077). +# This was a mistake. There are at least two reasons why we must not +# use `-m 0755': +# - it causes special bits like SGID to be ignored, +# - it may be too restrictive (some setups expect 775 directories). +# +# Do not use -m 0755 and let people choose whatever they expect by +# setting umask. +# +# We cannot accept any implementation of `mkdir' that recognizes `-p'. +# Some implementations (such as Solaris 8's) are not thread-safe: if a +# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' +# concurrently, both version can detect that a/ is missing, but only +# one can create it and the other will error out. Consequently we +# restrict ourselves to GNU make (using the --version option ensures +# this.) +AC_DEFUN([AM_PROG_MKDIR_P], +[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi +AC_SUBST([mkdir_p])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + diff --git a/autotools/config.guess b/autotools/config.guess new file mode 100755 index 00000000..ad5281e6 --- /dev/null +++ b/autotools/config.guess @@ -0,0 +1,1466 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + +timestamp='2005-08-03' + +# 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., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, 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, 2002, 2003, 2004, 2005 +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 ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # 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 ; set_cc_for_build= ;' + +# 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 ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerppc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # 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 Pn.n version is a patched version. + # 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/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; + 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 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + 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 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + 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 ;; + 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 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + 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 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # 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 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + 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 && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + 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 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????: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 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + 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 ;; + *: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 + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + 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 ;; + *: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 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 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 + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 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 && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + 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 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + 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 ;; + 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 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + x86:Interix*:[34]*) + echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' + exit ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 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 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *: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 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + 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; } + ;; + 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; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + 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 ;; + 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 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + 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 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit ;; + "") + # 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 ;; + 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 + } + test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } + ;; + 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 ;; + 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 ;; + 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 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + 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 ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + 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 ;; + 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 ;; + 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 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + 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 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 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 | S7501*:*: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; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *: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 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + 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 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + *86) UNAME_PROCESSOR=i686 ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *: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 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *: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 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; +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\n"); 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 && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# 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 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + 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: diff --git a/autotools/config.sub b/autotools/config.sub new file mode 100755 index 00000000..1c366dfd --- /dev/null +++ b/autotools/config.sub @@ -0,0 +1,1579 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + +timestamp='2005-07-08' + +# 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., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, 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, 2002, 2003, 2004, 2005 +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 ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # 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 ;; + + * ) + 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 | -knuth | -cray) + 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 \ + | bfin \ + | 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 | m32rle | m68000 | m68k | m88k | maxq | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | ms1 \ + | msp430 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m32c) + 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-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | 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-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | ms1-* \ + | msp430-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + m32c-*) + ;; + # 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 + ;; + abacus) + basic_machine=abacus-unknown + ;; + 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 + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + 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 + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16c) + basic_machine=cr16c-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + 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 + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + 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 + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + 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 + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + 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 + ;; + mmix) + basic_machine=mmix-knuth + ;; + 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 + ;; + sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | 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* | -mirbsd* | -netbsd* | -openbsd* \ + | -ekkobsd* | -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* \ + | -skyos* | -haiku*) + # 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* | -haiku* \ + | -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 + ;; + -zvmoe) + os=-zvmoe + ;; + -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 + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-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 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/autotools/depcomp b/autotools/depcomp new file mode 100755 index 00000000..04701da5 --- /dev/null +++ b/autotools/depcomp @@ -0,0 +1,530 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2005-07-09.11 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, 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 Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mecanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/autotools/install-sh b/autotools/install-sh new file mode 100755 index 00000000..4d4a9519 --- /dev/null +++ b/autotools/install-sh @@ -0,0 +1,323 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2005-05-14.22 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# 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}" + +chmodcmd="$chmodprog 0755" +chowncmd= +chgrpcmd= +stripcmd= +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src= +dst= +dir_arg= +dstarg= +no_target_directory= + +usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: +-c (ignored) +-d create directories instead of installing files. +-g GROUP $chgrpprog installed files to GROUP. +-m MODE $chmodprog installed files to MODE. +-o USER $chownprog installed files to USER. +-s $stripprog installed files. +-t DIRECTORY install into DIRECTORY. +-T report an error if DSTFILE is a directory. +--help display this help and exit. +--version display version info and exit. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +" + +while test -n "$1"; do + case $1 in + -c) shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + --help) echo "$usage"; exit $?;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t) dstarg=$2 + shift + shift + continue;; + + -T) no_target_directory=true + shift + continue;; + + --version) echo "$0 $scriptversion"; exit $?;; + + *) # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + test -n "$dir_arg$dstarg" && break + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dstarg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dstarg" + shift # fnord + fi + shift # arg + dstarg=$arg + done + break;; + esac +done + +if test -z "$1"; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src ;; + esac + + if test -n "$dir_arg"; then + dst=$src + src= + + if test -d "$dst"; then + mkdircmd=: + chmodcmd= + else + mkdircmd=$mkdirprog + fi + else + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dstarg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dstarg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst ;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dstarg: Is a directory" >&2 + exit 1 + fi + dst=$dst/`basename "$src"` + fi + fi + + # This sed command emulates the dirname command. + dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` + + # Make sure that the destination directory exists. + + # Skip lots of stat calls in the usual case. + if test ! -d "$dstdir"; then + defaultIFS=' + ' + IFS="${IFS-$defaultIFS}" + + oIFS=$IFS + # Some sh's can't handle IFS=/ for some reason. + IFS='%' + set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` + shift + IFS=$oIFS + + pathcomp= + + while test $# -ne 0 ; do + pathcomp=$pathcomp$1 + shift + if test ! -d "$pathcomp"; then + $mkdirprog "$pathcomp" + # mkdir can fail with a `File exist' error in case several + # install-sh are creating the directory concurrently. This + # is OK. + test -d "$pathcomp" || exit + fi + pathcomp=$pathcomp/ + done + fi + + if test -n "$dir_arg"; then + $doit $mkdircmd "$dst" \ + && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } + + else + dstfile=`basename "$dst"` + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + trap '(exit $?); exit' 1 2 13 15 + + # Copy the file name to the temp name. + $doit $cpprog "$src" "$dsttmp" && + + # 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 $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && + + # Now rename the file to the real destination. + { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ + || { + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + if test -f "$dstdir/$dstfile"; then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ + || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ + || { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit 1 + } + else + : + fi + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + } + } + fi || { (exit 1); exit 1; } +done + +# The final little trick to "correctly" pass the exit status to the exit trap. +{ + (exit 0); exit 0 +} + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/autotools/ltmain.sh b/autotools/ltmain.sh new file mode 100644 index 00000000..8fc56db8 --- /dev/null +++ b/autotools/ltmain.sh @@ -0,0 +1,6871 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun configure. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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. + +basename="s,^.*/,,g" + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# The name of this program: +progname=`echo "$progpath" | $SED $basename` +modename="$progname" + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION="1.5.22 Debian 1.5.22-2" +TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)" + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes. +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +duplicate_deps=no +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" + +##################################### +# Shell function definitions: +# This seems to be the best place for them + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $mkdir "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || { + $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 + exit $EXIT_FAILURE + } + fi + + $echo "X$my_tmpdir" | $Xsed +} + + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ + $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | \ + $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $echo $win32_libid_type +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case "$@ " in + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" + $echo "$modename: specify a tag with \`--tag'" 1>&2 + exit $EXIT_FAILURE +# else +# $echo "$modename: using $tagname tagged configuration" + fi + ;; + esac + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + + $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" + $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 + exit $EXIT_FAILURE + fi +} + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + my_status="" + + $show "${rm}r $my_gentop" + $run ${rm}r "$my_gentop" + $show "$mkdir $my_gentop" + $run $mkdir "$my_gentop" + my_status=$? + if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then + exit $my_status + fi + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` + my_xdir="$my_gentop/$my_xlib" + + $show "${rm}r $my_xdir" + $run ${rm}r "$my_xdir" + $show "$mkdir $my_xdir" + $run $mkdir "$my_xdir" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then + exit $exit_status + fi + case $host in + *-darwin*) + $show "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + if test -z "$run"; then + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` + darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` + if test -n "$darwin_arches"; then + darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + $show "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we have a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + lipo -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + ${rm}r unfat-$$ + cd "$darwin_orig_dir" + else + cd "$darwin_orig_dir" + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + fi # $run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + func_extract_archives_result="$my_oldobjs" +} +# End of Shell function definitions +##################################### + +# Darwin sucks +eval std_shrext=\"$shrext_cmds\" + +disable_libs=no + +# Parse our command line options once, thoroughly. +while test "$#" -gt 0 +do + arg="$1" + shift + + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; + tag) + tagname="$arg" + preserve_args="${preserve_args}=$arg" + + # Check whether tagname contains only valid characters + case $tagname in + *[!-_A-Za-z0-9,/]*) + $echo "$progname: invalid tag name: $tagname" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $tagname in + CC) + # Don't test for the "default" C tag, as we know, it's there, but + # not specially marked. + ;; + *) + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then + taglist="$taglist $tagname" + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" + else + $echo "$progname: ignoring unknown tag $tagname" 1>&2 + fi + ;; + esac + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case $arg in + --help) + show_help=yes + ;; + + --version) + $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" + $echo + $echo "Copyright (C) 2005 Free Software Foundation, Inc." + $echo "This is free software; see the source for copying conditions. There is NO" + $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + exit $? + ;; + + --config) + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath + # Now print the configurations for the tags. + for tagname in $taglist; do + ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" + done + exit $? + ;; + + --debug) + $echo "$progname: enabling shell trace mode" + set -x + preserve_args="$preserve_args $arg" + ;; + + --dry-run | -n) + run=: + ;; + + --features) + $echo "host: $host" + if test "$build_libtool_libs" = yes; then + $echo "enable shared libraries" + else + $echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + $echo "enable static libraries" + else + $echo "disable static libraries" + fi + exit $? + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --preserve-dup-deps) duplicate_deps="yes" ;; + + --quiet | --silent) + show=: + preserve_args="$preserve_args $arg" + ;; + + --tag) + prevopt="--tag" + prev=tag + preserve_args="$preserve_args --tag" + ;; + --tag=*) + set tag "$optarg" ${1+"$@"} + shift + prev=tag + preserve_args="$preserve_args --tag" + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE +fi + +case $disable_libs in +no) + ;; +shared) + build_libtool_libs=no + build_old_libs=yes + ;; +static) + build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` + ;; +esac + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 + $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 + case $nonopt in + *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) + mode=link + for arg + do + case $arg in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case $mode in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + if test -n "$libobj" ; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit $EXIT_FAILURE + fi + arg_mode=target + continue + ;; + + -static | -prefer-pic | -prefer-non-pic) + later="$later $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + lastarg="$lastarg $arg" + done + IFS="$save_ifs" + lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + + # Add the arguments to base_compile. + base_compile="$base_compile $lastarg" + continue + ;; + + * ) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + case $lastarg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, and some SunOS ksh mistreat backslash-escaping + # in scan sets (worked around with variable expansion), + # and furthermore cannot handle '|' '&' '(' ')' in scan sets + # at all, so we specify them separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + lastarg="\"$lastarg\"" + ;; + esac + + base_compile="$base_compile $lastarg" + done # for arg + + case $arg_mode in + arg) + $echo "$modename: you must specify an argument for -Xcompile" + exit $EXIT_FAILURE + ;; + target) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit $EXIT_FAILURE + ;; + *) + # Get the name of the library object. + [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSifmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.ii) xform=ii ;; + *.class) xform=class ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + *.java) xform=java ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case $libobj in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` + case $qlibobj in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qlibobj="\"$qlibobj\"" ;; + esac + test "X$libobj" != "X$qlibobj" \ + && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." + objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir= + else + xdir=$xdir/ + fi + lobj=${xdir}$objdir/$objname + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $run ln "$progpath" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + $echo "$srcfile" > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` + case $qsrcfile in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qsrcfile="\"$qsrcfile\"" ;; + esac + + $run $rm "$libobj" "${libobj}T" + + # Create a libtool object file (analogous to a ".la" file), + # but don't create it if we're doing a dry run. + test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + $show "$mv $output_obj $lobj" + if $run $mv $output_obj $lobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the PIC object to the libtool object file. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the non-PIC object the libtool object file. + # Only append if the libtool object file exists. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + else + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + fi + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test + ;; + *) qarg=$arg ;; + esac + libtool_args="$libtool_args $qarg" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit $EXIT_FAILURE + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat $save_arg` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + done + else + $echo "$modename: link input file \`$save_arg' does not exist" + exit $EXIT_FAILURE + fi + arg=$save_arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + compile_command="$compile_command $wl$qarg" + finalize_command="$finalize_command $wl$qarg" + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + darwin_framework|darwin_framework_skip) + test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" + exit $EXIT_FAILURE + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework|-arch|-isysroot) + case " $CC " in + *" ${arg} ${1} "* | *" ${arg} ${1} "*) + prev=darwin_framework_skip ;; + *) compiler_flags="$compiler_flags $arg" + prev=darwin_framework ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; + esac + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + notinst_path="$notinst_path $dir" + fi + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs -framework System" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + -model) + compile_command="$compile_command $arg" + compiler_flags="$compiler_flags $arg" + finalize_command="$finalize_command $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m* pass through architecture-specific compiler args for GCC + # -m*, -t[45]*, -txscale* pass through architecture-specific + # compiler args for GCC + # -pg pass through profiling flag for GCC + # @file GCC response files + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \ + -t[45]*|-txscale*|@*) + + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + compiler_flags="$compiler_flags $arg" + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # The PATH hackery in wrapper scripts is required on Windows + # in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $wl$flag" + linker_flags="$linker_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done # argument parsing loop + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. + if test ! -d "$output_objdir"; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then + exit $exit_status + fi + fi + + # Determine the type of output + case $output in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + case $host in + *cygwin* | *mingw* | *pw32*) + # don't eliminate duplications in $postdeps and $predeps + duplicate_compiler_generated_deps=yes + ;; + *) + duplicate_compiler_generated_deps=$duplicate_deps + ;; + esac + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if test "X$duplicate_deps" = "Xyes" ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + for pass in $passes; do + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) + libs="$deplibs %DEPLIBS%" + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" + ;; + esac + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if (${SED} -e '2q' $lib | + grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + library_names= + old_library= + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + if eval $echo \"$deplib\" 2>/dev/null \ + | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $echo + $echo "*** Warning: Trying to link with static lib archive $deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because the file extensions .$libext of this argument makes me believe" + $echo "*** that it is just a static archive that I should not used here." + else + $echo + $echo "*** Warning: Linking the shared library $output against the" + $echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + if test "$found" = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 + exit $EXIT_FAILURE + fi + + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 + exit $EXIT_FAILURE + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + abs_ladir="$ladir" + fi + ;; + esac + laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + $echo "$modename: warning: library \`$lib' was moved." 1>&2 + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $absdir" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes ; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + # This is a shared library + + # Warn about portability, can't link against -module's on + # some systems (darwin) + if test "$shouldnotlink" = yes && test "$pass" = link ; then + $echo + if test "$linkmode" = prog; then + $echo "*** Warning: Linking the executable $output against the loadable module" + else + $echo "*** Warning: Linking the shared library $output against the loadable module" + fi + $echo "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + realname="$2" + shift; shift + libname=`eval \\$echo \"$libname_spec\"` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw*) + major=`expr $current - $age` + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`$echo $soroot | ${SED} -e 's/^.*\///'` + newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$extract_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$old_archive_from_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a module then we can not link against + # it, someone is ignoring the new warnings I added + if /usr/bin/file -L $add 2> /dev/null | + $EGREP ": [^:]* bundle" >/dev/null ; then + $echo "** Warning, lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $echo + $echo "** And there doesn't seem to be a static archive available" + $echo "** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit $EXIT_FAILURE + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $echo + $echo "*** Warning: This system can not link to static lib archive $lib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $echo "*** But as you try to build a module library, libtool will still create " + $echo "*** a static module, that should work as long as the dlopening application" + $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$deplib" && dir="." + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + fi + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then + path="$absdir/$objdir" + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="$absdir" + fi + depdepl= + case $host in + *-*-darwin*) + # we do not want to link against static libs, + # but need to link against shared + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$path/$depdepl" ; then + depdepl="$path/$depdepl" + fi + # do not add paths which are already there + case " $newlib_search_path " in + *" $path "*) ;; + *) newlib_search_path="$newlib_search_path $path";; + esac + fi + path="" + ;; + *) + path="-L$path" + ;; + esac + ;; + -l*) + case $host in + *-*-darwin*) + # Again, we only want to link against shared libraries + eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` + for tmp in $newlib_search_path ; do + if test -f "$tmp/lib$tmp_libs.dylib" ; then + eval depdepl="$tmp/lib$tmp_libs.dylib" + break + fi + done + path="" + ;; + *) continue ;; + esac + ;; + *) continue ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + case " $deplibs " in + *" $depdepl "*) ;; + *) deplibs="$depdepl $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 + exit $EXIT_FAILURE + else + $echo + $echo "*** Warning: Linking the shared library $output against the non-libtool" + $echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + if test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test "$#" -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$2" + number_minor="$3" + number_revision="$4" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows) + current=`expr $number_major + $number_minor` + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + current=`expr $number_major + $number_minor - 1` + age="$number_minor" + revision="$number_minor" + ;; + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE + ;; + esac + ;; + no) + current="$2" + revision="$3" + age="$4" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test "$age" -gt "$current"; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + irix | nonstopux) + major=`expr $current - $age + 1` + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + major=`expr $current - $age` + versuffix="-$major" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + fi + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$echo "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + if test -n "$removelist"; then + $show "${rm}r $removelist" + $run ${rm}r $removelist + fi + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + for path in $notinst_path; do + lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` + deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` + dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` + done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for file magic test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a file magic. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name=`expr $a_deplib : '-l\(.*\)'` + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval $echo \"$potent_lib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a regex pattern. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` + done + fi + if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ + | grep . >/dev/null; then + $echo + if test "X$deplibs_check_method" = "Xnone"; then + $echo "*** Warning: inter-library dependencies are not supported in this platform." + else + $echo "*** Warning: inter-library dependencies are not known to be supported." + fi + $echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $echo + $echo "*** Warning: libtool could not satisfy all declared inter-library" + $echo "*** dependencies of module $libname. Therefore, libtool will create" + $echo "*** a static module, that should work as long as the dlopening" + $echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $echo "*** The inter-library dependencies that have been dropped here will be" + $echo "*** automatically added whenever a program is linked with this library" + $echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $echo + $echo "*** Since this library must not contain undefined symbols," + $echo "*** because either the platform does not support them or" + $echo "*** it was explicitly requested with -no-undefined," + $echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + deplibs="$new_libs" + + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + if len=`expr "X$cmd" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + $show "$cmd" + $run eval "$cmd" || exit $? + skipped_export=false + else + # The command line is too long to execute in one step. + $show "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise. + $echo "creating reloadable object files..." + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$echo "X$output" | $Xsed -e "$basename"` + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + delfiles= + last_robj= + k=1 + output=$output_objdir/$output_la-${k}.$objext + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + eval test_cmds=\"$reload_cmds $objlist $last_robj\" + if test "X$objlist" = X || + { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; }; then + objlist="$objlist $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + k=`expr $k + 1` + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + len=1 + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + + if ${skipped_export-false}; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + libobjs=$output + # Append the command to create the export file. + eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" + fi + + # Set up a command to remove the reloadable object files + # after they are used. + i=0 + while test "$i" -lt "$k" + do + i=`expr $i + 1` + delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" + done + + $echo "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + + # Append the command to remove the reloadable object files + # to the just-reset $cmds. + eval cmds=\"\$cmds~\$rm $delfiles\" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case $output in + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit $EXIT_FAILURE + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $run eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + case $host in + *darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + if test "$tagname" = CXX ; then + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + fi + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case $dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $run $rm $export_symbols + $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + else + $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` + $run eval '$echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + $echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +" + + case $host in + *cygwin* | *mingw* ) + $echo >> "$output_objdir/$dlsyms" "\ +/* DATA imports from DLLs on WIN32 can't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs */ +struct { +" + ;; + * ) + $echo >> "$output_objdir/$dlsyms" "\ +const struct { +" + ;; + esac + + + $echo >> "$output_objdir/$dlsyms" "\ + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{\ +" + + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + case $host in + *cygwin* | *mingw* ) + if test -f "$output_objdir/${outputname}.def" ; then + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` + else + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + fi + ;; + * ) + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + ;; + esac + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + exit_status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $exit_status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $run $rm $output + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + output_name=`basename $output` + output_path=`dirname $output` + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $rm $cwrappersource $cwrapper + trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + cat > $cwrappersource <> $cwrappersource<<"EOF" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +/* -DDEBUG is fairly common in CFLAGS. */ +#undef DEBUG +#if defined DEBUGWRAPPER +# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) +#else +# define DEBUG(format, ...) +#endif + +const char *program_name = NULL; + +void * xmalloc (size_t num); +char * xstrdup (const char *string); +const char * base_name (const char *name); +char * find_executable(const char *wrapper); +int check_executable(const char *path); +char * strendzap(char *str, const char *pat); +void lt_fatal (const char *message, ...); + +int +main (int argc, char *argv[]) +{ + char **newargz; + int i; + + program_name = (char *) xstrdup (base_name (argv[0])); + DEBUG("(main) argv[0] : %s\n",argv[0]); + DEBUG("(main) program_name : %s\n",program_name); + newargz = XMALLOC(char *, argc+2); +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" + newargz[1] = find_executable(argv[0]); + if (newargz[1] == NULL) + lt_fatal("Couldn't find %s", argv[0]); + DEBUG("(main) found exe at : %s\n",newargz[1]); + /* we know the script has the same name, without the .exe */ + /* so make sure newargz[1] doesn't end in .exe */ + strendzap(newargz[1],".exe"); + for (i = 1; i < argc; i++) + newargz[i+1] = xstrdup(argv[i]); + newargz[argc+1] = NULL; + + for (i=0; i> $cwrappersource <> $cwrappersource <> $cwrappersource <<"EOF" + return 127; +} + +void * +xmalloc (size_t num) +{ + void * p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL +; +} + +const char * +base_name (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha ((unsigned char)name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return base; +} + +int +check_executable(const char * path) +{ + struct stat st; + + DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); + if ((!path) || (!*path)) + return 0; + + if ((stat (path, &st) >= 0) && + ( + /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ +#if defined (S_IXOTH) + ((st.st_mode & S_IXOTH) == S_IXOTH) || +#endif +#if defined (S_IXGRP) + ((st.st_mode & S_IXGRP) == S_IXGRP) || +#endif + ((st.st_mode & S_IXUSR) == S_IXUSR)) + ) + return 1; + else + return 0; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise */ +char * +find_executable (const char* wrapper) +{ + int has_slash = 0; + const char* p; + const char* p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char* concat_name; + + DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char* path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char* q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR(*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + return NULL; +} + +char * +strendzap(char *str, const char *pat) +{ + size_t len, patlen; + + assert(str != NULL); + assert(pat != NULL); + + len = strlen(str); + patlen = strlen(pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp(str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char * mode, + const char * message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} +EOF + # we should really use a build-platform specific compiler + # here, but OTOH, the wrappers (shell script and this C one) + # are only useful if you want to execute the "real" binary. + # Since the "real" binary is built for $host, then this + # wrapper might as well be built for $host, too. + $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource + ;; + esac + $rm $output + trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $echo >> $output "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + $echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" + exit $EXIT_FAILURE + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + $echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $echo >> $output "\ + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" + exit $EXIT_FAILURE + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + $echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit $EXIT_FAILURE + fi +fi\ +" + chmod +x $output + fi + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + $echo "X$obj" | $Xsed -e 's%^.*/%%' + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "copying selected object files to avoid basename conflicts..." + + if test -z "$gentop"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$gentop"; then + exit $exit_status + fi + fi + + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + counter=`expr $counter + 1` + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + $run ln "$obj" "$gentop/$newobj" || + $run cp "$obj" "$gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + + eval cmds=\"$old_archive_cmds\" + + if len=`expr "X$cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + $echo "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + for obj in $save_oldobjs + do + oldobjs="$objlist $obj" + objlist="$objlist $obj" + eval test_cmds=\"$old_archive_cmds\" + if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + eval cmd=\"$cmd\" + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlfiles="$newdlfiles $libdir/$name" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $echo >> $output "\ +relink_command=\"$relink_command\"" + fi + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac + exit $EXIT_SUCCESS + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $echo "X$nonopt" | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + case " $install_prog " in + *[\\\ /]cp\ *) ;; + *) prev=$arg ;; + esac + ;; + -g | -m | -o) prev=$arg ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test "$#" -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + library_names= + old_library= + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + if test "$inst_prefix_dir" = "$destdir"; then + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + exit $EXIT_FAILURE + fi + fi + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$srcname $destdir/$realname" + $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$striplib $destdir/$realname" + $run eval "$striplib $destdir/$realname" || exit $? + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + cmds=$postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + file=`$echo $file|${SED} 's,.exe$,,'` + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin*|*mingw*) + wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` + ;; + *) + wrapper=$file + ;; + esac + if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then + $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 + exit $EXIT_FAILURE + fi + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + relink_command= + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir=`func_mktempdir` + file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; + esac + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + if test -n "$stripme" && test -n "$old_striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. + cmds=$old_postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + cmds=$finish_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = : && exit $EXIT_SUCCESS + + $echo "X----------------------------------------------------------------------" | $Xsed + $echo "Libraries have been installed in:" + for libdir in $libdirs; do + $echo " $libdir" + done + $echo + $echo "If you ever happen to want to link against installed libraries" + $echo "in a given directory, LIBDIR, you must either use libtool, and" + $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + $echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + $echo " during execution" + fi + if test -n "$runpath_var"; then + $echo " - add LIBDIR to the \`$runpath_var' environment variable" + $echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $echo + $echo "See any operating system documentation about shared libraries for" + $echo "more information, such as the ld(1) and ld.so(8) manual pages." + $echo "X----------------------------------------------------------------------" | $Xsed + exit $EXIT_SUCCESS + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit $EXIT_FAILURE + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit $EXIT_FAILURE + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" + exit $EXIT_SUCCESS + fi + ;; + + # libtool clean and uninstall mode + clean | uninstall) + modename="$modename: $mode" + rm="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) rm="$rm $arg"; rmforce=yes ;; + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ + || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + + case "$mode" in + clean) + case " $library_names " in + # " " in the beginning catches empty $dlname + *" $dlname "*) ;; + *) rmfiles="$rmfiles $objdir/$dlname" ;; + esac + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + cmds=$postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + cmds=$old_postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + + # Read the .lo file + . $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" \ + && test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" \ + && test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + file=`$echo $file|${SED} 's,.exe$,,'` + noexename=`$echo $name|${SED} 's,.exe$,,'` + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + relink_command= + . $dir/$noexename + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + $show "rmdir $dir" + $run rmdir $dir >/dev/null 2>&1 + fi + done + + exit $exit_status + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + fi +fi # test -z "$show_help" + +if test -n "$exec_cmd"; then + eval exec $exec_cmd + exit $EXIT_FAILURE +fi + +# We need to display help for each of the modes. +case $mode in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + --version print version information + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE. + +Report bugs to ." + exit $EXIT_SUCCESS + ;; + +clean) + $echo \ +"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; +esac + +$echo +$echo "Try \`$modename --help' for more information about other modes." + +exit $? + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +disable_libs=shared +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +disable_libs=static +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/autotools/missing b/autotools/missing new file mode 100755 index 00000000..894e786e --- /dev/null +++ b/autotools/missing @@ -0,0 +1,360 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2005-06-08.21 + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, 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. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +msg="missing on your system" + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + +esac + +# Now exit if we have it, but it failed. Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program). +case "$1" in + lex|yacc) + # Not GNU programs, they don't have --version. + ;; + + tar) + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + exit 1 + fi + ;; + + *) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + # Could not run --version or --help. This is probably someone + # running `$TOOL --version' or `$TOOL --help' to check whether + # $TOOL exists and not knowing $TOOL uses missing. + exit 1 + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + aclocal*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + # The file to touch is that specified with -o ... + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + # ... or it is the one specified with @setfilename ... + infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile` + # ... or it is derived from the source name (dir/f.texi becomes f.info) + test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info + fi + # If the file does not exist, the user really needs makeinfo; + # let's fail without touching anything. + test -f $file || exit 1 + touch $file + ;; + + tar) + shift + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/autotools/mkinstalldirs b/autotools/mkinstalldirs new file mode 100755 index 00000000..259dbfcd --- /dev/null +++ b/autotools/mkinstalldirs @@ -0,0 +1,158 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy + +scriptversion=2005-06-29.22 + +# Original author: Noah Friedman +# Created: 1993-05-16 +# Public domain. +# +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +errstatus=0 +dirmode= + +usage="\ +Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... + +Create each directory DIR (with mode MODE, if specified), including all +leading file name components. + +Report bugs to ." + +# process command line arguments +while test $# -gt 0 ; do + case $1 in + -h | --help | --h*) # -h for help + echo "$usage" + exit $? + ;; + -m) # -m PERM arg + shift + test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } + dirmode=$1 + shift + ;; + --version) + echo "$0 $scriptversion" + exit $? + ;; + --) # stop option processing + shift + break + ;; + -*) # unknown option + echo "$usage" 1>&2 + exit 1 + ;; + *) # first non-opt arg + break + ;; + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in + 0) exit 0 ;; +esac + +# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and +# mkdir -p a/c at the same time, both will detect that a is missing, +# one will create a, then the other will try to create a and die with +# a "File exists" error. This is a problem when calling mkinstalldirs +# from a parallel make. We use --version in the probe to restrict +# ourselves to GNU mkdir, which is thread-safe. +case $dirmode in + '') + if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + test -d ./-p && rmdir ./-p + test -d ./--version && rmdir ./--version + fi + ;; + *) + if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && + test ! -d ./--version; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + else + # Clean up after NextStep and OpenStep mkdir. + for d in ./-m ./-p ./--version "./$dirmode"; + do + test -d $d && rmdir $d + done + fi + ;; +esac + +for file +do + case $file in + /*) pathcomp=/ ;; + *) pathcomp= ;; + esac + oIFS=$IFS + IFS=/ + set fnord $file + shift + IFS=$oIFS + + for d + do + test "x$d" = x && continue + + pathcomp=$pathcomp$d + case $pathcomp in + -*) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + lasterr= + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp=$pathcomp/ + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/configure b/configure new file mode 100755 index 00000000..ec44b681 --- /dev/null +++ b/configure @@ -0,0 +1,22965 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.59 for XQilla 1.0. +# +# 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 + + + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +echo=${ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string=`eval $cmd`) 2>/dev/null && + echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + + +tagnames=${tagnames+${tagnames},}CXX + +tagnames=${tagnames+${tagnames},}F77 + +# 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='XQilla' +PACKAGE_TARNAME='xqilla' +PACKAGE_VERSION='1.0' +PACKAGE_STRING='XQilla 1.0' +PACKAGE_BUGREPORT='' + +ac_unique_file="src/runtime/Result.cpp" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +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 build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar xerces_include xerces_lib CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CC CFLAGS ac_ct_CC CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL YACC LEX LEXLIB LEX_OUTPUT_ROOT ALLOCA 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_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_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_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_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP +ac_env_CXXCPP_set=${CXXCPP+set} +ac_env_CXXCPP_value=$CXXCPP +ac_cv_env_CXXCPP_set=${CXXCPP+set} +ac_cv_env_CXXCPP_value=$CXXCPP +ac_env_F77_set=${F77+set} +ac_env_F77_value=$F77 +ac_cv_env_F77_set=${F77+set} +ac_cv_env_F77_value=$F77 +ac_env_FFLAGS_set=${FFLAGS+set} +ac_env_FFLAGS_value=$FFLAGS +ac_cv_env_FFLAGS_set=${FFLAGS+set} +ac_cv_env_FFLAGS_value=$FFLAGS + +# +# 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 XQilla 1.0 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of XQilla 1.0:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-debug Build a debugging version. + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-shared[=PKGS] + build shared libraries [default=yes] + --enable-static[=PKGS] + build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-xerces=DIR Path of Xerces. DIR="../xerces-c-src" + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-tags[=TAGS] + include additional configurations [automatic] + +Some influential environment variables: + CXX C++ compiler command + CXXFLAGS 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 + CC C compiler command + CFLAGS C compiler flags + CPP C preprocessor + CXXCPP C++ preprocessor + F77 Fortran 77 compiler command + FFLAGS Fortran 77 compiler flags + +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 +XQilla configure 1.0 +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. +_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 XQilla $as_me 1.0, 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_aux_dir= +for ac_dir in autotools $srcdir/autotools; 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 autotools $srcdir/autotools" >&5 +echo "$as_me: error: cannot find install-sh or install.sh in autotools $srcdir/autotools" >&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. + +# 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/'` + + +echo "$as_me:$LINENO: checking target system type" >&5 +echo $ECHO_N "checking target system type... $ECHO_C" >&6 +if test "${ac_cv_target+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_target_alias=$target_alias +test "x$ac_cv_target_alias" = "x" && + ac_cv_target_alias=$ac_cv_host_alias +ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +echo "${ECHO_T}$ac_cv_target" >&6 +target=$ac_cv_target +target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- +am__api_version="1.9" +# 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' + +echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + # We used to keeping the `.' as first argument, in order to + # allow $(mkdir_p) to be used without argument. As in + # $(mkdir_p) $(somedir) + # where $(somedir) is conditionally defined. However this is wrong + # for two reasons: + # 1. if the package is installed by a user who cannot write `.' + # make install will fail, + # 2. the above comment should most certainly read + # $(mkdir_p) $(DESTDIR)$(somedir) + # so it does not work when $(somedir) is undefined and + # $(DESTDIR) is not. + # To support the latter case, we have to write + # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), + # so the `.' trick is pointless. + mkdir_p='mkdir -p --' +else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + for d in ./-p ./--version; + do + test -d $d && rmdir $d + done + # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. + if test -f "$ac_aux_dir/mkinstalldirs"; then + mkdir_p='$(mkinstalldirs)' + else + mkdir_p='$(install_sh) -d' + fi +fi + +for ac_prog in gawk mawk nawk awk +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_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # 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_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE=XQilla + VERSION=1.0 + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +install_sh=${install_sh-"$am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + + + ac_config_headers="$ac_config_headers src/config/xqilla_config_unix.h" + + +# Check debug option +echo "$as_me:$LINENO: checking if --enable-debug option specified" >&5 +echo $ECHO_N "checking if --enable-debug option specified... $ECHO_C" >&6 +# Check whether --enable-debug or --disable-debug was given. +if test "${enable_debug+set}" = set; then + enableval="$enable_debug" + xqilla_cv_debug="$enable_debug" +else + xqilla_cv_debug="no" +fi; +echo "$as_me:$LINENO: result: $xqilla_cv_debug" >&5 +echo "${ECHO_T}$xqilla_cv_debug" >&6 + +# Don't override anything if it's already set from the environment. +optimize_def="-O" +case $host_os in +aix4.3.*|aix5*) + optimize_def="-O2" + CC=${CC-"xlc_r"} + CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" + LDFLAGS="$LDFLAGS -Wl,-brtl";; +bsdi3*) CC=${CC-"shlicc2"} + LIBS="$LIBS -lipc";; +cygwin*) + CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE -D_REENTRANT";; +freebsd*) + CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" + LDFLAGS="$LDFLAGS -pthread";; +gnu*|k*bsd*-gnu|linux*) + optimize_def="-O2" + CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE -D_REENTRANT";; +hpux*) CPPFLAGS="$CPPFLAGS -D_REENTRANT";; +irix*) optimize_def="-O2" + CPPFLAGS="$CPPFLAGS -D_SGI_MP_SOURCE";; +mpeix*) CPPFLAGS="$CPPFLAGS -D_POSIX_SOURCE -D_SOCKET_SOURCE" + LIBS="$LIBS -lsocket -lsvipc";; +osf*) CPPFLAGS="$CPPFLAGS -pthread";; +*qnx*) cat >>confdefs.h <<\_ACEOF +#define HAVE_QNX 1 +_ACEOF + + +;; +solaris*) + CPPFLAGS="$CPPFLAGS -D_REENTRANT";; +esac + +# Set CFLAGS/CXXFLAGS. We MUST set the flags before we call autoconf +# compiler configuration macros, because if we don't, they set CFLAGS +# to no optimization and -g, which isn't what we want. +if test "$xqilla_cv_debug" = "yes"; then + cat >>confdefs.h <<\_ACEOF +#define DEBUG 1 +_ACEOF + + + + + CFLAGS="$CFLAGS -g" + CXXFLAGS="$CXXFLAGS -g" +else + CFLAGS=${CFLAGS-$optimize_def} + CXXFLAGS=${CXXFLAGS-"$CFLAGS"} +fi + +# Check Xerces library name +echo "$as_me:$LINENO: checking if --with-xerces=DIR option specified" >&5 +echo $ECHO_N "checking if --with-xerces=DIR option specified... $ECHO_C" >&6 + +# Check whether --with-xerces or --without-xerces was given. +if test "${with_xerces+set}" = set; then + withval="$with_xerces" + with_xerces="$withval" +else + with_xerces="no" +fi; +echo "$as_me:$LINENO: result: $with_xerces" >&5 +echo "${ECHO_T}$with_xerces" >&6 +if test "$with_xerces" = "no"; then + with_xerces="/usr/local" +fi +if test `ls $with_xerces/lib/libxerces-c.*2[6-7].* 2>/dev/null | wc -l` -gt 0 ; then + echo "$as_me:$LINENO: checking for Xerces C++ version from source tree" >&5 +echo $ECHO_N "checking for Xerces C++ version from source tree... $ECHO_C" >&6 + xerces_version=`ls "$with_xerces"/lib/libxerces-c.*[0-9][0-9].* | tail -1 | sed 's/.*xerces-c.*\([0-9]\)\([0-9]\).*/\1.\2/'` + echo "$as_me:$LINENO: result: $xerces_version" >&5 +echo "${ECHO_T}$xerces_version" >&6 + xerces_lib="$with_xerces/lib" + xerces_include="$with_xerces/src" + xerces_library="xerces-c" +elif test `ls $with_xerces/lib/libxerces-c*2[6-7].* 2>/dev/null | wc -l` -gt 0 ; then + echo "$as_me:$LINENO: checking for Xerces C++ version from source tree" >&5 +echo $ECHO_N "checking for Xerces C++ version from source tree... $ECHO_C" >&6 + xerces_version=`ls "$with_xerces"/lib/libxerces-c*[0-9][0-9].* | tail -1 | sed 's/.*xerces-c*\([0-9]\)\([0-9]\).*/\1.\2/'` + echo "$as_me:$LINENO: result: $xerces_version" >&5 +echo "${ECHO_T}$xerces_version" >&6 + xerces_lib="$with_xerces/lib" + xerces_include="$with_xerces/src" + xerces_library="xerces-c" +else + { { echo "$as_me:$LINENO: error: Xerces-C++ is required to build XQuery. $with_xerces not a valid, supported Xerces tree. You must specify the path where Xerces is installed with --with-xerces." >&5 +echo "$as_me: error: Xerces-C++ is required to build XQuery. $with_xerces not a valid, supported Xerces tree. You must specify the path where Xerces is installed with --with-xerces." >&2;} + { (exit 1); exit 1; }; } +fi + + + +# Checks for programs. +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); } + +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_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 +DEPDIR="${am__leading_dot}deps" + + ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6 +rm -f confinc confmf + +# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval="$enable_dependency_tracking" + +fi; +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + + +if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + + +depcc="$CXX" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +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 +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); } + +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 + +depcc="$CC" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +# Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi; + +# Check whether --enable-static or --disable-static was given. +if test "${enable_static+set}" = set; then + enableval="$enable_static" + p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi; + +# Check whether --enable-fast-install or --disable-fast-install was given. +if test "${enable_fast_install+set}" = set; then + enableval="$enable_fast_install" + p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi; + +echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 +if test "${lt_cv_path_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done + +fi + +SED=$lt_cv_path_SED +echo "$as_me:$LINENO: result: $SED" >&5 +echo "${ECHO_T}$SED" >&6 + +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 + + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + + +echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 +if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_reload_flag='-r' +fi +echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + +echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 +if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi +fi +echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 +echo "${ECHO_T}$lt_cv_path_NM" >&6 +NM="$lt_cv_path_NM" + +echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + +echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 +echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 +if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump'. + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | kfreebsd*-gnu | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix3*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval="$enable_libtool_lock" + +fi; +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 4267 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 +if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat >conftest.$ac_ext <<_ACEOF +/* 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 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_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_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + lt_cv_cc_needs_belf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +lt_cv_cc_needs_belf=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext 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 + +fi +echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) LD="${LD-ld} -64" ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + + +esac + +need_locks="$enable_libtool_lock" + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # 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_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_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_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_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_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # 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_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_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_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_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 \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&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 + + +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_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_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 + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>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 + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_Header=no" +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +for ac_header in dlfcn.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>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_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + 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_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## --------------------------------- ## +## Report this to the XQilla lists. ## +## --------------------------------- ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + 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 + +fi + + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran + 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_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$F77"; then + ac_cv_prog_F77="$F77" # 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_F77="$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 +F77=$ac_cv_prog_F77 +if test -n "$F77"; then + echo "$as_me:$LINENO: result: $F77" >&5 +echo "${ECHO_T}$F77" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$F77" && break + done +fi +if test -z "$F77"; then + ac_ct_F77=$F77 + for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran +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_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_F77"; then + ac_cv_prog_ac_ct_F77="$ac_ct_F77" # 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_F77="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_F77=$ac_cv_prog_ac_ct_F77 +if test -n "$ac_ct_F77"; then + echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 +echo "${ECHO_T}$ac_ct_F77" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_F77" && break +done + + F77=$ac_ct_F77 +fi + + +# Provide some information about the compiler. +echo "$as_me:5398:" \ + "checking for Fortran 77 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); } +rm -f a.out + +# If we don't use `.F' as extension, the preprocessor is not run on the +# input file. (Note that this only needs to work for GNU compilers.) +ac_save_ext=$ac_ext +ac_ext=F +echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6 +if test "${ac_cv_f77_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF + program main +#ifndef __GNUC__ + choke me +#endif + + end +_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_f77_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_f77_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6 +ac_ext=$ac_save_ext +ac_test_FFLAGS=${FFLAGS+set} +ac_save_FFLAGS=$FFLAGS +FFLAGS= +echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 +echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_f77_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + FFLAGS=-g +cat >conftest.$ac_ext <<_ACEOF + program main + + end +_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_f77_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_f77_g=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_prog_f77_g=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 +echo "${ECHO_T}$ac_cv_prog_f77_g" >&6 +if test "$ac_test_FFLAGS" = set; then + FFLAGS=$ac_save_FFLAGS +elif test $ac_cv_prog_f77_g = yes; then + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-g -O2" + else + FFLAGS="-g" + fi +else + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-O2" + else + FFLAGS= + fi +fi + +G77=`test $ac_compiler_gnu = yes && echo yes` +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 + + + +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! + +# find the maximum length of command line arguments +echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 +if test "${lt_cv_sys_max_cmd_len+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 +else + echo "$as_me:$LINENO: result: none" >&5 +echo "${ECHO_T}none" >&6 +fi + + + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 +echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDGIRSTW]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + echo "$as_me:$LINENO: result: failed" >&5 +echo "${ECHO_T}failed" >&6 +else + echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6 +fi + +echo "$as_me:$LINENO: checking for objdir" >&5 +echo $ECHO_N "checking for objdir... $ECHO_C" >&6 +if test "${lt_cv_objdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 +echo "${ECHO_T}$lt_cv_objdir" >&6 +objdir=$lt_cv_objdir + + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; 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_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # 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_AR="${ac_tool_prefix}ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + echo "$as_me:$LINENO: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; 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_AR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # 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_AR="ar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false" +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +echo "${ECHO_T}$ac_ct_AR" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + AR=$ac_ct_AR +else + AR="$ac_cv_prog_AR" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + echo "$as_me:$LINENO: checking for file" >&5 +echo $ECHO_N "checking for file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +enable_dlopen=no +enable_win32_dll=no + +# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval="$enable_libtool_lock" + +fi; +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + + +# Check whether --with-pic or --without-pic was given. +if test "${with_pic+set}" = set; then + withval="$with_pic" + pic_mode="$withval" +else + pic_mode=default +fi; +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +lt_save_CC="$CC" +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 + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}\n' + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + +echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6459: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:6463: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic='-qnocommon' + lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6727: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:6731: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 + +if test x"$lt_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 +if test "${lt_prog_compiler_static_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works=yes + fi + else + lt_prog_compiler_static_works=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 + +if test x"$lt_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:6831: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:6835: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag= + enable_shared_with_static_runtimes=no + archive_cmds= + archive_expsym_cmds= + old_archive_From_new_cmds= + old_archive_from_expsyms_cmds= + export_dynamic_flag_spec= + whole_archive_flag_spec= + thread_safe_flag_spec= + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_direct=no + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + link_all_deplibs=unknown + hardcode_automatic=no + module_cmds= + module_expsym_cmds= + always_export_symbols=no + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + interix3*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + link_all_deplibs=no + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an empty executable. + 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 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_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_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 + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; 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_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + 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 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_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_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 + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; 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_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # GNU/kFreeBSD uses gcc -shared to do shared libraries. + kfreebsd*-gnu) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + link_all_deplibs=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld='-rpath $libdir' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +echo "${ECHO_T}$ld_shlibs" >&6 +test "$ld_shlibs" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc=no + else + archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 +echo "${ECHO_T}$archive_cmds_need_lc" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var" || \ + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action" >&5 +echo "${ECHO_T}$hardcode_action" >&6 + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + ;; + *) + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* 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 dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>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_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=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_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case declares shl_load. + For example, HP-UX 11i declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef shl_load + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +char (*f) () = shl_load; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != shl_load; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>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_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_shl_load=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* 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 shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>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_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_shl_load=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_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case declares dlopen. + For example, HP-UX 11i declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef dlopen + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +char (*f) () = dlopen; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != dlopen; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>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_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_dlopen=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* 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 dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>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_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dl_dlopen=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_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* 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 dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>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_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_svld_dlopen=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_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* 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 dld_link (); +int +main () +{ +dld_link (); + ; + 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_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_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_dld_dld_link=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_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# Report which library types will actually be built +echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6 + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler \ + CC \ + LD \ + lt_prog_compiler_wl \ + lt_prog_compiler_pic \ + lt_prog_compiler_static \ + lt_prog_compiler_no_builtin_flag \ + export_dynamic_flag_spec \ + thread_safe_flag_spec \ + whole_archive_flag_spec \ + enable_shared_with_static_runtimes \ + old_archive_cmds \ + old_archive_from_new_cmds \ + predep_objects \ + postdep_objects \ + predeps \ + postdeps \ + compiler_lib_search_path \ + archive_cmds \ + archive_expsym_cmds \ + postinstall_cmds \ + postuninstall_cmds \ + old_archive_from_expsyms_cmds \ + allow_undefined_flag \ + no_undefined_flag \ + export_symbols_cmds \ + hardcode_libdir_flag_spec \ + hardcode_libdir_flag_spec_ld \ + hardcode_libdir_separator \ + hardcode_automatic \ + module_cmds \ + module_expsym_cmds \ + lt_cv_prog_compiler_c_o \ + exclude_expsyms \ + include_expsyms; do + + case $var in + old_archive_cmds | \ + old_archive_from_new_cmds | \ + archive_cmds | \ + archive_expsym_cmds | \ + module_cmds | \ + module_expsym_cmds | \ + old_archive_from_expsyms_cmds | \ + export_symbols_cmds | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="${ofile}T" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + $rm -f "$cfgfile" + { echo "$as_me:$LINENO: creating $ofile" >&5 +echo "$as_me: creating $ofile" >&6;} + + cat <<__EOF__ >> "$cfgfile" +#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +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 + +CC="$lt_save_CC" + + +# Check whether --with-tags or --without-tags was given. +if test "${with_tags+set}" = set; then + withval="$with_tags" + tagnames="$withval" +fi; + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 +echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} + else + { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 +echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} + fi + fi + if test -z "$LTCFLAGS"; then + eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in + "") ;; + *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 +echo "$as_me: error: invalid tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 +echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} + { (exit 1); exit 1; }; } + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + 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 + + + + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + $as_unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + $as_unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +compiler_CXX=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' +else + lt_prog_compiler_no_builtin_flag_CXX= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 +ld_shlibs_CXX=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_CXX=yes + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty executable. + 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 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 + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; 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_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + 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 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 + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; 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_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes ; then + lt_int_apple_cc_single_mod=no + output_verbose_link_cmd='echo' + if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then + lt_int_apple_cc_single_mod=yes + fi + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + else + archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + fi + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + if test "X$lt_int_apple_cc_single_mod" = Xyes ; then + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_CXX=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + ld_shlibs_CXX=no + ;; + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + gnu*) + ;; + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_CXX='+b $libdir' + ;; + *) + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + interix3*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + ;; + linux*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC*) + # Portland Group C++ compiler + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + openbsd*) + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The C++ compiler is used as linker so we must use $wl + # flag to pass the commands to the underlying system + # linker. We must also pass each convience library through + # to the system linker between allextract/defaultextract. + # The C++ compiler will combine linker options so we + # cannot just pass the convience library names through + # without $wl. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + fi + ;; + esac + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='${wl}-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + # So that behaviour is only enabled if SCOABSPATH is set to a + # non-empty value in the environment. Most likely only useful for + # creating official distributions of packages. + # This is a hack until libtool officially supports absolute path + # names for shared libraries. + no_undefined_flag_CXX='${wl}-z,text' + allow_undefined_flag_CXX='${wl}-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; +esac +echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6 +test "$ld_shlibs_CXX" = no && can_build_shared=no + +GCC_CXX="$GXX" +LD_CXX="$LD" + + +cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + # The `*' in the case matches for architectures that use `case' in + # $output_verbose_cmd can trigger glob expansion during the loop + # eval without this substitution. + output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` + + for p in `eval $output_verbose_link_cmd`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" \ + || test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$rm -f confest.$objext + +# PORTME: override above test on systems where it is broken +case $host_os in +interix3*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; + +solaris*) + case $cc_basename in + CC*) + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + postdeps_CXX='-lCstd -lCrun' + ;; + esac + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + +lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix4* | aix5*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_CXX='-qnocommon' + lt_prog_compiler_wl_CXX='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | kfreebsd*-gnu | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC*) + # Portland Group C++ compiler. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:11627: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:11631: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_CXX=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6 + +if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 +if test "${lt_prog_compiler_static_works_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works_CXX=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works_CXX=yes + fi + else + lt_prog_compiler_static_works_CXX=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6 + +if test x"$lt_prog_compiler_static_works_CXX" = xyes; then + : +else + lt_prog_compiler_static_CXX= +fi + + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:11731: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:11735: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix4* | aix5*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw*) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + ;; + kfreebsd*-gnu) + link_all_deplibs_CXX=no + ;; + linux*) + link_all_deplibs_CXX=no + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +echo "${ECHO_T}$ld_shlibs_CXX" >&6 +test "$ld_shlibs_CXX" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_CXX=no + else + archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || \ + test -n "$runpath_var_CXX" || \ + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 +echo "${ECHO_T}$hardcode_action_CXX" >&6 + +if test "$hardcode_action_CXX" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_CXX \ + CC_CXX \ + LD_CXX \ + lt_prog_compiler_wl_CXX \ + lt_prog_compiler_pic_CXX \ + lt_prog_compiler_static_CXX \ + lt_prog_compiler_no_builtin_flag_CXX \ + export_dynamic_flag_spec_CXX \ + thread_safe_flag_spec_CXX \ + whole_archive_flag_spec_CXX \ + enable_shared_with_static_runtimes_CXX \ + old_archive_cmds_CXX \ + old_archive_from_new_cmds_CXX \ + predep_objects_CXX \ + postdep_objects_CXX \ + predeps_CXX \ + postdeps_CXX \ + compiler_lib_search_path_CXX \ + archive_cmds_CXX \ + archive_expsym_cmds_CXX \ + postinstall_cmds_CXX \ + postuninstall_cmds_CXX \ + old_archive_from_expsyms_cmds_CXX \ + allow_undefined_flag_CXX \ + no_undefined_flag_CXX \ + export_symbols_cmds_CXX \ + hardcode_libdir_flag_spec_CXX \ + hardcode_libdir_flag_spec_ld_CXX \ + hardcode_libdir_separator_CXX \ + hardcode_automatic_CXX \ + module_cmds_CXX \ + module_expsym_cmds_CXX \ + lt_cv_prog_compiler_c_o_CXX \ + exclude_expsyms_CXX \ + include_expsyms_CXX; do + + case $var in + old_archive_cmds_CXX | \ + old_archive_from_new_cmds_CXX | \ + archive_cmds_CXX | \ + archive_expsym_cmds_CXX | \ + module_cmds_CXX | \ + module_expsym_cmds_CXX | \ + old_archive_from_expsyms_cmds_CXX | \ + export_symbols_cmds_CXX | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_CXX + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_CXX +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_CXX + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_CXX" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +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 + +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld + + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu + + +archive_cmds_need_lc_F77=no +allow_undefined_flag_F77= +always_export_symbols_F77=no +archive_expsym_cmds_F77= +export_dynamic_flag_spec_F77= +hardcode_direct_F77=no +hardcode_libdir_flag_spec_F77= +hardcode_libdir_flag_spec_ld_F77= +hardcode_libdir_separator_F77= +hardcode_minus_L_F77=no +hardcode_automatic_F77=no +module_cmds_F77= +module_expsym_cmds_F77= +link_all_deplibs_F77=unknown +old_archive_cmds_F77=$old_archive_cmds +no_undefined_flag_F77= +whole_archive_flag_spec_F77= +enable_shared_with_static_runtimes_F77=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +objext_F77=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code=" subroutine t\n return\n end\n" + +# Code to be used in simple link tests +lt_simple_link_test_code=" program t\n end\n" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${F77-"f77"} +compiler=$CC +compiler_F77=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; +aix4* | aix5*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6 + +GCC_F77="$G77" +LD_F77="$LD" + +lt_prog_compiler_wl_F77= +lt_prog_compiler_pic_F77= +lt_prog_compiler_static_F77= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_static_F77='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_F77='-fno-common' + ;; + + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_F77=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_F77=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_F77='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + else + lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_F77='-qnocommon' + lt_prog_compiler_wl_F77='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_F77='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_F77='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-fpic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_F77='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_F77='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_F77='-Qoption ld ';; + *) + lt_prog_compiler_wl_F77='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_F77='-Qoption ld ' + lt_prog_compiler_pic_F77='-PIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_F77='-Kconform_pic' + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_can_build_shared_F77=no + ;; + + uts4*) + lt_prog_compiler_pic_F77='-pic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_F77=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_F77"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_F77=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_F77" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:13319: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:13323: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_F77=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6 + +if test x"$lt_prog_compiler_pic_works_F77" = xyes; then + case $lt_prog_compiler_pic_F77 in + "" | " "*) ;; + *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; + esac +else + lt_prog_compiler_pic_F77= + lt_prog_compiler_can_build_shared_F77=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_F77= + ;; + *) + lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" +echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 +if test "${lt_prog_compiler_static_works_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works_F77=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works_F77=yes + fi + else + lt_prog_compiler_static_works_F77=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6 + +if test x"$lt_prog_compiler_static_works_F77" = xyes; then + : +else + lt_prog_compiler_static_F77= +fi + + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_F77=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:13423: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:13427: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_F77=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag_F77= + enable_shared_with_static_runtimes_F77=no + archive_cmds_F77= + archive_expsym_cmds_F77= + old_archive_From_new_cmds_F77= + old_archive_from_expsyms_cmds_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + thread_safe_flag_spec_F77= + hardcode_libdir_flag_spec_F77= + hardcode_libdir_flag_spec_ld_F77= + hardcode_libdir_separator_F77= + hardcode_direct_F77=no + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=unsupported + link_all_deplibs_F77=unknown + hardcode_automatic_F77=no + module_cmds_F77= + module_expsym_cmds_F77= + always_export_symbols_F77=no + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_F77= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_F77=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_F77='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_F77= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_F77=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_F77=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_F77='-L$libdir' + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=no + enable_shared_with_static_runtimes_F77=yes + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_F77=no + fi + ;; + + interix3*) + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + link_all_deplibs_F77=no + else + ld_shlibs_F77=no + fi + ;; + + netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_F77=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + + if test "$ld_shlibs_F77" = no; then + runpath_var= + hardcode_libdir_flag_spec_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=yes + archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_F77=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_F77=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_F77='' + hardcode_direct_F77=yes + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_F77=yes + else + # We have old collect2 + hardcode_direct_F77=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_F77=yes + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_libdir_separator_F77= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_F77=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_F77='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_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_f77_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 + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; 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_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_F77="-z nodefs" + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_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_f77_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 + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; 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_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_F77=' ${wl}-bernotok' + allow_undefined_flag_F77=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_F77='$convenience' + archive_cmds_need_lc_F77=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_F77=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_F77=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_F77=' ' + allow_undefined_flag_F77=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_F77='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_F77='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_F77=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_F77=no + hardcode_direct_F77=no + hardcode_automatic_F77=yes + hardcode_shlibpath_var_F77=unsupported + whole_archive_flag_spec_F77='' + link_all_deplibs_F77=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_F77=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + freebsd1*) + ld_shlibs_F77=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # GNU/kFreeBSD uses gcc -shared to do shared libraries. + kfreebsd*-gnu) + archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + link_all_deplibs_F77=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_F77='+b $libdir' + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + ;; + *) + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + link_all_deplibs_F77=yes + ;; + + netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + newsos6) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_shlibpath_var_F77=no + ;; + + openbsd*) + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + ;; + *) + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + allow_undefined_flag_F77=unsupported + archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_F77='-rpath $libdir' + fi + hardcode_libdir_separator_F77=: + ;; + + solaris*) + no_undefined_flag_F77=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_shlibpath_var_F77=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs_F77=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_F77='$CC -r -o $output$reload_objs' + hardcode_direct_F77=no + ;; + motorola) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv4.3*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_F77=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) + no_undefined_flag_F77='${wl}-z,text' + archive_cmds_need_lc_F77=no + hardcode_shlibpath_var_F77=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_F77='${wl}-z,text' + allow_undefined_flag_F77='${wl}-z,nodefs' + archive_cmds_need_lc_F77=no + hardcode_shlibpath_var_F77=no + hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + export_dynamic_flag_spec_F77='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + *) + ld_shlibs_F77=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 +echo "${ECHO_T}$ld_shlibs_F77" >&6 +test "$ld_shlibs_F77" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_F77" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_F77=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_F77 in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_F77 + pic_flag=$lt_prog_compiler_pic_F77 + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_F77 + allow_undefined_flag_F77= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_F77=no + else + archive_cmds_need_lc_F77=yes + fi + allow_undefined_flag_F77=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_F77= +if test -n "$hardcode_libdir_flag_spec_F77" || \ + test -n "$runpath_var_F77" || \ + test "X$hardcode_automatic_F77" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_F77" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && + test "$hardcode_minus_L_F77" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_F77=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_F77=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_F77=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 +echo "${ECHO_T}$hardcode_action_F77" >&6 + +if test "$hardcode_action_F77" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_F77 \ + CC_F77 \ + LD_F77 \ + lt_prog_compiler_wl_F77 \ + lt_prog_compiler_pic_F77 \ + lt_prog_compiler_static_F77 \ + lt_prog_compiler_no_builtin_flag_F77 \ + export_dynamic_flag_spec_F77 \ + thread_safe_flag_spec_F77 \ + whole_archive_flag_spec_F77 \ + enable_shared_with_static_runtimes_F77 \ + old_archive_cmds_F77 \ + old_archive_from_new_cmds_F77 \ + predep_objects_F77 \ + postdep_objects_F77 \ + predeps_F77 \ + postdeps_F77 \ + compiler_lib_search_path_F77 \ + archive_cmds_F77 \ + archive_expsym_cmds_F77 \ + postinstall_cmds_F77 \ + postuninstall_cmds_F77 \ + old_archive_from_expsyms_cmds_F77 \ + allow_undefined_flag_F77 \ + no_undefined_flag_F77 \ + export_symbols_cmds_F77 \ + hardcode_libdir_flag_spec_F77 \ + hardcode_libdir_flag_spec_ld_F77 \ + hardcode_libdir_separator_F77 \ + hardcode_automatic_F77 \ + module_cmds_F77 \ + module_expsym_cmds_F77 \ + lt_cv_prog_compiler_c_o_F77 \ + exclude_expsyms_F77 \ + include_expsyms_F77; do + + case $var in + old_archive_cmds_F77 | \ + old_archive_from_new_cmds_F77 | \ + archive_cmds_F77 | \ + archive_expsym_cmds_F77 | \ + module_cmds_F77 | \ + module_expsym_cmds_F77 | \ + old_archive_from_expsyms_cmds_F77 | \ + export_symbols_cmds_F77 | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_F77 + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_F77 + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_F77 + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_F77 + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_F77 + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_F77 +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_F77 + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_F77 +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_F77 +archive_expsym_cmds=$lt_archive_expsym_cmds_F77 +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_F77 +module_expsym_cmds=$lt_module_expsym_cmds_F77 + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_F77 + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_F77 + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_F77 + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_F77 + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_F77 + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_F77 + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_F77 + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_F77 + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_F77 + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_F77 + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_F77" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_F77 + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_F77 + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_F77 + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_F77 + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +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 + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + + + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +objext_GCJ=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}\n" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${GCJ-"gcj"} +compiler=$CC +compiler_GCJ=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +archive_cmds_need_lc_GCJ=no + +old_archive_cmds_GCJ=$old_archive_cmds + + +lt_prog_compiler_no_builtin_flag_GCJ= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' + + +echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15646: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:15650: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl_GCJ= +lt_prog_compiler_pic_GCJ= +lt_prog_compiler_static_GCJ= + +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 + + if test "$GCC" = yes; then + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_static_GCJ='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_GCJ='-fno-common' + ;; + + interix3*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_GCJ=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_GCJ=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_GCJ='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + else + lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_GCJ='-qnocommon' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + esac + ;; + + mingw* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + linux*) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-fpic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_GCJ='-Qoption ld ';; + *) + lt_prog_compiler_wl_GCJ='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_GCJ='-Qoption ld ' + lt_prog_compiler_pic_GCJ='-PIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_GCJ='-Kconform_pic' + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_can_build_shared_GCJ=no + ;; + + uts4*) + lt_prog_compiler_pic_GCJ='-pic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_GCJ=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_GCJ"; then + +echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 +if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_pic_works_GCJ=no + ac_outfile=conftest.$ac_objext + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_GCJ" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15914: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:15918: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_pic_works_GCJ=yes + fi + fi + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6 + +if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then + case $lt_prog_compiler_pic_GCJ in + "" | " "*) ;; + *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; + esac +else + lt_prog_compiler_pic_GCJ= + lt_prog_compiler_can_build_shared_GCJ=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_GCJ= + ;; + *) + lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" +echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 +if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_prog_compiler_static_works_GCJ=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + printf "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_prog_compiler_static_works_GCJ=yes + fi + else + lt_prog_compiler_static_works_GCJ=yes + fi + fi + $rm conftest* + LDFLAGS="$save_LDFLAGS" + +fi +echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5 +echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6 + +if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then + : +else + lt_prog_compiler_static_GCJ= +fi + + +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_compiler_c_o_GCJ=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16018: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:16022: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_GCJ=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6 + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 + + runpath_var= + allow_undefined_flag_GCJ= + enable_shared_with_static_runtimes_GCJ=no + archive_cmds_GCJ= + archive_expsym_cmds_GCJ= + old_archive_From_new_cmds_GCJ= + old_archive_from_expsyms_cmds_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + thread_safe_flag_spec_GCJ= + hardcode_libdir_flag_spec_GCJ= + hardcode_libdir_flag_spec_ld_GCJ= + hardcode_libdir_separator_GCJ= + hardcode_direct_GCJ=no + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=unsupported + link_all_deplibs_GCJ=unknown + hardcode_automatic_GCJ=no + module_cmds_GCJ= + module_expsym_cmds_GCJ= + always_export_symbols_GCJ=no + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_GCJ= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_GCJ=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_GCJ= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_GCJ=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_GCJ=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_GCJ='-L$libdir' + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=no + enable_shared_with_static_runtimes_GCJ=yes + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + interix3*) + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + linux*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + link_all_deplibs_GCJ=no + else + ld_shlibs_GCJ=no + fi + ;; + + netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_GCJ=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + + if test "$ld_shlibs_GCJ" = no; then + runpath_var= + hardcode_libdir_flag_spec_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=yes + archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_GCJ=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_GCJ=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_GCJ='' + hardcode_direct_GCJ=yes + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct_GCJ=yes + else + # We have old collect2 + hardcode_direct_GCJ=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_GCJ=yes + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_libdir_separator_GCJ= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_GCJ=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_GCJ='-berok' + # Determine the default libpath from the value encoded in an empty executable. + 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 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_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_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 + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; 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_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_GCJ="-z nodefs" + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + 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 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_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_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 + +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } +}'`; 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_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_GCJ=' ${wl}-bernotok' + allow_undefined_flag_GCJ=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_GCJ='$convenience' + archive_cmds_need_lc_GCJ=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_GCJ=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_GCJ=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_GCJ=' ' + allow_undefined_flag_GCJ=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_GCJ='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_GCJ=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_GCJ=no + hardcode_direct_GCJ=no + hardcode_automatic_GCJ=yes + hardcode_shlibpath_var_GCJ=unsupported + whole_archive_flag_spec_GCJ='' + link_all_deplibs_GCJ=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_GCJ=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + freebsd1*) + ld_shlibs_GCJ=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # GNU/kFreeBSD uses gcc -shared to do shared libraries. + kfreebsd*-gnu) + archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + link_all_deplibs_GCJ=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + ;; + *) + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + link_all_deplibs_GCJ=yes + ;; + + netbsd* | netbsdelf*-gnu | knetbsd*-gnu) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + newsos6) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_shlibpath_var_GCJ=no + ;; + + openbsd*) + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + ;; + *) + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + allow_undefined_flag_GCJ=unsupported + archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_GCJ='-rpath $libdir' + fi + hardcode_libdir_separator_GCJ=: + ;; + + solaris*) + no_undefined_flag_GCJ=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_shlibpath_var_GCJ=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine linker options so we + # cannot just pass the convience library names through + # without $wl, iff we do not link with $LD. + # Luckily, gcc supports the same syntax we need for Sun Studio. + # Supported since Solaris 2.6 (maybe 2.5.1?) + case $wlarc in + '') + whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; + *) + whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; + esac ;; + esac + link_all_deplibs_GCJ=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_GCJ='$CC -r -o $output$reload_objs' + hardcode_direct_GCJ=no + ;; + motorola) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4.3*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_GCJ=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) + no_undefined_flag_GCJ='${wl}-z,text' + archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_GCJ='${wl}-z,text' + allow_undefined_flag_GCJ='${wl}-z,nodefs' + archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + *) + ld_shlibs_GCJ=no + ;; + esac + fi + +echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 +echo "${ECHO_T}$ld_shlibs_GCJ" >&6 +test "$ld_shlibs_GCJ" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_GCJ" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_GCJ=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_GCJ in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + $rm conftest* + printf "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_GCJ + pic_flag=$lt_prog_compiler_pic_GCJ + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ + allow_undefined_flag_GCJ= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_GCJ=no + else + archive_cmds_need_lc_GCJ=yes + fi + allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 +echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 + ;; + esac + fi + ;; +esac + +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix4* | aix5*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. + if test "$GCC" = yes; then + sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` + else + sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + fi + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +kfreebsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + freebsd*) # from 4.6 on + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix3*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +knetbsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action_GCJ= +if test -n "$hardcode_libdir_flag_spec_GCJ" || \ + test -n "$runpath_var_GCJ" || \ + test "X$hardcode_automatic_GCJ" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_GCJ" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && + test "$hardcode_minus_L_GCJ" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_GCJ=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_GCJ=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_GCJ=unsupported +fi +echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 +echo "${ECHO_T}$hardcode_action_GCJ" >&6 + +if test "$hardcode_action_GCJ" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_GCJ \ + CC_GCJ \ + LD_GCJ \ + lt_prog_compiler_wl_GCJ \ + lt_prog_compiler_pic_GCJ \ + lt_prog_compiler_static_GCJ \ + lt_prog_compiler_no_builtin_flag_GCJ \ + export_dynamic_flag_spec_GCJ \ + thread_safe_flag_spec_GCJ \ + whole_archive_flag_spec_GCJ \ + enable_shared_with_static_runtimes_GCJ \ + old_archive_cmds_GCJ \ + old_archive_from_new_cmds_GCJ \ + predep_objects_GCJ \ + postdep_objects_GCJ \ + predeps_GCJ \ + postdeps_GCJ \ + compiler_lib_search_path_GCJ \ + archive_cmds_GCJ \ + archive_expsym_cmds_GCJ \ + postinstall_cmds_GCJ \ + postuninstall_cmds_GCJ \ + old_archive_from_expsyms_cmds_GCJ \ + allow_undefined_flag_GCJ \ + no_undefined_flag_GCJ \ + export_symbols_cmds_GCJ \ + hardcode_libdir_flag_spec_GCJ \ + hardcode_libdir_flag_spec_ld_GCJ \ + hardcode_libdir_separator_GCJ \ + hardcode_automatic_GCJ \ + module_cmds_GCJ \ + module_expsym_cmds_GCJ \ + lt_cv_prog_compiler_c_o_GCJ \ + exclude_expsyms_GCJ \ + include_expsyms_GCJ; do + + case $var in + old_archive_cmds_GCJ | \ + old_archive_from_new_cmds_GCJ | \ + archive_cmds_GCJ | \ + archive_expsym_cmds_GCJ | \ + module_cmds_GCJ | \ + module_expsym_cmds_GCJ | \ + old_archive_from_expsyms_cmds_GCJ | \ + export_symbols_cmds_GCJ | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_GCJ + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_GCJ + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_GCJ + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_GCJ + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_GCJ + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_GCJ +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_GCJ + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_GCJ +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_GCJ +archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_GCJ +module_expsym_cmds=$lt_module_expsym_cmds_GCJ + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_GCJ + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_GCJ + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_GCJ + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_GCJ + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_GCJ + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_GCJ + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_GCJ + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_GCJ + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_GCJ + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_GCJ" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_GCJ + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_GCJ + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_GCJ + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_GCJ + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +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 + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + RC) + + + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +objext_RC=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +printf "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +printf "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${RC-"windres"} +compiler=$CC +compiler_RC=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + +lt_cv_prog_compiler_c_o_RC=yes + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_RC \ + CC_RC \ + LD_RC \ + lt_prog_compiler_wl_RC \ + lt_prog_compiler_pic_RC \ + lt_prog_compiler_static_RC \ + lt_prog_compiler_no_builtin_flag_RC \ + export_dynamic_flag_spec_RC \ + thread_safe_flag_spec_RC \ + whole_archive_flag_spec_RC \ + enable_shared_with_static_runtimes_RC \ + old_archive_cmds_RC \ + old_archive_from_new_cmds_RC \ + predep_objects_RC \ + postdep_objects_RC \ + predeps_RC \ + postdeps_RC \ + compiler_lib_search_path_RC \ + archive_cmds_RC \ + archive_expsym_cmds_RC \ + postinstall_cmds_RC \ + postuninstall_cmds_RC \ + old_archive_from_expsyms_cmds_RC \ + allow_undefined_flag_RC \ + no_undefined_flag_RC \ + export_symbols_cmds_RC \ + hardcode_libdir_flag_spec_RC \ + hardcode_libdir_flag_spec_ld_RC \ + hardcode_libdir_separator_RC \ + hardcode_automatic_RC \ + module_cmds_RC \ + module_expsym_cmds_RC \ + lt_cv_prog_compiler_c_o_RC \ + exclude_expsyms_RC \ + include_expsyms_RC; do + + case $var in + old_archive_cmds_RC | \ + old_archive_from_new_cmds_RC | \ + archive_cmds_RC | \ + archive_expsym_cmds_RC | \ + module_cmds_RC | \ + module_expsym_cmds_RC | \ + old_archive_from_expsyms_cmds_RC | \ + export_symbols_cmds_RC | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_RC + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_RC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_RC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_RC + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_RC + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_RC +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_RC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_RC +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_RC +archive_expsym_cmds=$lt_archive_expsym_cmds_RC +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_RC +module_expsym_cmds=$lt_module_expsym_cmds_RC + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_RC + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_RC + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_RC + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_RC + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_RC + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_RC + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_RC + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_RC + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_RC + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_RC + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_RC + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path_RC" + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_RC + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_RC + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_RC + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_RC + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +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 + +CC="$lt_save_CC" + + ;; + + *) + { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 +echo "$as_me: error: Unsupported tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 +echo "$as_me: error: unable to update list of available tagged configurations." >&2;} + { (exit 1); exit 1; }; } + fi +fi + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + +# Prevent multiple expansion + + + + + + + + + + + + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # 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_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_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_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_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_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # 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_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_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_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_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 \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&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 + +# 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' + +echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +#AC_PROG_RANLIB +for ac_prog in 'bison -y' byacc +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_YACC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$YACC"; then + ac_cv_prog_YACC="$YACC" # 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_YACC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +YACC=$ac_cv_prog_YACC +if test -n "$YACC"; then + echo "$as_me:$LINENO: result: $YACC" >&5 +echo "${ECHO_T}$YACC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$YACC" && break +done +test -n "$YACC" || YACC="yacc" + +for ac_prog in flex lex +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_LEX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$LEX"; then + ac_cv_prog_LEX="$LEX" # 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_LEX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +LEX=$ac_cv_prog_LEX +if test -n "$LEX"; then + echo "$as_me:$LINENO: result: $LEX" >&5 +echo "${ECHO_T}$LEX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$LEX" && break +done +test -n "$LEX" || LEX=":" + +if test -z "$LEXLIB" +then + echo "$as_me:$LINENO: checking for yywrap in -lfl" >&5 +echo $ECHO_N "checking for yywrap in -lfl... $ECHO_C" >&6 +if test "${ac_cv_lib_fl_yywrap+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lfl $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 yywrap (); +int +main () +{ +yywrap (); + ; + 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_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_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_fl_yywrap=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_fl_yywrap=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_fl_yywrap" >&5 +echo "${ECHO_T}$ac_cv_lib_fl_yywrap" >&6 +if test $ac_cv_lib_fl_yywrap = yes; then + LEXLIB="-lfl" +else + echo "$as_me:$LINENO: checking for yywrap in -ll" >&5 +echo $ECHO_N "checking for yywrap in -ll... $ECHO_C" >&6 +if test "${ac_cv_lib_l_yywrap+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ll $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 yywrap (); +int +main () +{ +yywrap (); + ; + 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_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_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_l_yywrap=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_l_yywrap=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_l_yywrap" >&5 +echo "${ECHO_T}$ac_cv_lib_l_yywrap" >&6 +if test $ac_cv_lib_l_yywrap = yes; then + LEXLIB="-ll" +fi + +fi + +fi + +if test "x$LEX" != "x:"; then + echo "$as_me:$LINENO: checking lex output file root" >&5 +echo $ECHO_N "checking lex output file root... $ECHO_C" >&6 +if test "${ac_cv_prog_lex_root+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # The minimal lex program is just a single line: %%. But some broken lexes +# (Solaris, I think it was) want two %% lines, so accommodate them. +cat >conftest.l <<_ACEOF +%% +%% +_ACEOF +{ (eval echo "$as_me:$LINENO: \"$LEX conftest.l\"") >&5 + (eval $LEX conftest.l) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +if test -f lex.yy.c; then + ac_cv_prog_lex_root=lex.yy +elif test -f lexyy.c; then + ac_cv_prog_lex_root=lexyy +else + { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5 +echo "$as_me: error: cannot find output from $LEX; giving up" >&2;} + { (exit 1); exit 1; }; } +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5 +echo "${ECHO_T}$ac_cv_prog_lex_root" >&6 +rm -f conftest.l +LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root + +echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5 +echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6 +if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # POSIX says lex can declare yytext either as a pointer or an array; the +# default is implementation-dependent. Figure out which it is, since +# not all implementations provide the %pointer and %array declarations. +ac_cv_prog_lex_yytext_pointer=no +echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c +ac_save_LIBS=$LIBS +LIBS="$LIBS $LEXLIB" +cat >conftest.$ac_ext <<_ACEOF +`cat $LEX_OUTPUT_ROOT.c` +_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_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_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_prog_lex_yytext_pointer=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_save_LIBS +rm -f "${LEX_OUTPUT_ROOT}.c" + +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5 +echo "${ECHO_T}$ac_cv_prog_lex_yytext_pointer" >&6 +if test $ac_cv_prog_lex_yytext_pointer = yes; then + +cat >>confdefs.h <<\_ACEOF +#define YYTEXT_POINTER 1 +_ACEOF + +fi + +fi +if test "$LEX" = :; then + LEX=${am_missing_run}flex +fi + +# Check for unicode support in flex +echo "$as_me:$LINENO: checking unicode support in flex" >&5 +echo $ECHO_N "checking unicode support in flex... $ECHO_C" >&6 +flex --help | grep "\-U" > /dev/null +if test "$?" -eq "0" + then echo "$as_me:$LINENO: result: found" >&5 +echo "${ECHO_T}found" >&6 + else { echo "$as_me:$LINENO: WARNING: not found. XQilla requires a version of flex supporting the -U (16-bit unicode) flag if you need to rebuild the lexer." >&5 +echo "$as_me: WARNING: not found. XQilla requires a version of flex supporting the -U (16-bit unicode) flag if you need to rebuild the lexer." >&2;} +fi + +# Set up extra compiler flags for GCC +if test "$GXX" = "yes"; then + if test "$xqilla_cv_debug" = "yes"; then + CXXFLAGS="$CXXFLAGS -Wall -ftemplate-depth-50 ${targetoptions}" + CFLAGS="$CFLAGS -Wall ${targetoptions}" + else + CXXFLAGS="$CXXFLAGS -ftemplate-depth-50 ${targetoptions}" + CFLAGS="$CFLAGS ${targetoptions}" + fi +fi + +# Checks for libraries. + +echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5 +echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6 +if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $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 pthread_create (); +int +main () +{ +pthread_create (); + ; + 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_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_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_pthread_pthread_create=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_pthread_pthread_create=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_pthread_pthread_create" >&5 +echo "${ECHO_T}$ac_cv_lib_pthread_pthread_create" >&6 +if test $ac_cv_lib_pthread_pthread_create = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBPTHREAD 1 +_ACEOF + + LIBS="-lpthread $LIBS" + +fi + + +echo "$as_me:$LINENO: checking for connect in -lsocket" >&5 +echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 +if test "${ac_cv_lib_socket_connect+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* 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 connect (); +int +main () +{ +connect (); + ; + 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_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_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_socket_connect=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_socket_connect=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_socket_connect" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6 +if test $ac_cv_lib_socket_connect = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBSOCKET 1 +_ACEOF + + LIBS="-lsocket $LIBS" + +fi + + +echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5 +echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 +if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* 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 gethostbyname (); +int +main () +{ +gethostbyname (); + ; + 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_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_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_nsl_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_nsl_gethostbyname=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_nsl_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 +if test $ac_cv_lib_nsl_gethostbyname = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBNSL 1 +_ACEOF + + LIBS="-lnsl $LIBS" + +fi + + +# Checks for header files. +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +echo "$as_me:$LINENO: checking for working alloca.h" >&5 +echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 +if test "${ac_cv_working_alloca_h+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 +int +main () +{ +char *p = (char *) alloca (2 * sizeof (int)); + ; + 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_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_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_working_alloca_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_working_alloca_h=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 +echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 +if test $ac_cv_working_alloca_h = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA_H 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for alloca" >&5 +echo $ECHO_N "checking for alloca... $ECHO_C" >&6 +if test "${ac_cv_func_alloca_works+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. */ +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# if HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +int +main () +{ +char *p = (char *) alloca (1); + ; + 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_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_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_alloca_works=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_func_alloca_works=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 +echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 + +if test $ac_cv_func_alloca_works = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_ALLOCA 1 +_ACEOF + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=alloca.$ac_objext + +cat >>confdefs.h <<\_ACEOF +#define C_ALLOCA 1 +_ACEOF + + +echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 +echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 +if test "${ac_cv_os_cray+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. */ +#if defined(CRAY) && ! defined(CRAY2) +webecray +#else +wenotbecray +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "webecray" >/dev/null 2>&1; then + ac_cv_os_cray=yes +else + ac_cv_os_cray=no +fi +rm -f conftest* + +fi +echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 +echo "${ECHO_T}$ac_cv_os_cray" >&6 +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; 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_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_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 CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 +echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 +if test "${ac_cv_c_stack_direction+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_c_stack_direction=0 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +int +find_stack_direction () +{ + static char *addr = 0; + auto char dummy; + if (addr == 0) + { + addr = &dummy; + return find_stack_direction (); + } + else + return (&dummy > addr) ? 1 : -1; +} + +int +main () +{ + exit (find_stack_direction () < 0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_stack_direction=1 +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_c_stack_direction=-1 +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 +echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 + +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + +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_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_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_header in limits.h malloc.h stddef.h stdlib.h string.h sys/time.h sys/timeb.h wchar.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>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_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + 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_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## --------------------------------- ## +## Report this to the XQilla lists. ## +## --------------------------------- ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +# Checks for typedefs, structures, and compiler characteristics. +echo "$as_me:$LINENO: checking for stdbool.h that conforms to C99" >&5 +echo $ECHO_N "checking for stdbool.h that conforms to C99... $ECHO_C" >&6 +if test "${ac_cv_header_stdbool_h+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 +#ifndef bool +# error bool is not defined +#endif +#ifndef false +# error false is not defined +#endif +#if false +# error false is not 0 +#endif +#ifndef true +# error true is not defined +#endif +#if true != 1 +# error true is not 1 +#endif +#ifndef __bool_true_false_are_defined +# error __bool_true_false_are_defined is not defined +#endif + + struct s { _Bool s: 1; _Bool t; } s; + + char a[true == 1 ? 1 : -1]; + char b[false == 0 ? 1 : -1]; + char c[__bool_true_false_are_defined == 1 ? 1 : -1]; + char d[(bool) -0.5 == true ? 1 : -1]; + bool e = &s; + char f[(_Bool) -0.0 == false ? 1 : -1]; + char g[true]; + char h[sizeof (_Bool)]; + char i[sizeof s.t]; + +int +main () +{ + return !a + !b + !c + !d + !e + !f + !g + !h + !i; + ; + 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_header_stdbool_h=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_stdbool_h=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdbool_h" >&5 +echo "${ECHO_T}$ac_cv_header_stdbool_h" >&6 +echo "$as_me:$LINENO: checking for _Bool" >&5 +echo $ECHO_N "checking for _Bool... $ECHO_C" >&6 +if test "${ac_cv_type__Bool+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. */ +$ac_includes_default +int +main () +{ +if ((_Bool *) 0) + return 0; +if (sizeof (_Bool)) + return 0; + ; + 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_type__Bool=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type__Bool=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type__Bool" >&5 +echo "${ECHO_T}$ac_cv_type__Bool" >&6 +if test $ac_cv_type__Bool = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE__BOOL 1 +_ACEOF + + +fi + +if test $ac_cv_header_stdbool_h = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HAVE_STDBOOL_H 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 +if test "${ac_cv_c_const+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset x; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *ccp; + char **p; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + ccp = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++ccp; + p = (char**) ccp; + ccp = (char const *const *) p; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + } +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>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_c_const=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_const=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6 +if test $ac_cv_c_const = no; then + +cat >>confdefs.h <<\_ACEOF +#define const +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for inline" >&5 +echo $ECHO_N "checking for inline... $ECHO_C" >&6 +if test "${ac_cv_c_inline+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#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 + ac_cv_c_inline=$ac_kw; 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 + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 +echo "${ECHO_T}$ac_cv_c_inline" >&6 + + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + +echo "$as_me:$LINENO: checking for size_t" >&5 +echo $ECHO_N "checking for size_t... $ECHO_C" >&6 +if test "${ac_cv_type_size_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((size_t *) 0) + return 0; +if (sizeof (size_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>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_type_size_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_size_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 +echo "${ECHO_T}$ac_cv_type_size_t" >&6 +if test $ac_cv_type_size_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned +_ACEOF + +fi + +echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 +echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6 +if test "${ac_cv_header_time+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 + +int +main () +{ +if ((struct tm *) 0) +return 0; + ; + 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_header_time=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_header_time=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 +echo "${ECHO_T}$ac_cv_header_time" >&6 +if test $ac_cv_header_time = yes; then + +cat >>confdefs.h <<\_ACEOF +#define TIME_WITH_SYS_TIME 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 +echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6 +if test "${ac_cv_struct_tm+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 + +int +main () +{ +struct tm *tp; tp->tm_sec; + ; + 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_struct_tm=time.h +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_struct_tm=sys/time.h +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 +echo "${ECHO_T}$ac_cv_struct_tm" >&6 +if test $ac_cv_struct_tm = sys/time.h; then + +cat >>confdefs.h <<\_ACEOF +#define TM_IN_SYS_TIME 1 +_ACEOF + +fi + +echo "$as_me:$LINENO: checking for ptrdiff_t" >&5 +echo $ECHO_N "checking for ptrdiff_t... $ECHO_C" >&6 +if test "${ac_cv_type_ptrdiff_t+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. */ +$ac_includes_default +int +main () +{ +if ((ptrdiff_t *) 0) + return 0; +if (sizeof (ptrdiff_t)) + return 0; + ; + 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_type_ptrdiff_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_ptrdiff_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_ptrdiff_t" >&5 +echo "${ECHO_T}$ac_cv_type_ptrdiff_t" >&6 +if test $ac_cv_type_ptrdiff_t = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_PTRDIFF_T 1 +_ACEOF + + +fi + + +# Checks for library functions. +echo "$as_me:$LINENO: checking for error_at_line" >&5 +echo $ECHO_N "checking for error_at_line... $ECHO_C" >&6 +if test "${ac_cv_lib_error_at_line+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. */ +$ac_includes_default +int +main () +{ +error_at_line (0, 0, "", 0, ""); + ; + 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_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_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_error_at_line=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_error_at_line=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_error_at_line" >&5 +echo "${ECHO_T}$ac_cv_lib_error_at_line" >&6 +if test $ac_cv_lib_error_at_line = no; then + case $LIBOBJS in + "error.$ac_objext" | \ + *" error.$ac_objext" | \ + "error.$ac_objext "* | \ + *" error.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS error.$ac_objext" ;; +esac + +fi + + + + +for ac_header in stdlib.h sys/time.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>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_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + 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_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## --------------------------------- ## +## Report this to the XQilla lists. ## +## --------------------------------- ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_func in alarm +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_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_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 + +echo "$as_me:$LINENO: checking for working mktime" >&5 +echo $ECHO_N "checking for working mktime... $ECHO_C" >&6 +if test "${ac_cv_func_working_mktime+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_working_mktime=no +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Test program from Paul Eggert and Tony Leneis. */ +#if TIME_WITH_SYS_TIME +# include +# include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif + +#if HAVE_STDLIB_H +# include +#endif + +#if HAVE_UNISTD_H +# include +#endif + +#if !HAVE_ALARM +# define alarm(X) /* empty */ +#endif + +/* Work around redefinition to rpl_putenv by other config tests. */ +#undef putenv + +static time_t time_t_max; +static time_t time_t_min; + +/* Values we'll use to set the TZ environment variable. */ +static char *tz_strings[] = { + (char *) 0, "TZ=GMT0", "TZ=JST-9", + "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00" +}; +#define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0])) + +/* Fail if mktime fails to convert a date in the spring-forward gap. + Based on a problem report from Andreas Jaeger. */ +static void +spring_forward_gap () +{ + /* glibc (up to about 1998-10-07) failed this test. */ + struct tm tm; + + /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" + instead of "TZ=America/Vancouver" in order to detect the bug even + on systems that don't support the Olson extension, or don't have the + full zoneinfo tables installed. */ + putenv ("TZ=PST8PDT,M4.1.0,M10.5.0"); + + tm.tm_year = 98; + tm.tm_mon = 3; + tm.tm_mday = 5; + tm.tm_hour = 2; + tm.tm_min = 0; + tm.tm_sec = 0; + tm.tm_isdst = -1; + if (mktime (&tm) == (time_t)-1) + exit (1); +} + +static void +mktime_test1 (now) + time_t now; +{ + struct tm *lt; + if ((lt = localtime (&now)) && mktime (lt) != now) + exit (1); +} + +static void +mktime_test (now) + time_t now; +{ + mktime_test1 (now); + mktime_test1 ((time_t) (time_t_max - now)); + mktime_test1 ((time_t) (time_t_min + now)); +} + +static void +irix_6_4_bug () +{ + /* Based on code from Ariel Faigon. */ + struct tm tm; + tm.tm_year = 96; + tm.tm_mon = 3; + tm.tm_mday = 0; + tm.tm_hour = 0; + tm.tm_min = 0; + tm.tm_sec = 0; + tm.tm_isdst = -1; + mktime (&tm); + if (tm.tm_mon != 2 || tm.tm_mday != 31) + exit (1); +} + +static void +bigtime_test (j) + int j; +{ + struct tm tm; + time_t now; + tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j; + now = mktime (&tm); + if (now != (time_t) -1) + { + struct tm *lt = localtime (&now); + if (! (lt + && lt->tm_year == tm.tm_year + && lt->tm_mon == tm.tm_mon + && lt->tm_mday == tm.tm_mday + && lt->tm_hour == tm.tm_hour + && lt->tm_min == tm.tm_min + && lt->tm_sec == tm.tm_sec + && lt->tm_yday == tm.tm_yday + && lt->tm_wday == tm.tm_wday + && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst) + == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst)))) + exit (1); + } +} + +int +main () +{ + time_t t, delta; + int i, j; + + /* This test makes some buggy mktime implementations loop. + Give up after 60 seconds; a mktime slower than that + isn't worth using anyway. */ + alarm (60); + + for (time_t_max = 1; 0 < time_t_max; time_t_max *= 2) + continue; + time_t_max--; + if ((time_t) -1 < 0) + for (time_t_min = -1; (time_t) (time_t_min * 2) < 0; time_t_min *= 2) + continue; + delta = time_t_max / 997; /* a suitable prime number */ + for (i = 0; i < N_STRINGS; i++) + { + if (tz_strings[i]) + putenv (tz_strings[i]); + + for (t = 0; t <= time_t_max - delta; t += delta) + mktime_test (t); + mktime_test ((time_t) 1); + mktime_test ((time_t) (60 * 60)); + mktime_test ((time_t) (60 * 60 * 24)); + + for (j = 1; 0 < j; j *= 2) + bigtime_test (j); + bigtime_test (j - 1); + } + irix_6_4_bug (); + spring_forward_gap (); + 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 + ac_cv_func_working_mktime=yes +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_func_working_mktime=no +fi +rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_func_working_mktime" >&5 +echo "${ECHO_T}$ac_cv_func_working_mktime" >&6 +if test $ac_cv_func_working_mktime = no; then + case $LIBOBJS in + "mktime.$ac_objext" | \ + *" mktime.$ac_objext" | \ + "mktime.$ac_objext "* | \ + *" mktime.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS mktime.$ac_objext" ;; +esac + +fi + + + + + + + + + + + +for ac_func in floor ftime gettimeofday memmove memset pow sqrt strchr strstr tzset +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_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_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 + + + ac_config_files="$ac_config_files Makefile include/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 + +DEFS=-DHAVE_CONFIG_H + +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 + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${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 XQilla $as_me 1.0, 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 + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +XQilla config.status 1.0 +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 +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "include/Makefile" ) CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "src/config/xqilla_config_unix.h" ) CONFIG_HEADERS="$CONFIG_HEADERS src/config/xqilla_config_unix.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +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,@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,@target@,$target,;t t +s,@target_cpu@,$target_cpu,;t t +s,@target_vendor@,$target_vendor,;t t +s,@target_os@,$target_os,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@CYGPATH_W@,$CYGPATH_W,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@VERSION@,$VERSION,;t t +s,@ACLOCAL@,$ACLOCAL,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@AUTOMAKE@,$AUTOMAKE,;t t +s,@AUTOHEADER@,$AUTOHEADER,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@install_sh@,$install_sh,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +s,@mkdir_p@,$mkdir_p,;t t +s,@AWK@,$AWK,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@am__leading_dot@,$am__leading_dot,;t t +s,@AMTAR@,$AMTAR,;t t +s,@am__tar@,$am__tar,;t t +s,@am__untar@,$am__untar,;t t +s,@xerces_include@,$xerces_include,;t t +s,@xerces_lib@,$xerces_lib,;t t +s,@CXX@,$CXX,;t t +s,@CXXFLAGS@,$CXXFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CXX@,$ac_ct_CXX,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@DEPDIR@,$DEPDIR,;t t +s,@am__include@,$am__include,;t t +s,@am__quote@,$am__quote,;t t +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +s,@CXXDEPMODE@,$CXXDEPMODE,;t t +s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t +s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@CCDEPMODE@,$CCDEPMODE,;t t +s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +s,@EGREP@,$EGREP,;t t +s,@LN_S@,$LN_S,;t t +s,@ECHO@,$ECHO,;t t +s,@AR@,$AR,;t t +s,@ac_ct_AR@,$ac_ct_AR,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@CPP@,$CPP,;t t +s,@CXXCPP@,$CXXCPP,;t t +s,@F77@,$F77,;t t +s,@FFLAGS@,$FFLAGS,;t t +s,@ac_ct_F77@,$ac_ct_F77,;t t +s,@LIBTOOL@,$LIBTOOL,;t t +s,@YACC@,$YACC,;t t +s,@LEX@,$LEX,;t t +s,@LEXLIB@,$LEXLIB,;t t +s,@LEX_OUTPUT_ROOT@,$LEX_OUTPUT_ROOT,;t t +s,@ALLOCA@,$ALLOCA,;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 + + # 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; } + + 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 +_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 + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; 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 + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # 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; }; } + # Do quote $f, to prevent DOS paths from being IFS'd. + 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; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # 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 + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if diff $ac_file $tmp/config.h >/dev/null 2>&1; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + 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; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +# Compute $ac_file's index in $config_headers. +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $ac_file" >`(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'`/stamp-h$_am_stamp_count +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + 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 + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$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 $dirpart/$fdir + else + as_dir=$dirpart/$fdir + 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 $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + esac +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 + diff --git a/configure.in b/configure.in new file mode 100644 index 00000000..f00e5172 --- /dev/null +++ b/configure.in @@ -0,0 +1,148 @@ +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. + +AC_PREREQ(2.59) +AC_INIT([XQilla],[1.0],[]) +AC_CONFIG_AUX_DIR(autotools) +AC_CANONICAL_TARGET([]) +AM_INIT_AUTOMAKE(XQilla, 1.0,) +AC_CONFIG_SRCDIR([src/runtime/Result.cpp]) +AC_CONFIG_HEADERS([src/config/xqilla_config_unix.h]) + +# Check debug option +AC_MSG_CHECKING(if --enable-debug option specified) +AC_ARG_ENABLE(debug, + [AS_HELP_STRING(--enable-debug,Build a debugging version.)], + [xqilla_cv_debug="$enable_debug"], [xqilla_cv_debug="no"]) +AC_MSG_RESULT($xqilla_cv_debug) + +# Don't override anything if it's already set from the environment. +optimize_def="-O" +case $host_os in +aix4.3.*|aix5*) + optimize_def="-O2" + CC=${CC-"xlc_r"} + CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" + LDFLAGS="$LDFLAGS -Wl,-brtl";; +bsdi3*) CC=${CC-"shlicc2"} + LIBS="$LIBS -lipc";; +cygwin*) + CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE -D_REENTRANT";; +freebsd*) + CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" + LDFLAGS="$LDFLAGS -pthread";; +gnu*|k*bsd*-gnu|linux*) + optimize_def="-O2" + CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE -D_REENTRANT";; +hpux*) CPPFLAGS="$CPPFLAGS -D_REENTRANT";; +irix*) optimize_def="-O2" + CPPFLAGS="$CPPFLAGS -D_SGI_MP_SOURCE";; +mpeix*) CPPFLAGS="$CPPFLAGS -D_POSIX_SOURCE -D_SOCKET_SOURCE" + LIBS="$LIBS -lsocket -lsvipc";; +osf*) CPPFLAGS="$CPPFLAGS -pthread";; +*qnx*) AC_DEFINE(HAVE_QNX) + AH_TEMPLATE(HAVE_QNX, [Define to 1 if building on QNX.]);; +solaris*) + CPPFLAGS="$CPPFLAGS -D_REENTRANT";; +esac + +# Set CFLAGS/CXXFLAGS. We MUST set the flags before we call autoconf +# compiler configuration macros, because if we don't, they set CFLAGS +# to no optimization and -g, which isn't what we want. +if test "$xqilla_cv_debug" = "yes"; then + AC_DEFINE(DEBUG) + AH_TEMPLATE(DEBUG, [Define to 1 if you want a debugging version.]) + + CFLAGS="$CFLAGS -g" + CXXFLAGS="$CXXFLAGS -g" +else + CFLAGS=${CFLAGS-$optimize_def} + CXXFLAGS=${CXXFLAGS-"$CFLAGS"} +fi + +# Check Xerces library name +AC_MSG_CHECKING([if --with-xerces=DIR option specified]) +AC_ARG_WITH(xerces, + [AS_HELP_STRING(--with-xerces=DIR,Path of Xerces. [DIR="../xerces-c-src"])], + [with_xerces="$withval"], [with_xerces="no"]) +AC_MSG_RESULT($with_xerces) +if test "$with_xerces" = "no"; then + with_xerces="/usr/local" +fi +if test `ls $with_xerces/lib/libxerces-c.*2[[6-7]].* 2>/dev/null | wc -l` -gt 0 ; then + AC_MSG_CHECKING([for Xerces C++ version from source tree]) + xerces_version=`ls "$with_xerces"/lib/libxerces-c.*[[0-9]][[0-9]].* | tail -1 | sed 's/.*xerces-c.*\([[0-9]]\)\([[0-9]]\).*/\1.\2/'` + AC_MSG_RESULT([$xerces_version]) + xerces_lib="$with_xerces/lib" + xerces_include="$with_xerces/src" + xerces_library="xerces-c" +elif test `ls $with_xerces/lib/libxerces-c*2[[6-7]].* 2>/dev/null | wc -l` -gt 0 ; then + AC_MSG_CHECKING([for Xerces C++ version from source tree]) + xerces_version=`ls "$with_xerces"/lib/libxerces-c*[[0-9]][[0-9]].* | tail -1 | sed 's/.*xerces-c*\([[0-9]]\)\([[0-9]]\).*/\1.\2/'` + AC_MSG_RESULT([$xerces_version]) + xerces_lib="$with_xerces/lib" + xerces_include="$with_xerces/src" + xerces_library="xerces-c" +else + AC_MSG_ERROR([Xerces-C++ is required to build XQuery. $with_xerces not a valid, supported Xerces tree. You must specify the path where Xerces is installed with --with-xerces.]) +fi +AC_SUBST(xerces_include) +AC_SUBST(xerces_lib) + +# Checks for programs. +AC_PROG_CXX +AC_PROG_CC +AC_PROG_LIBTOOL +AC_PROG_CPP +AC_PROG_INSTALL +AC_PROG_LN_S +AC_PROG_MAKE_SET +#AC_PROG_RANLIB +AC_PROG_YACC +AM_PROG_LEX + +# Check for unicode support in flex +AC_MSG_CHECKING([unicode support in flex]) +flex --help | grep "\-U" > /dev/null +if test "$?" -eq "0" + then AC_MSG_RESULT([found]) + else AC_MSG_WARN([not found. XQilla requires a version of flex supporting the -U (16-bit unicode) flag if you need to rebuild the lexer.]) +fi + +# Set up extra compiler flags for GCC +if test "$GXX" = "yes"; then + if test "$xqilla_cv_debug" = "yes"; then + CXXFLAGS="$CXXFLAGS -Wall -ftemplate-depth-50 ${targetoptions}" + CFLAGS="$CFLAGS -Wall ${targetoptions}" + else + CXXFLAGS="$CXXFLAGS -ftemplate-depth-50 ${targetoptions}" + CFLAGS="$CFLAGS ${targetoptions}" + fi +fi + +# Checks for libraries. +AC_CHECK_LIB(pthread,pthread_create) +AC_CHECK_LIB(socket,connect) +AC_CHECK_LIB(nsl,gethostbyname) + +# Checks for header files. +AC_FUNC_ALLOCA +AC_HEADER_STDC +AC_CHECK_HEADERS([limits.h malloc.h stddef.h stdlib.h string.h sys/time.h sys/timeb.h wchar.h]) + +# Checks for typedefs, structures, and compiler characteristics. +AC_HEADER_STDBOOL +AC_C_CONST +AC_C_INLINE +AC_TYPE_SIZE_T +AC_HEADER_TIME +AC_STRUCT_TM +AC_CHECK_TYPES([ptrdiff_t]) + +# Checks for library functions. +AC_FUNC_ERROR_AT_LINE +AC_FUNC_MKTIME +AC_CHECK_FUNCS([floor ftime gettimeofday memmove memset pow sqrt strchr strstr tzset]) + +AC_CONFIG_FILES([Makefile include/Makefile]) +AC_OUTPUT diff --git a/docs/Doxyfile.devapi.in b/docs/Doxyfile.devapi.in new file mode 100644 index 00000000..3fa6fc1f --- /dev/null +++ b/docs/Doxyfile.devapi.in @@ -0,0 +1,1010 @@ +# Doxyfile 1.2.18 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# General configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = "XQilla Development API" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = 1.0 + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = . + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, +# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en +# (Japanese with english messages), Korean, Norwegian, Polish, Portuguese, +# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish and Ukrainian. + +OUTPUT_LANGUAGE = English + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = YES + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these class will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = YES + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited +# members of a class in the documentation of that class as if those members were +# ordinary class members. Constructors, destructors and assignment operators of +# the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. It is allowed to use relative paths in the argument list. + +STRIP_FROM_PATH = + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower case letters. If set to YES upper case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# users are adviced to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explict @brief command for a brief description. + +JAVADOC_AUTOBRIEF = YES + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# reimplements. + +INHERIT_DOCS = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consist of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. +# For instance some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources +# only. Doxygen will then generate output that is more tailored for Java. +# For instance namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = \ +../include/xqilla/ \ +%xerces_include%/xercesc/framework/MemoryManager.hpp \ +%xerces_include%/xercesc/util/XMemory.hpp \ +%xerces_include%/xercesc/dom/DOMNode.hpp \ +%xerces_include%/xercesc/dom/DOMDocument.hpp \ +%xerces_include%/xercesc/dom/DOMXPathNSResolver.hpp \ +%xerces_include%/xercesc/util/XMLEntityResolver.hpp \ +%xerces_include%/xercesc/util/PlatformUtils.hpp \ +%xerces_include%/xercesc/sax/InputSource.hpp \ +%xerces_include%/xercesc/framework/LocalFileInputSource.hpp \ +%xerces_include%/xercesc/framework/MemBufInputSource.hpp \ +%xerces_include%/xercesc/framework/StdInInputSource.hpp \ +%xerces_include%/xercesc/framework/URLInputSource.hpp + + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp +# *.h++ *.idl *.odl + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories +# that are symbolic links (a Unix filesystem feature) are excluded from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. + +EXCLUDE_PATTERNS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. + +INPUT_FILTER = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 3 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = dev-api + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output dir. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non empty doxygen will try to run +# the html help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the Html help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript and frames is required (for instance Mozilla, Netscape 4.0+, +# or Internet explorer 4.0+). Note that for large projects the tree generation +# can take a very long time. In such cases it is better to disable this feature. +# Windows users are probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimised for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assigments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_XML = NO + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = YES + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_PREDEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = ../include + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. + +PREDEFINED = \ + XERCES_CPP_NAMESPACE_QUALIFIER=xercesc:: \ + XERCES_CPP_NAMESPACE_BEGIN="namespace xercesc {" \ + XERCES_CPP_NAMESPACE_END="};" + +# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse the +# parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::addtions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES tag can be used to specify one or more tagfiles. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in Html, RTF and LaTeX) for classes with base or +# super classes. Setting the tag to NO turns the diagrams off. Note that this +# option is superceded by the HAVE_DOT option below. This is only a fallback. It is +# recommended to install and use dot, since it yield more powerful graphs. + +CLASS_DIAGRAMS = YES + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = YES + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found on the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermedate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::addtions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO + +# The CGI_NAME tag should be the name of the CGI script that +# starts the search engine (doxysearch) with the correct parameters. +# A script with this name will be generated by doxygen. + +CGI_NAME = search.cgi + +# The CGI_URL tag should be the absolute URL to the directory where the +# cgi binaries are located. See the documentation of your http daemon for +# details. + +CGI_URL = + +# The DOC_URL tag should be the absolute URL to the directory where the +# documentation is located. If left blank the absolute path to the +# documentation, with file:// prepended to it, will be used. + +DOC_URL = + +# The DOC_ABSPATH tag should be the absolute path to the directory where the +# documentation is located. If left blank the directory on the local machine +# will be used. + +DOC_ABSPATH = + +# The BIN_ABSPATH tag must point to the directory where the doxysearch binary +# is installed. + +BIN_ABSPATH = /usr/local/bin/ + +# The EXT_DOC_PATHS tag can be used to specify one or more paths to +# documentation generated for other projects. This allows doxysearch to search +# the documentation for these projects as well. + +EXT_DOC_PATHS = diff --git a/docs/Doxyfile.dom3api.in b/docs/Doxyfile.dom3api.in new file mode 100644 index 00000000..cf58981e --- /dev/null +++ b/docs/Doxyfile.dom3api.in @@ -0,0 +1,1001 @@ +# Doxyfile 1.2.18 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# General configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = "XQilla DOM Level 3 API" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = 1.0 + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = . + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, +# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en +# (Japanese with english messages), Korean, Norwegian, Polish, Portuguese, +# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish and Ukrainian. + +OUTPUT_LANGUAGE = English + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these class will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = YES + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited +# members of a class in the documentation of that class as if those members were +# ordinary class members. Constructors, destructors and assignment operators of +# the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. It is allowed to use relative paths in the argument list. + +STRIP_FROM_PATH = + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower case letters. If set to YES upper case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# users are adviced to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explict @brief command for a brief description. + +JAVADOC_AUTOBRIEF = YES + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# reimplements. + +INHERIT_DOCS = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consist of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. +# For instance some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources +# only. Doxygen will then generate output that is more tailored for Java. +# For instance namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = \ +../include/xqilla/dom-api \ +../include/xqilla/utils/XQillaPlatformUtils.hpp \ +%xerces_include%/xercesc/framework/MemoryManager.hpp \ +%xerces_include%/xercesc/util/PlatformUtils.hpp \ +%xerces_include%/xercesc/dom/ + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp +# *.h++ *.idl *.odl + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories +# that are symbolic links (a Unix filesystem feature) are excluded from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. + +EXCLUDE_PATTERNS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. + +INPUT_FILTER = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 3 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = dom3-api + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output dir. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non empty doxygen will try to run +# the html help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the Html help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript and frames is required (for instance Mozilla, Netscape 4.0+, +# or Internet explorer 4.0+). Note that for large projects the tree generation +# can take a very long time. In such cases it is better to disable this feature. +# Windows users are probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimised for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assigments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_XML = NO + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = YES + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_PREDEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = ../include + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. + +PREDEFINED = \ + XERCES_CPP_NAMESPACE_QUALIFIER=xercesc:: \ + XERCES_CPP_NAMESPACE_BEGIN="namespace xercesc {" \ + XERCES_CPP_NAMESPACE_END="};" + +# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse the +# parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::addtions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES tag can be used to specify one or more tagfiles. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in Html, RTF and LaTeX) for classes with base or +# super classes. Setting the tag to NO turns the diagrams off. Note that this +# option is superceded by the HAVE_DOT option below. This is only a fallback. It is +# recommended to install and use dot, since it yield more powerful graphs. + +CLASS_DIAGRAMS = YES + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = YES + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found on the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermedate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::addtions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO + +# The CGI_NAME tag should be the name of the CGI script that +# starts the search engine (doxysearch) with the correct parameters. +# A script with this name will be generated by doxygen. + +CGI_NAME = search.cgi + +# The CGI_URL tag should be the absolute URL to the directory where the +# cgi binaries are located. See the documentation of your http daemon for +# details. + +CGI_URL = + +# The DOC_URL tag should be the absolute URL to the directory where the +# documentation is located. If left blank the absolute path to the +# documentation, with file:// prepended to it, will be used. + +DOC_URL = + +# The DOC_ABSPATH tag should be the absolute path to the directory where the +# documentation is located. If left blank the directory on the local machine +# will be used. + +DOC_ABSPATH = + +# The BIN_ABSPATH tag must point to the directory where the doxysearch binary +# is installed. + +BIN_ABSPATH = /usr/local/bin/ + +# The EXT_DOC_PATHS tag can be used to specify one or more paths to +# documentation generated for other projects. This allows doxysearch to search +# the documentation for these projects as well. + +EXT_DOC_PATHS = diff --git a/docs/Doxyfile.simpleapi.in b/docs/Doxyfile.simpleapi.in new file mode 100644 index 00000000..329e7399 --- /dev/null +++ b/docs/Doxyfile.simpleapi.in @@ -0,0 +1,1024 @@ +# Doxyfile 1.2.18 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# General configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = "XQilla Simple API" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = 1.0 + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = . + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, +# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en +# (Japanese with english messages), Korean, Norwegian, Polish, Portuguese, +# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish and Ukrainian. + +OUTPUT_LANGUAGE = English + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these class will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = YES + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited +# members of a class in the documentation of that class as if those members were +# ordinary class members. Constructors, destructors and assignment operators of +# the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. It is allowed to use relative paths in the argument list. + +STRIP_FROM_PATH = + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower case letters. If set to YES upper case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# users are adviced to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explict @brief command for a brief description. + +JAVADOC_AUTOBRIEF = YES + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# reimplements. + +INHERIT_DOCS = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consist of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. +# For instance some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources +# only. Doxygen will then generate output that is more tailored for Java. +# For instance namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = \ +../include/xqilla/simple-api \ +../include/xqilla/context \ +../include/xqilla/items \ +../include/xqilla/framework/ReferenceCounted.hpp \ +../include/xqilla/framework/XPath2MemoryManager.hpp \ +../include/xqilla/framework/StringPool.hpp \ +../include/xqilla/runtime/Sequence.hpp \ +../include/xqilla/runtime/Result.hpp \ +../include/xqilla/ast/StaticResolutionContext.hpp \ +../include/xqilla/exceptions/XQException.hpp \ +%xerces_include%/xercesc/framework/MemoryManager.hpp \ +%xerces_include%/xercesc/util/XMemory.hpp \ +%xerces_include%/xercesc/dom/DOMNode.hpp \ +%xerces_include%/xercesc/dom/DOMDocument.hpp \ +%xerces_include%/xercesc/dom/DOMXPathNSResolver.hpp \ +%xerces_include%/xercesc/util/XMLEntityResolver.hpp \ +%xerces_include%/xercesc/util/PlatformUtils.hpp \ +%xerces_include%/xercesc/sax/InputSource.hpp \ +%xerces_include%/xercesc/framework/LocalFileInputSource.hpp \ +%xerces_include%/xercesc/framework/MemBufInputSource.hpp \ +%xerces_include%/xercesc/framework/StdInInputSource.hpp \ +%xerces_include%/xercesc/framework/URLInputSource.hpp + + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp +# *.h++ *.idl *.odl + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = \ +../include/xqilla/items/ItemConstructor.hpp \ +../include/xqilla/items/AnyAtomicTypeConstructor.hpp \ +../include/xqilla/items/ATQNameConstructor.hpp \ +../include/xqilla/items/DatatypeLookup.hpp \ +../include/xqilla/items/DatatypeFactory.hpp + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories +# that are symbolic links (a Unix filesystem feature) are excluded from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. + +EXCLUDE_PATTERNS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. + +INPUT_FILTER = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 3 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = simple-api + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output dir. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non empty doxygen will try to run +# the html help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the Html help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript and frames is required (for instance Mozilla, Netscape 4.0+, +# or Internet explorer 4.0+). Note that for large projects the tree generation +# can take a very long time. In such cases it is better to disable this feature. +# Windows users are probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = NO + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = NO + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimised for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assigments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_XML = NO + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = YES + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_PREDEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = ../include + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. + +PREDEFINED = \ + XERCES_CPP_NAMESPACE_QUALIFIER=xercesc:: \ + XERCES_CPP_NAMESPACE_BEGIN="namespace xercesc {" \ + XERCES_CPP_NAMESPACE_END="};" + +# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse the +# parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::addtions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES tag can be used to specify one or more tagfiles. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in Html, RTF and LaTeX) for classes with base or +# super classes. Setting the tag to NO turns the diagrams off. Note that this +# option is superceded by the HAVE_DOT option below. This is only a fallback. It is +# recommended to install and use dot, since it yield more powerful graphs. + +CLASS_DIAGRAMS = YES + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = YES + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found on the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermedate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::addtions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO + +# The CGI_NAME tag should be the name of the CGI script that +# starts the search engine (doxysearch) with the correct parameters. +# A script with this name will be generated by doxygen. + +CGI_NAME = search.cgi + +# The CGI_URL tag should be the absolute URL to the directory where the +# cgi binaries are located. See the documentation of your http daemon for +# details. + +CGI_URL = + +# The DOC_URL tag should be the absolute URL to the directory where the +# documentation is located. If left blank the absolute path to the +# documentation, with file:// prepended to it, will be used. + +DOC_URL = + +# The DOC_ABSPATH tag should be the absolute path to the directory where the +# documentation is located. If left blank the directory on the local machine +# will be used. + +DOC_ABSPATH = + +# The BIN_ABSPATH tag must point to the directory where the doxysearch binary +# is installed. + +BIN_ABSPATH = /usr/local/bin/ + +# The EXT_DOC_PATHS tag can be used to specify one or more paths to +# documentation generated for other projects. This allows doxysearch to search +# the documentation for these projects as well. + +EXT_DOC_PATHS = diff --git a/docs/dom3-api/DOMAttr_8hpp-source.html b/docs/dom3-api/DOMAttr_8hpp-source.html new file mode 100644 index 00000000..b12d528c --- /dev/null +++ b/docs/dom3-api/DOMAttr_8hpp-source.html @@ -0,0 +1,108 @@ + + +XQilla DOM Level 3 API: DOMAttr.hpp Source File + + + + + + +

DOMAttr.hpp

Go to the documentation of this file.
00001 #ifndef DOMAttr_HEADER_GUARD_
+00002 #define DOMAttr_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMAttr.hpp 176280 2005-01-07 15:32:34Z amassari $
+00022  */
+00023 
+00024 
+00025 #include <xercesc/util/XercesDefs.hpp>
+00026 #include <xercesc/dom/DOMNode.hpp>
+00027 
+00028 XERCES_CPP_NAMESPACE_BEGIN
+00029 
+00030 class DOMElement;
+00031 class DOMTypeInfo;
+00032 
+00057 class CDOM_EXPORT DOMAttr: public DOMNode {
+00058 protected:
+00059     // -----------------------------------------------------------------------
+00060     //  Hidden constructors
+00061     // -----------------------------------------------------------------------
+00064     DOMAttr() {}
+00065     DOMAttr(const DOMAttr &other) : DOMNode(other) {}
+00067 
+00068 private:    
+00069     // -----------------------------------------------------------------------
+00070     // Unimplemented constructors and operators
+00071     // -----------------------------------------------------------------------
+00074     DOMAttr & operator = (const DOMAttr &);
+00076 
+00077 public:
+00078     // -----------------------------------------------------------------------
+00079     //  All constructors are hidden, just the destructor is available
+00080     // -----------------------------------------------------------------------
+00087     virtual ~DOMAttr() {};
+00089 
+00090     // -----------------------------------------------------------------------
+00091     //  Virtual DOMAttr interface
+00092     // -----------------------------------------------------------------------
+00095     // -----------------------------------------------------------------------
+00096     //  Getter methods
+00097     // -----------------------------------------------------------------------
+00102     virtual const XMLCh *       getName() const = 0;
+00103 
+00112     virtual bool            getSpecified() const = 0;
+00113 
+00121     virtual const XMLCh *       getValue() const = 0;
+00122 
+00123     // -----------------------------------------------------------------------
+00124     //  Setter methods
+00125     // -----------------------------------------------------------------------
+00133     virtual void            setValue(const XMLCh *value) = 0;
+00135 
+00144     virtual DOMElement     *getOwnerElement() const = 0;
+00146 
+00159     virtual bool            isId() const = 0;
+00160 
+00161 
+00170     virtual const DOMTypeInfo * getTypeInfo() const = 0;
+00171 
+00173 
+00174 };
+00175 
+00176 XERCES_CPP_NAMESPACE_END
+00177 
+00178 #endif
+00179 
+00180 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMAttr_8hpp.html b/docs/dom3-api/DOMAttr_8hpp.html new file mode 100644 index 00000000..c97a33ac --- /dev/null +++ b/docs/dom3-api/DOMAttr_8hpp.html @@ -0,0 +1,51 @@ + + +XQilla DOM Level 3 API: DOMAttr.hpp File Reference + + + + + + +

DOMAttr.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xercesc/dom/DOMNode.hpp>
+ +

+Include dependency graph for DOMAttr.hpp:

+ + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMAttr
 The DOMAttr class refers to an attribute of an XML element. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMAttr_8hpp__dep__incl.map b/docs/dom3-api/DOMAttr_8hpp__dep__incl.map new file mode 100644 index 00000000..ab425a5a --- /dev/null +++ b/docs/dom3-api/DOMAttr_8hpp__dep__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DOM_8hpp.html 178,8 256,32 +rect $StDOMNode_8hpp.html 156,56 278,80 diff --git a/docs/dom3-api/DOMAttr_8hpp__dep__incl.md5 b/docs/dom3-api/DOMAttr_8hpp__dep__incl.md5 new file mode 100644 index 00000000..345e66dc --- /dev/null +++ b/docs/dom3-api/DOMAttr_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +bc25e75225291bc409b18228f5d1683a \ No newline at end of file diff --git a/docs/dom3-api/DOMAttr_8hpp__dep__incl.png b/docs/dom3-api/DOMAttr_8hpp__dep__incl.png new file mode 100644 index 00000000..e430b3e2 Binary files /dev/null and b/docs/dom3-api/DOMAttr_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMAttr_8hpp__incl.map b/docs/dom3-api/DOMAttr_8hpp__incl.map new file mode 100644 index 00000000..3822b700 --- /dev/null +++ b/docs/dom3-api/DOMAttr_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOMNode_8hpp.html 154,58 346,82 diff --git a/docs/dom3-api/DOMAttr_8hpp__incl.md5 b/docs/dom3-api/DOMAttr_8hpp__incl.md5 new file mode 100644 index 00000000..6ec5bc57 --- /dev/null +++ b/docs/dom3-api/DOMAttr_8hpp__incl.md5 @@ -0,0 +1 @@ +a482cafae0f1e80865e0fec2f3d7074c \ No newline at end of file diff --git a/docs/dom3-api/DOMAttr_8hpp__incl.png b/docs/dom3-api/DOMAttr_8hpp__incl.png new file mode 100644 index 00000000..cc4af080 Binary files /dev/null and b/docs/dom3-api/DOMAttr_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMBuilder_8hpp-source.html b/docs/dom3-api/DOMBuilder_8hpp-source.html new file mode 100644 index 00000000..35feccb6 --- /dev/null +++ b/docs/dom3-api/DOMBuilder_8hpp-source.html @@ -0,0 +1,189 @@ + + +XQilla DOM Level 3 API: DOMBuilder.hpp Source File + + + + + + +

DOMBuilder.hpp

Go to the documentation of this file.
00001 #ifndef DOMBuilder_HEADER_GUARD_
+00002 #define DOMBuilder_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMBuilder.hpp 176026 2004-09-08 13:57:07Z peiyongz $
+00022  *
+00023  */
+00024 
+00025 
+00026 #include <xercesc/util/XercesDefs.hpp>
+00027 
+00028 XERCES_CPP_NAMESPACE_BEGIN
+00029 
+00030 
+00031 class DOMErrorHandler;
+00032 class DOMEntityResolver;
+00033 class DOMInputSource;
+00034 class DOMBuilderFilter;
+00035 class DOMNode;
+00036 class DOMDocument;
+00037 class Grammar;
+00038 
+00049 class CDOM_EXPORT DOMBuilder
+00050 {
+00051 protected :
+00052     // -----------------------------------------------------------------------
+00053     //  Hidden constructors
+00054     // -----------------------------------------------------------------------
+00057     DOMBuilder() {};
+00059 
+00060 private:    
+00061     // -----------------------------------------------------------------------
+00062     // Unimplemented constructors and operators
+00063     // -----------------------------------------------------------------------
+00066     DOMBuilder(const DOMBuilder &);
+00067     DOMBuilder & operator = (const DOMBuilder &);
+00069 
+00070 public:
+00071     // -----------------------------------------------------------------------
+00072     //  All constructors are hidden, just the destructor is available
+00073     // -----------------------------------------------------------------------
+00080     virtual ~DOMBuilder() {};
+00082 
+00083     // -----------------------------------------------------------------------
+00084     //  Class types
+00085     // -----------------------------------------------------------------------
+00115     enum ActionType
+00116     {
+00117         ACTION_REPLACE            = 1,
+00118         ACTION_APPEND_AS_CHILDREN = 2,
+00119         ACTION_INSERT_AFTER       = 3,
+00120         ACTION_INSERT_BEFORE      = 4
+00121     };
+00123 
+00124     // -----------------------------------------------------------------------
+00125     //  Virtual DOMBuilder interface
+00126     // -----------------------------------------------------------------------
+00129 
+00130     // -----------------------------------------------------------------------
+00131     //  Getter methods
+00132     // -----------------------------------------------------------------------
+00133 
+00145     virtual DOMErrorHandler* getErrorHandler() = 0;
+00146 
+00158     virtual const DOMErrorHandler* getErrorHandler() const = 0;
+00159 
+00171     virtual DOMEntityResolver* getEntityResolver() = 0;
+00172 
+00184     virtual const DOMEntityResolver* getEntityResolver() const = 0;
+00185 
+00197     virtual DOMBuilderFilter* getFilter() = 0;
+00198 
+00210     virtual const DOMBuilderFilter* getFilter() const = 0;
+00211 
+00212     // -----------------------------------------------------------------------
+00213     //  Setter methods
+00214     // -----------------------------------------------------------------------
+00232     virtual void setErrorHandler(DOMErrorHandler* const handler) = 0;
+00233 
+00253     virtual void setEntityResolver(DOMEntityResolver* const handler) = 0;
+00254 
+00276     virtual void setFilter(DOMBuilderFilter* const filter) = 0;
+00277 
+00278     // -----------------------------------------------------------------------
+00279     //  Feature methods
+00280     // -----------------------------------------------------------------------
+00304     virtual void setFeature(const XMLCh* const name, const bool state) = 0;
+00305 
+00321     virtual bool getFeature(const XMLCh* const name) const = 0;
+00322 
+00339     virtual bool canSetFeature(const XMLCh* const name, const bool state) const = 0;
+00340 
+00341     // -----------------------------------------------------------------------
+00342     //  Parsing methods
+00343     // -----------------------------------------------------------------------
+00374     virtual DOMDocument* parse(const DOMInputSource& source) = 0;
+00375 
+00403     virtual DOMDocument* parseURI(const XMLCh* const systemId) = 0;
+00404 
+00431     virtual DOMDocument* parseURI(const char* const systemId) = 0;
+00432 
+00461     virtual void parseWithContext
+00462     (
+00463         const   DOMInputSource& source
+00464         ,       DOMNode* const contextNode
+00465         , const short action
+00466     ) = 0;
+00468 
+00469     // -----------------------------------------------------------------------
+00470     //  Non-standard Extension
+00471     // -----------------------------------------------------------------------
+00474 
+00496     virtual void* getProperty(const XMLCh* const name) const = 0 ;
+00497 
+00519     virtual void setProperty(const XMLCh* const name, void* value) = 0 ;
+00520 
+00527     virtual void              release() = 0;
+00528 
+00552     virtual void              resetDocumentPool() = 0;
+00553 
+00581     virtual Grammar* loadGrammar(const DOMInputSource& source,
+00582                                  const short grammarType,
+00583                                  const bool toCache = false) = 0;
+00584 
+00610     virtual Grammar* loadGrammar(const XMLCh* const systemId,
+00611                                  const short grammarType,
+00612                                  const bool toCache = false) = 0;
+00613 
+00639     virtual Grammar* loadGrammar(const char* const systemId,
+00640                                  const short grammarType,
+00641                                  const bool toCache = false) = 0;
+00642 
+00649     virtual Grammar* getGrammar(const XMLCh* const nameSpaceKey) const = 0;
+00650 
+00656     virtual Grammar* getRootGrammar() const = 0;
+00657 
+00664     virtual const XMLCh* getURIText(unsigned int uriId) const = 0;
+00665 
+00669     virtual void resetCachedGrammarPool() = 0;
+00670 
+00676     virtual unsigned int getSrcOffset() const = 0;
+00677 
+00679 
+00680 };
+00681 
+00682 
+00683 XERCES_CPP_NAMESPACE_END
+00684 
+00685 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMBuilder_8hpp.html b/docs/dom3-api/DOMBuilder_8hpp.html new file mode 100644 index 00000000..ae918b4f --- /dev/null +++ b/docs/dom3-api/DOMBuilder_8hpp.html @@ -0,0 +1,46 @@ + + +XQilla DOM Level 3 API: DOMBuilder.hpp File Reference + + + + + + +

DOMBuilder.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for DOMBuilder.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMBuilder
 DOMBuilder provides an API for parsing XML documents and building the corresponding DOM document tree. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMBuilder_8hpp__dep__incl.map b/docs/dom3-api/DOMBuilder_8hpp__dep__incl.map new file mode 100644 index 00000000..bbbdc59b --- /dev/null +++ b/docs/dom3-api/DOMBuilder_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 177,8 254,32 diff --git a/docs/dom3-api/DOMBuilder_8hpp__dep__incl.md5 b/docs/dom3-api/DOMBuilder_8hpp__dep__incl.md5 new file mode 100644 index 00000000..575b78c0 --- /dev/null +++ b/docs/dom3-api/DOMBuilder_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +e7603987914a1b8ca9886879587df3a8 \ No newline at end of file diff --git a/docs/dom3-api/DOMBuilder_8hpp__dep__incl.png b/docs/dom3-api/DOMBuilder_8hpp__dep__incl.png new file mode 100644 index 00000000..09a5d2b4 Binary files /dev/null and b/docs/dom3-api/DOMBuilder_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMBuilder_8hpp__incl.map b/docs/dom3-api/DOMBuilder_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMBuilder_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMBuilder_8hpp__incl.md5 b/docs/dom3-api/DOMBuilder_8hpp__incl.md5 new file mode 100644 index 00000000..2720e728 --- /dev/null +++ b/docs/dom3-api/DOMBuilder_8hpp__incl.md5 @@ -0,0 +1 @@ +74e40be8d268259a61143df82fe80030 \ No newline at end of file diff --git a/docs/dom3-api/DOMBuilder_8hpp__incl.png b/docs/dom3-api/DOMBuilder_8hpp__incl.png new file mode 100644 index 00000000..dfe6d08a Binary files /dev/null and b/docs/dom3-api/DOMBuilder_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMCDATASection_8hpp-source.html b/docs/dom3-api/DOMCDATASection_8hpp-source.html new file mode 100644 index 00000000..9b3b018d --- /dev/null +++ b/docs/dom3-api/DOMCDATASection_8hpp-source.html @@ -0,0 +1,81 @@ + + +XQilla DOM Level 3 API: DOMCDATASection.hpp Source File + + + + + + +

DOMCDATASection.hpp

Go to the documentation of this file.
00001 #ifndef DOMCDataSection_HEADER_GUARD_
+00002 #define DOMCDataSection_HEADER_GUARD_
+00003 
+00004 
+00005 /*
+00006  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00007  * 
+00008  * Licensed under the Apache License, Version 2.0 (the "License");
+00009  * you may not use this file except in compliance with the License.
+00010  * You may obtain a copy of the License at
+00011  * 
+00012  *      http://www.apache.org/licenses/LICENSE-2.0
+00013  * 
+00014  * Unless required by applicable law or agreed to in writing, software
+00015  * distributed under the License is distributed on an "AS IS" BASIS,
+00016  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00017  * See the License for the specific language governing permissions and
+00018  * limitations under the License.
+00019  */
+00020 
+00021 /*
+00022  * $Id: DOMCDATASection.hpp 176280 2005-01-07 15:32:34Z amassari $
+00023  */
+00024 
+00025 #include <xercesc/util/XercesDefs.hpp>
+00026 #include <xercesc/dom/DOMText.hpp>
+00027 
+00028 XERCES_CPP_NAMESPACE_BEGIN
+00029 
+00030 
+00065 class CDOM_EXPORT DOMCDATASection: public DOMText {
+00066 protected:
+00067     // -----------------------------------------------------------------------
+00068     //  Hidden constructors
+00069     // -----------------------------------------------------------------------
+00072     DOMCDATASection() {}
+00073     DOMCDATASection(const DOMCDATASection &other) : DOMText(other) {}
+00075 
+00076 private:
+00077     // -----------------------------------------------------------------------
+00078     // Unimplemented constructors and operators
+00079     // -----------------------------------------------------------------------
+00082     DOMCDATASection & operator = (const DOMCDATASection &);
+00084 
+00085 public:
+00086     // -----------------------------------------------------------------------
+00087     //  All constructors are hidden, just the destructor is available
+00088     // -----------------------------------------------------------------------
+00095     virtual ~DOMCDATASection() {};
+00097 
+00098 };
+00099 
+00100 XERCES_CPP_NAMESPACE_END
+00101 
+00102 #endif
+00103 
+00104 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMCDATASection_8hpp.html b/docs/dom3-api/DOMCDATASection_8hpp.html new file mode 100644 index 00000000..b676ab50 --- /dev/null +++ b/docs/dom3-api/DOMCDATASection_8hpp.html @@ -0,0 +1,51 @@ + + +XQilla DOM Level 3 API: DOMCDATASection.hpp File Reference + + + + + + +

DOMCDATASection.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xercesc/dom/DOMText.hpp>
+ +

+Include dependency graph for DOMCDATASection.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMCDATASection
 CDATA sections are used to escape blocks of text containing characters that would otherwise be regarded as markup. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMCDATASection_8hpp__dep__incl.map b/docs/dom3-api/DOMCDATASection_8hpp__dep__incl.map new file mode 100644 index 00000000..be033c98 --- /dev/null +++ b/docs/dom3-api/DOMCDATASection_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 222,8 299,32 diff --git a/docs/dom3-api/DOMCDATASection_8hpp__dep__incl.md5 b/docs/dom3-api/DOMCDATASection_8hpp__dep__incl.md5 new file mode 100644 index 00000000..0a05a4ee --- /dev/null +++ b/docs/dom3-api/DOMCDATASection_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +6477c6886a2f3c7843b67f02068dfec1 \ No newline at end of file diff --git a/docs/dom3-api/DOMCDATASection_8hpp__dep__incl.png b/docs/dom3-api/DOMCDATASection_8hpp__dep__incl.png new file mode 100644 index 00000000..d3875a25 Binary files /dev/null and b/docs/dom3-api/DOMCDATASection_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMCDATASection_8hpp__incl.map b/docs/dom3-api/DOMCDATASection_8hpp__incl.map new file mode 100644 index 00000000..69ea19f9 --- /dev/null +++ b/docs/dom3-api/DOMCDATASection_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DOMText_8hpp.html 221,59 405,83 +rect $DOMCharacterData_8hpp.html 454,109 700,133 diff --git a/docs/dom3-api/DOMCDATASection_8hpp__incl.md5 b/docs/dom3-api/DOMCDATASection_8hpp__incl.md5 new file mode 100644 index 00000000..83ba77d7 --- /dev/null +++ b/docs/dom3-api/DOMCDATASection_8hpp__incl.md5 @@ -0,0 +1 @@ +32fd56c14bb4b8713fd53ca23f889c42 \ No newline at end of file diff --git a/docs/dom3-api/DOMCDATASection_8hpp__incl.png b/docs/dom3-api/DOMCDATASection_8hpp__incl.png new file mode 100644 index 00000000..0216c752 Binary files /dev/null and b/docs/dom3-api/DOMCDATASection_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMCharacterData_8hpp-source.html b/docs/dom3-api/DOMCharacterData_8hpp-source.html new file mode 100644 index 00000000..b034909d --- /dev/null +++ b/docs/dom3-api/DOMCharacterData_8hpp-source.html @@ -0,0 +1,109 @@ + + +XQilla DOM Level 3 API: DOMCharacterData.hpp Source File + + + + + + +

DOMCharacterData.hpp

Go to the documentation of this file.
00001 #ifndef DOMCharacterData_HEADER_GUARD_
+00002 #define DOMCharacterData_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMCharacterData.hpp 176280 2005-01-07 15:32:34Z amassari $
+00022  */
+00023 
+00024 #include <xercesc/util/XercesDefs.hpp>
+00025 #include <xercesc/dom/DOMNode.hpp>
+00026 
+00027 XERCES_CPP_NAMESPACE_BEGIN
+00028 
+00029 
+00045 class CDOM_EXPORT DOMCharacterData: public DOMNode {
+00046 protected:
+00047     // -----------------------------------------------------------------------
+00048     //  Hidden constructors
+00049     // -----------------------------------------------------------------------
+00052     DOMCharacterData() {}
+00053     DOMCharacterData(const DOMCharacterData &other) : DOMNode(other) {}
+00055 
+00056 private:
+00057     // -----------------------------------------------------------------------
+00058     // Unimplemented constructors and operators
+00059     // -----------------------------------------------------------------------
+00062     DOMCharacterData & operator = (const DOMCharacterData &);
+00064 
+00065 public:
+00066     // -----------------------------------------------------------------------
+00067     //  All constructors are hidden, just the destructor is available
+00068     // -----------------------------------------------------------------------
+00075     virtual ~DOMCharacterData() {};
+00077 
+00078     // -----------------------------------------------------------------------
+00079     //  Virtual DOMCharacterData interface
+00080     // -----------------------------------------------------------------------
+00083     // -----------------------------------------------------------------------
+00084     //  Getter methods
+00085     // -----------------------------------------------------------------------
+00099     virtual const XMLCh *     getData() const = 0;
+00100 
+00109     virtual XMLSize_t       getLength() const = 0;
+00110 
+00125     virtual const XMLCh *     substringData(XMLSize_t offset,
+00126                                      XMLSize_t count) const = 0;
+00127 
+00128     // -----------------------------------------------------------------------
+00129     //  String methods
+00130     // -----------------------------------------------------------------------
+00141     virtual void               appendData(const XMLCh *arg) = 0;
+00142 
+00154     virtual void               insertData(XMLSize_t offset, const  XMLCh *arg) = 0;
+00155 
+00173     virtual void               deleteData(XMLSize_t offset,
+00174                                   XMLSize_t count) = 0;
+00175 
+00195     virtual void               replaceData(XMLSize_t offset,
+00196                                    XMLSize_t count,
+00197                                    const XMLCh *arg) = 0;
+00198 
+00205     virtual void               setData(const XMLCh *data) = 0;
+00207 
+00208 };
+00209 
+00210 XERCES_CPP_NAMESPACE_END
+00211 
+00212 #endif
+00213 
+00214 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMCharacterData_8hpp.html b/docs/dom3-api/DOMCharacterData_8hpp.html new file mode 100644 index 00000000..09396159 --- /dev/null +++ b/docs/dom3-api/DOMCharacterData_8hpp.html @@ -0,0 +1,53 @@ + + +XQilla DOM Level 3 API: DOMCharacterData.hpp File Reference + + + + + + +

DOMCharacterData.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xercesc/dom/DOMNode.hpp>
+ +

+Include dependency graph for DOMCharacterData.hpp:

+ + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMCharacterData
 The DOMCharacterData interface extends DOMNode with a set of attributes and methods for accessing character data in the DOM. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMCharacterData_8hpp__dep__incl.map b/docs/dom3-api/DOMCharacterData_8hpp__dep__incl.map new file mode 100644 index 00000000..22ab443e --- /dev/null +++ b/docs/dom3-api/DOMCharacterData_8hpp__dep__incl.map @@ -0,0 +1,5 @@ +base referer +rect $DOM_8hpp.html 588,87 665,111 +rect $DOMComment_8hpp.html 388,62 524,86 +rect $DOMText_8hpp.html 221,113 325,137 +rect $DOMCDATASection_8hpp.html 373,161 538,185 diff --git a/docs/dom3-api/DOMCharacterData_8hpp__dep__incl.md5 b/docs/dom3-api/DOMCharacterData_8hpp__dep__incl.md5 new file mode 100644 index 00000000..636b749d --- /dev/null +++ b/docs/dom3-api/DOMCharacterData_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +fc0c3cb787e1279c1cd05b6b63ffcaea \ No newline at end of file diff --git a/docs/dom3-api/DOMCharacterData_8hpp__dep__incl.png b/docs/dom3-api/DOMCharacterData_8hpp__dep__incl.png new file mode 100644 index 00000000..a1b71784 Binary files /dev/null and b/docs/dom3-api/DOMCharacterData_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMCharacterData_8hpp__incl.map b/docs/dom3-api/DOMCharacterData_8hpp__incl.map new file mode 100644 index 00000000..edc872e8 --- /dev/null +++ b/docs/dom3-api/DOMCharacterData_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOMNode_8hpp.html 221,58 413,82 diff --git a/docs/dom3-api/DOMCharacterData_8hpp__incl.md5 b/docs/dom3-api/DOMCharacterData_8hpp__incl.md5 new file mode 100644 index 00000000..c286d3f7 --- /dev/null +++ b/docs/dom3-api/DOMCharacterData_8hpp__incl.md5 @@ -0,0 +1 @@ +056c883c499212cb0423bb21f50a0817 \ No newline at end of file diff --git a/docs/dom3-api/DOMCharacterData_8hpp__incl.png b/docs/dom3-api/DOMCharacterData_8hpp__incl.png new file mode 100644 index 00000000..a6917c31 Binary files /dev/null and b/docs/dom3-api/DOMCharacterData_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMComment_8hpp-source.html b/docs/dom3-api/DOMComment_8hpp-source.html new file mode 100644 index 00000000..f757825c --- /dev/null +++ b/docs/dom3-api/DOMComment_8hpp-source.html @@ -0,0 +1,79 @@ + + +XQilla DOM Level 3 API: DOMComment.hpp Source File + + + + + + +

DOMComment.hpp

Go to the documentation of this file.
00001 #ifndef DOMComment_HEADER_GUARD_
+00002 #define DOMComment_HEADER_GUARD_
+00003 
+00004 
+00005 /*
+00006  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00007  * 
+00008  * Licensed under the Apache License, Version 2.0 (the "License");
+00009  * you may not use this file except in compliance with the License.
+00010  * You may obtain a copy of the License at
+00011  * 
+00012  *      http://www.apache.org/licenses/LICENSE-2.0
+00013  * 
+00014  * Unless required by applicable law or agreed to in writing, software
+00015  * distributed under the License is distributed on an "AS IS" BASIS,
+00016  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00017  * See the License for the specific language governing permissions and
+00018  * limitations under the License.
+00019  */
+00020 
+00021 /*
+00022  * $Id: DOMComment.hpp 176081 2004-09-26 15:38:03Z gareth $
+00023  */
+00024 
+00025 #include <xercesc/util/XercesDefs.hpp>
+00026 #include <xercesc/dom/DOMCharacterData.hpp>
+00027 
+00028 XERCES_CPP_NAMESPACE_BEGIN
+00029 
+00030 
+00039 class CDOM_EXPORT DOMComment: public DOMCharacterData {
+00040 protected:
+00041     // -----------------------------------------------------------------------
+00042     //  Hidden constructors
+00043     // -----------------------------------------------------------------------
+00046     DOMComment() {};
+00048 
+00049 private:
+00050     // -----------------------------------------------------------------------
+00051     // Unimplemented constructors and operators
+00052     // -----------------------------------------------------------------------
+00055     DOMComment(const DOMComment &);
+00056     DOMComment & operator = (const DOMComment &);
+00058 
+00059 public:
+00060     // -----------------------------------------------------------------------
+00061     //  All constructors are hidden, just the destructor is available
+00062     // -----------------------------------------------------------------------
+00069     virtual ~DOMComment() {};
+00071 };
+00072 
+00073 XERCES_CPP_NAMESPACE_END
+00074 
+00075 #endif
+00076 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMComment_8hpp.html b/docs/dom3-api/DOMComment_8hpp.html new file mode 100644 index 00000000..b5c1ef0e --- /dev/null +++ b/docs/dom3-api/DOMComment_8hpp.html @@ -0,0 +1,51 @@ + + +XQilla DOM Level 3 API: DOMComment.hpp File Reference + + + + + + +

DOMComment.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xercesc/dom/DOMCharacterData.hpp>
+ +

+Include dependency graph for DOMComment.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMComment
 This interface inherits from CharacterData and represents the content of a comment, i.e., all the characters between the starting ' <!--' and ending '-->'. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMComment_8hpp__dep__incl.map b/docs/dom3-api/DOMComment_8hpp__dep__incl.map new file mode 100644 index 00000000..fdfb6a7e --- /dev/null +++ b/docs/dom3-api/DOMComment_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 196,8 273,32 diff --git a/docs/dom3-api/DOMComment_8hpp__dep__incl.md5 b/docs/dom3-api/DOMComment_8hpp__dep__incl.md5 new file mode 100644 index 00000000..bd3c6307 --- /dev/null +++ b/docs/dom3-api/DOMComment_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +cb785ee3d1ce440f41fc048046a57492 \ No newline at end of file diff --git a/docs/dom3-api/DOMComment_8hpp__dep__incl.png b/docs/dom3-api/DOMComment_8hpp__dep__incl.png new file mode 100644 index 00000000..faa41776 Binary files /dev/null and b/docs/dom3-api/DOMComment_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMComment_8hpp__incl.map b/docs/dom3-api/DOMComment_8hpp__incl.map new file mode 100644 index 00000000..ada94c3f --- /dev/null +++ b/docs/dom3-api/DOMComment_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DOMCharacterData_8hpp.html 196,59 441,83 +rect $DOMNode_8hpp.html 490,109 682,133 diff --git a/docs/dom3-api/DOMComment_8hpp__incl.md5 b/docs/dom3-api/DOMComment_8hpp__incl.md5 new file mode 100644 index 00000000..59f7c953 --- /dev/null +++ b/docs/dom3-api/DOMComment_8hpp__incl.md5 @@ -0,0 +1 @@ +c04e69a17832ae3b969fda3685d46596 \ No newline at end of file diff --git a/docs/dom3-api/DOMComment_8hpp__incl.png b/docs/dom3-api/DOMComment_8hpp__incl.png new file mode 100644 index 00000000..f46d308a Binary files /dev/null and b/docs/dom3-api/DOMComment_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMConfiguration_8hpp-source.html b/docs/dom3-api/DOMConfiguration_8hpp-source.html new file mode 100644 index 00000000..aaa85ec2 --- /dev/null +++ b/docs/dom3-api/DOMConfiguration_8hpp-source.html @@ -0,0 +1,96 @@ + + +XQilla DOM Level 3 API: DOMConfiguration.hpp Source File + + + + + + +

DOMConfiguration.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright 2003,2004 The Apache Software Foundation.
+00003  * 
+00004  * Licensed under the Apache License, Version 2.0 (the "License");
+00005  * you may not use this file except in compliance with the License.
+00006  * You may obtain a copy of the License at
+00007  * 
+00008  *      http://www.apache.org/licenses/LICENSE-2.0
+00009  * 
+00010  * Unless required by applicable law or agreed to in writing, software
+00011  * distributed under the License is distributed on an "AS IS" BASIS,
+00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00013  * See the License for the specific language governing permissions and
+00014  * limitations under the License.
+00015  */
+00016 
+00017 #if !defined(DOMCONFIGURATION_HPP)
+00018 #define DOMCONFIGURATION_HPP
+00019 
+00020 //------------------------------------------------------------------------------------
+00021 //  Includes
+00022 //------------------------------------------------------------------------------------
+00023 
+00024 #include <xercesc/util/XMLString.hpp>
+00025 
+00026 XERCES_CPP_NAMESPACE_BEGIN
+00027 
+00417 class CDOM_EXPORT DOMConfiguration
+00418 {
+00419 protected:
+00420     //-----------------------------------------------------------------------------------
+00421     //  Constructor
+00422     //-----------------------------------------------------------------------------------
+00425     DOMConfiguration() {};
+00427 
+00428 private:
+00429     // -----------------------------------------------------------------------
+00430     // Unimplemented constructors and operators
+00431     // -----------------------------------------------------------------------
+00434     DOMConfiguration(const DOMConfiguration &);
+00435     DOMConfiguration & operator = (const DOMConfiguration &);
+00437 
+00438 public:
+00439 
+00440     // -----------------------------------------------------------------------
+00441     //  Setter methods
+00442     // -----------------------------------------------------------------------
+00443     
+00457     virtual void setParameter(const XMLCh* name, const void* value) = 0;
+00458 
+00459     // -----------------------------------------------------------------------
+00460     //  Getter methods
+00461     // -----------------------------------------------------------------------
+00472     virtual const void* getParameter(const XMLCh* name) const = 0;
+00473 
+00474                                         
+00475     // -----------------------------------------------------------------------
+00476     //  Query methods
+00477     // -----------------------------------------------------------------------
+00478 
+00488     virtual bool canSetParameter(const XMLCh* name, const void* value) const = 0;
+00489 
+00490     // -----------------------------------------------------------------------
+00491     //  All constructors are hidden, just the destructor is available
+00492     // -----------------------------------------------------------------------
+00499     virtual ~DOMConfiguration() {};
+00501 };
+00502         
+00503 XERCES_CPP_NAMESPACE_END
+00504 
+00505 #endif 
+00506 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMConfiguration_8hpp.html b/docs/dom3-api/DOMConfiguration_8hpp.html new file mode 100644 index 00000000..1026fe07 --- /dev/null +++ b/docs/dom3-api/DOMConfiguration_8hpp.html @@ -0,0 +1,73 @@ + + +XQilla DOM Level 3 API: DOMConfiguration.hpp File Reference + + + + + + +

DOMConfiguration.hpp File Reference

#include <xercesc/util/XMLString.hpp>
+ +

+Include dependency graph for DOMConfiguration.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMConfiguration
 The DOMConfiguration interface represents the configuration of a document and maintains a table of recognized parameters. More...

Defines

#define DOMCONFIGURATION_HPP
+


Define Documentation

+

+ + + + +
+ + + + +
#define DOMCONFIGURATION_HPP
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMConfiguration_8hpp__dep__incl.map b/docs/dom3-api/DOMConfiguration_8hpp__dep__incl.map new file mode 100644 index 00000000..091e50df --- /dev/null +++ b/docs/dom3-api/DOMConfiguration_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 217,8 294,32 diff --git a/docs/dom3-api/DOMConfiguration_8hpp__dep__incl.md5 b/docs/dom3-api/DOMConfiguration_8hpp__dep__incl.md5 new file mode 100644 index 00000000..d13741a4 --- /dev/null +++ b/docs/dom3-api/DOMConfiguration_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +cfa8838cc395722eb6f722a1c800f6dc \ No newline at end of file diff --git a/docs/dom3-api/DOMConfiguration_8hpp__dep__incl.png b/docs/dom3-api/DOMConfiguration_8hpp__dep__incl.png new file mode 100644 index 00000000..d4dd8fcd Binary files /dev/null and b/docs/dom3-api/DOMConfiguration_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMConfiguration_8hpp__incl.map b/docs/dom3-api/DOMConfiguration_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMConfiguration_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMConfiguration_8hpp__incl.md5 b/docs/dom3-api/DOMConfiguration_8hpp__incl.md5 new file mode 100644 index 00000000..5042f705 --- /dev/null +++ b/docs/dom3-api/DOMConfiguration_8hpp__incl.md5 @@ -0,0 +1 @@ +4969ab65d8ffebf1d7ab717bb057e98c \ No newline at end of file diff --git a/docs/dom3-api/DOMConfiguration_8hpp__incl.png b/docs/dom3-api/DOMConfiguration_8hpp__incl.png new file mode 100644 index 00000000..a0a7eaf7 Binary files /dev/null and b/docs/dom3-api/DOMConfiguration_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMDocumentFragment_8hpp-source.html b/docs/dom3-api/DOMDocumentFragment_8hpp-source.html new file mode 100644 index 00000000..806bf4be --- /dev/null +++ b/docs/dom3-api/DOMDocumentFragment_8hpp-source.html @@ -0,0 +1,79 @@ + + +XQilla DOM Level 3 API: DOMDocumentFragment.hpp Source File + + + + + + +

DOMDocumentFragment.hpp

Go to the documentation of this file.
00001 #ifndef DOMDocumentFragment_HEADER_GUARD_
+00002 #define DOMDocumentFragment_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMDocumentFragment.hpp 176222 2004-12-03 17:00:44Z amassari $
+00022  */
+00023 
+00024 
+00025 #include <xercesc/util/XercesDefs.hpp>
+00026 #include <xercesc/dom/DOMNode.hpp>
+00027 
+00028 XERCES_CPP_NAMESPACE_BEGIN
+00029 
+00030 
+00071 class CDOM_EXPORT DOMDocumentFragment: public DOMNode {
+00072 protected:
+00073     // -----------------------------------------------------------------------
+00074     //  Hidden constructors
+00075     // -----------------------------------------------------------------------
+00078     DOMDocumentFragment() {};
+00080 
+00081 private:
+00082     // -----------------------------------------------------------------------
+00083     // Unimplemented constructors and operators
+00084     // -----------------------------------------------------------------------
+00087     DOMDocumentFragment(const DOMDocumentFragment &);
+00088     DOMDocumentFragment & operator = (const DOMDocumentFragment &);
+00090 
+00091 public:
+00092     // -----------------------------------------------------------------------
+00093     //  All constructors are hidden, just the destructor is available
+00094     // -----------------------------------------------------------------------
+00101     virtual ~DOMDocumentFragment() {};
+00103 
+00104 };
+00105 
+00106 XERCES_CPP_NAMESPACE_END
+00107 
+00108 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMDocumentFragment_8hpp.html b/docs/dom3-api/DOMDocumentFragment_8hpp.html new file mode 100644 index 00000000..ae571425 --- /dev/null +++ b/docs/dom3-api/DOMDocumentFragment_8hpp.html @@ -0,0 +1,50 @@ + + +XQilla DOM Level 3 API: DOMDocumentFragment.hpp File Reference + + + + + + +

DOMDocumentFragment.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xercesc/dom/DOMNode.hpp>
+ +

+Include dependency graph for DOMDocumentFragment.hpp:

+ + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMDocumentFragment
 DOMDocumentFragment is a "lightweight" or "minimal" DOMDocument object. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMDocumentFragment_8hpp__dep__incl.map b/docs/dom3-api/DOMDocumentFragment_8hpp__dep__incl.map new file mode 100644 index 00000000..9a0f6891 --- /dev/null +++ b/docs/dom3-api/DOMDocumentFragment_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 254,8 331,32 diff --git a/docs/dom3-api/DOMDocumentFragment_8hpp__dep__incl.md5 b/docs/dom3-api/DOMDocumentFragment_8hpp__dep__incl.md5 new file mode 100644 index 00000000..7e6e1d89 --- /dev/null +++ b/docs/dom3-api/DOMDocumentFragment_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +1e43891dfef0f857de66645af2479a97 \ No newline at end of file diff --git a/docs/dom3-api/DOMDocumentFragment_8hpp__dep__incl.png b/docs/dom3-api/DOMDocumentFragment_8hpp__dep__incl.png new file mode 100644 index 00000000..4424ae30 Binary files /dev/null and b/docs/dom3-api/DOMDocumentFragment_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMDocumentFragment_8hpp__incl.map b/docs/dom3-api/DOMDocumentFragment_8hpp__incl.map new file mode 100644 index 00000000..5a5994c4 --- /dev/null +++ b/docs/dom3-api/DOMDocumentFragment_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOMNode_8hpp.html 253,58 445,82 diff --git a/docs/dom3-api/DOMDocumentFragment_8hpp__incl.md5 b/docs/dom3-api/DOMDocumentFragment_8hpp__incl.md5 new file mode 100644 index 00000000..777b0538 --- /dev/null +++ b/docs/dom3-api/DOMDocumentFragment_8hpp__incl.md5 @@ -0,0 +1 @@ +bee7d123b5ac2cad8fa08786a325ddfa \ No newline at end of file diff --git a/docs/dom3-api/DOMDocumentFragment_8hpp__incl.png b/docs/dom3-api/DOMDocumentFragment_8hpp__incl.png new file mode 100644 index 00000000..4a15e106 Binary files /dev/null and b/docs/dom3-api/DOMDocumentFragment_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMDocumentRange_8hpp-source.html b/docs/dom3-api/DOMDocumentRange_8hpp-source.html new file mode 100644 index 00000000..d2526d49 --- /dev/null +++ b/docs/dom3-api/DOMDocumentRange_8hpp-source.html @@ -0,0 +1,87 @@ + + +XQilla DOM Level 3 API: DOMDocumentRange.hpp Source File + + + + + + +

DOMDocumentRange.hpp

Go to the documentation of this file.
00001 #ifndef DOMDocumentRange_HEADER_GUARD_
+00002 #define DOMDocumentRange_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMDocumentRange.hpp 176026 2004-09-08 13:57:07Z peiyongz $
+00022 */
+00023 
+00024 #include <xercesc/util/XercesDefs.hpp>
+00025 
+00026 XERCES_CPP_NAMESPACE_BEGIN
+00027 
+00028 
+00029 class DOMRange;
+00030 
+00031 
+00036 class CDOM_EXPORT DOMDocumentRange {
+00037 
+00038 protected:
+00039     // -----------------------------------------------------------------------
+00040     //  Hidden constructors
+00041     // -----------------------------------------------------------------------
+00044     DOMDocumentRange() {};
+00046 
+00047 private:
+00048     // -----------------------------------------------------------------------
+00049     // Unimplemented constructors and operators
+00050     // -----------------------------------------------------------------------
+00053     DOMDocumentRange(const DOMDocumentRange &);
+00054     DOMDocumentRange & operator = (const DOMDocumentRange &);
+00056 
+00057 public:
+00058     // -----------------------------------------------------------------------
+00059     //  All constructors are hidden, just the destructor is available
+00060     // -----------------------------------------------------------------------
+00067     virtual ~DOMDocumentRange() {};
+00069 
+00070     // -----------------------------------------------------------------------
+00071     //  Virtual DOMDocumentRange interface
+00072     // -----------------------------------------------------------------------
+00086     virtual DOMRange    *createRange() = 0;
+00087 
+00089 };
+00090 
+00091 
+00092 XERCES_CPP_NAMESPACE_END
+00093 
+00094 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMDocumentRange_8hpp.html b/docs/dom3-api/DOMDocumentRange_8hpp.html new file mode 100644 index 00000000..23ff0bf7 --- /dev/null +++ b/docs/dom3-api/DOMDocumentRange_8hpp.html @@ -0,0 +1,46 @@ + + +XQilla DOM Level 3 API: DOMDocumentRange.hpp File Reference + + + + + + +

DOMDocumentRange.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for DOMDocumentRange.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + + +

+Go to the source code of this file. + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMDocumentRange
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMDocumentRange_8hpp__dep__incl.map b/docs/dom3-api/DOMDocumentRange_8hpp__dep__incl.map new file mode 100644 index 00000000..2f129286 --- /dev/null +++ b/docs/dom3-api/DOMDocumentRange_8hpp__dep__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DOM_8hpp.html 425,34 502,58 +rect $DOMDocument_8hpp.html 236,58 374,82 diff --git a/docs/dom3-api/DOMDocumentRange_8hpp__dep__incl.md5 b/docs/dom3-api/DOMDocumentRange_8hpp__dep__incl.md5 new file mode 100644 index 00000000..e0051ce2 --- /dev/null +++ b/docs/dom3-api/DOMDocumentRange_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +e62f77b279ddd46138df621fe366013e \ No newline at end of file diff --git a/docs/dom3-api/DOMDocumentRange_8hpp__dep__incl.png b/docs/dom3-api/DOMDocumentRange_8hpp__dep__incl.png new file mode 100644 index 00000000..1aec46c9 Binary files /dev/null and b/docs/dom3-api/DOMDocumentRange_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMDocumentRange_8hpp__incl.map b/docs/dom3-api/DOMDocumentRange_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMDocumentRange_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMDocumentRange_8hpp__incl.md5 b/docs/dom3-api/DOMDocumentRange_8hpp__incl.md5 new file mode 100644 index 00000000..1df7d061 --- /dev/null +++ b/docs/dom3-api/DOMDocumentRange_8hpp__incl.md5 @@ -0,0 +1 @@ +6abc76550221561c71b5e272f1a9dc89 \ No newline at end of file diff --git a/docs/dom3-api/DOMDocumentRange_8hpp__incl.png b/docs/dom3-api/DOMDocumentRange_8hpp__incl.png new file mode 100644 index 00000000..903f83d5 Binary files /dev/null and b/docs/dom3-api/DOMDocumentRange_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMDocumentTraversal_8hpp-source.html b/docs/dom3-api/DOMDocumentTraversal_8hpp-source.html new file mode 100644 index 00000000..1edbc8f2 --- /dev/null +++ b/docs/dom3-api/DOMDocumentTraversal_8hpp-source.html @@ -0,0 +1,97 @@ + + +XQilla DOM Level 3 API: DOMDocumentTraversal.hpp Source File + + + + + + +

DOMDocumentTraversal.hpp

Go to the documentation of this file.
00001 #ifndef DOMDocumentTraversal_HEADER_GUARD_
+00002 #define DOMDocumentTraversal_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMDocumentTraversal.hpp 176026 2004-09-08 13:57:07Z peiyongz $
+00022 */
+00023 
+00024 #include <xercesc/util/XercesDefs.hpp>
+00025 
+00026 XERCES_CPP_NAMESPACE_BEGIN
+00027 
+00028 
+00029 class DOMNode;
+00030 class DOMNodeFilter;
+00031 class DOMNodeIterator;
+00032 class DOMTreeWalker;
+00033 
+00034 
+00046 class CDOM_EXPORT DOMDocumentTraversal {
+00047 
+00048 protected:
+00049     // -----------------------------------------------------------------------
+00050     //  Hidden constructors
+00051     // -----------------------------------------------------------------------
+00054     DOMDocumentTraversal() {};
+00056 
+00057 private:
+00058     // -----------------------------------------------------------------------
+00059     // Unimplemented constructors and operators
+00060     // -----------------------------------------------------------------------
+00063     DOMDocumentTraversal(const DOMDocumentTraversal &);
+00064     DOMDocumentTraversal & operator = (const DOMDocumentTraversal &);
+00066 
+00067 public:
+00068     // -----------------------------------------------------------------------
+00069     //  All constructors are hidden, just the destructor is available
+00070     // -----------------------------------------------------------------------
+00077     virtual ~DOMDocumentTraversal() {};
+00079 
+00080     // -----------------------------------------------------------------------
+00081     //  Virtual DOMDocumentRange interface
+00082     // -----------------------------------------------------------------------
+00109     virtual DOMNodeIterator *createNodeIterator(DOMNode         *root,
+00110                                                    unsigned long    whatToShow,
+00111                                                    DOMNodeFilter* filter,
+00112                                                    bool             entityReferenceExpansion) = 0;
+00143     virtual DOMTreeWalker  *createTreeWalker(DOMNode        *root,
+00144                                                unsigned long     whatToShow,
+00145                                                DOMNodeFilter  *filter,
+00146                                                bool              entityReferenceExpansion) = 0;
+00147 
+00149 };
+00150 
+00151 
+00152 XERCES_CPP_NAMESPACE_END
+00153 
+00154 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMDocumentTraversal_8hpp.html b/docs/dom3-api/DOMDocumentTraversal_8hpp.html new file mode 100644 index 00000000..d56d8352 --- /dev/null +++ b/docs/dom3-api/DOMDocumentTraversal_8hpp.html @@ -0,0 +1,47 @@ + + +XQilla DOM Level 3 API: DOMDocumentTraversal.hpp File Reference + + + + + + +

DOMDocumentTraversal.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for DOMDocumentTraversal.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMDocumentTraversal
 DOMDocumentTraversal contains methods that create DOMNodeIterators and DOMTreeWalkers to traverse a node and its children in document order (depth first, pre-order traversal, which is equivalent to the order in which the start tags occur in the text representation of the document). More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMDocumentTraversal_8hpp__dep__incl.map b/docs/dom3-api/DOMDocumentTraversal_8hpp__dep__incl.map new file mode 100644 index 00000000..10c97f84 --- /dev/null +++ b/docs/dom3-api/DOMDocumentTraversal_8hpp__dep__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DOM_8hpp.html 441,34 518,58 +rect $DOMDocument_8hpp.html 252,58 390,82 diff --git a/docs/dom3-api/DOMDocumentTraversal_8hpp__dep__incl.md5 b/docs/dom3-api/DOMDocumentTraversal_8hpp__dep__incl.md5 new file mode 100644 index 00000000..0b40c2ae --- /dev/null +++ b/docs/dom3-api/DOMDocumentTraversal_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +a06d3d50230549cfa68298c97f8556c0 \ No newline at end of file diff --git a/docs/dom3-api/DOMDocumentTraversal_8hpp__dep__incl.png b/docs/dom3-api/DOMDocumentTraversal_8hpp__dep__incl.png new file mode 100644 index 00000000..61d31aa9 Binary files /dev/null and b/docs/dom3-api/DOMDocumentTraversal_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMDocumentTraversal_8hpp__incl.map b/docs/dom3-api/DOMDocumentTraversal_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMDocumentTraversal_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMDocumentTraversal_8hpp__incl.md5 b/docs/dom3-api/DOMDocumentTraversal_8hpp__incl.md5 new file mode 100644 index 00000000..eadd1151 --- /dev/null +++ b/docs/dom3-api/DOMDocumentTraversal_8hpp__incl.md5 @@ -0,0 +1 @@ +305658c099d4e4180529670288546c93 \ No newline at end of file diff --git a/docs/dom3-api/DOMDocumentTraversal_8hpp__incl.png b/docs/dom3-api/DOMDocumentTraversal_8hpp__incl.png new file mode 100644 index 00000000..856df99a Binary files /dev/null and b/docs/dom3-api/DOMDocumentTraversal_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMDocumentType_8hpp-source.html b/docs/dom3-api/DOMDocumentType_8hpp-source.html new file mode 100644 index 00000000..679a28e9 --- /dev/null +++ b/docs/dom3-api/DOMDocumentType_8hpp-source.html @@ -0,0 +1,99 @@ + + +XQilla DOM Level 3 API: DOMDocumentType.hpp Source File + + + + + + +

DOMDocumentType.hpp

Go to the documentation of this file.
00001 #ifndef DOMDocumentType_HEADER_GUARD_
+00002 #define DOMDocumentType_HEADER_GUARD_
+00003 
+00004 
+00005 /*
+00006  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00007  * 
+00008  * Licensed under the Apache License, Version 2.0 (the "License");
+00009  * you may not use this file except in compliance with the License.
+00010  * You may obtain a copy of the License at
+00011  * 
+00012  *      http://www.apache.org/licenses/LICENSE-2.0
+00013  * 
+00014  * Unless required by applicable law or agreed to in writing, software
+00015  * distributed under the License is distributed on an "AS IS" BASIS,
+00016  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00017  * See the License for the specific language governing permissions and
+00018  * limitations under the License.
+00019  */
+00020 
+00021 /*
+00022  * $Id: DOMDocumentType.hpp 176081 2004-09-26 15:38:03Z gareth $
+00023  */
+00024 
+00025 #include <xercesc/util/XercesDefs.hpp>
+00026 #include <xercesc/dom/DOMNode.hpp>
+00027 
+00028 XERCES_CPP_NAMESPACE_BEGIN
+00029 
+00030 
+00031 class DOMNamedNodeMap;
+00032 
+00045 class CDOM_EXPORT DOMDocumentType: public DOMNode {
+00046 protected:
+00047     // -----------------------------------------------------------------------
+00048     //  Hidden constructors
+00049     // -----------------------------------------------------------------------
+00052     DOMDocumentType() {};
+00054 
+00055 private:
+00056     // -----------------------------------------------------------------------
+00057     // Unimplemented constructors and operators
+00058     // -----------------------------------------------------------------------
+00061     DOMDocumentType(const DOMDocumentType &);
+00062     DOMDocumentType & operator = (const DOMDocumentType &);
+00064 
+00065 public:
+00066     // -----------------------------------------------------------------------
+00067     //  All constructors are hidden, just the destructor is available
+00068     // -----------------------------------------------------------------------
+00075     virtual ~DOMDocumentType() {};
+00077 
+00078     // -----------------------------------------------------------------------
+00079     //  Virtual DOMDocumentType interface
+00080     // -----------------------------------------------------------------------
+00089     virtual const XMLCh *       getName() const = 0;
+00090 
+00108     virtual DOMNamedNodeMap *getEntities() const = 0;
+00109 
+00110 
+00120     virtual DOMNamedNodeMap *getNotations() const = 0;
+00122 
+00131     virtual const XMLCh *     getPublicId() const = 0;
+00132 
+00139     virtual const XMLCh *     getSystemId() const = 0;
+00140 
+00151     virtual const XMLCh *     getInternalSubset() const = 0;
+00153 
+00154 };
+00155 
+00156 XERCES_CPP_NAMESPACE_END
+00157 
+00158 #endif
+00159 
+00160 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMDocumentType_8hpp.html b/docs/dom3-api/DOMDocumentType_8hpp.html new file mode 100644 index 00000000..50f0f04a --- /dev/null +++ b/docs/dom3-api/DOMDocumentType_8hpp.html @@ -0,0 +1,50 @@ + + +XQilla DOM Level 3 API: DOMDocumentType.hpp File Reference + + + + + + +

DOMDocumentType.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xercesc/dom/DOMNode.hpp>
+ +

+Include dependency graph for DOMDocumentType.hpp:

+ + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMDocumentType
 Each DOMDocument has a doctype attribute whose value is either null or a DOMDocumentType object. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMDocumentType_8hpp__dep__incl.map b/docs/dom3-api/DOMDocumentType_8hpp__dep__incl.map new file mode 100644 index 00000000..50ec84b6 --- /dev/null +++ b/docs/dom3-api/DOMDocumentType_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 225,8 302,32 diff --git a/docs/dom3-api/DOMDocumentType_8hpp__dep__incl.md5 b/docs/dom3-api/DOMDocumentType_8hpp__dep__incl.md5 new file mode 100644 index 00000000..bb9c53ec --- /dev/null +++ b/docs/dom3-api/DOMDocumentType_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +da0d2666ab2e9f604faa9b5405238add \ No newline at end of file diff --git a/docs/dom3-api/DOMDocumentType_8hpp__dep__incl.png b/docs/dom3-api/DOMDocumentType_8hpp__dep__incl.png new file mode 100644 index 00000000..4c9c852c Binary files /dev/null and b/docs/dom3-api/DOMDocumentType_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMDocumentType_8hpp__incl.map b/docs/dom3-api/DOMDocumentType_8hpp__incl.map new file mode 100644 index 00000000..9488e63c --- /dev/null +++ b/docs/dom3-api/DOMDocumentType_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOMNode_8hpp.html 223,58 415,82 diff --git a/docs/dom3-api/DOMDocumentType_8hpp__incl.md5 b/docs/dom3-api/DOMDocumentType_8hpp__incl.md5 new file mode 100644 index 00000000..aed36280 --- /dev/null +++ b/docs/dom3-api/DOMDocumentType_8hpp__incl.md5 @@ -0,0 +1 @@ +ab1257d6d74de8cf1e7cc467bf0c431b \ No newline at end of file diff --git a/docs/dom3-api/DOMDocumentType_8hpp__incl.png b/docs/dom3-api/DOMDocumentType_8hpp__incl.png new file mode 100644 index 00000000..c5a840ca Binary files /dev/null and b/docs/dom3-api/DOMDocumentType_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMDocument_8hpp-source.html b/docs/dom3-api/DOMDocument_8hpp-source.html new file mode 100644 index 00000000..36d2d638 --- /dev/null +++ b/docs/dom3-api/DOMDocument_8hpp-source.html @@ -0,0 +1,207 @@ + + +XQilla DOM Level 3 API: DOMDocument.hpp Source File + + + + + + +

DOMDocument.hpp

Go to the documentation of this file.
00001 #ifndef DOMDocument_HEADER_GUARD_
+00002 #define DOMDocument_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMDocument.hpp 176250 2004-12-21 16:02:51Z cargilld $
+00022 */
+00023 
+00024 #include <xercesc/util/XercesDefs.hpp>
+00025 #include <xercesc/dom/DOMNode.hpp>
+00026 #include <xercesc/dom/DOMDocumentRange.hpp>
+00027 #include <xercesc/dom/DOMDocumentTraversal.hpp>
+00028 #include <xercesc/dom/DOMXPathEvaluator.hpp>
+00029 
+00030 XERCES_CPP_NAMESPACE_BEGIN
+00031 
+00032 class DOMConfiguration;
+00033 class DOMDocumentType;
+00034 class DOMElement;
+00035 class DOMDocumentFragment;
+00036 class DOMComment;
+00037 class DOMCDATASection;
+00038 class DOMProcessingInstruction;
+00039 class DOMAttr;
+00040 class DOMEntity;
+00041 class DOMEntityReference;
+00042 class DOMImplementation;
+00043 class DOMNodeFilter;
+00044 class DOMNodeList;
+00045 class DOMNotation;
+00046 class DOMText;
+00047 class DOMNode;
+00048 
+00049 
+00063 class CDOM_EXPORT DOMDocument: public DOMDocumentRange,
+00064  public DOMXPathEvaluator,
+00065  public DOMDocumentTraversal,
+00066  public DOMNode {
+00067 
+00068 
+00069 protected:
+00070     // -----------------------------------------------------------------------
+00071     //  Hidden constructors
+00072     // -----------------------------------------------------------------------
+00075     DOMDocument() {};
+00077 
+00078 private:
+00079     // -----------------------------------------------------------------------
+00080     // Unimplemented constructors and operators
+00081     // -----------------------------------------------------------------------
+00084     DOMDocument(const DOMDocument &);
+00085     DOMDocument & operator = (const DOMDocument &);
+00087 
+00088 public:
+00089     // -----------------------------------------------------------------------
+00090     //  All constructors are hidden, just the destructor is available
+00091     // -----------------------------------------------------------------------
+00098     virtual ~DOMDocument() {};
+00100 
+00101     // -----------------------------------------------------------------------
+00102     // Virtual DOMDocument interface
+00103     // -----------------------------------------------------------------------
+00126     virtual DOMElement     *createElement(const XMLCh *tagName) = 0;
+00127 
+00133     virtual DOMDocumentFragment   *createDocumentFragment() = 0;
+00134 
+00141     virtual DOMText         *createTextNode(const XMLCh *data) = 0;
+00142 
+00149     virtual DOMComment      *createComment(const XMLCh *data) = 0;
+00150 
+00158     virtual DOMCDATASection   *createCDATASection(const XMLCh *data) = 0;
+00159 
+00171     virtual DOMProcessingInstruction *createProcessingInstruction(const XMLCh *target,
+00172         const XMLCh *data) = 0;
+00173 
+00174 
+00191     virtual DOMAttr     *createAttribute(const XMLCh *name) = 0;
+00192 
+00193 
+00211     virtual DOMEntityReference    *createEntityReference(const XMLCh *name) = 0;
+00212 
+00224     virtual DOMDocumentType       *getDoctype() const = 0;
+00225 
+00231     virtual DOMImplementation  *getImplementation() const = 0;
+00232 
+00238     virtual DOMElement     *getDocumentElement() const = 0;
+00239 
+00254     virtual DOMNodeList      *getElementsByTagName(const XMLCh *tagname) const = 0;
+00255 
+00257 
+00260 
+00359     virtual DOMNode        *importNode(DOMNode *importedNode, bool deep) = 0;
+00360 
+00416     virtual DOMElement         *createElementNS(const XMLCh *namespaceURI,
+00417                                                       const XMLCh *qualifiedName) = 0;
+00418 
+00481     virtual DOMAttr        *createAttributeNS(const XMLCh *namespaceURI,
+00482                                                     const XMLCh *qualifiedName) = 0;
+00483 
+00496     virtual DOMNodeList        *getElementsByTagNameNS(const XMLCh *namespaceURI,
+00497                                                              const XMLCh *localName) const = 0;
+00498 
+00512     virtual  DOMElement        * getElementById(const XMLCh *elementId) const = 0;
+00514 
+00517 
+00528     virtual const XMLCh*           getActualEncoding() const = 0;
+00529 
+00540     virtual void                   setActualEncoding(const XMLCh* actualEncoding) = 0;
+00541 
+00550     virtual const XMLCh*           getEncoding() const = 0;
+00551 
+00560     virtual void                   setEncoding(const XMLCh* encoding) = 0;
+00561 
+00571     virtual bool                   getStandalone() const = 0;
+00572 
+00582     virtual void                   setStandalone(bool standalone) = 0;
+00583 
+00593     virtual const XMLCh*           getVersion() const = 0;
+00594 
+00604     virtual void                   setVersion(const XMLCh* version) = 0;
+00605 
+00616     virtual const XMLCh*           getDocumentURI() const = 0;
+00627     virtual void                   setDocumentURI(const XMLCh* documentURI) = 0;
+00628 
+00641     virtual bool                   getStrictErrorChecking() const = 0;
+00654     virtual void                   setStrictErrorChecking(bool strictErrorChecking) = 0;
+00655 
+00702     virtual DOMNode* renameNode(DOMNode* n, const XMLCh* namespaceURI, const XMLCh* name) = 0;
+00703 
+00704 
+00766     virtual DOMNode*               adoptNode(DOMNode* source) = 0;
+00767 
+00792     virtual void                   normalizeDocument() = 0;
+00793 
+00794 
+00810     virtual DOMConfiguration*      getDOMConfiguration() const = 0;
+00811 
+00813 
+00814     // -----------------------------------------------------------------------
+00815     // Non-standard extension
+00816     // -----------------------------------------------------------------------
+00826     virtual DOMEntity     *createEntity(const XMLCh *name) = 0;
+00827 
+00836     virtual DOMDocumentType *createDocumentType(const XMLCh *name) = 0;
+00837 
+00838     /***
+00839      * Provide default implementation to maintain source code compatibility
+00840      ***/
+00841     virtual DOMDocumentType* createDocumentType(const XMLCh *qName,
+00842                                                 const XMLCh*,  //publicId,
+00843                                                 const XMLCh*   //systemId
+00844                                                )
+00845     {
+00846         return createDocumentType(qName);
+00847     }
+00848 
+00857     virtual DOMNotation *createNotation(const XMLCh *name) = 0;
+00858 
+00868     virtual DOMElement         *createElementNS(const XMLCh *namespaceURI,
+00869                                                   const XMLCh *qualifiedName,
+00870                                                   const XMLSSize_t lineNum,
+00871                                                   const XMLSSize_t columnNum) = 0;
+00873 
+00874 };
+00875 
+00876 XERCES_CPP_NAMESPACE_END
+00877 
+00878 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMDocument_8hpp.html b/docs/dom3-api/DOMDocument_8hpp.html new file mode 100644 index 00000000..0377d00c --- /dev/null +++ b/docs/dom3-api/DOMDocument_8hpp.html @@ -0,0 +1,56 @@ + + +XQilla DOM Level 3 API: DOMDocument.hpp File Reference + + + + + + +

DOMDocument.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xercesc/dom/DOMNode.hpp>
+#include <xercesc/dom/DOMDocumentRange.hpp>
+#include <xercesc/dom/DOMDocumentTraversal.hpp>
+#include <xercesc/dom/DOMXPathEvaluator.hpp>
+ +

+Include dependency graph for DOMDocument.hpp:

+ + + + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMDocument
 The DOMDocument interface represents the entire XML document. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMDocument_8hpp__dep__incl.map b/docs/dom3-api/DOMDocument_8hpp__dep__incl.map new file mode 100644 index 00000000..c9d72ef9 --- /dev/null +++ b/docs/dom3-api/DOMDocument_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 198,8 275,32 diff --git a/docs/dom3-api/DOMDocument_8hpp__dep__incl.md5 b/docs/dom3-api/DOMDocument_8hpp__dep__incl.md5 new file mode 100644 index 00000000..0b458f8a --- /dev/null +++ b/docs/dom3-api/DOMDocument_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +b747646cf101edc8cffd8cc27f7b7a96 \ No newline at end of file diff --git a/docs/dom3-api/DOMDocument_8hpp__dep__incl.png b/docs/dom3-api/DOMDocument_8hpp__dep__incl.png new file mode 100644 index 00000000..7b502c09 Binary files /dev/null and b/docs/dom3-api/DOMDocument_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMDocument_8hpp__incl.map b/docs/dom3-api/DOMDocument_8hpp__incl.map new file mode 100644 index 00000000..69acc9f1 --- /dev/null +++ b/docs/dom3-api/DOMDocument_8hpp__incl.map @@ -0,0 +1,5 @@ +base referer +rect $DOMNode_8hpp.html 238,66 430,90 +rect $DOMDocumentRange_8hpp.html 205,114 463,138 +rect $DOMDocumentTraversal_8hpp.html 197,162 471,186 +rect $DOMXPathEvaluator_8hpp.html 209,210 459,234 diff --git a/docs/dom3-api/DOMDocument_8hpp__incl.md5 b/docs/dom3-api/DOMDocument_8hpp__incl.md5 new file mode 100644 index 00000000..13e36196 --- /dev/null +++ b/docs/dom3-api/DOMDocument_8hpp__incl.md5 @@ -0,0 +1 @@ +91bd67e27da6c66f9451e861198eb12e \ No newline at end of file diff --git a/docs/dom3-api/DOMDocument_8hpp__incl.png b/docs/dom3-api/DOMDocument_8hpp__incl.png new file mode 100644 index 00000000..175e10c2 Binary files /dev/null and b/docs/dom3-api/DOMDocument_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMElement_8hpp-source.html b/docs/dom3-api/DOMElement_8hpp-source.html new file mode 100644 index 00000000..75ac7052 --- /dev/null +++ b/docs/dom3-api/DOMElement_8hpp-source.html @@ -0,0 +1,148 @@ + + +XQilla DOM Level 3 API: DOMElement.hpp Source File + + + + + + +

DOMElement.hpp

Go to the documentation of this file.
00001 #ifndef DOMElement_HEADER_GUARD_
+00002 #define DOMElement_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMElement.hpp 176280 2005-01-07 15:32:34Z amassari $
+00022  */
+00023 
+00024 #include <xercesc/util/XercesDefs.hpp>
+00025 #include <xercesc/dom/DOMNode.hpp>
+00026 
+00027 XERCES_CPP_NAMESPACE_BEGIN
+00028 
+00029 
+00030 class DOMAttr;
+00031 class DOMNodeList;
+00032 class DOMTypeInfo;
+00033 
+00034 
+00062 class CDOM_EXPORT DOMElement: public DOMNode {
+00063 protected:
+00064     // -----------------------------------------------------------------------
+00065     //  Hidden constructors
+00066     // -----------------------------------------------------------------------
+00069     DOMElement() {}
+00070     DOMElement(const DOMElement &other) : DOMNode(other) {}
+00072     
+00073 private:
+00074     // -----------------------------------------------------------------------
+00075     // Unimplemented constructors and operators
+00076     // -----------------------------------------------------------------------
+00079     DOMElement & operator = (const DOMElement &);
+00081 
+00082 public:
+00083     // -----------------------------------------------------------------------
+00084     //  All constructors are hidden, just the destructor is available
+00085     // -----------------------------------------------------------------------
+00092     virtual ~DOMElement() {};
+00094 
+00095     // -----------------------------------------------------------------------
+00096     //  Virtual DOMElement interface
+00097     // -----------------------------------------------------------------------
+00100     // -----------------------------------------------------------------------
+00101     //  Getter methods
+00102     // -----------------------------------------------------------------------
+00112     virtual const XMLCh *         getTagName() const = 0;
+00113 
+00122     virtual const XMLCh *         getAttribute(const XMLCh *name) const = 0;
+00123 
+00132     virtual DOMAttr       * getAttributeNode(const XMLCh *name) const = 0;
+00133 
+00144     virtual DOMNodeList   * getElementsByTagName(const XMLCh *name) const = 0;
+00145 
+00146     // -----------------------------------------------------------------------
+00147     //  Setter methods
+00148     // -----------------------------------------------------------------------
+00171     virtual void             setAttribute(const XMLCh *name,
+00172                                   const XMLCh *value) = 0;
+00193     virtual DOMAttr       * setAttributeNode(DOMAttr *newAttr) = 0;
+00194 
+00211     virtual DOMAttr       * removeAttributeNode(DOMAttr *oldAttr) = 0;
+00212 
+00226     virtual void              removeAttribute(const XMLCh *name) = 0;
+00228 
+00242     virtual const XMLCh *         getAttributeNS(const XMLCh *namespaceURI,
+00243                                                  const XMLCh *localName) const = 0;
+00244 
+00284     virtual void             setAttributeNS(const XMLCh *namespaceURI,
+00285                                             const XMLCh *qualifiedName, const XMLCh *value) = 0;
+00286 
+00301     virtual void              removeAttributeNS(const XMLCh *namespaceURI,
+00302                                                 const XMLCh *localName) = 0;
+00303 
+00315     virtual DOMAttr      *  getAttributeNodeNS(const XMLCh *namespaceURI,
+00316                                                const XMLCh *localName) const = 0;
+00317 
+00339     virtual DOMAttr      *  setAttributeNodeNS(DOMAttr *newAttr) = 0;
+00340 
+00356     virtual DOMNodeList   * getElementsByTagNameNS(const XMLCh *namespaceURI,
+00357                                                    const XMLCh *localName) const = 0;
+00358 
+00369     virtual bool         hasAttribute(const XMLCh *name) const = 0;
+00370 
+00383     virtual bool         hasAttributeNS(const XMLCh *namespaceURI,
+00384                                         const XMLCh *localName) const = 0;
+00386 
+00389 
+00408     virtual void setIdAttribute(const XMLCh* name) = 0;
+00409 
+00410 
+00428     virtual void setIdAttributeNS(const XMLCh* namespaceURI, const XMLCh* localName) = 0;
+00429 
+00430 
+00431 
+00447     virtual void setIdAttributeNode(const DOMAttr *idAttr) = 0;
+00448 
+00449 
+00450 
+00459     virtual const DOMTypeInfo* getTypeInfo() const = 0;
+00460 
+00462 
+00463 };
+00464 
+00465 XERCES_CPP_NAMESPACE_END
+00466 
+00467 #endif
+00468 
+00469 
+00470 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMElement_8hpp.html b/docs/dom3-api/DOMElement_8hpp.html new file mode 100644 index 00000000..4c75296c --- /dev/null +++ b/docs/dom3-api/DOMElement_8hpp.html @@ -0,0 +1,51 @@ + + +XQilla DOM Level 3 API: DOMElement.hpp File Reference + + + + + + +

DOMElement.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xercesc/dom/DOMNode.hpp>
+ +

+Include dependency graph for DOMElement.hpp:

+ + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMElement
 By far the vast majority of objects (apart from text) that authors encounter when traversing a document are DOMElement nodes. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMElement_8hpp__dep__incl.map b/docs/dom3-api/DOMElement_8hpp__dep__incl.map new file mode 100644 index 00000000..a3544b0a --- /dev/null +++ b/docs/dom3-api/DOMElement_8hpp__dep__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DOM_8hpp.html 207,8 285,32 +rect $StDOMNode_8hpp.html 185,56 307,80 diff --git a/docs/dom3-api/DOMElement_8hpp__dep__incl.md5 b/docs/dom3-api/DOMElement_8hpp__dep__incl.md5 new file mode 100644 index 00000000..e6ed153d --- /dev/null +++ b/docs/dom3-api/DOMElement_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +56fa7cb3459307e20f0b345a58375cea \ No newline at end of file diff --git a/docs/dom3-api/DOMElement_8hpp__dep__incl.png b/docs/dom3-api/DOMElement_8hpp__dep__incl.png new file mode 100644 index 00000000..37287994 Binary files /dev/null and b/docs/dom3-api/DOMElement_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMElement_8hpp__incl.map b/docs/dom3-api/DOMElement_8hpp__incl.map new file mode 100644 index 00000000..a666d153 --- /dev/null +++ b/docs/dom3-api/DOMElement_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOMNode_8hpp.html 183,58 375,82 diff --git a/docs/dom3-api/DOMElement_8hpp__incl.md5 b/docs/dom3-api/DOMElement_8hpp__incl.md5 new file mode 100644 index 00000000..9620c5e6 --- /dev/null +++ b/docs/dom3-api/DOMElement_8hpp__incl.md5 @@ -0,0 +1 @@ +fbca8876435dd7cd80ef4efbe02280b9 \ No newline at end of file diff --git a/docs/dom3-api/DOMElement_8hpp__incl.png b/docs/dom3-api/DOMElement_8hpp__incl.png new file mode 100644 index 00000000..e1be8e25 Binary files /dev/null and b/docs/dom3-api/DOMElement_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMEntityReference_8hpp-source.html b/docs/dom3-api/DOMEntityReference_8hpp-source.html new file mode 100644 index 00000000..3bceb9d9 --- /dev/null +++ b/docs/dom3-api/DOMEntityReference_8hpp-source.html @@ -0,0 +1,81 @@ + + +XQilla DOM Level 3 API: DOMEntityReference.hpp Source File + + + + + + +

DOMEntityReference.hpp

Go to the documentation of this file.
00001 #ifndef DOMEntityReference_HEADER_GUARD_
+00002 #define DOMEntityReference_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMEntityReference.hpp 176280 2005-01-07 15:32:34Z amassari $
+00022  */
+00023 
+00024 
+00025 #include <xercesc/util/XercesDefs.hpp>
+00026 #include <xercesc/dom/DOMNode.hpp>
+00027 
+00028 XERCES_CPP_NAMESPACE_BEGIN
+00029 
+00030 
+00057 class CDOM_EXPORT DOMEntityReference: public DOMNode {
+00058 protected:
+00059     // -----------------------------------------------------------------------
+00060     //  Hidden constructors
+00061     // -----------------------------------------------------------------------
+00064     DOMEntityReference() {}
+00065     DOMEntityReference(const DOMEntityReference &other) : DOMNode(other) {}
+00067 
+00068 private:
+00069     // -----------------------------------------------------------------------
+00070     // Unimplemented constructors and operators
+00071     // -----------------------------------------------------------------------
+00074     DOMEntityReference & operator = (const DOMEntityReference &);
+00076 
+00077 public:
+00078     // -----------------------------------------------------------------------
+00079     //  All constructors are hidden, just the destructor is available
+00080     // -----------------------------------------------------------------------
+00087     virtual ~DOMEntityReference() {};
+00089 
+00090 };
+00091 
+00092 XERCES_CPP_NAMESPACE_END
+00093 
+00094 #endif
+00095 
+00096 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMEntityReference_8hpp.html b/docs/dom3-api/DOMEntityReference_8hpp.html new file mode 100644 index 00000000..72cf0e83 --- /dev/null +++ b/docs/dom3-api/DOMEntityReference_8hpp.html @@ -0,0 +1,50 @@ + + +XQilla DOM Level 3 API: DOMEntityReference.hpp File Reference + + + + + + +

DOMEntityReference.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xercesc/dom/DOMNode.hpp>
+ +

+Include dependency graph for DOMEntityReference.hpp:

+ + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMEntityReference
 DOMEntityReference objects may be inserted into the structure model when an entity reference is in the source document, or when the user wishes to insert an entity reference. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMEntityReference_8hpp__dep__incl.map b/docs/dom3-api/DOMEntityReference_8hpp__dep__incl.map new file mode 100644 index 00000000..15b9f7eb --- /dev/null +++ b/docs/dom3-api/DOMEntityReference_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 230,8 307,32 diff --git a/docs/dom3-api/DOMEntityReference_8hpp__dep__incl.md5 b/docs/dom3-api/DOMEntityReference_8hpp__dep__incl.md5 new file mode 100644 index 00000000..43f1280b --- /dev/null +++ b/docs/dom3-api/DOMEntityReference_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +54cedfa21d6e1674faf35c200aa6c183 \ No newline at end of file diff --git a/docs/dom3-api/DOMEntityReference_8hpp__dep__incl.png b/docs/dom3-api/DOMEntityReference_8hpp__dep__incl.png new file mode 100644 index 00000000..6a58099e Binary files /dev/null and b/docs/dom3-api/DOMEntityReference_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMEntityReference_8hpp__incl.map b/docs/dom3-api/DOMEntityReference_8hpp__incl.map new file mode 100644 index 00000000..21535682 --- /dev/null +++ b/docs/dom3-api/DOMEntityReference_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOMNode_8hpp.html 229,58 421,82 diff --git a/docs/dom3-api/DOMEntityReference_8hpp__incl.md5 b/docs/dom3-api/DOMEntityReference_8hpp__incl.md5 new file mode 100644 index 00000000..094399ec --- /dev/null +++ b/docs/dom3-api/DOMEntityReference_8hpp__incl.md5 @@ -0,0 +1 @@ +b69491c6926815fd963c69f65bfd8fa6 \ No newline at end of file diff --git a/docs/dom3-api/DOMEntityReference_8hpp__incl.png b/docs/dom3-api/DOMEntityReference_8hpp__incl.png new file mode 100644 index 00000000..78f50c5b Binary files /dev/null and b/docs/dom3-api/DOMEntityReference_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMEntityResolver_8hpp-source.html b/docs/dom3-api/DOMEntityResolver_8hpp-source.html new file mode 100644 index 00000000..62521098 --- /dev/null +++ b/docs/dom3-api/DOMEntityResolver_8hpp-source.html @@ -0,0 +1,92 @@ + + +XQilla DOM Level 3 API: DOMEntityResolver.hpp Source File + + + + + + +

DOMEntityResolver.hpp

Go to the documentation of this file.
00001 #ifndef DOMEntityResolver_HEADER_GUARD_
+00002 #define DOMEntityResolver_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMEntityResolver.hpp 231323 2005-08-10 20:58:40Z cargilld $
+00022  */
+00023 
+00024 
+00025 #include <xercesc/util/XercesDefs.hpp>
+00026 
+00027 XERCES_CPP_NAMESPACE_BEGIN
+00028 
+00029 
+00030 class DOMInputSource;
+00031 
+00053 class CDOM_EXPORT DOMEntityResolver
+00054 {
+00055 protected:
+00056     // -----------------------------------------------------------------------
+00057     //  Hidden constructors
+00058     // -----------------------------------------------------------------------
+00061     DOMEntityResolver() {};
+00063 
+00064 private:
+00065     // -----------------------------------------------------------------------
+00066     // Unimplemented constructors and operators
+00067     // -----------------------------------------------------------------------
+00070     DOMEntityResolver(const DOMEntityResolver &);
+00071     DOMEntityResolver & operator = (const DOMEntityResolver &);
+00073 
+00074 public:
+00075     // -----------------------------------------------------------------------
+00076     //  All constructors are hidden, just the destructor is available
+00077     // -----------------------------------------------------------------------
+00084     virtual ~DOMEntityResolver() {};
+00086 
+00087     // -----------------------------------------------------------------------
+00088     //  Virtual DOMEntityResolver interface
+00089     // -----------------------------------------------------------------------
+00131     virtual DOMInputSource* resolveEntity
+00132     (
+00133         const   XMLCh* const    publicId
+00134         , const XMLCh* const    systemId
+00135         , const XMLCh* const    baseURI
+00136     ) = 0;
+00137 
+00139 
+00140 };
+00141 
+00142 XERCES_CPP_NAMESPACE_END
+00143 
+00144 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMEntityResolver_8hpp.html b/docs/dom3-api/DOMEntityResolver_8hpp.html new file mode 100644 index 00000000..af826908 --- /dev/null +++ b/docs/dom3-api/DOMEntityResolver_8hpp.html @@ -0,0 +1,46 @@ + + +XQilla DOM Level 3 API: DOMEntityResolver.hpp File Reference + + + + + + +

DOMEntityResolver.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for DOMEntityResolver.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMEntityResolver
 DOMEntityResolver provides a way for applications to redirect references to external entities. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMEntityResolver_8hpp__dep__incl.map b/docs/dom3-api/DOMEntityResolver_8hpp__dep__incl.map new file mode 100644 index 00000000..be033c98 --- /dev/null +++ b/docs/dom3-api/DOMEntityResolver_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 222,8 299,32 diff --git a/docs/dom3-api/DOMEntityResolver_8hpp__dep__incl.md5 b/docs/dom3-api/DOMEntityResolver_8hpp__dep__incl.md5 new file mode 100644 index 00000000..925031cc --- /dev/null +++ b/docs/dom3-api/DOMEntityResolver_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +84965c7b3d6758572a95a7c12be568c2 \ No newline at end of file diff --git a/docs/dom3-api/DOMEntityResolver_8hpp__dep__incl.png b/docs/dom3-api/DOMEntityResolver_8hpp__dep__incl.png new file mode 100644 index 00000000..9d2e5a40 Binary files /dev/null and b/docs/dom3-api/DOMEntityResolver_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMEntityResolver_8hpp__incl.map b/docs/dom3-api/DOMEntityResolver_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMEntityResolver_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMEntityResolver_8hpp__incl.md5 b/docs/dom3-api/DOMEntityResolver_8hpp__incl.md5 new file mode 100644 index 00000000..da34943e --- /dev/null +++ b/docs/dom3-api/DOMEntityResolver_8hpp__incl.md5 @@ -0,0 +1 @@ +abe03e09501d44c2150ed1c4e29a538a \ No newline at end of file diff --git a/docs/dom3-api/DOMEntityResolver_8hpp__incl.png b/docs/dom3-api/DOMEntityResolver_8hpp__incl.png new file mode 100644 index 00000000..bd941dad Binary files /dev/null and b/docs/dom3-api/DOMEntityResolver_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMEntity_8hpp-source.html b/docs/dom3-api/DOMEntity_8hpp-source.html new file mode 100644 index 00000000..ce2a7a24 --- /dev/null +++ b/docs/dom3-api/DOMEntity_8hpp-source.html @@ -0,0 +1,103 @@ + + +XQilla DOM Level 3 API: DOMEntity.hpp Source File + + + + + + +

DOMEntity.hpp

Go to the documentation of this file.
00001 #ifndef DOMEntity_HEADER_GUARD_
+00002 #define DOMEntity_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMEntity.hpp 176280 2005-01-07 15:32:34Z amassari $
+00022  */
+00023 
+00024 
+00025 #include <xercesc/util/XercesDefs.hpp>
+00026 #include <xercesc/dom/DOMNode.hpp>
+00027 
+00028 XERCES_CPP_NAMESPACE_BEGIN
+00029 
+00066 class CDOM_EXPORT DOMEntity: public DOMNode {
+00067 protected:
+00068     // -----------------------------------------------------------------------
+00069     //  Hidden constructors
+00070     // -----------------------------------------------------------------------
+00073     DOMEntity() {}
+00074     DOMEntity(const DOMEntity &other) : DOMNode(other) {}
+00076 
+00077 private:
+00078     // -----------------------------------------------------------------------
+00079     // Unimplemented constructors and operators
+00080     // -----------------------------------------------------------------------
+00083     DOMEntity & operator = (const DOMEntity &);
+00085 
+00086 public:
+00087     // -----------------------------------------------------------------------
+00088     //  All constructors are hidden, just the destructor is available
+00089     // -----------------------------------------------------------------------
+00096     virtual ~DOMEntity() {};
+00098 
+00099     // -----------------------------------------------------------------------
+00100     //  Virtual DOMEntity interface
+00101     // -----------------------------------------------------------------------
+00104     // -----------------------------------------------------------------------
+00105     //  Getter methods
+00106     // -----------------------------------------------------------------------
+00114     virtual const XMLCh *        getPublicId() const = 0;
+00115 
+00123     virtual const XMLCh *        getSystemId() const = 0;
+00124 
+00132     virtual const XMLCh *        getNotationName() const = 0;
+00134 
+00137 
+00146     virtual const XMLCh*           getActualEncoding() const = 0;
+00147 
+00156     virtual void                   setActualEncoding(const XMLCh* actualEncoding) = 0;
+00157 
+00167     virtual const XMLCh*           getEncoding() const = 0;
+00168 
+00178     virtual void                   setEncoding(const XMLCh* encoding) = 0;
+00179 
+00189     virtual const XMLCh*           getVersion() const = 0;
+00190 
+00200     virtual void                   setVersion(const XMLCh* version) = 0;
+00202 };
+00203 
+00204 XERCES_CPP_NAMESPACE_END
+00205 
+00206 #endif
+00207 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMEntity_8hpp.html b/docs/dom3-api/DOMEntity_8hpp.html new file mode 100644 index 00000000..bf932478 --- /dev/null +++ b/docs/dom3-api/DOMEntity_8hpp.html @@ -0,0 +1,50 @@ + + +XQilla DOM Level 3 API: DOMEntity.hpp File Reference + + + + + + +

DOMEntity.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xercesc/dom/DOMNode.hpp>
+ +

+Include dependency graph for DOMEntity.hpp:

+ + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMEntity
 This interface represents an entity, either parsed or unparsed, in an XML document. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMEntity_8hpp__dep__incl.map b/docs/dom3-api/DOMEntity_8hpp__dep__incl.map new file mode 100644 index 00000000..41c7fe0a --- /dev/null +++ b/docs/dom3-api/DOMEntity_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 169,8 246,32 diff --git a/docs/dom3-api/DOMEntity_8hpp__dep__incl.md5 b/docs/dom3-api/DOMEntity_8hpp__dep__incl.md5 new file mode 100644 index 00000000..fe4050f5 --- /dev/null +++ b/docs/dom3-api/DOMEntity_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +85cc545e5cc548321d5d010f3bd173d1 \ No newline at end of file diff --git a/docs/dom3-api/DOMEntity_8hpp__dep__incl.png b/docs/dom3-api/DOMEntity_8hpp__dep__incl.png new file mode 100644 index 00000000..d55a8e85 Binary files /dev/null and b/docs/dom3-api/DOMEntity_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMEntity_8hpp__incl.map b/docs/dom3-api/DOMEntity_8hpp__incl.map new file mode 100644 index 00000000..3ca7f6f5 --- /dev/null +++ b/docs/dom3-api/DOMEntity_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOMNode_8hpp.html 167,58 359,82 diff --git a/docs/dom3-api/DOMEntity_8hpp__incl.md5 b/docs/dom3-api/DOMEntity_8hpp__incl.md5 new file mode 100644 index 00000000..5e22831d --- /dev/null +++ b/docs/dom3-api/DOMEntity_8hpp__incl.md5 @@ -0,0 +1 @@ +40b029a3167539a07ad3ee89ae9ad626 \ No newline at end of file diff --git a/docs/dom3-api/DOMEntity_8hpp__incl.png b/docs/dom3-api/DOMEntity_8hpp__incl.png new file mode 100644 index 00000000..d85f7f65 Binary files /dev/null and b/docs/dom3-api/DOMEntity_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMErrorHandler_8hpp-source.html b/docs/dom3-api/DOMErrorHandler_8hpp-source.html new file mode 100644 index 00000000..232bb9d1 --- /dev/null +++ b/docs/dom3-api/DOMErrorHandler_8hpp-source.html @@ -0,0 +1,86 @@ + + +XQilla DOM Level 3 API: DOMErrorHandler.hpp Source File + + + + + + +

DOMErrorHandler.hpp

Go to the documentation of this file.
00001 #ifndef DOMErrorHandler_HEADER_GUARD_
+00002 #define DOMErrorHandler_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMErrorHandler.hpp 191054 2005-06-17 02:56:35Z jberry $
+00022  */
+00023 
+00024 
+00025 #include <xercesc/util/XercesDefs.hpp>
+00026 
+00027 XERCES_CPP_NAMESPACE_BEGIN
+00028 
+00029 
+00030 class DOMError;
+00031 
+00046 class CDOM_EXPORT DOMErrorHandler
+00047 {
+00048 protected:
+00049     // -----------------------------------------------------------------------
+00050     //  Hidden constructors
+00051     // -----------------------------------------------------------------------
+00054     DOMErrorHandler() {};
+00056 
+00057 private:
+00058     // -----------------------------------------------------------------------
+00059     // Unimplemented constructors and operators
+00060     // -----------------------------------------------------------------------
+00063     DOMErrorHandler(const DOMErrorHandler &);
+00064     DOMErrorHandler & operator = (const DOMErrorHandler &);
+00066 
+00067 public:
+00068     // -----------------------------------------------------------------------
+00069     //  All constructors are hidden, just the destructor is available
+00070     // -----------------------------------------------------------------------
+00077     virtual ~DOMErrorHandler() {};
+00079 
+00080     // -----------------------------------------------------------------------
+00081     //  Virtual DOMErrorHandler interface
+00082     // -----------------------------------------------------------------------
+00101     virtual bool handleError(const DOMError& domError) = 0;
+00103 
+00104 };
+00105 
+00106 XERCES_CPP_NAMESPACE_END
+00107 
+00108 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMErrorHandler_8hpp.html b/docs/dom3-api/DOMErrorHandler_8hpp.html new file mode 100644 index 00000000..f3314230 --- /dev/null +++ b/docs/dom3-api/DOMErrorHandler_8hpp.html @@ -0,0 +1,47 @@ + + +XQilla DOM Level 3 API: DOMErrorHandler.hpp File Reference + + + + + + +

DOMErrorHandler.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for DOMErrorHandler.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMErrorHandler
 Basic interface for DOM error handlers. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMErrorHandler_8hpp__dep__incl.map b/docs/dom3-api/DOMErrorHandler_8hpp__dep__incl.map new file mode 100644 index 00000000..4173ef2c --- /dev/null +++ b/docs/dom3-api/DOMErrorHandler_8hpp__dep__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DOM_8hpp.html 374,34 451,58 +rect $DOMWriter_8hpp.html 211,58 323,82 diff --git a/docs/dom3-api/DOMErrorHandler_8hpp__dep__incl.md5 b/docs/dom3-api/DOMErrorHandler_8hpp__dep__incl.md5 new file mode 100644 index 00000000..0b332742 --- /dev/null +++ b/docs/dom3-api/DOMErrorHandler_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +65b50e451db7a99b53d193cc5b2a8f88 \ No newline at end of file diff --git a/docs/dom3-api/DOMErrorHandler_8hpp__dep__incl.png b/docs/dom3-api/DOMErrorHandler_8hpp__dep__incl.png new file mode 100644 index 00000000..d0a3dc33 Binary files /dev/null and b/docs/dom3-api/DOMErrorHandler_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMErrorHandler_8hpp__incl.map b/docs/dom3-api/DOMErrorHandler_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMErrorHandler_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMErrorHandler_8hpp__incl.md5 b/docs/dom3-api/DOMErrorHandler_8hpp__incl.md5 new file mode 100644 index 00000000..4e987b02 --- /dev/null +++ b/docs/dom3-api/DOMErrorHandler_8hpp__incl.md5 @@ -0,0 +1 @@ +41b21f865430742a4d4aec4d17de1c51 \ No newline at end of file diff --git a/docs/dom3-api/DOMErrorHandler_8hpp__incl.png b/docs/dom3-api/DOMErrorHandler_8hpp__incl.png new file mode 100644 index 00000000..33db6c62 Binary files /dev/null and b/docs/dom3-api/DOMErrorHandler_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMError_8hpp-source.html b/docs/dom3-api/DOMError_8hpp-source.html new file mode 100644 index 00000000..15b3ba44 --- /dev/null +++ b/docs/dom3-api/DOMError_8hpp-source.html @@ -0,0 +1,127 @@ + + +XQilla DOM Level 3 API: DOMError.hpp Source File + + + + + + +

DOMError.hpp

Go to the documentation of this file.
00001 #ifndef DOMError_HEADER_GUARD_
+00002 #define DOMError_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMError.hpp 191054 2005-06-17 02:56:35Z jberry $
+00022  */
+00023 
+00024 
+00025 #include <xercesc/util/XercesDefs.hpp>
+00026 
+00027 XERCES_CPP_NAMESPACE_BEGIN
+00028 
+00029 class DOMLocator;
+00030 
+00031 
+00039 class CDOM_EXPORT DOMError
+00040 {
+00041 protected:
+00042     // -----------------------------------------------------------------------
+00043     //  Hidden constructors
+00044     // -----------------------------------------------------------------------
+00047     DOMError() {};
+00049 
+00050 private:
+00051     // -----------------------------------------------------------------------
+00052     // Unimplemented constructors and operators
+00053     // -----------------------------------------------------------------------
+00056     DOMError(const DOMError &);
+00057     DOMError & operator = (const DOMError &);
+00059 
+00060 public:
+00061     // -----------------------------------------------------------------------
+00062     //  All constructors are hidden, just the destructor is available
+00063     // -----------------------------------------------------------------------
+00070     virtual ~DOMError() {};
+00072 
+00073     // -----------------------------------------------------------------------
+00074     //  Class types
+00075     // -----------------------------------------------------------------------
+00083     enum ErrorSeverity
+00084     {
+00085         DOM_SEVERITY_WARNING     = 0,
+00086         DOM_SEVERITY_ERROR       = 1,
+00087         DOM_SEVERITY_FATAL_ERROR = 2
+00088     };
+00090 
+00091 
+00092     // -----------------------------------------------------------------------
+00093     //  Virtual DOMError interface
+00094     // -----------------------------------------------------------------------
+00097     // -----------------------------------------------------------------------
+00098     //  Getter methods
+00099     // -----------------------------------------------------------------------
+00108     virtual short getSeverity() const = 0;
+00109 
+00118     virtual const XMLCh* getMessage() const = 0;
+00119 
+00128     virtual DOMLocator* getLocation() const = 0;
+00129 
+00138     virtual void* getRelatedException() const = 0;
+00139 
+00157     virtual const XMLCh* getType() const = 0;
+00158 
+00167     virtual void* getRelatedData() const = 0;
+00168 
+00169 
+00170     // -----------------------------------------------------------------------
+00171     //  Setter methods
+00172     // -----------------------------------------------------------------------
+00182     virtual void setSeverity(const short severity) = 0;
+00183 
+00193     virtual void setMessage(const XMLCh* const message) = 0;
+00194 
+00204     virtual void setLocation(DOMLocator* const location) = 0;
+00205 
+00215     virtual void setRelatedException(void* exc) const = 0;
+00216 
+00234     virtual void setType(const XMLCh* type) = 0;
+00235 
+00244     virtual void setRelatedData(void* relatedData) = 0;
+00245 
+00247 
+00248 };
+00249 
+00250 XERCES_CPP_NAMESPACE_END
+00251 
+00252 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMError_8hpp.html b/docs/dom3-api/DOMError_8hpp.html new file mode 100644 index 00000000..c2da6fbb --- /dev/null +++ b/docs/dom3-api/DOMError_8hpp.html @@ -0,0 +1,46 @@ + + +XQilla DOM Level 3 API: DOMError.hpp File Reference + + + + + + +

DOMError.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for DOMError.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMError
 DOMError is an interface that describes an error. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMError_8hpp__dep__incl.map b/docs/dom3-api/DOMError_8hpp__dep__incl.map new file mode 100644 index 00000000..79367edb --- /dev/null +++ b/docs/dom3-api/DOMError_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 166,8 243,32 diff --git a/docs/dom3-api/DOMError_8hpp__dep__incl.md5 b/docs/dom3-api/DOMError_8hpp__dep__incl.md5 new file mode 100644 index 00000000..57416c84 --- /dev/null +++ b/docs/dom3-api/DOMError_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +242186e337edaa993a77dd40169bea3a \ No newline at end of file diff --git a/docs/dom3-api/DOMError_8hpp__dep__incl.png b/docs/dom3-api/DOMError_8hpp__dep__incl.png new file mode 100644 index 00000000..bf8f3bef Binary files /dev/null and b/docs/dom3-api/DOMError_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMError_8hpp__incl.map b/docs/dom3-api/DOMError_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMError_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMError_8hpp__incl.md5 b/docs/dom3-api/DOMError_8hpp__incl.md5 new file mode 100644 index 00000000..e2140397 --- /dev/null +++ b/docs/dom3-api/DOMError_8hpp__incl.md5 @@ -0,0 +1 @@ +9d062b2765a6275ec14bde0841271fd0 \ No newline at end of file diff --git a/docs/dom3-api/DOMError_8hpp__incl.png b/docs/dom3-api/DOMError_8hpp__incl.png new file mode 100644 index 00000000..2d8f445c Binary files /dev/null and b/docs/dom3-api/DOMError_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMException_8cpp.html b/docs/dom3-api/DOMException_8cpp.html new file mode 100644 index 00000000..f0666bc2 --- /dev/null +++ b/docs/dom3-api/DOMException_8cpp.html @@ -0,0 +1,42 @@ + + +XQilla DOM Level 3 API: DOMException.cpp File Reference + + + + + + +

DOMException.cpp File Reference

#include <xercesc/dom/DOMImplementation.hpp>
+#include <xercesc/util/XMLString.hpp>
+#include <xercesc/framework/MemoryManager.hpp>
+#include "DOMException.hpp"
+ +

+Include dependency graph for DOMException.cpp:

+ + + + + + + + + + +

Namespaces

namespace  xercesc
+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMException_8cpp__incl.map b/docs/dom3-api/DOMException_8cpp__incl.map new file mode 100644 index 00000000..08e84ad5 --- /dev/null +++ b/docs/dom3-api/DOMException_8cpp__incl.map @@ -0,0 +1,4 @@ +base referer +rect $DOMImplementation_8hpp.html 202,8 453,32 +rect $DOMException_8hpp.html 509,33 728,57 +rect $MemoryManager_8hpp.html 196,154 460,178 diff --git a/docs/dom3-api/DOMException_8cpp__incl.md5 b/docs/dom3-api/DOMException_8cpp__incl.md5 new file mode 100644 index 00000000..ae2e0e8a --- /dev/null +++ b/docs/dom3-api/DOMException_8cpp__incl.md5 @@ -0,0 +1 @@ +aafda9588a95d9c5f918511f8d545803 \ No newline at end of file diff --git a/docs/dom3-api/DOMException_8cpp__incl.png b/docs/dom3-api/DOMException_8cpp__incl.png new file mode 100644 index 00000000..8f2d60ea Binary files /dev/null and b/docs/dom3-api/DOMException_8cpp__incl.png differ diff --git a/docs/dom3-api/DOMException_8hpp-source.html b/docs/dom3-api/DOMException_8hpp-source.html new file mode 100644 index 00000000..88fe2ce1 --- /dev/null +++ b/docs/dom3-api/DOMException_8hpp-source.html @@ -0,0 +1,135 @@ + + +XQilla DOM Level 3 API: DOMException.hpp Source File + + + + + + +

DOMException.hpp

Go to the documentation of this file.
00001 #ifndef DOMException_HEADER_GUARD_
+00002 #define DOMException_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMException.hpp 176026 2004-09-08 13:57:07Z peiyongz $
+00022  */
+00023 
+00024 #include <xercesc/util/XercesDefs.hpp>
+00025 #include <xercesc/util/PlatformUtils.hpp>
+00026 
+00027 XERCES_CPP_NAMESPACE_BEGIN
+00028 
+00029 
+00049 class MemoryManager;
+00050 
+00051 class CDOM_EXPORT DOMException  {
+00052 public:
+00053     // -----------------------------------------------------------------------
+00054     //  Constructors
+00055     // -----------------------------------------------------------------------
+00062     DOMException();
+00063 
+00071     DOMException(      
+00072                        short                 code
+00073                , const XMLCh*                message
+00074                ,       MemoryManager* const  memoryManager = XMLPlatformUtils::fgMemoryManager
+00075                 );
+00076 
+00082     DOMException(const DOMException &other);
+00083 
+00085 
+00086     // -----------------------------------------------------------------------
+00087     //  Destructors
+00088     // -----------------------------------------------------------------------
+00095     virtual ~DOMException();
+00097 
+00098 public:
+00099     // -----------------------------------------------------------------------
+00100     //  Class Types
+00101     // -----------------------------------------------------------------------
+00178     enum ExceptionCode {
+00179          INDEX_SIZE_ERR       = 1,
+00180          DOMSTRING_SIZE_ERR   = 2,
+00181          HIERARCHY_REQUEST_ERR = 3,
+00182          WRONG_DOCUMENT_ERR   = 4,
+00183          INVALID_CHARACTER_ERR = 5,
+00184          NO_DATA_ALLOWED_ERR  = 6,
+00185          NO_MODIFICATION_ALLOWED_ERR = 7,
+00186          NOT_FOUND_ERR        = 8,
+00187          NOT_SUPPORTED_ERR    = 9,
+00188          INUSE_ATTRIBUTE_ERR  = 10,
+00189          INVALID_STATE_ERR    = 11,
+00190          SYNTAX_ERR     = 12,
+00191          INVALID_MODIFICATION_ERR    = 13,
+00192          NAMESPACE_ERR     = 14,
+00193          INVALID_ACCESS_ERR   = 15,
+00194          VALIDATION_ERR       = 16
+00195         };
+00197 
+00198     // -----------------------------------------------------------------------
+00199     //  Getter
+00200     // -----------------------------------------------------------------------
+00201     inline const XMLCh* getMessage()    const;
+00202 
+00203     // -----------------------------------------------------------------------
+00204     //  Class Types
+00205     // -----------------------------------------------------------------------
+00212     ExceptionCode   code;
+00213 
+00220     const XMLCh *msg;
+00222 
+00223 protected:
+00224 
+00225     MemoryManager*  fMemoryManager;
+00226 
+00227 private:
+00228 
+00236     bool            fMsgOwned;
+00237 
+00238 private:
+00239     // -----------------------------------------------------------------------
+00240     // Unimplemented constructors and operators
+00241     // -----------------------------------------------------------------------    
+00242     DOMException & operator = (const DOMException &);
+00243 };
+00244 
+00245 inline const XMLCh* DOMException::getMessage() const
+00246 {
+00247     return msg;
+00248 }
+00249 
+00250 XERCES_CPP_NAMESPACE_END
+00251 
+00252 #endif
+00253 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMException_8hpp.html b/docs/dom3-api/DOMException_8hpp.html new file mode 100644 index 00000000..98332fdc --- /dev/null +++ b/docs/dom3-api/DOMException_8hpp.html @@ -0,0 +1,55 @@ + + +XQilla DOM Level 3 API: DOMException.hpp File Reference + + + + + + +

DOMException.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xercesc/util/PlatformUtils.hpp>
+ +

+Include dependency graph for DOMException.hpp:

+ + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + + + + + + +

+Go to the source code of this file. + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMException
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMException_8hpp__dep__incl.map b/docs/dom3-api/DOMException_8hpp__dep__incl.map new file mode 100644 index 00000000..3f75c8b8 --- /dev/null +++ b/docs/dom3-api/DOMException_8hpp__dep__incl.map @@ -0,0 +1,8 @@ +base referer +rect $XPath2Result_8hpp.html 217,58 347,82 +rect $XQillaExpression_8hpp.html 431,34 581,58 +rect $DOM_8hpp.html 673,158 750,182 +rect $DOMException_8cpp.html 643,281 779,305 +rect $DOMImplementation_8hpp.html 421,256 591,280 +rect $DOMRangeException_8hpp.html 194,181 370,205 +rect $DOMRangeException_8cpp.html 418,208 594,232 diff --git a/docs/dom3-api/DOMException_8hpp__dep__incl.md5 b/docs/dom3-api/DOMException_8hpp__dep__incl.md5 new file mode 100644 index 00000000..85c61bfb --- /dev/null +++ b/docs/dom3-api/DOMException_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +0787d91081f90ad719cd4b51e4e138f9 \ No newline at end of file diff --git a/docs/dom3-api/DOMException_8hpp__dep__incl.png b/docs/dom3-api/DOMException_8hpp__dep__incl.png new file mode 100644 index 00000000..b7545472 Binary files /dev/null and b/docs/dom3-api/DOMException_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMException_8hpp__incl.map b/docs/dom3-api/DOMException_8hpp__incl.map new file mode 100644 index 00000000..194372d5 --- /dev/null +++ b/docs/dom3-api/DOMException_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $PlatformUtils_8hpp.html 195,56 390,80 diff --git a/docs/dom3-api/DOMException_8hpp__incl.md5 b/docs/dom3-api/DOMException_8hpp__incl.md5 new file mode 100644 index 00000000..953ae912 --- /dev/null +++ b/docs/dom3-api/DOMException_8hpp__incl.md5 @@ -0,0 +1 @@ +46148a3cae8ccf47fc2aa6745e6c7d52 \ No newline at end of file diff --git a/docs/dom3-api/DOMException_8hpp__incl.png b/docs/dom3-api/DOMException_8hpp__incl.png new file mode 100644 index 00000000..39455aee Binary files /dev/null and b/docs/dom3-api/DOMException_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMImplementationLS_8hpp-source.html b/docs/dom3-api/DOMImplementationLS_8hpp-source.html new file mode 100644 index 00000000..550bfa3c --- /dev/null +++ b/docs/dom3-api/DOMImplementationLS_8hpp-source.html @@ -0,0 +1,111 @@ + + +XQilla DOM Level 3 API: DOMImplementationLS.hpp Source File + + + + + + +

DOMImplementationLS.hpp

Go to the documentation of this file.
00001 #ifndef DOMImplementationLS_HEADER_GUARD_
+00002 #define DOMImplementationLS_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMImplementationLS.hpp 191054 2005-06-17 02:56:35Z jberry $
+00022  */
+00023 
+00024 
+00025 #include <xercesc/util/PlatformUtils.hpp>
+00026 
+00027 XERCES_CPP_NAMESPACE_BEGIN
+00028 
+00029 
+00030 class DOMBuilder;
+00031 class DOMWriter;
+00032 class DOMInputSource;
+00033 class MemoryManager;
+00034 class XMLGrammarPool;
+00035 
+00049 class CDOM_EXPORT DOMImplementationLS
+00050 {
+00051 protected:
+00052     // -----------------------------------------------------------------------
+00053     //  Hidden constructors
+00054     // -----------------------------------------------------------------------
+00057     DOMImplementationLS() {};
+00059 
+00060 private:
+00061     // -----------------------------------------------------------------------
+00062     // Unimplemented constructors and operators
+00063     // -----------------------------------------------------------------------
+00066     DOMImplementationLS(const DOMImplementationLS &);
+00067     DOMImplementationLS & operator = (const DOMImplementationLS &);
+00069 
+00070 public:
+00071     // -----------------------------------------------------------------------
+00072     //  All constructors are hidden, just the destructor is available
+00073     // -----------------------------------------------------------------------
+00080     virtual ~DOMImplementationLS() {};
+00082 
+00083     // -----------------------------------------------------------------------
+00084     //  Public constants
+00085     // -----------------------------------------------------------------------
+00094     enum
+00095     {
+00096         MODE_SYNCHRONOUS = 1,
+00097         MODE_ASYNCHRONOUS = 2
+00098     };
+00100 
+00101     // -----------------------------------------------------------------------
+00102     // Virtual DOMImplementation LS interface
+00103     // -----------------------------------------------------------------------
+00106     // -----------------------------------------------------------------------
+00107     //  Factory create methods
+00108     // -----------------------------------------------------------------------
+00140     virtual DOMBuilder* createDOMBuilder(const short            mode,
+00141                                          const XMLCh* const     schemaType,
+00142                                          MemoryManager* const   manager = XMLPlatformUtils::fgMemoryManager,
+00143                                          XMLGrammarPool*  const gramPool = 0) = 0;
+00144 
+00145 
+00157     virtual DOMWriter* createDOMWriter(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0;
+00158 
+00171     virtual DOMInputSource* createDOMInputSource() = 0;
+00172 
+00174 };
+00175 
+00176 
+00177 XERCES_CPP_NAMESPACE_END
+00178 
+00179 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMImplementationLS_8hpp.html b/docs/dom3-api/DOMImplementationLS_8hpp.html new file mode 100644 index 00000000..82ee48c6 --- /dev/null +++ b/docs/dom3-api/DOMImplementationLS_8hpp.html @@ -0,0 +1,50 @@ + + +XQilla DOM Level 3 API: DOMImplementationLS.hpp File Reference + + + + + + +

DOMImplementationLS.hpp File Reference

#include <xercesc/util/PlatformUtils.hpp>
+ +

+Include dependency graph for DOMImplementationLS.hpp:

+ + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + + +

+Go to the source code of this file. + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMImplementationLS
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMImplementationLS_8hpp__dep__incl.map b/docs/dom3-api/DOMImplementationLS_8hpp__dep__incl.map new file mode 100644 index 00000000..d65c7a8d --- /dev/null +++ b/docs/dom3-api/DOMImplementationLS_8hpp__dep__incl.map @@ -0,0 +1,4 @@ +base referer +rect $DOM_8hpp.html 492,10 569,34 +rect $DOMImplementation_8hpp.html 242,58 413,82 +rect $DOMException_8cpp.html 462,58 598,82 diff --git a/docs/dom3-api/DOMImplementationLS_8hpp__dep__incl.md5 b/docs/dom3-api/DOMImplementationLS_8hpp__dep__incl.md5 new file mode 100644 index 00000000..0d23820f --- /dev/null +++ b/docs/dom3-api/DOMImplementationLS_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +2365a5539387761267e37785f933ece7 \ No newline at end of file diff --git a/docs/dom3-api/DOMImplementationLS_8hpp__dep__incl.png b/docs/dom3-api/DOMImplementationLS_8hpp__dep__incl.png new file mode 100644 index 00000000..3e09c14d Binary files /dev/null and b/docs/dom3-api/DOMImplementationLS_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMImplementationLS_8hpp__incl.map b/docs/dom3-api/DOMImplementationLS_8hpp__incl.map new file mode 100644 index 00000000..ff989e33 --- /dev/null +++ b/docs/dom3-api/DOMImplementationLS_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $PlatformUtils_8hpp.html 243,32 438,56 diff --git a/docs/dom3-api/DOMImplementationLS_8hpp__incl.md5 b/docs/dom3-api/DOMImplementationLS_8hpp__incl.md5 new file mode 100644 index 00000000..49b0f883 --- /dev/null +++ b/docs/dom3-api/DOMImplementationLS_8hpp__incl.md5 @@ -0,0 +1 @@ +992895e7a8e550c7df3a8ce9c91a7ee0 \ No newline at end of file diff --git a/docs/dom3-api/DOMImplementationLS_8hpp__incl.png b/docs/dom3-api/DOMImplementationLS_8hpp__incl.png new file mode 100644 index 00000000..8238badb Binary files /dev/null and b/docs/dom3-api/DOMImplementationLS_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMImplementationRegistry_8hpp-source.html b/docs/dom3-api/DOMImplementationRegistry_8hpp-source.html new file mode 100644 index 00000000..24ac68e6 --- /dev/null +++ b/docs/dom3-api/DOMImplementationRegistry_8hpp-source.html @@ -0,0 +1,72 @@ + + +XQilla DOM Level 3 API: DOMImplementationRegistry.hpp Source File + + + + + + +

DOMImplementationRegistry.hpp

Go to the documentation of this file.
00001 #ifndef DOMImplementationRegistry_HEADER_GUARD_
+00002 #define DOMImplementationRegistry_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2002-2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMImplementationRegistry.hpp 176026 2004-09-08 13:57:07Z peiyongz $
+00022  */
+00023 
+00037 #include <xercesc/util/XercesDefs.hpp>
+00038 
+00039 XERCES_CPP_NAMESPACE_BEGIN
+00040 
+00041 
+00042 class DOMImplementation;
+00043 class DOMImplementationSource;
+00044 
+00045 class CDOM_EXPORT DOMImplementationRegistry
+00046 {
+00047 public:
+00048     // -----------------------------------------------------------------------
+00049     //  Static DOMImplementationRegistry interface
+00050     // -----------------------------------------------------------------------
+00068     static DOMImplementation* getDOMImplementation(const XMLCh* features);
+00069 
+00079     static void addSource(DOMImplementationSource* source);
+00081 
+00082 private:
+00083     DOMImplementationRegistry();
+00084 };
+00085 
+00086 XERCES_CPP_NAMESPACE_END
+00087 
+00088 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMImplementationRegistry_8hpp.html b/docs/dom3-api/DOMImplementationRegistry_8hpp.html new file mode 100644 index 00000000..3264e93d --- /dev/null +++ b/docs/dom3-api/DOMImplementationRegistry_8hpp.html @@ -0,0 +1,45 @@ + + +XQilla DOM Level 3 API: DOMImplementationRegistry.hpp File Reference + + + + + + +

DOMImplementationRegistry.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for DOMImplementationRegistry.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMImplementationRegistry
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMImplementationRegistry_8hpp__dep__incl.map b/docs/dom3-api/DOMImplementationRegistry_8hpp__dep__incl.map new file mode 100644 index 00000000..5b390ea8 --- /dev/null +++ b/docs/dom3-api/DOMImplementationRegistry_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 276,8 353,32 diff --git a/docs/dom3-api/DOMImplementationRegistry_8hpp__dep__incl.md5 b/docs/dom3-api/DOMImplementationRegistry_8hpp__dep__incl.md5 new file mode 100644 index 00000000..63e130db --- /dev/null +++ b/docs/dom3-api/DOMImplementationRegistry_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +1eabba5ec02bea723cb0f448cb4a5ecb \ No newline at end of file diff --git a/docs/dom3-api/DOMImplementationRegistry_8hpp__dep__incl.png b/docs/dom3-api/DOMImplementationRegistry_8hpp__dep__incl.png new file mode 100644 index 00000000..a555c93c Binary files /dev/null and b/docs/dom3-api/DOMImplementationRegistry_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMImplementationRegistry_8hpp__incl.map b/docs/dom3-api/DOMImplementationRegistry_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMImplementationRegistry_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMImplementationRegistry_8hpp__incl.md5 b/docs/dom3-api/DOMImplementationRegistry_8hpp__incl.md5 new file mode 100644 index 00000000..69a4c93d --- /dev/null +++ b/docs/dom3-api/DOMImplementationRegistry_8hpp__incl.md5 @@ -0,0 +1 @@ +33ad44ab082e1bac1b5e50e54cb53ef8 \ No newline at end of file diff --git a/docs/dom3-api/DOMImplementationRegistry_8hpp__incl.png b/docs/dom3-api/DOMImplementationRegistry_8hpp__incl.png new file mode 100644 index 00000000..4f46b0cf Binary files /dev/null and b/docs/dom3-api/DOMImplementationRegistry_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMImplementationSource_8hpp-source.html b/docs/dom3-api/DOMImplementationSource_8hpp-source.html new file mode 100644 index 00000000..8d03eb46 --- /dev/null +++ b/docs/dom3-api/DOMImplementationSource_8hpp-source.html @@ -0,0 +1,86 @@ + + +XQilla DOM Level 3 API: DOMImplementationSource.hpp Source File + + + + + + +

DOMImplementationSource.hpp

Go to the documentation of this file.
00001 #ifndef DOMImplementationSource_HEADER_GUARD_
+00002 #define DOMImplementationSource_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2002-2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMImplementationSource.hpp 176026 2004-09-08 13:57:07Z peiyongz $
+00022  */
+00023 
+00034 #include <xercesc/util/XercesDefs.hpp>
+00035 
+00036 XERCES_CPP_NAMESPACE_BEGIN
+00037 
+00038 
+00039 class DOMImplementation;
+00040 
+00041 class CDOM_EXPORT DOMImplementationSource
+00042 {
+00043 protected :
+00044     // -----------------------------------------------------------------------
+00045     //  Hidden constructors
+00046     // -----------------------------------------------------------------------
+00049     DOMImplementationSource() {};
+00051 
+00052 private:
+00053     // -----------------------------------------------------------------------
+00054     // Unimplemented constructors and operators
+00055     // -----------------------------------------------------------------------
+00058     DOMImplementationSource(const DOMImplementationSource &);
+00059     DOMImplementationSource & operator = (const DOMImplementationSource &);
+00061 
+00062 
+00063 public:
+00064     // -----------------------------------------------------------------------
+00065     //  All constructors are hidden, just the destructor is available
+00066     // -----------------------------------------------------------------------
+00073     virtual ~DOMImplementationSource() {};
+00075 
+00076     // -----------------------------------------------------------------------
+00077     //  Virtual DOMImplementationSource interface
+00078     // -----------------------------------------------------------------------
+00094     virtual DOMImplementation* getDOMImplementation(const XMLCh* features) const = 0;
+00096 
+00097 };
+00098 
+00099 XERCES_CPP_NAMESPACE_END
+00100 
+00101 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMImplementationSource_8hpp.html b/docs/dom3-api/DOMImplementationSource_8hpp.html new file mode 100644 index 00000000..6970c00c --- /dev/null +++ b/docs/dom3-api/DOMImplementationSource_8hpp.html @@ -0,0 +1,45 @@ + + +XQilla DOM Level 3 API: DOMImplementationSource.hpp File Reference + + + + + + +

DOMImplementationSource.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for DOMImplementationSource.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMImplementationSource
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMImplementationSource_8hpp__dep__incl.map b/docs/dom3-api/DOMImplementationSource_8hpp__dep__incl.map new file mode 100644 index 00000000..a1edfed3 --- /dev/null +++ b/docs/dom3-api/DOMImplementationSource_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 270,8 347,32 diff --git a/docs/dom3-api/DOMImplementationSource_8hpp__dep__incl.md5 b/docs/dom3-api/DOMImplementationSource_8hpp__dep__incl.md5 new file mode 100644 index 00000000..2e2bfa47 --- /dev/null +++ b/docs/dom3-api/DOMImplementationSource_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +b8602fdfe40db02ff83e4d3ef57c741e \ No newline at end of file diff --git a/docs/dom3-api/DOMImplementationSource_8hpp__dep__incl.png b/docs/dom3-api/DOMImplementationSource_8hpp__dep__incl.png new file mode 100644 index 00000000..080a2b15 Binary files /dev/null and b/docs/dom3-api/DOMImplementationSource_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMImplementationSource_8hpp__incl.map b/docs/dom3-api/DOMImplementationSource_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMImplementationSource_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMImplementationSource_8hpp__incl.md5 b/docs/dom3-api/DOMImplementationSource_8hpp__incl.md5 new file mode 100644 index 00000000..1b93505b --- /dev/null +++ b/docs/dom3-api/DOMImplementationSource_8hpp__incl.md5 @@ -0,0 +1 @@ +5a56d197740f8c5ddd0a162a2332d9e0 \ No newline at end of file diff --git a/docs/dom3-api/DOMImplementationSource_8hpp__incl.png b/docs/dom3-api/DOMImplementationSource_8hpp__incl.png new file mode 100644 index 00000000..4b0778dd Binary files /dev/null and b/docs/dom3-api/DOMImplementationSource_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMImplementation_8hpp-source.html b/docs/dom3-api/DOMImplementation_8hpp-source.html new file mode 100644 index 00000000..087adcfa --- /dev/null +++ b/docs/dom3-api/DOMImplementation_8hpp-source.html @@ -0,0 +1,129 @@ + + +XQilla DOM Level 3 API: DOMImplementation.hpp Source File + + + + + + +

DOMImplementation.hpp

Go to the documentation of this file.
00001 #ifndef DOMImplementation_HEADER_GUARD_
+00002 #define DOMImplementation_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMImplementation.hpp 176026 2004-09-08 13:57:07Z peiyongz $
+00022  */
+00023 
+00024 #include <xercesc/dom/DOMImplementationLS.hpp>
+00025 #include <xercesc/dom/DOMException.hpp>
+00026 #include <xercesc/dom/DOMRangeException.hpp>
+00027 #include <xercesc/util/PlatformUtils.hpp>
+00028 
+00029 XERCES_CPP_NAMESPACE_BEGIN
+00030 
+00031 
+00032 class DOMDocument;
+00033 class DOMDocumentType;
+00034 
+00041 class CDOM_EXPORT DOMImplementation : public DOMImplementationLS
+00042 {
+00043 protected:
+00044     // -----------------------------------------------------------------------
+00045     //  Hidden constructors
+00046     // -----------------------------------------------------------------------
+00049         DOMImplementation() {};                                      // no plain constructor
+00051 
+00052 private:
+00053     // -----------------------------------------------------------------------
+00054     // Unimplemented constructors and operators
+00055     // -----------------------------------------------------------------------
+00058         DOMImplementation(const DOMImplementation &);   // no copy construtor.
+00059         DOMImplementation & operator = (const DOMImplementation &);  // No Assignment
+00061 
+00062 
+00063 public:
+00064     // -----------------------------------------------------------------------
+00065     //  All constructors are hidden, just the destructor is available
+00066     // -----------------------------------------------------------------------
+00073     virtual ~DOMImplementation() {};
+00075 
+00076     // -----------------------------------------------------------------------
+00077     // Virtual DOMImplementation interface
+00078     // -----------------------------------------------------------------------
+00097     virtual bool  hasFeature(const XMLCh *feature,  const XMLCh *version) const = 0;
+00099 
+00100     // -----------------------------------------------------------------------
+00101     // Functions introduced in DOM Level 2
+00102     // -----------------------------------------------------------------------
+00130     virtual  DOMDocumentType *createDocumentType(const XMLCh *qualifiedName,
+00131                                                  const XMLCh *publicId,
+00132                                                  const XMLCh *systemId) = 0;
+00133 
+00172     virtual DOMDocument *createDocument(const XMLCh *namespaceURI,
+00173                                         const XMLCh *qualifiedName,
+00174                                         DOMDocumentType *doctype,
+00175                                         MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0;
+00176 
+00178     // -----------------------------------------------------------------------
+00179     // Functions introduced in DOM Level 3
+00180     // -----------------------------------------------------------------------
+00201     virtual DOMImplementation* getInterface(const XMLCh* feature) = 0;
+00202 
+00204 
+00205     // -----------------------------------------------------------------------
+00206     // Non-standard extension
+00207     // -----------------------------------------------------------------------
+00215     virtual DOMDocument *createDocument(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0;
+00216 
+00224     static DOMImplementation *getImplementation();
+00225 
+00237     static bool loadDOMExceptionMsg
+00238     (
+00239         const   DOMException::ExceptionCode  msgToLoad
+00240         ,       XMLCh* const                 toFill
+00241         , const unsigned int                 maxChars
+00242     );
+00243 
+00255     static bool loadDOMExceptionMsg
+00256     (
+00257         const   DOMRangeException::RangeExceptionCode  msgToLoad
+00258         ,       XMLCh* const                           toFill
+00259         , const unsigned int                           maxChars
+00260     );
+00262 
+00263 };
+00264 
+00265 XERCES_CPP_NAMESPACE_END
+00266 
+00267 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMImplementation_8hpp.html b/docs/dom3-api/DOMImplementation_8hpp.html new file mode 100644 index 00000000..d0e1cd48 --- /dev/null +++ b/docs/dom3-api/DOMImplementation_8hpp.html @@ -0,0 +1,56 @@ + + +XQilla DOM Level 3 API: DOMImplementation.hpp File Reference + + + + + + +

DOMImplementation.hpp File Reference

#include <xercesc/dom/DOMImplementationLS.hpp>
+#include <xercesc/dom/DOMException.hpp>
+#include <xercesc/dom/DOMRangeException.hpp>
+#include <xercesc/util/PlatformUtils.hpp>
+ +

+Include dependency graph for DOMImplementation.hpp:

+ + + + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMImplementation
 The DOMImplementation interface provides a number of methods for performing operations that are independent of any particular instance of the document object model. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMImplementation_8hpp__dep__incl.map b/docs/dom3-api/DOMImplementation_8hpp__dep__incl.map new file mode 100644 index 00000000..a0c73767 --- /dev/null +++ b/docs/dom3-api/DOMImplementation_8hpp__dep__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DOM_8hpp.html 257,8 334,32 +rect $DOMException_8cpp.html 227,56 363,80 diff --git a/docs/dom3-api/DOMImplementation_8hpp__dep__incl.md5 b/docs/dom3-api/DOMImplementation_8hpp__dep__incl.md5 new file mode 100644 index 00000000..bf084554 --- /dev/null +++ b/docs/dom3-api/DOMImplementation_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +c28dbfe5bc64c83e55c0d1a32f40cf9f \ No newline at end of file diff --git a/docs/dom3-api/DOMImplementation_8hpp__dep__incl.png b/docs/dom3-api/DOMImplementation_8hpp__dep__incl.png new file mode 100644 index 00000000..4a0bbb55 Binary files /dev/null and b/docs/dom3-api/DOMImplementation_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMImplementation_8hpp__incl.map b/docs/dom3-api/DOMImplementation_8hpp__incl.map new file mode 100644 index 00000000..5f8f71cc --- /dev/null +++ b/docs/dom3-api/DOMImplementation_8hpp__incl.map @@ -0,0 +1,5 @@ +base referer +rect $DOMImplementationLS_8hpp.html 533,10 799,34 +rect $PlatformUtils_8hpp.html 849,60 1043,84 +rect $DOMException_8hpp.html 557,110 775,134 +rect $DOMRangeException_8hpp.html 227,160 483,184 diff --git a/docs/dom3-api/DOMImplementation_8hpp__incl.md5 b/docs/dom3-api/DOMImplementation_8hpp__incl.md5 new file mode 100644 index 00000000..a533b476 --- /dev/null +++ b/docs/dom3-api/DOMImplementation_8hpp__incl.md5 @@ -0,0 +1 @@ +7971d62b84321fbab6115ba915108fb6 \ No newline at end of file diff --git a/docs/dom3-api/DOMImplementation_8hpp__incl.png b/docs/dom3-api/DOMImplementation_8hpp__incl.png new file mode 100644 index 00000000..c407888c Binary files /dev/null and b/docs/dom3-api/DOMImplementation_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMInputSource_8hpp-source.html b/docs/dom3-api/DOMInputSource_8hpp-source.html new file mode 100644 index 00000000..9af2a8dc --- /dev/null +++ b/docs/dom3-api/DOMInputSource_8hpp-source.html @@ -0,0 +1,124 @@ + + +XQilla DOM Level 3 API: DOMInputSource.hpp Source File + + + + + + +

DOMInputSource.hpp

Go to the documentation of this file.
00001 #ifndef DOMInputSource_HEADER_GUARD_
+00002 #define DOMInputSource_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMInputSource.hpp 176026 2004-09-08 13:57:07Z peiyongz $
+00022  */
+00023 
+00024 
+00025 #include <xercesc/util/XercesDefs.hpp>
+00026 
+00027 XERCES_CPP_NAMESPACE_BEGIN
+00028 
+00029 
+00030 class BinInputStream;
+00031 
+00032 
+00059 class CDOM_EXPORT DOMInputSource
+00060 {
+00061 protected:
+00062     // -----------------------------------------------------------------------
+00063     //  Hidden constructors
+00064     // -----------------------------------------------------------------------
+00067     DOMInputSource() {};
+00069 
+00070 private:
+00071     // -----------------------------------------------------------------------
+00072     // Unimplemented constructors and operators
+00073     // -----------------------------------------------------------------------
+00076     DOMInputSource(const DOMInputSource &);
+00077     DOMInputSource & operator = (const DOMInputSource &);
+00079 
+00080 public:
+00081     // -----------------------------------------------------------------------
+00082     //  All constructors are hidden, just the destructor is available
+00083     // -----------------------------------------------------------------------
+00090     virtual ~DOMInputSource() {};
+00092 
+00093     // -----------------------------------------------------------------------
+00094     //  Virtual DOMInputSource interface
+00095     // -----------------------------------------------------------------------
+00098     // -----------------------------------------------------------------------
+00099     //  Getter methods
+00100     // -----------------------------------------------------------------------
+00113     virtual const XMLCh* getEncoding() const = 0;
+00114 
+00115 
+00125     virtual const XMLCh* getPublicId() const = 0;
+00126 
+00127 
+00139     virtual const XMLCh* getSystemId() const = 0;
+00140 
+00141 
+00153     virtual const XMLCh* getBaseURI() const = 0;
+00154 
+00155     // -----------------------------------------------------------------------
+00156     //  Setter methods
+00157     // -----------------------------------------------------------------------
+00172     virtual void setEncoding(const XMLCh* const encodingStr) = 0;
+00173 
+00174 
+00187     virtual void setPublicId(const XMLCh* const publicId) = 0;
+00188 
+00204     virtual void setSystemId(const XMLCh* const systemId) = 0;
+00205 
+00217     virtual void setBaseURI(const XMLCh* const baseURI) = 0;
+00219 
+00220     // -----------------------------------------------------------------------
+00221     //  Non-standard Extension
+00222     // -----------------------------------------------------------------------
+00225 
+00238     virtual BinInputStream* makeStream() const = 0;
+00239 
+00251     virtual void setIssueFatalErrorIfNotFound(const bool flag) = 0;
+00252 
+00253 
+00264     virtual bool getIssueFatalErrorIfNotFound() const = 0;
+00265 
+00272     virtual void              release() = 0;
+00274 };
+00275 
+00276 
+00277 XERCES_CPP_NAMESPACE_END
+00278 
+00279 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMInputSource_8hpp.html b/docs/dom3-api/DOMInputSource_8hpp.html new file mode 100644 index 00000000..bd49a50e --- /dev/null +++ b/docs/dom3-api/DOMInputSource_8hpp.html @@ -0,0 +1,46 @@ + + +XQilla DOM Level 3 API: DOMInputSource.hpp File Reference + + + + + + +

DOMInputSource.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for DOMInputSource.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMInputSource
 This interface represents a single input source for an XML entity. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMInputSource_8hpp__dep__incl.map b/docs/dom3-api/DOMInputSource_8hpp__dep__incl.map new file mode 100644 index 00000000..db872ee7 --- /dev/null +++ b/docs/dom3-api/DOMInputSource_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 209,8 286,32 diff --git a/docs/dom3-api/DOMInputSource_8hpp__dep__incl.md5 b/docs/dom3-api/DOMInputSource_8hpp__dep__incl.md5 new file mode 100644 index 00000000..128bf348 --- /dev/null +++ b/docs/dom3-api/DOMInputSource_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +4912dcfa5ef195d25bb092b20c461120 \ No newline at end of file diff --git a/docs/dom3-api/DOMInputSource_8hpp__dep__incl.png b/docs/dom3-api/DOMInputSource_8hpp__dep__incl.png new file mode 100644 index 00000000..dbc71fc3 Binary files /dev/null and b/docs/dom3-api/DOMInputSource_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMInputSource_8hpp__incl.map b/docs/dom3-api/DOMInputSource_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMInputSource_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMInputSource_8hpp__incl.md5 b/docs/dom3-api/DOMInputSource_8hpp__incl.md5 new file mode 100644 index 00000000..02a09f2e --- /dev/null +++ b/docs/dom3-api/DOMInputSource_8hpp__incl.md5 @@ -0,0 +1 @@ +135696cb15124ce2a74589573774a438 \ No newline at end of file diff --git a/docs/dom3-api/DOMInputSource_8hpp__incl.png b/docs/dom3-api/DOMInputSource_8hpp__incl.png new file mode 100644 index 00000000..5aebd5d7 Binary files /dev/null and b/docs/dom3-api/DOMInputSource_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMLocator_8hpp-source.html b/docs/dom3-api/DOMLocator_8hpp-source.html new file mode 100644 index 00000000..73b7049c --- /dev/null +++ b/docs/dom3-api/DOMLocator_8hpp-source.html @@ -0,0 +1,110 @@ + + +XQilla DOM Level 3 API: DOMLocator.hpp Source File + + + + + + +

DOMLocator.hpp

Go to the documentation of this file.
00001 #ifndef DOMLocator_HEADER_GUARD_
+00002 #define DOMLocator_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMLocator.hpp 191054 2005-06-17 02:56:35Z jberry $
+00022  */
+00023 
+00024 #include <xercesc/util/XercesDefs.hpp>
+00025 
+00026 XERCES_CPP_NAMESPACE_BEGIN
+00027 
+00028 
+00029 class DOMNode;
+00030 
+00031 
+00040 class CDOM_EXPORT DOMLocator
+00041 {
+00042 protected:
+00043     // -----------------------------------------------------------------------
+00044     //  Hidden constructors
+00045     // -----------------------------------------------------------------------
+00048     DOMLocator() {};
+00050     
+00051 private:    
+00052     // -----------------------------------------------------------------------
+00053     // Unimplemented constructors and operators
+00054     // -----------------------------------------------------------------------
+00057     DOMLocator(const DOMLocator &);
+00058     DOMLocator & operator = (const DOMLocator &);
+00060 
+00061 public:
+00062     // -----------------------------------------------------------------------
+00063     //  All constructors are hidden, just the destructor is available
+00064     // -----------------------------------------------------------------------
+00071     virtual ~DOMLocator() {};
+00073 
+00074     // -----------------------------------------------------------------------
+00075     //  Virtual DOMLocator interface
+00076     // -----------------------------------------------------------------------
+00079     // -----------------------------------------------------------------------
+00080     //  Getter methods
+00081     // -----------------------------------------------------------------------
+00091     virtual XMLSSize_t getLineNumber() const = 0;
+00092 
+00102     virtual XMLSSize_t getColumnNumber() const = 0;
+00103 
+00115     virtual XMLSSize_t getOffset() const = 0;
+00116 
+00126     virtual DOMNode* getErrorNode() const = 0;
+00127 
+00137     virtual const XMLCh* getURI() const = 0;
+00138 
+00139     // -----------------------------------------------------------------------
+00140     //  Setter methods
+00141     // -----------------------------------------------------------------------
+00152     virtual void setLineNumber(const XMLSSize_t lineNumber) = 0;
+00153 
+00164     virtual void setColumnNumber(const XMLSSize_t columnNumber) = 0;
+00165 
+00176     virtual void setOffset(const XMLSSize_t offset) = 0;
+00177 
+00188     virtual void setErrorNode(DOMNode* const errorNode) = 0;
+00189 
+00200     virtual void setURI(const XMLCh* const uri) = 0;
+00201 
+00203 };
+00204 
+00205 XERCES_CPP_NAMESPACE_END
+00206 
+00207 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMLocator_8hpp.html b/docs/dom3-api/DOMLocator_8hpp.html new file mode 100644 index 00000000..a2ba41c1 --- /dev/null +++ b/docs/dom3-api/DOMLocator_8hpp.html @@ -0,0 +1,46 @@ + + +XQilla DOM Level 3 API: DOMLocator.hpp File Reference + + + + + + +

DOMLocator.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for DOMLocator.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMLocator
 DOMLocator is an interface that describes a location. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMLocator_8hpp__dep__incl.map b/docs/dom3-api/DOMLocator_8hpp__dep__incl.map new file mode 100644 index 00000000..2d454850 --- /dev/null +++ b/docs/dom3-api/DOMLocator_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 180,8 257,32 diff --git a/docs/dom3-api/DOMLocator_8hpp__dep__incl.md5 b/docs/dom3-api/DOMLocator_8hpp__dep__incl.md5 new file mode 100644 index 00000000..b9168bde --- /dev/null +++ b/docs/dom3-api/DOMLocator_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +c172943f8f1d8e127c5814da22473914 \ No newline at end of file diff --git a/docs/dom3-api/DOMLocator_8hpp__dep__incl.png b/docs/dom3-api/DOMLocator_8hpp__dep__incl.png new file mode 100644 index 00000000..d74a7de7 Binary files /dev/null and b/docs/dom3-api/DOMLocator_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMLocator_8hpp__incl.map b/docs/dom3-api/DOMLocator_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMLocator_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMLocator_8hpp__incl.md5 b/docs/dom3-api/DOMLocator_8hpp__incl.md5 new file mode 100644 index 00000000..7d5764ff --- /dev/null +++ b/docs/dom3-api/DOMLocator_8hpp__incl.md5 @@ -0,0 +1 @@ +fb1735f6cebe6fd5f134e60c11e4d4f6 \ No newline at end of file diff --git a/docs/dom3-api/DOMLocator_8hpp__incl.png b/docs/dom3-api/DOMLocator_8hpp__incl.png new file mode 100644 index 00000000..c2354e5f Binary files /dev/null and b/docs/dom3-api/DOMLocator_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMNamedNodeMap_8hpp-source.html b/docs/dom3-api/DOMNamedNodeMap_8hpp-source.html new file mode 100644 index 00000000..ae338da3 --- /dev/null +++ b/docs/dom3-api/DOMNamedNodeMap_8hpp-source.html @@ -0,0 +1,113 @@ + + +XQilla DOM Level 3 API: DOMNamedNodeMap.hpp Source File + + + + + + +

DOMNamedNodeMap.hpp

Go to the documentation of this file.
00001 #ifndef DOMNamedNodeMap_HEADER_GUARD_
+00002 #define DOMNamedNodeMap_HEADER_GUARD_
+00003 
+00004 
+00005 /*
+00006  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00007  * 
+00008  * Licensed under the Apache License, Version 2.0 (the "License");
+00009  * you may not use this file except in compliance with the License.
+00010  * You may obtain a copy of the License at
+00011  * 
+00012  *      http://www.apache.org/licenses/LICENSE-2.0
+00013  * 
+00014  * Unless required by applicable law or agreed to in writing, software
+00015  * distributed under the License is distributed on an "AS IS" BASIS,
+00016  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00017  * See the License for the specific language governing permissions and
+00018  * limitations under the License.
+00019  */
+00020 
+00021 /*
+00022  * $Id: DOMNamedNodeMap.hpp 176026 2004-09-08 13:57:07Z peiyongz $
+00023  */
+00024 
+00025 #include <xercesc/util/XercesDefs.hpp>
+00026 
+00027 XERCES_CPP_NAMESPACE_BEGIN
+00028 
+00029 
+00030 class DOMNode;
+00031 
+00045 class CDOM_EXPORT DOMNamedNodeMap {
+00046 protected:
+00047     // -----------------------------------------------------------------------
+00048     //  Hidden constructors
+00049     // -----------------------------------------------------------------------
+00052     DOMNamedNodeMap() {};
+00054 
+00055 private:    
+00056     // -----------------------------------------------------------------------
+00057     // Unimplemented constructors and operators
+00058     // -----------------------------------------------------------------------
+00061     DOMNamedNodeMap(const DOMNamedNodeMap &);
+00062     DOMNamedNodeMap & operator = (const DOMNamedNodeMap &);
+00064 
+00065 public:
+00066     // -----------------------------------------------------------------------
+00067     //  All constructors are hidden, just the destructor is available
+00068     // -----------------------------------------------------------------------
+00075     virtual ~DOMNamedNodeMap() {};
+00077 
+00078     // -----------------------------------------------------------------------
+00079     //  Virtual DOMNamedNodeMap interface
+00080     // -----------------------------------------------------------------------
+00083     // -----------------------------------------------------------------------
+00084     //  Setter methods
+00085     // -----------------------------------------------------------------------
+00112     virtual DOMNode   *setNamedItem(DOMNode *arg) = 0;
+00113 
+00114     // -----------------------------------------------------------------------
+00115     //  Getter methods
+00116     // -----------------------------------------------------------------------
+00129     virtual DOMNode     *item(XMLSize_t index) const = 0;
+00130 
+00140     virtual DOMNode   *getNamedItem(const XMLCh *name) const = 0;
+00141 
+00149     virtual XMLSize_t   getLength() const = 0;
+00150 
+00151     // -----------------------------------------------------------------------
+00152     //  Node methods
+00153     // -----------------------------------------------------------------------
+00169     virtual DOMNode    *removeNamedItem(const XMLCh *name) = 0;
+00171 
+00185     virtual DOMNode   *getNamedItemNS(const XMLCh *namespaceURI,
+00186                                                 const XMLCh *localName) const = 0;
+00187 
+00211     virtual DOMNode   *setNamedItemNS(DOMNode *arg) = 0;
+00212 
+00235     virtual DOMNode     *removeNamedItemNS(const XMLCh *namespaceURI,
+00236                                                   const XMLCh *localName) = 0;
+00238 
+00239 };
+00240 
+00241 #define GetDOMNamedNodeMapMemoryManager   GET_INDIRECT_MM(fOwnerNode)
+00242 
+00243 XERCES_CPP_NAMESPACE_END
+00244 
+00245 #endif
+00246 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMNamedNodeMap_8hpp.html b/docs/dom3-api/DOMNamedNodeMap_8hpp.html new file mode 100644 index 00000000..03e257e9 --- /dev/null +++ b/docs/dom3-api/DOMNamedNodeMap_8hpp.html @@ -0,0 +1,73 @@ + + +XQilla DOM Level 3 API: DOMNamedNodeMap.hpp File Reference + + + + + + +

DOMNamedNodeMap.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for DOMNamedNodeMap.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMNamedNodeMap
 DOMNamedNodeMaps are used to represent collections of nodes that can be accessed by name. More...

Defines

#define GetDOMNamedNodeMapMemoryManager   GET_INDIRECT_MM(fOwnerNode)
+


Define Documentation

+

+ + + + +
+ + + + +
#define GetDOMNamedNodeMapMemoryManager   GET_INDIRECT_MM(fOwnerNode)
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMNamedNodeMap_8hpp__dep__incl.map b/docs/dom3-api/DOMNamedNodeMap_8hpp__dep__incl.map new file mode 100644 index 00000000..8976e97b --- /dev/null +++ b/docs/dom3-api/DOMNamedNodeMap_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 238,8 315,32 diff --git a/docs/dom3-api/DOMNamedNodeMap_8hpp__dep__incl.md5 b/docs/dom3-api/DOMNamedNodeMap_8hpp__dep__incl.md5 new file mode 100644 index 00000000..ea10105f --- /dev/null +++ b/docs/dom3-api/DOMNamedNodeMap_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +f100ed57a6990428df2d48f2dac290fc \ No newline at end of file diff --git a/docs/dom3-api/DOMNamedNodeMap_8hpp__dep__incl.png b/docs/dom3-api/DOMNamedNodeMap_8hpp__dep__incl.png new file mode 100644 index 00000000..12f69567 Binary files /dev/null and b/docs/dom3-api/DOMNamedNodeMap_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMNamedNodeMap_8hpp__incl.map b/docs/dom3-api/DOMNamedNodeMap_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMNamedNodeMap_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMNamedNodeMap_8hpp__incl.md5 b/docs/dom3-api/DOMNamedNodeMap_8hpp__incl.md5 new file mode 100644 index 00000000..ca92eedc --- /dev/null +++ b/docs/dom3-api/DOMNamedNodeMap_8hpp__incl.md5 @@ -0,0 +1 @@ +7545e59540e2e280c470a3cbea20541b \ No newline at end of file diff --git a/docs/dom3-api/DOMNamedNodeMap_8hpp__incl.png b/docs/dom3-api/DOMNamedNodeMap_8hpp__incl.png new file mode 100644 index 00000000..68f8064b Binary files /dev/null and b/docs/dom3-api/DOMNamedNodeMap_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMNodeFilter_8hpp-source.html b/docs/dom3-api/DOMNodeFilter_8hpp-source.html new file mode 100644 index 00000000..adb46d51 --- /dev/null +++ b/docs/dom3-api/DOMNodeFilter_8hpp-source.html @@ -0,0 +1,106 @@ + + +XQilla DOM Level 3 API: DOMNodeFilter.hpp Source File + + + + + + +

DOMNodeFilter.hpp

Go to the documentation of this file.
00001 #ifndef DOMNodeFilter_HEADER_GUARD_
+00002 #define DOMNodeFilter_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMNodeFilter.hpp 176081 2004-09-26 15:38:03Z gareth $
+00022  */
+00023 
+00024 #include <xercesc/dom/DOMNode.hpp>
+00025 
+00026 XERCES_CPP_NAMESPACE_BEGIN
+00027 
+00028 
+00048 class CDOM_EXPORT DOMNodeFilter
+00049 {
+00050 protected:
+00051     // -----------------------------------------------------------------------
+00052     //  Hidden constructors
+00053     // -----------------------------------------------------------------------
+00056     DOMNodeFilter() {};
+00058 
+00059 private:
+00060     // -----------------------------------------------------------------------
+00061     // Unimplemented constructors and operators
+00062     // -----------------------------------------------------------------------
+00065     DOMNodeFilter(const DOMNodeFilter &);
+00066     DOMNodeFilter & operator = (const DOMNodeFilter &);
+00068 
+00069 public:
+00070     // -----------------------------------------------------------------------
+00071     //  All constructors are hidden, just the destructor is available
+00072     // -----------------------------------------------------------------------
+00079     virtual ~DOMNodeFilter() {};
+00081 
+00082     // -----------------------------------------------------------------------
+00083     //  Class Types
+00084     // -----------------------------------------------------------------------
+00111     enum FilterAction {FILTER_ACCEPT = 1,
+00112                        FILTER_REJECT = 2,
+00113                        FILTER_SKIP   = 3};
+00114 
+00176     enum ShowType {
+00177         SHOW_ALL                       = 0x0000FFFF,
+00178         SHOW_ELEMENT                   = 0x00000001,
+00179         SHOW_ATTRIBUTE                 = 0x00000002,
+00180         SHOW_TEXT                      = 0x00000004,
+00181         SHOW_CDATA_SECTION             = 0x00000008,
+00182         SHOW_ENTITY_REFERENCE          = 0x00000010,
+00183         SHOW_ENTITY                    = 0x00000020,
+00184         SHOW_PROCESSING_INSTRUCTION    = 0x00000040,
+00185         SHOW_COMMENT                   = 0x00000080,
+00186         SHOW_DOCUMENT                  = 0x00000100,
+00187         SHOW_DOCUMENT_TYPE             = 0x00000200,
+00188         SHOW_DOCUMENT_FRAGMENT         = 0x00000400,
+00189         SHOW_NOTATION                  = 0x00000800
+00190     };
+00192 
+00193     // -----------------------------------------------------------------------
+00194     //  Virtual DOMNodeFilter interface
+00195     // -----------------------------------------------------------------------
+00210     virtual short acceptNode (const DOMNode* node) const =0;
+00212 
+00213 };
+00214 
+00215 XERCES_CPP_NAMESPACE_END
+00216 
+00217 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMNodeFilter_8hpp.html b/docs/dom3-api/DOMNodeFilter_8hpp.html new file mode 100644 index 00000000..941f0ad1 --- /dev/null +++ b/docs/dom3-api/DOMNodeFilter_8hpp.html @@ -0,0 +1,53 @@ + + +XQilla DOM Level 3 API: DOMNodeFilter.hpp File Reference + + + + + + +

DOMNodeFilter.hpp File Reference

#include <xercesc/dom/DOMNode.hpp>
+ +

+Include dependency graph for DOMNodeFilter.hpp:

+ + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMNodeFilter
 Filters are objects that know how to "filter out" nodes. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMNodeFilter_8hpp__dep__incl.map b/docs/dom3-api/DOMNodeFilter_8hpp__dep__incl.map new file mode 100644 index 00000000..2ab0804f --- /dev/null +++ b/docs/dom3-api/DOMNodeFilter_8hpp__dep__incl.map @@ -0,0 +1,6 @@ +base referer +rect $DOM_8hpp.html 588,129 665,153 +rect $DOMNodeIterator_8hpp.html 386,79 538,103 +rect $DOMTreeWalker_8hpp.html 194,130 338,154 +rect $DOMWriterFilter_8hpp.html 196,179 337,203 +rect $DOMWriter_8hpp.html 406,229 518,253 diff --git a/docs/dom3-api/DOMNodeFilter_8hpp__dep__incl.md5 b/docs/dom3-api/DOMNodeFilter_8hpp__dep__incl.md5 new file mode 100644 index 00000000..8ebd63fe --- /dev/null +++ b/docs/dom3-api/DOMNodeFilter_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +f24a7dd813fb327b3a3ae9bf1c9f937f \ No newline at end of file diff --git a/docs/dom3-api/DOMNodeFilter_8hpp__dep__incl.png b/docs/dom3-api/DOMNodeFilter_8hpp__dep__incl.png new file mode 100644 index 00000000..a8b0f278 Binary files /dev/null and b/docs/dom3-api/DOMNodeFilter_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMNodeFilter_8hpp__incl.map b/docs/dom3-api/DOMNodeFilter_8hpp__incl.map new file mode 100644 index 00000000..5d177397 --- /dev/null +++ b/docs/dom3-api/DOMNodeFilter_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOMNode_8hpp.html 194,8 386,32 diff --git a/docs/dom3-api/DOMNodeFilter_8hpp__incl.md5 b/docs/dom3-api/DOMNodeFilter_8hpp__incl.md5 new file mode 100644 index 00000000..455f61a2 --- /dev/null +++ b/docs/dom3-api/DOMNodeFilter_8hpp__incl.md5 @@ -0,0 +1 @@ +ffdde052f590556c2f1b1231b801e416 \ No newline at end of file diff --git a/docs/dom3-api/DOMNodeFilter_8hpp__incl.png b/docs/dom3-api/DOMNodeFilter_8hpp__incl.png new file mode 100644 index 00000000..4d0a9724 Binary files /dev/null and b/docs/dom3-api/DOMNodeFilter_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMNodeIterator_8hpp-source.html b/docs/dom3-api/DOMNodeIterator_8hpp-source.html new file mode 100644 index 00000000..c220f9f2 --- /dev/null +++ b/docs/dom3-api/DOMNodeIterator_8hpp-source.html @@ -0,0 +1,107 @@ + + +XQilla DOM Level 3 API: DOMNodeIterator.hpp Source File + + + + + + +

DOMNodeIterator.hpp

Go to the documentation of this file.
00001 #ifndef DOMNodeIterator_HEADER_GUARD_
+00002 #define DOMNodeIterator_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMNodeIterator.hpp 176280 2005-01-07 15:32:34Z amassari $
+00022  */
+00023 
+00024 #include <xercesc/dom/DOMNodeFilter.hpp>
+00025 #include <xercesc/dom/DOMNode.hpp>
+00026 
+00027 XERCES_CPP_NAMESPACE_BEGIN
+00028 
+00029 
+00043 class CDOM_EXPORT DOMNodeIterator
+00044 {
+00045 protected:
+00046     // -----------------------------------------------------------------------
+00047     //  Hidden constructors
+00048     // -----------------------------------------------------------------------
+00051     DOMNodeIterator() {}
+00052     DOMNodeIterator(const DOMNodeIterator &) {}
+00054 
+00055 private:    
+00056     // -----------------------------------------------------------------------
+00057     // Unimplemented constructors and operators
+00058     // -----------------------------------------------------------------------
+00061     DOMNodeIterator & operator = (const DOMNodeIterator &);
+00063 
+00064 public:
+00065     // -----------------------------------------------------------------------
+00066     //  All constructors are hidden, just the destructor is available
+00067     // -----------------------------------------------------------------------
+00074     virtual ~DOMNodeIterator() {};
+00076 
+00077     // -----------------------------------------------------------------------
+00078     //  Virtual DOMNodeFilter interface
+00079     // -----------------------------------------------------------------------
+00082     // -----------------------------------------------------------------------
+00083     //  Getter methods
+00084     // -----------------------------------------------------------------------
+00090     virtual DOMNode*           getRoot() = 0;
+00102     virtual unsigned long      getWhatToShow() = 0;
+00103 
+00109     virtual DOMNodeFilter*     getFilter() = 0;
+00110 
+00132     virtual bool               getExpandEntityReferences() = 0;
+00133 
+00134     // -----------------------------------------------------------------------
+00135     //  Query methods
+00136     // -----------------------------------------------------------------------
+00149     virtual DOMNode*           nextNode() = 0;
+00150 
+00161     virtual DOMNode*           previousNode() = 0;
+00162 
+00172     virtual void               detach() = 0;
+00174 
+00175     // -----------------------------------------------------------------------
+00176     //  Non-standard Extension
+00177     // -----------------------------------------------------------------------
+00187     virtual void               release() = 0;
+00189 };
+00190 
+00191 #define GetDOMNodeIteratorMemoryManager GET_DIRECT_MM(fDocument)
+00192 
+00193 XERCES_CPP_NAMESPACE_END
+00194 
+00195 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMNodeIterator_8hpp.html b/docs/dom3-api/DOMNodeIterator_8hpp.html new file mode 100644 index 00000000..86122002 --- /dev/null +++ b/docs/dom3-api/DOMNodeIterator_8hpp.html @@ -0,0 +1,78 @@ + + +XQilla DOM Level 3 API: DOMNodeIterator.hpp File Reference + + + + + + +

DOMNodeIterator.hpp File Reference

#include <xercesc/dom/DOMNodeFilter.hpp>
+#include <xercesc/dom/DOMNode.hpp>
+ +

+Include dependency graph for DOMNodeIterator.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMNodeIterator
 DOMNodeIterators are used to step through a set of nodes, e.g. More...

Defines

#define GetDOMNodeIteratorMemoryManager   GET_DIRECT_MM(fDocument)
+


Define Documentation

+

+ + + + +
+ + + + +
#define GetDOMNodeIteratorMemoryManager   GET_DIRECT_MM(fDocument)
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMNodeIterator_8hpp__dep__incl.map b/docs/dom3-api/DOMNodeIterator_8hpp__dep__incl.map new file mode 100644 index 00000000..db872ee7 --- /dev/null +++ b/docs/dom3-api/DOMNodeIterator_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 209,8 286,32 diff --git a/docs/dom3-api/DOMNodeIterator_8hpp__dep__incl.md5 b/docs/dom3-api/DOMNodeIterator_8hpp__dep__incl.md5 new file mode 100644 index 00000000..5bfc6fd9 --- /dev/null +++ b/docs/dom3-api/DOMNodeIterator_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +8b4695defad8b0faf97df37301f7344c \ No newline at end of file diff --git a/docs/dom3-api/DOMNodeIterator_8hpp__dep__incl.png b/docs/dom3-api/DOMNodeIterator_8hpp__dep__incl.png new file mode 100644 index 00000000..c4cd1f58 Binary files /dev/null and b/docs/dom3-api/DOMNodeIterator_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMNodeIterator_8hpp__incl.map b/docs/dom3-api/DOMNodeIterator_8hpp__incl.map new file mode 100644 index 00000000..cb9b591d --- /dev/null +++ b/docs/dom3-api/DOMNodeIterator_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DOMNodeFilter_8hpp.html 209,8 428,32 +rect $DOMNode_8hpp.html 477,33 669,57 diff --git a/docs/dom3-api/DOMNodeIterator_8hpp__incl.md5 b/docs/dom3-api/DOMNodeIterator_8hpp__incl.md5 new file mode 100644 index 00000000..36071226 --- /dev/null +++ b/docs/dom3-api/DOMNodeIterator_8hpp__incl.md5 @@ -0,0 +1 @@ +78591e107cf8aa3469aab7781c832cc1 \ No newline at end of file diff --git a/docs/dom3-api/DOMNodeIterator_8hpp__incl.png b/docs/dom3-api/DOMNodeIterator_8hpp__incl.png new file mode 100644 index 00000000..f7e81596 Binary files /dev/null and b/docs/dom3-api/DOMNodeIterator_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMNodeList_8hpp-source.html b/docs/dom3-api/DOMNodeList_8hpp-source.html new file mode 100644 index 00000000..61ee6cb0 --- /dev/null +++ b/docs/dom3-api/DOMNodeList_8hpp-source.html @@ -0,0 +1,91 @@ + + +XQilla DOM Level 3 API: DOMNodeList.hpp Source File + + + + + + +

DOMNodeList.hpp

Go to the documentation of this file.
00001 #ifndef DOMNodeList_HEADER_GUARD_
+00002 #define DOMNodeList_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMNodeList.hpp 176026 2004-09-08 13:57:07Z peiyongz $
+00022  */
+00023 
+00024 #include <xercesc/util/XercesDefs.hpp>
+00025 
+00026 XERCES_CPP_NAMESPACE_BEGIN
+00027 
+00028 
+00029 class DOMNode;
+00030 
+00031 
+00044 class  CDOM_EXPORT DOMNodeList {
+00045 protected:
+00046     // -----------------------------------------------------------------------
+00047     //  Hidden constructors
+00048     // -----------------------------------------------------------------------
+00051     DOMNodeList() {};
+00053 
+00054 private:
+00055     // -----------------------------------------------------------------------
+00056     // Unimplemented constructors and operators
+00057     // -----------------------------------------------------------------------
+00060     DOMNodeList(const DOMNodeList &);
+00061     DOMNodeList & operator = (const DOMNodeList &);
+00063 
+00064 public:
+00065     // -----------------------------------------------------------------------
+00066     //  All constructors are hidden, just the destructor is available
+00067     // -----------------------------------------------------------------------
+00074     virtual ~DOMNodeList()  {};
+00076 
+00077     // -----------------------------------------------------------------------
+00078     //  Virtual DOMNodeList interface
+00079     // -----------------------------------------------------------------------
+00082     // -----------------------------------------------------------------------
+00083     //  Getter methods
+00084     // -----------------------------------------------------------------------
+00097     virtual DOMNode  *item(XMLSize_t index) const = 0;
+00098 
+00105     virtual XMLSize_t getLength() const = 0;
+00107 };
+00108 
+00109 XERCES_CPP_NAMESPACE_END
+00110 
+00111 #endif
+00112 
+00113 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMNodeList_8hpp.html b/docs/dom3-api/DOMNodeList_8hpp.html new file mode 100644 index 00000000..f6896f24 --- /dev/null +++ b/docs/dom3-api/DOMNodeList_8hpp.html @@ -0,0 +1,46 @@ + + +XQilla DOM Level 3 API: DOMNodeList.hpp File Reference + + + + + + +

DOMNodeList.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for DOMNodeList.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMNodeList
 The DOMNodeList interface provides the abstraction of an ordered collection of nodes. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMNodeList_8hpp__dep__incl.map b/docs/dom3-api/DOMNodeList_8hpp__dep__incl.map new file mode 100644 index 00000000..f3fa4148 --- /dev/null +++ b/docs/dom3-api/DOMNodeList_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 190,8 267,32 diff --git a/docs/dom3-api/DOMNodeList_8hpp__dep__incl.md5 b/docs/dom3-api/DOMNodeList_8hpp__dep__incl.md5 new file mode 100644 index 00000000..a457f1ca --- /dev/null +++ b/docs/dom3-api/DOMNodeList_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +c9cef4c7ac67e9758d8db99349314836 \ No newline at end of file diff --git a/docs/dom3-api/DOMNodeList_8hpp__dep__incl.png b/docs/dom3-api/DOMNodeList_8hpp__dep__incl.png new file mode 100644 index 00000000..0d9346c0 Binary files /dev/null and b/docs/dom3-api/DOMNodeList_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMNodeList_8hpp__incl.map b/docs/dom3-api/DOMNodeList_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMNodeList_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMNodeList_8hpp__incl.md5 b/docs/dom3-api/DOMNodeList_8hpp__incl.md5 new file mode 100644 index 00000000..989d2fa0 --- /dev/null +++ b/docs/dom3-api/DOMNodeList_8hpp__incl.md5 @@ -0,0 +1 @@ +a477c5fea535d3ca940f0b4f12849a88 \ No newline at end of file diff --git a/docs/dom3-api/DOMNodeList_8hpp__incl.png b/docs/dom3-api/DOMNodeList_8hpp__incl.png new file mode 100644 index 00000000..9cbe5812 Binary files /dev/null and b/docs/dom3-api/DOMNodeList_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMNode_8hpp-source.html b/docs/dom3-api/DOMNode_8hpp-source.html new file mode 100644 index 00000000..4c065a1b --- /dev/null +++ b/docs/dom3-api/DOMNode_8hpp-source.html @@ -0,0 +1,241 @@ + + +XQilla DOM Level 3 API: DOMNode.hpp Source File + + + + + + +

DOMNode.hpp

Go to the documentation of this file.
00001 #ifndef DOMNode_HEADER_GUARD_
+00002 #define DOMNode_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMNode.hpp 176294 2005-01-20 17:36:18Z cargilld $
+00022  */
+00023 
+00024 #include <xercesc/util/XercesDefs.hpp>
+00025 
+00026 XERCES_CPP_NAMESPACE_BEGIN
+00027 
+00028 
+00029 class DOMDocument;
+00030 class DOMNamedNodeMap;
+00031 class DOMNodeList;
+00032 class DOMUserDataHandler;
+00033 
+00138 class  CDOM_EXPORT DOMNode {
+00139 protected:
+00140     // -----------------------------------------------------------------------
+00141     //  Hidden constructors
+00142     // -----------------------------------------------------------------------
+00145     DOMNode() {}
+00146     DOMNode(const DOMNode &) {}
+00148 
+00149 private:    
+00150     // -----------------------------------------------------------------------
+00151     // Unimplemented constructors and operators
+00152     // -----------------------------------------------------------------------
+00155     DOMNode & operator = (const DOMNode &);
+00157 
+00158 public:
+00159     // -----------------------------------------------------------------------
+00160     //  All constructors are hidden, just the destructor is available
+00161     // -----------------------------------------------------------------------
+00168     virtual ~DOMNode() {};
+00170 
+00171     // -----------------------------------------------------------------------
+00172     //  Class Types
+00173     // -----------------------------------------------------------------------
+00181     enum NodeType {
+00182         ELEMENT_NODE                = 1,
+00183         ATTRIBUTE_NODE              = 2,
+00184         TEXT_NODE                   = 3,
+00185         CDATA_SECTION_NODE          = 4,
+00186         ENTITY_REFERENCE_NODE       = 5,
+00187         ENTITY_NODE                 = 6,
+00188         PROCESSING_INSTRUCTION_NODE = 7,
+00189         COMMENT_NODE                = 8,
+00190         DOCUMENT_NODE               = 9,
+00191         DOCUMENT_TYPE_NODE          = 10,
+00192         DOCUMENT_FRAGMENT_NODE      = 11,
+00193         NOTATION_NODE               = 12
+00194     };
+00195 
+00222     enum DOMTreePosition {
+00223         TREE_POSITION_PRECEDING   = 0x01,
+00224         TREE_POSITION_FOLLOWING   = 0x02,
+00225         TREE_POSITION_ANCESTOR    = 0x04,
+00226         TREE_POSITION_DESCENDANT  = 0x08,
+00227         TREE_POSITION_EQUIVALENT  = 0x10,
+00228         TREE_POSITION_SAME_NODE   = 0x20,
+00229         TREE_POSITION_DISCONNECTED = 0x00
+00230     };
+00232 
+00233     // -----------------------------------------------------------------------
+00234     //  Virtual DOMNode interface
+00235     // -----------------------------------------------------------------------
+00238     // -----------------------------------------------------------------------
+00239     //  Getter methods
+00240     // -----------------------------------------------------------------------
+00245     virtual const XMLCh *   getNodeName() const = 0;
+00246 
+00254     virtual const XMLCh *       getNodeValue() const = 0;
+00255 
+00260     virtual short           getNodeType() const = 0;
+00261 
+00272     virtual DOMNode        *getParentNode() const = 0;
+00273 
+00288     virtual DOMNodeList    *getChildNodes() const = 0;
+00295     virtual DOMNode        *getFirstChild() const = 0;
+00296 
+00303     virtual DOMNode        *getLastChild() const = 0;
+00304 
+00311     virtual DOMNode        *getPreviousSibling() const = 0;
+00312 
+00319     virtual DOMNode        *getNextSibling() const = 0;
+00320 
+00326     virtual DOMNamedNodeMap  *getAttributes() const = 0;
+00327 
+00339     virtual DOMDocument      *getOwnerDocument() const = 0;
+00340 
+00341     // -----------------------------------------------------------------------
+00342     //  Node methods
+00343     // -----------------------------------------------------------------------
+00363     virtual DOMNode        * cloneNode(bool deep) const = 0;
+00364 
+00392     virtual DOMNode       *insertBefore(DOMNode *newChild,
+00393                                           DOMNode *refChild) = 0;
+00394 
+00395 
+00419     virtual DOMNode  *replaceChild(DOMNode *newChild,
+00420                                      DOMNode *oldChild) = 0;
+00433     virtual DOMNode        *removeChild(DOMNode *oldChild) = 0;
+00434 
+00455     virtual DOMNode        *appendChild(DOMNode *newChild) = 0;
+00456 
+00457     // -----------------------------------------------------------------------
+00458     //  Query methods
+00459     // -----------------------------------------------------------------------
+00468     virtual bool             hasChildNodes() const = 0;
+00469 
+00470     // -----------------------------------------------------------------------
+00471     //  Setter methods
+00472     // -----------------------------------------------------------------------
+00488     virtual void              setNodeValue(const XMLCh  *nodeValue) = 0;
+00490 
+00513     virtual void              normalize() = 0;
+00514 
+00530     virtual bool              isSupported(const XMLCh *feature,
+00531                                                const XMLCh *version) const = 0;
+00532 
+00548     virtual const XMLCh *         getNamespaceURI() const = 0;
+00549 
+00556     virtual const XMLCh *          getPrefix() const = 0;
+00557 
+00567     virtual const XMLCh *          getLocalName() const = 0;
+00568 
+00602     virtual void              setPrefix(const XMLCh * prefix) = 0;
+00603 
+00610     virtual bool              hasAttributes() const = 0;
+00612 
+00632     virtual bool              isSameNode(const DOMNode* other) const = 0;
+00633 
+00676     virtual bool              isEqualNode(const DOMNode* arg) const = 0;
+00677 
+00678 
+00706     virtual void*             setUserData(const XMLCh* key,
+00707                                           void* data,
+00708                                           DOMUserDataHandler* handler) = 0;
+00709 
+00723     virtual void*             getUserData(const XMLCh* key) const = 0;
+00724 
+00725 
+00744     virtual const XMLCh*           getBaseURI() const = 0;
+00745 
+00758     virtual short                  compareTreePosition(const DOMNode* other) const = 0;
+00759 
+00803     virtual const XMLCh*           getTextContent() const = 0;
+00804 
+00818     virtual void                   setTextContent(const XMLCh* textContent) = 0;
+00819 
+00837     virtual const XMLCh*           lookupNamespacePrefix(const XMLCh* namespaceURI,
+00838                                                          bool useDefault) const = 0;
+00839 
+00851     virtual bool                   isDefaultNamespace(const XMLCh* namespaceURI) const = 0;
+00852 
+00866     virtual const XMLCh*           lookupNamespaceURI(const XMLCh* prefix) const  = 0;
+00867 
+00884     virtual DOMNode*               getInterface(const XMLCh* feature) = 0;
+00886 
+00887     // -----------------------------------------------------------------------
+00888     //  Non-standard Extension
+00889     // -----------------------------------------------------------------------
+00905     virtual void              release() = 0;
+00907 #if defined(XML_DOMREFCOUNT_EXPERIMENTAL)
+00908     // -----------------------------------------------------------------------
+00909     //  Non-standard Extension
+00910     // -----------------------------------------------------------------------
+00920     virtual void decRefCount() {}
+00922 
+00923     // -----------------------------------------------------------------------
+00924     //  Non-standard Extension
+00925     // -----------------------------------------------------------------------
+00932     virtual void incRefCount() {}
+00934 #endif
+00935 };
+00936 
+00937 /***
+00938  * Utilities macros for getting memory manager within DOM
+00939 ***/
+00940 #define GET_OWNER_DOCUMENT(ptr)      \
+00941         ((DOMDocumentImpl*)(ptr->getOwnerDocument()))
+00942 
+00943 #define GET_DIRECT_MM(ptr)           \
+00944         ptr ? ((DOMDocumentImpl*)ptr)->getMemoryManager() : XMLPlatformUtils::fgMemoryManager        
+00945 
+00946 #define GET_INDIRECT_MM(ptr)                                                    \
+00947         !ptr ? XMLPlatformUtils::fgMemoryManager :                              \
+00948         GET_OWNER_DOCUMENT(ptr) ? GET_OWNER_DOCUMENT(ptr)->getMemoryManager() : \
+00949         XMLPlatformUtils::fgMemoryManager
+00950 
+00951 /***
+00952  * For DOMNode and its derivatives
+00953 ***/
+00954 #define GetDOMNodeMemoryManager GET_INDIRECT_MM(this)
+00955 
+00956 XERCES_CPP_NAMESPACE_END
+00957 
+00958 #endif
+00959 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMNode_8hpp.html b/docs/dom3-api/DOMNode_8hpp.html new file mode 100644 index 00000000..027be6d9 --- /dev/null +++ b/docs/dom3-api/DOMNode_8hpp.html @@ -0,0 +1,185 @@ + + +XQilla DOM Level 3 API: DOMNode.hpp File Reference + + + + + + +

DOMNode.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for DOMNode.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + + + + + + + + + + + + + + + + + + + + +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMNode
 The DOMNode interface is the primary datatype for the entire Document Object Model. More...

Defines

#define GET_OWNER_DOCUMENT(ptr)   ((DOMDocumentImpl*)(ptr->getOwnerDocument()))
#define GET_DIRECT_MM(ptr)   ptr ? ((DOMDocumentImpl*)ptr)->getMemoryManager() : XMLPlatformUtils::fgMemoryManager
#define GET_INDIRECT_MM(ptr)
#define GetDOMNodeMemoryManager   GET_INDIRECT_MM(this)
+


Define Documentation

+

+ + + + +
+ + + + + + + + + +
#define GET_DIRECT_MM ptr   )    ptr ? ((DOMDocumentImpl*)ptr)->getMemoryManager() : XMLPlatformUtils::fgMemoryManager
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
#define GET_INDIRECT_MM ptr   ) 
+
+ + + + + +
+   + + +

+Value:

!ptr ? XMLPlatformUtils::fgMemoryManager :                              \
+        GET_OWNER_DOCUMENT(ptr) ? GET_OWNER_DOCUMENT(ptr)->getMemoryManager() : \
+        XMLPlatformUtils::fgMemoryManager
+
+

+ + + + +
+ + + + + + + + + +
#define GET_OWNER_DOCUMENT ptr   )    ((DOMDocumentImpl*)(ptr->getOwnerDocument()))
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define GetDOMNodeMemoryManager   GET_INDIRECT_MM(this)
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMNode_8hpp__dep__incl.map b/docs/dom3-api/DOMNode_8hpp__dep__incl.map new file mode 100644 index 00000000..5294968c --- /dev/null +++ b/docs/dom3-api/DOMNode_8hpp__dep__incl.map @@ -0,0 +1,21 @@ +base referer +rect $XPath2Result_8hpp.html 206,8 337,32 +rect $XQillaExpression_8hpp.html 447,30 597,54 +rect $DOM_8hpp.html 670,553 747,577 +rect $DOMAttr_8hpp.html 222,202 321,226 +rect $StDOMNode_8hpp.html 461,253 583,277 +rect $DOMCharacterData_8hpp.html 439,404 605,428 +rect $DOMDocument_8hpp.html 453,454 591,478 +rect $DOMDocumentFragment_8hpp.html 425,504 619,528 +rect $DOMDocumentType_8hpp.html 438,553 606,577 +rect $DOMElement_8hpp.html 207,301 335,325 +rect $DOMEntity_8hpp.html 466,602 578,626 +rect $DOMEntityReference_8hpp.html 435,650 609,674 +rect $DOMNodeFilter_8hpp.html 202,754 341,778 +rect $DOMNodeIterator_8hpp.html 446,698 598,722 +rect $DOMTreeWalker_8hpp.html 450,797 594,821 +rect $DOMNotation_8hpp.html 207,853 335,877 +rect $DOMProcessingInstruction_8hpp.html 169,901 374,925 +rect $DOMUserDataHandler_8hpp.html 181,949 362,973 +rect $DOMWriter_8hpp.html 215,106 327,130 +rect $DOMXPathNamespace_8hpp.html 178,154 365,178 diff --git a/docs/dom3-api/DOMNode_8hpp__dep__incl.md5 b/docs/dom3-api/DOMNode_8hpp__dep__incl.md5 new file mode 100644 index 00000000..461217a3 --- /dev/null +++ b/docs/dom3-api/DOMNode_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +eb0064799942ed5d3b0aebe0abe66021 \ No newline at end of file diff --git a/docs/dom3-api/DOMNode_8hpp__dep__incl.png b/docs/dom3-api/DOMNode_8hpp__dep__incl.png new file mode 100644 index 00000000..c6e833cc Binary files /dev/null and b/docs/dom3-api/DOMNode_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMNode_8hpp__incl.map b/docs/dom3-api/DOMNode_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMNode_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMNode_8hpp__incl.md5 b/docs/dom3-api/DOMNode_8hpp__incl.md5 new file mode 100644 index 00000000..b846f86e --- /dev/null +++ b/docs/dom3-api/DOMNode_8hpp__incl.md5 @@ -0,0 +1 @@ +b2554c334ca1d6418652fbcd95f17e00 \ No newline at end of file diff --git a/docs/dom3-api/DOMNode_8hpp__incl.png b/docs/dom3-api/DOMNode_8hpp__incl.png new file mode 100644 index 00000000..78a03f81 Binary files /dev/null and b/docs/dom3-api/DOMNode_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMNotation_8hpp-source.html b/docs/dom3-api/DOMNotation_8hpp-source.html new file mode 100644 index 00000000..784236a7 --- /dev/null +++ b/docs/dom3-api/DOMNotation_8hpp-source.html @@ -0,0 +1,92 @@ + + +XQilla DOM Level 3 API: DOMNotation.hpp Source File + + + + + + +

DOMNotation.hpp

Go to the documentation of this file.
00001 #ifndef DOMNotation_HEADER_GUARD_
+00002 #define DOMNotation_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMNotation.hpp 176280 2005-01-07 15:32:34Z amassari $
+00022  */
+00023 
+00024 #include <xercesc/util/XercesDefs.hpp>
+00025 #include <xercesc/dom/DOMNode.hpp>
+00026 
+00027 XERCES_CPP_NAMESPACE_BEGIN
+00028 
+00029 
+00043 class CDOM_EXPORT DOMNotation: public DOMNode {
+00044 protected:
+00045     // -----------------------------------------------------------------------
+00046     //  Hidden constructors
+00047     // -----------------------------------------------------------------------
+00050     DOMNotation() {}
+00051     DOMNotation(const DOMNotation &other) : DOMNode(other) {}
+00053 
+00054 private:
+00055     // -----------------------------------------------------------------------
+00056     // Unimplemented constructors and operators
+00057     // -----------------------------------------------------------------------
+00060     DOMNotation & operator = (const DOMNotation &);
+00062 
+00063 public:
+00064     // -----------------------------------------------------------------------
+00065     //  All constructors are hidden, just the destructor is available
+00066     // -----------------------------------------------------------------------
+00073     virtual ~DOMNotation() {};
+00075 
+00076 
+00077     // -----------------------------------------------------------------------
+00078     //  Virtual DOMNotation interface
+00079     // -----------------------------------------------------------------------
+00082     // -----------------------------------------------------------------------
+00083     //  Getter methods
+00084     // -----------------------------------------------------------------------
+00093     virtual const XMLCh *getPublicId() const = 0;
+00094 
+00103     virtual const XMLCh *getSystemId() const = 0;
+00104 
+00105 
+00107 };
+00108 
+00109 XERCES_CPP_NAMESPACE_END
+00110 
+00111 #endif
+00112 
+00113 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMNotation_8hpp.html b/docs/dom3-api/DOMNotation_8hpp.html new file mode 100644 index 00000000..3957fcfd --- /dev/null +++ b/docs/dom3-api/DOMNotation_8hpp.html @@ -0,0 +1,50 @@ + + +XQilla DOM Level 3 API: DOMNotation.hpp File Reference + + + + + + +

DOMNotation.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xercesc/dom/DOMNode.hpp>
+ +

+Include dependency graph for DOMNotation.hpp:

+ + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMNotation
 This interface represents a notation declared in the DTD. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMNotation_8hpp__dep__incl.map b/docs/dom3-api/DOMNotation_8hpp__dep__incl.map new file mode 100644 index 00000000..d4835849 --- /dev/null +++ b/docs/dom3-api/DOMNotation_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 188,8 265,32 diff --git a/docs/dom3-api/DOMNotation_8hpp__dep__incl.md5 b/docs/dom3-api/DOMNotation_8hpp__dep__incl.md5 new file mode 100644 index 00000000..28115431 --- /dev/null +++ b/docs/dom3-api/DOMNotation_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +c0b7a6a77cc2baf1f928eda6a88e979d \ No newline at end of file diff --git a/docs/dom3-api/DOMNotation_8hpp__dep__incl.png b/docs/dom3-api/DOMNotation_8hpp__dep__incl.png new file mode 100644 index 00000000..0cbef44b Binary files /dev/null and b/docs/dom3-api/DOMNotation_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMNotation_8hpp__incl.map b/docs/dom3-api/DOMNotation_8hpp__incl.map new file mode 100644 index 00000000..969d5247 --- /dev/null +++ b/docs/dom3-api/DOMNotation_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOMNode_8hpp.html 186,58 378,82 diff --git a/docs/dom3-api/DOMNotation_8hpp__incl.md5 b/docs/dom3-api/DOMNotation_8hpp__incl.md5 new file mode 100644 index 00000000..c168ce34 --- /dev/null +++ b/docs/dom3-api/DOMNotation_8hpp__incl.md5 @@ -0,0 +1 @@ +9522b5621add46985a028376693b0bf7 \ No newline at end of file diff --git a/docs/dom3-api/DOMNotation_8hpp__incl.png b/docs/dom3-api/DOMNotation_8hpp__incl.png new file mode 100644 index 00000000..f5e4622f Binary files /dev/null and b/docs/dom3-api/DOMNotation_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMPSVITypeInfo_8hpp-source.html b/docs/dom3-api/DOMPSVITypeInfo_8hpp-source.html new file mode 100644 index 00000000..28ff79f1 --- /dev/null +++ b/docs/dom3-api/DOMPSVITypeInfo_8hpp-source.html @@ -0,0 +1,102 @@ + + +XQilla DOM Level 3 API: DOMPSVITypeInfo.hpp Source File + + + + + + +

DOMPSVITypeInfo.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00003  * 
+00004  * Licensed under the Apache License, Version 2.0 (the "License");
+00005  * you may not use this file except in compliance with the License.
+00006  * You may obtain a copy of the License at
+00007  * 
+00008  *      http://www.apache.org/licenses/LICENSE-2.0
+00009  * 
+00010  * Unless required by applicable law or agreed to in writing, software
+00011  * distributed under the License is distributed on an "AS IS" BASIS,
+00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00013  * See the License for the specific language governing permissions and
+00014  * limitations under the License.
+00015  */
+00016 
+00017 #if !defined(DOMPSVITYPEINFO_HPP)
+00018 #define DOMPSVITYPEINFO_HPP
+00019 
+00020 //------------------------------------------------------------------------------------
+00021 //  Includes
+00022 //------------------------------------------------------------------------------------
+00023 #include <xercesc/util/XMLString.hpp>
+00024 
+00025 
+00026 XERCES_CPP_NAMESPACE_BEGIN
+00027 
+00033 class CDOM_EXPORT DOMPSVITypeInfo
+00034 {
+00035 protected:
+00036     // -----------------------------------------------------------------------
+00037     //  Hidden constructors
+00038     // -----------------------------------------------------------------------
+00041     DOMPSVITypeInfo() {};
+00043 
+00044 private:
+00045     // -----------------------------------------------------------------------
+00046     // Unimplemented constructors and operators
+00047     // -----------------------------------------------------------------------
+00050     DOMPSVITypeInfo(const DOMPSVITypeInfo &);
+00051     DOMPSVITypeInfo & operator = (const DOMPSVITypeInfo &);
+00053 
+00054 public:
+00055 
+00056     enum PSVIProperty
+00057     {
+00058         PSVI_Validity
+00059         , PSVI_Validitation_Attempted
+00060         , PSVI_Type_Definition_Type
+00061         , PSVI_Type_Definition_Name
+00062         , PSVI_Type_Definition_Namespace
+00063         , PSVI_Type_Definition_Anonymous
+00064         , PSVI_Nil
+00065         , PSVI_Member_Type_Definition_Name
+00066         , PSVI_Member_Type_Definition_Namespace
+00067         , PSVI_Member_Type_Definition_Anonymous
+00068         , PSVI_Schema_Default
+00069         , PSVI_Schema_Normalized_Value
+00070         , PSVI_Schema_Specified
+00071     };
+00072 
+00073     // -----------------------------------------------------------------------
+00074     //  All constructors are hidden, just the destructor is available
+00075     // -----------------------------------------------------------------------
+00082     virtual ~DOMPSVITypeInfo() {};
+00084 
+00086     // -----------------------------------------------------------------------
+00087     //  Getter methods
+00088     // -----------------------------------------------------------------------
+00098     virtual const XMLCh* getStringProperty(PSVIProperty prop) const = 0;
+00099 
+00109     virtual int getNumericProperty(PSVIProperty prop) const = 0;
+00111 };
+00112 
+00113 XERCES_CPP_NAMESPACE_END
+00114 
+00115 #endif
+00116 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMPSVITypeInfo_8hpp.html b/docs/dom3-api/DOMPSVITypeInfo_8hpp.html new file mode 100644 index 00000000..aab04c30 --- /dev/null +++ b/docs/dom3-api/DOMPSVITypeInfo_8hpp.html @@ -0,0 +1,67 @@ + + +XQilla DOM Level 3 API: DOMPSVITypeInfo.hpp File Reference + + + + + + +

DOMPSVITypeInfo.hpp File Reference

#include <xercesc/util/XMLString.hpp>
+ +

+Include dependency graph for DOMPSVITypeInfo.hpp:

+ +

+Go to the source code of this file. + + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMPSVITypeInfo
 The DOMPSVITypeInfo interface represent the PSVI info used by DOMElement or DOMAttr nodes, specified in the schemas associated with the document. More...

Defines

#define DOMPSVITYPEINFO_HPP
+


Define Documentation

+

+ + + + +
+ + + + +
#define DOMPSVITYPEINFO_HPP
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMPSVITypeInfo_8hpp__incl.map b/docs/dom3-api/DOMPSVITypeInfo_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMPSVITypeInfo_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMPSVITypeInfo_8hpp__incl.md5 b/docs/dom3-api/DOMPSVITypeInfo_8hpp__incl.md5 new file mode 100644 index 00000000..2725a1b9 --- /dev/null +++ b/docs/dom3-api/DOMPSVITypeInfo_8hpp__incl.md5 @@ -0,0 +1 @@ +d555a22abdfb201442a1974bb942c2f0 \ No newline at end of file diff --git a/docs/dom3-api/DOMPSVITypeInfo_8hpp__incl.png b/docs/dom3-api/DOMPSVITypeInfo_8hpp__incl.png new file mode 100644 index 00000000..eb80e35c Binary files /dev/null and b/docs/dom3-api/DOMPSVITypeInfo_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMProcessingInstruction_8hpp-source.html b/docs/dom3-api/DOMProcessingInstruction_8hpp-source.html new file mode 100644 index 00000000..fd798056 --- /dev/null +++ b/docs/dom3-api/DOMProcessingInstruction_8hpp-source.html @@ -0,0 +1,95 @@ + + +XQilla DOM Level 3 API: DOMProcessingInstruction.hpp Source File + + + + + + +

DOMProcessingInstruction.hpp

Go to the documentation of this file.
00001 #ifndef DOMProcessingInstruction_HEADER_GUARD_
+00002 #define DOMProcessingInstruction_HEADER_GUARD_
+00003 
+00004 
+00005 /*
+00006  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00007  * 
+00008  * Licensed under the Apache License, Version 2.0 (the "License");
+00009  * you may not use this file except in compliance with the License.
+00010  * You may obtain a copy of the License at
+00011  * 
+00012  *      http://www.apache.org/licenses/LICENSE-2.0
+00013  * 
+00014  * Unless required by applicable law or agreed to in writing, software
+00015  * distributed under the License is distributed on an "AS IS" BASIS,
+00016  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00017  * See the License for the specific language governing permissions and
+00018  * limitations under the License.
+00019  */
+00020 
+00021 /*
+00022  * $Id: DOMProcessingInstruction.hpp 176280 2005-01-07 15:32:34Z amassari $
+00023  */
+00024 
+00025 #include <xercesc/util/XercesDefs.hpp>
+00026 #include <xercesc/dom/DOMNode.hpp>
+00027 
+00028 XERCES_CPP_NAMESPACE_BEGIN
+00029 
+00030 
+00038 class  CDOM_EXPORT DOMProcessingInstruction: public DOMNode {
+00039 protected:
+00040     // -----------------------------------------------------------------------
+00041     //  Hidden constructors
+00042     // -----------------------------------------------------------------------
+00045     DOMProcessingInstruction() {}
+00046     DOMProcessingInstruction(const DOMProcessingInstruction &other) : DOMNode(other) {}
+00048 
+00049 private:
+00050     // -----------------------------------------------------------------------
+00051     // Unimplemented constructors and operators
+00052     // -----------------------------------------------------------------------
+00055     DOMProcessingInstruction & operator = (const DOMProcessingInstruction &);
+00057 
+00058 public:
+00059     // -----------------------------------------------------------------------
+00060     //  All constructors are hidden, just the destructor is available
+00061     // -----------------------------------------------------------------------
+00068     virtual ~DOMProcessingInstruction() {};
+00070 
+00071     // -----------------------------------------------------------------------
+00072     //  Virtual DOMProcessingInstruction interface
+00073     // -----------------------------------------------------------------------
+00076     // -----------------------------------------------------------------------
+00077     //  Getter methods
+00078     // -----------------------------------------------------------------------
+00087     virtual const XMLCh *        getTarget() const = 0;
+00088 
+00099     virtual const XMLCh *        getData() const = 0;
+00100 
+00101     // -----------------------------------------------------------------------
+00102     //  Setter methods
+00103     // -----------------------------------------------------------------------
+00113     virtual void             setData(const XMLCh * data) = 0;
+00115 
+00116 };
+00117 
+00118 XERCES_CPP_NAMESPACE_END
+00119 
+00120 #endif
+00121 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMProcessingInstruction_8hpp.html b/docs/dom3-api/DOMProcessingInstruction_8hpp.html new file mode 100644 index 00000000..bca66dfa --- /dev/null +++ b/docs/dom3-api/DOMProcessingInstruction_8hpp.html @@ -0,0 +1,50 @@ + + +XQilla DOM Level 3 API: DOMProcessingInstruction.hpp File Reference + + + + + + +

DOMProcessingInstruction.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xercesc/dom/DOMNode.hpp>
+ +

+Include dependency graph for DOMProcessingInstruction.hpp:

+ + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMProcessingInstruction
 The DOMProcessingInstruction interface represents a "processing instruction", used in XML as a way to keep processor-specific information in the text of the document. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMProcessingInstruction_8hpp__dep__incl.map b/docs/dom3-api/DOMProcessingInstruction_8hpp__dep__incl.map new file mode 100644 index 00000000..96fe9824 --- /dev/null +++ b/docs/dom3-api/DOMProcessingInstruction_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 265,8 342,32 diff --git a/docs/dom3-api/DOMProcessingInstruction_8hpp__dep__incl.md5 b/docs/dom3-api/DOMProcessingInstruction_8hpp__dep__incl.md5 new file mode 100644 index 00000000..4b4fdf0a --- /dev/null +++ b/docs/dom3-api/DOMProcessingInstruction_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +6a87d1d653c84340b8a797dd80ac9b0e \ No newline at end of file diff --git a/docs/dom3-api/DOMProcessingInstruction_8hpp__dep__incl.png b/docs/dom3-api/DOMProcessingInstruction_8hpp__dep__incl.png new file mode 100644 index 00000000..7fc142e7 Binary files /dev/null and b/docs/dom3-api/DOMProcessingInstruction_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMProcessingInstruction_8hpp__incl.map b/docs/dom3-api/DOMProcessingInstruction_8hpp__incl.map new file mode 100644 index 00000000..315dbcbc --- /dev/null +++ b/docs/dom3-api/DOMProcessingInstruction_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOMNode_8hpp.html 263,58 455,82 diff --git a/docs/dom3-api/DOMProcessingInstruction_8hpp__incl.md5 b/docs/dom3-api/DOMProcessingInstruction_8hpp__incl.md5 new file mode 100644 index 00000000..66201057 --- /dev/null +++ b/docs/dom3-api/DOMProcessingInstruction_8hpp__incl.md5 @@ -0,0 +1 @@ +ef83a9209933289cb69b1cb892c7e10b \ No newline at end of file diff --git a/docs/dom3-api/DOMProcessingInstruction_8hpp__incl.png b/docs/dom3-api/DOMProcessingInstruction_8hpp__incl.png new file mode 100644 index 00000000..0e5b82e9 Binary files /dev/null and b/docs/dom3-api/DOMProcessingInstruction_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMRangeException_8cpp.html b/docs/dom3-api/DOMRangeException_8cpp.html new file mode 100644 index 00000000..9eddb159 --- /dev/null +++ b/docs/dom3-api/DOMRangeException_8cpp.html @@ -0,0 +1,39 @@ + + +XQilla DOM Level 3 API: DOMRangeException.cpp File Reference + + + + + + +

DOMRangeException.cpp File Reference

#include "DOMRangeException.hpp"
+ +

+Include dependency graph for DOMRangeException.cpp:

+ + + + + + + + + + +

Namespaces

namespace  xercesc
+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMRangeException_8cpp__incl.map b/docs/dom3-api/DOMRangeException_8cpp__incl.map new file mode 100644 index 00000000..bb6addef --- /dev/null +++ b/docs/dom3-api/DOMRangeException_8cpp__incl.map @@ -0,0 +1,4 @@ +base referer +rect $DOMRangeException_8hpp.html 232,32 408,56 +rect $DOMException_8hpp.html 456,32 674,56 +rect $PlatformUtils_8hpp.html 724,56 918,80 diff --git a/docs/dom3-api/DOMRangeException_8cpp__incl.md5 b/docs/dom3-api/DOMRangeException_8cpp__incl.md5 new file mode 100644 index 00000000..093bb85d --- /dev/null +++ b/docs/dom3-api/DOMRangeException_8cpp__incl.md5 @@ -0,0 +1 @@ +0c06b3f727abd118bd3207736f28f5d1 \ No newline at end of file diff --git a/docs/dom3-api/DOMRangeException_8cpp__incl.png b/docs/dom3-api/DOMRangeException_8cpp__incl.png new file mode 100644 index 00000000..96ad29a7 Binary files /dev/null and b/docs/dom3-api/DOMRangeException_8cpp__incl.png differ diff --git a/docs/dom3-api/DOMRangeException_8hpp-source.html b/docs/dom3-api/DOMRangeException_8hpp-source.html new file mode 100644 index 00000000..0ca6b947 --- /dev/null +++ b/docs/dom3-api/DOMRangeException_8hpp-source.html @@ -0,0 +1,98 @@ + + +XQilla DOM Level 3 API: DOMRangeException.hpp Source File + + + + + + +

DOMRangeException.hpp

Go to the documentation of this file.
00001 #ifndef DOMRangeException_HEADER_GUARD_
+00002 #define DOMRangeException_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMRangeException.hpp 176026 2004-09-08 13:57:07Z peiyongz $
+00022  */
+00023 
+00024 #include <xercesc/dom/DOMException.hpp>
+00025 
+00026 XERCES_CPP_NAMESPACE_BEGIN
+00027 
+00035 class CDOM_EXPORT DOMRangeException  : public DOMException {
+00036 public:
+00037     // -----------------------------------------------------------------------
+00038     //  Class Types
+00039     // -----------------------------------------------------------------------
+00055         enum RangeExceptionCode {
+00056                 BAD_BOUNDARYPOINTS_ERR  = 1,
+00057                 INVALID_NODE_TYPE_ERR   = 2
+00058         };
+00060 
+00061 public:
+00062     // -----------------------------------------------------------------------
+00063     //  Constructors
+00064     // -----------------------------------------------------------------------
+00071     DOMRangeException();
+00072 
+00080     DOMRangeException(
+00081                             RangeExceptionCode       code
+00082                     , const XMLCh*                   message
+00083                     ,       MemoryManager*     const memoryManager
+00084                      );
+00085 
+00091     DOMRangeException(const DOMRangeException &other);
+00093 
+00094     // -----------------------------------------------------------------------
+00095     //  Destructors
+00096     // -----------------------------------------------------------------------
+00103     virtual ~DOMRangeException();
+00105 
+00106 public:
+00107     // -----------------------------------------------------------------------
+00108     //  Class Types
+00109     // -----------------------------------------------------------------------
+00118     RangeExceptionCode   code;
+00119 
+00121 
+00122 private:
+00123     // -----------------------------------------------------------------------
+00124     // Unimplemented constructors and operators
+00125     // -----------------------------------------------------------------------
+00126     DOMRangeException & operator = (const DOMRangeException &);
+00127 };
+00128 
+00129 XERCES_CPP_NAMESPACE_END
+00130 
+00131 #endif
+00132 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMRangeException_8hpp.html b/docs/dom3-api/DOMRangeException_8hpp.html new file mode 100644 index 00000000..270bd1d1 --- /dev/null +++ b/docs/dom3-api/DOMRangeException_8hpp.html @@ -0,0 +1,53 @@ + + +XQilla DOM Level 3 API: DOMRangeException.hpp File Reference + + + + + + +

DOMRangeException.hpp File Reference

#include <xercesc/dom/DOMException.hpp>
+ +

+Include dependency graph for DOMRangeException.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMRangeException
 Range operations may throw a DOMRangeException as specified in their method descriptions. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMRangeException_8hpp__dep__incl.map b/docs/dom3-api/DOMRangeException_8hpp__dep__incl.map new file mode 100644 index 00000000..e42998a3 --- /dev/null +++ b/docs/dom3-api/DOMRangeException_8hpp__dep__incl.map @@ -0,0 +1,5 @@ +base referer +rect $DOM_8hpp.html 486,10 564,34 +rect $DOMImplementation_8hpp.html 234,58 405,82 +rect $DOMRangeException_8cpp.html 232,106 408,130 +rect $DOMException_8cpp.html 457,58 593,82 diff --git a/docs/dom3-api/DOMRangeException_8hpp__dep__incl.md5 b/docs/dom3-api/DOMRangeException_8hpp__dep__incl.md5 new file mode 100644 index 00000000..198dd6cb --- /dev/null +++ b/docs/dom3-api/DOMRangeException_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +16c7a34aa7e4935a89758e41b9c2b9e0 \ No newline at end of file diff --git a/docs/dom3-api/DOMRangeException_8hpp__dep__incl.png b/docs/dom3-api/DOMRangeException_8hpp__dep__incl.png new file mode 100644 index 00000000..b120fdc5 Binary files /dev/null and b/docs/dom3-api/DOMRangeException_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMRangeException_8hpp__incl.map b/docs/dom3-api/DOMRangeException_8hpp__incl.map new file mode 100644 index 00000000..24a1d7fb --- /dev/null +++ b/docs/dom3-api/DOMRangeException_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DOMException_8hpp.html 231,32 450,56 +rect $PlatformUtils_8hpp.html 499,56 694,80 diff --git a/docs/dom3-api/DOMRangeException_8hpp__incl.md5 b/docs/dom3-api/DOMRangeException_8hpp__incl.md5 new file mode 100644 index 00000000..c50c88dd --- /dev/null +++ b/docs/dom3-api/DOMRangeException_8hpp__incl.md5 @@ -0,0 +1 @@ +e5a73813618e4a9e694d6843be988051 \ No newline at end of file diff --git a/docs/dom3-api/DOMRangeException_8hpp__incl.png b/docs/dom3-api/DOMRangeException_8hpp__incl.png new file mode 100644 index 00000000..7446a133 Binary files /dev/null and b/docs/dom3-api/DOMRangeException_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMRange_8hpp-source.html b/docs/dom3-api/DOMRange_8hpp-source.html new file mode 100644 index 00000000..c4b669fe --- /dev/null +++ b/docs/dom3-api/DOMRange_8hpp-source.html @@ -0,0 +1,156 @@ + + +XQilla DOM Level 3 API: DOMRange.hpp Source File + + + + + + +

DOMRange.hpp

Go to the documentation of this file.
00001 #ifndef DOMRange_HEADER_GUARD_
+00002 #define DOMRange_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMRange.hpp 176280 2005-01-07 15:32:34Z amassari $
+00022  */
+00023 
+00024 #include <xercesc/util/XercesDefs.hpp>
+00025 
+00026 XERCES_CPP_NAMESPACE_BEGIN
+00027 
+00028 class DOMNode;
+00029 class DOMDocumentFragment;
+00030 
+00035 class CDOM_EXPORT DOMRange {
+00036 protected:
+00037     // -----------------------------------------------------------------------
+00038     //  Hidden constructors
+00039     // -----------------------------------------------------------------------
+00042     DOMRange() {}
+00043     DOMRange(const DOMRange &) {}
+00045 
+00046 private:
+00047     // -----------------------------------------------------------------------
+00048     // Unimplemented constructors and operators
+00049     // -----------------------------------------------------------------------
+00052     DOMRange & operator = (const DOMRange &);
+00054 
+00055 public:
+00056     // -----------------------------------------------------------------------
+00057     //  All constructors are hidden, just the destructor is available
+00058     // -----------------------------------------------------------------------
+00065     virtual ~DOMRange() {};
+00067 
+00068     // -----------------------------------------------------------------------
+00069     //  Class Types
+00070     // -----------------------------------------------------------------------
+00098     enum CompareHow {
+00099         START_TO_START  = 0,
+00100         START_TO_END    = 1,
+00101         END_TO_END      = 2,
+00102         END_TO_START    = 3
+00103     };
+00104 
+00106 
+00107     // -----------------------------------------------------------------------
+00108     //  Virtual DOMRange interface
+00109     // -----------------------------------------------------------------------
+00112     // -----------------------------------------------------------------------
+00113     //  Getter methods
+00114     // -----------------------------------------------------------------------
+00123     virtual DOMNode* getStartContainer() const = 0;
+00124 
+00133     virtual XMLSize_t getStartOffset() const = 0;
+00134 
+00143     virtual DOMNode* getEndContainer() const = 0;
+00144 
+00153     virtual XMLSize_t getEndOffset() const = 0;
+00154 
+00163     virtual bool getCollapsed() const = 0;
+00164 
+00174     virtual const DOMNode* getCommonAncestorContainer() const = 0;
+00175 
+00176     // -----------------------------------------------------------------------
+00177     //  Setter methods
+00178     // -----------------------------------------------------------------------
+00201     virtual void setStart(const DOMNode *refNode, XMLSize_t offset) = 0;
+00202 
+00225     virtual void setEnd(const DOMNode *refNode, XMLSize_t offset) = 0;
+00226 
+00243     virtual void setStartBefore(const DOMNode *refNode) = 0;
+00244 
+00261     virtual void setStartAfter(const DOMNode *refNode) = 0;
+00262 
+00279     virtual void setEndBefore(const DOMNode *refNode) = 0;
+00280 
+00297     virtual void setEndAfter(const DOMNode *refNode) = 0;
+00298 
+00299     // -----------------------------------------------------------------------
+00300     //  Misc methods
+00301     // -----------------------------------------------------------------------
+00312     virtual void collapse(bool toStart) = 0;
+00313 
+00330     virtual void selectNode(const DOMNode *refNode) = 0;
+00331 
+00346     virtual void selectNodeContents(const DOMNode *refNode) = 0;
+00347 
+00365     virtual short compareBoundaryPoints(CompareHow how, const DOMRange* sourceRange) const = 0;
+00366 
+00380     virtual void deleteContents() = 0;
+00381 
+00397     virtual DOMDocumentFragment* extractContents() = 0;
+00398 
+00411     virtual DOMDocumentFragment* cloneContents() const = 0;
+00412 
+00441     virtual void insertNode(DOMNode *newNode) = 0;
+00442 
+00468     virtual void surroundContents(DOMNode *newParent) = 0;
+00469 
+00480     virtual DOMRange* cloneRange() const = 0;
+00481 
+00492     virtual const XMLCh* toString() const = 0;
+00493 
+00506     virtual void detach() = 0;
+00507 
+00509 
+00510     // -----------------------------------------------------------------------
+00511     //  Non-standard Extension
+00512     // -----------------------------------------------------------------------
+00522     virtual void release() = 0;
+00524 };
+00525 
+00526 
+00527 XERCES_CPP_NAMESPACE_END
+00528 
+00529 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMRange_8hpp.html b/docs/dom3-api/DOMRange_8hpp.html new file mode 100644 index 00000000..7d3927a2 --- /dev/null +++ b/docs/dom3-api/DOMRange_8hpp.html @@ -0,0 +1,45 @@ + + +XQilla DOM Level 3 API: DOMRange.hpp File Reference + + + + + + +

DOMRange.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for DOMRange.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMRange
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMRange_8hpp__dep__incl.map b/docs/dom3-api/DOMRange_8hpp__dep__incl.map new file mode 100644 index 00000000..290c2e3d --- /dev/null +++ b/docs/dom3-api/DOMRange_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 174,8 251,32 diff --git a/docs/dom3-api/DOMRange_8hpp__dep__incl.md5 b/docs/dom3-api/DOMRange_8hpp__dep__incl.md5 new file mode 100644 index 00000000..be48008c --- /dev/null +++ b/docs/dom3-api/DOMRange_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +7ce0563065bc1e9d9c972ec3028926e8 \ No newline at end of file diff --git a/docs/dom3-api/DOMRange_8hpp__dep__incl.png b/docs/dom3-api/DOMRange_8hpp__dep__incl.png new file mode 100644 index 00000000..77b1e251 Binary files /dev/null and b/docs/dom3-api/DOMRange_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMRange_8hpp__incl.map b/docs/dom3-api/DOMRange_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMRange_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMRange_8hpp__incl.md5 b/docs/dom3-api/DOMRange_8hpp__incl.md5 new file mode 100644 index 00000000..12b372f5 --- /dev/null +++ b/docs/dom3-api/DOMRange_8hpp__incl.md5 @@ -0,0 +1 @@ +9f23f435eee32cef8699243e02328129 \ No newline at end of file diff --git a/docs/dom3-api/DOMRange_8hpp__incl.png b/docs/dom3-api/DOMRange_8hpp__incl.png new file mode 100644 index 00000000..9d87e0a3 Binary files /dev/null and b/docs/dom3-api/DOMRange_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMText_8hpp-source.html b/docs/dom3-api/DOMText_8hpp-source.html new file mode 100644 index 00000000..3df44eaa --- /dev/null +++ b/docs/dom3-api/DOMText_8hpp-source.html @@ -0,0 +1,97 @@ + + +XQilla DOM Level 3 API: DOMText.hpp Source File + + + + + + +

DOMText.hpp

Go to the documentation of this file.
00001 #ifndef DOMText_HEADER_GUARD_
+00002 #define DOMText_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMText.hpp 176280 2005-01-07 15:32:34Z amassari $
+00022  */
+00023 
+00024 #include <xercesc/util/XercesDefs.hpp>
+00025 #include <xercesc/dom/DOMCharacterData.hpp>
+00026 
+00027 XERCES_CPP_NAMESPACE_BEGIN
+00028 
+00029 
+00050 class CDOM_EXPORT DOMText: public DOMCharacterData {
+00051 protected:
+00052     // -----------------------------------------------------------------------
+00053     //  Hidden constructors
+00054     // -----------------------------------------------------------------------
+00057     DOMText() {}
+00058     DOMText(const DOMText &other) : DOMCharacterData(other) {}
+00060 
+00061 private:
+00062     // -----------------------------------------------------------------------
+00063     // Unimplemented constructors and operators
+00064     // -----------------------------------------------------------------------
+00067     DOMText & operator = (const DOMText &);
+00069 
+00070 public:
+00071     // -----------------------------------------------------------------------
+00072     //  All constructors are hidden, just the destructor is available
+00073     // -----------------------------------------------------------------------
+00080     virtual ~DOMText() {};
+00082 
+00083     // -----------------------------------------------------------------------
+00084     //  Virtual DOMText interface
+00085     // -----------------------------------------------------------------------
+00106     virtual DOMText *splitText(XMLSize_t offset) = 0;
+00108 
+00123     virtual bool     getIsWhitespaceInElementContent() const = 0;
+00124 
+00133     virtual const XMLCh* getWholeText() = 0;
+00134 
+00164     virtual DOMText* replaceWholeText(const XMLCh* content) = 0;
+00166 
+00167     // -----------------------------------------------------------------------
+00168     // Non-standard extension
+00169     // -----------------------------------------------------------------------
+00178     virtual bool isIgnorableWhitespace() const = 0;
+00180 
+00181 };
+00182 
+00183 
+00184 XERCES_CPP_NAMESPACE_END
+00185 
+00186 #endif
+00187 
+00188 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMText_8hpp.html b/docs/dom3-api/DOMText_8hpp.html new file mode 100644 index 00000000..9c4d03b1 --- /dev/null +++ b/docs/dom3-api/DOMText_8hpp.html @@ -0,0 +1,52 @@ + + +XQilla DOM Level 3 API: DOMText.hpp File Reference + + + + + + +

DOMText.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xercesc/dom/DOMCharacterData.hpp>
+ +

+Include dependency graph for DOMText.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMText
 The DOMText interface inherits from DOMCharacterData and represents the textual content (termed character data in XML) of an DOMElement or DOMAttr. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMText_8hpp__dep__incl.map b/docs/dom3-api/DOMText_8hpp__dep__incl.map new file mode 100644 index 00000000..d9c2da5e --- /dev/null +++ b/docs/dom3-api/DOMText_8hpp__dep__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DOM_8hpp.html 374,34 451,58 +rect $DOMCDATASection_8hpp.html 159,58 325,82 diff --git a/docs/dom3-api/DOMText_8hpp__dep__incl.md5 b/docs/dom3-api/DOMText_8hpp__dep__incl.md5 new file mode 100644 index 00000000..d00c3e78 --- /dev/null +++ b/docs/dom3-api/DOMText_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +808555b48e9c26d56c5f886df6b42b0c \ No newline at end of file diff --git a/docs/dom3-api/DOMText_8hpp__dep__incl.png b/docs/dom3-api/DOMText_8hpp__dep__incl.png new file mode 100644 index 00000000..c676c1a6 Binary files /dev/null and b/docs/dom3-api/DOMText_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMText_8hpp__incl.map b/docs/dom3-api/DOMText_8hpp__incl.map new file mode 100644 index 00000000..33f7a31f --- /dev/null +++ b/docs/dom3-api/DOMText_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DOMCharacterData_8hpp.html 161,59 406,83 +rect $DOMNode_8hpp.html 455,109 647,133 diff --git a/docs/dom3-api/DOMText_8hpp__incl.md5 b/docs/dom3-api/DOMText_8hpp__incl.md5 new file mode 100644 index 00000000..4cbc67da --- /dev/null +++ b/docs/dom3-api/DOMText_8hpp__incl.md5 @@ -0,0 +1 @@ +27a8dd4505e980a02efbb998550d4f64 \ No newline at end of file diff --git a/docs/dom3-api/DOMText_8hpp__incl.png b/docs/dom3-api/DOMText_8hpp__incl.png new file mode 100644 index 00000000..040c1487 Binary files /dev/null and b/docs/dom3-api/DOMText_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMTreeWalker_8hpp-source.html b/docs/dom3-api/DOMTreeWalker_8hpp-source.html new file mode 100644 index 00000000..5d68e02f --- /dev/null +++ b/docs/dom3-api/DOMTreeWalker_8hpp-source.html @@ -0,0 +1,122 @@ + + +XQilla DOM Level 3 API: DOMTreeWalker.hpp Source File + + + + + + +

DOMTreeWalker.hpp

Go to the documentation of this file.
00001 #ifndef DOMTreeWalker_HEADER_GUARD_
+00002 #define DOMTreeWalker_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMTreeWalker.hpp 176280 2005-01-07 15:32:34Z amassari $
+00022  */
+00023 
+00024 #include <xercesc/dom/DOMNode.hpp>
+00025 #include <xercesc/dom/DOMNodeFilter.hpp>
+00026 
+00027 XERCES_CPP_NAMESPACE_BEGIN
+00028 
+00029 
+00049 class CDOM_EXPORT DOMTreeWalker {
+00050 protected:
+00051     // -----------------------------------------------------------------------
+00052     //  Hidden constructors
+00053     // -----------------------------------------------------------------------
+00056     DOMTreeWalker() {}
+00057     DOMTreeWalker(const DOMTreeWalker &) {}
+00059 
+00060 private:
+00061     // -----------------------------------------------------------------------
+00062     // Unimplemented constructors and operators
+00063     // -----------------------------------------------------------------------
+00066     DOMTreeWalker & operator = (const DOMTreeWalker &);
+00068 
+00069 public:
+00070     // -----------------------------------------------------------------------
+00071     //  All constructors are hidden, just the destructor is available
+00072     // -----------------------------------------------------------------------
+00079     virtual ~DOMTreeWalker() {};
+00081 
+00082     // -----------------------------------------------------------------------
+00083     //  Virtual DOMTreeWalker interface
+00084     // -----------------------------------------------------------------------
+00087     // -----------------------------------------------------------------------
+00088     //  Getter methods
+00089     // -----------------------------------------------------------------------
+00090 
+00097     virtual DOMNode*          getRoot() = 0;
+00108     virtual unsigned long       getWhatToShow()= 0;
+00109 
+00115     virtual DOMNodeFilter*         getFilter()= 0;
+00116 
+00134     virtual bool              getExpandEntityReferences()= 0;
+00135 
+00141     virtual DOMNode*          getCurrentNode()= 0;
+00142 
+00143     // -----------------------------------------------------------------------
+00144     //  Query methods
+00145     // -----------------------------------------------------------------------
+00157     virtual DOMNode*          parentNode()= 0;
+00158 
+00169     virtual DOMNode*          firstChild()= 0;
+00170 
+00181     virtual DOMNode*          lastChild()= 0;
+00182 
+00193     virtual DOMNode*          previousSibling()= 0;
+00194 
+00204     virtual DOMNode*          nextSibling()= 0;
+00205 
+00218     virtual DOMNode*          previousNode()= 0;
+00219 
+00231     virtual DOMNode*          nextNode()= 0;
+00232 
+00233     // -----------------------------------------------------------------------
+00234     //  Setter methods
+00235     // -----------------------------------------------------------------------
+00253     virtual void              setCurrentNode(DOMNode* currentNode)= 0;
+00255 
+00256     // -----------------------------------------------------------------------
+00257     //  Non-standard Extension
+00258     // -----------------------------------------------------------------------
+00267     virtual void              release() = 0;
+00269 };
+00270 
+00271 #define GetDOMTreeWalkerMemoryManager GET_INDIRECT_MM(fCurrentNode)
+00272 
+00273 XERCES_CPP_NAMESPACE_END
+00274 
+00275 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMTreeWalker_8hpp.html b/docs/dom3-api/DOMTreeWalker_8hpp.html new file mode 100644 index 00000000..276a5ce5 --- /dev/null +++ b/docs/dom3-api/DOMTreeWalker_8hpp.html @@ -0,0 +1,78 @@ + + +XQilla DOM Level 3 API: DOMTreeWalker.hpp File Reference + + + + + + +

DOMTreeWalker.hpp File Reference

#include <xercesc/dom/DOMNode.hpp>
+#include <xercesc/dom/DOMNodeFilter.hpp>
+ +

+Include dependency graph for DOMTreeWalker.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMTreeWalker
 DOMTreeWalker objects are used to navigate a document tree or subtree using the view of the document defined by their whatToShow flags and filter (if any). More...

Defines

#define GetDOMTreeWalkerMemoryManager   GET_INDIRECT_MM(fCurrentNode)
+


Define Documentation

+

+ + + + +
+ + + + +
#define GetDOMTreeWalkerMemoryManager   GET_INDIRECT_MM(fCurrentNode)
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMTreeWalker_8hpp__dep__incl.map b/docs/dom3-api/DOMTreeWalker_8hpp__dep__incl.map new file mode 100644 index 00000000..3c0425a9 --- /dev/null +++ b/docs/dom3-api/DOMTreeWalker_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 201,8 278,32 diff --git a/docs/dom3-api/DOMTreeWalker_8hpp__dep__incl.md5 b/docs/dom3-api/DOMTreeWalker_8hpp__dep__incl.md5 new file mode 100644 index 00000000..53b7de00 --- /dev/null +++ b/docs/dom3-api/DOMTreeWalker_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +ad8af47767a05a67c672670e30744827 \ No newline at end of file diff --git a/docs/dom3-api/DOMTreeWalker_8hpp__dep__incl.png b/docs/dom3-api/DOMTreeWalker_8hpp__dep__incl.png new file mode 100644 index 00000000..430aa3ee Binary files /dev/null and b/docs/dom3-api/DOMTreeWalker_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMTreeWalker_8hpp__incl.map b/docs/dom3-api/DOMTreeWalker_8hpp__incl.map new file mode 100644 index 00000000..9c20339f --- /dev/null +++ b/docs/dom3-api/DOMTreeWalker_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DOMNode_8hpp.html 469,34 661,58 +rect $DOMNodeFilter_8hpp.html 201,58 420,82 diff --git a/docs/dom3-api/DOMTreeWalker_8hpp__incl.md5 b/docs/dom3-api/DOMTreeWalker_8hpp__incl.md5 new file mode 100644 index 00000000..55d242c0 --- /dev/null +++ b/docs/dom3-api/DOMTreeWalker_8hpp__incl.md5 @@ -0,0 +1 @@ +b84701fd786a34c8f179f762349c0321 \ No newline at end of file diff --git a/docs/dom3-api/DOMTreeWalker_8hpp__incl.png b/docs/dom3-api/DOMTreeWalker_8hpp__incl.png new file mode 100644 index 00000000..ad38baa7 Binary files /dev/null and b/docs/dom3-api/DOMTreeWalker_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMTypeInfo_8hpp-source.html b/docs/dom3-api/DOMTypeInfo_8hpp-source.html new file mode 100644 index 00000000..8a99c20f --- /dev/null +++ b/docs/dom3-api/DOMTypeInfo_8hpp-source.html @@ -0,0 +1,85 @@ + + +XQilla DOM Level 3 API: DOMTypeInfo.hpp Source File + + + + + + +

DOMTypeInfo.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright 2003,2004 The Apache Software Foundation.
+00003  * 
+00004  * Licensed under the Apache License, Version 2.0 (the "License");
+00005  * you may not use this file except in compliance with the License.
+00006  * You may obtain a copy of the License at
+00007  * 
+00008  *      http://www.apache.org/licenses/LICENSE-2.0
+00009  * 
+00010  * Unless required by applicable law or agreed to in writing, software
+00011  * distributed under the License is distributed on an "AS IS" BASIS,
+00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00013  * See the License for the specific language governing permissions and
+00014  * limitations under the License.
+00015  */
+00016 
+00017 #if !defined(DOMTYPEINFO_HPP)
+00018 #define DOMTYPEINFO_HPP
+00019 
+00020 //------------------------------------------------------------------------------------
+00021 //  Includes
+00022 //------------------------------------------------------------------------------------
+00023 #include <xercesc/util/XMLString.hpp>
+00024 
+00025 
+00026 XERCES_CPP_NAMESPACE_BEGIN
+00027 
+00034 class CDOM_EXPORT DOMTypeInfo
+00035 {
+00036 protected:
+00037     // -----------------------------------------------------------------------
+00038     //  Hidden constructors
+00039     // -----------------------------------------------------------------------
+00042     DOMTypeInfo() {};
+00044 
+00045 private:
+00046     // -----------------------------------------------------------------------
+00047     // Unimplemented constructors and operators
+00048     // -----------------------------------------------------------------------
+00051     DOMTypeInfo(const DOMTypeInfo &);
+00052     DOMTypeInfo & operator = (const DOMTypeInfo &);
+00054 
+00055 public:
+00056 
+00057     // -----------------------------------------------------------------------
+00058     //  All constructors are hidden, just the destructor is available
+00059     // -----------------------------------------------------------------------
+00066     virtual ~DOMTypeInfo() {};
+00068 
+00070     // -----------------------------------------------------------------------
+00071     //  Getter methods
+00072     // -----------------------------------------------------------------------
+00083     virtual const XMLCh* getName() const = 0;
+00084 
+00097     virtual const XMLCh* getNamespace() const = 0;
+00099 };
+00100 
+00101 XERCES_CPP_NAMESPACE_END
+00102 
+00103 #endif
+00104 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMTypeInfo_8hpp.html b/docs/dom3-api/DOMTypeInfo_8hpp.html new file mode 100644 index 00000000..9b4e68c5 --- /dev/null +++ b/docs/dom3-api/DOMTypeInfo_8hpp.html @@ -0,0 +1,75 @@ + + +XQilla DOM Level 3 API: DOMTypeInfo.hpp File Reference + + + + + + +

DOMTypeInfo.hpp File Reference

#include <xercesc/util/XMLString.hpp>
+ +

+Include dependency graph for DOMTypeInfo.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + + + +

+Go to the source code of this file. + + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMTypeInfo
 The DOMTypeInfo interface represent a type used by DOMElement or DOMAttr nodes, specified in the schemas associated with the document. More...

Defines

#define DOMTYPEINFO_HPP
+


Define Documentation

+

+ + + + +
+ + + + +
#define DOMTYPEINFO_HPP
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMTypeInfo_8hpp__dep__incl.map b/docs/dom3-api/DOMTypeInfo_8hpp__dep__incl.map new file mode 100644 index 00000000..519372d4 --- /dev/null +++ b/docs/dom3-api/DOMTypeInfo_8hpp__dep__incl.map @@ -0,0 +1,4 @@ +base referer +rect $XPath2Result_8hpp.html 186,8 317,32 +rect $DOM_8hpp.html 213,56 290,80 +rect $XQillaExpression_8hpp.html 365,8 514,32 diff --git a/docs/dom3-api/DOMTypeInfo_8hpp__dep__incl.md5 b/docs/dom3-api/DOMTypeInfo_8hpp__dep__incl.md5 new file mode 100644 index 00000000..199fa0ea --- /dev/null +++ b/docs/dom3-api/DOMTypeInfo_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +571953471df230d01184121104c7f21f \ No newline at end of file diff --git a/docs/dom3-api/DOMTypeInfo_8hpp__dep__incl.png b/docs/dom3-api/DOMTypeInfo_8hpp__dep__incl.png new file mode 100644 index 00000000..61074258 Binary files /dev/null and b/docs/dom3-api/DOMTypeInfo_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMTypeInfo_8hpp__incl.map b/docs/dom3-api/DOMTypeInfo_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMTypeInfo_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMTypeInfo_8hpp__incl.md5 b/docs/dom3-api/DOMTypeInfo_8hpp__incl.md5 new file mode 100644 index 00000000..73de2a5a --- /dev/null +++ b/docs/dom3-api/DOMTypeInfo_8hpp__incl.md5 @@ -0,0 +1 @@ +61b79541bf151a66e5469f95cc80e259 \ No newline at end of file diff --git a/docs/dom3-api/DOMTypeInfo_8hpp__incl.png b/docs/dom3-api/DOMTypeInfo_8hpp__incl.png new file mode 100644 index 00000000..5cb698bc Binary files /dev/null and b/docs/dom3-api/DOMTypeInfo_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMUserDataHandler_8hpp-source.html b/docs/dom3-api/DOMUserDataHandler_8hpp-source.html new file mode 100644 index 00000000..bdd6b0ac --- /dev/null +++ b/docs/dom3-api/DOMUserDataHandler_8hpp-source.html @@ -0,0 +1,99 @@ + + +XQilla DOM Level 3 API: DOMUserDataHandler.hpp Source File + + + + + + +

DOMUserDataHandler.hpp

Go to the documentation of this file.
00001 #ifndef DOMUserDataHandler_HEADER_GUARD_
+00002 #define DOMUserDataHandler_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMUserDataHandler.hpp 176026 2004-09-08 13:57:07Z peiyongz $
+00022  */
+00023 
+00024 #include <xercesc/util/XercesDefs.hpp>
+00025 #include <xercesc/dom/DOMNode.hpp>
+00026 
+00027 XERCES_CPP_NAMESPACE_BEGIN
+00028 
+00041 class CDOM_EXPORT DOMUserDataHandler {
+00042 protected:
+00043     // -----------------------------------------------------------------------
+00044     //  Hidden constructors
+00045     // -----------------------------------------------------------------------
+00048     DOMUserDataHandler() {};
+00050 
+00051 private:
+00052     // -----------------------------------------------------------------------
+00053     // Unimplemented constructors and operators
+00054     // -----------------------------------------------------------------------
+00057     DOMUserDataHandler(const DOMUserDataHandler &);
+00058     DOMUserDataHandler & operator = (const DOMUserDataHandler &);
+00060 
+00061 public:
+00062     // -----------------------------------------------------------------------
+00063     //  All constructors are hidden, just the destructor is available
+00064     // -----------------------------------------------------------------------
+00071     virtual ~DOMUserDataHandler() {};
+00073 
+00074     // -----------------------------------------------------------------------
+00075     //  Class Types
+00076     // -----------------------------------------------------------------------
+00098     enum DOMOperationType {
+00099         NODE_CLONED               = 1,
+00100         NODE_IMPORTED             = 2,
+00101         NODE_DELETED              = 3,
+00102         NODE_RENAMED              = 4
+00103     };
+00105 
+00106 
+00107     // -----------------------------------------------------------------------
+00108     //  Virtual DOMUserDataHandler interface
+00109     // -----------------------------------------------------------------------
+00126     virtual void handle(DOMOperationType operation,
+00127                         const XMLCh* const key,
+00128                         void* data,
+00129                         const DOMNode* src,
+00130                         const DOMNode* dst) = 0;
+00131 
+00133 
+00134 };
+00135 
+00136 XERCES_CPP_NAMESPACE_END
+00137 
+00138 #endif
+00139 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMUserDataHandler_8hpp.html b/docs/dom3-api/DOMUserDataHandler_8hpp.html new file mode 100644 index 00000000..84da4c4c --- /dev/null +++ b/docs/dom3-api/DOMUserDataHandler_8hpp.html @@ -0,0 +1,50 @@ + + +XQilla DOM Level 3 API: DOMUserDataHandler.hpp File Reference + + + + + + +

DOMUserDataHandler.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xercesc/dom/DOMNode.hpp>
+ +

+Include dependency graph for DOMUserDataHandler.hpp:

+ + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMUserDataHandler
 When associating an object to a key on a node using setUserData the application can provide a handler that gets called when the node the object is associated to is being cloned or imported. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMUserDataHandler_8hpp__dep__incl.map b/docs/dom3-api/DOMUserDataHandler_8hpp__dep__incl.map new file mode 100644 index 00000000..8976e97b --- /dev/null +++ b/docs/dom3-api/DOMUserDataHandler_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 238,8 315,32 diff --git a/docs/dom3-api/DOMUserDataHandler_8hpp__dep__incl.md5 b/docs/dom3-api/DOMUserDataHandler_8hpp__dep__incl.md5 new file mode 100644 index 00000000..21f1a7ab --- /dev/null +++ b/docs/dom3-api/DOMUserDataHandler_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +4bf49c2d6f0f236a2ea793d0ba08fcca \ No newline at end of file diff --git a/docs/dom3-api/DOMUserDataHandler_8hpp__dep__incl.png b/docs/dom3-api/DOMUserDataHandler_8hpp__dep__incl.png new file mode 100644 index 00000000..6a1fa63d Binary files /dev/null and b/docs/dom3-api/DOMUserDataHandler_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMUserDataHandler_8hpp__incl.map b/docs/dom3-api/DOMUserDataHandler_8hpp__incl.map new file mode 100644 index 00000000..4bcd26a0 --- /dev/null +++ b/docs/dom3-api/DOMUserDataHandler_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOMNode_8hpp.html 237,58 429,82 diff --git a/docs/dom3-api/DOMUserDataHandler_8hpp__incl.md5 b/docs/dom3-api/DOMUserDataHandler_8hpp__incl.md5 new file mode 100644 index 00000000..a02e47c0 --- /dev/null +++ b/docs/dom3-api/DOMUserDataHandler_8hpp__incl.md5 @@ -0,0 +1 @@ +21d837f488aa7a3d0e9efc8f43e884fe \ No newline at end of file diff --git a/docs/dom3-api/DOMUserDataHandler_8hpp__incl.png b/docs/dom3-api/DOMUserDataHandler_8hpp__incl.png new file mode 100644 index 00000000..74502fc0 Binary files /dev/null and b/docs/dom3-api/DOMUserDataHandler_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMWriterFilter_8hpp-source.html b/docs/dom3-api/DOMWriterFilter_8hpp-source.html new file mode 100644 index 00000000..80b95dba --- /dev/null +++ b/docs/dom3-api/DOMWriterFilter_8hpp-source.html @@ -0,0 +1,112 @@ + + +XQilla DOM Level 3 API: DOMWriterFilter.hpp Source File + + + + + + +

DOMWriterFilter.hpp

Go to the documentation of this file.
00001 #ifndef DOMWriterFilter_HEADER_GUARD_
+00002 #define DOMWriterFilter_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMWriterFilter.hpp 191054 2005-06-17 02:56:35Z jberry $
+00022  */
+00023 
+00041 #include <xercesc/dom/DOMNodeFilter.hpp>
+00042 
+00043 XERCES_CPP_NAMESPACE_BEGIN
+00044 
+00045 
+00046 class CDOM_EXPORT DOMWriterFilter : public DOMNodeFilter {
+00047 protected:
+00048     // -----------------------------------------------------------------------
+00049     //  Hidden constructors
+00050     // -----------------------------------------------------------------------
+00053     DOMWriterFilter() {};
+00055 
+00056 private:
+00057     // -----------------------------------------------------------------------
+00058     // Unimplemented constructors and operators
+00059     // -----------------------------------------------------------------------
+00062     DOMWriterFilter(const DOMWriterFilter &);
+00063     DOMWriterFilter & operator = (const DOMWriterFilter &);
+00065 
+00066 
+00067 public:
+00068     // -----------------------------------------------------------------------
+00069     //  All constructors are hidden, just the destructor is available
+00070     // -----------------------------------------------------------------------
+00077     virtual ~DOMWriterFilter() {};
+00079 
+00080     // -----------------------------------------------------------------------
+00081     //  Virtual DOMWriterFilter interface
+00082     // -----------------------------------------------------------------------
+00089     virtual short acceptNode(const DOMNode* node) const = 0;
+00090 
+00103     virtual unsigned long getWhatToShow() const =0;
+00104 
+00115     virtual void          setWhatToShow(unsigned long toShow) =0;
+00117 
+00118 private:
+00119 
+00120     // -----------------------------------------------------------------------
+00121     //  Private data members
+00122     //
+00123     //  fWhatToShow
+00124     //
+00125     //      The whatToShow mask.
+00126     //      Tells the DOMWriter what types of nodes to show to the filter.
+00127     //      See NodeFilter for definition of the constants.
+00128     //      The constants
+00129     //      SHOW_ATTRIBUTE,
+00130     //      SHOW_DOCUMENT,
+00131     //      SHOW_DOCUMENT_TYPE,
+00132     //      SHOW_NOTATION, and
+00133     //      SHOW_DOCUMENT_FRAGMENT are meaningless here,
+00134     //      Entity nodes are not passed to the filter.
+00135     //
+00136     //      Those nodes will never be passed to a DOMWriterFilter.
+00137     //
+00138     //   Derived class shall add this data member:
+00139     //
+00140     //   unsigned long fWhatToShow;
+00141     // -----------------------------------------------------------------------
+00142 
+00143 };
+00144 
+00145 XERCES_CPP_NAMESPACE_END
+00146 
+00147 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMWriterFilter_8hpp.html b/docs/dom3-api/DOMWriterFilter_8hpp.html new file mode 100644 index 00000000..bbd74a64 --- /dev/null +++ b/docs/dom3-api/DOMWriterFilter_8hpp.html @@ -0,0 +1,50 @@ + + +XQilla DOM Level 3 API: DOMWriterFilter.hpp File Reference + + + + + + +

DOMWriterFilter.hpp File Reference

#include <xercesc/dom/DOMNodeFilter.hpp>
+ +

+Include dependency graph for DOMWriterFilter.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + +

+Go to the source code of this file. + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMWriterFilter
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMWriterFilter_8hpp__dep__incl.map b/docs/dom3-api/DOMWriterFilter_8hpp__dep__incl.map new file mode 100644 index 00000000..6e0595fc --- /dev/null +++ b/docs/dom3-api/DOMWriterFilter_8hpp__dep__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DOM_8hpp.html 364,34 441,58 +rect $DOMWriter_8hpp.html 201,58 313,82 diff --git a/docs/dom3-api/DOMWriterFilter_8hpp__dep__incl.md5 b/docs/dom3-api/DOMWriterFilter_8hpp__dep__incl.md5 new file mode 100644 index 00000000..08113156 --- /dev/null +++ b/docs/dom3-api/DOMWriterFilter_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +0f68a118d732c3a34ce01824b2438509 \ No newline at end of file diff --git a/docs/dom3-api/DOMWriterFilter_8hpp__dep__incl.png b/docs/dom3-api/DOMWriterFilter_8hpp__dep__incl.png new file mode 100644 index 00000000..9fe5f722 Binary files /dev/null and b/docs/dom3-api/DOMWriterFilter_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMWriterFilter_8hpp__incl.map b/docs/dom3-api/DOMWriterFilter_8hpp__incl.map new file mode 100644 index 00000000..c04f3923 --- /dev/null +++ b/docs/dom3-api/DOMWriterFilter_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DOMNodeFilter_8hpp.html 201,8 420,32 +rect $DOMNode_8hpp.html 469,8 661,32 diff --git a/docs/dom3-api/DOMWriterFilter_8hpp__incl.md5 b/docs/dom3-api/DOMWriterFilter_8hpp__incl.md5 new file mode 100644 index 00000000..210bd210 --- /dev/null +++ b/docs/dom3-api/DOMWriterFilter_8hpp__incl.md5 @@ -0,0 +1 @@ +064aec80f8f970021c2afe634efda9b5 \ No newline at end of file diff --git a/docs/dom3-api/DOMWriterFilter_8hpp__incl.png b/docs/dom3-api/DOMWriterFilter_8hpp__incl.png new file mode 100644 index 00000000..1b1b7c14 Binary files /dev/null and b/docs/dom3-api/DOMWriterFilter_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMWriter_8hpp-source.html b/docs/dom3-api/DOMWriter_8hpp-source.html new file mode 100644 index 00000000..9308b148 --- /dev/null +++ b/docs/dom3-api/DOMWriter_8hpp-source.html @@ -0,0 +1,129 @@ + + +XQilla DOM Level 3 API: DOMWriter.hpp Source File + + + + + + +

DOMWriter.hpp

Go to the documentation of this file.
00001 #ifndef DOMWriter_HEADER_GUARD_
+00002 #define DOMWriter_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMWriter.hpp 231323 2005-08-10 20:58:40Z cargilld $
+00022  */
+00023 
+00244 #include <xercesc/dom/DOMNode.hpp>
+00245 #include <xercesc/dom/DOMWriterFilter.hpp>
+00246 #include <xercesc/dom/DOMErrorHandler.hpp>
+00247 #include <xercesc/framework/XMLFormatter.hpp>
+00248 
+00249 XERCES_CPP_NAMESPACE_BEGIN
+00250 
+00251 class CDOM_EXPORT DOMWriter {
+00252 protected :
+00253     // -----------------------------------------------------------------------
+00254     //  Hidden constructors
+00255     // -----------------------------------------------------------------------
+00258     DOMWriter() {};
+00260 private:        
+00261     // -----------------------------------------------------------------------
+00262     // Unimplemented constructors and operators
+00263     // -----------------------------------------------------------------------
+00266     DOMWriter(const DOMWriter &);
+00267     DOMWriter & operator = (const DOMWriter &);
+00269 
+00270 
+00271 public:
+00272     // -----------------------------------------------------------------------
+00273     //  All constructors are hidden, just the destructor is available
+00274     // -----------------------------------------------------------------------
+00281     virtual ~DOMWriter() {};
+00283 
+00284     // -----------------------------------------------------------------------
+00285     //  Virtual DOMWriter interface
+00286     // -----------------------------------------------------------------------
+00289     // -----------------------------------------------------------------------
+00290     //  Feature methods
+00291     // -----------------------------------------------------------------------
+00307     virtual bool           canSetFeature(const XMLCh* const featName
+00308                                        , bool               state) const = 0;
+00328     virtual void            setFeature(const XMLCh* const featName
+00329                                      , bool               state) = 0;
+00330 
+00347     virtual bool               getFeature(const XMLCh* const featName) const = 0;
+00348 
+00349     // -----------------------------------------------------------------------
+00350     //  Setter methods
+00351     // -----------------------------------------------------------------------
+00368     virtual void           setEncoding(const XMLCh* const encoding) = 0;
+00369 
+00398     virtual void          setNewLine(const XMLCh* const newLine) = 0;
+00399 
+00413     virtual void         setErrorHandler(DOMErrorHandler *errorHandler) = 0;
+00414 
+00427     virtual void         setFilter(DOMWriterFilter *filter) = 0;
+00428 
+00429     // -----------------------------------------------------------------------
+00430     //  Getter methods
+00431     // -----------------------------------------------------------------------
+00441      virtual const XMLCh*       getEncoding() const = 0;
+00442 
+00453      virtual const XMLCh*       getNewLine() const = 0;
+00454 
+00465      virtual DOMErrorHandler*   getErrorHandler() const = 0;
+00466 
+00476      virtual DOMWriterFilter*   getFilter() const = 0;
+00477 
+00478     // -----------------------------------------------------------------------
+00479     //  Write methods
+00480     // -----------------------------------------------------------------------
+00500     virtual bool       writeNode(XMLFormatTarget* const destination
+00501                                , const DOMNode         &nodeToWrite) = 0;
+00502 
+00521     virtual XMLCh*     writeToString(const DOMNode &nodeToWrite) = 0;
+00522 
+00524 
+00525     // -----------------------------------------------------------------------
+00526     //  Non-standard Extension
+00527     // -----------------------------------------------------------------------
+00536     virtual void              release() = 0;
+00538 
+00539 
+00540 };
+00541 
+00542 XERCES_CPP_NAMESPACE_END
+00543 
+00544 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMWriter_8hpp.html b/docs/dom3-api/DOMWriter_8hpp.html new file mode 100644 index 00000000..7ddd0a3a --- /dev/null +++ b/docs/dom3-api/DOMWriter_8hpp.html @@ -0,0 +1,53 @@ + + +XQilla DOM Level 3 API: DOMWriter.hpp File Reference + + + + + + +

DOMWriter.hpp File Reference

#include <xercesc/dom/DOMNode.hpp>
+#include <xercesc/dom/DOMWriterFilter.hpp>
+#include <xercesc/dom/DOMErrorHandler.hpp>
+#include <xercesc/framework/XMLFormatter.hpp>
+ +

+Include dependency graph for DOMWriter.hpp:

+ + + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMWriter
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMWriter_8hpp__dep__incl.map b/docs/dom3-api/DOMWriter_8hpp__dep__incl.map new file mode 100644 index 00000000..88fce3ae --- /dev/null +++ b/docs/dom3-api/DOMWriter_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 172,8 249,32 diff --git a/docs/dom3-api/DOMWriter_8hpp__dep__incl.md5 b/docs/dom3-api/DOMWriter_8hpp__dep__incl.md5 new file mode 100644 index 00000000..e713515f --- /dev/null +++ b/docs/dom3-api/DOMWriter_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +c270d29e22d75f2e5dcb47e7a6531781 \ No newline at end of file diff --git a/docs/dom3-api/DOMWriter_8hpp__dep__incl.png b/docs/dom3-api/DOMWriter_8hpp__dep__incl.png new file mode 100644 index 00000000..7e8cec84 Binary files /dev/null and b/docs/dom3-api/DOMWriter_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMWriter_8hpp__incl.map b/docs/dom3-api/DOMWriter_8hpp__incl.map new file mode 100644 index 00000000..a97bd7f0 --- /dev/null +++ b/docs/dom3-api/DOMWriter_8hpp__incl.map @@ -0,0 +1,4 @@ +base referer +rect $DOMNode_8hpp.html 199,8 391,32 +rect $DOMWriterFilter_8hpp.html 185,56 406,80 +rect $DOMErrorHandler_8hpp.html 178,104 413,128 diff --git a/docs/dom3-api/DOMWriter_8hpp__incl.md5 b/docs/dom3-api/DOMWriter_8hpp__incl.md5 new file mode 100644 index 00000000..dabbfec9 --- /dev/null +++ b/docs/dom3-api/DOMWriter_8hpp__incl.md5 @@ -0,0 +1 @@ +025681257c8d7fbd07f7e690949a786e \ No newline at end of file diff --git a/docs/dom3-api/DOMWriter_8hpp__incl.png b/docs/dom3-api/DOMWriter_8hpp__incl.png new file mode 100644 index 00000000..d4bbab9e Binary files /dev/null and b/docs/dom3-api/DOMWriter_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMXPathEvaluator_8hpp-source.html b/docs/dom3-api/DOMXPathEvaluator_8hpp-source.html new file mode 100644 index 00000000..4dfe4d6f --- /dev/null +++ b/docs/dom3-api/DOMXPathEvaluator_8hpp-source.html @@ -0,0 +1,91 @@ + + +XQilla DOM Level 3 API: DOMXPathEvaluator.hpp Source File + + + + + + +

DOMXPathEvaluator.hpp

Go to the documentation of this file.
00001 #ifndef DOMXPathEvaluator_HEADER_GUARD_
+00002 #define DOMXPathEvaluator_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 #include <xercesc/util/XercesDefs.hpp>
+00021 
+00022 XERCES_CPP_NAMESPACE_BEGIN
+00023 
+00024 class DOMXPathNSResolver;
+00025 class DOMXPathExpression;
+00026 class DOMNode;
+00027 
+00041 class CDOM_EXPORT DOMXPathEvaluator
+00042 {
+00043 
+00044 protected:
+00045     // -----------------------------------------------------------------------
+00046     //  Hidden constructors
+00047     // -----------------------------------------------------------------------
+00050     DOMXPathEvaluator() {};
+00052 
+00053 private:
+00054     // -----------------------------------------------------------------------
+00055     // Unimplemented constructors and operators
+00056     // -----------------------------------------------------------------------
+00059     DOMXPathEvaluator(const DOMXPathEvaluator &);
+00060     DOMXPathEvaluator& operator = (const  DOMXPathEvaluator&);
+00062 
+00063 public:
+00064     // -----------------------------------------------------------------------
+00065     //  All constructors are hidden, just the destructor is available
+00066     // -----------------------------------------------------------------------
+00073     virtual ~DOMXPathEvaluator() {};
+00075 
+00076     // -----------------------------------------------------------------------
+00077     // Virtual DOMDocument interface
+00078     // -----------------------------------------------------------------------
+00081 
+00102     virtual const DOMXPathExpression*    createExpression(const XMLCh *expression, const DOMXPathNSResolver *resolver) = 0;
+00103 
+00104 
+00116     virtual const DOMXPathNSResolver*    createNSResolver(DOMNode *nodeResolver) = 0;
+00117 
+00118 
+00163     virtual void* evaluate(const XMLCh *expression, DOMNode *contextNode, const DOMXPathNSResolver *resolver, 
+00164                            unsigned short type, void* result) = 0;
+00165 
+00167 };
+00168 
+00169 XERCES_CPP_NAMESPACE_END
+00170 
+00171 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMXPathEvaluator_8hpp.html b/docs/dom3-api/DOMXPathEvaluator_8hpp.html new file mode 100644 index 00000000..06d57d55 --- /dev/null +++ b/docs/dom3-api/DOMXPathEvaluator_8hpp.html @@ -0,0 +1,47 @@ + + +XQilla DOM Level 3 API: DOMXPathEvaluator.hpp File Reference + + + + + + +

DOMXPathEvaluator.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for DOMXPathEvaluator.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMXPathEvaluator
 The evaluation of XPath expressions is provided by DOMXPathEvaluator. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMXPathEvaluator_8hpp__dep__incl.map b/docs/dom3-api/DOMXPathEvaluator_8hpp__dep__incl.map new file mode 100644 index 00000000..493657b1 --- /dev/null +++ b/docs/dom3-api/DOMXPathEvaluator_8hpp__dep__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DOM_8hpp.html 417,34 494,58 +rect $DOMDocument_8hpp.html 228,58 366,82 diff --git a/docs/dom3-api/DOMXPathEvaluator_8hpp__dep__incl.md5 b/docs/dom3-api/DOMXPathEvaluator_8hpp__dep__incl.md5 new file mode 100644 index 00000000..cad7eda8 --- /dev/null +++ b/docs/dom3-api/DOMXPathEvaluator_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +10fa4068582502b47b9e57dc6f5e9866 \ No newline at end of file diff --git a/docs/dom3-api/DOMXPathEvaluator_8hpp__dep__incl.png b/docs/dom3-api/DOMXPathEvaluator_8hpp__dep__incl.png new file mode 100644 index 00000000..221642de Binary files /dev/null and b/docs/dom3-api/DOMXPathEvaluator_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMXPathEvaluator_8hpp__incl.map b/docs/dom3-api/DOMXPathEvaluator_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMXPathEvaluator_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMXPathEvaluator_8hpp__incl.md5 b/docs/dom3-api/DOMXPathEvaluator_8hpp__incl.md5 new file mode 100644 index 00000000..1ce23f36 --- /dev/null +++ b/docs/dom3-api/DOMXPathEvaluator_8hpp__incl.md5 @@ -0,0 +1 @@ +ce0b5545fbc7b82440ccf6804c3967e4 \ No newline at end of file diff --git a/docs/dom3-api/DOMXPathEvaluator_8hpp__incl.png b/docs/dom3-api/DOMXPathEvaluator_8hpp__incl.png new file mode 100644 index 00000000..521a7fe4 Binary files /dev/null and b/docs/dom3-api/DOMXPathEvaluator_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMXPathException_8cpp.html b/docs/dom3-api/DOMXPathException_8cpp.html new file mode 100644 index 00000000..e060fef4 --- /dev/null +++ b/docs/dom3-api/DOMXPathException_8cpp.html @@ -0,0 +1,37 @@ + + +XQilla DOM Level 3 API: DOMXPathException.cpp File Reference + + + + + + +

DOMXPathException.cpp File Reference

#include "DOMXPathException.hpp"
+ +

+Include dependency graph for DOMXPathException.cpp:

+ + + + + + + + +

Namespaces

namespace  xercesc
+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMXPathException_8cpp__incl.map b/docs/dom3-api/DOMXPathException_8cpp__incl.map new file mode 100644 index 00000000..0d238a06 --- /dev/null +++ b/docs/dom3-api/DOMXPathException_8cpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOMXPathException_8hpp.html 229,8 402,32 diff --git a/docs/dom3-api/DOMXPathException_8cpp__incl.md5 b/docs/dom3-api/DOMXPathException_8cpp__incl.md5 new file mode 100644 index 00000000..da08b271 --- /dev/null +++ b/docs/dom3-api/DOMXPathException_8cpp__incl.md5 @@ -0,0 +1 @@ +bbcf249a3a930e730326691419ec9149 \ No newline at end of file diff --git a/docs/dom3-api/DOMXPathException_8cpp__incl.png b/docs/dom3-api/DOMXPathException_8cpp__incl.png new file mode 100644 index 00000000..916b979f Binary files /dev/null and b/docs/dom3-api/DOMXPathException_8cpp__incl.png differ diff --git a/docs/dom3-api/DOMXPathException_8hpp-source.html b/docs/dom3-api/DOMXPathException_8hpp-source.html new file mode 100644 index 00000000..8780d3ff --- /dev/null +++ b/docs/dom3-api/DOMXPathException_8hpp-source.html @@ -0,0 +1,90 @@ + + +XQilla DOM Level 3 API: DOMXPathException.hpp Source File + + + + + + +

DOMXPathException.hpp

Go to the documentation of this file.
00001 #ifndef DOMXPathException_HEADER_GUARD_
+00002 #define DOMXPathException_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 #include <xercesc/util/XercesDefs.hpp>
+00021 
+00022 XERCES_CPP_NAMESPACE_BEGIN
+00023 
+00027 class CDOM_EXPORT DOMXPathException
+00028 {
+00029 public:
+00030     // -----------------------------------------------------------------------
+00031     //  Constructors
+00032     // -----------------------------------------------------------------------
+00039     DOMXPathException();
+00040 
+00047     DOMXPathException(short code, const XMLCh *message);
+00048 
+00054     DOMXPathException(const DOMXPathException  &other);
+00055 
+00057 
+00058     // -----------------------------------------------------------------------
+00059     //  Destructors
+00060     // -----------------------------------------------------------------------
+00067     virtual ~DOMXPathException();
+00069 
+00070 public:
+00071 
+00073 
+00081         enum ExceptionCode {
+00082                 INVALID_EXPRESSION_ERR = 51,
+00083                 TYPE_ERR = 52
+00084         };
+00086 
+00087     // -----------------------------------------------------------------------
+00088     //  Class Types
+00089     // -----------------------------------------------------------------------
+00096     ExceptionCode   code;
+00097 
+00104     const XMLCh *msg;
+00106 
+00107 private:
+00108     // -----------------------------------------------------------------------
+00109     // Unimplemented constructors and operators
+00110     // -----------------------------------------------------------------------
+00111     DOMXPathException& operator = (const DOMXPathException&);
+00112 };
+00113 
+00114 XERCES_CPP_NAMESPACE_END
+00115 
+00116 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMXPathException_8hpp.html b/docs/dom3-api/DOMXPathException_8hpp.html new file mode 100644 index 00000000..6923da13 --- /dev/null +++ b/docs/dom3-api/DOMXPathException_8hpp.html @@ -0,0 +1,48 @@ + + +XQilla DOM Level 3 API: DOMXPathException.hpp File Reference + + + + + + +

DOMXPathException.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for DOMXPathException.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + + + + +

+Go to the source code of this file. + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMXPathException
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMXPathException_8hpp__dep__incl.map b/docs/dom3-api/DOMXPathException_8hpp__dep__incl.map new file mode 100644 index 00000000..991cabd9 --- /dev/null +++ b/docs/dom3-api/DOMXPathException_8hpp__dep__incl.map @@ -0,0 +1,5 @@ +base referer +rect $XPath2Result_8hpp.html 250,8 381,32 +rect $XQillaExpression_8hpp.html 450,33 600,57 +rect $DOM_8hpp.html 277,106 354,130 +rect $DOMXPathException_8cpp.html 229,154 402,178 diff --git a/docs/dom3-api/DOMXPathException_8hpp__dep__incl.md5 b/docs/dom3-api/DOMXPathException_8hpp__dep__incl.md5 new file mode 100644 index 00000000..05a76cf9 --- /dev/null +++ b/docs/dom3-api/DOMXPathException_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +14b3c437ffa9f571079c9693da5fe6ba \ No newline at end of file diff --git a/docs/dom3-api/DOMXPathException_8hpp__dep__incl.png b/docs/dom3-api/DOMXPathException_8hpp__dep__incl.png new file mode 100644 index 00000000..d9a39ccf Binary files /dev/null and b/docs/dom3-api/DOMXPathException_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMXPathException_8hpp__incl.map b/docs/dom3-api/DOMXPathException_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMXPathException_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMXPathException_8hpp__incl.md5 b/docs/dom3-api/DOMXPathException_8hpp__incl.md5 new file mode 100644 index 00000000..4343c3fb --- /dev/null +++ b/docs/dom3-api/DOMXPathException_8hpp__incl.md5 @@ -0,0 +1 @@ +d2bb838d3d9bfbaec26abfc860926bc0 \ No newline at end of file diff --git a/docs/dom3-api/DOMXPathException_8hpp__incl.png b/docs/dom3-api/DOMXPathException_8hpp__incl.png new file mode 100644 index 00000000..10ce7cdd Binary files /dev/null and b/docs/dom3-api/DOMXPathException_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMXPathExpression_8hpp-source.html b/docs/dom3-api/DOMXPathExpression_8hpp-source.html new file mode 100644 index 00000000..3fcac6ce --- /dev/null +++ b/docs/dom3-api/DOMXPathExpression_8hpp-source.html @@ -0,0 +1,80 @@ + + +XQilla DOM Level 3 API: DOMXPathExpression.hpp Source File + + + + + + +

DOMXPathExpression.hpp

Go to the documentation of this file.
00001 #ifndef DOMXPathExpression_HEADER_GUARD_
+00002 #define DOMXPathExpression_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 #include <xercesc/util/XercesDefs.hpp>
+00021 
+00022 XERCES_CPP_NAMESPACE_BEGIN
+00023 
+00024 class DOMNode;
+00029 class CDOM_EXPORT DOMXPathExpression
+00030 {
+00031 
+00032 protected:
+00033     // -----------------------------------------------------------------------
+00034     //  Hidden constructors
+00035     // -----------------------------------------------------------------------
+00038     DOMXPathExpression() {};
+00040 
+00041 private:
+00042     // -----------------------------------------------------------------------
+00043     // Unimplemented constructors and operators
+00044     // -----------------------------------------------------------------------
+00047     DOMXPathExpression(const DOMXPathExpression &);
+00048     DOMXPathExpression& operator = (const  DOMXPathExpression&);
+00050 
+00051 public:
+00052     // -----------------------------------------------------------------------
+00053     //  All constructors are hidden, just the destructor is available
+00054     // -----------------------------------------------------------------------
+00061     virtual ~DOMXPathExpression() {};
+00063 
+00064     // -----------------------------------------------------------------------
+00065     // Virtual DOMDocument interface
+00066     // -----------------------------------------------------------------------
+00069 
+00101     virtual void*          evaluate(DOMNode *contextNode, unsigned short type, void* result) const = 0;
+00103 };
+00104 
+00105 XERCES_CPP_NAMESPACE_END
+00106 
+00107 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMXPathExpression_8hpp.html b/docs/dom3-api/DOMXPathExpression_8hpp.html new file mode 100644 index 00000000..680abd07 --- /dev/null +++ b/docs/dom3-api/DOMXPathExpression_8hpp.html @@ -0,0 +1,47 @@ + + +XQilla DOM Level 3 API: DOMXPathExpression.hpp File Reference + + + + + + +

DOMXPathExpression.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for DOMXPathExpression.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMXPathExpression
 The DOMXPathExpression interface represents a parsed and resolved XPath expression. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMXPathExpression_8hpp__dep__incl.map b/docs/dom3-api/DOMXPathExpression_8hpp__dep__incl.map new file mode 100644 index 00000000..9c32f999 --- /dev/null +++ b/docs/dom3-api/DOMXPathExpression_8hpp__dep__incl.map @@ -0,0 +1,3 @@ +base referer +rect $XQillaExpression_8hpp.html 237,8 386,32 +rect $DOM_8hpp.html 273,56 350,80 diff --git a/docs/dom3-api/DOMXPathExpression_8hpp__dep__incl.md5 b/docs/dom3-api/DOMXPathExpression_8hpp__dep__incl.md5 new file mode 100644 index 00000000..4e30fce7 --- /dev/null +++ b/docs/dom3-api/DOMXPathExpression_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +dfb02174acd860828a55cb44e1edfabd \ No newline at end of file diff --git a/docs/dom3-api/DOMXPathExpression_8hpp__dep__incl.png b/docs/dom3-api/DOMXPathExpression_8hpp__dep__incl.png new file mode 100644 index 00000000..695fd1eb Binary files /dev/null and b/docs/dom3-api/DOMXPathExpression_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMXPathExpression_8hpp__incl.map b/docs/dom3-api/DOMXPathExpression_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMXPathExpression_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMXPathExpression_8hpp__incl.md5 b/docs/dom3-api/DOMXPathExpression_8hpp__incl.md5 new file mode 100644 index 00000000..00d28c59 --- /dev/null +++ b/docs/dom3-api/DOMXPathExpression_8hpp__incl.md5 @@ -0,0 +1 @@ +bfa53ae7e25cfd607918133c4b17cee6 \ No newline at end of file diff --git a/docs/dom3-api/DOMXPathExpression_8hpp__incl.png b/docs/dom3-api/DOMXPathExpression_8hpp__incl.png new file mode 100644 index 00000000..b48d41dc Binary files /dev/null and b/docs/dom3-api/DOMXPathExpression_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMXPathNSResolver_8hpp-source.html b/docs/dom3-api/DOMXPathNSResolver_8hpp-source.html new file mode 100644 index 00000000..cd62e1c0 --- /dev/null +++ b/docs/dom3-api/DOMXPathNSResolver_8hpp-source.html @@ -0,0 +1,88 @@ + + +XQilla DOM Level 3 API: DOMXPathNSResolver.hpp Source File + + + + + + +

DOMXPathNSResolver.hpp

Go to the documentation of this file.
00001 #ifndef DOMXPathNSResolver_HEADER_GUARD_
+00002 #define DOMXPathNSResolver_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 #include <xercesc/util/XercesDefs.hpp>
+00021 
+00022 XERCES_CPP_NAMESPACE_BEGIN
+00031 class CDOM_EXPORT DOMXPathNSResolver
+00032 {
+00033 
+00034 protected:
+00035     // -----------------------------------------------------------------------
+00036     //  Hidden constructors
+00037     // -----------------------------------------------------------------------
+00040     DOMXPathNSResolver() {};
+00042 
+00043 private:
+00044     // -----------------------------------------------------------------------
+00045     // Unimplemented constructors and operators
+00046     // -----------------------------------------------------------------------
+00049     DOMXPathNSResolver(const DOMXPathNSResolver &);
+00050     DOMXPathNSResolver& operator = (const  DOMXPathNSResolver&);
+00052 
+00053 public:
+00054     // -----------------------------------------------------------------------
+00055     //  All constructors are hidden, just the destructor is available
+00056     // -----------------------------------------------------------------------
+00063     virtual ~DOMXPathNSResolver() {};
+00065 
+00066     // -----------------------------------------------------------------------
+00067     // Virtual DOMDocument interface
+00068     // -----------------------------------------------------------------------
+00071 
+00078     virtual const XMLCh*          lookupNamespaceURI(const XMLCh* prefix) const = 0;
+00080 
+00081 
+00082     // -----------------------------------------------------------------------
+00083     // Non-standard extension
+00084     // -----------------------------------------------------------------------
+00087 
+00098     virtual const XMLCh*          lookupPrefix(const XMLCh* URI) const = 0;
+00099 
+00100 
+00102 };
+00103 
+00104 XERCES_CPP_NAMESPACE_END
+00105 
+00106 #endif
+00107 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMXPathNSResolver_8hpp.html b/docs/dom3-api/DOMXPathNSResolver_8hpp.html new file mode 100644 index 00000000..abdc433c --- /dev/null +++ b/docs/dom3-api/DOMXPathNSResolver_8hpp.html @@ -0,0 +1,47 @@ + + +XQilla DOM Level 3 API: DOMXPathNSResolver.hpp File Reference + + + + + + +

DOMXPathNSResolver.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for DOMXPathNSResolver.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMXPathNSResolver
 The DOMXPathNSResolver interface permit prefix strings in the expression to be properly bound to namespaceURI strings. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMXPathNSResolver_8hpp__dep__incl.map b/docs/dom3-api/DOMXPathNSResolver_8hpp__dep__incl.map new file mode 100644 index 00000000..94093838 --- /dev/null +++ b/docs/dom3-api/DOMXPathNSResolver_8hpp__dep__incl.map @@ -0,0 +1,3 @@ +base referer +rect $XQillaNSResolver_8hpp.html 243,8 395,32 +rect $DOM_8hpp.html 281,56 358,80 diff --git a/docs/dom3-api/DOMXPathNSResolver_8hpp__dep__incl.md5 b/docs/dom3-api/DOMXPathNSResolver_8hpp__dep__incl.md5 new file mode 100644 index 00000000..9e564736 --- /dev/null +++ b/docs/dom3-api/DOMXPathNSResolver_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +a06ddb486de76d44a1e76ae628c70001 \ No newline at end of file diff --git a/docs/dom3-api/DOMXPathNSResolver_8hpp__dep__incl.png b/docs/dom3-api/DOMXPathNSResolver_8hpp__dep__incl.png new file mode 100644 index 00000000..18274ef8 Binary files /dev/null and b/docs/dom3-api/DOMXPathNSResolver_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMXPathNSResolver_8hpp__incl.map b/docs/dom3-api/DOMXPathNSResolver_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMXPathNSResolver_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMXPathNSResolver_8hpp__incl.md5 b/docs/dom3-api/DOMXPathNSResolver_8hpp__incl.md5 new file mode 100644 index 00000000..15311042 --- /dev/null +++ b/docs/dom3-api/DOMXPathNSResolver_8hpp__incl.md5 @@ -0,0 +1 @@ +4b810ddbdd941f3c957fc621bae64de4 \ No newline at end of file diff --git a/docs/dom3-api/DOMXPathNSResolver_8hpp__incl.png b/docs/dom3-api/DOMXPathNSResolver_8hpp__incl.png new file mode 100644 index 00000000..9c44c0a9 Binary files /dev/null and b/docs/dom3-api/DOMXPathNSResolver_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMXPathNamespace_8hpp-source.html b/docs/dom3-api/DOMXPathNamespace_8hpp-source.html new file mode 100644 index 00000000..eeb32c31 --- /dev/null +++ b/docs/dom3-api/DOMXPathNamespace_8hpp-source.html @@ -0,0 +1,87 @@ + + +XQilla DOM Level 3 API: DOMXPathNamespace.hpp Source File + + + + + + +

DOMXPathNamespace.hpp

Go to the documentation of this file.
00001 #ifndef DOMXPathNamespace_HEADER_GUARD_
+00002 #define DOMXPathNamespace_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 #include <xercesc/dom/DOMNode.hpp>
+00021 
+00022 XERCES_CPP_NAMESPACE_BEGIN
+00023 
+00024 class DOMElement;
+00025 
+00050 class CDOM_EXPORT DOMXPathNamespace : public DOMNode
+00051 {
+00052 
+00053 protected:
+00054     // -----------------------------------------------------------------------
+00055     //  Hidden constructors
+00056     // -----------------------------------------------------------------------
+00059     DOMXPathNamespace() {};
+00061 
+00062 private:
+00063     // -----------------------------------------------------------------------
+00064     // Unimplemented constructors and operators
+00065     // -----------------------------------------------------------------------
+00068     DOMXPathNamespace(const DOMXPathNamespace &);
+00069     DOMXPathNamespace& operator = (const  DOMXPathNamespace&);
+00071 
+00072 public:
+00073 
+00074     
+00075     enum XPathNodeType {
+00076         XPATH_NAMESPACE_NODE = 13
+00077     };
+00078 
+00079     // -----------------------------------------------------------------------
+00080     //  All constructors are hidden, just the destructor is available
+00081     // -----------------------------------------------------------------------
+00088     virtual ~DOMXPathNamespace() {};
+00090 
+00091     // -----------------------------------------------------------------------
+00092     // Virtual DOMDocument interface
+00093     // -----------------------------------------------------------------------
+00103     virtual DOMElement     *getOwnerElement() const = 0;
+00104 
+00106 };
+00107 
+00108 XERCES_CPP_NAMESPACE_END
+00109 
+00110 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMXPathNamespace_8hpp.html b/docs/dom3-api/DOMXPathNamespace_8hpp.html new file mode 100644 index 00000000..2c6ddc16 --- /dev/null +++ b/docs/dom3-api/DOMXPathNamespace_8hpp.html @@ -0,0 +1,49 @@ + + +XQilla DOM Level 3 API: DOMXPathNamespace.hpp File Reference + + + + + + +

DOMXPathNamespace.hpp File Reference

#include <xercesc/dom/DOMNode.hpp>
+ +

+Include dependency graph for DOMXPathNamespace.hpp:

+ + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMXPathNamespace
 The DOMXPathNamespace interface is returned by DOMXPathResult interfaces to represent the XPath namespace node type that DOM lacks. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMXPathNamespace_8hpp__dep__incl.map b/docs/dom3-api/DOMXPathNamespace_8hpp__dep__incl.map new file mode 100644 index 00000000..8cb33b8e --- /dev/null +++ b/docs/dom3-api/DOMXPathNamespace_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 244,8 321,32 diff --git a/docs/dom3-api/DOMXPathNamespace_8hpp__dep__incl.md5 b/docs/dom3-api/DOMXPathNamespace_8hpp__dep__incl.md5 new file mode 100644 index 00000000..d8feb3f1 --- /dev/null +++ b/docs/dom3-api/DOMXPathNamespace_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +1ee8880087a414efbd2af8d0cb63c60b \ No newline at end of file diff --git a/docs/dom3-api/DOMXPathNamespace_8hpp__dep__incl.png b/docs/dom3-api/DOMXPathNamespace_8hpp__dep__incl.png new file mode 100644 index 00000000..d289b585 Binary files /dev/null and b/docs/dom3-api/DOMXPathNamespace_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMXPathNamespace_8hpp__incl.map b/docs/dom3-api/DOMXPathNamespace_8hpp__incl.map new file mode 100644 index 00000000..dd58b43e --- /dev/null +++ b/docs/dom3-api/DOMXPathNamespace_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOMNode_8hpp.html 242,8 434,32 diff --git a/docs/dom3-api/DOMXPathNamespace_8hpp__incl.md5 b/docs/dom3-api/DOMXPathNamespace_8hpp__incl.md5 new file mode 100644 index 00000000..d520863a --- /dev/null +++ b/docs/dom3-api/DOMXPathNamespace_8hpp__incl.md5 @@ -0,0 +1 @@ +052485f3c86a74a43d71185b2faef54c \ No newline at end of file diff --git a/docs/dom3-api/DOMXPathNamespace_8hpp__incl.png b/docs/dom3-api/DOMXPathNamespace_8hpp__incl.png new file mode 100644 index 00000000..699c5603 Binary files /dev/null and b/docs/dom3-api/DOMXPathNamespace_8hpp__incl.png differ diff --git a/docs/dom3-api/DOMXPathResult_8hpp-source.html b/docs/dom3-api/DOMXPathResult_8hpp-source.html new file mode 100644 index 00000000..f765c537 --- /dev/null +++ b/docs/dom3-api/DOMXPathResult_8hpp-source.html @@ -0,0 +1,118 @@ + + +XQilla DOM Level 3 API: DOMXPathResult.hpp Source File + + + + + + +

DOMXPathResult.hpp

Go to the documentation of this file.
00001 #ifndef DOMXPathResult_HEADER_GUARD_
+00002 #define DOMXPathResult_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 #include <xercesc/util/XercesDefs.hpp>
+00021 
+00022 XERCES_CPP_NAMESPACE_BEGIN
+00023 
+00024 class DOMXPathNSResolver;
+00025 class DOMXPathExpression;
+00026 class DOMNode;
+00027 
+00036 class CDOM_EXPORT DOMXPathResult
+00037 {
+00038 
+00039 protected:
+00040     // -----------------------------------------------------------------------
+00041     //  Hidden constructors
+00042     // -----------------------------------------------------------------------
+00045     DOMXPathResult() {};
+00047 
+00048 private:
+00049     // -----------------------------------------------------------------------
+00050     // Unimplemented constructors and operators
+00051     // -----------------------------------------------------------------------
+00054     DOMXPathResult(const DOMXPathResult &);
+00055     DOMXPathResult& operator = (const  DOMXPathResult&);
+00057 
+00058 public:
+00059     // -----------------------------------------------------------------------
+00060     //  All constructors are hidden, just the destructor is available
+00061     // -----------------------------------------------------------------------
+00068     virtual ~DOMXPathResult() {};
+00070 
+00071     // -----------------------------------------------------------------------
+00072     //  Class Types
+00073     // -----------------------------------------------------------------------
+00135         enum resultType {
+00136                 ANY_TYPE = 0,
+00137                 NUMBER_TYPE = 1,
+00138                 STRING_TYPE = 2,
+00139                 BOOLEAN_TYPE = 3,
+00140                 UNORDERED_NODE_ITERATOR_TYPE = 4,
+00141                 ORDERED_NODE_ITERATOR_TYPE = 5,
+00142                 UNORDERED_NODE_SNAPSHOT_TYPE = 6,
+00143                 ORDERED_NODE_SNAPSHOT_TYPE = 7,
+00144                 ANY_UNORDERED_NODE_TYPE = 8,
+00145                 FIRST_ORDERED_NODE_TYPE = 9
+00146     };
+00148 
+00149 
+00150     // -----------------------------------------------------------------------
+00151     // Virtual DOMDocument interface
+00152     // -----------------------------------------------------------------------
+00155 
+00156 
+00164         virtual bool getBooleanValue() const = 0;
+00165 
+00175         virtual bool getInvalidIteratorState() const = 0;
+00176 
+00187         virtual double getNumberValue() const = 0;
+00188 
+00196         virtual short getResultType() const = 0;
+00197         
+00205         virtual DOMNode *getSingleNodeValue() const = 0;
+00206 
+00216         virtual unsigned long getSnapshotLength() const = 0;
+00217         
+00225         virtual const XMLCh* getStringValue() const = 0;
+00226     
+00235         virtual DOMNode* iterateNext() const = 0;
+00236 
+00247         virtual DOMNode* snapshotItem(unsigned long index) const = 0;
+00248 
+00250 };
+00251 
+00252 XERCES_CPP_NAMESPACE_END
+00253 
+00254 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMXPathResult_8hpp.html b/docs/dom3-api/DOMXPathResult_8hpp.html new file mode 100644 index 00000000..ec36c0b3 --- /dev/null +++ b/docs/dom3-api/DOMXPathResult_8hpp.html @@ -0,0 +1,46 @@ + + +XQilla DOM Level 3 API: DOMXPathResult.hpp File Reference + + + + + + +

DOMXPathResult.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for DOMXPathResult.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMXPathResult
 The DOMXPathResult interface represents the result of the evaluation of an XPath 1.0 expression within the context of a particular node. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOMXPathResult_8hpp__dep__incl.map b/docs/dom3-api/DOMXPathResult_8hpp__dep__incl.map new file mode 100644 index 00000000..ab239849 --- /dev/null +++ b/docs/dom3-api/DOMXPathResult_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOM_8hpp.html 212,8 289,32 diff --git a/docs/dom3-api/DOMXPathResult_8hpp__dep__incl.md5 b/docs/dom3-api/DOMXPathResult_8hpp__dep__incl.md5 new file mode 100644 index 00000000..656a4042 --- /dev/null +++ b/docs/dom3-api/DOMXPathResult_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +8b5eb2f2e980b0ac26a1ab41e26e6fbf \ No newline at end of file diff --git a/docs/dom3-api/DOMXPathResult_8hpp__dep__incl.png b/docs/dom3-api/DOMXPathResult_8hpp__dep__incl.png new file mode 100644 index 00000000..5c6da285 Binary files /dev/null and b/docs/dom3-api/DOMXPathResult_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/DOMXPathResult_8hpp__incl.map b/docs/dom3-api/DOMXPathResult_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/DOMXPathResult_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/DOMXPathResult_8hpp__incl.md5 b/docs/dom3-api/DOMXPathResult_8hpp__incl.md5 new file mode 100644 index 00000000..056dd73a --- /dev/null +++ b/docs/dom3-api/DOMXPathResult_8hpp__incl.md5 @@ -0,0 +1 @@ +192668b37af6870325cc50bbdf815f2e \ No newline at end of file diff --git a/docs/dom3-api/DOMXPathResult_8hpp__incl.png b/docs/dom3-api/DOMXPathResult_8hpp__incl.png new file mode 100644 index 00000000..0bf9ed66 Binary files /dev/null and b/docs/dom3-api/DOMXPathResult_8hpp__incl.png differ diff --git a/docs/dom3-api/DOM_8hpp-source.html b/docs/dom3-api/DOM_8hpp-source.html new file mode 100644 index 00000000..f22929a7 --- /dev/null +++ b/docs/dom3-api/DOM_8hpp-source.html @@ -0,0 +1,106 @@ + + +XQilla DOM Level 3 API: DOM.hpp Source File + + + + + + +

DOM.hpp

Go to the documentation of this file.
00001 #ifndef DOMHEADER_GUARD_HPP
+00002 #define DOMHEADER_GUARD_HPP
+00003 
+00004 /*
+00005  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOM.hpp 176026 2004-09-08 13:57:07Z peiyongz $
+00022  */
+00023 
+00024 //
+00025 //  This is the primary header file for inclusion in application
+00026 //  programs using the C++ XML Document Object Model API.
+00027 //
+00028 
+00029 #include <xercesc/dom/DOMAttr.hpp>
+00030 #include <xercesc/dom/DOMCDATASection.hpp>
+00031 #include <xercesc/dom/DOMCharacterData.hpp>
+00032 #include <xercesc/dom/DOMComment.hpp>
+00033 #include <xercesc/dom/DOMDocument.hpp>
+00034 #include <xercesc/dom/DOMDocumentFragment.hpp>
+00035 #include <xercesc/dom/DOMDocumentType.hpp>
+00036 #include <xercesc/dom/DOMElement.hpp>
+00037 #include <xercesc/dom/DOMEntity.hpp>
+00038 #include <xercesc/dom/DOMEntityReference.hpp>
+00039 #include <xercesc/dom/DOMException.hpp>
+00040 #include <xercesc/dom/DOMImplementation.hpp>
+00041 #include <xercesc/dom/DOMNamedNodeMap.hpp>
+00042 #include <xercesc/dom/DOMNode.hpp>
+00043 #include <xercesc/dom/DOMNodeList.hpp>
+00044 #include <xercesc/dom/DOMNotation.hpp>
+00045 #include <xercesc/dom/DOMProcessingInstruction.hpp>
+00046 #include <xercesc/dom/DOMText.hpp>
+00047 
+00048 // Introduced in DOM Level 2
+00049 #include <xercesc/dom/DOMDocumentRange.hpp>
+00050 #include <xercesc/dom/DOMDocumentTraversal.hpp>
+00051 #include <xercesc/dom/DOMNodeFilter.hpp>
+00052 #include <xercesc/dom/DOMNodeIterator.hpp>
+00053 #include <xercesc/dom/DOMRange.hpp>
+00054 #include <xercesc/dom/DOMRangeException.hpp>
+00055 #include <xercesc/dom/DOMTreeWalker.hpp>
+00056 
+00057 // Introduced in DOM Level 3
+00058 // Experimental - subject to change
+00059 #include <xercesc/dom/DOMBuilder.hpp>
+00060 #include <xercesc/dom/DOMConfiguration.hpp>
+00061 #include <xercesc/dom/DOMEntityResolver.hpp>
+00062 #include <xercesc/dom/DOMError.hpp>
+00063 #include <xercesc/dom/DOMErrorHandler.hpp>
+00064 #include <xercesc/dom/DOMImplementationLS.hpp>
+00065 #include <xercesc/dom/DOMImplementationRegistry.hpp>
+00066 #include <xercesc/dom/DOMImplementationSource.hpp>
+00067 #include <xercesc/dom/DOMInputSource.hpp>
+00068 #include <xercesc/dom/DOMLocator.hpp>
+00069 #include <xercesc/dom/DOMTypeInfo.hpp>
+00070 #include <xercesc/dom/DOMUserDataHandler.hpp>
+00071 #include <xercesc/dom/DOMWriter.hpp>
+00072 #include <xercesc/dom/DOMWriterFilter.hpp>
+00073 
+00074 #include <xercesc/dom/DOMXPathEvaluator.hpp>
+00075 #include <xercesc/dom/DOMXPathNSResolver.hpp>
+00076 #include <xercesc/dom/DOMXPathException.hpp>
+00077 #include <xercesc/dom/DOMXPathExpression.hpp>
+00078 #include <xercesc/dom/DOMXPathResult.hpp>
+00079 #include <xercesc/dom/DOMXPathNamespace.hpp>
+00080 
+00081 
+00082 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOM_8hpp.html b/docs/dom3-api/DOM_8hpp.html new file mode 100644 index 00000000..14a39922 --- /dev/null +++ b/docs/dom3-api/DOM_8hpp.html @@ -0,0 +1,124 @@ + + +XQilla DOM Level 3 API: DOM.hpp File Reference + + + + + + +

DOM.hpp File Reference

#include <xercesc/dom/DOMAttr.hpp>
+#include <xercesc/dom/DOMCDATASection.hpp>
+#include <xercesc/dom/DOMCharacterData.hpp>
+#include <xercesc/dom/DOMComment.hpp>
+#include <xercesc/dom/DOMDocument.hpp>
+#include <xercesc/dom/DOMDocumentFragment.hpp>
+#include <xercesc/dom/DOMDocumentType.hpp>
+#include <xercesc/dom/DOMElement.hpp>
+#include <xercesc/dom/DOMEntity.hpp>
+#include <xercesc/dom/DOMEntityReference.hpp>
+#include <xercesc/dom/DOMException.hpp>
+#include <xercesc/dom/DOMImplementation.hpp>
+#include <xercesc/dom/DOMNamedNodeMap.hpp>
+#include <xercesc/dom/DOMNode.hpp>
+#include <xercesc/dom/DOMNodeList.hpp>
+#include <xercesc/dom/DOMNotation.hpp>
+#include <xercesc/dom/DOMProcessingInstruction.hpp>
+#include <xercesc/dom/DOMText.hpp>
+#include <xercesc/dom/DOMDocumentRange.hpp>
+#include <xercesc/dom/DOMDocumentTraversal.hpp>
+#include <xercesc/dom/DOMNodeFilter.hpp>
+#include <xercesc/dom/DOMNodeIterator.hpp>
+#include <xercesc/dom/DOMRange.hpp>
+#include <xercesc/dom/DOMRangeException.hpp>
+#include <xercesc/dom/DOMTreeWalker.hpp>
+#include <xercesc/dom/DOMBuilder.hpp>
+#include <xercesc/dom/DOMConfiguration.hpp>
+#include <xercesc/dom/DOMEntityResolver.hpp>
+#include <xercesc/dom/DOMError.hpp>
+#include <xercesc/dom/DOMErrorHandler.hpp>
+#include <xercesc/dom/DOMImplementationLS.hpp>
+#include <xercesc/dom/DOMImplementationRegistry.hpp>
+#include <xercesc/dom/DOMImplementationSource.hpp>
+#include <xercesc/dom/DOMInputSource.hpp>
+#include <xercesc/dom/DOMLocator.hpp>
+#include <xercesc/dom/DOMTypeInfo.hpp>
+#include <xercesc/dom/DOMUserDataHandler.hpp>
+#include <xercesc/dom/DOMWriter.hpp>
+#include <xercesc/dom/DOMWriterFilter.hpp>
+#include <xercesc/dom/DOMXPathEvaluator.hpp>
+#include <xercesc/dom/DOMXPathNSResolver.hpp>
+#include <xercesc/dom/DOMXPathException.hpp>
+#include <xercesc/dom/DOMXPathExpression.hpp>
+#include <xercesc/dom/DOMXPathResult.hpp>
+#include <xercesc/dom/DOMXPathNamespace.hpp>
+ +

+Include dependency graph for DOM.hpp:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Go to the source code of this file. + +
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/DOM_8hpp__incl.map b/docs/dom3-api/DOM_8hpp__incl.map new file mode 100644 index 00000000..3d36a51a --- /dev/null +++ b/docs/dom3-api/DOM_8hpp__incl.map @@ -0,0 +1,46 @@ +base referer +rect $DOMAttr_8hpp.html 866,61 1045,85 +rect $DOMNode_8hpp.html 1148,713 1340,737 +rect $DOMCDATASection_8hpp.html 168,159 413,183 +rect $DOMText_8hpp.html 534,209 718,233 +rect $DOMCharacterData_8hpp.html 833,285 1078,309 +rect $DOMComment_8hpp.html 518,309 734,333 +rect $DOMDocument_8hpp.html 181,461 400,485 +rect $DOMDocumentRange_8hpp.html 497,362 756,386 +rect $DOMDocumentTraversal_8hpp.html 489,411 764,435 +rect $DOMXPathEvaluator_8hpp.html 501,510 752,534 +rect $DOMDocumentFragment_8hpp.html 817,562 1094,586 +rect $DOMDocumentType_8hpp.html 832,613 1080,637 +rect $DOMElement_8hpp.html 852,663 1060,687 +rect $DOMEntity_8hpp.html 860,713 1052,737 +rect $DOMEntityReference_8hpp.html 829,930 1082,954 +rect $DOMException_8hpp.html 846,863 1065,887 +rect $DOMImplementation_8hpp.html 165,863 416,887 +rect $DOMImplementationLS_8hpp.html 493,814 760,838 +rect $DOMRangeException_8hpp.html 498,913 754,937 +rect $DOMNamedNodeMap_8hpp.html 161,962 420,986 +rect $DOMNodeList_8hpp.html 185,1010 396,1034 +rect $DOMNotation_8hpp.html 852,987 1060,1011 +rect $DOMProcessingInstruction_8hpp.html 812,1074 1100,1098 +rect $DOMNodeFilter_8hpp.html 846,1310 1065,1334 +rect $DOMNodeIterator_8hpp.html 510,1211 742,1235 +rect $DOMRange_8hpp.html 192,1261 389,1285 +rect $DOMTreeWalker_8hpp.html 514,1866 738,1890 +rect $DOMBuilder_8hpp.html 190,1359 390,1383 +rect $DOMConfiguration_8hpp.html 172,1407 409,1431 +rect $DOMEntityResolver_8hpp.html 169,1455 412,1479 +rect $DOMError_8hpp.html 197,1503 384,1527 +rect $DOMErrorHandler_8hpp.html 509,1577 744,1601 +rect $DOMImplementationRegistry_8hpp.html 141,1602 440,1626 +rect $DOMImplementationSource_8hpp.html 144,1650 437,1674 +rect $DOMInputSource_8hpp.html 174,1698 406,1722 +rect $DOMLocator_8hpp.html 189,1746 392,1770 +rect $DOMTypeInfo_8hpp.html 185,1794 396,1818 +rect $DOMUserDataHandler_8hpp.html 496,2061 757,2085 +rect $DOMWriter_8hpp.html 194,1842 386,1866 +rect $DOMWriterFilter_8hpp.html 516,1818 737,1842 +rect $DOMXPathNSResolver_8hpp.html 158,1991 422,2015 +rect $DOMXPathException_8hpp.html 164,2039 417,2063 +rect $DOMXPathExpression_8hpp.html 160,2087 421,2111 +rect $DOMXPathResult_8hpp.html 174,2135 406,2159 +rect $DOMXPathNamespace_8hpp.html 822,11 1089,35 diff --git a/docs/dom3-api/DOM_8hpp__incl.md5 b/docs/dom3-api/DOM_8hpp__incl.md5 new file mode 100644 index 00000000..17eae6bc --- /dev/null +++ b/docs/dom3-api/DOM_8hpp__incl.md5 @@ -0,0 +1 @@ +3723897fe0045a35cdb6909c086a016a \ No newline at end of file diff --git a/docs/dom3-api/DOM_8hpp__incl.png b/docs/dom3-api/DOM_8hpp__incl.png new file mode 100644 index 00000000..9d47b0ae Binary files /dev/null and b/docs/dom3-api/DOM_8hpp__incl.png differ diff --git a/docs/dom3-api/MemoryManager_8hpp-source.html b/docs/dom3-api/MemoryManager_8hpp-source.html new file mode 100644 index 00000000..c9d846b5 --- /dev/null +++ b/docs/dom3-api/MemoryManager_8hpp-source.html @@ -0,0 +1,100 @@ + + +XQilla DOM Level 3 API: MemoryManager.hpp Source File + + + + + + +

MemoryManager.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright 2003,2004 The Apache Software Foundation.
+00003  * 
+00004  * Licensed under the Apache License, Version 2.0 (the "License");
+00005  * you may not use this file except in compliance with the License.
+00006  * You may obtain a copy of the License at
+00007  * 
+00008  *      http://www.apache.org/licenses/LICENSE-2.0
+00009  * 
+00010  * Unless required by applicable law or agreed to in writing, software
+00011  * distributed under the License is distributed on an "AS IS" BASIS,
+00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00013  * See the License for the specific language governing permissions and
+00014  * limitations under the License.
+00015  */
+00016 
+00017  /*
+00018  * $Id: MemoryManager.hpp 191054 2005-06-17 02:56:35Z jberry $
+00019  */
+00020 
+00021 
+00022 #if !defined(MEMORYMANAGER_HPP)
+00023 #define MEMORYMANAGER_HPP
+00024 
+00025 #include <xercesc/util/XercesDefs.hpp>
+00026 #include <stdlib.h>
+00027 
+00028 
+00029 XERCES_CPP_NAMESPACE_BEGIN
+00030 
+00031 
+00038 class XMLPARSER_EXPORT MemoryManager
+00039 {
+00040 public:
+00041     // -----------------------------------------------------------------------
+00042     //  Constructors are hidden, only the virtual destructor is exposed
+00043     // -----------------------------------------------------------------------
+00044 
+00047 
+00051     virtual ~MemoryManager()
+00052     {
+00053     }
+00055 
+00056 
+00057     // -----------------------------------------------------------------------
+00058     //  The virtual memory manager interface
+00059     // -----------------------------------------------------------------------
+00062 
+00070     virtual void* allocate(size_t size) = 0;
+00071 
+00077     virtual void deallocate(void* p) = 0;
+00078 
+00080 
+00081 
+00082 protected :
+00083     // -----------------------------------------------------------------------
+00084     //  Hidden Constructors
+00085     // -----------------------------------------------------------------------
+00088 
+00092     MemoryManager()
+00093     {
+00094     }
+00096 
+00097 
+00098 
+00099 private:
+00100     // -----------------------------------------------------------------------
+00101     //  Unimplemented constructors and operators
+00102     // -----------------------------------------------------------------------
+00103     MemoryManager(const MemoryManager&);
+00104     MemoryManager& operator=(const MemoryManager&);
+00105 };
+00106 
+00107 XERCES_CPP_NAMESPACE_END
+00108 
+00109 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/MemoryManager_8hpp.html b/docs/dom3-api/MemoryManager_8hpp.html new file mode 100644 index 00000000..f08501ca --- /dev/null +++ b/docs/dom3-api/MemoryManager_8hpp.html @@ -0,0 +1,74 @@ + + +XQilla DOM Level 3 API: MemoryManager.hpp File Reference + + + + + + +

MemoryManager.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <stdlib.h>
+ +

+Include dependency graph for MemoryManager.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::MemoryManager
 Configurable memory manager. More...

Defines

#define MEMORYMANAGER_HPP
+


Define Documentation

+

+ + + + +
+ + + + +
#define MEMORYMANAGER_HPP
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/MemoryManager_8hpp__dep__incl.map b/docs/dom3-api/MemoryManager_8hpp__dep__incl.map new file mode 100644 index 00000000..f272c88d --- /dev/null +++ b/docs/dom3-api/MemoryManager_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOMException_8cpp.html 206,8 342,32 diff --git a/docs/dom3-api/MemoryManager_8hpp__dep__incl.md5 b/docs/dom3-api/MemoryManager_8hpp__dep__incl.md5 new file mode 100644 index 00000000..d7dab1f9 --- /dev/null +++ b/docs/dom3-api/MemoryManager_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +1dd0f2095748494c441f033624acaad9 \ No newline at end of file diff --git a/docs/dom3-api/MemoryManager_8hpp__dep__incl.png b/docs/dom3-api/MemoryManager_8hpp__dep__incl.png new file mode 100644 index 00000000..c2edec0c Binary files /dev/null and b/docs/dom3-api/MemoryManager_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/MemoryManager_8hpp__incl.map b/docs/dom3-api/MemoryManager_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/MemoryManager_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/MemoryManager_8hpp__incl.md5 b/docs/dom3-api/MemoryManager_8hpp__incl.md5 new file mode 100644 index 00000000..912c467b --- /dev/null +++ b/docs/dom3-api/MemoryManager_8hpp__incl.md5 @@ -0,0 +1 @@ +7adce67bf2b9675fcdc24e7259da91dc \ No newline at end of file diff --git a/docs/dom3-api/MemoryManager_8hpp__incl.png b/docs/dom3-api/MemoryManager_8hpp__incl.png new file mode 100644 index 00000000..d7396544 Binary files /dev/null and b/docs/dom3-api/MemoryManager_8hpp__incl.png differ diff --git a/docs/dom3-api/PlatformUtils_8hpp-source.html b/docs/dom3-api/PlatformUtils_8hpp-source.html new file mode 100644 index 00000000..e14b88f3 --- /dev/null +++ b/docs/dom3-api/PlatformUtils_8hpp-source.html @@ -0,0 +1,327 @@ + + +XQilla DOM Level 3 API: PlatformUtils.hpp Source File + + + + + + +

PlatformUtils.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright 1999-2004 The Apache Software Foundation.
+00003  * 
+00004  * Licensed under the Apache License, Version 2.0 (the "License");
+00005  * you may not use this file except in compliance with the License.
+00006  * You may obtain a copy of the License at
+00007  * 
+00008  *      http://www.apache.org/licenses/LICENSE-2.0
+00009  * 
+00010  * Unless required by applicable law or agreed to in writing, software
+00011  * distributed under the License is distributed on an "AS IS" BASIS,
+00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00013  * See the License for the specific language governing permissions and
+00014  * limitations under the License.
+00015  */
+00016 
+00017 /*
+00018  * $Id: PlatformUtils.hpp 180016 2005-06-04 19:49:30Z jberry $
+00019  */
+00020 
+00021 
+00022 #if !defined(PLATFORMUTILS_HPP)
+00023 #define PLATFORMUTILS_HPP
+00024 
+00025 #include <xercesc/util/XMLException.hpp>
+00026 #include <xercesc/util/PanicHandler.hpp>
+00027 
+00028 XERCES_CPP_NAMESPACE_BEGIN
+00029 
+00030 class XMLMsgLoader;
+00031 class XMLNetAccessor;
+00032 class XMLTransService;
+00033 class MemoryManager;
+00034 class XMLMutex;
+00035 
+00036 //
+00037 //  For internal use only
+00038 //
+00039 //  This class provides a simple abstract API via which lazily evaluated
+00040 //  data can be cleaned up.
+00041 //
+00042 class XMLUTIL_EXPORT XMLDeleter
+00043 {
+00044 public :
+00045     virtual ~XMLDeleter();
+00046 
+00047 protected :
+00048     XMLDeleter();
+00049 
+00050 private :
+00051     XMLDeleter(const XMLDeleter&);
+00052     XMLDeleter& operator=(const XMLDeleter&);
+00053 };
+00054 
+00055 
+00064 class XMLUTIL_EXPORT XMLPlatformUtils
+00065 {
+00066 public :
+00067 
+00070 
+00083     static XMLNetAccessor*      fgNetAccessor;
+00084 
+00095     static XMLTransService*     fgTransService;
+00096 
+00101     static PanicHandler*        fgUserPanicHandler;
+00102     
+00107     static PanicHandler*        fgDefaultPanicHandler;
+00108 
+00114     static MemoryManager*       fgMemoryManager;
+00115     
+00124     static MemoryManager*       fgArrayMemoryManager;
+00125 
+00126     static XMLMutex*            fgAtomicMutex;
+00127     
+00129 
+00130 
+00133 
+00164     static void Initialize(const char*          const locale = XMLUni::fgXercescDefaultLocale
+00165                          , const char*          const nlsHome = 0
+00166                          ,       PanicHandler*  const panicHandler = 0
+00167                          ,       MemoryManager* const memoryManager = 0
+00168                          ,       bool                 toInitStatics = false);
+00169 
+00176     static void Terminate();
+00177 
+00194     static void panic
+00195     (
+00196         const   PanicHandler::PanicReasons    reason
+00197     );
+00198     
+00200 
+00203 
+00217     static unsigned int curFilePos(FileHandle theFile
+00218         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager);
+00219 
+00230     static void closeFile(FileHandle theFile
+00231         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager);
+00232 
+00243     static unsigned int fileSize(FileHandle theFile
+00244         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager);
+00245 
+00256     static FileHandle openFile(const char* const fileName
+00257         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager);
+00258 
+00269     static FileHandle openFile(const XMLCh* const fileName
+00270         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager);
+00271 
+00282     static FileHandle openFileToWrite(const char* const fileName
+00283         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager);
+00284 
+00295     static FileHandle openFileToWrite(const XMLCh* const fileName
+00296         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager);
+00297 
+00308     static FileHandle openStdInHandle(MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager);
+00309 
+00326     static unsigned int readFileBuffer
+00327     (
+00328                 FileHandle      theFile
+00329         , const unsigned int    toRead
+00330         ,       XMLByte* const  toFill
+00331         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager
+00332     );
+00333 
+00348     static void writeBufferToFile
+00349     (
+00350           FileHandle     const  theFile
+00351         , long                  toWrite
+00352         , const XMLByte* const  toFlush
+00353         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager
+00354     );
+00355 
+00365     static void resetFile(FileHandle theFile
+00366         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager);
+00367 
+00369 
+00370 
+00394     static XMLCh* getFullPath
+00395     (
+00396         const XMLCh* const srcPath
+00397         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+00398     );
+00399 
+00413     static XMLCh* getCurrentDirectory
+00414     (
+00415         MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+00416     );
+00417 
+00427     static inline bool isAnySlash(XMLCh c);
+00428     
+00438     static void   removeDotSlash(XMLCh* const srcPath
+00439         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+00440 
+00451     static void   removeDotDotSlash(XMLCh* const srcPath
+00452         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+00453 
+00467     static bool isRelative(const XMLCh* const toCheck
+00468         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+00469         );
+00470 
+00490     static XMLCh* weavePaths
+00491     (
+00492         const   XMLCh* const    basePath
+00493         , const XMLCh* const    relativePath
+00494         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+00495     );
+00497 
+00500 
+00510     static unsigned long getCurrentMillis();
+00512 
+00515 
+00523     static void closeMutex(void* const mtxHandle);
+00524 
+00532     static void lockMutex(void* const mtxHandle);
+00533 
+00543     static void* makeMutex(MemoryManager* manager = XMLPlatformUtils::fgMemoryManager);
+00544 
+00557     static void unlockMutex(void* const mtxHandle);
+00558 
+00560 
+00561 
+00564 
+00572     static XMLMsgLoader* loadMsgSet(const XMLCh* const msgDomain);
+00573 
+00575 
+00578 
+00604     static void* compareAndSwap
+00605     (
+00606                 void**      toFill
+00607         , const void* const newValue
+00608         , const void* const toCompare
+00609     );
+00610 
+00612 
+00613 
+00616 
+00636     static int atomicIncrement(int& location);
+00637 
+00657     static int atomicDecrement(int& location);
+00658 
+00660 
+00674     static void recognizeNEL(bool state
+00675         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager);
+00676 
+00680     static bool isNELRecognized();
+00682 
+00694     static void strictIANAEncoding(const bool state);
+00695 
+00700     static bool isStrictIANAEncoding();
+00702                 
+00710         static inline size_t alignPointerForNewBlockAllocation(size_t ptrSize);
+00711 
+00712 private :
+00713     // -----------------------------------------------------------------------
+00714     //  Unimplemented constructors and operators
+00715     // -----------------------------------------------------------------------
+00716     XMLPlatformUtils();
+00717 
+00720 
+00726     static XMLMsgLoader* loadAMsgSet(const XMLCh* const msgDomain);
+00727 
+00737     static XMLNetAccessor* makeNetAccessor();
+00738 
+00749     static XMLTransService* makeTransService();
+00750 
+00757     static void platformInit();
+00758 
+00765     static void platformTerm();
+00766 
+00774     static int  searchSlashDotDotSlash(XMLCh* const srcPath);
+00775 
+00777 
+00780 
+00787     static bool fgMemMgrAdopted;
+00788 
+00790 };
+00791 
+00792 
+00793 MakeXMLException(XMLPlatformUtilsException, XMLUTIL_EXPORT)
+00794 
+00795 
+00796 // ---------------------------------------------------------------------------
+00797 //  XMLPlatformUtils: alignPointerForNewBlockAllocation
+00798 // ---------------------------------------------------------------------------
+00799 //  Calculate alignment required by platform for a new
+00800 //      block allocation. We use this in our custom allocators
+00801 //      to ensure that returned blocks are properly aligned.
+00802 //  Note that, although this will take a pointer and return the position
+00803 //  at which it should be placed for correct alignment, in our code
+00804 //  we normally use size_t parameters to discover what the alignment
+00805 //  of header blocks should be.  Thus, if this is to be
+00806 //  used for the former purpose, to make compilers happy
+00807 //  some casting will be necessary - neilg.
+00808 //
+00809 //  Note: XML_PLATFORM_NEW_BLOCK_ALIGNMENT may be specified on a
+00810 //        per-architecture basis to dictate the alignment requirements
+00811 //        of the architecture. In the absense of this specification,
+00812 //        this routine guesses at the correct alignment value.
+00813 //
+00814 //        A XML_PLATFORM_NEW_BLOCK_ALIGNMENT value of zero is illegal.
+00815 //        If a platform requires absolutely no alignment, a value
+00816 //        of 1 should be specified ("align pointers on 1 byte boundaries").
+00817 //
+00818 inline size_t
+00819 XMLPlatformUtils::alignPointerForNewBlockAllocation(size_t ptrSize)
+00820 {
+00821         //      Macro XML_PLATFORM_NEW_BLOCK_ALIGNMENT may be defined
+00822         //      as needed to dictate alignment requirements on a
+00823         //      per-architecture basis. In the absense of that we
+00824         //      take an educated guess.
+00825         #ifdef XML_PLATFORM_NEW_BLOCK_ALIGNMENT
+00826                 size_t alignment = XML_PLATFORM_NEW_BLOCK_ALIGNMENT;
+00827         #else
+00828                 size_t alignment = (sizeof(void*) >= sizeof(double)) ? sizeof(void*) : sizeof(double);
+00829         #endif
+00830         
+00831         //      Calculate current alignment of pointer
+00832         size_t current = ptrSize % alignment;
+00833         
+00834         //      Adjust pointer alignment as needed
+00835         return (current == 0)
+00836                  ? ptrSize
+00837                  : (ptrSize + alignment - current);
+00838 }
+00839 
+00840 
+00841 
+00842 // ---------------------------------------------------------------------------
+00843 //  XMLDeleter: Public Destructor
+00844 // ---------------------------------------------------------------------------
+00845 inline XMLDeleter::~XMLDeleter()
+00846 {
+00847 }
+00848 
+00849 // ---------------------------------------------------------------------------
+00850 //  XMLDeleter: Hidden constructors and operators
+00851 // ---------------------------------------------------------------------------
+00852 inline XMLDeleter::XMLDeleter()
+00853 {
+00854 }
+00855 
+00856 XERCES_CPP_NAMESPACE_END
+00857 
+00858 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/PlatformUtils_8hpp.html b/docs/dom3-api/PlatformUtils_8hpp.html new file mode 100644 index 00000000..aaa8b0de --- /dev/null +++ b/docs/dom3-api/PlatformUtils_8hpp.html @@ -0,0 +1,87 @@ + + +XQilla DOM Level 3 API: PlatformUtils.hpp File Reference + + + + + + +

PlatformUtils.hpp File Reference

#include <xercesc/util/XMLException.hpp>
+#include <xercesc/util/PanicHandler.hpp>
+ +

+Include dependency graph for PlatformUtils.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + + + + + + + + + +

+Go to the source code of this file. + + + + + + + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::XMLDeleter
class  xercesc::XMLPlatformUtils
 Utilities that must be implemented in a platform-specific way. More...

Defines

#define PLATFORMUTILS_HPP

Functions

 xercesc::MakeXMLException (XMLPlatformUtilsException, XMLUTIL_EXPORT) inline size_t XMLPlatformUtils
+


Define Documentation

+

+ + + + +
+ + + + +
#define PLATFORMUTILS_HPP
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/PlatformUtils_8hpp__dep__incl.map b/docs/dom3-api/PlatformUtils_8hpp__dep__incl.map new file mode 100644 index 00000000..36a21d73 --- /dev/null +++ b/docs/dom3-api/PlatformUtils_8hpp__dep__incl.map @@ -0,0 +1,10 @@ +base referer +rect $DOMException_8hpp.html 182,173 318,197 +rect $DOMImplementation_8hpp.html 605,272 775,296 +rect $DOMImplementationLS_8hpp.html 367,372 554,396 +rect $XPath2Result_8hpp.html 395,124 526,148 +rect $XQillaExpression_8hpp.html 615,124 765,148 +rect $DOM_8hpp.html 857,248 934,272 +rect $DOMException_8cpp.html 827,125 963,149 +rect $DOMRangeException_8hpp.html 373,222 549,246 +rect $DOMRangeException_8cpp.html 602,173 778,197 diff --git a/docs/dom3-api/PlatformUtils_8hpp__dep__incl.md5 b/docs/dom3-api/PlatformUtils_8hpp__dep__incl.md5 new file mode 100644 index 00000000..b9d2fde8 --- /dev/null +++ b/docs/dom3-api/PlatformUtils_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +de853ab12a0c008a36df9fbadb10c77b \ No newline at end of file diff --git a/docs/dom3-api/PlatformUtils_8hpp__dep__incl.png b/docs/dom3-api/PlatformUtils_8hpp__dep__incl.png new file mode 100644 index 00000000..0f737a6e Binary files /dev/null and b/docs/dom3-api/PlatformUtils_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/PlatformUtils_8hpp__incl.map b/docs/dom3-api/PlatformUtils_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/PlatformUtils_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/PlatformUtils_8hpp__incl.md5 b/docs/dom3-api/PlatformUtils_8hpp__incl.md5 new file mode 100644 index 00000000..b38ed1a1 --- /dev/null +++ b/docs/dom3-api/PlatformUtils_8hpp__incl.md5 @@ -0,0 +1 @@ +9f393b9a770527cd427164c361d51399 \ No newline at end of file diff --git a/docs/dom3-api/PlatformUtils_8hpp__incl.png b/docs/dom3-api/PlatformUtils_8hpp__incl.png new file mode 100644 index 00000000..2477cda4 Binary files /dev/null and b/docs/dom3-api/PlatformUtils_8hpp__incl.png differ diff --git a/docs/dom3-api/StDOMNode_8hpp-source.html b/docs/dom3-api/StDOMNode_8hpp-source.html new file mode 100644 index 00000000..688079b5 --- /dev/null +++ b/docs/dom3-api/StDOMNode_8hpp-source.html @@ -0,0 +1,118 @@ + + +XQilla DOM Level 3 API: StDOMNode.hpp Source File + + + + + + +

StDOMNode.hpp

Go to the documentation of this file.
00001 #ifndef DOMSPtr_HEADER_GUARD_
+00002 #define DOMSPtr_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: StDOMNode.hpp 176026 2004-09-08 13:57:07Z peiyongz $
+00022  */
+00023 
+00024 #include <xercesc/dom/DOMNode.hpp>
+00025 #include <xercesc/dom/DOMAttr.hpp>
+00026 #include <xercesc/dom/DOMElement.hpp>
+00027 
+00028 XERCES_CPP_NAMESPACE_BEGIN
+00029 
+00030 /* This class is a smart pointer implementation over DOMNode interface and
+00031 ** classes derived from it. It takes care of reference counting automatically.
+00032 ** Reference counting is optional so use of this class is experimental.
+00033 */
+00034 template <class T> class StDOMNode {
+00035         T* m_node;
+00036 
+00037         static inline void INCREFCOUNT(T *x) { if (x != (T*)0) x->incRefCount(); }
+00038         static inline void DECREFCOUNT(T *x) { if (x != (T*)0) x->decRefCount(); }
+00039 
+00040 public:
+00041         inline StDOMNode(T* node = (T*)0) : m_node(node) { INCREFCOUNT(m_node); }
+00042         inline StDOMNode(const StDOMNode& stNode) : m_node(stNode.m_node) { INCREFCOUNT(m_node); }
+00043         inline ~StDOMNode() { DECREFCOUNT(m_node); }
+00044 
+00045         inline T* operator= (T *node)
+00046         {
+00047                 if (m_node != node) {
+00048                         DECREFCOUNT(m_node);
+00049                         m_node = node;
+00050                         INCREFCOUNT(m_node);
+00051                 }
+00052                 return (m_node);
+00053         }
+00054 
+00055         inline bool operator!= (T* node) const { return (m_node != node); }
+00056         inline bool operator== (T* node) const { return (m_node == node); }
+00057 
+00058         inline T& operator* () { return (*m_node); }
+00059         inline const T& operator* () const { return (*m_node); }
+00060         inline T* operator-> () const { return (m_node); }
+00061         inline operator T*() const { return (m_node); }
+00062         inline void ClearNode() { operator=((T*)(0)); }
+00063 };
+00064 
+00065 #if defined(XML_DOMREFCOUNT_EXPERIMENTAL)
+00066     typedef StDOMNode<DOMNode> DOMNodeSPtr;
+00067 #else
+00068     typedef DOMNode* DOMNodeSPtr;
+00069 #endif
+00070 
+00071 /* StDOMNode is a smart pointer implementation over DOMNode interface and
+00072 ** classes derived from it. It takes care of reference counting automatically.
+00073 ** Reference counting is optional so use of this class is experimental.
+00074 */
+00075 #if defined(XML_DOMREFCOUNT_EXPERIMENTAL)
+00076     typedef StDOMNode<DOMAttr> DOMAttrSPtr;
+00077 #else
+00078     typedef DOMAttr* DOMAttrSPtr;
+00079 #endif
+00080 
+00081 /* StDOMNode is a smart pointer implementation over DOMNode interface and
+00082 ** classes derived from it. It takes care of reference counting automatically.
+00083 ** Reference counting is optional so use of this class is experimental.
+00084 */
+00085 #if defined(XML_DOMREFCOUNT_EXPERIMENTAL)
+00086     typedef StDOMNode<DOMElement> DOMElementSPtr;
+00087 #else
+00088     typedef DOMElement* DOMElementSPtr;
+00089 #endif
+00090 
+00091 XERCES_CPP_NAMESPACE_END
+00092 
+00093 #endif
+00094 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/StDOMNode_8hpp.html b/docs/dom3-api/StDOMNode_8hpp.html new file mode 100644 index 00000000..5d732727 --- /dev/null +++ b/docs/dom3-api/StDOMNode_8hpp.html @@ -0,0 +1,53 @@ + + +XQilla DOM Level 3 API: StDOMNode.hpp File Reference + + + + + + +

StDOMNode.hpp File Reference

#include <xercesc/dom/DOMNode.hpp>
+#include <xercesc/dom/DOMAttr.hpp>
+#include <xercesc/dom/DOMElement.hpp>
+ +

+Include dependency graph for StDOMNode.hpp:

+ + + + + + +

+Go to the source code of this file. + + + + + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::StDOMNode< T >

Typedefs

typedef DOMNode * xercesc::DOMNodeSPtr
typedef DOMAttr * xercesc::DOMAttrSPtr
typedef DOMElement * xercesc::DOMElementSPtr
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/StDOMNode_8hpp__incl.map b/docs/dom3-api/StDOMNode_8hpp__incl.map new file mode 100644 index 00000000..a240a116 --- /dev/null +++ b/docs/dom3-api/StDOMNode_8hpp__incl.map @@ -0,0 +1,4 @@ +base referer +rect $DOMNode_8hpp.html 439,58 631,82 +rect $DOMAttr_8hpp.html 197,9 375,33 +rect $DOMElement_8hpp.html 182,107 390,131 diff --git a/docs/dom3-api/StDOMNode_8hpp__incl.md5 b/docs/dom3-api/StDOMNode_8hpp__incl.md5 new file mode 100644 index 00000000..877ec342 --- /dev/null +++ b/docs/dom3-api/StDOMNode_8hpp__incl.md5 @@ -0,0 +1 @@ +d910aa0f4af0f1b2f516371548d90894 \ No newline at end of file diff --git a/docs/dom3-api/StDOMNode_8hpp__incl.png b/docs/dom3-api/StDOMNode_8hpp__incl.png new file mode 100644 index 00000000..197bd689 Binary files /dev/null and b/docs/dom3-api/StDOMNode_8hpp__incl.png differ diff --git a/docs/dom3-api/XPath2Result_8hpp-source.html b/docs/dom3-api/XPath2Result_8hpp-source.html new file mode 100644 index 00000000..eed29265 --- /dev/null +++ b/docs/dom3-api/XPath2Result_8hpp-source.html @@ -0,0 +1,93 @@ + + +XQilla DOM Level 3 API: XPath2Result.hpp Source File + + + + + + +

XPath2Result.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: XPath2Result.hpp,v 1.10 2006/11/01 16:37:12 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef __XPATH2RESULT_HPP
+00015 #define __XPATH2RESULT_HPP
+00016 
+00017 #include <xqilla/framework/XQillaExport.hpp>
+00018 
+00019 #include <xercesc/dom/DOMNode.hpp>
+00020 #include <xercesc/dom/DOMTypeInfo.hpp>
+00021 #include <xercesc/dom/DOMException.hpp>
+00022 #include <xercesc/dom/DOMXPathException.hpp>
+00023 
+00031 class XQILLA_API XPath2Result
+00032 {
+00033 public:
+00039   virtual ~XPath2Result() {};
+00041 
+00064   enum ResultType {
+00065     FIRST_RESULT    = 100,
+00066     ITERATOR_RESULT = 101,
+00067     SNAPSHOT_RESULT = 102
+00068   };
+00070 
+00073 
+00079   virtual ResultType getResultType() const = 0;
+00080 
+00085   virtual bool isNode() const = 0;
+00086 
+00091   virtual const XERCES_CPP_NAMESPACE_QUALIFIER DOMTypeInfo *getTypeInfo() const = 0;
+00092 
+00104   virtual double asDouble() const = 0;
+00105 
+00114   virtual int asInt() const = 0;
+00115 
+00124   virtual const XMLCh* asString() const = 0;
+00125 
+00134   virtual bool asBoolean() const = 0;
+00135 
+00144   virtual const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* asNode() const = 0;
+00145 
+00150   virtual bool getInvalidIteratorState() const = 0;
+00151 
+00159   virtual unsigned long getSnapshotLength() const = 0;
+00160 
+00171   virtual bool iterateNext() = 0;
+00172 
+00184   virtual bool snapshotItem(unsigned long index) = 0;
+00186 
+00196   virtual void release() = 0;
+00198 
+00199 protected:
+00202   XPath2Result() {};
+00204 private:
+00207   XPath2Result(const XPath2Result &);
+00208   XPath2Result &operator=(const XPath2Result &);
+00210 };
+00211 
+00212 #endif
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/XPath2Result_8hpp.html b/docs/dom3-api/XPath2Result_8hpp.html new file mode 100644 index 00000000..ab3623e8 --- /dev/null +++ b/docs/dom3-api/XPath2Result_8hpp.html @@ -0,0 +1,54 @@ + + +XQilla DOM Level 3 API: XPath2Result.hpp File Reference + + + + + + +

XPath2Result.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <xercesc/dom/DOMNode.hpp>
+#include <xercesc/dom/DOMTypeInfo.hpp>
+#include <xercesc/dom/DOMException.hpp>
+#include <xercesc/dom/DOMXPathException.hpp>
+ +

+Include dependency graph for XPath2Result.hpp:

+ + + + + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + +

Classes

class  XPath2Result
 The XPathResult2 interface represents the result of the evaluation of an XPath 2.0 expression within the context of a particular node. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/XPath2Result_8hpp__dep__incl.map b/docs/dom3-api/XPath2Result_8hpp__dep__incl.map new file mode 100644 index 00000000..5f3dd5f6 --- /dev/null +++ b/docs/dom3-api/XPath2Result_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $XQillaExpression_8hpp.html 186,8 336,32 diff --git a/docs/dom3-api/XPath2Result_8hpp__dep__incl.md5 b/docs/dom3-api/XPath2Result_8hpp__dep__incl.md5 new file mode 100644 index 00000000..70780349 --- /dev/null +++ b/docs/dom3-api/XPath2Result_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +c4583a9c746e885e98fe26a987da7ac3 \ No newline at end of file diff --git a/docs/dom3-api/XPath2Result_8hpp__dep__incl.png b/docs/dom3-api/XPath2Result_8hpp__dep__incl.png new file mode 100644 index 00000000..13429261 Binary files /dev/null and b/docs/dom3-api/XPath2Result_8hpp__dep__incl.png differ diff --git a/docs/dom3-api/XPath2Result_8hpp__incl.map b/docs/dom3-api/XPath2Result_8hpp__incl.map new file mode 100644 index 00000000..af6e7e70 --- /dev/null +++ b/docs/dom3-api/XPath2Result_8hpp__incl.map @@ -0,0 +1,6 @@ +base referer +rect $DOMNode_8hpp.html 218,104 410,128 +rect $DOMTypeInfo_8hpp.html 209,200 419,224 +rect $DOMException_8hpp.html 205,152 423,176 +rect $DOMXPathException_8hpp.html 187,56 441,80 +rect $PlatformUtils_8hpp.html 491,152 686,176 diff --git a/docs/dom3-api/XPath2Result_8hpp__incl.md5 b/docs/dom3-api/XPath2Result_8hpp__incl.md5 new file mode 100644 index 00000000..aff65873 --- /dev/null +++ b/docs/dom3-api/XPath2Result_8hpp__incl.md5 @@ -0,0 +1 @@ +c453898a6a9b80f30b6e8c13d2e00dd4 \ No newline at end of file diff --git a/docs/dom3-api/XPath2Result_8hpp__incl.png b/docs/dom3-api/XPath2Result_8hpp__incl.png new file mode 100644 index 00000000..5f52cef7 Binary files /dev/null and b/docs/dom3-api/XPath2Result_8hpp__incl.png differ diff --git a/docs/dom3-api/XQillaExpression_8hpp-source.html b/docs/dom3-api/XQillaExpression_8hpp-source.html new file mode 100644 index 00000000..928cbd40 --- /dev/null +++ b/docs/dom3-api/XQillaExpression_8hpp-source.html @@ -0,0 +1,78 @@ + + +XQilla DOM Level 3 API: XQillaExpression.hpp Source File + + + + + + +

XQillaExpression.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: XQillaExpression.hpp,v 1.6 2006/11/01 16:37:12 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef __XQILLAEXPRESSION_HPP
+00015 #define __XQILLAEXPRESSION_HPP
+00016 
+00017 #include <xqilla/framework/XQillaExport.hpp>
+00018 
+00019 #include <xqilla/dom-api/XPath2Result.hpp>
+00020 #include <xqilla/runtime/Sequence.hpp>
+00021 #include <xercesc/dom/DOMException.hpp>
+00022 #include <xercesc/dom/DOMNode.hpp>
+00023 #include <xercesc/dom/DOMXPathExpression.hpp>
+00024 #include <xercesc/dom/DOMXPathException.hpp>
+00025 
+00026 
+00027 class DynamicContext;
+00028 
+00035 class XQILLA_API XQillaExpression: public XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathExpression
+00036 {
+00037 public:
+00038   // -----------------------------------------------------------------------
+00039   //  All constructors are hidden, just the destructor is available
+00040   // -----------------------------------------------------------------------
+00047   virtual ~XQillaExpression() {}
+00049   
+00050   // -----------------------------------------------------------------------
+00051   // Virtual XQillaExpression interface
+00052   // -----------------------------------------------------------------------
+00085   virtual void* evaluate(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* contextNode,
+00086                          unsigned short type,
+00087                          void* reuseableResult) const = 0;
+00088 
+00090 
+00099   virtual void release() = 0;
+00101 protected:
+00102   // -----------------------------------------------------------------------
+00103   //  Hidden constructors
+00104   // -----------------------------------------------------------------------
+00107   XQillaExpression() {};
+00109 };//XQillaExpression
+00110 
+00111 #endif //__XQILLAEXPRESSION_HPP
+00112 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/XQillaExpression_8hpp.html b/docs/dom3-api/XQillaExpression_8hpp.html new file mode 100644 index 00000000..0373a452 --- /dev/null +++ b/docs/dom3-api/XQillaExpression_8hpp.html @@ -0,0 +1,52 @@ + + +XQilla DOM Level 3 API: XQillaExpression.hpp File Reference + + + + + + +

XQillaExpression.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/dom-api/XPath2Result.hpp>
+#include <xqilla/runtime/Sequence.hpp>
+#include <xercesc/dom/DOMException.hpp>
+#include <xercesc/dom/DOMNode.hpp>
+#include <xercesc/dom/DOMXPathExpression.hpp>
+#include <xercesc/dom/DOMXPathException.hpp>
+ +

+Include dependency graph for XQillaExpression.hpp:

+ + + + + + + + + + +

+Go to the source code of this file. + + + + + +

Classes

class  XQillaExpression
 The XQillaExpression interface extends the DOMXPathExpression interface, providing the ability to release the object. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/XQillaExpression_8hpp__incl.map b/docs/dom3-api/XQillaExpression_8hpp__incl.map new file mode 100644 index 00000000..5f04a823 --- /dev/null +++ b/docs/dom3-api/XQillaExpression_8hpp__incl.map @@ -0,0 +1,8 @@ +base referer +rect $XPath2Result_8hpp.html 228,109 444,133 +rect $DOMNode_8hpp.html 546,158 738,182 +rect $DOMException_8hpp.html 533,62 752,86 +rect $DOMXPathException_8hpp.html 516,206 769,230 +rect $DOMXPathExpression_8hpp.html 205,258 466,282 +rect $DOMTypeInfo_8hpp.html 537,110 748,134 +rect $PlatformUtils_8hpp.html 820,62 1014,86 diff --git a/docs/dom3-api/XQillaExpression_8hpp__incl.md5 b/docs/dom3-api/XQillaExpression_8hpp__incl.md5 new file mode 100644 index 00000000..83154b18 --- /dev/null +++ b/docs/dom3-api/XQillaExpression_8hpp__incl.md5 @@ -0,0 +1 @@ +433c289bf55f8cb5d9e0629b9e63c6f9 \ No newline at end of file diff --git a/docs/dom3-api/XQillaExpression_8hpp__incl.png b/docs/dom3-api/XQillaExpression_8hpp__incl.png new file mode 100644 index 00000000..02cc7b4a Binary files /dev/null and b/docs/dom3-api/XQillaExpression_8hpp__incl.png differ diff --git a/docs/dom3-api/XQillaNSResolver_8hpp-source.html b/docs/dom3-api/XQillaNSResolver_8hpp-source.html new file mode 100644 index 00000000..c3631393 --- /dev/null +++ b/docs/dom3-api/XQillaNSResolver_8hpp-source.html @@ -0,0 +1,76 @@ + + +XQilla DOM Level 3 API: XQillaNSResolver.hpp Source File + + + + + + +

XQillaNSResolver.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: XQillaNSResolver.hpp,v 1.5 2006/11/01 16:37:12 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef __XQILLANSRESOLVER_HPP
+00015 #define __XQILLANSRESOLVER_HPP
+00016 
+00017 #include <xqilla/framework/XQillaExport.hpp>
+00018 #include <xercesc/dom/DOMXPathNSResolver.hpp>
+00019 
+00020 XERCES_CPP_NAMESPACE_BEGIN
+00021 class XercesDefs;
+00022 class DOMNode;
+00023 XERCES_CPP_NAMESPACE_END
+00024 
+00025 class XPath2MemoryManager;
+00026 
+00032 class XQILLA_API XQillaNSResolver : public XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver
+00033 {
+00034 public:
+00035   
+00036   // -----------------------------------------------------------------------
+00037   // Non-standard extension
+00038   // -----------------------------------------------------------------------
+00041   
+00050   virtual void addNamespaceBinding(const XMLCh* prefix, const XMLCh* uri) = 0;
+00051 
+00058   virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const = 0;
+00059 
+00070   virtual const XMLCh* lookupPrefix(const XMLCh* uri) const = 0;
+00071       
+00073 
+00082   virtual void release() = 0;
+00084 
+00085 protected:
+00086   // -----------------------------------------------------------------------
+00087   //  Hidden constructors
+00088   // -----------------------------------------------------------------------
+00091         XQillaNSResolver() {};
+00093 };//XQillaNSResolver
+00094 
+00095 
+00096 #endif //__XQILLANSRESOLVER_HPP
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/XQillaNSResolver_8hpp.html b/docs/dom3-api/XQillaNSResolver_8hpp.html new file mode 100644 index 00000000..9b489dbd --- /dev/null +++ b/docs/dom3-api/XQillaNSResolver_8hpp.html @@ -0,0 +1,44 @@ + + +XQilla DOM Level 3 API: XQillaNSResolver.hpp File Reference + + + + + + +

XQillaNSResolver.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <xercesc/dom/DOMXPathNSResolver.hpp>
+ +

+Include dependency graph for XQillaNSResolver.hpp:

+ + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  XQillaNSResolver
 The XQillaNSResolver interface extends the DOMXPathNSResolver providing the ability to add additional namespace bindings. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/XQillaNSResolver_8hpp__incl.map b/docs/dom3-api/XQillaNSResolver_8hpp__incl.map new file mode 100644 index 00000000..cdef5273 --- /dev/null +++ b/docs/dom3-api/XQillaNSResolver_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOMXPathNSResolver_8hpp.html 212,56 476,80 diff --git a/docs/dom3-api/XQillaNSResolver_8hpp__incl.md5 b/docs/dom3-api/XQillaNSResolver_8hpp__incl.md5 new file mode 100644 index 00000000..6c9ff1a7 --- /dev/null +++ b/docs/dom3-api/XQillaNSResolver_8hpp__incl.md5 @@ -0,0 +1 @@ +396e3d9a4e54707a2ea1e5d441183097 \ No newline at end of file diff --git a/docs/dom3-api/XQillaNSResolver_8hpp__incl.png b/docs/dom3-api/XQillaNSResolver_8hpp__incl.png new file mode 100644 index 00000000..864988cc Binary files /dev/null and b/docs/dom3-api/XQillaNSResolver_8hpp__incl.png differ diff --git a/docs/dom3-api/XQillaPlatformUtils_8hpp-source.html b/docs/dom3-api/XQillaPlatformUtils_8hpp-source.html new file mode 100644 index 00000000..d454cf67 --- /dev/null +++ b/docs/dom3-api/XQillaPlatformUtils_8hpp-source.html @@ -0,0 +1,60 @@ + + +XQilla DOM Level 3 API: XQillaPlatformUtils.hpp Source File + + + + + + +

XQillaPlatformUtils.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: XQillaPlatformUtils.hpp,v 1.8 2006/11/01 16:37:17 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _XQILLAPLATFORMUTILS_HPP
+00015 #define _XQILLAPLATFORMUTILS_HPP
+00016 
+00017 #include <xqilla/framework/XQillaExport.hpp>
+00018 
+00019 #include <xercesc/util/XercesDefs.hpp>
+00020 XERCES_CPP_NAMESPACE_BEGIN
+00021 class MemoryManager;
+00022 XERCES_CPP_NAMESPACE_END
+00023 
+00028 class XQILLA_API XQillaPlatformUtils
+00029 {
+00030 public:
+00031 
+00039   static void initialize(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr = 0);
+00040 
+00046   static void terminate();
+00047 
+00054   static void enableExtendedPrecision(bool bEnable);
+00055 
+00056 };
+00057 #endif
+00058 
+

Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/XQillaPlatformUtils_8hpp.html b/docs/dom3-api/XQillaPlatformUtils_8hpp.html new file mode 100644 index 00000000..4d1a7345 --- /dev/null +++ b/docs/dom3-api/XQillaPlatformUtils_8hpp.html @@ -0,0 +1,41 @@ + + +XQilla DOM Level 3 API: XQillaPlatformUtils.hpp File Reference + + + + + + +

XQillaPlatformUtils.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for XQillaPlatformUtils.hpp:

+ +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  XQillaPlatformUtils
 Static utility methods for initializing and terminating the XQilla and Xerces environments. More...
+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/XQillaPlatformUtils_8hpp__incl.map b/docs/dom3-api/XQillaPlatformUtils_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/dom3-api/XQillaPlatformUtils_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/dom3-api/XQillaPlatformUtils_8hpp__incl.md5 b/docs/dom3-api/XQillaPlatformUtils_8hpp__incl.md5 new file mode 100644 index 00000000..e5635087 --- /dev/null +++ b/docs/dom3-api/XQillaPlatformUtils_8hpp__incl.md5 @@ -0,0 +1 @@ +8da6d6a6d21c3ca83619866cf81681e1 \ No newline at end of file diff --git a/docs/dom3-api/XQillaPlatformUtils_8hpp__incl.png b/docs/dom3-api/XQillaPlatformUtils_8hpp__incl.png new file mode 100644 index 00000000..d820da84 Binary files /dev/null and b/docs/dom3-api/XQillaPlatformUtils_8hpp__incl.png differ diff --git a/docs/dom3-api/annotated.html b/docs/dom3-api/annotated.html new file mode 100644 index 00000000..417d116d --- /dev/null +++ b/docs/dom3-api/annotated.html @@ -0,0 +1,82 @@ + + +XQilla DOM Level 3 API: Class List + + + + + + +

XQilla DOM Level 3 API Class List

Here are the classes, structs, unions and interfaces with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
xercesc::DOMAttrThe DOMAttr class refers to an attribute of an XML element
xercesc::DOMBuilderDOMBuilder provides an API for parsing XML documents and building the corresponding DOM document tree
xercesc::DOMCDATASectionCDATA sections are used to escape blocks of text containing characters that would otherwise be regarded as markup
xercesc::DOMCharacterDataThe DOMCharacterData interface extends DOMNode with a set of attributes and methods for accessing character data in the DOM
xercesc::DOMCommentThis interface inherits from CharacterData and represents the content of a comment, i.e., all the characters between the starting ' <!--' and ending '-->'
xercesc::DOMConfigurationThe DOMConfiguration interface represents the configuration of a document and maintains a table of recognized parameters
xercesc::DOMDocumentThe DOMDocument interface represents the entire XML document
xercesc::DOMDocumentFragmentDOMDocumentFragment is a "lightweight" or "minimal" DOMDocument object
xercesc::DOMDocumentRange
xercesc::DOMDocumentTraversalDOMDocumentTraversal contains methods that create DOMNodeIterators and DOMTreeWalkers to traverse a node and its children in document order (depth first, pre-order traversal, which is equivalent to the order in which the start tags occur in the text representation of the document)
xercesc::DOMDocumentTypeEach DOMDocument has a doctype attribute whose value is either null or a DOMDocumentType object
xercesc::DOMElementBy far the vast majority of objects (apart from text) that authors encounter when traversing a document are DOMElement nodes
xercesc::DOMEntityThis interface represents an entity, either parsed or unparsed, in an XML document
xercesc::DOMEntityReferenceDOMEntityReference objects may be inserted into the structure model when an entity reference is in the source document, or when the user wishes to insert an entity reference
xercesc::DOMEntityResolverDOMEntityResolver provides a way for applications to redirect references to external entities
xercesc::DOMErrorDOMError is an interface that describes an error
xercesc::DOMErrorHandlerBasic interface for DOM error handlers
xercesc::DOMException
xercesc::DOMImplementationThe DOMImplementation interface provides a number of methods for performing operations that are independent of any particular instance of the document object model
xercesc::DOMImplementationLS
xercesc::DOMImplementationRegistry
xercesc::DOMImplementationSource
xercesc::DOMInputSourceThis interface represents a single input source for an XML entity
xercesc::DOMLocatorDOMLocator is an interface that describes a location
xercesc::DOMNamedNodeMapDOMNamedNodeMaps are used to represent collections of nodes that can be accessed by name
xercesc::DOMNodeThe DOMNode interface is the primary datatype for the entire Document Object Model
xercesc::DOMNodeFilterFilters are objects that know how to "filter out" nodes
xercesc::DOMNodeIteratorDOMNodeIterators are used to step through a set of nodes, e.g
xercesc::DOMNodeListThe DOMNodeList interface provides the abstraction of an ordered collection of nodes
xercesc::DOMNotationThis interface represents a notation declared in the DTD
xercesc::DOMProcessingInstructionThe DOMProcessingInstruction interface represents a "processing instruction", used in XML as a way to keep processor-specific information in the text of the document
xercesc::DOMPSVITypeInfoThe DOMPSVITypeInfo interface represent the PSVI info used by DOMElement or DOMAttr nodes, specified in the schemas associated with the document
xercesc::DOMRange
xercesc::DOMRangeExceptionRange operations may throw a DOMRangeException as specified in their method descriptions
xercesc::DOMTextThe DOMText interface inherits from DOMCharacterData and represents the textual content (termed character data in XML) of an DOMElement or DOMAttr
xercesc::DOMTreeWalkerDOMTreeWalker objects are used to navigate a document tree or subtree using the view of the document defined by their whatToShow flags and filter (if any)
xercesc::DOMTypeInfoThe DOMTypeInfo interface represent a type used by DOMElement or DOMAttr nodes, specified in the schemas associated with the document
xercesc::DOMUserDataHandlerWhen associating an object to a key on a node using setUserData the application can provide a handler that gets called when the node the object is associated to is being cloned or imported
xercesc::DOMWriter
xercesc::DOMWriterFilter
xercesc::DOMXPathEvaluatorThe evaluation of XPath expressions is provided by DOMXPathEvaluator
xercesc::DOMXPathException
xercesc::DOMXPathExpressionThe DOMXPathExpression interface represents a parsed and resolved XPath expression
xercesc::DOMXPathNamespaceThe DOMXPathNamespace interface is returned by DOMXPathResult interfaces to represent the XPath namespace node type that DOM lacks
xercesc::DOMXPathNSResolverThe DOMXPathNSResolver interface permit prefix strings in the expression to be properly bound to namespaceURI strings
xercesc::DOMXPathResultThe DOMXPathResult interface represents the result of the evaluation of an XPath 1.0 expression within the context of a particular node
xercesc::MemoryManagerConfigurable memory manager
xercesc::StDOMNode< T >
xercesc::XMLDeleter
xercesc::XMLPlatformUtilsUtilities that must be implemented in a platform-specific way
XPath2ResultThe XPathResult2 interface represents the result of the evaluation of an XPath 2.0 expression within the context of a particular node
XQillaExpressionThe XQillaExpression interface extends the DOMXPathExpression interface, providing the ability to release the object
XQillaNSResolverThe XQillaNSResolver interface extends the DOMXPathNSResolver providing the ability to add additional namespace bindings
XQillaPlatformUtilsStatic utility methods for initializing and terminating the XQilla and Xerces environments
+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classXPath2Result-members.html b/docs/dom3-api/classXPath2Result-members.html new file mode 100644 index 00000000..745454be --- /dev/null +++ b/docs/dom3-api/classXPath2Result-members.html @@ -0,0 +1,46 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

XPath2Result Member List

This is the complete list of members for XPath2Result, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
asBoolean() const =0XPath2Result [pure virtual]
asDouble() const =0XPath2Result [pure virtual]
asInt() const =0XPath2Result [pure virtual]
asNode() const =0XPath2Result [pure virtual]
asString() const =0XPath2Result [pure virtual]
FIRST_RESULT enum valueXPath2Result
getInvalidIteratorState() const =0XPath2Result [pure virtual]
getResultType() const =0XPath2Result [pure virtual]
getSnapshotLength() const =0XPath2Result [pure virtual]
getTypeInfo() const =0XPath2Result [pure virtual]
isNode() const =0XPath2Result [pure virtual]
iterateNext()=0XPath2Result [pure virtual]
ITERATOR_RESULT enum valueXPath2Result
release()=0XPath2Result [pure virtual]
ResultType enum nameXPath2Result
SNAPSHOT_RESULT enum valueXPath2Result
snapshotItem(unsigned long index)=0XPath2Result [pure virtual]
XPath2Result()XPath2Result [inline, protected]
~XPath2Result()XPath2Result [inline, virtual]


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classXPath2Result.html b/docs/dom3-api/classXPath2Result.html new file mode 100644 index 00000000..8343a746 --- /dev/null +++ b/docs/dom3-api/classXPath2Result.html @@ -0,0 +1,637 @@ + + +XQilla DOM Level 3 API: XPath2Result Class Reference + + + + + + +

XPath2Result Class Reference

The XPathResult2 interface represents the result of the evaluation of an XPath 2.0 expression within the context of a particular node. +More... +

+#include <XPath2Result.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

Public Constants
enum  ResultType { FIRST_RESULT = 100, +ITERATOR_RESULT = 101, +SNAPSHOT_RESULT = 102 + }

Public Member Functions

Destructor
virtual ~XPath2Result ()
 Destructor.
Functions introduced in DOM Level 3
virtual ResultType getResultType () const =0
 Returns the result type of this result.
virtual bool isNode () const =0
 Returns true if the result has a current result and the value is a node.
virtual const xercesc::DOMTypeInfogetTypeInfo () const =0
 Returns the DOM type info of the current result node or value.
virtual double asDouble () const =0
 Conversion of the current result to double.
virtual int asInt () const =0
 Conversion of the current result to int.
virtual const XMLCh * asString () const =0
 Conversion of the current result to string.
virtual bool asBoolean () const =0
 Conversion of the current result to boolean.
virtual const xercesc::DOMNodeasNode () const =0
 Retrieve the current node value.
virtual bool getInvalidIteratorState () const =0
 Signifies that the iterator has become invalid.
virtual unsigned long getSnapshotLength () const =0
 The number of items in the result snapshot.
virtual bool iterateNext ()=0
 Iterates and returns true if the current result is the next item from the sequence or false if there are no more items.
virtual bool snapshotItem (unsigned long index)=0
 Sets the current result to the indexth item in the snapshot collection.
Non-standard Extension
virtual void release ()=0
 Called to indicate that this object (and its associated children) is no longer in use and that the implementation may relinquish any resources associated with it and its associated children.

Protected Member Functions

Hidden constructors
 XPath2Result ()
+


Detailed Description

+The XPathResult2 interface represents the result of the evaluation of an XPath 2.0 expression within the context of a particular node. +

+Since evaluation of an XPath 2.0 expression can result in various result types, this object makes it possible to discover and manipulate the type and value of the result.

Since:
DOM Level 3
+ +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
enum XPath2Result::ResultType
+
+ + + + + +
+   + + +

+FIRST_RESULT
+The result is a sequence as defined by XPath 2.0 and will be accessed as a single current value or there will be no current value if the sequence is empty. Document modification does not invalidate the value, but may mean that the result no longer corresponds to the current document. This is a convenience that permits optimization since the implementation can stop once the first item in the resulting sequence has been found. If there is more than one item in the actual result, the single item returned might not be the first in document order.

+ITERATOR_RESULT
+The result is a sequence as defined by XPath 2.0 that will be accessed iteratively. Document modification invalidates the iteration.

+SNAPSHOT_RESULT
+The result is a sequence as defined by XPath 2.0 that will be accessed as a snapshot list of values. Document modification does not invalidate the snapshot but may mean that reevaluation would not yield the same snapshot and any items in the snapshot may have been altered, moved, or removed from the document.

Enumerator:
+ + + + +
FIRST_RESULT  +
ITERATOR_RESULT  +
SNAPSHOT_RESULT  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
virtual XPath2Result::~XPath2Result  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+

+ + + + +
+ + + + + + + + +
XPath2Result::XPath2Result  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual bool XPath2Result::asBoolean  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Conversion of the current result to boolean. +

+

Returns:
asBoolean of type boolean, readonly
+
Exceptions:
+ + + +
XPathException TYPE_ERR: raised if cannot be properly converted to boolean.
DOMException INVALID_STATE_ERR: There is no current result in the result.
+
+
+

+ + + + +
+ + + + + + + + +
virtual double XPath2Result::asDouble  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Conversion of the current result to double. +

+If the native double type of the DOM binding does not directly support the exact IEEE 754 result of the XPath expression, then it is up to the definition of the binding to specify how the XPath number is converted to the native binding number.

Returns:
asDouble of type double, readonly
+
Exceptions:
+ + + +
XPathException TYPE_ERR: raised if current result cannot be properly converted to double.
DOMException INVALID_STATE_ERR: There is no current result in the result.
+
+
+

+ + + + +
+ + + + + + + + +
virtual int XPath2Result::asInt  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Conversion of the current result to int. +

+

Returns:
asInt of type int, readonly
+
Exceptions:
+ + + +
XPathException TYPE_ERR: raised if current result cannot be properly converted to int.
DOMException INVALID_STATE_ERR: There is no current result in the result.
+
+
+

+ + + + +
+ + + + + + + + +
virtual const xercesc:: DOMNode* XPath2Result::asNode  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Retrieve the current node value. +

+

Returns:
asNode of type Node, readonly
+
Exceptions:
+ + + +
XPathException TYPE_ERR: raised if current result is not a node.
DOMException INVALID_STATE_ERR: There is no current result in the result.
+
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* XPath2Result::asString  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Conversion of the current result to string. +

+

Returns:
asString of type DOMString, readonly
+
Exceptions:
+ + + +
XPathException TYPE_ERR: raised if current result cannot be properly converted to string.
DOMException INVALID_STATE_ERR: There is no current result in the result.
+
+
+

+ + + + +
+ + + + + + + + +
virtual bool XPath2Result::getInvalidIteratorState  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Signifies that the iterator has become invalid. +

+

Returns:
invalidIteratorState of type boolean, readonly
+
+

+ + + + +
+ + + + + + + + +
virtual ResultType XPath2Result::getResultType  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the result type of this result. +

+

Returns:
ResultType A code representing the type of this result, as defined by the type constants.
+
+

+ + + + +
+ + + + + + + + +
virtual unsigned long XPath2Result::getSnapshotLength  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The number of items in the result snapshot. +

+Valid values for snapshotItem indices are 0 to snapshotLength-1 inclusive.

Returns:
snapshotLength of type unsigned long, readonly
+
Exceptions:
+ + +
XPathException TYPE_ERR: raised if resultType is not SNAPSHOT_RESULT.
+
+
+

+ + + + +
+ + + + + + + + +
virtual const xercesc:: DOMTypeInfo* XPath2Result::getTypeInfo  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the DOM type info of the current result node or value. +

+

Returns:
typeInfo of type TypeInfo, readonly
+
+

+ + + + +
+ + + + + + + + +
virtual bool XPath2Result::isNode  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns true if the result has a current result and the value is a node. +

+

Returns:
isNode of type boolean, readonly
+
+

+ + + + +
+ + + + + + + + +
virtual bool XPath2Result::iterateNext  )  [pure virtual]
+
+ + + + + +
+   + + +

+Iterates and returns true if the current result is the next item from the sequence or false if there are no more items. +

+

Returns:
boolean True if the current result is the next item from the sequence or false if there are no more items.
+
Exceptions:
+ + + +
XPathException TYPE_ERR: raised if resultType is not ITERATOR_RESULT.
DOMException INVALID_STATE_ERR: The document has been mutated since the result was returned.
+
+
+

+ + + + +
+ + + + + + + + +
virtual void XPath2Result::release  )  [pure virtual]
+
+ + + + + +
+   + + +

+Called to indicate that this object (and its associated children) is no longer in use and that the implementation may relinquish any resources associated with it and its associated children. +

+Access to a released object will lead to unexpected result.

+

+ + + + +
+ + + + + + + + + +
virtual bool XPath2Result::snapshotItem unsigned long  index  )  [pure virtual]
+
+ + + + + +
+   + + +

+Sets the current result to the indexth item in the snapshot collection. +

+If index is greater than or equal to the number of items in the list, this method returns false. Unlike the iterator result, the snapshot does not become invalid, but may not correspond to the current document if it is mutated.

Parameters:
+ + +
index of type unsigned long - Index into the snapshot collection.
+
+
Returns:
boolean True if the current result is the next item from the sequence or false if there are no more items.
+
Exceptions:
+ + +
XPathException TYPE_ERR: raised if resultType is not SNAPSHOT_RESULT.
+
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classXQillaExpression-members.html b/docs/dom3-api/classXQillaExpression-members.html new file mode 100644 index 00000000..9d181cf3 --- /dev/null +++ b/docs/dom3-api/classXQillaExpression-members.html @@ -0,0 +1,33 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

XQillaExpression Member List

This is the complete list of members for XQillaExpression, including all inherited members.

+ + + + + + +
DOMXPathExpression()xercesc::DOMXPathExpression [inline, protected]
evaluate(xercesc::DOMNode *contextNode, unsigned short type, void *reuseableResult) const =0XQillaExpression [pure virtual]
release()=0XQillaExpression [pure virtual]
XQillaExpression()XQillaExpression [inline, protected]
~DOMXPathExpression()xercesc::DOMXPathExpression [inline, virtual]
~XQillaExpression()XQillaExpression [inline, virtual]


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classXQillaExpression.html b/docs/dom3-api/classXQillaExpression.html new file mode 100644 index 00000000..da2e14bc --- /dev/null +++ b/docs/dom3-api/classXQillaExpression.html @@ -0,0 +1,210 @@ + + +XQilla DOM Level 3 API: XQillaExpression Class Reference + + + + + + +

XQillaExpression Class Reference

The XQillaExpression interface extends the DOMXPathExpression interface, providing the ability to release the object. +More... +

+#include <XQillaExpression.hpp> +

+Inheritance diagram for XQillaExpression:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual void * evaluate (xercesc::DOMNode *contextNode, unsigned short type, void *reuseableResult) const =0
 Evaluates this XPath expression and returns a result.
Destructor
virtual ~XQillaExpression ()
 Destructor.
Non-standard Extension
virtual void release ()=0
 Called to indicate that this object (and its associated children) is no longer in use and that the implementation may relinquish any resources associated with it and its associated children.

Protected Member Functions

Hidden constructors
 XQillaExpression ()
+

Detailed Description

+The XQillaExpression interface extends the DOMXPathExpression interface, providing the ability to release the object. +

+The evaluate method will always return an object of type XPath2Result

Since:
DOM Level 3
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
virtual XQillaExpression::~XQillaExpression  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+

+ + + + +
+ + + + + + + + +
XQillaExpression::XQillaExpression  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void* XQillaExpression::evaluate xercesc::DOMNode contextNode,
unsigned short  type,
void *  reuseableResult
const [pure virtual]
+
+ + + + + +
+   + + +

+Evaluates this XPath expression and returns a result. +

+

Parameters:
+ + + + +
contextNode of type DOMNode The context is context node for the evaluation of this XPath expression. If the XPathEvaluator was obtained by casting the Document then this must be owned by the same document and must be a DOMDocument, DOMElement, DOMAttribute, DOMText, DOMCDATASection, DOMComment, DOMProcessingInstruction, or XPathNamespace. If the context node is a DOMText or a DOMCDATASection, then the context is interpreted as the whole logical text node as seen by XPath, unless the node is empty in which case it may not serve as the XPath context.
type of type unsigned short If a specific type is specified, then the result will be coerced to return the specified type relying on XPath conversions and fail if the desired coercion is not possible. This must be one of the type codes of XPathResult.
result of type void* The result specifies a specific result object which may be reused and returned by this method. If this is specified as nullor the implementation does not reuse the specified result, a new result object will be constructed and returned. For XPath 1.0 results, this object will be of type XPathResult. For XPath 2.0 results, this object will be of type XPath2Result.
+
+
Returns:
void* The result of the evaluation of the XPath expression. For XPath 1.0 results, this object will be of type XPathResult. For XPath 2.0 results, this object will be of type XPath2Result.
+
Exceptions:
+ + + +
XPathException TYPE_ERR: Raised if the result cannot be converted to return the specified type.
DOMException WRONG_DOCUMENT_ERR: The DOMNode is from a document that is not supported by the XPathEvaluator that created this DOMXPathExpression. NOT_SUPPORTED_ERR: The Node is not a type permitted as an XPath context node or the request type is not permitted by this DOMXPathExpression.
+
+ +

+Implements xercesc::DOMXPathExpression.

+

+ + + + +
+ + + + + + + + +
virtual void XQillaExpression::release  )  [pure virtual]
+
+ + + + + +
+   + + +

+Called to indicate that this object (and its associated children) is no longer in use and that the implementation may relinquish any resources associated with it and its associated children. +

+Access to a released object will lead to unexpected result.

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classXQillaExpression__inherit__graph.map b/docs/dom3-api/classXQillaExpression__inherit__graph.map new file mode 100644 index 00000000..4b6d0a56 --- /dev/null +++ b/docs/dom3-api/classXQillaExpression__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMXPathExpression.html 8,9 218,33 diff --git a/docs/dom3-api/classXQillaExpression__inherit__graph.md5 b/docs/dom3-api/classXQillaExpression__inherit__graph.md5 new file mode 100644 index 00000000..6dfe72c1 --- /dev/null +++ b/docs/dom3-api/classXQillaExpression__inherit__graph.md5 @@ -0,0 +1 @@ +45bb623a8dede2c03de3b274c503005c \ No newline at end of file diff --git a/docs/dom3-api/classXQillaExpression__inherit__graph.png b/docs/dom3-api/classXQillaExpression__inherit__graph.png new file mode 100644 index 00000000..050bb33d Binary files /dev/null and b/docs/dom3-api/classXQillaExpression__inherit__graph.png differ diff --git a/docs/dom3-api/classXQillaNSResolver-members.html b/docs/dom3-api/classXQillaNSResolver-members.html new file mode 100644 index 00000000..47a52ca7 --- /dev/null +++ b/docs/dom3-api/classXQillaNSResolver-members.html @@ -0,0 +1,34 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

XQillaNSResolver Member List

This is the complete list of members for XQillaNSResolver, including all inherited members.

+ + + + + + + +
addNamespaceBinding(const XMLCh *prefix, const XMLCh *uri)=0XQillaNSResolver [pure virtual]
DOMXPathNSResolver()xercesc::DOMXPathNSResolver [inline, protected]
lookupNamespaceURI(const XMLCh *prefix) const =0XQillaNSResolver [pure virtual]
lookupPrefix(const XMLCh *uri) const =0XQillaNSResolver [pure virtual]
release()=0XQillaNSResolver [pure virtual]
XQillaNSResolver()XQillaNSResolver [inline, protected]
~DOMXPathNSResolver()xercesc::DOMXPathNSResolver [inline, virtual]


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classXQillaNSResolver.html b/docs/dom3-api/classXQillaNSResolver.html new file mode 100644 index 00000000..e261f11d --- /dev/null +++ b/docs/dom3-api/classXQillaNSResolver.html @@ -0,0 +1,244 @@ + + +XQilla DOM Level 3 API: XQillaNSResolver Class Reference + + + + + + +

XQillaNSResolver Class Reference

The XQillaNSResolver interface extends the DOMXPathNSResolver providing the ability to add additional namespace bindings. +More... +

+#include <XQillaNSResolver.hpp> +

+Inheritance diagram for XQillaNSResolver:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Non-standard extension
virtual void addNamespaceBinding (const XMLCh *prefix, const XMLCh *uri)=0
 Non-standard extension.
virtual const XMLCh * lookupNamespaceURI (const XMLCh *prefix) const =0
 Look up the namespace URI associated to the given namespace prefix.
virtual const XMLCh * lookupPrefix (const XMLCh *uri) const =0
 Non-standard extension.
Non-standard Extension
virtual void release ()=0
 Called to indicate that this object (and its associated children) is no longer in use and that the implementation may relinquish any resources associated with it and its associated children.

Protected Member Functions

Hidden constructors
 XQillaNSResolver ()
+

Detailed Description

+The XQillaNSResolver interface extends the DOMXPathNSResolver providing the ability to add additional namespace bindings. +

+

Since:
DOM Level 3
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
XQillaNSResolver::XQillaNSResolver  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void XQillaNSResolver::addNamespaceBinding const XMLCh *  prefix,
const XMLCh *  uri
[pure virtual]
+
+ + + + + +
+   + + +

+Non-standard extension. +

+XQilla requires additional bindings of namespaces. This method will bind the given prefix to the associated namespace.

Parameters:
+ + + +
prefix of type XMLCh - The prefix to bind.
URI of type XMLCh - The associated namespace.
+
+
+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* XQillaNSResolver::lookupNamespaceURI const XMLCh *  prefix  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Look up the namespace URI associated to the given namespace prefix. +

+The XPath evaluator must never call this with a null or empty argument, because the result of doing this is undefined.

Parameters:
+ + +
prefix of type XMLCh - The prefix to look for.
+
+
Returns:
the associated namespace URI or null if none is found.
+ +

+Implements xercesc::DOMXPathNSResolver.

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* XQillaNSResolver::lookupPrefix const XMLCh *  uri  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Non-standard extension. +

+XPath2 implementations require a reverse lookup in the static context. Look up the prefix associated with the namespace URI The XPath evaluator must never call this with a null or empty argument, because the result of doing this is undefined.

Parameters:
+ + +
URI of type XMLCh - The namespace to look for.
+
+
Returns:
the associated prefix or null if none is found.
+ +

+Implements xercesc::DOMXPathNSResolver.

+

+ + + + +
+ + + + + + + + +
virtual void XQillaNSResolver::release  )  [pure virtual]
+
+ + + + + +
+   + + +

+Called to indicate that this object (and its associated children) is no longer in use and that the implementation may relinquish any resources associated with it and its associated children. +

+Access to a released object will lead to unexpected result.

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classXQillaNSResolver__inherit__graph.map b/docs/dom3-api/classXQillaNSResolver__inherit__graph.map new file mode 100644 index 00000000..76dc9879 --- /dev/null +++ b/docs/dom3-api/classXQillaNSResolver__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMXPathNSResolver.html 7,9 221,33 diff --git a/docs/dom3-api/classXQillaNSResolver__inherit__graph.md5 b/docs/dom3-api/classXQillaNSResolver__inherit__graph.md5 new file mode 100644 index 00000000..f4b2d6dc --- /dev/null +++ b/docs/dom3-api/classXQillaNSResolver__inherit__graph.md5 @@ -0,0 +1 @@ +57ded13868bd8133353816bde1fe80ab \ No newline at end of file diff --git a/docs/dom3-api/classXQillaNSResolver__inherit__graph.png b/docs/dom3-api/classXQillaNSResolver__inherit__graph.png new file mode 100644 index 00000000..3203baf1 Binary files /dev/null and b/docs/dom3-api/classXQillaNSResolver__inherit__graph.png differ diff --git a/docs/dom3-api/classXQillaPlatformUtils-members.html b/docs/dom3-api/classXQillaPlatformUtils-members.html new file mode 100644 index 00000000..44bcbe2a --- /dev/null +++ b/docs/dom3-api/classXQillaPlatformUtils-members.html @@ -0,0 +1,30 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

XQillaPlatformUtils Member List

This is the complete list of members for XQillaPlatformUtils, including all inherited members.

+ + + +
enableExtendedPrecision(bool bEnable)XQillaPlatformUtils [static]
initialize(xercesc::MemoryManager *memMgr=0)XQillaPlatformUtils [static]
terminate()XQillaPlatformUtils [static]


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classXQillaPlatformUtils.html b/docs/dom3-api/classXQillaPlatformUtils.html new file mode 100644 index 00000000..1981bf49 --- /dev/null +++ b/docs/dom3-api/classXQillaPlatformUtils.html @@ -0,0 +1,140 @@ + + +XQilla DOM Level 3 API: XQillaPlatformUtils Class Reference + + + + + + +

XQillaPlatformUtils Class Reference

Static utility methods for initializing and terminating the XQilla and Xerces environments. +More... +

+#include <XQillaPlatformUtils.hpp> +

+List of all members. + + + + + + + + + + + +

Static Public Member Functions

static void initialize (xercesc::MemoryManager *memMgr=0)
 Perform XQilla initialization.
static void terminate ()
 Perform XQilla termination.
static void enableExtendedPrecision (bool bEnable)
 Enable/disable extended precision in numeric items.
+


Detailed Description

+Static utility methods for initializing and terminating the XQilla and Xerces environments. +

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
static void XQillaPlatformUtils::enableExtendedPrecision bool  bEnable  )  [static]
+
+ + + + + +
+   + + +

+Enable/disable extended precision in numeric items. +

+When disabled, xs:decimal values will hold only 18 digits, xs:float 7 digits and xs:double 15 digits as mandated

+

+ + + + +
+ + + + + + + + + +
static void XQillaPlatformUtils::initialize xercesc::MemoryManager memMgr = 0  )  [static]
+
+ + + + + +
+   + + +

+Perform XQilla initialization. +

+Initialization should be called first in any user code.

+Initializes Xerces and adds its own DOMImplementation to the registry

+

+ + + + +
+ + + + + + + + +
static void XQillaPlatformUtils::terminate  )  [static]
+
+ + + + + +
+   + + +

+Perform XQilla termination. +

+Terminates Xerces

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classes.html b/docs/dom3-api/classes.html new file mode 100644 index 00000000..2d129cb6 --- /dev/null +++ b/docs/dom3-api/classes.html @@ -0,0 +1,33 @@ + + +XQilla DOM Level 3 API: Alphabetical List + + + + + + +

XQilla DOM Level 3 API Class Index

D | M | S | X

+ +
  D  
+
DOMImplementationLS (xercesc)   DOMWriter (xercesc)   
DOMAttr (xercesc)   DOMImplementationRegistry (xercesc)   DOMWriterFilter (xercesc)   
DOMBuilder (xercesc)   DOMImplementationSource (xercesc)   DOMXPathEvaluator (xercesc)   
DOMCDATASection (xercesc)   DOMInputSource (xercesc)   DOMXPathException (xercesc)   
DOMCharacterData (xercesc)   DOMLocator (xercesc)   DOMXPathExpression (xercesc)   
DOMComment (xercesc)   DOMNamedNodeMap (xercesc)   DOMXPathNamespace (xercesc)   
DOMConfiguration (xercesc)   DOMNode (xercesc)   DOMXPathNSResolver (xercesc)   
DOMDocument (xercesc)   DOMNodeFilter (xercesc)   DOMXPathResult (xercesc)   
DOMDocumentFragment (xercesc)   DOMNodeIterator (xercesc)   
  M  
+
DOMDocumentRange (xercesc)   DOMNodeList (xercesc)   MemoryManager (xercesc)   
DOMDocumentTraversal (xercesc)   DOMNotation (xercesc)   
  S  
+
DOMDocumentType (xercesc)   DOMProcessingInstruction (xercesc)   StDOMNode (xercesc)   
DOMElement (xercesc)   DOMPSVITypeInfo (xercesc)   
  X  
+
DOMEntity (xercesc)   DOMRange (xercesc)   XMLDeleter (xercesc)   
DOMEntityReference (xercesc)   DOMRangeException (xercesc)   XMLPlatformUtils (xercesc)   
DOMEntityResolver (xercesc)   DOMText (xercesc)   XPath2Result   
DOMError (xercesc)   DOMTreeWalker (xercesc)   XQillaExpression   
DOMErrorHandler (xercesc)   DOMTypeInfo (xercesc)   XQillaNSResolver   
DOMException (xercesc)   DOMUserDataHandler (xercesc)   XQillaPlatformUtils   
DOMImplementation (xercesc)   

D | M | S | X

+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMAttr-members.html b/docs/dom3-api/classxercesc_1_1DOMAttr-members.html new file mode 100644 index 00000000..5020e98e --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMAttr-members.html @@ -0,0 +1,99 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMAttr Member List

This is the complete list of members for xercesc::DOMAttr, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
appendChild(DOMNode *newChild)=0xercesc::DOMNode [pure virtual]
ATTRIBUTE_NODE enum valuexercesc::DOMNode
CDATA_SECTION_NODE enum valuexercesc::DOMNode
cloneNode(bool deep) const =0xercesc::DOMNode [pure virtual]
COMMENT_NODE enum valuexercesc::DOMNode
compareTreePosition(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
DOCUMENT_FRAGMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_TYPE_NODE enum valuexercesc::DOMNode
DOMAttr()xercesc::DOMAttr [inline, protected]
DOMAttr(const DOMAttr &other)xercesc::DOMAttr [inline, protected]
DOMNode()xercesc::DOMNode [inline, protected]
DOMNode(const DOMNode &)xercesc::DOMNode [inline, protected]
DOMTreePosition enum namexercesc::DOMNode
ELEMENT_NODE enum valuexercesc::DOMNode
ENTITY_NODE enum valuexercesc::DOMNode
ENTITY_REFERENCE_NODE enum valuexercesc::DOMNode
getAttributes() const =0xercesc::DOMNode [pure virtual]
getBaseURI() const =0xercesc::DOMNode [pure virtual]
getChildNodes() const =0xercesc::DOMNode [pure virtual]
getFirstChild() const =0xercesc::DOMNode [pure virtual]
getInterface(const XMLCh *feature)=0xercesc::DOMNode [pure virtual]
getLastChild() const =0xercesc::DOMNode [pure virtual]
getLocalName() const =0xercesc::DOMNode [pure virtual]
getName() const =0xercesc::DOMAttr [pure virtual]
getNamespaceURI() const =0xercesc::DOMNode [pure virtual]
getNextSibling() const =0xercesc::DOMNode [pure virtual]
getNodeName() const =0xercesc::DOMNode [pure virtual]
getNodeType() const =0xercesc::DOMNode [pure virtual]
getNodeValue() const =0xercesc::DOMNode [pure virtual]
getOwnerDocument() const =0xercesc::DOMNode [pure virtual]
getOwnerElement() const =0xercesc::DOMAttr [pure virtual]
getParentNode() const =0xercesc::DOMNode [pure virtual]
getPrefix() const =0xercesc::DOMNode [pure virtual]
getPreviousSibling() const =0xercesc::DOMNode [pure virtual]
getSpecified() const =0xercesc::DOMAttr [pure virtual]
getTextContent() const =0xercesc::DOMNode [pure virtual]
getTypeInfo() const =0xercesc::DOMAttr [pure virtual]
getUserData(const XMLCh *key) const =0xercesc::DOMNode [pure virtual]
getValue() const =0xercesc::DOMAttr [pure virtual]
hasAttributes() const =0xercesc::DOMNode [pure virtual]
hasChildNodes() const =0xercesc::DOMNode [pure virtual]
insertBefore(DOMNode *newChild, DOMNode *refChild)=0xercesc::DOMNode [pure virtual]
isDefaultNamespace(const XMLCh *namespaceURI) const =0xercesc::DOMNode [pure virtual]
isEqualNode(const DOMNode *arg) const =0xercesc::DOMNode [pure virtual]
isId() const =0xercesc::DOMAttr [pure virtual]
isSameNode(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
isSupported(const XMLCh *feature, const XMLCh *version) const =0xercesc::DOMNode [pure virtual]
lookupNamespacePrefix(const XMLCh *namespaceURI, bool useDefault) const =0xercesc::DOMNode [pure virtual]
lookupNamespaceURI(const XMLCh *prefix) const =0xercesc::DOMNode [pure virtual]
NodeType enum namexercesc::DOMNode
normalize()=0xercesc::DOMNode [pure virtual]
NOTATION_NODE enum valuexercesc::DOMNode
PROCESSING_INSTRUCTION_NODE enum valuexercesc::DOMNode
release()=0xercesc::DOMNode [pure virtual]
removeChild(DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
replaceChild(DOMNode *newChild, DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
setNodeValue(const XMLCh *nodeValue)=0xercesc::DOMNode [pure virtual]
setPrefix(const XMLCh *prefix)=0xercesc::DOMNode [pure virtual]
setTextContent(const XMLCh *textContent)=0xercesc::DOMNode [pure virtual]
setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0xercesc::DOMNode [pure virtual]
setValue(const XMLCh *value)=0xercesc::DOMAttr [pure virtual]
TEXT_NODE enum valuexercesc::DOMNode
TREE_POSITION_ANCESTOR enum valuexercesc::DOMNode
TREE_POSITION_DESCENDANT enum valuexercesc::DOMNode
TREE_POSITION_DISCONNECTED enum valuexercesc::DOMNode
TREE_POSITION_EQUIVALENT enum valuexercesc::DOMNode
TREE_POSITION_FOLLOWING enum valuexercesc::DOMNode
TREE_POSITION_PRECEDING enum valuexercesc::DOMNode
TREE_POSITION_SAME_NODE enum valuexercesc::DOMNode
~DOMAttr()xercesc::DOMAttr [inline, virtual]
~DOMNode()xercesc::DOMNode [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMAttr.html b/docs/dom3-api/classxercesc_1_1DOMAttr.html new file mode 100644 index 00000000..4f64801a --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMAttr.html @@ -0,0 +1,393 @@ + + +XQilla DOM Level 3 API: xercesc::DOMAttr Class Reference + + + + + + + +

xercesc::DOMAttr Class Reference

The DOMAttr class refers to an attribute of an XML element. +More... +

+#include <DOMAttr.hpp> +

+Inheritance diagram for xercesc::DOMAttr:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMAttr ()
 Destructor.
Functions introduced in DOM Level 1
virtual const XMLCh * getName () const =0
 Returns the name of this attribute.
virtual bool getSpecified () const =0
 Returns true if the attribute received its value explicitly in the XML document, or if a value was assigned programatically with the setValue function.
virtual const XMLCh * getValue () const =0
 Returns the value of the attribute.
virtual void setValue (const XMLCh *value)=0
 Sets the value of the attribute.
Functions introduced in DOM Level 2.
virtual DOMElementgetOwnerElement () const =0
 The DOMElement node this attribute is attached to or null if this attribute is not in use.
Functions introduced in DOM Level 3.
virtual bool isId () const =0
 Returns whether this attribute is known to be of type ID or not.
virtual const DOMTypeInfogetTypeInfo () const =0
 Returns the type information associated with this attribute.

Protected Member Functions

Hidden constructors
 DOMAttr ()
 DOMAttr (const DOMAttr &other)
+

Detailed Description

+The DOMAttr class refers to an attribute of an XML element. +

+Typically the allowable values for the attribute are defined in a documenttype definition.

+DOMAttr objects inherit the DOMNode interface, but since attributes are not actually child nodes of the elements they are associated with, the DOM does not consider them part of the document tree. Thus, the DOMNode attributes parentNode, previousSibling, and nextSibling have a null value for DOMAttr objects. The DOM takes the view that attributes are properties of elements rather than having a separate identity from the elements they are associated with; this should make it more efficient to implement such features as default attributes associated with all elements of a given type. Furthermore, attribute nodes may not be immediate children of a DOMDocumentFragment. However, they can be associated with DOMElement nodes contained within a DOMDocumentFragment. In short, users of the DOM need to be aware that DOMAttr nodes have some things in common with other objects inheriting the DOMNode interface, but they also are quite distinct.

+

Since:
DOM Level 1
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMAttr::DOMAttr  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
xercesc::DOMAttr::DOMAttr const DOMAttr other  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMAttr::~DOMAttr  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMAttr::getName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the name of this attribute. +

+

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual DOMElement* xercesc::DOMAttr::getOwnerElement  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The DOMElement node this attribute is attached to or null if this attribute is not in use. +

+

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual bool xercesc::DOMAttr::getSpecified  )  const [pure virtual]
+
+ + + + + +
+   + + +

+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.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const DOMTypeInfo* xercesc::DOMAttr::getTypeInfo  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the type information associated with this attribute. +

+"Experimental - subject to change"

+

Returns:
the DOMTypeInfo associated with this attribute
+
Since:
DOM level 3
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMAttr::getValue  )  const [pure virtual]
+
+ + + + + +
+   + + +

+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.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual bool xercesc::DOMAttr::isId  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns whether this attribute is known to be of type ID or not. +

+When it is and its value is unique, the ownerElement of this attribute can be retrieved using getElementById on Document.

+"Experimental - subject to change"

+

Returns:
bool stating if this DOMAttr is an ID
+
Since:
DOM level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMAttr::setValue const XMLCh *  value  )  [pure virtual]
+
+ + + + + +
+   + + +

+Sets the value of the attribute. +

+A text node with the unparsed contents of the string will be created.

+

Parameters:
+ + +
value The value of the DOM attribute to be set
+
+
Since:
DOM Level 1
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMAttr__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMAttr__inherit__graph.map new file mode 100644 index 00000000..5763be4c --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMAttr__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMNode.html 8,9 146,33 diff --git a/docs/dom3-api/classxercesc_1_1DOMAttr__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMAttr__inherit__graph.md5 new file mode 100644 index 00000000..b09bae62 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMAttr__inherit__graph.md5 @@ -0,0 +1 @@ +46c2b947277006d3f333c01069454fe1 \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMAttr__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMAttr__inherit__graph.png new file mode 100644 index 00000000..f64b0618 Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMAttr__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMBuilder-members.html b/docs/dom3-api/classxercesc_1_1DOMBuilder-members.html new file mode 100644 index 00000000..1d77fe7a --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMBuilder-members.html @@ -0,0 +1,62 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMBuilder Member List

This is the complete list of members for xercesc::DOMBuilder, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ACTION_APPEND_AS_CHILDREN enum valuexercesc::DOMBuilder
ACTION_INSERT_AFTER enum valuexercesc::DOMBuilder
ACTION_INSERT_BEFORE enum valuexercesc::DOMBuilder
ACTION_REPLACE enum valuexercesc::DOMBuilder
ActionType enum namexercesc::DOMBuilder
canSetFeature(const XMLCh *const name, const bool state) const =0xercesc::DOMBuilder [pure virtual]
DOMBuilder()xercesc::DOMBuilder [inline, protected]
getEntityResolver()=0xercesc::DOMBuilder [pure virtual]
getEntityResolver() const =0xercesc::DOMBuilder [pure virtual]
getErrorHandler()=0xercesc::DOMBuilder [pure virtual]
getErrorHandler() const =0xercesc::DOMBuilder [pure virtual]
getFeature(const XMLCh *const name) const =0xercesc::DOMBuilder [pure virtual]
getFilter()=0xercesc::DOMBuilder [pure virtual]
getFilter() const =0xercesc::DOMBuilder [pure virtual]
getGrammar(const XMLCh *const nameSpaceKey) const =0xercesc::DOMBuilder [pure virtual]
getProperty(const XMLCh *const name) const =0xercesc::DOMBuilder [pure virtual]
getRootGrammar() const =0xercesc::DOMBuilder [pure virtual]
getSrcOffset() const =0xercesc::DOMBuilder [pure virtual]
getURIText(unsigned int uriId) const =0xercesc::DOMBuilder [pure virtual]
loadGrammar(const DOMInputSource &source, const short grammarType, const bool toCache=false)=0xercesc::DOMBuilder [pure virtual]
loadGrammar(const XMLCh *const systemId, const short grammarType, const bool toCache=false)=0xercesc::DOMBuilder [pure virtual]
loadGrammar(const char *const systemId, const short grammarType, const bool toCache=false)=0xercesc::DOMBuilder [pure virtual]
parse(const DOMInputSource &source)=0xercesc::DOMBuilder [pure virtual]
parseURI(const XMLCh *const systemId)=0xercesc::DOMBuilder [pure virtual]
parseURI(const char *const systemId)=0xercesc::DOMBuilder [pure virtual]
parseWithContext(const DOMInputSource &source, DOMNode *const contextNode, const short action)=0xercesc::DOMBuilder [pure virtual]
release()=0xercesc::DOMBuilder [pure virtual]
resetCachedGrammarPool()=0xercesc::DOMBuilder [pure virtual]
resetDocumentPool()=0xercesc::DOMBuilder [pure virtual]
setEntityResolver(DOMEntityResolver *const handler)=0xercesc::DOMBuilder [pure virtual]
setErrorHandler(DOMErrorHandler *const handler)=0xercesc::DOMBuilder [pure virtual]
setFeature(const XMLCh *const name, const bool state)=0xercesc::DOMBuilder [pure virtual]
setFilter(DOMBuilderFilter *const filter)=0xercesc::DOMBuilder [pure virtual]
setProperty(const XMLCh *const name, void *value)=0xercesc::DOMBuilder [pure virtual]
~DOMBuilder()xercesc::DOMBuilder [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMBuilder.html b/docs/dom3-api/classxercesc_1_1DOMBuilder.html new file mode 100644 index 00000000..a71f73c4 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMBuilder.html @@ -0,0 +1,1445 @@ + + +XQilla DOM Level 3 API: xercesc::DOMBuilder Class Reference + + + + + + + +

xercesc::DOMBuilder Class Reference

DOMBuilder provides an API for parsing XML documents and building the corresponding DOM document tree. +More... +

+#include <DOMBuilder.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

Public Constants
enum  ActionType { ACTION_REPLACE = 1, +ACTION_APPEND_AS_CHILDREN = 2, +ACTION_INSERT_AFTER = 3, +ACTION_INSERT_BEFORE = 4 + }
 Action types for use in parseWithContext. More...

Public Member Functions

Destructor
virtual ~DOMBuilder ()
 Destructor.
Functions introduced in DOM Level 3
virtual DOMErrorHandlergetErrorHandler ()=0
 Get a pointer to the error handler.
virtual const DOMErrorHandlergetErrorHandler () const =0
 Get a const pointer to the error handler.
virtual DOMEntityResolvergetEntityResolver ()=0
 Get a pointer to the entity resolver.
virtual const DOMEntityResolvergetEntityResolver () const =0
 Get a const pointer to the entity resolver.
virtual DOMBuilderFilter * getFilter ()=0
 Get a pointer to the application filter.
virtual const DOMBuilderFilter * getFilter () const =0
 Get a const pointer to the application filter.
virtual void setErrorHandler (DOMErrorHandler *const handler)=0
 Set the error handler.
virtual void setEntityResolver (DOMEntityResolver *const handler)=0
 Set the entity resolver.
virtual void setFilter (DOMBuilderFilter *const filter)=0
 Set the application filter.
virtual void setFeature (const XMLCh *const name, const bool state)=0
 Set the state of a feature.
virtual bool getFeature (const XMLCh *const name) const =0
 Look up the value of a feature.
virtual bool canSetFeature (const XMLCh *const name, const bool state) const =0
 Query whether setting a feature to a specific value is supported.
virtual DOMDocumentparse (const DOMInputSource &source)=0
 Parse via an input source object.
virtual DOMDocumentparseURI (const XMLCh *const systemId)=0
 Parse via a file path or URL.
virtual DOMDocumentparseURI (const char *const systemId)=0
 Parse via a file path or URL (in the local code page).
virtual void parseWithContext (const DOMInputSource &source, DOMNode *const contextNode, const short action)=0
 Parse via an input source object.
Non-standard Extension
virtual void * getProperty (const XMLCh *const name) const =0
 Query the current value of a property in a DOMBuilder.
virtual void setProperty (const XMLCh *const name, void *value)=0
 Set the value of any property in a DOMBuilder.
virtual void release ()=0
 Called to indicate that this DOMBuilder is no longer in use and that the implementation may relinquish any resources associated with it.
virtual void resetDocumentPool ()=0
 Reset the documents vector pool and release all the associated memory back to the system.
virtual Grammar * loadGrammar (const DOMInputSource &source, const short grammarType, const bool toCache=false)=0
 Preparse schema grammar (XML Schema, DTD, etc.
virtual Grammar * loadGrammar (const XMLCh *const systemId, const short grammarType, const bool toCache=false)=0
 Preparse schema grammar (XML Schema, DTD, etc.
virtual Grammar * loadGrammar (const char *const systemId, const short grammarType, const bool toCache=false)=0
 Preparse schema grammar (XML Schema, DTD, etc.
virtual Grammar * getGrammar (const XMLCh *const nameSpaceKey) const =0
 Retrieve the grammar that is associated with the specified namespace key.
virtual Grammar * getRootGrammar () const =0
 Retrieve the grammar where the root element is declared.
virtual const XMLCh * getURIText (unsigned int uriId) const =0
 Returns the string corresponding to a URI id from the URI string pool.
virtual void resetCachedGrammarPool ()=0
 Clear the cached grammar pool.
virtual unsigned int getSrcOffset () const =0
 Returns the current src offset within the input source.

Protected Member Functions

Hidden constructors
 DOMBuilder ()
+


Detailed Description

+DOMBuilder provides an API for parsing XML documents and building the corresponding DOM document tree. +

+A DOMBuilder instance is obtained from the DOMImplementationLS interface by invoking its createDOMBuilder method. This implementation also allows the applications to install an error and an entity handler (useful extensions to the DOM specification).

+

Since:
DOM Level 3
+ +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
enum xercesc::DOMBuilder::ActionType
+
+ + + + + +
+   + + +

+Action types for use in parseWithContext. +

+ACTION_REPLACE: Replace the context node with the result of parsing the input source. For this action to work the context node must be an DOMElement, DOMText, DOMCDATASection, DOMComment, DOMProcessingInstruction, or DOMEntityReference node.

+ACTION_APPEND: Append the result of parsing the input source to the context node. For this action to work, the context node must be an DOMElement.

+ACTION_INSERT_AFTER: Insert the result of parsing the input source after the context node. For this action to work the context nodes parent must be an DOMElement.

+ACTION_INSERT_BEFORE: Insert the result of parsing the input source before the context node. For this action to work the context nodes parent must be an DOMElement.

+

See also:
parseWithContext(...)
+
Since:
DOM Level 3
+
Enumerator:
+ + + + + +
ACTION_REPLACE  +
ACTION_APPEND_AS_CHILDREN  +
ACTION_INSERT_AFTER  +
ACTION_INSERT_BEFORE  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMBuilder::DOMBuilder  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMBuilder::~DOMBuilder  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool xercesc::DOMBuilder::canSetFeature const XMLCh *const   name,
const bool  state
const [pure virtual]
+
+ + + + + +
+   + + +

+Query whether setting a feature to a specific value is supported. +

+"Experimental - subject to change"

+

Parameters:
+ + + +
name The feature name.
state The requested state of the feature (true or false).
+
+
Returns:
true if the feature could be successfully set to the specified value, or false if the feature is not recognized or the requested value is not supported. The value of the feature itself is not changed.
+
See also:
getFeature

+setFeature

+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual const DOMEntityResolver* xercesc::DOMBuilder::getEntityResolver  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get a const pointer to the entity resolver. +

+This method returns the installed entity resolver. If no resolver has been installed, then it will be a zero pointer.

+"Experimental - subject to change"

+

Returns:
A const pointer to the installed entity resolver object.
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual DOMEntityResolver* xercesc::DOMBuilder::getEntityResolver  )  [pure virtual]
+
+ + + + + +
+   + + +

+Get a pointer to the entity resolver. +

+This method returns the installed entity resolver. If no resolver has been installed, then it will be a zero pointer.

+"Experimental - subject to change"

+

Returns:
The pointer to the installed entity resolver object.
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual const DOMErrorHandler* xercesc::DOMBuilder::getErrorHandler  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get a const pointer to the error handler. +

+This method returns the installed error handler. If no handler has been installed, then it will be a zero pointer.

+"Experimental - subject to change"

+

Returns:
A const pointer to the installed error handler object.
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual DOMErrorHandler* xercesc::DOMBuilder::getErrorHandler  )  [pure virtual]
+
+ + + + + +
+   + + +

+Get a pointer to the error handler. +

+This method returns the installed error handler. If no handler has been installed, then it will be a zero pointer.

+"Experimental - subject to change"

+

Returns:
The pointer to the installed error handler object.
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual bool xercesc::DOMBuilder::getFeature const XMLCh *const   name  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Look up the value of a feature. +

+"Experimental - subject to change"

+

Parameters:
+ + +
name The feature name.
+
+
Returns:
The current state of the feature (true or false)
+
Exceptions:
+ + +
DOMException NOT_FOUND_ERR: Raised when the DOMBuilder does not recognize the feature name.
+
+
See also:
getFeature

+canSetFeature

+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual const DOMBuilderFilter* xercesc::DOMBuilder::getFilter  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get a const pointer to the application filter. +

+This method returns the installed application filter. If no filter has been installed, then it will be a zero pointer.

+"Experimental - subject to change"

+

Returns:
A const pointer to the installed application filter
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual DOMBuilderFilter* xercesc::DOMBuilder::getFilter  )  [pure virtual]
+
+ + + + + +
+   + + +

+Get a pointer to the application filter. +

+This method returns the installed application filter. If no filter has been installed, then it will be a zero pointer.

+"Experimental - subject to change"

+

Returns:
The pointer to the installed application filter.
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual Grammar* xercesc::DOMBuilder::getGrammar const XMLCh *const   nameSpaceKey  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Retrieve the grammar that is associated with the specified namespace key. +

+

Parameters:
+ + +
nameSpaceKey Namespace key
+
+
Returns:
Grammar associated with the Namespace key.
+
+

+ + + + +
+ + + + + + + + + +
virtual void* xercesc::DOMBuilder::getProperty const XMLCh *const   name  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Query the current value of a property in a DOMBuilder. +

+The builder owns the returned pointer. The memory allocated for the returned pointer will be destroyed when the builder is deleted.

+To ensure assessiblity of the returned information after the builder is deleted, callers need to copy and store the returned information somewhere else; otherwise you may get unexpected result. Since the returned pointer is a generic void pointer, see http://xml.apache.org/xerces-c/program-dom.html#DOMBuilderProperties to learn exactly what type of property value each property returns for replication.

+

Parameters:
+ + +
name The unique identifier (URI) of the property being set.
+
+
Returns:
The current value of the property. The pointer spans the same life-time as the parser. A null pointer is returned if nothing was specified externally.
+
Exceptions:
+ + +
DOMException 
+NOT_FOUND_ERR: Raised when the DOMBuilder does not recognize the requested property.
+
+
+

+ + + + +
+ + + + + + + + +
virtual Grammar* xercesc::DOMBuilder::getRootGrammar  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Retrieve the grammar where the root element is declared. +

+

Returns:
Grammar where root element declared
+
+

+ + + + +
+ + + + + + + + +
virtual unsigned int xercesc::DOMBuilder::getSrcOffset  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the current src offset within the input source. +

+

Returns:
offset within the input source
+
+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* xercesc::DOMBuilder::getURIText unsigned int  uriId  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the string corresponding to a URI id from the URI string pool. +

+

Parameters:
+ + +
uriId id of the string in the URI string pool.
+
+
Returns:
URI string corresponding to the URI id.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual Grammar* xercesc::DOMBuilder::loadGrammar const char *const   systemId,
const short  grammarType,
const bool  toCache = false
[pure virtual]
+
+ + + + + +
+   + + +

+Preparse schema grammar (XML Schema, DTD, etc. +

+) via a file path or URL

+This method invokes the preparsing process on a schema grammar XML file specified by the file path parameter. If the 'toCache' flag is enabled, the parser will cache the grammars for re-use. If a grammar key is found in the pool, no caching of any grammar will take place.

+"Experimental - subject to change"

+

Parameters:
+ + + + +
systemId A const char pointer to a native string which contains the path to the XML grammar file to be preparsed.
grammarType The grammar type (Schema or DTD).
toCache If true, we cache the preparsed grammar, otherwise, no chaching. Default is false.
+
+
Returns:
The preparsed schema grammar object (SchemaGrammar or DTDGrammar). That grammar object is owned by the parser.
+
Exceptions:
+ + + + +
SAXException Any SAX exception, possibly wrapping another exception.
XMLException An exception from the parser or client handler code.
DOMException A DOM exception as per DOM spec.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual Grammar* xercesc::DOMBuilder::loadGrammar const XMLCh *const   systemId,
const short  grammarType,
const bool  toCache = false
[pure virtual]
+
+ + + + + +
+   + + +

+Preparse schema grammar (XML Schema, DTD, etc. +

+) via a file path or URL

+This method invokes the preparsing process on a schema grammar XML file specified by the file path parameter. If the 'toCache' flag is enabled, the parser will cache the grammars for re-use. If a grammar key is found in the pool, no caching of any grammar will take place.

+"Experimental - subject to change"

+

Parameters:
+ + + + +
systemId A const XMLCh pointer to the Unicode string which contains the path to the XML grammar file to be preparsed.
grammarType The grammar type (Schema or DTD).
toCache If true, we cache the preparsed grammar, otherwise, no chaching. Default is false.
+
+
Returns:
The preparsed schema grammar object (SchemaGrammar or DTDGrammar). That grammar object is owned by the parser.
+
Exceptions:
+ + + + +
SAXException Any SAX exception, possibly wrapping another exception.
XMLException An exception from the parser or client handler code.
DOMException A DOM exception as per DOM spec.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual Grammar* xercesc::DOMBuilder::loadGrammar const DOMInputSource source,
const short  grammarType,
const bool  toCache = false
[pure virtual]
+
+ + + + + +
+   + + +

+Preparse schema grammar (XML Schema, DTD, etc. +

+) via an input source object.

+This method invokes the preparsing process on a schema grammar XML file specified by the DOMInputSource parameter. If the 'toCache' flag is enabled, the parser will cache the grammars for re-use. If a grammar key is found in the pool, no caching of any grammar will take place.

+"Experimental - subject to change"

+

Parameters:
+ + + + +
source A const reference to the DOMInputSource object which points to the schema grammar file to be preparsed.
grammarType The grammar type (Schema or DTD).
toCache If true, we cache the preparsed grammar, otherwise, no chaching. Default is false.
+
+
Returns:
The preparsed schema grammar object (SchemaGrammar or DTDGrammar). That grammar object is owned by the parser.
+
Exceptions:
+ + + + +
SAXException Any SAX exception, possibly wrapping another exception.
XMLException An exception from the parser or client handler code.
DOMException A DOM exception as per DOM spec.
+
+
See also:
DOMInputSource::DOMInputSource
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMDocument* xercesc::DOMBuilder::parse const DOMInputSource source  )  [pure virtual]
+
+ + + + + +
+   + + +

+Parse via an input source object. +

+This method invokes the parsing process on the XML file specified by the DOMInputSource parameter. This API is borrowed from the SAX Parser interface.

+The parser owns the returned DOMDocument. It will be deleted when the parser is released.

+"Experimental - subject to change"

+

Parameters:
+ + +
source A const reference to the DOMInputSource object which points to the XML file to be parsed.
+
+
Returns:
If the DOMBuilder is a synchronous DOMBuilder the newly created and populated DOMDocument is returned. If the DOMBuilder is asynchronous then null is returned since the document object is not yet parsed when this method returns.
+
Exceptions:
+ + + + +
SAXException Any SAX exception, possibly wrapping another exception.
XMLException An exception from the parser or client handler code.
DOMException A DOM exception as per DOM spec.
+
+
See also:
DOMInputSource::DOMInputSource

+setEntityResolver

+setErrorHandler

+resetDocumentPool

+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMDocument* xercesc::DOMBuilder::parseURI const char *const   systemId  )  [pure virtual]
+
+ + + + + +
+   + + +

+Parse via a file path or URL (in the local code page). +

+This method invokes the parsing process on the XML file specified by the native char* string parameter 'systemId'.

+The parser owns the returned DOMDocument. It will be deleted when the parser is released.

+"Experimental - subject to change"

+

Parameters:
+ + +
systemId A const char pointer to a native string which contains the path to the XML file to be parsed.
+
+
Returns:
If the DOMBuilder is a synchronous DOMBuilder the newly created and populated DOMDocument is returned. If the DOMBuilder is asynchronous then null is returned since the document object is not yet parsed when this method returns.
+
Exceptions:
+ + + + +
SAXException Any SAX exception, possibly wrapping another exception.
XMLException An exception from the parser or client handler code.
DOMException A DOM exception as per DOM spec.
+
+
See also:
parse(DOMInputSource,...)

+resetDocumentPool

+
+

+ + + + +
+ + + + + + + + + +
virtual DOMDocument* xercesc::DOMBuilder::parseURI const XMLCh *const   systemId  )  [pure virtual]
+
+ + + + + +
+   + + +

+Parse via a file path or URL. +

+This method invokes the parsing process on the XML file specified by the Unicode string parameter 'systemId'.

+The parser owns the returned DOMDocument. It will be deleted when the parser is released.

+"Experimental - subject to change"

+

Parameters:
+ + +
systemId A const XMLCh pointer to the Unicode string which contains the path to the XML file to be parsed.
+
+
Returns:
If the DOMBuilder is a synchronous DOMBuilder the newly created and populated DOMDocument is returned. If the DOMBuilder is asynchronous then null is returned since the document object is not yet parsed when this method returns.
+
Exceptions:
+ + + + +
SAXException Any SAX exception, possibly wrapping another exception.
XMLException An exception from the parser or client handler code.
DOMException A DOM exception as per DOM spec.
+
+
See also:
parse(DOMInputSource,...)

+resetDocumentPool

+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void xercesc::DOMBuilder::parseWithContext const DOMInputSource source,
DOMNode *const   contextNode,
const short  action
[pure virtual]
+
+ + + + + +
+   + + +

+Parse via an input source object. +

+This method invokes the parsing process on the XML file specified by the DOMInputSource parameter, and inserts the content into an existing document at the position specified with the contextNode and action arguments. When parsing the input stream the context node is used for resolving unbound namespace prefixes.

+"Experimental - subject to change"

+

Parameters:
+ + + + +
source A const reference to the DOMInputSource object which points to the XML file to be parsed.
contextNode The node that is used as the context for the data that is being parsed. This node must be a Document node, a DocumentFragment node, or a node of a type that is allowed as a child of an element, e.g. it can not be an attribute node.
action This parameter describes which action should be taken between the new set of node being inserted and the existing children of the context node.
+
+
Exceptions:
+ + +
DOMException NOT_SUPPORTED_ERR: Raised when the DOMBuilder doesn't support this method.
+NO_MODIFICATION_ALLOWED_ERR: Raised if the context node is readonly.
+
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual void xercesc::DOMBuilder::release  )  [pure virtual]
+
+ + + + + +
+   + + +

+Called to indicate that this DOMBuilder is no longer in use and that the implementation may relinquish any resources associated with it. +

+Access to a released object will lead to unexpected result.

+

+ + + + +
+ + + + + + + + +
virtual void xercesc::DOMBuilder::resetCachedGrammarPool  )  [pure virtual]
+
+ + + + + +
+   + + +

+Clear the cached grammar pool. +

+

+

+ + + + +
+ + + + + + + + +
virtual void xercesc::DOMBuilder::resetDocumentPool  )  [pure virtual]
+
+ + + + + +
+   + + +

+Reset the documents vector pool and release all the associated memory back to the system. +

+When parsing a document using a DOM parser, all memory allocated for a DOM tree is associated to the DOM document.

+If you do multiple parse using the same DOM parser instance, then multiple DOM documents will be generated and saved in a vector pool. All these documents (and thus all the allocated memory) won't be deleted until the parser instance is destroyed.

+If you don't need these DOM documents anymore and don't want to destroy the DOM parser instance at this moment, then you can call this method to reset the document vector pool and release all the allocated memory back to the system.

+It is an error to call this method if you are in the middle of a parse (e.g. in the mid of a progressive parse).

+

Exceptions:
+ + +
IOException An exception from the parser if this function is called when a parse is in progress.
+
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMBuilder::setEntityResolver DOMEntityResolver *const   handler  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the entity resolver. +

+This method allows applications to install their own entity resolver. By installing an entity resolver, the applications can trap and potentially redirect references to external entities.

+Any previously set resolver is merely dropped, since the parser does not own them.

+"Experimental - subject to change"

+

Parameters:
+ + +
handler A const pointer to the user supplied entity resolver.
+
+
See also:
getEntityResolver
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMBuilder::setErrorHandler DOMErrorHandler *const   handler  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the error handler. +

+This method allows applications to install their own error handler to trap error and warning messages.

+Any previously set handler is merely dropped, since the parser does not own them.

+"Experimental - subject to change"

+

Parameters:
+ + +
handler A const pointer to the user supplied error handler.
+
+
See also:
getErrorHandler
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void xercesc::DOMBuilder::setFeature const XMLCh *const   name,
const bool  state
[pure virtual]
+
+ + + + + +
+   + + +

+Set the state of a feature. +

+It is possible for a DOMBuilder to recognize a feature name but to be unable to set its value.

+"Experimental - subject to change"

+See http://xml.apache.org/xerces-c/program-dom.html#DOMBuilderFeatures for the list of supported features.

+

Parameters:
+ + + +
name The feature name.
state The requested state of the feature (true or false).
+
+
Exceptions:
+ + +
DOMException NOT_SUPPORTED_ERR: Raised when the DOMBuilder recognizes the feature name but cannot set the requested value.
+NOT_FOUND_ERR: Raised when the DOMBuilder does not recognize the feature name.
+
+
See also:
setFeature

+canSetFeature

+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMBuilder::setFilter DOMBuilderFilter *const   filter  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the application filter. +

+When the application provides a filter, the parser will call out to the filter at the completion of the construction of each Element node. The filter implementation can choose to remove the element from the document being constructed (unless the element is the document element) or to terminate the parse early. If the document is being validated when it's loaded the validation happens before the filter is called.

+Any previously set filter is merely dropped, since the parser does not own them.

+"Experimental - subject to change"

+

Parameters:
+ + +
filter A const pointer to the user supplied application filter.
+
+
See also:
getFilter
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void xercesc::DOMBuilder::setProperty const XMLCh *const   name,
void *  value
[pure virtual]
+
+ + + + + +
+   + + +

+Set the value of any property in a DOMBuilder. +

+See http://xml.apache.org/xerces-c/program-dom.html#DOMBuilderProperties for the list of supported properties.

+It takes a void pointer as the property value. Application is required to initialize this void pointer to a correct type. See http://xml.apache.org/xerces-c/program-dom.html#DOMBuilderProperties to learn exactly what type of property value each property expects for processing. Passing a void pointer that was initialized with a wrong type will lead to unexpected result. If the same property is set more than once, the last one takes effect.

+

Parameters:
+ + + +
name The unique identifier (URI) of the property being set.
value The requested value for the property. See http://xml.apache.org/xerces-c/program-dom.html#DOMBuilderProperties to learn exactly what type of property value each property expects for processing. Passing a void pointer that was initialized with a wrong type will lead to unexpected result.
+
+
Exceptions:
+ + +
DOMException 
+NOT_FOUND_ERR: Raised when the DOMBuilder does not recognize the requested property.
+
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMCDATASection-members.html b/docs/dom3-api/classxercesc_1_1DOMCDATASection-members.html new file mode 100644 index 00000000..4b95c237 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMCDATASection-members.html @@ -0,0 +1,111 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMCDATASection Member List

This is the complete list of members for xercesc::DOMCDATASection, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
appendChild(DOMNode *newChild)=0xercesc::DOMNode [pure virtual]
appendData(const XMLCh *arg)=0xercesc::DOMCharacterData [pure virtual]
ATTRIBUTE_NODE enum valuexercesc::DOMNode
CDATA_SECTION_NODE enum valuexercesc::DOMNode
cloneNode(bool deep) const =0xercesc::DOMNode [pure virtual]
COMMENT_NODE enum valuexercesc::DOMNode
compareTreePosition(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
deleteData(XMLSize_t offset, XMLSize_t count)=0xercesc::DOMCharacterData [pure virtual]
DOCUMENT_FRAGMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_TYPE_NODE enum valuexercesc::DOMNode
DOMCDATASection()xercesc::DOMCDATASection [inline, protected]
DOMCDATASection(const DOMCDATASection &other)xercesc::DOMCDATASection [inline, protected]
DOMCharacterData()xercesc::DOMCharacterData [inline, protected]
DOMCharacterData(const DOMCharacterData &other)xercesc::DOMCharacterData [inline, protected]
DOMNode()xercesc::DOMNode [inline, protected]
DOMNode(const DOMNode &)xercesc::DOMNode [inline, protected]
DOMText()xercesc::DOMText [inline, protected]
DOMText(const DOMText &other)xercesc::DOMText [inline, protected]
DOMTreePosition enum namexercesc::DOMNode
ELEMENT_NODE enum valuexercesc::DOMNode
ENTITY_NODE enum valuexercesc::DOMNode
ENTITY_REFERENCE_NODE enum valuexercesc::DOMNode
getAttributes() const =0xercesc::DOMNode [pure virtual]
getBaseURI() const =0xercesc::DOMNode [pure virtual]
getChildNodes() const =0xercesc::DOMNode [pure virtual]
getData() const =0xercesc::DOMCharacterData [pure virtual]
getFirstChild() const =0xercesc::DOMNode [pure virtual]
getInterface(const XMLCh *feature)=0xercesc::DOMNode [pure virtual]
getIsWhitespaceInElementContent() const =0xercesc::DOMText [pure virtual]
getLastChild() const =0xercesc::DOMNode [pure virtual]
getLength() const =0xercesc::DOMCharacterData [pure virtual]
getLocalName() const =0xercesc::DOMNode [pure virtual]
getNamespaceURI() const =0xercesc::DOMNode [pure virtual]
getNextSibling() const =0xercesc::DOMNode [pure virtual]
getNodeName() const =0xercesc::DOMNode [pure virtual]
getNodeType() const =0xercesc::DOMNode [pure virtual]
getNodeValue() const =0xercesc::DOMNode [pure virtual]
getOwnerDocument() const =0xercesc::DOMNode [pure virtual]
getParentNode() const =0xercesc::DOMNode [pure virtual]
getPrefix() const =0xercesc::DOMNode [pure virtual]
getPreviousSibling() const =0xercesc::DOMNode [pure virtual]
getTextContent() const =0xercesc::DOMNode [pure virtual]
getUserData(const XMLCh *key) const =0xercesc::DOMNode [pure virtual]
getWholeText()=0xercesc::DOMText [pure virtual]
hasAttributes() const =0xercesc::DOMNode [pure virtual]
hasChildNodes() const =0xercesc::DOMNode [pure virtual]
insertBefore(DOMNode *newChild, DOMNode *refChild)=0xercesc::DOMNode [pure virtual]
insertData(XMLSize_t offset, const XMLCh *arg)=0xercesc::DOMCharacterData [pure virtual]
isDefaultNamespace(const XMLCh *namespaceURI) const =0xercesc::DOMNode [pure virtual]
isEqualNode(const DOMNode *arg) const =0xercesc::DOMNode [pure virtual]
isIgnorableWhitespace() const =0xercesc::DOMText [pure virtual]
isSameNode(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
isSupported(const XMLCh *feature, const XMLCh *version) const =0xercesc::DOMNode [pure virtual]
lookupNamespacePrefix(const XMLCh *namespaceURI, bool useDefault) const =0xercesc::DOMNode [pure virtual]
lookupNamespaceURI(const XMLCh *prefix) const =0xercesc::DOMNode [pure virtual]
NodeType enum namexercesc::DOMNode
normalize()=0xercesc::DOMNode [pure virtual]
NOTATION_NODE enum valuexercesc::DOMNode
PROCESSING_INSTRUCTION_NODE enum valuexercesc::DOMNode
release()=0xercesc::DOMNode [pure virtual]
removeChild(DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
replaceChild(DOMNode *newChild, DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
replaceData(XMLSize_t offset, XMLSize_t count, const XMLCh *arg)=0xercesc::DOMCharacterData [pure virtual]
replaceWholeText(const XMLCh *content)=0xercesc::DOMText [pure virtual]
setData(const XMLCh *data)=0xercesc::DOMCharacterData [pure virtual]
setNodeValue(const XMLCh *nodeValue)=0xercesc::DOMNode [pure virtual]
setPrefix(const XMLCh *prefix)=0xercesc::DOMNode [pure virtual]
setTextContent(const XMLCh *textContent)=0xercesc::DOMNode [pure virtual]
setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0xercesc::DOMNode [pure virtual]
splitText(XMLSize_t offset)=0xercesc::DOMText [pure virtual]
substringData(XMLSize_t offset, XMLSize_t count) const =0xercesc::DOMCharacterData [pure virtual]
TEXT_NODE enum valuexercesc::DOMNode
TREE_POSITION_ANCESTOR enum valuexercesc::DOMNode
TREE_POSITION_DESCENDANT enum valuexercesc::DOMNode
TREE_POSITION_DISCONNECTED enum valuexercesc::DOMNode
TREE_POSITION_EQUIVALENT enum valuexercesc::DOMNode
TREE_POSITION_FOLLOWING enum valuexercesc::DOMNode
TREE_POSITION_PRECEDING enum valuexercesc::DOMNode
TREE_POSITION_SAME_NODE enum valuexercesc::DOMNode
~DOMCDATASection()xercesc::DOMCDATASection [inline, virtual]
~DOMCharacterData()xercesc::DOMCharacterData [inline, virtual]
~DOMNode()xercesc::DOMNode [inline, virtual]
~DOMText()xercesc::DOMText [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMCDATASection.html b/docs/dom3-api/classxercesc_1_1DOMCDATASection.html new file mode 100644 index 00000000..5ee10766 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMCDATASection.html @@ -0,0 +1,150 @@ + + +XQilla DOM Level 3 API: xercesc::DOMCDATASection Class Reference + + + + + + + +

xercesc::DOMCDATASection Class Reference

CDATA sections are used to escape blocks of text containing characters that would otherwise be regarded as markup. +More... +

+#include <DOMCDATASection.hpp> +

+Inheritance diagram for xercesc::DOMCDATASection:

Inheritance graph
+ + + + + +
[legend]
List of all members. + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMCDATASection ()
 Destructor.

Protected Member Functions

Hidden constructors
 DOMCDATASection ()
 DOMCDATASection (const DOMCDATASection &other)
+

Detailed Description

+CDATA sections are used to escape blocks of text containing characters that would otherwise be regarded as markup. +

+The only delimiter that is recognized in a CDATA section is the "]]&gt;" string that ends the CDATA section. CDATA sections cannot be nested. Their primary purpose is for including material such as XML fragments, without needing to escape all the delimiters.

+The data attribute of the DOMText node holds the text that is contained by the CDATA section. Note that this may contain characters that need to be escaped outside of CDATA sections and that, depending on the character encoding ("charset") chosen for serialization, it may be impossible to write out some characters as part of a CDATA section.

+The DOMCDATASection interface inherits from the DOMCharacterData interface through the DOMText interface. Adjacent DOMCDATASection nodes are not merged by use of the normalize method of the DOMNode interface. Because no markup is recognized within a DOMCDATASection, character numeric references cannot be used as an escape mechanism when serializing. Therefore, action needs to be taken when serializing a DOMCDATASection with a character encoding where some of the contained characters cannot be represented. Failure to do so would not produce well-formed XML.One potential solution in the serialization process is to end the CDATA section before the character, output the character using a character reference or entity reference, and open a new CDATA section for any further characters in the text node. Note, however, that some code conversion libraries at the time of writing do not return an error or exception when a character is missing from the encoding, making the task of ensuring that data is not corrupted on serialization more difficult.

+See also the Document Object Model (DOM) Level 2 Core Specification.

+

Since:
DOM Level 1
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMCDATASection::DOMCDATASection  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
xercesc::DOMCDATASection::DOMCDATASection const DOMCDATASection other  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMCDATASection::~DOMCDATASection  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMCDATASection__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMCDATASection__inherit__graph.map new file mode 100644 index 00000000..9e95ae06 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMCDATASection__inherit__graph.map @@ -0,0 +1,4 @@ +base referer +rect $classxercesc_1_1DOMText.html 40,158 170,182 +rect $classxercesc_1_1DOMCharacterData.html 8,84 202,108 +rect $classxercesc_1_1DOMNode.html 36,9 174,33 diff --git a/docs/dom3-api/classxercesc_1_1DOMCDATASection__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMCDATASection__inherit__graph.md5 new file mode 100644 index 00000000..d09d0b7f --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMCDATASection__inherit__graph.md5 @@ -0,0 +1 @@ +4bd6eabf927622d93a94eb3032e4bb44 \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMCDATASection__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMCDATASection__inherit__graph.png new file mode 100644 index 00000000..a2560647 Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMCDATASection__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMCharacterData-members.html b/docs/dom3-api/classxercesc_1_1DOMCharacterData-members.html new file mode 100644 index 00000000..69afea6b --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMCharacterData-members.html @@ -0,0 +1,100 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMCharacterData Member List

This is the complete list of members for xercesc::DOMCharacterData, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
appendChild(DOMNode *newChild)=0xercesc::DOMNode [pure virtual]
appendData(const XMLCh *arg)=0xercesc::DOMCharacterData [pure virtual]
ATTRIBUTE_NODE enum valuexercesc::DOMNode
CDATA_SECTION_NODE enum valuexercesc::DOMNode
cloneNode(bool deep) const =0xercesc::DOMNode [pure virtual]
COMMENT_NODE enum valuexercesc::DOMNode
compareTreePosition(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
deleteData(XMLSize_t offset, XMLSize_t count)=0xercesc::DOMCharacterData [pure virtual]
DOCUMENT_FRAGMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_TYPE_NODE enum valuexercesc::DOMNode
DOMCharacterData()xercesc::DOMCharacterData [inline, protected]
DOMCharacterData(const DOMCharacterData &other)xercesc::DOMCharacterData [inline, protected]
DOMNode()xercesc::DOMNode [inline, protected]
DOMNode(const DOMNode &)xercesc::DOMNode [inline, protected]
DOMTreePosition enum namexercesc::DOMNode
ELEMENT_NODE enum valuexercesc::DOMNode
ENTITY_NODE enum valuexercesc::DOMNode
ENTITY_REFERENCE_NODE enum valuexercesc::DOMNode
getAttributes() const =0xercesc::DOMNode [pure virtual]
getBaseURI() const =0xercesc::DOMNode [pure virtual]
getChildNodes() const =0xercesc::DOMNode [pure virtual]
getData() const =0xercesc::DOMCharacterData [pure virtual]
getFirstChild() const =0xercesc::DOMNode [pure virtual]
getInterface(const XMLCh *feature)=0xercesc::DOMNode [pure virtual]
getLastChild() const =0xercesc::DOMNode [pure virtual]
getLength() const =0xercesc::DOMCharacterData [pure virtual]
getLocalName() const =0xercesc::DOMNode [pure virtual]
getNamespaceURI() const =0xercesc::DOMNode [pure virtual]
getNextSibling() const =0xercesc::DOMNode [pure virtual]
getNodeName() const =0xercesc::DOMNode [pure virtual]
getNodeType() const =0xercesc::DOMNode [pure virtual]
getNodeValue() const =0xercesc::DOMNode [pure virtual]
getOwnerDocument() const =0xercesc::DOMNode [pure virtual]
getParentNode() const =0xercesc::DOMNode [pure virtual]
getPrefix() const =0xercesc::DOMNode [pure virtual]
getPreviousSibling() const =0xercesc::DOMNode [pure virtual]
getTextContent() const =0xercesc::DOMNode [pure virtual]
getUserData(const XMLCh *key) const =0xercesc::DOMNode [pure virtual]
hasAttributes() const =0xercesc::DOMNode [pure virtual]
hasChildNodes() const =0xercesc::DOMNode [pure virtual]
insertBefore(DOMNode *newChild, DOMNode *refChild)=0xercesc::DOMNode [pure virtual]
insertData(XMLSize_t offset, const XMLCh *arg)=0xercesc::DOMCharacterData [pure virtual]
isDefaultNamespace(const XMLCh *namespaceURI) const =0xercesc::DOMNode [pure virtual]
isEqualNode(const DOMNode *arg) const =0xercesc::DOMNode [pure virtual]
isSameNode(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
isSupported(const XMLCh *feature, const XMLCh *version) const =0xercesc::DOMNode [pure virtual]
lookupNamespacePrefix(const XMLCh *namespaceURI, bool useDefault) const =0xercesc::DOMNode [pure virtual]
lookupNamespaceURI(const XMLCh *prefix) const =0xercesc::DOMNode [pure virtual]
NodeType enum namexercesc::DOMNode
normalize()=0xercesc::DOMNode [pure virtual]
NOTATION_NODE enum valuexercesc::DOMNode
PROCESSING_INSTRUCTION_NODE enum valuexercesc::DOMNode
release()=0xercesc::DOMNode [pure virtual]
removeChild(DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
replaceChild(DOMNode *newChild, DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
replaceData(XMLSize_t offset, XMLSize_t count, const XMLCh *arg)=0xercesc::DOMCharacterData [pure virtual]
setData(const XMLCh *data)=0xercesc::DOMCharacterData [pure virtual]
setNodeValue(const XMLCh *nodeValue)=0xercesc::DOMNode [pure virtual]
setPrefix(const XMLCh *prefix)=0xercesc::DOMNode [pure virtual]
setTextContent(const XMLCh *textContent)=0xercesc::DOMNode [pure virtual]
setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0xercesc::DOMNode [pure virtual]
substringData(XMLSize_t offset, XMLSize_t count) const =0xercesc::DOMCharacterData [pure virtual]
TEXT_NODE enum valuexercesc::DOMNode
TREE_POSITION_ANCESTOR enum valuexercesc::DOMNode
TREE_POSITION_DESCENDANT enum valuexercesc::DOMNode
TREE_POSITION_DISCONNECTED enum valuexercesc::DOMNode
TREE_POSITION_EQUIVALENT enum valuexercesc::DOMNode
TREE_POSITION_FOLLOWING enum valuexercesc::DOMNode
TREE_POSITION_PRECEDING enum valuexercesc::DOMNode
TREE_POSITION_SAME_NODE enum valuexercesc::DOMNode
~DOMCharacterData()xercesc::DOMCharacterData [inline, virtual]
~DOMNode()xercesc::DOMNode [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMCharacterData.html b/docs/dom3-api/classxercesc_1_1DOMCharacterData.html new file mode 100644 index 00000000..15694f5b --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMCharacterData.html @@ -0,0 +1,532 @@ + + +XQilla DOM Level 3 API: xercesc::DOMCharacterData Class Reference + + + + + + + +

xercesc::DOMCharacterData Class Reference

The DOMCharacterData interface extends DOMNode with a set of attributes and methods for accessing character data in the DOM. +More... +

+#include <DOMCharacterData.hpp> +

+Inheritance diagram for xercesc::DOMCharacterData:

Inheritance graph
+ + + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMCharacterData ()
 Destructor.
Functions introduced in DOM Level 1
virtual const XMLCh * getData () const =0
 Returns the character data of the node that implements this interface.
virtual XMLSize_t getLength () const =0
 Returns the number of characters that are available through data and the substringData method below.
virtual const XMLCh * substringData (XMLSize_t offset, XMLSize_t count) const =0
 Extracts a range of data from the node.
virtual void appendData (const XMLCh *arg)=0
 Append the string to the end of the character data of the node.
virtual void insertData (XMLSize_t offset, const XMLCh *arg)=0
 Insert a string at the specified character offset.
virtual void deleteData (XMLSize_t offset, XMLSize_t count)=0
 Remove a range of characters from the node.
virtual void replaceData (XMLSize_t offset, XMLSize_t count, const XMLCh *arg)=0
 Replace the characters starting at the specified character offset with the specified string.
virtual void setData (const XMLCh *data)=0
 Sets the character data of the node that implements this interface.

Protected Member Functions

Hidden constructors
 DOMCharacterData ()
 DOMCharacterData (const DOMCharacterData &other)
+

Detailed Description

+The DOMCharacterData interface extends DOMNode with a set of attributes and methods for accessing character data in the DOM. +

+For clarity this set is defined here rather than on each object that uses these attributes and methods. No DOM objects correspond directly to DOMCharacterData, though DOMText and others do inherit the interface from it. All offsets in this interface start from 0.

+As explained in the DOM spec, text strings in the DOM are represented in UTF-16, i.e. as a sequence of 16-bit units. In the following, the term 16-bit units is used whenever necessary to indicate that indexing on DOMCharacterData is done in 16-bit units.

+See also the Document Object Model (DOM) Level 2 Core Specification.

Since:
DOM Level 1
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMCharacterData::DOMCharacterData  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
xercesc::DOMCharacterData::DOMCharacterData const DOMCharacterData other  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMCharacterData::~DOMCharacterData  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMCharacterData::appendData const XMLCh *  arg  )  [pure virtual]
+
+ + + + + +
+   + + +

+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 XMLCh* String specified.

Parameters:
+ + +
arg The XMLCh* String to append.
+
+
Exceptions:
+ + +
DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void xercesc::DOMCharacterData::deleteData XMLSize_t  offset,
XMLSize_t  count
[pure virtual]
+
+ + + + + +
+   + + +

+Remove a range of characters from the node. +

+Upon success, data and length reflect the change.

Parameters:
+ + + +
offset The offset from which to remove characters.
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.
+
+
Exceptions:
+ + +
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.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMCharacterData::getData  )  const [pure virtual]
+
+ + + + + +
+   + + +

+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 DOMCharacterData node. However, implementation limits may mean that the entirety of a node's data may not fit into a single XMLCh* String. In such cases, the user may call substringData to retrieve the data in appropriately sized pieces.

Exceptions:
+ + +
DOMException NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual XMLSize_t xercesc::DOMCharacterData::getLength  )  const [pure virtual]
+
+ + + + + +
+   + + +

+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.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void xercesc::DOMCharacterData::insertData XMLSize_t  offset,
const XMLCh *  arg
[pure virtual]
+
+ + + + + +
+   + + +

+Insert a string at the specified character offset. +

+

Parameters:
+ + + +
offset The character offset at which to insert.
arg The XMLCh* String to insert.
+
+
Exceptions:
+ + +
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.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void xercesc::DOMCharacterData::replaceData XMLSize_t  offset,
XMLSize_t  count,
const XMLCh *  arg
[pure virtual]
+
+ + + + + +
+   + + +

+Replace the characters starting at the specified character offset with the specified string. +

+

Parameters:
+ + + + +
offset The offset from which to start replacing.
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).
arg The XMLCh* String with which the range must be replaced.
+
+
Exceptions:
+ + +
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.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMCharacterData::setData const XMLCh *  data  )  [pure virtual]
+
+ + + + + +
+   + + +

+Sets the character data of the node that implements this interface. +

+

Parameters:
+ + +
data The XMLCh* String to set.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual const XMLCh* xercesc::DOMCharacterData::substringData XMLSize_t  offset,
XMLSize_t  count
const [pure virtual]
+
+ + + + + +
+   + + +

+Extracts a range of data from the node. +

+

Parameters:
+ + + +
offset Start offset of substring to extract.
count The number of characters to extract.
+
+
Returns:
The specified substring. If the sum of offset and count exceeds the length, then all characters to the end of the data are returned.
+
Exceptions:
+ + +
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.
+
+
Since:
DOM Level 1
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMCharacterData__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMCharacterData__inherit__graph.map new file mode 100644 index 00000000..56291ca0 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMCharacterData__inherit__graph.map @@ -0,0 +1,5 @@ +base referer +rect $classxercesc_1_1DOMComment.html 8,158 173,182 +rect $classxercesc_1_1DOMText.html 197,158 328,182 +rect $classxercesc_1_1DOMNode.html 106,9 245,33 +rect $classxercesc_1_1DOMCDATASection.html 165,233 360,257 diff --git a/docs/dom3-api/classxercesc_1_1DOMCharacterData__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMCharacterData__inherit__graph.md5 new file mode 100644 index 00000000..cc80f852 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMCharacterData__inherit__graph.md5 @@ -0,0 +1 @@ +d9ea7e69f320a53d68bb72e010a645c2 \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMCharacterData__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMCharacterData__inherit__graph.png new file mode 100644 index 00000000..63082c71 Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMCharacterData__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMComment-members.html b/docs/dom3-api/classxercesc_1_1DOMComment-members.html new file mode 100644 index 00000000..fd014840 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMComment-members.html @@ -0,0 +1,102 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMComment Member List

This is the complete list of members for xercesc::DOMComment, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
appendChild(DOMNode *newChild)=0xercesc::DOMNode [pure virtual]
appendData(const XMLCh *arg)=0xercesc::DOMCharacterData [pure virtual]
ATTRIBUTE_NODE enum valuexercesc::DOMNode
CDATA_SECTION_NODE enum valuexercesc::DOMNode
cloneNode(bool deep) const =0xercesc::DOMNode [pure virtual]
COMMENT_NODE enum valuexercesc::DOMNode
compareTreePosition(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
deleteData(XMLSize_t offset, XMLSize_t count)=0xercesc::DOMCharacterData [pure virtual]
DOCUMENT_FRAGMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_TYPE_NODE enum valuexercesc::DOMNode
DOMCharacterData()xercesc::DOMCharacterData [inline, protected]
DOMCharacterData(const DOMCharacterData &other)xercesc::DOMCharacterData [inline, protected]
DOMComment()xercesc::DOMComment [inline, protected]
DOMNode()xercesc::DOMNode [inline, protected]
DOMNode(const DOMNode &)xercesc::DOMNode [inline, protected]
DOMTreePosition enum namexercesc::DOMNode
ELEMENT_NODE enum valuexercesc::DOMNode
ENTITY_NODE enum valuexercesc::DOMNode
ENTITY_REFERENCE_NODE enum valuexercesc::DOMNode
getAttributes() const =0xercesc::DOMNode [pure virtual]
getBaseURI() const =0xercesc::DOMNode [pure virtual]
getChildNodes() const =0xercesc::DOMNode [pure virtual]
getData() const =0xercesc::DOMCharacterData [pure virtual]
getFirstChild() const =0xercesc::DOMNode [pure virtual]
getInterface(const XMLCh *feature)=0xercesc::DOMNode [pure virtual]
getLastChild() const =0xercesc::DOMNode [pure virtual]
getLength() const =0xercesc::DOMCharacterData [pure virtual]
getLocalName() const =0xercesc::DOMNode [pure virtual]
getNamespaceURI() const =0xercesc::DOMNode [pure virtual]
getNextSibling() const =0xercesc::DOMNode [pure virtual]
getNodeName() const =0xercesc::DOMNode [pure virtual]
getNodeType() const =0xercesc::DOMNode [pure virtual]
getNodeValue() const =0xercesc::DOMNode [pure virtual]
getOwnerDocument() const =0xercesc::DOMNode [pure virtual]
getParentNode() const =0xercesc::DOMNode [pure virtual]
getPrefix() const =0xercesc::DOMNode [pure virtual]
getPreviousSibling() const =0xercesc::DOMNode [pure virtual]
getTextContent() const =0xercesc::DOMNode [pure virtual]
getUserData(const XMLCh *key) const =0xercesc::DOMNode [pure virtual]
hasAttributes() const =0xercesc::DOMNode [pure virtual]
hasChildNodes() const =0xercesc::DOMNode [pure virtual]
insertBefore(DOMNode *newChild, DOMNode *refChild)=0xercesc::DOMNode [pure virtual]
insertData(XMLSize_t offset, const XMLCh *arg)=0xercesc::DOMCharacterData [pure virtual]
isDefaultNamespace(const XMLCh *namespaceURI) const =0xercesc::DOMNode [pure virtual]
isEqualNode(const DOMNode *arg) const =0xercesc::DOMNode [pure virtual]
isSameNode(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
isSupported(const XMLCh *feature, const XMLCh *version) const =0xercesc::DOMNode [pure virtual]
lookupNamespacePrefix(const XMLCh *namespaceURI, bool useDefault) const =0xercesc::DOMNode [pure virtual]
lookupNamespaceURI(const XMLCh *prefix) const =0xercesc::DOMNode [pure virtual]
NodeType enum namexercesc::DOMNode
normalize()=0xercesc::DOMNode [pure virtual]
NOTATION_NODE enum valuexercesc::DOMNode
PROCESSING_INSTRUCTION_NODE enum valuexercesc::DOMNode
release()=0xercesc::DOMNode [pure virtual]
removeChild(DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
replaceChild(DOMNode *newChild, DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
replaceData(XMLSize_t offset, XMLSize_t count, const XMLCh *arg)=0xercesc::DOMCharacterData [pure virtual]
setData(const XMLCh *data)=0xercesc::DOMCharacterData [pure virtual]
setNodeValue(const XMLCh *nodeValue)=0xercesc::DOMNode [pure virtual]
setPrefix(const XMLCh *prefix)=0xercesc::DOMNode [pure virtual]
setTextContent(const XMLCh *textContent)=0xercesc::DOMNode [pure virtual]
setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0xercesc::DOMNode [pure virtual]
substringData(XMLSize_t offset, XMLSize_t count) const =0xercesc::DOMCharacterData [pure virtual]
TEXT_NODE enum valuexercesc::DOMNode
TREE_POSITION_ANCESTOR enum valuexercesc::DOMNode
TREE_POSITION_DESCENDANT enum valuexercesc::DOMNode
TREE_POSITION_DISCONNECTED enum valuexercesc::DOMNode
TREE_POSITION_EQUIVALENT enum valuexercesc::DOMNode
TREE_POSITION_FOLLOWING enum valuexercesc::DOMNode
TREE_POSITION_PRECEDING enum valuexercesc::DOMNode
TREE_POSITION_SAME_NODE enum valuexercesc::DOMNode
~DOMCharacterData()xercesc::DOMCharacterData [inline, virtual]
~DOMComment()xercesc::DOMComment [inline, virtual]
~DOMNode()xercesc::DOMNode [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMComment.html b/docs/dom3-api/classxercesc_1_1DOMComment.html new file mode 100644 index 00000000..57c292b8 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMComment.html @@ -0,0 +1,116 @@ + + +XQilla DOM Level 3 API: xercesc::DOMComment Class Reference + + + + + + + +

xercesc::DOMComment Class Reference

This interface inherits from CharacterData and represents the content of a comment, i.e., all the characters between the starting ' <!--' and ending '-->'. +More... +

+#include <DOMComment.hpp> +

+Inheritance diagram for xercesc::DOMComment:

Inheritance graph
+ + + + +
[legend]
List of all members. + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMComment ()
 Destructor.

Protected Member Functions

Hidden constructors
 DOMComment ()
+

Detailed Description

+This interface inherits from CharacterData and represents the content of a comment, i.e., all the characters between the starting ' <!--' and ending '-->'. +

+See also the Document Object Model (DOM) Level 2 Core Specification.

+

Since:
DOM Level 1
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMComment::DOMComment  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMComment::~DOMComment  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMComment__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMComment__inherit__graph.map new file mode 100644 index 00000000..35a56867 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMComment__inherit__graph.map @@ -0,0 +1,3 @@ +base referer +rect $classxercesc_1_1DOMCharacterData.html 8,84 202,108 +rect $classxercesc_1_1DOMNode.html 36,9 174,33 diff --git a/docs/dom3-api/classxercesc_1_1DOMComment__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMComment__inherit__graph.md5 new file mode 100644 index 00000000..c880a21b --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMComment__inherit__graph.md5 @@ -0,0 +1 @@ +753b59ec15870a77e672eb776779bb2a \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMComment__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMComment__inherit__graph.png new file mode 100644 index 00000000..5a64ec33 Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMComment__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMConfiguration-members.html b/docs/dom3-api/classxercesc_1_1DOMConfiguration-members.html new file mode 100644 index 00000000..37147633 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMConfiguration-members.html @@ -0,0 +1,32 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMConfiguration Member List

This is the complete list of members for xercesc::DOMConfiguration, including all inherited members.

+ + + + + +
canSetParameter(const XMLCh *name, const void *value) const =0xercesc::DOMConfiguration [pure virtual]
DOMConfiguration()xercesc::DOMConfiguration [inline, protected]
getParameter(const XMLCh *name) const =0xercesc::DOMConfiguration [pure virtual]
setParameter(const XMLCh *name, const void *value)=0xercesc::DOMConfiguration [pure virtual]
~DOMConfiguration()xercesc::DOMConfiguration [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMConfiguration.html b/docs/dom3-api/classxercesc_1_1DOMConfiguration.html new file mode 100644 index 00000000..2dd0bcd9 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMConfiguration.html @@ -0,0 +1,325 @@ + + +XQilla DOM Level 3 API: xercesc::DOMConfiguration Class Reference + + + + + + + +

xercesc::DOMConfiguration Class Reference

The DOMConfiguration interface represents the configuration of a document and maintains a table of recognized parameters. +More... +

+#include <DOMConfiguration.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual void setParameter (const XMLCh *name, const void *value)=0
 Set the value of a parameter.
virtual const void * getParameter (const XMLCh *name) const =0
 Return the value of a parameter if known.
virtual bool canSetParameter (const XMLCh *name, const void *value) const =0
 Check if setting a parameter to a specific value is supported.
Destructor
virtual ~DOMConfiguration ()
 Destructor.

Protected Member Functions

Hidden constructors
 DOMConfiguration ()
+


Detailed Description

+The DOMConfiguration interface represents the configuration of a document and maintains a table of recognized parameters. +

+using the configuration, it is possible to change Document.normalizeDocument behavior, such as replacing CDATASection nodes with Text nodes or specifying the type of the schema that must be used when the validation of the Document is requested. DOMConfiguration objects are also used in [DOM Level 3 Load and Save] in the DOMBuilder and DOMWriter interfaces.

+The DOMConfiguration distinguish two types of parameters: boolean (boolean parameters) and DOMUserData (parameters). The names used by the DOMConfiguration object are defined throughout the DOM Level 3 specifications. Names are case-insensitives. To avoid possible conflicts, as a convention, names referring to boolean parameters and parameters defined outside the DOM specification should be made unique. Names are recommended to follow the XML name production rule but it is not enforced by the DOM implementation. DOM Level 3 Core Implementations are required to recognize all boolean parameters and parameters defined in this specification. Each boolean parameter state or parameter value may then be supported or not by the implementation. Refer to their definition to know if a state or a value must be supported or not.

+Note: Parameters are similar to features and properties used in SAX2 [SAX].

+Issue DOMConfiguration-1: Can we rename boolean parameters to "flags"?

+Issue DOMConfiguration-2: Are boolean parameters and parameters within the same scope for uniqueness? Which exception should be raised by setBooleanParameter("error-handler", true)?

+The following list of parameters defined in the DOM:

+"error-handler" [required] A DOMErrorHandler object. If an error is encountered in the document, the implementation will call back the DOMErrorHandler registered using this parameter. When called, DOMError.relatedData will contain the closest node to where the error occured. If the implementation is unable to determine the node where the error occurs, DOMError.relatedData will contain the Document node. Mutations to the document from within an error handler will result in implementation dependent behaviour.

+Issue DOMConfiguration-4: Should we say non "readonly" operations are implementation dependent instead? Resolution: Removed: "or re-invoking a validation operation".

+"schema-type" [optional] A DOMString object containing an absolute URI and representing the type of the schema language used to validate a document against. Note that no lexical checking is done on the absolute URI. If this parameter is not set, a default value may be provided by the implementation, based on the schema languages supported and on the schema language used at load time.

+Note: For XML Schema [XML Schema Part 1], applications must use the value "http://www.w3.org/2001/XMLSchema". For XML DTD [XML 1.0], applications must use the value "http://www.w3.org/TR/REC-xml". Other schema languages are outside the scope of the W3C and therefore should recommend an absolute URI in order to use this method.

+"schema-location" [optional] A DOMString object containing a list of URIs, separated by white spaces (characters matching the nonterminal production S defined in section 2.3 [XML 1.0]), that represents the schemas against which validation should occur. The types of schemas referenced in this list must match the type specified with schema-type, otherwise the behaviour of an implementation is undefined. If the schema type is XML Schema [XML Schema Part 1], only one of the XML Schemas in the list can be with no namespace. If validation occurs against a namespace aware schema, i.e. XML Schema, and the targetNamespace of a schema (specified using this property) matches the targetNamespace of a schema occurring in the instance document, i.e in schemaLocation attribute, the schema specified by the user using this property will be used (i.e., in XML Schema the schemaLocation attribute in the instance document or on the import element will be effectively ignored).

+Note: It is illegal to set the schema-location parameter if the schema-type parameter value is not set. It is strongly recommended that DOMInputSource.baseURI will be set, so that an implementation can successfully resolve any external entities referenced.

+The following list of boolean parameters (features) defined in the DOM:

+"canonical-form"

+true [optional] Canonicalize the document according to the rules specified in [Canonical XML]. Note that this is limited to what can be represented in the DOM. In particular, there is no way to specify the order of the attributes in the DOM.

+Issue normalizationFeature-14: What happen to other features? are they ignored? if yes, how do you know if a feature is ignored?

+false [required] (default) Do not canonicalize the document.

+"cdata-sections"

+true [required] (default) Keep CDATASection nodes in the document.

+Issue normalizationFeature-11: Name does not work really well in this case. ALH suggests renaming this to "cdata-sections". It works for both load and save. Resolution: Renamed as suggested. (Telcon 27 Jan 2002).

+false [required] Transform CDATASection nodes in the document into Text nodes. The new Text node is then combined with any adjacent Text node.

+"comments"

+true [required] (default) Keep Comment nodes in the document.

+false [required] Discard Comment nodes in the Document.

+"datatype-normalization"

+true [required] Exposed normalized values in the tree.

+Issue normalizationFeature-8: We should define "datatype normalization". Resolution: DTD normalization always apply because it's part of XML 1.0. Clarify the spec. (Telcon 27 Jan 2002).

+false [required] (default) Do not perform normalization on the tree.

+"discard-default-content"

+true [required] (default) Use whatever information available to the implementation (i.e. XML schema, DTD, the specified flag on Attr nodes, and so on) to decide what attributes and content should be discarded or not. Note that the specified flag on Attr nodes in itself is not always reliable, it is only reliable when it is set to false since the only case where it can be set to false is if the attribute was created by the implementation. The default content won't be removed if an implementation does not have any information available.

+Issue normalizationFeature-2: How does exactly work? What's the comment about level 1 implementations? Resolution: Remove "Level 1" (Telcon 16 Jan 2002).

+false [required] Keep all attributes and all content.

+"entities"

+true [required] Keep EntityReference and Entity nodes in the document.

+Issue normalizationFeature-9: How does that interact with expand-entity-references? ALH suggests consolidating the two to a single feature called "entity-references" that is used both for load and save. Resolution: Consolidate both features into a single feature called 'entities'. (Telcon 27 Jan 2002).

+false [required] (default) Remove all EntityReference and Entity nodes from the document, putting the entity expansions directly in their place. Text nodes are into "normal" form. Only EntityReference nodes to non-defined entities are kept in the document.

+"infoset"

+true [required] Only keep in the document the information defined in the XML Information Set [XML Information set]. This forces the following features to false: namespace-declarations, validate-if-schema, entities, datatype-normalization, cdata-sections. This forces the following features to true: whitespace-in-element-content, comments, namespaces. Other features are not changed unless explicity specified in the description of the features. Note that querying this feature with getFeature returns true only if the individual features specified above are appropriately set.

+Issue normalizationFeature-12: Name doesn't work well here. ALH suggests renaming this to limit-to-infoset or match-infoset, something like that. Resolution: Renamed 'infoset' (Telcon 27 Jan 2002).

+false Setting infoset to false has no effect.

+Issue normalizationFeature-13: Shouldn't we change this to setting the relevant options back to their default value? Resolution: No, this is more like a convenience function, it's better to keep it simple. (F2F 28 Feb 2002).

+"namespaces"

+true [required] (default) Perform the namespace processing as defined in [XML Namespaces].

+false [optional] Do not perform the namespace processing.

+"namespace-declarations"

+true [required] (default) Include namespace declaration attributes, specified or defaulted from the schema or the DTD, in the document. See also the section Declaring Namespaces in [XML Namespaces].

+false [required] Discard all namespace declaration attributes. The Namespace prefixes are retained even if this feature is set to false.

+"normalize-characters"

+true [optional] Perform the W3C Text Normalization of the characters [CharModel] in the document.

+false [required] (default) Do not perform character normalization.

+"split-cdata-sections"

+true [required] (default) Split CDATA sections containing the CDATA section termination marker ']]>'. When a CDATA section is split a warning is issued.

+false [required] Signal an error if a CDATASection contains an unrepresentable character.

+"validate"

+true [optional] Require the validation against a schema (i.e. XML schema, DTD, any other type or representation of schema) of the document as it is being normalized as defined by [XML 1.0]. If validation errors are found, or no schema was found, the error handler is notified. Note also that normalized values will not be exposed to the schema in used unless the feature datatype-normalization is true.

+Note: validate-if-schema and validate are mutually exclusive, setting one of them to true will set the other one to false.

+false [required] (default) Only XML 1.0 non-validating processing must be done. Note that validation might still happen if validate-if-schema is true.

+"validate-if-schema"

+true [optional] Enable validation only if a declaration for the document element can be found (independently of where it is found, i.e. XML schema, DTD, or any other type or representation of schema). If validation errors are found, the error handler is notified. Note also that normalized values will not be exposed to the schema in used unless the feature datatype-normalization is true.

+Note: validate-if-schema and validate are mutually exclusive, setting one of them to true will set the other one to false.

+false [required] (default) No validation should be performed if the document has a schema. Note that validation must still happen if validate is true.

+"whitespace-in-element-content"

+true [required] (default) Keep all white spaces in the document.

+Issue normalizationFeature-15: How does this feature interact with "validate" and Text.isWhitespaceInElementContent. Resolution: issue no longer relevant (f2f october 2002).

+false [optional] Discard white space in element content while normalizing. The implementation is expected to use the isWhitespaceInElementContent flag on Text nodes to determine if a text node should be written out or not.

+The resolutions of entities is done using Document.baseURI. However, when the features "LS-Load" or "LS-Save" defined in [DOM Level 3 Load and Save] are supported by the DOM implementation, the parameter "entity-resolver" can also be used on DOMConfiguration objects attached to Document nodes. If this parameter is set, Document.normalizeDocument will invoke the entity resolver instead of using Document.baseURI. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMConfiguration::DOMConfiguration  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMConfiguration::~DOMConfiguration  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool xercesc::DOMConfiguration::canSetParameter const XMLCh *  name,
const void *  value
const [pure virtual]
+
+ + + + + +
+   + + +

+Check if setting a parameter to a specific value is supported. +

+

Parameters:
+ + + +
name The name of the parameter to check.
value An object. if null, the returned value is true.
+
+
Returns:
true if the parameter could be successfully set to the specified value, or false if the parameter is not recognized or the requested value is not supported. This does not change the current value of the parameter itself.
+
Since:
DOM level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual const void* xercesc::DOMConfiguration::getParameter const XMLCh *  name  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Return the value of a parameter if known. +

+

Parameters:
+ + +
name The name of the parameter.
+
+
Returns:
The current object associated with the specified parameter or null if no object has been associated or if the parameter is not supported.
+
Exceptions:
+ + +
DOMException (NOT_FOUND_ERR) Raised when the i boolean parameter name is not recognized.
+
+
Since:
DOM level 3
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void xercesc::DOMConfiguration::setParameter const XMLCh *  name,
const void *  value
[pure virtual]
+
+ + + + + +
+   + + +

+Set the value of a parameter. +

+

Parameters:
+ + + +
name The name of the parameter to set.
value The new value or null if the user wishes to unset the parameter. While the type of the value parameter is defined as DOMUserData, the object type must match the type defined by the definition of the parameter. For example, if the parameter is "error-handler", the value must be of type DOMErrorHandler
+
+
Exceptions:
+ + + +
DOMException (NOT_SUPPORTED_ERR) Raised when the parameter name is recognized but the requested value cannot be set.
DOMException (NOT_FOUND_ERR) Raised when the parameter name is not recognized.
+
+
Since:
DOM level 3
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMDocument-members.html b/docs/dom3-api/classxercesc_1_1DOMDocument-members.html new file mode 100644 index 00000000..21ae2290 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMDocument-members.html @@ -0,0 +1,141 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMDocument Member List

This is the complete list of members for xercesc::DOMDocument, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
adoptNode(DOMNode *source)=0xercesc::DOMDocument [pure virtual]
appendChild(DOMNode *newChild)=0xercesc::DOMNode [pure virtual]
ATTRIBUTE_NODE enum valuexercesc::DOMNode
CDATA_SECTION_NODE enum valuexercesc::DOMNode
cloneNode(bool deep) const =0xercesc::DOMNode [pure virtual]
COMMENT_NODE enum valuexercesc::DOMNode
compareTreePosition(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
createAttribute(const XMLCh *name)=0xercesc::DOMDocument [pure virtual]
createAttributeNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName)=0xercesc::DOMDocument [pure virtual]
createCDATASection(const XMLCh *data)=0xercesc::DOMDocument [pure virtual]
createComment(const XMLCh *data)=0xercesc::DOMDocument [pure virtual]
createDocumentFragment()=0xercesc::DOMDocument [pure virtual]
createDocumentType(const XMLCh *name)=0xercesc::DOMDocument [pure virtual]
createDocumentType(const XMLCh *qName, const XMLCh *, const XMLCh *)xercesc::DOMDocument [inline, virtual]
createElement(const XMLCh *tagName)=0xercesc::DOMDocument [pure virtual]
createElementNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName)=0xercesc::DOMDocument [pure virtual]
createElementNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName, const XMLSSize_t lineNum, const XMLSSize_t columnNum)=0xercesc::DOMDocument [pure virtual]
createEntity(const XMLCh *name)=0xercesc::DOMDocument [pure virtual]
createEntityReference(const XMLCh *name)=0xercesc::DOMDocument [pure virtual]
createExpression(const XMLCh *expression, const DOMXPathNSResolver *resolver)=0xercesc::DOMXPathEvaluator [pure virtual]
createNodeIterator(DOMNode *root, unsigned long whatToShow, DOMNodeFilter *filter, bool entityReferenceExpansion)=0xercesc::DOMDocumentTraversal [pure virtual]
createNotation(const XMLCh *name)=0xercesc::DOMDocument [pure virtual]
createNSResolver(DOMNode *nodeResolver)=0xercesc::DOMXPathEvaluator [pure virtual]
createProcessingInstruction(const XMLCh *target, const XMLCh *data)=0xercesc::DOMDocument [pure virtual]
createRange()=0xercesc::DOMDocumentRange [pure virtual]
createTextNode(const XMLCh *data)=0xercesc::DOMDocument [pure virtual]
createTreeWalker(DOMNode *root, unsigned long whatToShow, DOMNodeFilter *filter, bool entityReferenceExpansion)=0xercesc::DOMDocumentTraversal [pure virtual]
DOCUMENT_FRAGMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_TYPE_NODE enum valuexercesc::DOMNode
DOMDocument()xercesc::DOMDocument [inline, protected]
DOMDocumentRange()xercesc::DOMDocumentRange [inline, protected]
DOMDocumentTraversal()xercesc::DOMDocumentTraversal [inline, protected]
DOMNode()xercesc::DOMNode [inline, protected]
DOMNode(const DOMNode &)xercesc::DOMNode [inline, protected]
DOMTreePosition enum namexercesc::DOMNode
DOMXPathEvaluator()xercesc::DOMXPathEvaluator [inline, protected]
ELEMENT_NODE enum valuexercesc::DOMNode
ENTITY_NODE enum valuexercesc::DOMNode
ENTITY_REFERENCE_NODE enum valuexercesc::DOMNode
evaluate(const XMLCh *expression, DOMNode *contextNode, const DOMXPathNSResolver *resolver, unsigned short type, void *result)=0xercesc::DOMXPathEvaluator [pure virtual]
getActualEncoding() const =0xercesc::DOMDocument [pure virtual]
getAttributes() const =0xercesc::DOMNode [pure virtual]
getBaseURI() const =0xercesc::DOMNode [pure virtual]
getChildNodes() const =0xercesc::DOMNode [pure virtual]
getDoctype() const =0xercesc::DOMDocument [pure virtual]
getDocumentElement() const =0xercesc::DOMDocument [pure virtual]
getDocumentURI() const =0xercesc::DOMDocument [pure virtual]
getDOMConfiguration() const =0xercesc::DOMDocument [pure virtual]
getElementById(const XMLCh *elementId) const =0xercesc::DOMDocument [pure virtual]
getElementsByTagName(const XMLCh *tagname) const =0xercesc::DOMDocument [pure virtual]
getElementsByTagNameNS(const XMLCh *namespaceURI, const XMLCh *localName) const =0xercesc::DOMDocument [pure virtual]
getEncoding() const =0xercesc::DOMDocument [pure virtual]
getFirstChild() const =0xercesc::DOMNode [pure virtual]
getImplementation() const =0xercesc::DOMDocument [pure virtual]
getInterface(const XMLCh *feature)=0xercesc::DOMNode [pure virtual]
getLastChild() const =0xercesc::DOMNode [pure virtual]
getLocalName() const =0xercesc::DOMNode [pure virtual]
getNamespaceURI() const =0xercesc::DOMNode [pure virtual]
getNextSibling() const =0xercesc::DOMNode [pure virtual]
getNodeName() const =0xercesc::DOMNode [pure virtual]
getNodeType() const =0xercesc::DOMNode [pure virtual]
getNodeValue() const =0xercesc::DOMNode [pure virtual]
getOwnerDocument() const =0xercesc::DOMNode [pure virtual]
getParentNode() const =0xercesc::DOMNode [pure virtual]
getPrefix() const =0xercesc::DOMNode [pure virtual]
getPreviousSibling() const =0xercesc::DOMNode [pure virtual]
getStandalone() const =0xercesc::DOMDocument [pure virtual]
getStrictErrorChecking() const =0xercesc::DOMDocument [pure virtual]
getTextContent() const =0xercesc::DOMNode [pure virtual]
getUserData(const XMLCh *key) const =0xercesc::DOMNode [pure virtual]
getVersion() const =0xercesc::DOMDocument [pure virtual]
hasAttributes() const =0xercesc::DOMNode [pure virtual]
hasChildNodes() const =0xercesc::DOMNode [pure virtual]
importNode(DOMNode *importedNode, bool deep)=0xercesc::DOMDocument [pure virtual]
insertBefore(DOMNode *newChild, DOMNode *refChild)=0xercesc::DOMNode [pure virtual]
isDefaultNamespace(const XMLCh *namespaceURI) const =0xercesc::DOMNode [pure virtual]
isEqualNode(const DOMNode *arg) const =0xercesc::DOMNode [pure virtual]
isSameNode(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
isSupported(const XMLCh *feature, const XMLCh *version) const =0xercesc::DOMNode [pure virtual]
lookupNamespacePrefix(const XMLCh *namespaceURI, bool useDefault) const =0xercesc::DOMNode [pure virtual]
lookupNamespaceURI(const XMLCh *prefix) const =0xercesc::DOMNode [pure virtual]
NodeType enum namexercesc::DOMNode
normalize()=0xercesc::DOMNode [pure virtual]
normalizeDocument()=0xercesc::DOMDocument [pure virtual]
NOTATION_NODE enum valuexercesc::DOMNode
PROCESSING_INSTRUCTION_NODE enum valuexercesc::DOMNode
release()=0xercesc::DOMNode [pure virtual]
removeChild(DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
renameNode(DOMNode *n, const XMLCh *namespaceURI, const XMLCh *name)=0xercesc::DOMDocument [pure virtual]
replaceChild(DOMNode *newChild, DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
setActualEncoding(const XMLCh *actualEncoding)=0xercesc::DOMDocument [pure virtual]
setDocumentURI(const XMLCh *documentURI)=0xercesc::DOMDocument [pure virtual]
setEncoding(const XMLCh *encoding)=0xercesc::DOMDocument [pure virtual]
setNodeValue(const XMLCh *nodeValue)=0xercesc::DOMNode [pure virtual]
setPrefix(const XMLCh *prefix)=0xercesc::DOMNode [pure virtual]
setStandalone(bool standalone)=0xercesc::DOMDocument [pure virtual]
setStrictErrorChecking(bool strictErrorChecking)=0xercesc::DOMDocument [pure virtual]
setTextContent(const XMLCh *textContent)=0xercesc::DOMNode [pure virtual]
setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0xercesc::DOMNode [pure virtual]
setVersion(const XMLCh *version)=0xercesc::DOMDocument [pure virtual]
TEXT_NODE enum valuexercesc::DOMNode
TREE_POSITION_ANCESTOR enum valuexercesc::DOMNode
TREE_POSITION_DESCENDANT enum valuexercesc::DOMNode
TREE_POSITION_DISCONNECTED enum valuexercesc::DOMNode
TREE_POSITION_EQUIVALENT enum valuexercesc::DOMNode
TREE_POSITION_FOLLOWING enum valuexercesc::DOMNode
TREE_POSITION_PRECEDING enum valuexercesc::DOMNode
TREE_POSITION_SAME_NODE enum valuexercesc::DOMNode
~DOMDocument()xercesc::DOMDocument [inline, virtual]
~DOMDocumentRange()xercesc::DOMDocumentRange [inline, virtual]
~DOMDocumentTraversal()xercesc::DOMDocumentTraversal [inline, virtual]
~DOMNode()xercesc::DOMNode [inline, virtual]
~DOMXPathEvaluator()xercesc::DOMXPathEvaluator [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMDocument.html b/docs/dom3-api/classxercesc_1_1DOMDocument.html new file mode 100644 index 00000000..bd9abca2 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMDocument.html @@ -0,0 +1,1776 @@ + + +XQilla DOM Level 3 API: xercesc::DOMDocument Class Reference + + + + + + + +

xercesc::DOMDocument Class Reference

The DOMDocument interface represents the entire XML document. +More... +

+#include <DOMDocument.hpp> +

+Inheritance diagram for xercesc::DOMDocument:

Inheritance graph
+ + + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMDocument ()
 Destructor.
Functions introduced in DOM Level 1
virtual DOMElementcreateElement (const XMLCh *tagName)=0
 Creates an element of the type specified.
virtual DOMDocumentFragmentcreateDocumentFragment ()=0
 Creates an empty DOMDocumentFragment object.
virtual DOMTextcreateTextNode (const XMLCh *data)=0
 Creates a DOMText node given the specified string.
virtual DOMCommentcreateComment (const XMLCh *data)=0
 Creates a DOMComment node given the specified string.
virtual DOMCDATASectioncreateCDATASection (const XMLCh *data)=0
 Creates a DOMCDATASection node whose value is the specified string.
virtual DOMProcessingInstructioncreateProcessingInstruction (const XMLCh *target, const XMLCh *data)=0
 Creates a DOMProcessingInstruction node given the specified name and data strings.
virtual DOMAttrcreateAttribute (const XMLCh *name)=0
 Creates an DOMAttr of the given name.
virtual DOMEntityReferencecreateEntityReference (const XMLCh *name)=0
 Creates an DOMEntityReference object.
virtual DOMDocumentTypegetDoctype () const =0
 The Document Type Declaration (see DOMDocumentType) associated with this document.
virtual DOMImplementationgetImplementation () const =0
 The DOMImplementation object that handles this document.
virtual DOMElementgetDocumentElement () const =0
 This is a convenience attribute that allows direct access to the child node that is the root element of the document.
virtual DOMNodeListgetElementsByTagName (const XMLCh *tagname) const =0
 Returns a DOMNodeList of all the DOMElement(s) with a given tag name in the order in which they are encountered in a preorder traversal of the DOMDocument tree.
Functions introduced in DOM Level 2.
virtual DOMNodeimportNode (DOMNode *importedNode, bool deep)=0
 Imports a node from another document to this document.
virtual DOMElementcreateElementNS (const XMLCh *namespaceURI, const XMLCh *qualifiedName)=0
 Creates an element of the given qualified name and namespace URI.
virtual DOMAttrcreateAttributeNS (const XMLCh *namespaceURI, const XMLCh *qualifiedName)=0
 Creates an attribute of the given qualified name and namespace URI.
virtual DOMNodeListgetElementsByTagNameNS (const XMLCh *namespaceURI, const XMLCh *localName) const =0
 Returns a DOMNodeList of all the DOMElement(s) with a given local name and namespace URI in the order in which they are encountered in a preorder traversal of the DOMDocument tree.
virtual DOMElementgetElementById (const XMLCh *elementId) const =0
 Returns the DOMElement whose ID is given by elementId.
Functions introduced in DOM Level 3.
virtual const XMLCh * getActualEncoding () const =0
 An attribute specifying the actual encoding of this document.
virtual void setActualEncoding (const XMLCh *actualEncoding)=0
 An attribute specifying the actual encoding of this document.
virtual const XMLCh * getEncoding () const =0
 An attribute specifying, as part of the XML declaration, the encoding of this document.
virtual void setEncoding (const XMLCh *encoding)=0
 An attribute specifying, as part of the XML declaration, the encoding of this document.
virtual bool getStandalone () const =0
 An attribute specifying, as part of the XML declaration, whether this document is standalone.
virtual void setStandalone (bool standalone)=0
 An attribute specifying, as part of the XML declaration, whether this document is standalone.
virtual const XMLCh * getVersion () const =0
 An attribute specifying, as part of the XML declaration, the version number of this document.
virtual void setVersion (const XMLCh *version)=0
 An attribute specifying, as part of the XML declaration, the version number of this document.
virtual const XMLCh * getDocumentURI () const =0
 The location of the document or null if undefined.
virtual void setDocumentURI (const XMLCh *documentURI)=0
 The location of the document or null if undefined.
virtual bool getStrictErrorChecking () const =0
 An attribute specifying whether errors checking is enforced or not.
virtual void setStrictErrorChecking (bool strictErrorChecking)=0
 An attribute specifying whether errors checking is enforced or not.
virtual DOMNoderenameNode (DOMNode *n, const XMLCh *namespaceURI, const XMLCh *name)=0
 Rename an existing node.
virtual DOMNodeadoptNode (DOMNode *source)=0
 Changes the ownerDocument of a node, its children, as well as the attached attribute nodes if there are any.
virtual void normalizeDocument ()=0
 This method acts as if the document was going through a save and load cycle, putting the document in a "normal" form.
virtual DOMConfigurationgetDOMConfiguration () const =0
 The configuration used when Document.normalizeDocument is invoked.
Non-standard extension
virtual DOMEntitycreateEntity (const XMLCh *name)=0
 Non-standard extension.
virtual DOMDocumentTypecreateDocumentType (const XMLCh *name)=0
 Non-standard extension.
virtual DOMDocumentTypecreateDocumentType (const XMLCh *qName, const XMLCh *, const XMLCh *)
virtual DOMNotationcreateNotation (const XMLCh *name)=0
 Non-standard extension.
virtual DOMElementcreateElementNS (const XMLCh *namespaceURI, const XMLCh *qualifiedName, const XMLSSize_t lineNum, const XMLSSize_t columnNum)=0
 Non-standard extension.

Protected Member Functions

Hidden constructors
 DOMDocument ()
+

Detailed Description

+The DOMDocument interface represents the entire XML document. +

+Conceptually, it is the root of the document tree, and provides the primary access to the document's data.

+Since elements, text nodes, comments, processing instructions, etc. cannot exist outside the context of a DOMDocument, the DOMDocument interface also contains the factory methods needed to create these objects. The DOMNode objects created have a ownerDocument attribute which associates them with the DOMDocument within whose context they were created.

+See also the Document Object Model (DOM) Level 2 Core Specification. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMDocument::DOMDocument  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMDocument::~DOMDocument  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual DOMNode* xercesc::DOMDocument::adoptNode DOMNode source  )  [pure virtual]
+
+ + + + + +
+   + + +

+Changes the ownerDocument of a node, its children, as well as the attached attribute nodes if there are any. +

+If the node has a parent it is first removed from its parent child list. This effectively allows moving a subtree from one document to another. The following list describes the specifics for each type of node.

+"Experimental - subject to change"

+

+
ATTRIBUTE_NODE
+
The ownerElement attribute is set to null and the specified flag is set to true on the adopted DOMAttr. The descendants of the source DOMAttr are recursively adopted.
+
DOCUMENT_FRAGMENT_NODE
+
The descendants of the source node are recursively adopted.
+
DOCUMENT_NODE
+
DOMDocument nodes cannot be adopted.
+
DOCUMENT_TYPE_NODE
+
DOMDocumentType nodes cannot be adopted.
+
ELEMENT_NODE
+
Specified attribute nodes of the source element are adopted, and the generated DOMAttr nodes. Default attributes are discarded, though if the document being adopted into defines default attributes for this element name, those are assigned. The descendants of the source element are recursively adopted.
+
ENTITY_NODE
+
DOMEntity nodes cannot be adopted.
+
ENTITY_REFERENCE_NODE
+
Only the DOMEntityReference node itself is adopted, the descendants are discarded, since the source and destination documents might have defined the entity differently. If the document being imported into provides a definition for this entity name, its value is assigned.
+
NOTATION_NODE
+
DOMNotation nodes cannot be adopted.
+
PROCESSING_INSTRUCTION_NODE, TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE
+
These nodes can all be adopted. No specifics.
+
+
Parameters:
+ + +
source The node to move into this document.
+
+
Returns:
The adopted node, or null if this operation fails, such as when the source node comes from a different implementation.
+
Exceptions:
+ + +
DOMException NOT_SUPPORTED_ERR: Raised if the source node is of type DOCUMENT, DOCUMENT_TYPE.
+NO_MODIFICATION_ALLOWED_ERR: Raised when the source node is readonly.
+
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMAttr* xercesc::DOMDocument::createAttribute const XMLCh *  name  )  [pure virtual]
+
+ + + + + +
+   + + +

+Creates an DOMAttr of the given name. +

+Note that the DOMAttr instance can then be set on an DOMElement using the setAttributeNode method.
+To create an attribute with a qualified name and namespace URI, use the createAttributeNS method.

Parameters:
+ + +
name The name of the attribute.
+
+
Returns:
A new DOMAttr object with the nodeName attribute set to name, and localName, prefix, and namespaceURI set to null. The value of the attribute is the empty string.
+
Exceptions:
+ + +
DOMException INVALID_CHARACTER_ERR: Raised if the specified name contains an illegal character.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual DOMAttr* xercesc::DOMDocument::createAttributeNS const XMLCh *  namespaceURI,
const XMLCh *  qualifiedName
[pure virtual]
+
+ + + + + +
+   + + +

+Creates an attribute of the given qualified name and namespace URI. +

+

Parameters:
+ + + +
namespaceURI The namespace URI of the attribute to create.
qualifiedName The qualified name of the attribute to instantiate.
+
+
Returns:
A new DOMAttr object with the following attributes: + + + + + + + + + + + + + + +
Attribute Value
DOMNode.nodeName qualifiedName
DOMNode.namespaceURI namespaceURI
DOMNode.prefix prefix, extracted from qualifiedName, or null if there is no prefix
DOMNode.localName local name, extracted from qualifiedName
DOMAttr.name qualifiedName
DOMNode.nodeValue the empty string
+
+
Exceptions:
+ + +
DOMException INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an illegal character, per the XML 1.0 specification .
+NAMESPACE_ERR: Raised if the qualifiedName is malformed per the Namespaces in XML specification, if the qualifiedName has a prefix and the namespaceURI is null, if the qualifiedName has a prefix that is "xml" and the namespaceURI is different from " http://www.w3.org/XML/1998/namespace", or if the qualifiedName, or its prefix, is "xmlns" and the namespaceURI is different from " http://www.w3.org/2000/xmlns/".
+NOT_SUPPORTED_ERR: Always thrown if the current document does not support the "XML" feature, since namespaces were defined by XML.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMCDATASection* xercesc::DOMDocument::createCDATASection const XMLCh *  data  )  [pure virtual]
+
+ + + + + +
+   + + +

+Creates a DOMCDATASection node whose value is the specified string. +

+

Parameters:
+ + +
data The data for the DOMCDATASection contents.
+
+
Returns:
The new DOMCDATASection object.
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMComment* xercesc::DOMDocument::createComment const XMLCh *  data  )  [pure virtual]
+
+ + + + + +
+   + + +

+Creates a DOMComment node given the specified string. +

+

Parameters:
+ + +
data The data for the node.
+
+
Returns:
The new DOMComment object.
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual DOMDocumentFragment* xercesc::DOMDocument::createDocumentFragment  )  [pure virtual]
+
+ + + + + +
+   + + +

+Creates an empty DOMDocumentFragment object. +

+

Returns:
A new DOMDocumentFragment.
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual DOMDocumentType* xercesc::DOMDocument::createDocumentType const XMLCh *  qName,
const XMLCh * ,
const XMLCh * 
[inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual DOMDocumentType* xercesc::DOMDocument::createDocumentType const XMLCh *  name  )  [pure virtual]
+
+ + + + + +
+   + + +

+Non-standard extension. +

+Create a DOMDocumentType node.

Returns:
A DOMDocumentType that references the newly created DOMDocumentType node.
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMElement* xercesc::DOMDocument::createElement const XMLCh *  tagName  )  [pure virtual]
+
+ + + + + +
+   + + +

+Creates an element of the type specified. +

+Note that the instance returned implements the DOMElement interface, so attributes can be specified directly on the returned object.
+In addition, if there are known attributes with default values, DOMAttr nodes representing them are automatically created and attached to the element.
+To create an element with a qualified name and namespace URI, use the createElementNS method.

Parameters:
+ + +
tagName The name of the element type to instantiate. For XML, this is case-sensitive.
+
+
Returns:
A new DOMElement object with the nodeName attribute set to tagName, and localName, prefix, and namespaceURI set to null.
+
Exceptions:
+ + +
DOMException INVALID_CHARACTER_ERR: Raised if the specified name contains an illegal character.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual DOMElement* xercesc::DOMDocument::createElementNS const XMLCh *  namespaceURI,
const XMLCh *  qualifiedName,
const XMLSSize_t  lineNum,
const XMLSSize_t  columnNum
[pure virtual]
+
+ + + + + +
+   + + +

+Non-standard extension. +

+Creates an element of the given qualified name and namespace URI, and also stores line/column number info. Used by internally XSDXercesDOMParser during schema traversal.

+

See also:
createElementNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName)
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual DOMElement* xercesc::DOMDocument::createElementNS const XMLCh *  namespaceURI,
const XMLCh *  qualifiedName
[pure virtual]
+
+ + + + + +
+   + + +

+Creates an element of the given qualified name and namespace URI. +

+

Parameters:
+ + + +
namespaceURI The namespace URI of the element to create.
qualifiedName The qualified name of the element type to instantiate.
+
+
Returns:
A new DOMElement object with the following attributes: + + + + + + + + + + + + +
Attribute Value
DOMNode.nodeName qualifiedName
DOMNode.namespaceURI namespaceURI
DOMNode.prefix prefix, extracted from qualifiedName, or null if there is no prefix
DOMNode.localName local name, extracted from qualifiedName
DOMElement.tagName qualifiedName
+
+
Exceptions:
+ + +
DOMException INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an illegal character, per the XML 1.0 specification .
+NAMESPACE_ERR: Raised if the qualifiedName is malformed per the Namespaces in XML specification, if the qualifiedName has a prefix and the namespaceURI is null, or if the qualifiedName has a prefix that is "xml" and the namespaceURI is different from " http://www.w3.org/XML/1998/namespace" .
+NOT_SUPPORTED_ERR: Always thrown if the current document does not support the "XML" feature, since namespaces were defined by XML.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMEntity* xercesc::DOMDocument::createEntity const XMLCh *  name  )  [pure virtual]
+
+ + + + + +
+   + + +

+Non-standard extension. +

+Create a new entity.

Parameters:
+ + +
name The name of the entity to instantiate
+
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMEntityReference* xercesc::DOMDocument::createEntityReference const XMLCh *  name  )  [pure virtual]
+
+ + + + + +
+   + + +

+Creates an DOMEntityReference object. +

+In addition, if the referenced entity is known, the child list of the DOMEntityReference node is made the same as that of the corresponding DOMEntity node.If any descendant of the DOMEntity node has an unbound namespace prefix, the corresponding descendant of the created DOMEntityReference node is also unbound; (its namespaceURI is null). The DOM Level 2 does not support any mechanism to resolve namespace prefixes.

Parameters:
+ + +
name The name of the entity to reference.
+
+
Returns:
The new DOMEntityReference object.
+
Exceptions:
+ + +
DOMException INVALID_CHARACTER_ERR: Raised if the specified name contains an illegal character.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMNotation* xercesc::DOMDocument::createNotation const XMLCh *  name  )  [pure virtual]
+
+ + + + + +
+   + + +

+Non-standard extension. +

+Create a Notation.

Parameters:
+ + +
name The name of the notation to instantiate
+
+
Returns:
A DOMNotation that references the newly created DOMNotation node.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual DOMProcessingInstruction* xercesc::DOMDocument::createProcessingInstruction const XMLCh *  target,
const XMLCh *  data
[pure virtual]
+
+ + + + + +
+   + + +

+Creates a DOMProcessingInstruction node given the specified name and data strings. +

+

Parameters:
+ + + +
target The target part of the processing instruction.
data The data for the node.
+
+
Returns:
The new DOMProcessingInstruction object.
+
Exceptions:
+ + +
DOMException INVALID_CHARACTER_ERR: Raised if the specified target contains an illegal character.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMText* xercesc::DOMDocument::createTextNode const XMLCh *  data  )  [pure virtual]
+
+ + + + + +
+   + + +

+Creates a DOMText node given the specified string. +

+

Parameters:
+ + +
data The data for the node.
+
+
Returns:
The new DOMText object.
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMDocument::getActualEncoding  )  const [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying the actual encoding of this document. +

+This is null otherwise.
+ This attribute represents the property [character encoding scheme] defined in.

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual DOMDocumentType* xercesc::DOMDocument::getDoctype  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The Document Type Declaration (see DOMDocumentType) associated with this document. +

+For XML documents without a document type declaration this returns null. The DOM Level 2 does not support editing the Document Type Declaration. docType cannot be altered in any way, including through the use of methods inherited from the DOMNode interface, such as insertNode or removeNode.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual DOMElement* xercesc::DOMDocument::getDocumentElement  )  const [pure virtual]
+
+ + + + + +
+   + + +

+This is a convenience attribute that allows direct access to the child node that is the root element of the document. +

+

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMDocument::getDocumentURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The location of the document or null if undefined. +

+
+Beware that when the DOMDocument supports the feature "HTML" , the href attribute of the HTML BASE element takes precedence over this attribute.

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual DOMConfiguration* xercesc::DOMDocument::getDOMConfiguration  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The configuration used when Document.normalizeDocument is invoked. +

+

Returns:
The DOMConfiguration from this DOMDocument
+Note that this is a partial implementation. Not all the required features are implemented and this is only used by normalizeDocument. Currently DOMAttr and DOMText nodes are normalized. Features to remove DOMComment and DOMCDATASection work. The feature to normalize namespaces is implemented. This feature is called "namespaces" and is incorectly documented in the current WD.

+"Experimental - subject to change"

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMElement* xercesc::DOMDocument::getElementById const XMLCh *  elementId  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the DOMElement 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. 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.

Parameters:
+ + +
elementId The unique id value for an element.
+
+
Returns:
The matching element.
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMNodeList* xercesc::DOMDocument::getElementsByTagName const XMLCh *  tagname  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a DOMNodeList of all the DOMElement(s) with a given tag name in the order in which they are encountered in a preorder traversal of the DOMDocument tree. +

+The returned node list is "live", in that changes to the document tree made after a nodelist was initially returned will be immediately reflected in the node list.

Parameters:
+ + +
tagname The name of the tag to match on. The special value "*" matches all tags.
+
+
Returns:
A new DOMNodeList object containing all the matched DOMElement(s).
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual DOMNodeList* xercesc::DOMDocument::getElementsByTagNameNS const XMLCh *  namespaceURI,
const XMLCh *  localName
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a DOMNodeList of all the DOMElement(s) with a given local name and namespace URI in the order in which they are encountered in a preorder traversal of the DOMDocument tree. +

+

Parameters:
+ + + +
namespaceURI The namespace URI of the elements to match on. The special value "*" matches all namespaces.
localName The local name of the elements to match on. The special value "*" matches all local names.
+
+
Returns:
A new DOMNodeList object containing all the matched DOMElement(s).
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMDocument::getEncoding  )  const [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying, as part of the XML declaration, the encoding of this document. +

+This is null when unspecified.

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual DOMImplementation* xercesc::DOMDocument::getImplementation  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The DOMImplementation object that handles this document. +

+A DOM application may use objects from multiple implementations.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual bool xercesc::DOMDocument::getStandalone  )  const [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying, as part of the XML declaration, whether this document is standalone. +

+
+ This attribute represents the property [standalone] defined in .

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual bool xercesc::DOMDocument::getStrictErrorChecking  )  const [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying whether errors checking is enforced or not. +

+When set to false, the implementation is free to not test every possible error case normally defined on DOM operations, and not raise any DOMException. In case of error, the behavior is undefined. This attribute is true by defaults.

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMDocument::getVersion  )  const [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying, as part of the XML declaration, the version number of this document. +

+This is null when unspecified.
+ This attribute represents the property [version] defined in .

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual DOMNode* xercesc::DOMDocument::importNode DOMNode importedNode,
bool  deep
[pure virtual]
+
+ + + + + +
+   + + +

+Imports a node from another document to this document. +

+The returned node has no parent; (parentNode is null). The source node is not altered or removed from the original document; this method creates a new copy of the source node.
+For all nodes, importing a node creates a node object owned by the importing document, with attribute values identical to the source node's nodeName and nodeType, plus the attributes related to namespaces (prefix, localName, and namespaceURI). As in the cloneNode operation on a DOMNode, the source node is not altered.
+Additional information is copied as appropriate to the nodeType, attempting to mirror the behavior expected if a fragment of XML source was copied from one document to another, recognizing that the two documents may have different DTDs in the XML case. The following list describes the specifics for each type of node.

+
ATTRIBUTE_NODE
+
The ownerElement attribute is set to null and the specified flag is set to true on the generated DOMAttr. The descendants of the source DOMAttr are recursively imported and the resulting nodes reassembled to form the corresponding subtree. Note that the deep parameter has no effect on DOMAttr nodes; they always carry their children with them when imported.
+
DOCUMENT_FRAGMENT_NODE
+
If the deep option was set to true, the descendants of the source element are recursively imported and the resulting nodes reassembled to form the corresponding subtree. Otherwise, this simply generates an empty DOMDocumentFragment.
+
DOCUMENT_NODE
+
DOMDocument nodes cannot be imported.
+
DOCUMENT_TYPE_NODE
+
DOMDocumentType nodes cannot be imported.
+
ELEMENT_NODE
+
Specified attribute nodes of the source element are imported, and the generated DOMAttr nodes are attached to the generated DOMElement. Default attributes are not copied, though if the document being imported into defines default attributes for this element name, those are assigned. If the importNode deep parameter was set to true, the descendants of the source element are recursively imported and the resulting nodes reassembled to form the corresponding subtree.
+
ENTITY_NODE
+
DOMEntity nodes can be imported, however in the current release of the DOM the DOMDocumentType is readonly. Ability to add these imported nodes to a DOMDocumentType will be considered for addition to a future release of the DOM.On import, the publicId, systemId, and notationName attributes are copied. If a deep import is requested, the descendants of the the source DOMEntity are recursively imported and the resulting nodes reassembled to form the corresponding subtree.
+
ENTITY_REFERENCE_NODE
+
Only the DOMEntityReference itself is copied, even if a deep import is requested, since the source and destination documents might have defined the entity differently. If the document being imported into provides a definition for this entity name, its value is assigned.
+
NOTATION_NODE
+
DOMNotation nodes can be imported, however in the current release of the DOM the DOMDocumentType is readonly. Ability to add these imported nodes to a DOMDocumentType will be considered for addition to a future release of the DOM.On import, the publicId and systemId attributes are copied. Note that the deep parameter has no effect on DOMNotation nodes since they never have any children.
+
PROCESSING_INSTRUCTION_NODE
+
The imported node copies its target and data values from those of the source node.
+
TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE
+
These three types of nodes inheriting from DOMCharacterData copy their data and length attributes from those of the source node.
+
+
Parameters:
+ + + +
importedNode The node to import.
deep If true, recursively import the subtree under the specified node; if false, import only the node itself, as explained above. This has no effect on DOMAttr , DOMEntityReference, and DOMNotation nodes.
+
+
Returns:
The imported node that belongs to this DOMDocument.
+
Exceptions:
+ + +
DOMException NOT_SUPPORTED_ERR: Raised if the type of node being imported is not supported.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual void xercesc::DOMDocument::normalizeDocument  )  [pure virtual]
+
+ + + + + +
+   + + +

+This method acts as if the document was going through a save and load cycle, putting the document in a "normal" form. +

+The actual result depends on the features being set. See DOMConfiguration for details.

+"Experimental - subject to change"

+
+Noticeably this method normalizes DOMText nodes, makes the document "namespace wellformed", according to the algorithm described below in pseudo code, by adding missing namespace declaration attributes and adding or changing namespace prefixes, updates the replacement tree of DOMEntityReference nodes, normalizes attribute values, etc.
+Mutation events, when supported, are generated to reflect the changes occuring on the document. Note that this is a partial implementation. Not all the required features are implemented. Currently DOMAttr and DOMText nodes are normalized. Features to remove DOMComment and DOMCDATASection work. The feature to normalize namespaces is implemented. This feature is called "namespaces" and is incorectly documented in the current WD.

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual DOMNode* xercesc::DOMDocument::renameNode DOMNode n,
const XMLCh *  namespaceURI,
const XMLCh *  name
[pure virtual]
+
+ + + + + +
+   + + +

+Rename an existing node. +

+When possible this simply changes the name of the given node, otherwise this creates a new node with the specified name and replaces the existing node with the new node as described below. This only applies to nodes of type ELEMENT_NODE and ATTRIBUTE_NODE.
+When a new node is created, the following operations are performed: the new node is created, any registered event listener is registered on the new node, any user data attached to the old node is removed from that node, the old node is removed from its parent if it has one, the children are moved to the new node, if the renamed node is an DOMElement its attributes are moved to the new node, the new node is inserted at the position the old node used to have in its parent's child nodes list if it has one, the user data that was attached to the old node is attach to the new node, the user data event NODE_RENAMED is fired.
+When the node being renamed is an DOMAttr that is attached to an DOMElement, the node is first removed from the DOMElement attributes map. Then, once renamed, either by modifying the existing node or creating a new one as described above, it is put back.

+"Experimental - subject to change"

+

Parameters:
+ + + + +
n The node to rename.
namespaceURI The new namespaceURI.
name The new qualified name.
+
+
Returns:
The renamed node. This is either the specified node or the new node that was created to replace the specified node.
+
Exceptions:
+ + +
DOMException NOT_SUPPORTED_ERR: Raised when the type of the specified node is neither ELEMENT_NODE nor ATTRIBUTE_NODE.
+WRONG_DOCUMENT_ERR: Raised when the specified node was created from a different document than this document.
+NAMESPACE_ERR: Raised if the qualifiedName is malformed per the Namespaces in XML specification, if the qualifiedName has a prefix and the namespaceURI is null, or if the qualifiedName has a prefix that is "xml" and the namespaceURI is different from " http://www.w3.org/XML/1998/namespace" . Also raised, when the node being renamed is an attribute, if the qualifiedName, or its prefix, is "xmlns" and the namespaceURI is different from "http://www.w3.org/2000/xmlns/".
+
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMDocument::setActualEncoding const XMLCh *  actualEncoding  )  [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying the actual encoding of this document. +

+This is null otherwise.
+ This attribute represents the property [character encoding scheme] defined in .

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMDocument::setDocumentURI const XMLCh *  documentURI  )  [pure virtual]
+
+ + + + + +
+   + + +

+The location of the document or null if undefined. +

+
+Beware that when the DOMDocument supports the feature "HTML" , the href attribute of the HTML BASE element takes precedence over this attribute.

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMDocument::setEncoding const XMLCh *  encoding  )  [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying, as part of the XML declaration, the encoding of this document. +

+This is null when unspecified.

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMDocument::setStandalone bool  standalone  )  [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying, as part of the XML declaration, whether this document is standalone. +

+
+ This attribute represents the property [standalone] defined in .

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMDocument::setStrictErrorChecking bool  strictErrorChecking  )  [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying whether errors checking is enforced or not. +

+When set to false, the implementation is free to not test every possible error case normally defined on DOM operations, and not raise any DOMException. In case of error, the behavior is undefined. This attribute is true by defaults.

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMDocument::setVersion const XMLCh *  version  )  [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying, as part of the XML declaration, the version number of this document. +

+This is null when unspecified.
+ This attribute represents the property [version] defined in .

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMDocumentFragment-members.html b/docs/dom3-api/classxercesc_1_1DOMDocumentFragment-members.html new file mode 100644 index 00000000..0c856e9e --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMDocumentFragment-members.html @@ -0,0 +1,91 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMDocumentFragment Member List

This is the complete list of members for xercesc::DOMDocumentFragment, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
appendChild(DOMNode *newChild)=0xercesc::DOMNode [pure virtual]
ATTRIBUTE_NODE enum valuexercesc::DOMNode
CDATA_SECTION_NODE enum valuexercesc::DOMNode
cloneNode(bool deep) const =0xercesc::DOMNode [pure virtual]
COMMENT_NODE enum valuexercesc::DOMNode
compareTreePosition(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
DOCUMENT_FRAGMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_TYPE_NODE enum valuexercesc::DOMNode
DOMDocumentFragment()xercesc::DOMDocumentFragment [inline, protected]
DOMNode()xercesc::DOMNode [inline, protected]
DOMNode(const DOMNode &)xercesc::DOMNode [inline, protected]
DOMTreePosition enum namexercesc::DOMNode
ELEMENT_NODE enum valuexercesc::DOMNode
ENTITY_NODE enum valuexercesc::DOMNode
ENTITY_REFERENCE_NODE enum valuexercesc::DOMNode
getAttributes() const =0xercesc::DOMNode [pure virtual]
getBaseURI() const =0xercesc::DOMNode [pure virtual]
getChildNodes() const =0xercesc::DOMNode [pure virtual]
getFirstChild() const =0xercesc::DOMNode [pure virtual]
getInterface(const XMLCh *feature)=0xercesc::DOMNode [pure virtual]
getLastChild() const =0xercesc::DOMNode [pure virtual]
getLocalName() const =0xercesc::DOMNode [pure virtual]
getNamespaceURI() const =0xercesc::DOMNode [pure virtual]
getNextSibling() const =0xercesc::DOMNode [pure virtual]
getNodeName() const =0xercesc::DOMNode [pure virtual]
getNodeType() const =0xercesc::DOMNode [pure virtual]
getNodeValue() const =0xercesc::DOMNode [pure virtual]
getOwnerDocument() const =0xercesc::DOMNode [pure virtual]
getParentNode() const =0xercesc::DOMNode [pure virtual]
getPrefix() const =0xercesc::DOMNode [pure virtual]
getPreviousSibling() const =0xercesc::DOMNode [pure virtual]
getTextContent() const =0xercesc::DOMNode [pure virtual]
getUserData(const XMLCh *key) const =0xercesc::DOMNode [pure virtual]
hasAttributes() const =0xercesc::DOMNode [pure virtual]
hasChildNodes() const =0xercesc::DOMNode [pure virtual]
insertBefore(DOMNode *newChild, DOMNode *refChild)=0xercesc::DOMNode [pure virtual]
isDefaultNamespace(const XMLCh *namespaceURI) const =0xercesc::DOMNode [pure virtual]
isEqualNode(const DOMNode *arg) const =0xercesc::DOMNode [pure virtual]
isSameNode(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
isSupported(const XMLCh *feature, const XMLCh *version) const =0xercesc::DOMNode [pure virtual]
lookupNamespacePrefix(const XMLCh *namespaceURI, bool useDefault) const =0xercesc::DOMNode [pure virtual]
lookupNamespaceURI(const XMLCh *prefix) const =0xercesc::DOMNode [pure virtual]
NodeType enum namexercesc::DOMNode
normalize()=0xercesc::DOMNode [pure virtual]
NOTATION_NODE enum valuexercesc::DOMNode
PROCESSING_INSTRUCTION_NODE enum valuexercesc::DOMNode
release()=0xercesc::DOMNode [pure virtual]
removeChild(DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
replaceChild(DOMNode *newChild, DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
setNodeValue(const XMLCh *nodeValue)=0xercesc::DOMNode [pure virtual]
setPrefix(const XMLCh *prefix)=0xercesc::DOMNode [pure virtual]
setTextContent(const XMLCh *textContent)=0xercesc::DOMNode [pure virtual]
setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0xercesc::DOMNode [pure virtual]
TEXT_NODE enum valuexercesc::DOMNode
TREE_POSITION_ANCESTOR enum valuexercesc::DOMNode
TREE_POSITION_DESCENDANT enum valuexercesc::DOMNode
TREE_POSITION_DISCONNECTED enum valuexercesc::DOMNode
TREE_POSITION_EQUIVALENT enum valuexercesc::DOMNode
TREE_POSITION_FOLLOWING enum valuexercesc::DOMNode
TREE_POSITION_PRECEDING enum valuexercesc::DOMNode
TREE_POSITION_SAME_NODE enum valuexercesc::DOMNode
~DOMDocumentFragment()xercesc::DOMDocumentFragment [inline, virtual]
~DOMNode()xercesc::DOMNode [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMDocumentFragment.html b/docs/dom3-api/classxercesc_1_1DOMDocumentFragment.html new file mode 100644 index 00000000..1ccaab0f --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMDocumentFragment.html @@ -0,0 +1,118 @@ + + +XQilla DOM Level 3 API: xercesc::DOMDocumentFragment Class Reference + + + + + + + +

xercesc::DOMDocumentFragment Class Reference

DOMDocumentFragment is a "lightweight" or "minimal" DOMDocument object. +More... +

+#include <DOMDocumentFragment.hpp> +

+Inheritance diagram for xercesc::DOMDocumentFragment:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMDocumentFragment ()
 Destructor.

Protected Member Functions

Hidden constructors
 DOMDocumentFragment ()
+

Detailed Description

+DOMDocumentFragment is a "lightweight" or "minimal" DOMDocument object. +

+It is very common to want to be able to extract a portion of a document's tree or to create a new fragment of a document. Imagine implementing a user command like cut or rearranging a document by moving fragments around. It is desirable to have an object which can hold such fragments and it is quite natural to use a DOMNode for this purpose. While it is true that a DOMDocument object could fulfil this role, a DOMDocument object can potentially be a heavyweight object, depending on the underlying implementation. What is really needed for this is a very lightweight object. DOMDocumentFragment is such an object.

+Furthermore, various operations -- such as inserting nodes as children of another DOMNode -- may take DOMDocumentFragment objects as arguments; this results in all the child nodes of the DOMDocumentFragment being moved to the child list of this node.

+The children of a DOMDocumentFragment node are zero or more nodes representing the tops of any sub-trees defining the structure of the document. DOMDocumentFragment nodes do not need to be well-formed XML documents (although they do need to follow the rules imposed upon well-formed XML parsed entities, which can have multiple top nodes). For example, a DOMDocumentFragment might have only one child and that child node could be a DOMText node. Such a structure model represents neither an HTML document nor a well-formed XML document.

+When a DOMDocumentFragment is inserted into a DOMDocument (or indeed any other DOMNode that may take children) the children of the DOMDocumentFragment and not the DOMDocumentFragment itself are inserted into the DOMNode. This makes the DOMDocumentFragment very useful when the user wishes to create nodes that are siblings; the DOMDocumentFragment acts as the parent of these nodes so that the user can use the standard methods from the DOMNode interface, such as insertBefore() and appendChild().

+

Since:
DOM Level 1
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMDocumentFragment::DOMDocumentFragment  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMDocumentFragment::~DOMDocumentFragment  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMDocumentFragment__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMDocumentFragment__inherit__graph.map new file mode 100644 index 00000000..8d7fe493 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMDocumentFragment__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMNode.html 50,9 189,33 diff --git a/docs/dom3-api/classxercesc_1_1DOMDocumentFragment__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMDocumentFragment__inherit__graph.md5 new file mode 100644 index 00000000..67f3ec71 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMDocumentFragment__inherit__graph.md5 @@ -0,0 +1 @@ +db2e13ef75da79190428017c51fca79e \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMDocumentFragment__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMDocumentFragment__inherit__graph.png new file mode 100644 index 00000000..e8218dee Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMDocumentFragment__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMDocumentRange-members.html b/docs/dom3-api/classxercesc_1_1DOMDocumentRange-members.html new file mode 100644 index 00000000..69682e8d --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMDocumentRange-members.html @@ -0,0 +1,30 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMDocumentRange Member List

This is the complete list of members for xercesc::DOMDocumentRange, including all inherited members.

+ + + +
createRange()=0xercesc::DOMDocumentRange [pure virtual]
DOMDocumentRange()xercesc::DOMDocumentRange [inline, protected]
~DOMDocumentRange()xercesc::DOMDocumentRange [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMDocumentRange.html b/docs/dom3-api/classxercesc_1_1DOMDocumentRange.html new file mode 100644 index 00000000..0ada62b6 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMDocumentRange.html @@ -0,0 +1,145 @@ + + +XQilla DOM Level 3 API: xercesc::DOMDocumentRange Class Reference + + + + + + + +

xercesc::DOMDocumentRange Class Reference

#include <DOMDocumentRange.hpp> +

+Inheritance diagram for xercesc::DOMDocumentRange:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMDocumentRange ()
 Destructor.
Functions introduced in DOM Level 2
virtual DOMRangecreateRange ()=0
 To create the range consisting of boundary-points and offset of the selected contents.

Protected Member Functions

Hidden constructors
 DOMDocumentRange ()
+

Detailed Description

+See also the Document Object Model (DOM) Level 2 Traversal and Range Specification.
Since:
DOM Level 2
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMDocumentRange::DOMDocumentRange  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMDocumentRange::~DOMDocumentRange  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual DOMRange* xercesc::DOMDocumentRange::createRange  )  [pure virtual]
+
+ + + + + +
+   + + +

+To create the range consisting of boundary-points and offset of the selected contents. +

+

Returns:
The initial state of the Range such that both the boundary-points are positioned at the beginning of the corresponding DOMDOcument, before any content. The range returned can only be used to select content associated with this document, or with documentFragments and Attrs for which this document is the ownerdocument
+
Since:
DOM Level 2
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMDocumentRange__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMDocumentRange__inherit__graph.map new file mode 100644 index 00000000..4733b3ab --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMDocumentRange__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMDocument.html 28,83 196,107 diff --git a/docs/dom3-api/classxercesc_1_1DOMDocumentRange__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMDocumentRange__inherit__graph.md5 new file mode 100644 index 00000000..a10d9edd --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMDocumentRange__inherit__graph.md5 @@ -0,0 +1 @@ +b5907ffa26b9b337a6266237c2a0de98 \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMDocumentRange__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMDocumentRange__inherit__graph.png new file mode 100644 index 00000000..af483104 Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMDocumentRange__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMDocumentTraversal-members.html b/docs/dom3-api/classxercesc_1_1DOMDocumentTraversal-members.html new file mode 100644 index 00000000..d4438d19 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMDocumentTraversal-members.html @@ -0,0 +1,31 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMDocumentTraversal Member List

This is the complete list of members for xercesc::DOMDocumentTraversal, including all inherited members.

+ + + + +
createNodeIterator(DOMNode *root, unsigned long whatToShow, DOMNodeFilter *filter, bool entityReferenceExpansion)=0xercesc::DOMDocumentTraversal [pure virtual]
createTreeWalker(DOMNode *root, unsigned long whatToShow, DOMNodeFilter *filter, bool entityReferenceExpansion)=0xercesc::DOMDocumentTraversal [pure virtual]
DOMDocumentTraversal()xercesc::DOMDocumentTraversal [inline, protected]
~DOMDocumentTraversal()xercesc::DOMDocumentTraversal [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMDocumentTraversal.html b/docs/dom3-api/classxercesc_1_1DOMDocumentTraversal.html new file mode 100644 index 00000000..53e6dd62 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMDocumentTraversal.html @@ -0,0 +1,250 @@ + + +XQilla DOM Level 3 API: xercesc::DOMDocumentTraversal Class Reference + + + + + + + +

xercesc::DOMDocumentTraversal Class Reference

DOMDocumentTraversal contains methods that create DOMNodeIterators and DOMTreeWalkers to traverse a node and its children in document order (depth first, pre-order traversal, which is equivalent to the order in which the start tags occur in the text representation of the document). +More... +

+#include <DOMDocumentTraversal.hpp> +

+Inheritance diagram for xercesc::DOMDocumentTraversal:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMDocumentTraversal ()
 Destructor.
Functions introduced in DOM Level 2
virtual DOMNodeIteratorcreateNodeIterator (DOMNode *root, unsigned long whatToShow, DOMNodeFilter *filter, bool entityReferenceExpansion)=0
 Creates a NodeIterator object.
virtual DOMTreeWalkercreateTreeWalker (DOMNode *root, unsigned long whatToShow, DOMNodeFilter *filter, bool entityReferenceExpansion)=0
 Creates a TreeWalker object.

Protected Member Functions

Hidden constructors
 DOMDocumentTraversal ()
+

Detailed Description

+DOMDocumentTraversal contains methods that create DOMNodeIterators and DOMTreeWalkers to traverse a node and its children in document order (depth first, pre-order traversal, which is equivalent to the order in which the start tags occur in the text representation of the document). +

+In DOMs which support the Traversal feature, DOMDocumentTraversal will be implemented by the same objects that implement the DOMDocument interface.

+See also the Document Object Model (DOM) Level 2 Traversal and Range Specification.

Since:
DOM Level 2
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMDocumentTraversal::DOMDocumentTraversal  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMDocumentTraversal::~DOMDocumentTraversal  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual DOMNodeIterator* xercesc::DOMDocumentTraversal::createNodeIterator DOMNode root,
unsigned long  whatToShow,
DOMNodeFilter filter,
bool  entityReferenceExpansion
[pure virtual]
+
+ + + + + +
+   + + +

+Creates a NodeIterator object. +

+(DOM2)

+NodeIterators are used to step through a set of nodes, e.g. the set of nodes in a NodeList, the document subtree governed by a particular node, the results of a query, or any other set of nodes. The set of nodes to be iterated is determined by the implementation of the NodeIterator. DOM Level 2 specifies a single NodeIterator implementation for document-order traversal of a document subtree. Instances of these iterators are created by calling DOMDocumentTraversal.createNodeIterator().

+To produce a view of the document that has entity references expanded and does not expose the entity reference node itself, use the whatToShow flags to hide the entity reference node and set expandEntityReferences to true when creating the iterator. To produce a view of the document that has entity reference nodes but no entity expansion, use the whatToShow flags to show the entity reference node and set expandEntityReferences to false.

+

Parameters:
+ + + + + +
root The root node of the DOM tree
whatToShow This attribute determines which node types are presented via the iterator.
filter The filter used to screen nodes
entityReferenceExpansion The value of this flag determines whether the children of entity reference nodes are visible to the iterator. If false, they will be skipped over.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual DOMTreeWalker* xercesc::DOMDocumentTraversal::createTreeWalker DOMNode root,
unsigned long  whatToShow,
DOMNodeFilter filter,
bool  entityReferenceExpansion
[pure virtual]
+
+ + + + + +
+   + + +

+Creates a TreeWalker object. +

+(DOM2)

+TreeWalker objects are used to navigate a document tree or subtree using the view of the document defined by its whatToShow flags and any filters that are defined for the TreeWalker. Any function which performs navigation using a TreeWalker will automatically support any view defined by a TreeWalker.

+Omitting nodes from the logical view of a subtree can result in a structure that is substantially different from the same subtree in the complete, unfiltered document. Nodes that are siblings in the TreeWalker view may be children of different, widely separated nodes in the original view. For instance, consider a Filter that skips all nodes except for DOMText nodes and the root node of a document. In the logical view that results, all text nodes will be siblings and appear as direct children of the root node, no matter how deeply nested the structure of the original document.

+To produce a view of the document that has entity references expanded and does not expose the entity reference node itself, use the whatToShow flags to hide the entity reference node and set expandEntityReferences to true when creating the TreeWalker. To produce a view of the document that has entity reference nodes but no entity expansion, use the whatToShow flags to show the entity reference node and set expandEntityReferences to false

+

Parameters:
+ + + + + +
root The root node of the DOM tree
whatToShow This attribute determines which node types are presented via the tree-walker.
filter The filter used to screen nodes
entityReferenceExpansion The value of this flag determines whether the children of entity reference nodes are visible to the tree-walker. If false, they will be skipped over.
+
+
Since:
DOM Level 2
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMDocumentTraversal__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMDocumentTraversal__inherit__graph.map new file mode 100644 index 00000000..e00d7ba2 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMDocumentTraversal__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMDocument.html 34,83 202,107 diff --git a/docs/dom3-api/classxercesc_1_1DOMDocumentTraversal__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMDocumentTraversal__inherit__graph.md5 new file mode 100644 index 00000000..45e768a4 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMDocumentTraversal__inherit__graph.md5 @@ -0,0 +1 @@ +d5ea0797e97390a8b2b6726bc135a85a \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMDocumentTraversal__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMDocumentTraversal__inherit__graph.png new file mode 100644 index 00000000..bda84394 Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMDocumentTraversal__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMDocumentType-members.html b/docs/dom3-api/classxercesc_1_1DOMDocumentType-members.html new file mode 100644 index 00000000..cbd59e45 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMDocumentType-members.html @@ -0,0 +1,97 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMDocumentType Member List

This is the complete list of members for xercesc::DOMDocumentType, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
appendChild(DOMNode *newChild)=0xercesc::DOMNode [pure virtual]
ATTRIBUTE_NODE enum valuexercesc::DOMNode
CDATA_SECTION_NODE enum valuexercesc::DOMNode
cloneNode(bool deep) const =0xercesc::DOMNode [pure virtual]
COMMENT_NODE enum valuexercesc::DOMNode
compareTreePosition(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
DOCUMENT_FRAGMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_TYPE_NODE enum valuexercesc::DOMNode
DOMDocumentType()xercesc::DOMDocumentType [inline, protected]
DOMNode()xercesc::DOMNode [inline, protected]
DOMNode(const DOMNode &)xercesc::DOMNode [inline, protected]
DOMTreePosition enum namexercesc::DOMNode
ELEMENT_NODE enum valuexercesc::DOMNode
ENTITY_NODE enum valuexercesc::DOMNode
ENTITY_REFERENCE_NODE enum valuexercesc::DOMNode
getAttributes() const =0xercesc::DOMNode [pure virtual]
getBaseURI() const =0xercesc::DOMNode [pure virtual]
getChildNodes() const =0xercesc::DOMNode [pure virtual]
getEntities() const =0xercesc::DOMDocumentType [pure virtual]
getFirstChild() const =0xercesc::DOMNode [pure virtual]
getInterface(const XMLCh *feature)=0xercesc::DOMNode [pure virtual]
getInternalSubset() const =0xercesc::DOMDocumentType [pure virtual]
getLastChild() const =0xercesc::DOMNode [pure virtual]
getLocalName() const =0xercesc::DOMNode [pure virtual]
getName() const =0xercesc::DOMDocumentType [pure virtual]
getNamespaceURI() const =0xercesc::DOMNode [pure virtual]
getNextSibling() const =0xercesc::DOMNode [pure virtual]
getNodeName() const =0xercesc::DOMNode [pure virtual]
getNodeType() const =0xercesc::DOMNode [pure virtual]
getNodeValue() const =0xercesc::DOMNode [pure virtual]
getNotations() const =0xercesc::DOMDocumentType [pure virtual]
getOwnerDocument() const =0xercesc::DOMNode [pure virtual]
getParentNode() const =0xercesc::DOMNode [pure virtual]
getPrefix() const =0xercesc::DOMNode [pure virtual]
getPreviousSibling() const =0xercesc::DOMNode [pure virtual]
getPublicId() const =0xercesc::DOMDocumentType [pure virtual]
getSystemId() const =0xercesc::DOMDocumentType [pure virtual]
getTextContent() const =0xercesc::DOMNode [pure virtual]
getUserData(const XMLCh *key) const =0xercesc::DOMNode [pure virtual]
hasAttributes() const =0xercesc::DOMNode [pure virtual]
hasChildNodes() const =0xercesc::DOMNode [pure virtual]
insertBefore(DOMNode *newChild, DOMNode *refChild)=0xercesc::DOMNode [pure virtual]
isDefaultNamespace(const XMLCh *namespaceURI) const =0xercesc::DOMNode [pure virtual]
isEqualNode(const DOMNode *arg) const =0xercesc::DOMNode [pure virtual]
isSameNode(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
isSupported(const XMLCh *feature, const XMLCh *version) const =0xercesc::DOMNode [pure virtual]
lookupNamespacePrefix(const XMLCh *namespaceURI, bool useDefault) const =0xercesc::DOMNode [pure virtual]
lookupNamespaceURI(const XMLCh *prefix) const =0xercesc::DOMNode [pure virtual]
NodeType enum namexercesc::DOMNode
normalize()=0xercesc::DOMNode [pure virtual]
NOTATION_NODE enum valuexercesc::DOMNode
PROCESSING_INSTRUCTION_NODE enum valuexercesc::DOMNode
release()=0xercesc::DOMNode [pure virtual]
removeChild(DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
replaceChild(DOMNode *newChild, DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
setNodeValue(const XMLCh *nodeValue)=0xercesc::DOMNode [pure virtual]
setPrefix(const XMLCh *prefix)=0xercesc::DOMNode [pure virtual]
setTextContent(const XMLCh *textContent)=0xercesc::DOMNode [pure virtual]
setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0xercesc::DOMNode [pure virtual]
TEXT_NODE enum valuexercesc::DOMNode
TREE_POSITION_ANCESTOR enum valuexercesc::DOMNode
TREE_POSITION_DESCENDANT enum valuexercesc::DOMNode
TREE_POSITION_DISCONNECTED enum valuexercesc::DOMNode
TREE_POSITION_EQUIVALENT enum valuexercesc::DOMNode
TREE_POSITION_FOLLOWING enum valuexercesc::DOMNode
TREE_POSITION_PRECEDING enum valuexercesc::DOMNode
TREE_POSITION_SAME_NODE enum valuexercesc::DOMNode
~DOMDocumentType()xercesc::DOMDocumentType [inline, virtual]
~DOMNode()xercesc::DOMNode [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMDocumentType.html b/docs/dom3-api/classxercesc_1_1DOMDocumentType.html new file mode 100644 index 00000000..0246fda6 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMDocumentType.html @@ -0,0 +1,330 @@ + + +XQilla DOM Level 3 API: xercesc::DOMDocumentType Class Reference + + + + + + + +

xercesc::DOMDocumentType Class Reference

Each DOMDocument has a doctype attribute whose value is either null or a DOMDocumentType object. +More... +

+#include <DOMDocumentType.hpp> +

+Inheritance diagram for xercesc::DOMDocumentType:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMDocumentType ()
 Destructor.
Functions introduced in DOM Level 1
virtual const XMLCh * getName () const =0
 The name of DTD; i.e., the name immediately following the DOCTYPE keyword.
virtual DOMNamedNodeMapgetEntities () const =0
 A DOMNamedNodeMap containing the general entities, both external and internal, declared in the DTD.
virtual DOMNamedNodeMapgetNotations () const =0
 A DOMNamedNodeMap containing the notations declared in the DTD.
Functions introduced in DOM Level 2.
virtual const XMLCh * getPublicId () const =0
 Get the public identifier of the external subset.
virtual const XMLCh * getSystemId () const =0
 Get the system identifier of the external subset.
virtual const XMLCh * getInternalSubset () const =0
 The internal subset as a string, or null if there is none.

Protected Member Functions

Hidden constructors
 DOMDocumentType ()
+

Detailed Description

+Each DOMDocument has a doctype attribute whose value is either null or a DOMDocumentType object. +

+The DOMDocumentType interface in the DOM Core provides an interface to the list of entities that are defined for the document, and little else because the effect of namespaces and the various XML schema efforts on DTD representation are not clearly understood as of this writing.

+The DOM Level 2 doesn't support editing DOMDocumentType nodes.

+See also the Document Object Model (DOM) Level 2 Core Specification.

+

Since:
DOM Level 1
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMDocumentType::DOMDocumentType  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMDocumentType::~DOMDocumentType  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual DOMNamedNodeMap* xercesc::DOMDocumentType::getEntities  )  const [pure virtual]
+
+ + + + + +
+   + + +

+A DOMNamedNodeMap containing the general entities, both external and internal, declared in the DTD. +

+Parameter entities are not contained. Duplicates are discarded. For example in: <!DOCTYPE
+ ex SYSTEM "ex.dtd" [ <!ENTITY foo "foo"> <!ENTITY bar
+ "bar"> <!ENTITY bar "bar2"> <!ENTITY % baz "baz">
+ ]> <ex/>
+
the interface provides access to foo and the first declaration of bar but not the second declaration of bar or baz. Every node in this map also implements the DOMEntity interface.
+The DOM Level 2 does not support editing entities, therefore entities cannot be altered in any way.

+

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMDocumentType::getInternalSubset  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The internal subset as a string, or null if there is none. +

+This is does not contain the delimiting square brackets.The actual content returned depends on how much information is available to the implementation. This may vary depending on various parameters, including the XML processor used to build the document.

+

Returns:
The internal subset as a string.
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMDocumentType::getName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The name of DTD; i.e., the name immediately following the DOCTYPE keyword. +

+

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNamedNodeMap* xercesc::DOMDocumentType::getNotations  )  const [pure virtual]
+
+ + + + + +
+   + + +

+A DOMNamedNodeMap containing the notations declared in the DTD. +

+Duplicates are discarded. Every node in this map also implements the DOMNotation interface.
+The DOM Level 2 does not support editing notations, therefore notations cannot be altered in any way.

+

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMDocumentType::getPublicId  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the public identifier of the external subset. +

+

Returns:
The public identifier of the external subset.
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMDocumentType::getSystemId  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the system identifier of the external subset. +

+

Returns:
The system identifier of the external subset.
+
Since:
DOM Level 2
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMDocumentType__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMDocumentType__inherit__graph.map new file mode 100644 index 00000000..bf60ff73 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMDocumentType__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMNode.html 37,9 175,33 diff --git a/docs/dom3-api/classxercesc_1_1DOMDocumentType__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMDocumentType__inherit__graph.md5 new file mode 100644 index 00000000..eae57b66 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMDocumentType__inherit__graph.md5 @@ -0,0 +1 @@ +4aff94640acd47ca2fdc98d760412cff \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMDocumentType__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMDocumentType__inherit__graph.png new file mode 100644 index 00000000..2789bcf6 Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMDocumentType__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMDocument__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMDocument__inherit__graph.map new file mode 100644 index 00000000..4d2856e1 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMDocument__inherit__graph.map @@ -0,0 +1,5 @@ +base referer +rect $classxercesc_1_1DOMDocumentRange.html 8,9 216,33 +rect $classxercesc_1_1DOMXPathEvaluator.html 240,9 440,33 +rect $classxercesc_1_1DOMDocumentTraversal.html 464,9 685,33 +rect $classxercesc_1_1DOMNode.html 709,9 848,33 diff --git a/docs/dom3-api/classxercesc_1_1DOMDocument__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMDocument__inherit__graph.md5 new file mode 100644 index 00000000..e6c2206b --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMDocument__inherit__graph.md5 @@ -0,0 +1 @@ +40321b8cda7512e57374aedec293a3f8 \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMDocument__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMDocument__inherit__graph.png new file mode 100644 index 00000000..2892bc13 Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMDocument__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMElement-members.html b/docs/dom3-api/classxercesc_1_1DOMElement-members.html new file mode 100644 index 00000000..029fa0ee --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMElement-members.html @@ -0,0 +1,112 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMElement Member List

This is the complete list of members for xercesc::DOMElement, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
appendChild(DOMNode *newChild)=0xercesc::DOMNode [pure virtual]
ATTRIBUTE_NODE enum valuexercesc::DOMNode
CDATA_SECTION_NODE enum valuexercesc::DOMNode
cloneNode(bool deep) const =0xercesc::DOMNode [pure virtual]
COMMENT_NODE enum valuexercesc::DOMNode
compareTreePosition(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
DOCUMENT_FRAGMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_TYPE_NODE enum valuexercesc::DOMNode
DOMElement()xercesc::DOMElement [inline, protected]
DOMElement(const DOMElement &other)xercesc::DOMElement [inline, protected]
DOMNode()xercesc::DOMNode [inline, protected]
DOMNode(const DOMNode &)xercesc::DOMNode [inline, protected]
DOMTreePosition enum namexercesc::DOMNode
ELEMENT_NODE enum valuexercesc::DOMNode
ENTITY_NODE enum valuexercesc::DOMNode
ENTITY_REFERENCE_NODE enum valuexercesc::DOMNode
getAttribute(const XMLCh *name) const =0xercesc::DOMElement [pure virtual]
getAttributeNode(const XMLCh *name) const =0xercesc::DOMElement [pure virtual]
getAttributeNodeNS(const XMLCh *namespaceURI, const XMLCh *localName) const =0xercesc::DOMElement [pure virtual]
getAttributeNS(const XMLCh *namespaceURI, const XMLCh *localName) const =0xercesc::DOMElement [pure virtual]
getAttributes() const =0xercesc::DOMNode [pure virtual]
getBaseURI() const =0xercesc::DOMNode [pure virtual]
getChildNodes() const =0xercesc::DOMNode [pure virtual]
getElementsByTagName(const XMLCh *name) const =0xercesc::DOMElement [pure virtual]
getElementsByTagNameNS(const XMLCh *namespaceURI, const XMLCh *localName) const =0xercesc::DOMElement [pure virtual]
getFirstChild() const =0xercesc::DOMNode [pure virtual]
getInterface(const XMLCh *feature)=0xercesc::DOMNode [pure virtual]
getLastChild() const =0xercesc::DOMNode [pure virtual]
getLocalName() const =0xercesc::DOMNode [pure virtual]
getNamespaceURI() const =0xercesc::DOMNode [pure virtual]
getNextSibling() const =0xercesc::DOMNode [pure virtual]
getNodeName() const =0xercesc::DOMNode [pure virtual]
getNodeType() const =0xercesc::DOMNode [pure virtual]
getNodeValue() const =0xercesc::DOMNode [pure virtual]
getOwnerDocument() const =0xercesc::DOMNode [pure virtual]
getParentNode() const =0xercesc::DOMNode [pure virtual]
getPrefix() const =0xercesc::DOMNode [pure virtual]
getPreviousSibling() const =0xercesc::DOMNode [pure virtual]
getTagName() const =0xercesc::DOMElement [pure virtual]
getTextContent() const =0xercesc::DOMNode [pure virtual]
getTypeInfo() const =0xercesc::DOMElement [pure virtual]
getUserData(const XMLCh *key) const =0xercesc::DOMNode [pure virtual]
hasAttribute(const XMLCh *name) const =0xercesc::DOMElement [pure virtual]
hasAttributeNS(const XMLCh *namespaceURI, const XMLCh *localName) const =0xercesc::DOMElement [pure virtual]
hasAttributes() const =0xercesc::DOMNode [pure virtual]
hasChildNodes() const =0xercesc::DOMNode [pure virtual]
insertBefore(DOMNode *newChild, DOMNode *refChild)=0xercesc::DOMNode [pure virtual]
isDefaultNamespace(const XMLCh *namespaceURI) const =0xercesc::DOMNode [pure virtual]
isEqualNode(const DOMNode *arg) const =0xercesc::DOMNode [pure virtual]
isSameNode(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
isSupported(const XMLCh *feature, const XMLCh *version) const =0xercesc::DOMNode [pure virtual]
lookupNamespacePrefix(const XMLCh *namespaceURI, bool useDefault) const =0xercesc::DOMNode [pure virtual]
lookupNamespaceURI(const XMLCh *prefix) const =0xercesc::DOMNode [pure virtual]
NodeType enum namexercesc::DOMNode
normalize()=0xercesc::DOMNode [pure virtual]
NOTATION_NODE enum valuexercesc::DOMNode
PROCESSING_INSTRUCTION_NODE enum valuexercesc::DOMNode
release()=0xercesc::DOMNode [pure virtual]
removeAttribute(const XMLCh *name)=0xercesc::DOMElement [pure virtual]
removeAttributeNode(DOMAttr *oldAttr)=0xercesc::DOMElement [pure virtual]
removeAttributeNS(const XMLCh *namespaceURI, const XMLCh *localName)=0xercesc::DOMElement [pure virtual]
removeChild(DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
replaceChild(DOMNode *newChild, DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
setAttribute(const XMLCh *name, const XMLCh *value)=0xercesc::DOMElement [pure virtual]
setAttributeNode(DOMAttr *newAttr)=0xercesc::DOMElement [pure virtual]
setAttributeNodeNS(DOMAttr *newAttr)=0xercesc::DOMElement [pure virtual]
setAttributeNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName, const XMLCh *value)=0xercesc::DOMElement [pure virtual]
setIdAttribute(const XMLCh *name)=0xercesc::DOMElement [pure virtual]
setIdAttributeNode(const DOMAttr *idAttr)=0xercesc::DOMElement [pure virtual]
setIdAttributeNS(const XMLCh *namespaceURI, const XMLCh *localName)=0xercesc::DOMElement [pure virtual]
setNodeValue(const XMLCh *nodeValue)=0xercesc::DOMNode [pure virtual]
setPrefix(const XMLCh *prefix)=0xercesc::DOMNode [pure virtual]
setTextContent(const XMLCh *textContent)=0xercesc::DOMNode [pure virtual]
setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0xercesc::DOMNode [pure virtual]
TEXT_NODE enum valuexercesc::DOMNode
TREE_POSITION_ANCESTOR enum valuexercesc::DOMNode
TREE_POSITION_DESCENDANT enum valuexercesc::DOMNode
TREE_POSITION_DISCONNECTED enum valuexercesc::DOMNode
TREE_POSITION_EQUIVALENT enum valuexercesc::DOMNode
TREE_POSITION_FOLLOWING enum valuexercesc::DOMNode
TREE_POSITION_PRECEDING enum valuexercesc::DOMNode
TREE_POSITION_SAME_NODE enum valuexercesc::DOMNode
~DOMElement()xercesc::DOMElement [inline, virtual]
~DOMNode()xercesc::DOMNode [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMElement.html b/docs/dom3-api/classxercesc_1_1DOMElement.html new file mode 100644 index 00000000..03affd54 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMElement.html @@ -0,0 +1,1091 @@ + + +XQilla DOM Level 3 API: xercesc::DOMElement Class Reference + + + + + + + +

xercesc::DOMElement Class Reference

By far the vast majority of objects (apart from text) that authors encounter when traversing a document are DOMElement nodes. +More... +

+#include <DOMElement.hpp> +

+Inheritance diagram for xercesc::DOMElement:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMElement ()
 Destructor.
Functions introduced in DOM Level 1
virtual const XMLCh * getTagName () const =0
 The name of the element.
virtual const XMLCh * getAttribute (const XMLCh *name) const =0
 Retrieves an attribute value by name.
virtual DOMAttrgetAttributeNode (const XMLCh *name) const =0
 Retrieves an DOMAttr node by name.
virtual DOMNodeListgetElementsByTagName (const XMLCh *name) const =0
 Returns a DOMNodeList of all descendant elements with a given tag name, in the order in which they would be encountered in a preorder traversal of the DOMElement tree.
virtual void setAttribute (const XMLCh *name, const XMLCh *value)=0
 Adds a new attribute.
virtual DOMAttrsetAttributeNode (DOMAttr *newAttr)=0
 Adds a new attribute.
virtual DOMAttrremoveAttributeNode (DOMAttr *oldAttr)=0
 Removes the specified attribute node.
virtual void removeAttribute (const XMLCh *name)=0
 Removes an attribute by name.
Functions introduced in DOM Level 2.
virtual const XMLCh * getAttributeNS (const XMLCh *namespaceURI, const XMLCh *localName) const =0
 Retrieves an attribute value by local name and namespace URI.
virtual void setAttributeNS (const XMLCh *namespaceURI, const XMLCh *qualifiedName, const XMLCh *value)=0
 Adds a new attribute.
virtual void removeAttributeNS (const XMLCh *namespaceURI, const XMLCh *localName)=0
 Removes an attribute by local name and namespace URI.
virtual DOMAttrgetAttributeNodeNS (const XMLCh *namespaceURI, const XMLCh *localName) const =0
 Retrieves an DOMAttr node by local name and namespace URI.
virtual DOMAttrsetAttributeNodeNS (DOMAttr *newAttr)=0
 Adds a new attribute.
virtual DOMNodeListgetElementsByTagNameNS (const XMLCh *namespaceURI, const XMLCh *localName) const =0
 Returns a DOMNodeList of all the DOMElements with a given local name and namespace URI in the order in which they would be encountered in a preorder traversal of the DOMDocument tree, starting from this node.
virtual bool hasAttribute (const XMLCh *name) const =0
 Returns true when an attribute with a given name is specified on this element or has a default value, false otherwise.
virtual bool hasAttributeNS (const XMLCh *namespaceURI, const XMLCh *localName) const =0
 Returns true when an attribute with a given local name and namespace URI is specified on this element or has a default value, false otherwise.
Functions introduced in DOM Level 3
virtual void setIdAttribute (const XMLCh *name)=0
 Declares the DOMAttr specified by name to be of type ID.
virtual void setIdAttributeNS (const XMLCh *namespaceURI, const XMLCh *localName)=0
 Declares the DOMAttr specified by local name and namespace URI to be of type ID.
virtual void setIdAttributeNode (const DOMAttr *idAttr)=0
 Declares the DOMAttr specified by node to be of type ID.
virtual const DOMTypeInfogetTypeInfo () const =0
 Returns the type information associated with this element.

Protected Member Functions

Hidden constructors
 DOMElement ()
 DOMElement (const DOMElement &other)
+

Detailed Description

+By far the vast majority of objects (apart from text) that authors encounter when traversing a document are DOMElement nodes. +

+Assume the following XML document:<elementExample id="demo"> <subelement1/> <subelement2><subsubelement/></subelement2> </elementExample>

+When represented using DOM, the top node is an DOMElement node for "elementExample", which contains two child DOMElement nodes, one for "subelement1" and one for "subelement2". "subelement1" contains no child nodes.

+Elements may have attributes associated with them; since the DOMElement interface inherits from DOMNode, the generic DOMNode interface method getAttributes may be used to retrieve the set of all attributes for an element. There are methods on the DOMElement interface to retrieve either an DOMAttr object by name or an attribute value by name. In XML, where an attribute value may contain entity references, an DOMAttr object should be retrieved to examine the possibly fairly complex sub-tree representing the attribute value. On the other hand, in HTML, where all attributes have simple string values, methods to directly access an attribute value can safely be used as a convenience.

+

Since:
DOM Level 1
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMElement::DOMElement  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
xercesc::DOMElement::DOMElement const DOMElement other  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMElement::~DOMElement  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* xercesc::DOMElement::getAttribute const XMLCh *  name  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Retrieves an attribute value by name. +

+

Parameters:
+ + +
name The name of the attribute to retrieve.
+
+
Returns:
The DOMAttr value as a string, or the empty string if that attribute does not have a specified or default value.
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMAttr* xercesc::DOMElement::getAttributeNode const XMLCh *  name  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Retrieves an DOMAttr node by name. +

+

Parameters:
+ + +
name The name (nodeName) of the attribute to retrieve.
+
+
Returns:
The DOMAttr node with the specified name (nodeName) or null if there is no such attribute.
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual DOMAttr* xercesc::DOMElement::getAttributeNodeNS const XMLCh *  namespaceURI,
const XMLCh *  localName
const [pure virtual]
+
+ + + + + +
+   + + +

+Retrieves an DOMAttr node by local name and namespace URI. +

+

Parameters:
+ + + +
namespaceURI The namespace URI of the attribute to retrieve.
localName The local name of the attribute to retrieve.
+
+
Returns:
The DOMAttr node with the specified attribute local name and namespace URI or null if there is no such attribute.
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual const XMLCh* xercesc::DOMElement::getAttributeNS const XMLCh *  namespaceURI,
const XMLCh *  localName
const [pure virtual]
+
+ + + + + +
+   + + +

+Retrieves an attribute value by local name and namespace URI. +

+

Parameters:
+ + + +
namespaceURI The namespace URI of the attribute to retrieve.
localName The local name of the attribute to retrieve.
+
+
Returns:
The DOMAttr value as a string, or an null if that attribute does not have a specified or default value.
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMNodeList* xercesc::DOMElement::getElementsByTagName const XMLCh *  name  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a DOMNodeList of all descendant elements with a given tag name, in the order in which they would be encountered in a preorder traversal of the DOMElement tree. +

+

Parameters:
+ + +
name The name of the tag to match on. The special value "*" matches all tags.
+
+
Returns:
A list of matching DOMElement nodes.
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual DOMNodeList* xercesc::DOMElement::getElementsByTagNameNS const XMLCh *  namespaceURI,
const XMLCh *  localName
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a DOMNodeList of all the DOMElements with a given local name and namespace URI in the order in which they would be encountered in a preorder traversal of the DOMDocument tree, starting from this node. +

+

Parameters:
+ + + +
namespaceURI The namespace URI of the elements to match on. The special value "*" matches all namespaces.
localName The local name of the elements to match on. The special value "*" matches all local names.
+
+
Returns:
A new DOMNodeList object containing all the matched DOMElements.
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMElement::getTagName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+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.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const DOMTypeInfo* xercesc::DOMElement::getTypeInfo  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the type information associated with this element. +

+"Experimental - subject to change"

+

Returns:
the DOMTypeInfo associated with this element
+
Since:
DOM level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual bool xercesc::DOMElement::hasAttribute const XMLCh *  name  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns true when an attribute with a given name is specified on this element or has a default value, false otherwise. +

+

Parameters:
+ + +
name The name of the attribute to look for.
+
+
Returns:
true if an attribute with the given name is specified on this element or has a default value, false otherwise.
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool xercesc::DOMElement::hasAttributeNS const XMLCh *  namespaceURI,
const XMLCh *  localName
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns true when an attribute with a given local name and namespace URI is specified on this element or has a default value, false otherwise. +

+HTML-only DOM implementations do not need to implement this method.

Parameters:
+ + + +
namespaceURI The namespace URI of the attribute to look for.
localName The local name of the attribute to look for.
+
+
Returns:
true if an attribute with the given local name and namespace URI is specified or has a default value on this element, false otherwise.
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMElement::removeAttribute const XMLCh *  name  )  [pure virtual]
+
+ + + + + +
+   + + +

+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.

Parameters:
+ + +
name The name of the attribute to remove.
+
+
Exceptions:
+ + +
DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMAttr* xercesc::DOMElement::removeAttributeNode DOMAttr oldAttr  )  [pure virtual]
+
+ + + + + +
+   + + +

+Removes the specified attribute node. +

+If the removed DOMAttr 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.

+

Parameters:
+ + +
oldAttr The DOMAttr node to remove from the attribute list.
+
+
Returns:
The DOMAttr node that was removed.
+
Exceptions:
+ + +
DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+NOT_FOUND_ERR: Raised if oldAttr is not an attribute of the element.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void xercesc::DOMElement::removeAttributeNS const XMLCh *  namespaceURI,
const XMLCh *  localName
[pure virtual]
+
+ + + + + +
+   + + +

+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.

+

Parameters:
+ + + +
namespaceURI The namespace URI of the attribute to remove.
localName The local name of the attribute to remove.
+
+
Exceptions:
+ + +
DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void xercesc::DOMElement::setAttribute const XMLCh *  name,
const XMLCh *  value
[pure virtual]
+
+ + + + + +
+   + + +

+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 DOMAttr node plus any DOMText and DOMEntityReference nodes, build the appropriate subtree, and use setAttributeNode to assign it as the value of an attribute.

Parameters:
+ + + +
name The name of the attribute to create or alter.
value Value to set in string form.
+
+
Exceptions:
+ + +
DOMException INVALID_CHARACTER_ERR: Raised if the specified name contains an illegal character.
+NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMAttr* xercesc::DOMElement::setAttributeNode DOMAttr newAttr  )  [pure virtual]
+
+ + + + + +
+   + + +

+Adds a new attribute. +

+If an attribute with that name (nodeName) is already present in the element, it is replaced by the new one.

Parameters:
+ + +
newAttr The DOMAttr node to add to the attribute list.
+
+
Returns:
If the newAttr attribute replaces an existing attribute, the replaced DOMAttr node is returned, otherwise null is returned.
+
Exceptions:
+ + +
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 DOMElement object. The DOM user must explicitly clone DOMAttr nodes to re-use them in other elements.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMAttr* xercesc::DOMElement::setAttributeNodeNS DOMAttr newAttr  )  [pure virtual]
+
+ + + + + +
+   + + +

+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.

+

Parameters:
+ + +
newAttr The DOMAttr node to add to the attribute list.
+
+
Returns:
If the newAttr attribute replaces an existing attribute with the same local name and namespace URI, the replaced DOMAttr node is returned, otherwise null is returned.
+
Exceptions:
+ + +
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 DOMElement object. The DOM user must explicitly clone DOMAttr nodes to re-use them in other elements.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void xercesc::DOMElement::setAttributeNS const XMLCh *  namespaceURI,
const XMLCh *  qualifiedName,
const XMLCh *  value
[pure virtual]
+
+ + + + + +
+   + + +

+Adds a new attribute. +

+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 an DOMAttr node plus any DOMText and DOMEntityReference nodes, build the appropriate subtree, and use setAttributeNodeNS or setAttributeNode to assign it as the value of an attribute.

+

Parameters:
+ + + + +
namespaceURI The namespace URI of the attribute to create or alter.
qualifiedName The qualified name of the attribute to create or alter.
value The value to set in string form.
+
+
Exceptions:
+ + +
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 and the namespaceURI is null or an empty string, if the qualifiedName has a prefix that is "xml" and the namespaceURI is different from "http://www.w3.org/XML/1998/namespace", if the qualifiedName has a prefix that is "xmlns" and the namespaceURI is different from "http://www.w3.org/2000/xmlns/", or if the qualifiedName is "xmlns" and the namespaceURI is different from "http://www.w3.org/2000/xmlns/".
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMElement::setIdAttribute const XMLCh *  name  )  [pure virtual]
+
+ + + + + +
+   + + +

+Declares the DOMAttr specified by name to be of type ID. +

+If the value of the specified DOMAttr is unique then this element node can later be retrieved using getElementById on Document. Note, however, that this simply affects this node and does not change any grammar that may be in use. To specify an DOMAttr by local name and namespace URI, use the setIdAttributeNS method.

Parameters:
+ + +
name The name of the DOMAttr.
+
+
Exceptions:
+ + +
DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+NOT_FOUND_ERR: Raised if the specified node is not an DOMAttr of this element.
+
+

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMElement::setIdAttributeNode const DOMAttr idAttr  )  [pure virtual]
+
+ + + + + +
+   + + +

+Declares the DOMAttr specified by node to be of type ID. +

+If the value of the specified DOMAttr is unique then this DOMElement node can later be retrieved using getElementById on DOMDocument. Note, however, that this simply affects this node and does not change any grammar that may be in use.

Parameters:
+ + +
idAttr The DOMAttr node.
+
+
Exceptions:
+ + +
DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+NOT_FOUND_ERR: Raised if the specified node is not an DOMAttr of this element.
+
+

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void xercesc::DOMElement::setIdAttributeNS const XMLCh *  namespaceURI,
const XMLCh *  localName
[pure virtual]
+
+ + + + + +
+   + + +

+Declares the DOMAttr specified by local name and namespace URI to be of type ID. +

+If the value of the specified DOMAttr is unique then this DOMElement node can later be retrieved using getElementById on DOMDocument. Note, however, that this simply affects this node and does not change any grammar that may be in use.

Parameters:
+ + + +
namespaceURI The namespace URI of the DOMAttr.
localName The local name of the DOMAttr.
+
+
Exceptions:
+ + +
DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+NOT_FOUND_ERR: Raised if the specified node is not an DOMAttr of this element.
+
+

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMElement__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMElement__inherit__graph.map new file mode 100644 index 00000000..baeabe5a --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMElement__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMNode.html 17,9 155,33 diff --git a/docs/dom3-api/classxercesc_1_1DOMElement__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMElement__inherit__graph.md5 new file mode 100644 index 00000000..75d10f22 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMElement__inherit__graph.md5 @@ -0,0 +1 @@ +dd37726d001aeb7df6b21c1e14d82f59 \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMElement__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMElement__inherit__graph.png new file mode 100644 index 00000000..269c21d2 Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMElement__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMEntity-members.html b/docs/dom3-api/classxercesc_1_1DOMEntity-members.html new file mode 100644 index 00000000..6b948a14 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMEntity-members.html @@ -0,0 +1,101 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMEntity Member List

This is the complete list of members for xercesc::DOMEntity, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
appendChild(DOMNode *newChild)=0xercesc::DOMNode [pure virtual]
ATTRIBUTE_NODE enum valuexercesc::DOMNode
CDATA_SECTION_NODE enum valuexercesc::DOMNode
cloneNode(bool deep) const =0xercesc::DOMNode [pure virtual]
COMMENT_NODE enum valuexercesc::DOMNode
compareTreePosition(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
DOCUMENT_FRAGMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_TYPE_NODE enum valuexercesc::DOMNode
DOMEntity()xercesc::DOMEntity [inline, protected]
DOMEntity(const DOMEntity &other)xercesc::DOMEntity [inline, protected]
DOMNode()xercesc::DOMNode [inline, protected]
DOMNode(const DOMNode &)xercesc::DOMNode [inline, protected]
DOMTreePosition enum namexercesc::DOMNode
ELEMENT_NODE enum valuexercesc::DOMNode
ENTITY_NODE enum valuexercesc::DOMNode
ENTITY_REFERENCE_NODE enum valuexercesc::DOMNode
getActualEncoding() const =0xercesc::DOMEntity [pure virtual]
getAttributes() const =0xercesc::DOMNode [pure virtual]
getBaseURI() const =0xercesc::DOMNode [pure virtual]
getChildNodes() const =0xercesc::DOMNode [pure virtual]
getEncoding() const =0xercesc::DOMEntity [pure virtual]
getFirstChild() const =0xercesc::DOMNode [pure virtual]
getInterface(const XMLCh *feature)=0xercesc::DOMNode [pure virtual]
getLastChild() const =0xercesc::DOMNode [pure virtual]
getLocalName() const =0xercesc::DOMNode [pure virtual]
getNamespaceURI() const =0xercesc::DOMNode [pure virtual]
getNextSibling() const =0xercesc::DOMNode [pure virtual]
getNodeName() const =0xercesc::DOMNode [pure virtual]
getNodeType() const =0xercesc::DOMNode [pure virtual]
getNodeValue() const =0xercesc::DOMNode [pure virtual]
getNotationName() const =0xercesc::DOMEntity [pure virtual]
getOwnerDocument() const =0xercesc::DOMNode [pure virtual]
getParentNode() const =0xercesc::DOMNode [pure virtual]
getPrefix() const =0xercesc::DOMNode [pure virtual]
getPreviousSibling() const =0xercesc::DOMNode [pure virtual]
getPublicId() const =0xercesc::DOMEntity [pure virtual]
getSystemId() const =0xercesc::DOMEntity [pure virtual]
getTextContent() const =0xercesc::DOMNode [pure virtual]
getUserData(const XMLCh *key) const =0xercesc::DOMNode [pure virtual]
getVersion() const =0xercesc::DOMEntity [pure virtual]
hasAttributes() const =0xercesc::DOMNode [pure virtual]
hasChildNodes() const =0xercesc::DOMNode [pure virtual]
insertBefore(DOMNode *newChild, DOMNode *refChild)=0xercesc::DOMNode [pure virtual]
isDefaultNamespace(const XMLCh *namespaceURI) const =0xercesc::DOMNode [pure virtual]
isEqualNode(const DOMNode *arg) const =0xercesc::DOMNode [pure virtual]
isSameNode(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
isSupported(const XMLCh *feature, const XMLCh *version) const =0xercesc::DOMNode [pure virtual]
lookupNamespacePrefix(const XMLCh *namespaceURI, bool useDefault) const =0xercesc::DOMNode [pure virtual]
lookupNamespaceURI(const XMLCh *prefix) const =0xercesc::DOMNode [pure virtual]
NodeType enum namexercesc::DOMNode
normalize()=0xercesc::DOMNode [pure virtual]
NOTATION_NODE enum valuexercesc::DOMNode
PROCESSING_INSTRUCTION_NODE enum valuexercesc::DOMNode
release()=0xercesc::DOMNode [pure virtual]
removeChild(DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
replaceChild(DOMNode *newChild, DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
setActualEncoding(const XMLCh *actualEncoding)=0xercesc::DOMEntity [pure virtual]
setEncoding(const XMLCh *encoding)=0xercesc::DOMEntity [pure virtual]
setNodeValue(const XMLCh *nodeValue)=0xercesc::DOMNode [pure virtual]
setPrefix(const XMLCh *prefix)=0xercesc::DOMNode [pure virtual]
setTextContent(const XMLCh *textContent)=0xercesc::DOMNode [pure virtual]
setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0xercesc::DOMNode [pure virtual]
setVersion(const XMLCh *version)=0xercesc::DOMEntity [pure virtual]
TEXT_NODE enum valuexercesc::DOMNode
TREE_POSITION_ANCESTOR enum valuexercesc::DOMNode
TREE_POSITION_DESCENDANT enum valuexercesc::DOMNode
TREE_POSITION_DISCONNECTED enum valuexercesc::DOMNode
TREE_POSITION_EQUIVALENT enum valuexercesc::DOMNode
TREE_POSITION_FOLLOWING enum valuexercesc::DOMNode
TREE_POSITION_PRECEDING enum valuexercesc::DOMNode
TREE_POSITION_SAME_NODE enum valuexercesc::DOMNode
~DOMEntity()xercesc::DOMEntity [inline, virtual]
~DOMNode()xercesc::DOMNode [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMEntity.html b/docs/dom3-api/classxercesc_1_1DOMEntity.html new file mode 100644 index 00000000..551d235f --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMEntity.html @@ -0,0 +1,469 @@ + + +XQilla DOM Level 3 API: xercesc::DOMEntity Class Reference + + + + + + + +

xercesc::DOMEntity Class Reference

This interface represents an entity, either parsed or unparsed, in an XML document. +More... +

+#include <DOMEntity.hpp> +

+Inheritance diagram for xercesc::DOMEntity:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMEntity ()
 Destructor.
Functions introduced in DOM Level 1
virtual const XMLCh * getPublicId () const =0
 The public identifier associated with the entity, if specified.
virtual const XMLCh * getSystemId () const =0
 The system identifier associated with the entity, if specified.
virtual const XMLCh * getNotationName () const =0
 For unparsed entities, the name of the notation for the entity.
Functions introduced in DOM Level 3.
virtual const XMLCh * getActualEncoding () const =0
 An attribute specifying the actual encoding of this entity, when it is an external parsed entity.
virtual void setActualEncoding (const XMLCh *actualEncoding)=0
 An attribute specifying the actual encoding of this entity, when it is an external parsed entity.
virtual const XMLCh * getEncoding () const =0
 An attribute specifying, as part of the text declaration, the encoding of this entity, when it is an external parsed entity.
virtual void setEncoding (const XMLCh *encoding)=0
 An attribute specifying, as part of the text declaration, the encoding of this entity, when it is an external parsed entity.
virtual const XMLCh * getVersion () const =0
 An attribute specifying, as part of the text declaration, the version number of this entity, when it is an external parsed entity.
virtual void setVersion (const XMLCh *version)=0
 An attribute specifying, as part of the text declaration, the version number of this entity, when it is an external parsed entity.

Protected Member Functions

Hidden constructors
 DOMEntity ()
 DOMEntity (const DOMEntity &other)
+

Detailed Description

+This interface represents an entity, either parsed or unparsed, in an XML document. +

+Note that this models the entity itself not the entity declaration. DOMEntity declaration modeling has been left for a later Level of the DOM specification.

+The nodeName attribute that is inherited from DOMNode contains the name of the entity.

+An XML processor may choose to completely expand entities before the structure model is passed to the DOM; in this case there will be no DOMEntityReference nodes in the document tree.

+XML does not mandate that a non-validating XML processor read and process entity declarations made in the external subset or declared in external parameter entities. This means that parsed entities declared in the external subset need not be expanded by some classes of applications, and that the replacement value of the entity may not be available. When the replacement value is available, the corresponding DOMEntity node's child list represents the structure of that replacement text. Otherwise, the child list is empty.

+The DOM Level 2 does not support editing DOMEntity nodes; if a user wants to make changes to the contents of an DOMEntity, every related DOMEntityReference node has to be replaced in the structure model by a clone of the DOMEntity's contents, and then the desired changes must be made to each of those clones instead. DOMEntity nodes and all their descendants are readonly.

+An DOMEntity node does not have any parent.If the entity contains an unbound namespace prefix, the namespaceURI of the corresponding node in the DOMEntity node subtree is null. The same is true for DOMEntityReference nodes that refer to this entity, when they are created using the createEntityReference method of the DOMDocument interface. The DOM Level 2 does not support any mechanism to resolve namespace prefixes.

+See also the Document Object Model (DOM) Level 2 Core Specification.

+

Since:
DOM Level 1
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMEntity::DOMEntity  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
xercesc::DOMEntity::DOMEntity const DOMEntity other  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMEntity::~DOMEntity  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMEntity::getActualEncoding  )  const [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying the actual encoding of this entity, when it is an external parsed entity. +

+This is null otherwise.

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMEntity::getEncoding  )  const [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying, as part of the text declaration, the encoding of this entity, when it is an external parsed entity. +

+This is null otherwise.

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMEntity::getNotationName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+For unparsed entities, the name of the notation for the entity. +

+For parsed entities, this is null.

+

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMEntity::getPublicId  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The public identifier associated with the entity, if specified. +

+If the public identifier was not specified, this is null.

+

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMEntity::getSystemId  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The system identifier associated with the entity, if specified. +

+If the system identifier was not specified, this is null.

+

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMEntity::getVersion  )  const [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying, as part of the text declaration, the version number of this entity, when it is an external parsed entity. +

+This is null otherwise.

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMEntity::setActualEncoding const XMLCh *  actualEncoding  )  [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying the actual encoding of this entity, when it is an external parsed entity. +

+This is null otherwise.

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMEntity::setEncoding const XMLCh *  encoding  )  [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying, as part of the text declaration, the encoding of this entity, when it is an external parsed entity. +

+This is null otherwise.

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMEntity::setVersion const XMLCh *  version  )  [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying, as part of the text declaration, the version number of this entity, when it is an external parsed entity. +

+This is null otherwise.

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMEntityReference-members.html b/docs/dom3-api/classxercesc_1_1DOMEntityReference-members.html new file mode 100644 index 00000000..7ced3180 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMEntityReference-members.html @@ -0,0 +1,92 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMEntityReference Member List

This is the complete list of members for xercesc::DOMEntityReference, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
appendChild(DOMNode *newChild)=0xercesc::DOMNode [pure virtual]
ATTRIBUTE_NODE enum valuexercesc::DOMNode
CDATA_SECTION_NODE enum valuexercesc::DOMNode
cloneNode(bool deep) const =0xercesc::DOMNode [pure virtual]
COMMENT_NODE enum valuexercesc::DOMNode
compareTreePosition(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
DOCUMENT_FRAGMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_TYPE_NODE enum valuexercesc::DOMNode
DOMEntityReference()xercesc::DOMEntityReference [inline, protected]
DOMEntityReference(const DOMEntityReference &other)xercesc::DOMEntityReference [inline, protected]
DOMNode()xercesc::DOMNode [inline, protected]
DOMNode(const DOMNode &)xercesc::DOMNode [inline, protected]
DOMTreePosition enum namexercesc::DOMNode
ELEMENT_NODE enum valuexercesc::DOMNode
ENTITY_NODE enum valuexercesc::DOMNode
ENTITY_REFERENCE_NODE enum valuexercesc::DOMNode
getAttributes() const =0xercesc::DOMNode [pure virtual]
getBaseURI() const =0xercesc::DOMNode [pure virtual]
getChildNodes() const =0xercesc::DOMNode [pure virtual]
getFirstChild() const =0xercesc::DOMNode [pure virtual]
getInterface(const XMLCh *feature)=0xercesc::DOMNode [pure virtual]
getLastChild() const =0xercesc::DOMNode [pure virtual]
getLocalName() const =0xercesc::DOMNode [pure virtual]
getNamespaceURI() const =0xercesc::DOMNode [pure virtual]
getNextSibling() const =0xercesc::DOMNode [pure virtual]
getNodeName() const =0xercesc::DOMNode [pure virtual]
getNodeType() const =0xercesc::DOMNode [pure virtual]
getNodeValue() const =0xercesc::DOMNode [pure virtual]
getOwnerDocument() const =0xercesc::DOMNode [pure virtual]
getParentNode() const =0xercesc::DOMNode [pure virtual]
getPrefix() const =0xercesc::DOMNode [pure virtual]
getPreviousSibling() const =0xercesc::DOMNode [pure virtual]
getTextContent() const =0xercesc::DOMNode [pure virtual]
getUserData(const XMLCh *key) const =0xercesc::DOMNode [pure virtual]
hasAttributes() const =0xercesc::DOMNode [pure virtual]
hasChildNodes() const =0xercesc::DOMNode [pure virtual]
insertBefore(DOMNode *newChild, DOMNode *refChild)=0xercesc::DOMNode [pure virtual]
isDefaultNamespace(const XMLCh *namespaceURI) const =0xercesc::DOMNode [pure virtual]
isEqualNode(const DOMNode *arg) const =0xercesc::DOMNode [pure virtual]
isSameNode(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
isSupported(const XMLCh *feature, const XMLCh *version) const =0xercesc::DOMNode [pure virtual]
lookupNamespacePrefix(const XMLCh *namespaceURI, bool useDefault) const =0xercesc::DOMNode [pure virtual]
lookupNamespaceURI(const XMLCh *prefix) const =0xercesc::DOMNode [pure virtual]
NodeType enum namexercesc::DOMNode
normalize()=0xercesc::DOMNode [pure virtual]
NOTATION_NODE enum valuexercesc::DOMNode
PROCESSING_INSTRUCTION_NODE enum valuexercesc::DOMNode
release()=0xercesc::DOMNode [pure virtual]
removeChild(DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
replaceChild(DOMNode *newChild, DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
setNodeValue(const XMLCh *nodeValue)=0xercesc::DOMNode [pure virtual]
setPrefix(const XMLCh *prefix)=0xercesc::DOMNode [pure virtual]
setTextContent(const XMLCh *textContent)=0xercesc::DOMNode [pure virtual]
setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0xercesc::DOMNode [pure virtual]
TEXT_NODE enum valuexercesc::DOMNode
TREE_POSITION_ANCESTOR enum valuexercesc::DOMNode
TREE_POSITION_DESCENDANT enum valuexercesc::DOMNode
TREE_POSITION_DISCONNECTED enum valuexercesc::DOMNode
TREE_POSITION_EQUIVALENT enum valuexercesc::DOMNode
TREE_POSITION_FOLLOWING enum valuexercesc::DOMNode
TREE_POSITION_PRECEDING enum valuexercesc::DOMNode
TREE_POSITION_SAME_NODE enum valuexercesc::DOMNode
~DOMEntityReference()xercesc::DOMEntityReference [inline, virtual]
~DOMNode()xercesc::DOMNode [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMEntityReference.html b/docs/dom3-api/classxercesc_1_1DOMEntityReference.html new file mode 100644 index 00000000..2eb30a9b --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMEntityReference.html @@ -0,0 +1,147 @@ + + +XQilla DOM Level 3 API: xercesc::DOMEntityReference Class Reference + + + + + + + +

xercesc::DOMEntityReference Class Reference

DOMEntityReference objects may be inserted into the structure model when an entity reference is in the source document, or when the user wishes to insert an entity reference. +More... +

+#include <DOMEntityReference.hpp> +

+Inheritance diagram for xercesc::DOMEntityReference:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMEntityReference ()
 Destructor.

Protected Member Functions

Hidden constructors
 DOMEntityReference ()
 DOMEntityReference (const DOMEntityReference &other)
+

Detailed Description

+DOMEntityReference objects may be inserted into the structure model when an entity reference is in the source document, or when the user wishes to insert an entity reference. +

+Note that character references and references to predefined entities are considered to be expanded by the HTML or XML processor so that characters are represented by their Unicode equivalent rather than by an entity reference. Moreover, the XML processor may completely expand references to entities while building the structure model, instead of providing DOMEntityReference objects. If it does provide such objects, then for a given DOMEntityReference node, it may be that there is no DOMEntity node representing the referenced entity. If such an DOMEntity exists, then the subtree of the DOMEntityReference node is in general a copy of the DOMEntity node subtree. However, this may not be true when an entity contains an unbound namespace prefix. In such a case, because the namespace prefix resolution depends on where the entity reference is, the descendants of the DOMEntityReference node may be bound to different namespace URIs.

+As for DOMEntity nodes, DOMEntityReference nodes and all their descendants are readonly.

+See also the Document Object Model (DOM) Level 2 Core Specification.

+

Since:
DOM Level 1
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMEntityReference::DOMEntityReference  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
xercesc::DOMEntityReference::DOMEntityReference const DOMEntityReference other  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMEntityReference::~DOMEntityReference  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMEntityReference__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMEntityReference__inherit__graph.map new file mode 100644 index 00000000..1cbbf551 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMEntityReference__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMNode.html 40,9 178,33 diff --git a/docs/dom3-api/classxercesc_1_1DOMEntityReference__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMEntityReference__inherit__graph.md5 new file mode 100644 index 00000000..c0852419 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMEntityReference__inherit__graph.md5 @@ -0,0 +1 @@ +01b5a0e98d849454133d9e09325b768e \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMEntityReference__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMEntityReference__inherit__graph.png new file mode 100644 index 00000000..5dc17e90 Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMEntityReference__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMEntityResolver-members.html b/docs/dom3-api/classxercesc_1_1DOMEntityResolver-members.html new file mode 100644 index 00000000..e2872284 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMEntityResolver-members.html @@ -0,0 +1,30 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMEntityResolver Member List

This is the complete list of members for xercesc::DOMEntityResolver, including all inherited members.

+ + + +
DOMEntityResolver()xercesc::DOMEntityResolver [inline, protected]
resolveEntity(const XMLCh *const publicId, const XMLCh *const systemId, const XMLCh *const baseURI)=0xercesc::DOMEntityResolver [pure virtual]
~DOMEntityResolver()xercesc::DOMEntityResolver [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMEntityResolver.html b/docs/dom3-api/classxercesc_1_1DOMEntityResolver.html new file mode 100644 index 00000000..4ff81fa3 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMEntityResolver.html @@ -0,0 +1,180 @@ + + +XQilla DOM Level 3 API: xercesc::DOMEntityResolver Class Reference + + + + + + + +

xercesc::DOMEntityResolver Class Reference

DOMEntityResolver provides a way for applications to redirect references to external entities. +More... +

+#include <DOMEntityResolver.hpp> +

+List of all members. + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMEntityResolver ()
 Destructor.
Functions introduced in DOM Level 2
virtual DOMInputSourceresolveEntity (const XMLCh *const publicId, const XMLCh *const systemId, const XMLCh *const baseURI)=0
 Allow the application to resolve external entities.

Protected Member Functions

Hidden constructors
 DOMEntityResolver ()
+


Detailed Description

+DOMEntityResolver provides a way for applications to redirect references to external entities. +

+Applications needing to implement customized handling for external entities must implement this interface and register their implementation by setting the entityResolver attribute of the DOMBuilder.

+The DOMBuilder will then allow the application to intercept any external entities (including the external DTD subset and external parameter entities) before including them.

+Many DOM applications will not need to implement this interface, but it will be especially useful for applications that build XML documents from databases or other specialized input sources, or for applications that use URNs.

+

See also:
DOMBuilder::setEntityResolver

+DOMInputSource::DOMInputSource

+
Since:
DOM Level 3
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMEntityResolver::DOMEntityResolver  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMEntityResolver::~DOMEntityResolver  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual DOMInputSource* xercesc::DOMEntityResolver::resolveEntity const XMLCh *const   publicId,
const XMLCh *const   systemId,
const XMLCh *const   baseURI
[pure virtual]
+
+ + + + + +
+   + + +

+Allow the application to resolve external entities. +

+The DOMBuilder will call this method before opening any external entity except the top-level document entity (including the external DTD subset, external entities referenced within the DTD, and external entities referenced within the document element): the application may request that the DOMBuilder resolve the entity itself, that it use an alternative URI, or that it use an entirely different input source.

+Application writers can use this method to redirect external system identifiers to secure and/or local URIs, to look up public identifiers in a catalogue, or to read an entity from a database or other input source (including, for example, a dialog box).

+If the system identifier is a URL, the DOMBuilder parser must resolve it fully before reporting it to the application.

+The returned DOMInputSource is owned by the DOMBuilder which is responsible to clean up the memory.

+"Experimental - subject to change"

+

Parameters:
+ + + + +
publicId The public identifier of the external entity being referenced, or null if none was supplied.
systemId The system identifier of the external entity being referenced.
baseURI The absolute base URI of the resource being parsed, or null if there is no base URI.
+
+
Returns:
A DOMInputSource object describing the new input source, or null to request that the parser open a regular URI connection to the system identifier. The returned DOMInputSource is owned by the DOMBuilder which is responsible to clean up the memory.
+
See also:
DOMInputSource::DOMInputSource
+
Since:
DOM Level 3
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMEntity__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMEntity__inherit__graph.map new file mode 100644 index 00000000..5ae7abb7 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMEntity__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMNode.html 9,9 147,33 diff --git a/docs/dom3-api/classxercesc_1_1DOMEntity__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMEntity__inherit__graph.md5 new file mode 100644 index 00000000..f5c52ae3 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMEntity__inherit__graph.md5 @@ -0,0 +1 @@ +f8a8309b66205cbb5c145c3fb8a0da42 \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMEntity__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMEntity__inherit__graph.png new file mode 100644 index 00000000..b69ae56e Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMEntity__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMError-members.html b/docs/dom3-api/classxercesc_1_1DOMError-members.html new file mode 100644 index 00000000..173f6c38 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMError-members.html @@ -0,0 +1,45 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMError Member List

This is the complete list of members for xercesc::DOMError, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
DOM_SEVERITY_ERROR enum valuexercesc::DOMError
DOM_SEVERITY_FATAL_ERROR enum valuexercesc::DOMError
DOM_SEVERITY_WARNING enum valuexercesc::DOMError
DOMError()xercesc::DOMError [inline, protected]
ErrorSeverity enum namexercesc::DOMError
getLocation() const =0xercesc::DOMError [pure virtual]
getMessage() const =0xercesc::DOMError [pure virtual]
getRelatedData() const =0xercesc::DOMError [pure virtual]
getRelatedException() const =0xercesc::DOMError [pure virtual]
getSeverity() const =0xercesc::DOMError [pure virtual]
getType() const =0xercesc::DOMError [pure virtual]
setLocation(DOMLocator *const location)=0xercesc::DOMError [pure virtual]
setMessage(const XMLCh *const message)=0xercesc::DOMError [pure virtual]
setRelatedData(void *relatedData)=0xercesc::DOMError [pure virtual]
setRelatedException(void *exc) const =0xercesc::DOMError [pure virtual]
setSeverity(const short severity)=0xercesc::DOMError [pure virtual]
setType(const XMLCh *type)=0xercesc::DOMError [pure virtual]
~DOMError()xercesc::DOMError [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMError.html b/docs/dom3-api/classxercesc_1_1DOMError.html new file mode 100644 index 00000000..5faea52c --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMError.html @@ -0,0 +1,608 @@ + + +XQilla DOM Level 3 API: xercesc::DOMError Class Reference + + + + + + + +

xercesc::DOMError Class Reference

DOMError is an interface that describes an error. +More... +

+#include <DOMError.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

Public constants
enum  ErrorSeverity { DOM_SEVERITY_WARNING = 0, +DOM_SEVERITY_ERROR = 1, +DOM_SEVERITY_FATAL_ERROR = 2 + }
 The severity of the error described by the DOMError. More...

Public Member Functions

Destructor
virtual ~DOMError ()
 Destructor.
Functions introduced in DOM Level 3
virtual short getSeverity () const =0
 Get the severity of the error.
virtual const XMLCh * getMessage () const =0
 Get the message describing the error that occured.
virtual DOMLocatorgetLocation () const =0
 Get the location of the error.
virtual void * getRelatedException () const =0
 The related platform dependent exception if any.
virtual const XMLCh * getType () const =0
 A XMLCh* indicating which related data is expected in relatedData.
virtual void * getRelatedData () const =0
 The related DOMError.type dependent data if any.
virtual void setSeverity (const short severity)=0
 Set the severity of the error.
virtual void setMessage (const XMLCh *const message)=0
 Set the error message.
virtual void setLocation (DOMLocator *const location)=0
 Set the location of the error.
virtual void setRelatedException (void *exc) const =0
 The related platform dependent exception if any.
virtual void setType (const XMLCh *type)=0
 A XMLCh* indicating which related data is expected in relatedData.
virtual void setRelatedData (void *relatedData)=0
 The related DOMError.type dependent data if any.

Protected Member Functions

Hidden constructors
 DOMError ()
+


Detailed Description

+DOMError is an interface that describes an error. +

+

See also:
DOMErrorHandler::handleError
+
Since:
DOM Level 3
+ +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
enum xercesc::DOMError::ErrorSeverity
+
+ + + + + +
+   + + +

+The severity of the error described by the DOMError. +

+

Since:
DOM Level 3
+
Enumerator:
+ + + + +
DOM_SEVERITY_WARNING  +
DOM_SEVERITY_ERROR  +
DOM_SEVERITY_FATAL_ERROR  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMError::DOMError  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMError::~DOMError  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual DOMLocator* xercesc::DOMError::getLocation  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the location of the error. +

+"Experimental - subject to change"

+

See also:
setLocation
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMError::getMessage  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the message describing the error that occured. +

+"Experimental - subject to change"

+

See also:
setMessage
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual void* xercesc::DOMError::getRelatedData  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The related DOMError.type dependent data if any. +

+"Experimental - subject to change"

+

See also:
setRelatedData
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual void* xercesc::DOMError::getRelatedException  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The related platform dependent exception if any. +

+"Experimental - subject to change"

+

See also:
setRelatedException
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual short xercesc::DOMError::getSeverity  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the severity of the error. +

+"Experimental - subject to change"

+

See also:
setSeverity
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMError::getType  )  const [pure virtual]
+
+ + + + + +
+   + + +

+A XMLCh* indicating which related data is expected in relatedData. +

+Users should refer to the specification of the error in order to find its XMLCh* type and relatedData definitions if any.

+Note: As an example, [DOM Level 3 Load and Save] does not keep the [baseURI] property defined on a Processing Instruction information item. Therefore, the DOMBuilder generates a SEVERITY_WARNING with type "infoset-baseURI" and the lost [baseURI] property represented as a DOMString in the relatedData attribute.

+"Experimental - subject to change"

+

See also:
setType
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMError::setLocation DOMLocator *const   location  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the location of the error. +

+"Experimental - subject to change"

+

Parameters:
+ + +
location the location of the error to set.
+
+
See also:
getLocation
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMError::setMessage const XMLCh *const   message  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the error message. +

+"Experimental - subject to change"

+

Parameters:
+ + +
message the error message to set.
+
+
See also:
getMessage
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMError::setRelatedData void *  relatedData  )  [pure virtual]
+
+ + + + + +
+   + + +

+The related DOMError.type dependent data if any. +

+"Experimental - subject to change"

+

See also:
getRelatedData
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMError::setRelatedException void *  exc  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The related platform dependent exception if any. +

+"Experimental - subject to change"

+

Parameters:
+ + +
exc the related exception to set.
+
+
See also:
getRelatedException
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMError::setSeverity const short  severity  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the severity of the error. +

+"Experimental - subject to change"

+

Parameters:
+ + +
severity the type of the error to set
+
+
See also:
getLocation
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMError::setType const XMLCh *  type  )  [pure virtual]
+
+ + + + + +
+   + + +

+A XMLCh* indicating which related data is expected in relatedData. +

+Users should refer to the specification of the error in order to find its XMLCh* type and relatedData definitions if any.

+Note: As an example, [DOM Level 3 Load and Save] does not keep the [baseURI] property defined on a Processing Instruction information item. Therefore, the DOMBuilder generates a SEVERITY_WARNING with type "infoset-baseURI" and the lost [baseURI] property represented as a DOMString in the relatedData attribute.

+"Experimental - subject to change"

+

See also:
getType
+
Since:
DOM Level 3
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMErrorHandler-members.html b/docs/dom3-api/classxercesc_1_1DOMErrorHandler-members.html new file mode 100644 index 00000000..c6ec7094 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMErrorHandler-members.html @@ -0,0 +1,30 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMErrorHandler Member List

This is the complete list of members for xercesc::DOMErrorHandler, including all inherited members.

+ + + +
DOMErrorHandler()xercesc::DOMErrorHandler [inline, protected]
handleError(const DOMError &domError)=0xercesc::DOMErrorHandler [pure virtual]
~DOMErrorHandler()xercesc::DOMErrorHandler [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMErrorHandler.html b/docs/dom3-api/classxercesc_1_1DOMErrorHandler.html new file mode 100644 index 00000000..76cb8bed --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMErrorHandler.html @@ -0,0 +1,156 @@ + + +XQilla DOM Level 3 API: xercesc::DOMErrorHandler Class Reference + + + + + + + +

xercesc::DOMErrorHandler Class Reference

Basic interface for DOM error handlers. +More... +

+#include <DOMErrorHandler.hpp> +

+List of all members. + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMErrorHandler ()
 Destructor.
Functions introduced in DOM Level 3
virtual bool handleError (const DOMError &domError)=0
 This method is called on the error handler when an error occures.

Protected Member Functions

Hidden constructors
 DOMErrorHandler ()
+


Detailed Description

+Basic interface for DOM error handlers. +

+DOMErrorHandler is a callback interface that the DOM implementation can call when reporting errors that happens while processing XML data, or when doing some other processing (e.g. validating a document).

+The application that is using the DOM implementation is expected to implement this interface.

+

See also:
DOMBuilder::setErrorHandler
+
Since:
DOM Level 3
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMErrorHandler::DOMErrorHandler  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMErrorHandler::~DOMErrorHandler  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual bool xercesc::DOMErrorHandler::handleError const DOMError domError  )  [pure virtual]
+
+ + + + + +
+   + + +

+This method is called on the error handler when an error occures. +

+"Experimental - subject to change"

+

Parameters:
+ + +
domError The error object that describes the error, this object may be reused by the DOM implementation across multiple calls to the handleEvent method.
+
+
Returns:
If the handleError method returns true the DOM implementation should continue as if the error didn't happen when possible, if the method returns false then the DOM implementation should stop the current processing when possible.
+
Since:
DOM Level 3
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMException-members.html b/docs/dom3-api/classxercesc_1_1DOMException-members.html new file mode 100644 index 00000000..9207667f --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMException-members.html @@ -0,0 +1,52 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMException Member List

This is the complete list of members for xercesc::DOMException, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
codexercesc::DOMException
DOMException()xercesc::DOMException
DOMException(short code, const XMLCh *message, MemoryManager *const memoryManager=XMLPlatformUtils::fgMemoryManager)xercesc::DOMException
DOMException(const DOMException &other)xercesc::DOMException
DOMSTRING_SIZE_ERR enum valuexercesc::DOMException
ExceptionCode enum namexercesc::DOMException
fMemoryManagerxercesc::DOMException [protected]
getMessage() const xercesc::DOMException [inline]
HIERARCHY_REQUEST_ERR enum valuexercesc::DOMException
INDEX_SIZE_ERR enum valuexercesc::DOMException
INUSE_ATTRIBUTE_ERR enum valuexercesc::DOMException
INVALID_ACCESS_ERR enum valuexercesc::DOMException
INVALID_CHARACTER_ERR enum valuexercesc::DOMException
INVALID_MODIFICATION_ERR enum valuexercesc::DOMException
INVALID_STATE_ERR enum valuexercesc::DOMException
msgxercesc::DOMException
NAMESPACE_ERR enum valuexercesc::DOMException
NO_DATA_ALLOWED_ERR enum valuexercesc::DOMException
NO_MODIFICATION_ALLOWED_ERR enum valuexercesc::DOMException
NOT_FOUND_ERR enum valuexercesc::DOMException
NOT_SUPPORTED_ERR enum valuexercesc::DOMException
SYNTAX_ERR enum valuexercesc::DOMException
VALIDATION_ERR enum valuexercesc::DOMException
WRONG_DOCUMENT_ERR enum valuexercesc::DOMException
~DOMException()xercesc::DOMException [virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMException.html b/docs/dom3-api/classxercesc_1_1DOMException.html new file mode 100644 index 00000000..5cd406e9 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMException.html @@ -0,0 +1,426 @@ + + +XQilla DOM Level 3 API: xercesc::DOMException Class Reference + + + + + + + +

xercesc::DOMException Class Reference

#include <DOMException.hpp> +

+Inheritance diagram for xercesc::DOMException:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

Public Contants
enum  ExceptionCode {
+  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, +VALIDATION_ERR = 16 +
+ }
 ExceptionCode. More...

Public Member Functions

const XMLCh * getMessage () const
Constructors
 DOMException ()
 Default constructor for DOMException.
 DOMException (short code, const XMLCh *message, MemoryManager *const memoryManager=XMLPlatformUtils::fgMemoryManager)
 Constructor which takes an error code and a message.
 DOMException (const DOMException &other)
 Copy constructor.
Destructor.
virtual ~DOMException ()
 Destructor for DOMException.

Public Attributes

Public variables
ExceptionCode code
 A code value, from the set defined by the ExceptionCode enum, indicating the type of error that occured.
const XMLCh * msg
 A string value.

Protected Attributes

MemoryManagerfMemoryManager
+

Member Enumeration Documentation

+

+ + + + +
+ + + + +
enum xercesc::DOMException::ExceptionCode
+
+ + + + + +
+   + + +

+ExceptionCode. +

+INDEX_SIZE_ERR: If index or size is negative, or greater than the allowed value.

+DOMSTRING_SIZE_ERR: If the specified range of text does not fit into a DOMString.

+HIERARCHY_REQUEST_ERR: If any node is inserted somewhere it doesn't belong.

+WRONG_DOCUMENT_ERR: If a node is used in a different document than the one that created it (that doesn't support it).

+INVALID_CHARACTER_ERR: If an invalid or illegal character is specified, such as in a name. See production 2 in the XML specification for the definition of a legal character, and production 5 for the definition of a legal name character.

+NO_DATA_ALLOWED_ERR: If data is specified for a node which does not support data.

+NO_MODIFICATION_ALLOWED_ERR: If an attempt is made to modify an object where modifications are not allowed.

+NOT_FOUND_ERR: If an attempt is made to reference a node in a context where it does not exist.

+NOT_SUPPORTED_ERR: If the implementation does not support the requested type of object or operation.

+INUSE_ATTRIBUTE_ERR: If an attempt is made to add an attribute that is already in use elsewhere.

+The above are since DOM Level 1

Since:
DOM Level 1
+

+INVALID_STATE_ERR: If an attempt is made to use an object that is not, or is no longer, usable.

+SYNTAX_ERR: If an invalid or illegal string is specified.

+INVALID_MODIFICATION_ERR: If an attempt is made to modify the type of the underlying object.

+NAMESPACE_ERR: If an attempt is made to create or change an object in a way which is incorrect with regard to namespaces.

+INVALID_ACCESS_ERR: If a parameter or an operation is not supported by the underlying object.

+The above are since DOM Level 2

Since:
DOM Level 2
+

+VALIDATION_ERR: If a call to a method such as insertBefore or removeChild would make the Node invalid with respect to "partial validity", this exception would be raised and the operation would not be done.

+The above is since DOM Level 2

Since:
DOM Level 3
+
Enumerator:
+ + + + + + + + + + + + + + + + + +
INDEX_SIZE_ERR  +
DOMSTRING_SIZE_ERR  +
HIERARCHY_REQUEST_ERR  +
WRONG_DOCUMENT_ERR  +
INVALID_CHARACTER_ERR  +
NO_DATA_ALLOWED_ERR  +
NO_MODIFICATION_ALLOWED_ERR  +
NOT_FOUND_ERR  +
NOT_SUPPORTED_ERR  +
INUSE_ATTRIBUTE_ERR  +
INVALID_STATE_ERR  +
SYNTAX_ERR  +
INVALID_MODIFICATION_ERR  +
NAMESPACE_ERR  +
INVALID_ACCESS_ERR  +
VALIDATION_ERR  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMException::DOMException  ) 
+
+ + + + + +
+   + + +

+Default constructor for DOMException. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xercesc::DOMException::DOMException short  code,
const XMLCh *  message,
MemoryManager *const   memoryManager = XMLPlatformUtils::fgMemoryManager
+
+ + + + + +
+   + + +

+Constructor which takes an error code and a message. +

+

Parameters:
+ + + + +
code The error code which indicates the exception
message The string containing the error message
memoryManager The memory manager used to (de)allocate memory
+
+
+

+ + + + +
+ + + + + + + + + +
xercesc::DOMException::DOMException const DOMException other  ) 
+
+ + + + + +
+   + + +

+Copy constructor. +

+

Parameters:
+ + +
other The object to be copied.
+
+
+

+ + + + +
+ + + + + + + + +
xercesc::DOMException::~DOMException  )  [virtual]
+
+ + + + + +
+   + + +

+Destructor for DOMException. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
const XMLCh * xercesc::DOMException::getMessage  )  const [inline]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
ExceptionCode xercesc::DOMException::code
+
+ + + + + +
+   + + +

+A code value, from the set defined by the ExceptionCode enum, indicating the type of error that occured. +

+ +

+Reimplemented in xercesc::DOMRangeException.

+

+ + + + +
+ + + + +
MemoryManager* xercesc::DOMException::fMemoryManager [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const XMLCh* xercesc::DOMException::msg
+
+ + + + + +
+   + + +

+A string value. +

+Applications may use this field to hold an error message. The field value is not set by the DOM implementation, meaning that the string will be empty when an exception is first thrown.

+


The documentation for this class was generated from the following files: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMException__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMException__inherit__graph.map new file mode 100644 index 00000000..c48fbb12 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMException__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMRangeException.html 7,83 213,107 diff --git a/docs/dom3-api/classxercesc_1_1DOMException__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMException__inherit__graph.md5 new file mode 100644 index 00000000..f8943685 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMException__inherit__graph.md5 @@ -0,0 +1 @@ +1d43e239c27a322a1feca5b594c8ca5b \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMException__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMException__inherit__graph.png new file mode 100644 index 00000000..37bc71a0 Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMException__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMImplementation-members.html b/docs/dom3-api/classxercesc_1_1DOMImplementation-members.html new file mode 100644 index 00000000..d99b3b61 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMImplementation-members.html @@ -0,0 +1,44 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMImplementation Member List

This is the complete list of members for xercesc::DOMImplementation, including all inherited members.

+ + + + + + + + + + + + + + + + + +
createDocument(const XMLCh *namespaceURI, const XMLCh *qualifiedName, DOMDocumentType *doctype, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0xercesc::DOMImplementation [pure virtual]
createDocument(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0xercesc::DOMImplementation [pure virtual]
createDocumentType(const XMLCh *qualifiedName, const XMLCh *publicId, const XMLCh *systemId)=0xercesc::DOMImplementation [pure virtual]
createDOMBuilder(const short mode, const XMLCh *const schemaType, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager, XMLGrammarPool *const gramPool=0)=0xercesc::DOMImplementationLS [pure virtual]
createDOMInputSource()=0xercesc::DOMImplementationLS [pure virtual]
createDOMWriter(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0xercesc::DOMImplementationLS [pure virtual]
DOMImplementation()xercesc::DOMImplementation [inline, protected]
DOMImplementationLS()xercesc::DOMImplementationLS [inline, protected]
getImplementation()xercesc::DOMImplementation [static]
getInterface(const XMLCh *feature)=0xercesc::DOMImplementation [pure virtual]
hasFeature(const XMLCh *feature, const XMLCh *version) const =0xercesc::DOMImplementation [pure virtual]
loadDOMExceptionMsg(const DOMException::ExceptionCode msgToLoad, XMLCh *const toFill, const unsigned int maxChars)xercesc::DOMImplementation [static]
loadDOMExceptionMsg(const DOMRangeException::RangeExceptionCode msgToLoad, XMLCh *const toFill, const unsigned int maxChars)xercesc::DOMImplementation [static]
MODE_ASYNCHRONOUS enum valuexercesc::DOMImplementationLS
MODE_SYNCHRONOUS enum valuexercesc::DOMImplementationLS
~DOMImplementation()xercesc::DOMImplementation [inline, virtual]
~DOMImplementationLS()xercesc::DOMImplementationLS [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMImplementation.html b/docs/dom3-api/classxercesc_1_1DOMImplementation.html new file mode 100644 index 00000000..9b446128 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMImplementation.html @@ -0,0 +1,520 @@ + + +XQilla DOM Level 3 API: xercesc::DOMImplementation Class Reference + + + + + + + +

xercesc::DOMImplementation Class Reference

The DOMImplementation interface provides a number of methods for performing operations that are independent of any particular instance of the document object model. +More... +

+#include <DOMImplementation.hpp> +

+Inheritance diagram for xercesc::DOMImplementation:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Non-standard extension

virtual DOMDocumentcreateDocument (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0
 Non-standard extension.
static DOMImplementationgetImplementation ()
 Non-standard extension.
static bool loadDOMExceptionMsg (const DOMException::ExceptionCode msgToLoad, XMLCh *const toFill, const unsigned int maxChars)
 Non-standard extension.
static bool loadDOMExceptionMsg (const DOMRangeException::RangeExceptionCode msgToLoad, XMLCh *const toFill, const unsigned int maxChars)
 Non-standard extension.

Public Member Functions

Destructor
virtual ~DOMImplementation ()
 Destructor.
Functions introduced in DOM Level 1
virtual bool hasFeature (const XMLCh *feature, const XMLCh *version) const =0
 Test if the DOM implementation implements a specific feature.
Functions introduced in DOM Level 2
virtual DOMDocumentTypecreateDocumentType (const XMLCh *qualifiedName, const XMLCh *publicId, const XMLCh *systemId)=0
 Creates an empty DOMDocumentType node.
virtual DOMDocumentcreateDocument (const XMLCh *namespaceURI, const XMLCh *qualifiedName, DOMDocumentType *doctype, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0
 Creates a DOMDocument object of the specified type with its document element.
Functions introduced in DOM Level 3
virtual DOMImplementationgetInterface (const XMLCh *feature)=0
 This method makes available a DOMImplementation's specialized interface (see ).

Protected Member Functions

Hidden constructors
 DOMImplementation ()
+

Detailed Description

+The DOMImplementation interface provides a number of methods for performing operations that are independent of any particular instance of the document object model. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMImplementation::DOMImplementation  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMImplementation::~DOMImplementation  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual DOMDocument* xercesc::DOMImplementation::createDocument MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  )  [pure virtual]
+
+ + + + + +
+   + + +

+Non-standard extension. +

+Create a completely empty document that has neither a root element or a doctype node.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual DOMDocument* xercesc::DOMImplementation::createDocument const XMLCh *  namespaceURI,
const XMLCh *  qualifiedName,
DOMDocumentType doctype,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[pure virtual]
+
+ + + + + +
+   + + +

+Creates a DOMDocument object of the specified type with its document element. +

+

Parameters:
+ + + + + +
namespaceURI The namespace URI of the document element to create.
qualifiedName The qualified name of the document element to be created.
doctype The type of document to be created or null. When doctype is not null, its ownerDocument attribute is set to the document being created.
manager Pointer to the memory manager to be used to allocate objects.
+
+
Returns:
A new DOMDocument object.
+
Exceptions:
+ + +
DOMException INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an illegal character.
+NAMESPACE_ERR: Raised if the qualifiedName is malformed, if the qualifiedName has a prefix and the namespaceURI is null, or if the qualifiedName has a prefix that is "xml" and the namespaceURI is different from " http://www.w3.org/XML/1998/namespace" , or if the DOM implementation does not support the "XML" feature but a non-null namespace URI was provided, since namespaces were defined by XML.
+WRONG_DOCUMENT_ERR: Raised if doctype has already been used with a different document or was created from a different implementation.
+NOT_SUPPORTED_ERR: May be raised by DOM implementations which do not support the "XML" feature, if they choose not to support this method. Other features introduced in the future, by the DOM WG or in extensions defined by other groups, may also demand support for this method; please consult the definition of the feature to see if it requires this method.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual DOMDocumentType* xercesc::DOMImplementation::createDocumentType const XMLCh *  qualifiedName,
const XMLCh *  publicId,
const XMLCh *  systemId
[pure virtual]
+
+ + + + + +
+   + + +

+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.

Parameters:
+ + + + +
qualifiedName The qualified name of the document type to be created.
publicId The external subset public identifier.
systemId The external subset system identifier.
+
+
Returns:
A new DOMDocumentType node with ownerDocument set to null.
+
Exceptions:
+ + +
DOMException INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an illegal character.
+NAMESPACE_ERR: Raised if the qualifiedName is malformed.
+NOT_SUPPORTED_ERR: May be raised by DOM implementations which do not support the "XML" feature, if they choose not to support this method. Other features introduced in the future, by the DOM WG or in extensions defined by other groups, may also demand support for this method; please consult the definition of the feature to see if it requires this method.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
static DOMImplementation* xercesc::DOMImplementation::getImplementation  )  [static]
+
+ + + + + +
+   + + +

+Non-standard extension. +

+Factory method for getting a DOMImplementation object. The DOM implementation retains ownership of the returned object. Application code should NOT delete it.

+

+ + + + +
+ + + + + + + + + +
virtual DOMImplementation* xercesc::DOMImplementation::getInterface const XMLCh *  feature  )  [pure virtual]
+
+ + + + + +
+   + + +

+This method makes available a DOMImplementation's specialized interface (see ). +

+"Experimental - subject to change"

+

Parameters:
+ + +
feature The name of the feature requested (case-insensitive).
+
+
Returns:
Returns an alternate DOMImplementation which implements the specialized APIs of the specified feature, if any, or null if there is no alternate DOMImplementation object which implements interfaces associated with that feature. Any alternate DOMImplementation returned by this method must delegate to the primary core DOMImplementation and not return results inconsistent with the primary DOMImplementation
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool xercesc::DOMImplementation::hasFeature const XMLCh *  feature,
const XMLCh *  version
const [pure virtual]
+
+ + + + + +
+   + + +

+Test if the DOM implementation implements a specific feature. +

+

Parameters:
+ + + +
feature The name of the feature to test (case-insensitive). The values used by DOM features are defined throughout the DOM Level 2 specifications and listed in the section. The name must be an XML name. To avoid possible conflicts, as a convention, names referring to features defined outside the DOM specification should be made unique.
version This is the version number of the feature to test. In Level 2, the string can be either "2.0" or "1.0". If the version is not specified, supporting any version of the feature causes the method to return true.
+
+
Returns:
true if the feature is implemented in the specified version, false otherwise.
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static bool xercesc::DOMImplementation::loadDOMExceptionMsg const DOMRangeException::RangeExceptionCode  msgToLoad,
XMLCh *const   toFill,
const unsigned int  maxChars
[static]
+
+ + + + + +
+   + + +

+Non-standard extension. +

+Load the default error text message for DOMRangeException.

Parameters:
+ + + + +
msgToLoad The DOM RangeExceptionCode id to be processed
toFill The buffer that will hold the output on return. The size of this buffer should at least be 'maxChars + 1'.
maxChars The maximum number of output characters that can be accepted. If the result will not fit, it is an error.
+
+
Returns:
true if the message is successfully loaded
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static bool xercesc::DOMImplementation::loadDOMExceptionMsg const DOMException::ExceptionCode  msgToLoad,
XMLCh *const   toFill,
const unsigned int  maxChars
[static]
+
+ + + + + +
+   + + +

+Non-standard extension. +

+Load the default error text message for DOMException.

Parameters:
+ + + + +
msgToLoad The DOM ExceptionCode id to be processed
toFill The buffer that will hold the output on return. The size of this buffer should at least be 'maxChars + 1'.
maxChars The maximum number of output characters that can be accepted. If the result will not fit, it is an error.
+
+
Returns:
true if the message is successfully loaded
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMImplementationLS-members.html b/docs/dom3-api/classxercesc_1_1DOMImplementationLS-members.html new file mode 100644 index 00000000..6e4e3d1a --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMImplementationLS-members.html @@ -0,0 +1,34 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMImplementationLS Member List

This is the complete list of members for xercesc::DOMImplementationLS, including all inherited members.

+ + + + + + + +
createDOMBuilder(const short mode, const XMLCh *const schemaType, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager, XMLGrammarPool *const gramPool=0)=0xercesc::DOMImplementationLS [pure virtual]
createDOMInputSource()=0xercesc::DOMImplementationLS [pure virtual]
createDOMWriter(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0xercesc::DOMImplementationLS [pure virtual]
DOMImplementationLS()xercesc::DOMImplementationLS [inline, protected]
MODE_ASYNCHRONOUS enum valuexercesc::DOMImplementationLS
MODE_SYNCHRONOUS enum valuexercesc::DOMImplementationLS
~DOMImplementationLS()xercesc::DOMImplementationLS [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMImplementationLS.html b/docs/dom3-api/classxercesc_1_1DOMImplementationLS.html new file mode 100644 index 00000000..ab98feb0 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMImplementationLS.html @@ -0,0 +1,307 @@ + + +XQilla DOM Level 3 API: xercesc::DOMImplementationLS Class Reference + + + + + + + +

xercesc::DOMImplementationLS Class Reference

#include <DOMImplementationLS.hpp> +

+Inheritance diagram for xercesc::DOMImplementationLS:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

Public constants
enum  { MODE_SYNCHRONOUS = 1, +MODE_ASYNCHRONOUS = 2 + }
 Create a synchronous or an asynchronous DOMBuilder. More...

Public Member Functions

Destructor
virtual ~DOMImplementationLS ()
 Destructor.
Functions introduced in DOM Level 3
virtual DOMBuildercreateDOMBuilder (const short mode, const XMLCh *const schemaType, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager, XMLGrammarPool *const gramPool=0)=0
 Create a new DOMBuilder.
virtual DOMWritercreateDOMWriter (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0
 Create a new DOMWriter.
virtual DOMInputSourcecreateDOMInputSource ()=0
 Create a new "empty" DOMInputSource.

Protected Member Functions

Hidden constructors
 DOMImplementationLS ()
+

Detailed Description

+DOMImplementationLS contains the factory methods for creating objects that implement the DOMBuilder (parser) and DOMWriter (serializer) interfaces.

+An object that implements DOMImplementationLS is obtained by doing a binding specific cast from DOMImplementation to DOMImplementationLS. Implementations supporting the Load and Save feature must implement the DOMImplementationLS interface on whatever object implements the DOMImplementation interface.

+

Since:
DOM Level 3
+ +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
anonymous enum
+
+ + + + + +
+   + + +

+Create a synchronous or an asynchronous DOMBuilder. +

+

See also:
createDOMBuilder(const short mode, const XMLCh* const schemaType)
+
Since:
DOM Level 3
+
Enumerator:
+ + + +
MODE_SYNCHRONOUS  +
MODE_ASYNCHRONOUS  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMImplementationLS::DOMImplementationLS  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMImplementationLS::~DOMImplementationLS  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual DOMBuilder* xercesc::DOMImplementationLS::createDOMBuilder const short  mode,
const XMLCh *const   schemaType,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager,
XMLGrammarPool *const   gramPool = 0
[pure virtual]
+
+ + + + + +
+   + + +

+Create a new DOMBuilder. +

+The newly constructed parser may then be configured by means of its setFeature method, and used to parse documents by means of its parse method.

+"Experimental - subject to change"

+

Parameters:
+ + + + + +
mode The mode argument is either MODE_SYNCHRONOUS or MODE_ASYNCHRONOUS, if mode is MODE_SYNCHRONOUS then the DOMBuilder that is created will operate in synchronous mode, if it's MODE_ASYNCHRONOUS then the DOMBuilder that is created will operate in asynchronous mode.
schemaType An absolute URI representing the type of the schema language used during the load of a DOMDocument using the newly created DOMBuilder. Note that no lexical checking is done on the absolute URI. In order to create a DOMBuilder for any kind of schema types (i.e. the DOMBuilder will be free to use any schema found), use the value null.
manager Pointer to the memory manager to be used to allocate objects.
gramPool The collection of cached grammers.
+
+
Returns:
The newly created DOMBuilder object. This DOMBuilder is either synchronous or asynchronous depending on the value of the mode argument.
+
Exceptions:
+ + +
DOMException NOT_SUPPORTED_ERR: Raised if the requested mode or schema type is not supported.
+
+
See also:
DOMBuilder
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual DOMInputSource* xercesc::DOMImplementationLS::createDOMInputSource  )  [pure virtual]
+
+ + + + + +
+   + + +

+Create a new "empty" DOMInputSource. +

+"Experimental - subject to change"

+

Returns:
The newly created DOMInputSource object.
+
Exceptions:
+ + +
DOMException NOT_SUPPORTED_ERR: Raised if this function is not supported by implementation
+
+
See also:
DOMInputSource
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMWriter* xercesc::DOMImplementationLS::createDOMWriter MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  )  [pure virtual]
+
+ + + + + +
+   + + +

+Create a new DOMWriter. +

+DOMWriters are used to serialize a DOM tree back into an XML document.

+"Experimental - subject to change"

+

Returns:
The newly created DOMWriter object.
+
See also:
DOMWriter
+
Since:
DOM Level 3
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMImplementationLS__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMImplementationLS__inherit__graph.map new file mode 100644 index 00000000..e6ee3dd9 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMImplementationLS__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMImplementation.html 15,83 213,107 diff --git a/docs/dom3-api/classxercesc_1_1DOMImplementationLS__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMImplementationLS__inherit__graph.md5 new file mode 100644 index 00000000..15dc2bc5 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMImplementationLS__inherit__graph.md5 @@ -0,0 +1 @@ +ef6a932c33465dc307c7faed348baf5c \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMImplementationLS__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMImplementationLS__inherit__graph.png new file mode 100644 index 00000000..f2e894a3 Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMImplementationLS__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMImplementationRegistry-members.html b/docs/dom3-api/classxercesc_1_1DOMImplementationRegistry-members.html new file mode 100644 index 00000000..33839da7 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMImplementationRegistry-members.html @@ -0,0 +1,29 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMImplementationRegistry Member List

This is the complete list of members for xercesc::DOMImplementationRegistry, including all inherited members.

+ + +
addSource(DOMImplementationSource *source)xercesc::DOMImplementationRegistry [static]
getDOMImplementation(const XMLCh *features)xercesc::DOMImplementationRegistry [static]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMImplementationRegistry.html b/docs/dom3-api/classxercesc_1_1DOMImplementationRegistry.html new file mode 100644 index 00000000..87eb5bb0 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMImplementationRegistry.html @@ -0,0 +1,119 @@ + + +XQilla DOM Level 3 API: xercesc::DOMImplementationRegistry Class Reference + + + + + + + +

xercesc::DOMImplementationRegistry Class Reference

#include <DOMImplementationRegistry.hpp> +

+List of all members. + + + + + + + + + +

Static Public Member Functions

Functions introduced in DOM Level 3
static DOMImplementationgetDOMImplementation (const XMLCh *features)
 Return the first registered implementation that has the desired features, or null if none is found.
static void addSource (DOMImplementationSource *source)
 Register an implementation.
+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
static void xercesc::DOMImplementationRegistry::addSource DOMImplementationSource source  )  [static]
+
+ + + + + +
+   + + +

+Register an implementation. +

+"Experimental - subject to change"

+

Parameters:
+ + +
source A DOMImplementation Source object to be added to the registry. The registry does NOT adopt the source object. Users still own it.
+
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
static DOMImplementation* xercesc::DOMImplementationRegistry::getDOMImplementation const XMLCh *  features  )  [static]
+
+ + + + + +
+   + + +

+Return the first registered implementation that has the desired features, or null if none is found. +

+"Experimental - subject to change"

+

Parameters:
+ + +
features A string that specifies which features are required. This is a space separated list in which each feature is specified by its name optionally followed by a space and a version number. This is something like: "XML 1.0 Traversal 2.0"
+
+
Returns:
An implementation that has the desired features, or null if this source has none.
+
Since:
DOM Level 3
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMImplementationSource-members.html b/docs/dom3-api/classxercesc_1_1DOMImplementationSource-members.html new file mode 100644 index 00000000..e7c486b9 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMImplementationSource-members.html @@ -0,0 +1,30 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMImplementationSource Member List

This is the complete list of members for xercesc::DOMImplementationSource, including all inherited members.

+ + + +
DOMImplementationSource()xercesc::DOMImplementationSource [inline, protected]
getDOMImplementation(const XMLCh *features) const =0xercesc::DOMImplementationSource [pure virtual]
~DOMImplementationSource()xercesc::DOMImplementationSource [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMImplementationSource.html b/docs/dom3-api/classxercesc_1_1DOMImplementationSource.html new file mode 100644 index 00000000..88ccf87f --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMImplementationSource.html @@ -0,0 +1,144 @@ + + +XQilla DOM Level 3 API: xercesc::DOMImplementationSource Class Reference + + + + + + + +

xercesc::DOMImplementationSource Class Reference

#include <DOMImplementationSource.hpp> +

+List of all members. + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMImplementationSource ()
 Destructor.
Functions introduced in DOM Level 3
virtual DOMImplementationgetDOMImplementation (const XMLCh *features) const =0
 A method to request a DOM implementation.

Protected Member Functions

Hidden constructors
 DOMImplementationSource ()
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMImplementationSource::DOMImplementationSource  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMImplementationSource::~DOMImplementationSource  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual DOMImplementation* xercesc::DOMImplementationSource::getDOMImplementation const XMLCh *  features  )  const [pure virtual]
+
+ + + + + +
+   + + +

+A method to request a DOM implementation. +

+"Experimental - subject to change"

+

Parameters:
+ + +
features A string that specifies which features are required. This is a space separated list in which each feature is specified by its name optionally followed by a space and a version number. This is something like: "XML 1.0 Traversal 2.0"
+
+
Returns:
An implementation that has the desired features, or null if this source has none.
+
Since:
DOM Level 3
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMImplementation__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMImplementation__inherit__graph.map new file mode 100644 index 00000000..8f2b85b8 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMImplementation__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMImplementationLS.html 7,9 221,33 diff --git a/docs/dom3-api/classxercesc_1_1DOMImplementation__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMImplementation__inherit__graph.md5 new file mode 100644 index 00000000..bdce3f04 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMImplementation__inherit__graph.md5 @@ -0,0 +1 @@ +805a9866c39412abc43233144c39cd7f \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMImplementation__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMImplementation__inherit__graph.png new file mode 100644 index 00000000..ba7da0b5 Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMImplementation__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMInputSource-members.html b/docs/dom3-api/classxercesc_1_1DOMInputSource-members.html new file mode 100644 index 00000000..c07bdb0a --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMInputSource-members.html @@ -0,0 +1,41 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMInputSource Member List

This is the complete list of members for xercesc::DOMInputSource, including all inherited members.

+ + + + + + + + + + + + + + +
DOMInputSource()xercesc::DOMInputSource [inline, protected]
getBaseURI() const =0xercesc::DOMInputSource [pure virtual]
getEncoding() const =0xercesc::DOMInputSource [pure virtual]
getIssueFatalErrorIfNotFound() const =0xercesc::DOMInputSource [pure virtual]
getPublicId() const =0xercesc::DOMInputSource [pure virtual]
getSystemId() const =0xercesc::DOMInputSource [pure virtual]
makeStream() const =0xercesc::DOMInputSource [pure virtual]
release()=0xercesc::DOMInputSource [pure virtual]
setBaseURI(const XMLCh *const baseURI)=0xercesc::DOMInputSource [pure virtual]
setEncoding(const XMLCh *const encodingStr)=0xercesc::DOMInputSource [pure virtual]
setIssueFatalErrorIfNotFound(const bool flag)=0xercesc::DOMInputSource [pure virtual]
setPublicId(const XMLCh *const publicId)=0xercesc::DOMInputSource [pure virtual]
setSystemId(const XMLCh *const systemId)=0xercesc::DOMInputSource [pure virtual]
~DOMInputSource()xercesc::DOMInputSource [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMInputSource.html b/docs/dom3-api/classxercesc_1_1DOMInputSource.html new file mode 100644 index 00000000..d13d1da4 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMInputSource.html @@ -0,0 +1,577 @@ + + +XQilla DOM Level 3 API: xercesc::DOMInputSource Class Reference + + + + + + + +

xercesc::DOMInputSource Class Reference

This interface represents a single input source for an XML entity. +More... +

+#include <DOMInputSource.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMInputSource ()
 Destructor.
Functions introduced in DOM Level 3
virtual const XMLCh * getEncoding () const =0
 An input source can be set to force the parser to assume a particular encoding for the data that input source reprsents, via the setEncoding() method.
virtual const XMLCh * getPublicId () const =0
 Get the public identifier for this input source.
virtual const XMLCh * getSystemId () const =0
 Get the system identifier for this input source.
virtual const XMLCh * getBaseURI () const =0
 Get the base URI to be used for resolving relative URIs to absolute URIs.
virtual void setEncoding (const XMLCh *const encodingStr)=0
 Set the encoding which will be required for use with the XML text read via a stream opened by this input source.
virtual void setPublicId (const XMLCh *const publicId)=0
 Set the public identifier for this input source.
virtual void setSystemId (const XMLCh *const systemId)=0
 Set the system identifier for this input source.
virtual void setBaseURI (const XMLCh *const baseURI)=0
 Set the base URI to be used for resolving relative URIs to absolute URIs.
Non-standard Extension
virtual BinInputStream * makeStream () const =0
 Makes the byte stream for this input source.
virtual void setIssueFatalErrorIfNotFound (const bool flag)=0
 Indicates if the parser should issue fatal error if this input source is not found.
virtual bool getIssueFatalErrorIfNotFound () const =0
 Get the flag that indicates if the parser should issue fatal error if this input source is not found.
virtual void release ()=0
 Called to indicate that this DOMInputSource is no longer in use and that the implementation may relinquish any resources associated with it.

Protected Member Functions

Hidden constructors
 DOMInputSource ()
+


Detailed Description

+This interface represents a single input source for an XML entity. +

+This interface allows an application to encapsulate information about an input source in a single object, which may include a public identifier, a system identifier, a byte stream (possibly with a specified encoding), and/or a character stream.

+There are two places that the application will deliver this input source to the parser: as the argument to the parse method, or as the return value of the DOMEntityResolver.resolveEntity method.

+The DOMBuilder will use the DOMInputSource object to determine how to read XML input. If there is a character stream available, the parser will read that stream directly; if not, the parser will use a byte stream, if available; if neither a character stream nor a byte stream is available, the parser will attempt to open a URI connection to the resource identified by the system identifier.

+A DOMInputSource object belongs to the application: the parser shall never modify it in any way (it may modify a copy if necessary).

+

See also:
DOMBuilder::parse

+DOMEntityResolver::resolveEntity

+
Since:
DOM Level 3
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMInputSource::DOMInputSource  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMInputSource::~DOMInputSource  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMInputSource::getBaseURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the base URI to be used for resolving relative URIs to absolute URIs. +

+If the baseURI is itself a relative URI, the behavior is implementation dependent.

+"Experimental - subject to change"

+

Returns:
The base URI.
+
See also:
setBaseURI
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMInputSource::getEncoding  )  const [pure virtual]
+
+ + + + + +
+   + + +

+An input source can be set to force the parser to assume a particular encoding for the data that input source reprsents, via the setEncoding() method. +

+This method returns name of the encoding that is to be forced. If the encoding has never been forced, it returns a null pointer.

+"Experimental - subject to change"

+

Returns:
The forced encoding, or null if none was supplied.
+
See also:
setEncoding
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual bool xercesc::DOMInputSource::getIssueFatalErrorIfNotFound  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the flag that indicates if the parser should issue fatal error if this input source is not found. +

+"Experimental - subject to change"

+

Returns:
True if the parser should issue fatal error if this input source is not found. False if the parser issue warning message instead.
+
See also:
setIssueFatalErrorIfNotFound
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMInputSource::getPublicId  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the public identifier for this input source. +

+"Experimental - subject to change"

+

Returns:
The public identifier, or null if none was supplied.
+
See also:
setPublicId
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMInputSource::getSystemId  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the system identifier for this input source. +

+"Experimental - subject to change"

+If the system ID is a URL, it will be fully resolved.

+

Returns:
The system identifier.
+
See also:
setSystemId
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual BinInputStream* xercesc::DOMInputSource::makeStream  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Makes the byte stream for this input source. +

+The derived class must create and return a binary input stream of an appropriate type for its kind of data source. The returned stream must be dynamically allocated and becomes the parser's property.

+"Experimental - subject to change"

+

See also:
BinInputStream
+
+

+ + + + +
+ + + + + + + + +
virtual void xercesc::DOMInputSource::release  )  [pure virtual]
+
+ + + + + +
+   + + +

+Called to indicate that this DOMInputSource is no longer in use and that the implementation may relinquish any resources associated with it. +

+Access to a released object will lead to unexpected result.

+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMInputSource::setBaseURI const XMLCh *const   baseURI  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the base URI to be used for resolving relative URIs to absolute URIs. +

+If the baseURI is itself a relative URI, the behavior is implementation dependent.

+"Experimental - subject to change"

+

Parameters:
+ + +
baseURI The base URI.
+
+
See also:
getBaseURI
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMInputSource::setEncoding const XMLCh *const   encodingStr  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the encoding which will be required for use with the XML text read via a stream opened by this input source. +

+This is usually not set, allowing the encoding to be sensed in the usual XML way. However, in some cases, the encoding in the file is known to be incorrect because of intermediate transcoding, for instance encapsulation within a MIME document.

+"Experimental - subject to change"

+

Parameters:
+ + +
encodingStr The name of the encoding to force.
+
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMInputSource::setIssueFatalErrorIfNotFound const bool  flag  )  [pure virtual]
+
+ + + + + +
+   + + +

+Indicates if the parser should issue fatal error if this input source is not found. +

+If set to false, the parser issue warning message instead.

+"Experimental - subject to change"

+

Parameters:
+ + +
flag True if the parser should issue fatal error if this input source is not found. If set to false, the parser issue warning message instead. (Default: true)
+
+
See also:
getIssueFatalErrorIfNotFound
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMInputSource::setPublicId const XMLCh *const   publicId  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the public identifier for this input source. +

+The public identifier is always optional: if the application writer includes one, it will be provided as part of the location information.

+"Experimental - subject to change"

+

Parameters:
+ + +
publicId The public identifier as a string.
+
+
See also:
getPublicId
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMInputSource::setSystemId const XMLCh *const   systemId  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the system identifier for this input source. +

+The system id is always required. The public id may be used to map to another system id, but the system id must always be present as a fall back.

+If the system ID is a URL, it must be fully resolved.

+"Experimental - subject to change"

+

Parameters:
+ + +
systemId The system identifier as a string.
+
+
See also:
getSystemId
+
Since:
DOM Level 3
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMLocator-members.html b/docs/dom3-api/classxercesc_1_1DOMLocator-members.html new file mode 100644 index 00000000..c75cebd9 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMLocator-members.html @@ -0,0 +1,39 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMLocator Member List

This is the complete list of members for xercesc::DOMLocator, including all inherited members.

+ + + + + + + + + + + + +
DOMLocator()xercesc::DOMLocator [inline, protected]
getColumnNumber() const =0xercesc::DOMLocator [pure virtual]
getErrorNode() const =0xercesc::DOMLocator [pure virtual]
getLineNumber() const =0xercesc::DOMLocator [pure virtual]
getOffset() const =0xercesc::DOMLocator [pure virtual]
getURI() const =0xercesc::DOMLocator [pure virtual]
setColumnNumber(const XMLSSize_t columnNumber)=0xercesc::DOMLocator [pure virtual]
setErrorNode(DOMNode *const errorNode)=0xercesc::DOMLocator [pure virtual]
setLineNumber(const XMLSSize_t lineNumber)=0xercesc::DOMLocator [pure virtual]
setOffset(const XMLSSize_t offset)=0xercesc::DOMLocator [pure virtual]
setURI(const XMLCh *const uri)=0xercesc::DOMLocator [pure virtual]
~DOMLocator()xercesc::DOMLocator [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMLocator.html b/docs/dom3-api/classxercesc_1_1DOMLocator.html new file mode 100644 index 00000000..bfbf3820 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMLocator.html @@ -0,0 +1,497 @@ + + +XQilla DOM Level 3 API: xercesc::DOMLocator Class Reference + + + + + + + +

xercesc::DOMLocator Class Reference

DOMLocator is an interface that describes a location. +More... +

+#include <DOMLocator.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMLocator ()
 Destructor.
Functions introduced in DOM Level 3
virtual XMLSSize_t getLineNumber () const =0
 Get the line number where the error occured.
virtual XMLSSize_t getColumnNumber () const =0
 Get the column number where the error occured.
virtual XMLSSize_t getOffset () const =0
 Get the byte or character offset into the input source, if we're parsing a file or a byte stream then this will be the byte offset into that stream, but if a character media is parsed then the offset will be the character offset.
virtual DOMNodegetErrorNode () const =0
 Get the DOMNode where the error occured, or null if there is no node available.
virtual const XMLCh * getURI () const =0
 Get the URI where the error occured, or null if there is no URI available.
virtual void setLineNumber (const XMLSSize_t lineNumber)=0
 Set the line number of the error.
virtual void setColumnNumber (const XMLSSize_t columnNumber)=0
 Set the column number of the error.
virtual void setOffset (const XMLSSize_t offset)=0
 Set the byte/character offset.
virtual void setErrorNode (DOMNode *const errorNode)=0
 Set the DOMNode where the error occured.
virtual void setURI (const XMLCh *const uri)=0
 Set the URI where the error occured.

Protected Member Functions

Hidden constructors
 DOMLocator ()
+


Detailed Description

+DOMLocator is an interface that describes a location. +

+(e.g. where an error occured).

+

See also:
DOMError::DOMError
+
Since:
DOM Level 3
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMLocator::DOMLocator  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMLocator::~DOMLocator  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual XMLSSize_t xercesc::DOMLocator::getColumnNumber  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the column number where the error occured. +

+The value is -1 if there is no column number available.

+"Experimental - subject to change"

+

See also:
setColumnNumber
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMLocator::getErrorNode  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the DOMNode where the error occured, or null if there is no node available. +

+"Experimental - subject to change"

+

See also:
setErrorNode
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual XMLSSize_t xercesc::DOMLocator::getLineNumber  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the line number where the error occured. +

+The value is -1 if there is no line number available.

+"Experimental - subject to change"

+

See also:
setLineNumber
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual XMLSSize_t xercesc::DOMLocator::getOffset  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the byte or character offset into the input source, if we're parsing a file or a byte stream then this will be the byte offset into that stream, but if a character media is parsed then the offset will be the character offset. +

+The value is -1 if there is no offset available.

+"Experimental - subject to change"

+

See also:
setOffset
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMLocator::getURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the URI where the error occured, or null if there is no URI available. +

+"Experimental - subject to change"

+

See also:
setURI
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMLocator::setColumnNumber const XMLSSize_t  columnNumber  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the column number of the error. +

+"Experimental - subject to change"

+

Parameters:
+ + +
columnNumber the column number to set.
+
+
See also:
getColumnNumner
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMLocator::setErrorNode DOMNode *const   errorNode  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the DOMNode where the error occured. +

+"Experimental - subject to change"

+

Parameters:
+ + +
errorNode the DOMNode to set
+
+
See also:
getErrorNode
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMLocator::setLineNumber const XMLSSize_t  lineNumber  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the line number of the error. +

+"Experimental - subject to change"

+

Parameters:
+ + +
lineNumber the line number to set
+
+
See also:
getLinNumner
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMLocator::setOffset const XMLSSize_t  offset  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the byte/character offset. +

+"Experimental - subject to change"

+

Parameters:
+ + +
offset the byte/characte offset to set.
+
+
See also:
getOffset
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMLocator::setURI const XMLCh *const   uri  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the URI where the error occured. +

+"Experimental - subject to change"

+

Parameters:
+ + +
uri the URI to set.
+
+
See also:
getURI
+
Since:
DOM Level 3
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMNamedNodeMap-members.html b/docs/dom3-api/classxercesc_1_1DOMNamedNodeMap-members.html new file mode 100644 index 00000000..e6488fa1 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMNamedNodeMap-members.html @@ -0,0 +1,37 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMNamedNodeMap Member List

This is the complete list of members for xercesc::DOMNamedNodeMap, including all inherited members.

+ + + + + + + + + + +
DOMNamedNodeMap()xercesc::DOMNamedNodeMap [inline, protected]
getLength() const =0xercesc::DOMNamedNodeMap [pure virtual]
getNamedItem(const XMLCh *name) const =0xercesc::DOMNamedNodeMap [pure virtual]
getNamedItemNS(const XMLCh *namespaceURI, const XMLCh *localName) const =0xercesc::DOMNamedNodeMap [pure virtual]
item(XMLSize_t index) const =0xercesc::DOMNamedNodeMap [pure virtual]
removeNamedItem(const XMLCh *name)=0xercesc::DOMNamedNodeMap [pure virtual]
removeNamedItemNS(const XMLCh *namespaceURI, const XMLCh *localName)=0xercesc::DOMNamedNodeMap [pure virtual]
setNamedItem(DOMNode *arg)=0xercesc::DOMNamedNodeMap [pure virtual]
setNamedItemNS(DOMNode *arg)=0xercesc::DOMNamedNodeMap [pure virtual]
~DOMNamedNodeMap()xercesc::DOMNamedNodeMap [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMNamedNodeMap.html b/docs/dom3-api/classxercesc_1_1DOMNamedNodeMap.html new file mode 100644 index 00000000..42350191 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMNamedNodeMap.html @@ -0,0 +1,474 @@ + + +XQilla DOM Level 3 API: xercesc::DOMNamedNodeMap Class Reference + + + + + + + +

xercesc::DOMNamedNodeMap Class Reference

DOMNamedNodeMaps are used to represent collections of nodes that can be accessed by name. +More... +

+#include <DOMNamedNodeMap.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMNamedNodeMap ()
 Destructor.
Functions introduced in DOM Level 1
virtual DOMNodesetNamedItem (DOMNode *arg)=0
 Adds a node using its nodeName attribute.
virtual DOMNodeitem (XMLSize_t index) const =0
 Returns the indexth item in the map.
virtual DOMNodegetNamedItem (const XMLCh *name) const =0
 Retrieves a node specified by name.
virtual XMLSize_t getLength () const =0
 The number of nodes in the map.
virtual DOMNoderemoveNamedItem (const XMLCh *name)=0
 Removes a node specified by name.
Functions introduced in DOM Level 2
virtual DOMNodegetNamedItemNS (const XMLCh *namespaceURI, const XMLCh *localName) const =0
 Retrieves a node specified by local name and namespace URI.
virtual DOMNodesetNamedItemNS (DOMNode *arg)=0
 Adds a node using its namespaceURI and localName.
virtual DOMNoderemoveNamedItemNS (const XMLCh *namespaceURI, const XMLCh *localName)=0
 Removes a node specified by local name and namespace URI.

Protected Member Functions

Hidden constructors
 DOMNamedNodeMap ()
+


Detailed Description

+DOMNamedNodeMaps are used to represent collections of nodes that can be accessed by name. +

+Note that DOMNamedNodeMap does not inherit from DOMNodeList; DOMNamedNodeMaps are not maintained in any particular order. Nodes contained in a DOMNamedNodeMap may also be accessed by an ordinal index, but this is simply to allow convenient enumeration of the contents, and does not imply that the DOM specifies an order to these Nodes.

+

Since:
DOM Level 1
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMNamedNodeMap::DOMNamedNodeMap  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMNamedNodeMap::~DOMNamedNodeMap  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual XMLSize_t xercesc::DOMNamedNodeMap::getLength  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The number of nodes in the map. +

+The range of valid child node indices is 0 to length-1 inclusive.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMNode* xercesc::DOMNamedNodeMap::getNamedItem const XMLCh *  name  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Retrieves a node specified by name. +

+

Parameters:
+ + +
name The nodeName of a node to retrieve.
+
+
Returns:
A DOMNode (of any type) with the specified nodeName, or null if it does not identify any node in the map.
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual DOMNode* xercesc::DOMNamedNodeMap::getNamedItemNS const XMLCh *  namespaceURI,
const XMLCh *  localName
const [pure virtual]
+
+ + + + + +
+   + + +

+Retrieves a node specified by local name and namespace URI. +

+

Parameters:
+ + + +
namespaceURI The namespace URI of the node to retrieve.
localName The local name of the node to retrieve.
+
+
Returns:
A DOMNode (of any type) with the specified local name and namespace URI, or null if they do not identify any node in the map.
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMNode* xercesc::DOMNamedNodeMap::item XMLSize_t  index  )  const [pure virtual]
+
+ + + + + +
+   + + +

+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.

Parameters:
+ + +
index Index into the map.
+
+
Returns:
The node at the indexth position in the DOMNamedNodeMap, or null if that is not a valid index.
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMNode* xercesc::DOMNamedNodeMap::removeNamedItem const XMLCh *  name  )  [pure virtual]
+
+ + + + + +
+   + + +

+Removes a node specified by name. +

+If the removed node is an DOMAttr with a default value it is immediately replaced.

Parameters:
+ + +
name The nodeName of a node to remove.
+
+
Returns:
The node removed from the map if a node with such a name exists.
+
Exceptions:
+ + +
DOMException NOT_FOUND_ERR: Raised if there is no node named name in the map.
+ NO_MODIFICATION_ALLOWED_ERR: Raised if this DOMNamedNodeMap is readonly.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual DOMNode* xercesc::DOMNamedNodeMap::removeNamedItemNS const XMLCh *  namespaceURI,
const XMLCh *  localName
[pure virtual]
+
+ + + + + +
+   + + +

+Removes a node specified by local name and namespace URI. +

+

Parameters:
+ + + +
namespaceURI The namespace URI of the node to remove.
localName The local name of the node to remove. When this DOMNamedNodeMap contains the attributes attached to an element, as returned by the attributes attribute of the DOMNode 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.
+
+
Returns:
The node removed from the map if a node with such a local name and namespace URI exists.
+
Exceptions:
+ + +
DOMException NOT_FOUND_ERR: Raised if there is no node named name in the map.
+ NO_MODIFICATION_ALLOWED_ERR: Raised if this DOMNamedNodeMap is readonly.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMNode* xercesc::DOMNamedNodeMap::setNamedItem DOMNode arg  )  [pure virtual]
+
+ + + + + +
+   + + +

+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.

Parameters:
+ + +
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.
+
+
Returns:
If the new DOMNode replaces an existing node the replaced DOMNode is returned, otherwise null is returned.
+
Exceptions:
+ + +
DOMException WRONG_DOCUMENT_ERR: Raised if arg was created from a different document than the one that created the DOMNamedNodeMap.
+NO_MODIFICATION_ALLOWED_ERR: Raised if this DOMNamedNodeMap is readonly.
+INUSE_ATTRIBUTE_ERR: Raised if arg is an DOMAttr that is already an attribute of another DOMElement object. The DOM user must explicitly clone DOMAttr nodes to re-use them in other elements.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMNode* xercesc::DOMNamedNodeMap::setNamedItemNS DOMNode arg  )  [pure virtual]
+
+ + + + + +
+   + + +

+Adds a node using its namespaceURI and localName. +

+

Parameters:
+ + +
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.
+
+
Returns:
If the new DOMNode replaces an existing node the replaced DOMNode is returned, otherwise null is returned.
+
Exceptions:
+ + +
DOMException WRONG_DOCUMENT_ERR: Raised if arg was created from a different document than the one that created the DOMNamedNodeMap.
+NO_MODIFICATION_ALLOWED_ERR: Raised if this DOMNamedNodeMap is readonly.
+INUSE_ATTRIBUTE_ERR: Raised if arg is an DOMAttr that is already an attribute of another DOMElement object. The DOM user must explicitly clone DOMAttr nodes to re-use them in other elements.
+
+
Since:
DOM Level 2
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMNode-members.html b/docs/dom3-api/classxercesc_1_1DOMNode-members.html new file mode 100644 index 00000000..001502ac --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMNode-members.html @@ -0,0 +1,89 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMNode Member List

This is the complete list of members for xercesc::DOMNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
appendChild(DOMNode *newChild)=0xercesc::DOMNode [pure virtual]
ATTRIBUTE_NODE enum valuexercesc::DOMNode
CDATA_SECTION_NODE enum valuexercesc::DOMNode
cloneNode(bool deep) const =0xercesc::DOMNode [pure virtual]
COMMENT_NODE enum valuexercesc::DOMNode
compareTreePosition(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
DOCUMENT_FRAGMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_TYPE_NODE enum valuexercesc::DOMNode
DOMNode()xercesc::DOMNode [inline, protected]
DOMNode(const DOMNode &)xercesc::DOMNode [inline, protected]
DOMTreePosition enum namexercesc::DOMNode
ELEMENT_NODE enum valuexercesc::DOMNode
ENTITY_NODE enum valuexercesc::DOMNode
ENTITY_REFERENCE_NODE enum valuexercesc::DOMNode
getAttributes() const =0xercesc::DOMNode [pure virtual]
getBaseURI() const =0xercesc::DOMNode [pure virtual]
getChildNodes() const =0xercesc::DOMNode [pure virtual]
getFirstChild() const =0xercesc::DOMNode [pure virtual]
getInterface(const XMLCh *feature)=0xercesc::DOMNode [pure virtual]
getLastChild() const =0xercesc::DOMNode [pure virtual]
getLocalName() const =0xercesc::DOMNode [pure virtual]
getNamespaceURI() const =0xercesc::DOMNode [pure virtual]
getNextSibling() const =0xercesc::DOMNode [pure virtual]
getNodeName() const =0xercesc::DOMNode [pure virtual]
getNodeType() const =0xercesc::DOMNode [pure virtual]
getNodeValue() const =0xercesc::DOMNode [pure virtual]
getOwnerDocument() const =0xercesc::DOMNode [pure virtual]
getParentNode() const =0xercesc::DOMNode [pure virtual]
getPrefix() const =0xercesc::DOMNode [pure virtual]
getPreviousSibling() const =0xercesc::DOMNode [pure virtual]
getTextContent() const =0xercesc::DOMNode [pure virtual]
getUserData(const XMLCh *key) const =0xercesc::DOMNode [pure virtual]
hasAttributes() const =0xercesc::DOMNode [pure virtual]
hasChildNodes() const =0xercesc::DOMNode [pure virtual]
insertBefore(DOMNode *newChild, DOMNode *refChild)=0xercesc::DOMNode [pure virtual]
isDefaultNamespace(const XMLCh *namespaceURI) const =0xercesc::DOMNode [pure virtual]
isEqualNode(const DOMNode *arg) const =0xercesc::DOMNode [pure virtual]
isSameNode(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
isSupported(const XMLCh *feature, const XMLCh *version) const =0xercesc::DOMNode [pure virtual]
lookupNamespacePrefix(const XMLCh *namespaceURI, bool useDefault) const =0xercesc::DOMNode [pure virtual]
lookupNamespaceURI(const XMLCh *prefix) const =0xercesc::DOMNode [pure virtual]
NodeType enum namexercesc::DOMNode
normalize()=0xercesc::DOMNode [pure virtual]
NOTATION_NODE enum valuexercesc::DOMNode
PROCESSING_INSTRUCTION_NODE enum valuexercesc::DOMNode
release()=0xercesc::DOMNode [pure virtual]
removeChild(DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
replaceChild(DOMNode *newChild, DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
setNodeValue(const XMLCh *nodeValue)=0xercesc::DOMNode [pure virtual]
setPrefix(const XMLCh *prefix)=0xercesc::DOMNode [pure virtual]
setTextContent(const XMLCh *textContent)=0xercesc::DOMNode [pure virtual]
setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0xercesc::DOMNode [pure virtual]
TEXT_NODE enum valuexercesc::DOMNode
TREE_POSITION_ANCESTOR enum valuexercesc::DOMNode
TREE_POSITION_DESCENDANT enum valuexercesc::DOMNode
TREE_POSITION_DISCONNECTED enum valuexercesc::DOMNode
TREE_POSITION_EQUIVALENT enum valuexercesc::DOMNode
TREE_POSITION_FOLLOWING enum valuexercesc::DOMNode
TREE_POSITION_PRECEDING enum valuexercesc::DOMNode
TREE_POSITION_SAME_NODE enum valuexercesc::DOMNode
~DOMNode()xercesc::DOMNode [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMNode.html b/docs/dom3-api/classxercesc_1_1DOMNode.html new file mode 100644 index 00000000..77397316 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMNode.html @@ -0,0 +1,1872 @@ + + +XQilla DOM Level 3 API: xercesc::DOMNode Class Reference + + + + + + + +

xercesc::DOMNode Class Reference

The DOMNode interface is the primary datatype for the entire Document Object Model. +More... +

+#include <DOMNode.hpp> +

+Inheritance diagram for xercesc::DOMNode:

Inheritance graph
+ + + + + + + + + + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

Public Contants
enum  NodeType {
+  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 +
+ }
 NodeType. More...
enum  DOMTreePosition {
+  TREE_POSITION_PRECEDING = 0x01, +TREE_POSITION_FOLLOWING = 0x02, +TREE_POSITION_ANCESTOR = 0x04, +TREE_POSITION_DESCENDANT = 0x08, +
+  TREE_POSITION_EQUIVALENT = 0x10, +TREE_POSITION_SAME_NODE = 0x20, +TREE_POSITION_DISCONNECTED = 0x00 +
+ }
 TreePosition:. More...

Public Member Functions

Destructor
virtual ~DOMNode ()
 Destructor.
Functions introduced in DOM Level 1
virtual const XMLCh * getNodeName () const =0
 The name of this node, depending on its type; see the table above.
virtual const XMLCh * getNodeValue () const =0
 Gets the value of this node, depending on its type.
virtual short getNodeType () const =0
 An enum value representing the type of the underlying object.
virtual DOMNodegetParentNode () const =0
 Gets the parent of this node.
virtual DOMNodeListgetChildNodes () const =0
 Gets a DOMNodeList that contains all children of this node.
virtual DOMNodegetFirstChild () const =0
 Gets the first child of this node.
virtual DOMNodegetLastChild () const =0
 Gets the last child of this node.
virtual DOMNodegetPreviousSibling () const =0
 Gets the node immediately preceding this node.
virtual DOMNodegetNextSibling () const =0
 Gets the node immediately following this node.
virtual DOMNamedNodeMapgetAttributes () const =0
 Gets a DOMNamedNodeMap containing the attributes of this node (if it is an DOMElement) or null otherwise.
virtual DOMDocumentgetOwnerDocument () const =0
 Gets the DOMDocument object associated with this node.
virtual DOMNodecloneNode (bool deep) const =0
 Returns a duplicate of this node.
virtual DOMNodeinsertBefore (DOMNode *newChild, DOMNode *refChild)=0
 Inserts the node newChild before the existing child node refChild.
virtual DOMNodereplaceChild (DOMNode *newChild, DOMNode *oldChild)=0
 Replaces the child node oldChild with newChild in the list of children, and returns the oldChild node.
virtual DOMNoderemoveChild (DOMNode *oldChild)=0
 Removes the child node indicated by oldChild from the list of children, and returns it.
virtual DOMNodeappendChild (DOMNode *newChild)=0
 Adds the node newChild to the end of the list of children of this node.
virtual bool hasChildNodes () const =0
 This is a convenience method to allow easy determination of whether a node has any children.
virtual void setNodeValue (const XMLCh *nodeValue)=0
 Sets the value of the node.
Functions introduced in DOM Level 2.
virtual void normalize ()=0
 Puts all DOMText nodes in the full depth of the sub-tree underneath this DOMNode, including attribute nodes, into a "normal" form where only markup (e.g., tags, comments, processing instructions, CDATA sections, and entity references) separates DOMText nodes, i.e., there are neither adjacent DOMText nodes nor empty DOMText nodes.
virtual bool isSupported (const XMLCh *feature, const XMLCh *version) const =0
 Tests whether the DOM implementation implements a specific feature and that feature is supported by this node.
virtual const XMLCh * getNamespaceURI () const =0
 Get the namespace URI of this node, or null if it is unspecified.
virtual const XMLCh * getPrefix () const =0
 Get the namespace prefix of this node, or null if it is unspecified.
virtual const XMLCh * getLocalName () const =0
 Returns the local part of the qualified name of this node.
virtual void setPrefix (const XMLCh *prefix)=0
 Set the namespace prefix of this node.
virtual bool hasAttributes () const =0
 Returns whether this node (if it is an element) has any attributes.
Functions introduced in DOM Level 3.
virtual bool isSameNode (const DOMNode *other) const =0
 Returns whether this node is the same node as the given one.
virtual bool isEqualNode (const DOMNode *arg) const =0
 Tests whether two nodes are equal.
virtual void * setUserData (const XMLCh *key, void *data, DOMUserDataHandler *handler)=0
 Associate an object to a key on this node.
virtual void * getUserData (const XMLCh *key) const =0
 Retrieves the object associated to a key on a this node.
virtual const XMLCh * getBaseURI () const =0
 The absolute base URI of this node or null if undefined.
virtual short compareTreePosition (const DOMNode *other) const =0
 Compares a node with this node with regard to their position in the tree and according to the document order.
virtual const XMLCh * getTextContent () const =0
 This attribute returns the text content of this node and its descendants.
virtual void setTextContent (const XMLCh *textContent)=0
 This attribute removes any possible children this node may have and, if the new string is not empty or null, replaced by a single DOMText node containing the string this attribute is set to.
virtual const XMLCh * lookupNamespacePrefix (const XMLCh *namespaceURI, bool useDefault) const =0
 Look up the prefix associated to the given namespace URI, starting from this node.
virtual bool isDefaultNamespace (const XMLCh *namespaceURI) const =0
 This method checks if the specified namespaceURI is the default namespace or not.
virtual const XMLCh * lookupNamespaceURI (const XMLCh *prefix) const =0
 Look up the namespace URI associated to the given prefix, starting from this node.
virtual DOMNodegetInterface (const XMLCh *feature)=0
 This method makes available a DOMNode's specialized interface.
Non-standard Extension
virtual void release ()=0
 Called to indicate that this Node (and its associated children) is no longer in use and that the implementation may relinquish any resources associated with it and its associated children.

Protected Member Functions

Hidden constructors
 DOMNode ()
 DOMNode (const DOMNode &)
+

Detailed Description

+The DOMNode interface is the primary datatype for the entire Document Object Model. +

+It represents a single node in the document tree. While all objects implementing the DOMNode interface expose methods for dealing with children, not all objects implementing the DOMNode interface may have children. For example, DOMText nodes may not have children, and adding children to such nodes results in a DOMException being raised.

+The attributes nodeName, nodeValue and attributes are included as a mechanism to get at node information without casting down to the specific derived interface. In cases where there is no obvious mapping of these attributes for a specific nodeType (e.g., nodeValue for an DOMElement or attributes for a DOMComment ), this returns null. Note that the specialized interfaces may contain additional and more convenient mechanisms to get and set the relevant information.

+The values of nodeName, nodeValue, and attributes vary according to the node type as follows: + + + + + + + + + + + + + + + + + + + + + + + + + + +
Interface nodeName nodeValue attributes
DOMAttr name of attribute value of attribute null
DOMCDATASection "cdata-section" content of the CDATA Section null
DOMComment "comment" content of the comment null
DOMDocument "document" null null
DOMDocumentFragment "document-fragment" null null
DOMDocumentType document type name null null
DOMElement tag name null NamedNodeMap
DOMEntity entity name null null
DOMEntityReference name of entity referenced null null
DOMNotation notation name null null
DOMProcessingInstruction target entire content excluding the target null
DOMText "text" content of the text node null
+

+See also the Document Object Model (DOM) Level 2 Core Specification.

+

Since:
DOM Level 1
+ +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
enum xercesc::DOMNode::DOMTreePosition
+
+ + + + + +
+   + + +

+TreePosition:. +

+"Experimental - subject to change"

+TREE_POSITION_PRECEDING: The node precedes the reference node.

+TREE_POSITION_FOLLOWING: The node follows the reference node.

+TREE_POSITION_ANCESTOR: The node is an ancestor of the reference node.

+TREE_POSITION_DESCENDANT: The node is a descendant of the reference node.

+TREE_POSITION_EQUIVALENT: The two nodes have an equivalent position. This is the case of two attributes that have the same ownerElement, and two nodes that are the same.

+TREE_POSITION_SAME_NODE: The two nodes are the same. Two nodes that are the same have an equivalent position, though the reverse may not be true.

+TREE_POSITION_DISCONNECTED: The two nodes are disconnected, they do not have any common ancestor. This is the case of two nodes that are not in the same document.

+

Since:
DOM Level 3
+
Enumerator:
+ + + + + + + + +
TREE_POSITION_PRECEDING  +
TREE_POSITION_FOLLOWING  +
TREE_POSITION_ANCESTOR  +
TREE_POSITION_DESCENDANT  +
TREE_POSITION_EQUIVALENT  +
TREE_POSITION_SAME_NODE  +
TREE_POSITION_DISCONNECTED  +
+
+
+

+ + + + +
+ + + + +
enum xercesc::DOMNode::NodeType
+
+ + + + + +
+   + + +

+NodeType. +

+

Since:
DOM Level 1
+
Enumerator:
+ + + + + + + + + + + + + +
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  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMNode::DOMNode  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
xercesc::DOMNode::DOMNode const DOMNode  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMNode::~DOMNode  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual DOMNode* xercesc::DOMNode::appendChild DOMNode newChild  )  [pure virtual]
+
+ + + + + +
+   + + +

+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.

Parameters:
+ + +
newChild The node to add.If it is a DOMDocumentFragment object, the entire contents of the document fragment are moved into the child list of this node
+
+
Returns:
The node added.
+
Exceptions:
+ + +
DOMException HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not allow children of the type of the newChild node, or if the node to append is one of this node's ancestors.
+WRONG_DOCUMENT_ERR: Raised if newChild was created from a different document than the one that created this node.
+NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the node being appended is readonly.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMNode* xercesc::DOMNode::cloneNode bool  deep  )  const [pure virtual]
+
+ + + + + +
+   + + +

+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 DOMElement 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 DOMText node. Cloning any other type of node simply returns a copy of this node.

Parameters:
+ + +
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 DOMElement).
+
+
Returns:
The duplicate node.
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual short xercesc::DOMNode::compareTreePosition const DOMNode other  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Compares a node with this node with regard to their position in the tree and according to the document order. +

+This order can be extended by module that define additional types of nodes.

+"Experimental - subject to change"

+

Parameters:
+ + +
other The node to compare against this node.
+
+
Returns:
Returns how the given node is positioned relatively to this node.
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNamedNodeMap* xercesc::DOMNode::getAttributes  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Gets a DOMNamedNodeMap containing the attributes of this node (if it is an DOMElement) or null otherwise. +

+

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMNode::getBaseURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The absolute base URI of this node or null if undefined. +

+This value is computed according to . However, when the DOMDocument supports the feature "HTML" , the base URI is computed using first the value of the href attribute of the HTML BASE element if any, and the value of the documentURI attribute from the DOMDocument interface otherwise.

+"Experimental - subject to change"

+
+ When the node is an DOMElement, a DOMDocument or a a DOMProcessingInstruction, this attribute represents the properties [base URI] defined in . When the node is a DOMNotation, an DOMEntity, or an DOMEntityReference, this attribute represents the properties [declaration base URI].

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNodeList* xercesc::DOMNode::getChildNodes  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Gets a DOMNodeList that contains all children of this node. +

+If there are no children, this is a DOMNodeList containing no nodes. The content of the returned DOMNodeList 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 DOMNodeList accessors; it is not a static snapshot of the content of the node. This is true for every DOMNodeList, including the ones returned by the getElementsByTagName method.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMNode::getFirstChild  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Gets the first child of this node. +

+If there is no such node, this returns null.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMNode* xercesc::DOMNode::getInterface const XMLCh *  feature  )  [pure virtual]
+
+ + + + + +
+   + + +

+This method makes available a DOMNode's specialized interface. +

+"Experimental - subject to change"

+

Parameters:
+ + +
feature The name of the feature requested (case-insensitive).
+
+
Returns:
Returns an alternate DOMNode which implements the specialized APIs of the specified feature, if any, or null if there is no alternate DOMNode which implements interfaces associated with that feature. Any alternate DOMNode returned by this method must delegate to the primary core DOMNode and not return results inconsistent with the primary core DOMNode such as key, attributes, childNodes, etc.
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMNode::getLastChild  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Gets the last child of this node. +

+If there is no such node, this returns null.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMNode::getLocalName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+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 DOMDocument interface, it is null.

+

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMNode::getNamespaceURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+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 DOMDocument interface, this is always null.

+

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMNode::getNextSibling  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Gets the node immediately following this node. +

+If there is no such node, this returns null.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMNode::getNodeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The name of this node, depending on its type; see the table above. +

+

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual short xercesc::DOMNode::getNodeType  )  const [pure virtual]
+
+ + + + + +
+   + + +

+An enum value representing the type of the underlying object. +

+

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMNode::getNodeValue  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Gets the value of this node, depending on its type. +

+

Exceptions:
+ + +
DOMException NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual DOMDocument* xercesc::DOMNode::getOwnerDocument  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Gets the DOMDocument object associated with this node. +

+This is also the DOMDocument object used to create new nodes. When this node is a DOMDocument or a DOMDocumentType which is not used with any DOMDocument yet, this is null.

+

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMNode::getParentNode  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Gets the parent of this node. +

+All nodes, except DOMDocument, DOMDocumentFragment, and DOMAttr 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 DOMNode is returned.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMNode::getPrefix  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the namespace prefix of this node, or null if it is unspecified. +

+

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMNode::getPreviousSibling  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Gets the node immediately preceding this node. +

+If there is no such node, this returns null.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMNode::getTextContent  )  const [pure virtual]
+
+ + + + + +
+   + + +

+This attribute returns the text content of this node and its descendants. +

+No serialization is performed, the returned string does not contain any markup. No whitespace normalization is performed and the returned string does not contain the white spaces in element content.

+"Experimental - subject to change"

+
+The string returned is made of the text content of this node depending on its type, as defined below: + + + + + + + + +
Node type Content
ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, DOCUMENT_FRAGMENT_NODE concatenation of the textContent attribute value of every child node, excluding COMMENT_NODE and PROCESSING_INSTRUCTION_NODE nodes
ATTRIBUTE_NODE, TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE, PROCESSING_INSTRUCTION_NODE nodeValue
DOCUMENT_NODE, DOCUMENT_TYPE_NODE, NOTATION_NODE null
+

Exceptions:
+ + +
DOMException DOMSTRING_SIZE_ERR: Raised when it would return more characters than fit in a DOMString variable on the implementation platform.
+
+
See also:
setTextContext
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void* xercesc::DOMNode::getUserData const XMLCh *  key  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Retrieves the object associated to a key on a this node. +

+The object must first have been set to this node by calling setUserData with the same key.

+"Experimental - subject to change"

+

Parameters:
+ + +
key The key the object is associated to.
+
+
Returns:
Returns the void* associated to the given key on this node, or null if there was none.
+
See also:
setUserData
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual bool xercesc::DOMNode::hasAttributes  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns whether this node (if it is an element) has any attributes. +

+

Returns:
true if this node has any attributes, false otherwise.
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual bool xercesc::DOMNode::hasChildNodes  )  const [pure virtual]
+
+ + + + + +
+   + + +

+This is a convenience method to allow easy determination of whether a node has any children. +

+

Returns:
true if the node has any children, false if the node has no children.
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual DOMNode* xercesc::DOMNode::insertBefore DOMNode newChild,
DOMNode refChild
[pure virtual]
+
+ + + + + +
+   + + +

+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 DOMDocumentFragment 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 DOMNode that has never been assigned to refer to an actual node is == null.

Parameters:
+ + + +
newChild The node to insert.
refChild The reference node, i.e., the node before which the new node must be inserted.
+
+
Returns:
The node being inserted.
+
Exceptions:
+ + +
DOMException HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not allow children of the type of the newChild node, or if the node to insert is one of this node's ancestors.
+WRONG_DOCUMENT_ERR: Raised if newChild was created from a different document than the one that created this node.
+NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the node being inserted is readonly.
+NOT_FOUND_ERR: Raised if refChild is not a child of this node.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual bool xercesc::DOMNode::isDefaultNamespace const XMLCh *  namespaceURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+This method checks if the specified namespaceURI is the default namespace or not. +

+"Experimental - subject to change"

+

Parameters:
+ + +
namespaceURI The namespace URI to look for.
+
+
Returns:
true if the specified namespaceURI is the default namespace, false otherwise.
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual bool xercesc::DOMNode::isEqualNode const DOMNode arg  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Tests whether two nodes are equal. +

+
+This method tests for equality of nodes, not sameness (i.e., whether the two nodes are pointers to the same object) which can be tested with DOMNode::isSameNode. All nodes that are the same will also be equal, though the reverse may not be true.
+Two nodes are equal if and only if the following conditions are satisfied: The two nodes are of the same type.The following string attributes are equal: nodeName, localName, namespaceURI, prefix, nodeValue , baseURI. This is: they are both null, or they have the same length and are character for character identical. The attributes DOMNamedNodeMaps are equal. This is: they are both null, or they have the same length and for each node that exists in one map there is a node that exists in the other map and is equal, although not necessarily at the same index.The childNodes DOMNodeLists are equal. This is: they are both null, or they have the same length and contain equal nodes at the same index. This is true for DOMAttr nodes as for any other type of node. Note that normalization can affect equality; to avoid this, nodes should be normalized before being compared.
+For two DOMDocumentType nodes to be equal, the following conditions must also be satisfied: The following string attributes are equal: publicId, systemId, internalSubset.The entities DOMNamedNodeMaps are equal.The notations DOMNamedNodeMaps are equal.
+On the other hand, the following do not affect equality: the ownerDocument attribute, the specified attribute for DOMAttr nodes, the isWhitespaceInElementContent attribute for DOMText nodes, as well as any user data or event listeners registered on the nodes.

+"Experimental - subject to change"

+

Parameters:
+ + +
arg The node to compare equality with.
+
+
Returns:
If the nodes, and possibly subtrees are equal, true otherwise false.
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual bool xercesc::DOMNode::isSameNode const DOMNode other  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns whether this node is the same node as the given one. +

+
+This method provides a way to determine whether two DOMNode references returned by the implementation reference the same object. When two DOMNode references are references to the same object, even if through a proxy, the references may be used completely interchangeably, such that all attributes have the same values and calling the same DOM method on either reference always has exactly the same effect.

+"Experimental - subject to change"

+

Parameters:
+ + +
other The node to test against.
+
+
Returns:
Returns true if the nodes are the same, false otherwise.
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool xercesc::DOMNode::isSupported const XMLCh *  feature,
const XMLCh *  version
const [pure virtual]
+
+ + + + + +
+   + + +

+Tests whether the DOM implementation implements a specific feature and that feature is supported by this node. +

+

Parameters:
+ + + +
feature The string of the feature to test. This is the same name as what can be passed to the method hasFeature on DOMImplementation.
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.
+
+
Returns:
Returns true if the specified feature is supported on this node, false otherwise.
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual const XMLCh* xercesc::DOMNode::lookupNamespacePrefix const XMLCh *  namespaceURI,
bool  useDefault
const [pure virtual]
+
+ + + + + +
+   + + +

+Look up the prefix associated to the given namespace URI, starting from this node. +

+"Experimental - subject to change"

+

Parameters:
+ + + +
namespaceURI The namespace URI to look for.
useDefault Indicates if the lookup mechanism should take into account the default namespace or not.
+
+
Returns:
Returns an associated namespace prefix if found, null if none is found and useDefault is false, or null if not found or it is the default namespace and useDefault is true. If more than one prefix are associated to the namespace prefix, the returned namespace prefix is implementation dependent.
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* xercesc::DOMNode::lookupNamespaceURI const XMLCh *  prefix  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Look up the namespace URI associated to the given prefix, starting from this node. +

+"Experimental - subject to change"

+

Parameters:
+ + +
prefix The prefix to look for. If this parameter is null, the method will return the default namespace URI if any.
+
+
Returns:
Returns the associated namespace URI or null if none is found.
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual void xercesc::DOMNode::normalize  )  [pure virtual]
+
+ + + + + +
+   + + +

+Puts all DOMText nodes in the full depth of the sub-tree underneath this DOMNode, including attribute nodes, into a "normal" form where only markup (e.g., tags, comments, processing instructions, CDATA sections, and entity references) separates DOMText nodes, i.e., there are neither adjacent DOMText nodes nor empty DOMText 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 DOMCDATASections, the normalize operation alone may not be sufficient, since XPointers do not differentiate between DOMText nodes and DOMCDATASection nodes.

+

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual void xercesc::DOMNode::release  )  [pure virtual]
+
+ + + + + +
+   + + +

+Called to indicate that this Node (and its associated children) is no longer in use and that the implementation may relinquish any resources associated with it and its associated children. +

+If this is a document, any nodes it owns (created by DOMDocument::createXXXX()) are also released.

+Access to a released object will lead to unexpected result.

+

Exceptions:
+ + +
DOMException INVALID_ACCESS_ERR: Raised if this Node has a parent and thus should not be released yet.
+
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMNode* xercesc::DOMNode::removeChild DOMNode oldChild  )  [pure virtual]
+
+ + + + + +
+   + + +

+Removes the child node indicated by oldChild from the list of children, and returns it. +

+

Parameters:
+ + +
oldChild The node being removed.
+
+
Returns:
The node removed.
+
Exceptions:
+ + +
DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+NOT_FOUND_ERR: Raised if oldChild is not a child of this node.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual DOMNode* xercesc::DOMNode::replaceChild DOMNode newChild,
DOMNode oldChild
[pure virtual]
+
+ + + + + +
+   + + +

+Replaces the child node oldChild with newChild in the list of children, and returns the oldChild node. +

+If newChild is a DOMDocumentFragment object, oldChild is replaced by all of the DOMDocumentFragment children, which are inserted in the same order.

+If the newChild is already in the tree, it is first removed.

Parameters:
+ + + +
newChild The new node to put in the child list.
oldChild The node being replaced in the list.
+
+
Returns:
The node replaced.
+
Exceptions:
+ + +
DOMException HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not allow children of the type of the newChild node, or it the node to put in is one of this node's ancestors.
+WRONG_DOCUMENT_ERR: Raised if newChild was created from a different document than the one that created this node.
+NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the new node is readonly.
+NOT_FOUND_ERR: Raised if oldChild is not a child of this node.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMNode::setNodeValue const XMLCh *  nodeValue  )  [pure virtual]
+
+ + + + + +
+   + + +

+Sets the value of the node. +

+Any node which can have a nodeValue 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.

See also:
getNodeValue
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMNode::setPrefix const XMLCh *  prefix  )  [pure virtual]
+
+ + + + + +
+   + + +

+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 DOMElement and DOMAttr 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.

+

Parameters:
+ + +
prefix The prefix of this node.
+
+
Exceptions:
+ + +
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 namespaceURI of this node is null, if the specified prefix is "xml" and the namespaceURI of this node is different from "http://www.w3.org/XML/1998/namespace", if this node is an attribute and the specified prefix is "xmlns" and the namespaceURI of this node is different from "http://www.w3.org/2000/xmlns/", or if this node is an attribute and the qualifiedName of this node is "xmlns".
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMNode::setTextContent const XMLCh *  textContent  )  [pure virtual]
+
+ + + + + +
+   + + +

+This attribute removes any possible children this node may have and, if the new string is not empty or null, replaced by a single DOMText node containing the string this attribute is set to. +

+No parsing is performed, the input string is taken as pure textual content.

+"Experimental - subject to change"

+

Exceptions:
+ + +
DOMException NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
+
+
See also:
getTextContext
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void* xercesc::DOMNode::setUserData const XMLCh *  key,
void *  data,
DOMUserDataHandler handler
[pure virtual]
+
+ + + + + +
+   + + +

+Associate an object to a key on this node. +

+The object can later be retrieved from this node by calling getUserData with the same key.

+Deletion of the user data remains the responsibility of the application program; it will not be automatically deleted when the nodes themselves are reclaimed.

+Both the parameter data and the returned object are void pointer, it is applications' responsibility to keep track of their original type. Casting them to the wrong type may result unexpected behavior.

+"Experimental - subject to change"

+

Parameters:
+ + + + +
key The key to associate the object to.
data The object to associate to the given key, or null to remove any existing association to that key.
handler The handler to associate to that key, or null.
+
+
Returns:
Returns the void* object previously associated to the given key on this node, or null if there was none.
+
See also:
getUserData
+
Since:
DOM Level 3
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMNodeFilter-members.html b/docs/dom3-api/classxercesc_1_1DOMNodeFilter-members.html new file mode 100644 index 00000000..4b9fe6ee --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMNodeFilter-members.html @@ -0,0 +1,48 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMNodeFilter Member List

This is the complete list of members for xercesc::DOMNodeFilter, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
acceptNode(const DOMNode *node) const =0xercesc::DOMNodeFilter [pure virtual]
DOMNodeFilter()xercesc::DOMNodeFilter [inline, protected]
FILTER_ACCEPT enum valuexercesc::DOMNodeFilter
FILTER_REJECT enum valuexercesc::DOMNodeFilter
FILTER_SKIP enum valuexercesc::DOMNodeFilter
FilterAction enum namexercesc::DOMNodeFilter
SHOW_ALL enum valuexercesc::DOMNodeFilter
SHOW_ATTRIBUTE enum valuexercesc::DOMNodeFilter
SHOW_CDATA_SECTION enum valuexercesc::DOMNodeFilter
SHOW_COMMENT enum valuexercesc::DOMNodeFilter
SHOW_DOCUMENT enum valuexercesc::DOMNodeFilter
SHOW_DOCUMENT_FRAGMENT enum valuexercesc::DOMNodeFilter
SHOW_DOCUMENT_TYPE enum valuexercesc::DOMNodeFilter
SHOW_ELEMENT enum valuexercesc::DOMNodeFilter
SHOW_ENTITY enum valuexercesc::DOMNodeFilter
SHOW_ENTITY_REFERENCE enum valuexercesc::DOMNodeFilter
SHOW_NOTATION enum valuexercesc::DOMNodeFilter
SHOW_PROCESSING_INSTRUCTION enum valuexercesc::DOMNodeFilter
SHOW_TEXT enum valuexercesc::DOMNodeFilter
ShowType enum namexercesc::DOMNodeFilter
~DOMNodeFilter()xercesc::DOMNodeFilter [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMNodeFilter.html b/docs/dom3-api/classxercesc_1_1DOMNodeFilter.html new file mode 100644 index 00000000..c642a09c --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMNodeFilter.html @@ -0,0 +1,299 @@ + + +XQilla DOM Level 3 API: xercesc::DOMNodeFilter Class Reference + + + + + + + +

xercesc::DOMNodeFilter Class Reference

Filters are objects that know how to "filter out" nodes. +More... +

+#include <DOMNodeFilter.hpp> +

+Inheritance diagram for xercesc::DOMNodeFilter:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + +

Public Types

Public Contants
enum  FilterAction { FILTER_ACCEPT = 1, +FILTER_REJECT = 2, +FILTER_SKIP = 3 + }
 Constants returned by acceptNode. More...
enum  ShowType {
+  SHOW_ALL = 0x0000FFFF, +SHOW_ELEMENT = 0x00000001, +SHOW_ATTRIBUTE = 0x00000002, +SHOW_TEXT = 0x00000004, +
+  SHOW_CDATA_SECTION = 0x00000008, +SHOW_ENTITY_REFERENCE = 0x00000010, +SHOW_ENTITY = 0x00000020, +SHOW_PROCESSING_INSTRUCTION = 0x00000040, +
+  SHOW_COMMENT = 0x00000080, +SHOW_DOCUMENT = 0x00000100, +SHOW_DOCUMENT_TYPE = 0x00000200, +SHOW_DOCUMENT_FRAGMENT = 0x00000400, +
+  SHOW_NOTATION = 0x00000800 +
+ }
 Constants for whatToShow. More...

Public Member Functions

Destructor
virtual ~DOMNodeFilter ()
 Destructor.
Functions introduced in DOM Level 2
virtual short acceptNode (const DOMNode *node) const =0
 Test whether a specified node is visible in the logical view of a DOMTreeWalker or DOMNodeIterator.

Protected Member Functions

Hidden constructors
 DOMNodeFilter ()
+

Detailed Description

+Filters are objects that know how to "filter out" nodes. +

+If a DOMNodeIterator or DOMTreeWalker is given a DOMNodeFilter, it applies the filter before it returns the next node. If the filter says to accept the node, the traversal logic returns it; otherwise, traversal looks for the next node and pretends that the node that was rejected was not there.

+The DOM does not provide any filters. DOMNodeFilter is just an interface that users can implement to provide their own filters.

+DOMNodeFilters do not need to know how to traverse from node to node, nor do they need to know anything about the data structure that is being traversed. This makes it very easy to write filters, since the only thing they have to know how to do is evaluate a single node. One filter may be used with a number of different kinds of traversals, encouraging code reuse.

+See also the Document Object Model (DOM) Level 2 Traversal and Range Specification.

Since:
DOM Level 2
+ +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
enum xercesc::DOMNodeFilter::FilterAction
+
+ + + + + +
+   + + +

+Constants returned by acceptNode. +

+FILTER_ACCEPT: Accept the node. Navigation methods defined for DOMNodeIterator or DOMTreeWalker will return this node.

+FILTER_REJECT: Reject the node. Navigation methods defined for DOMNodeIterator or DOMTreeWalker will not return this node. For DOMTreeWalker, the children of this node will also be rejected. DOMNodeIterators treat this as a synonym for FILTER_SKIP.

+FILTER_SKIP: Skip this single node. Navigation methods defined for DOMNodeIterator or DOMTreeWalker will not return this node. For both DOMNodeIterator and DOMTreeWalker, the children of this node will still be considered.

+

Since:
DOM Level 2
+
Enumerator:
+ + + + +
FILTER_ACCEPT  +
FILTER_REJECT  +
FILTER_SKIP  +
+
+
+

+ + + + +
+ + + + +
enum xercesc::DOMNodeFilter::ShowType
+
+ + + + + +
+   + + +

+Constants for whatToShow. +

+SHOW_ALL: Show all DOMNode(s).

+SHOW_ELEMENT: Show DOMElement nodes.

+SHOW_ATTRIBUTE: Show DOMAttr nodes. This is meaningful only when creating an DOMNodeIterator or DOMTreeWalker with an attribute node as its root; in this case, it means that the attribute node will appear in the first position of the iteration or traversal. Since attributes are never children of other nodes, they do not appear when traversing over the document tree.

+SHOW_TEXT: Show DOMText nodes.

+SHOW_CDATA_SECTION: Show DOMCDATASection nodes.

+SHOW_ENTITY_REFERENCE: Show DOMEntityReference nodes.

+SHOW_ENTITY: Show DOMEntity nodes. This is meaningful only when creating an DOMNodeIterator or DOMTreeWalker with an DOMEntity node as its root; in this case, it means that the DOMEntity node will appear in the first position of the traversal. Since entities are not part of the document tree, they do not appear when traversing over the document tree.

+SHOW_PROCESSING_INSTRUCTION: Show DOMProcessingInstruction nodes.

+SHOW_COMMENT: Show DOMComment nodes.

+SHOW_DOCUMENT: Show DOMDocument nodes.

+SHOW_DOCUMENT_TYPE: Show DOMDocumentType nodes.

+SHOW_DOCUMENT_FRAGMENT: Show DOMDocumentFragment nodes.

+SHOW_NOTATION: Show DOMNotation nodes. This is meaningful only when creating an DOMNodeIterator or DOMTreeWalker with a DOMNotation node as its root; in this case, it means that the DOMNotation node will appear in the first position of the traversal. Since notations are not part of the document tree, they do not appear when traversing over the document tree.

+

Since:
DOM Level 2
+
Enumerator:
+ + + + + + + + + + + + + + +
SHOW_ALL  +
SHOW_ELEMENT  +
SHOW_ATTRIBUTE  +
SHOW_TEXT  +
SHOW_CDATA_SECTION  +
SHOW_ENTITY_REFERENCE  +
SHOW_ENTITY  +
SHOW_PROCESSING_INSTRUCTION  +
SHOW_COMMENT  +
SHOW_DOCUMENT  +
SHOW_DOCUMENT_TYPE  +
SHOW_DOCUMENT_FRAGMENT  +
SHOW_NOTATION  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMNodeFilter::DOMNodeFilter  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMNodeFilter::~DOMNodeFilter  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual short xercesc::DOMNodeFilter::acceptNode const DOMNode node  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Test whether a specified node is visible in the logical view of a DOMTreeWalker or DOMNodeIterator. +

+This function will be called by the implementation of DOMTreeWalker and DOMNodeIterator; it is not normally called directly from user code. (Though you could do so if you wanted to use the same filter to guide your own application logic.)

Parameters:
+ + +
node The node to check to see if it passes the filter or not.
+
+
Returns:
A constant to determine whether the node is accepted, rejected, or skipped, as defined above.
+
Since:
DOM Level 2
+ +

+Implemented in xercesc::DOMWriterFilter.

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMNodeFilter__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMNodeFilter__inherit__graph.map new file mode 100644 index 00000000..317aadeb --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMNodeFilter__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMWriterFilter.html 8,83 178,107 diff --git a/docs/dom3-api/classxercesc_1_1DOMNodeFilter__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMNodeFilter__inherit__graph.md5 new file mode 100644 index 00000000..149b55da --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMNodeFilter__inherit__graph.md5 @@ -0,0 +1 @@ +16b2f799c289d2b33945c628c7923179 \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMNodeFilter__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMNodeFilter__inherit__graph.png new file mode 100644 index 00000000..c841f110 Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMNodeFilter__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMNodeIterator-members.html b/docs/dom3-api/classxercesc_1_1DOMNodeIterator-members.html new file mode 100644 index 00000000..5ce3ae0f --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMNodeIterator-members.html @@ -0,0 +1,38 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMNodeIterator Member List

This is the complete list of members for xercesc::DOMNodeIterator, including all inherited members.

+ + + + + + + + + + + +
detach()=0xercesc::DOMNodeIterator [pure virtual]
DOMNodeIterator()xercesc::DOMNodeIterator [inline, protected]
DOMNodeIterator(const DOMNodeIterator &)xercesc::DOMNodeIterator [inline, protected]
getExpandEntityReferences()=0xercesc::DOMNodeIterator [pure virtual]
getFilter()=0xercesc::DOMNodeIterator [pure virtual]
getRoot()=0xercesc::DOMNodeIterator [pure virtual]
getWhatToShow()=0xercesc::DOMNodeIterator [pure virtual]
nextNode()=0xercesc::DOMNodeIterator [pure virtual]
previousNode()=0xercesc::DOMNodeIterator [pure virtual]
release()=0xercesc::DOMNodeIterator [pure virtual]
~DOMNodeIterator()xercesc::DOMNodeIterator [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMNodeIterator.html b/docs/dom3-api/classxercesc_1_1DOMNodeIterator.html new file mode 100644 index 00000000..f0e23c02 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMNodeIterator.html @@ -0,0 +1,423 @@ + + +XQilla DOM Level 3 API: xercesc::DOMNodeIterator Class Reference + + + + + + + +

xercesc::DOMNodeIterator Class Reference

DOMNodeIterators are used to step through a set of nodes, e.g. +More... +

+#include <DOMNodeIterator.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMNodeIterator ()
 Destructor.
Functions introduced in DOM Level 2
virtual DOMNodegetRoot ()=0
 The root node of the DOMNodeIterator, as specified when it was created.
virtual unsigned long getWhatToShow ()=0
 Return which node types are presented via the iterator.
virtual DOMNodeFiltergetFilter ()=0
 The DOMNodeFilter used to screen nodes.
virtual bool getExpandEntityReferences ()=0
 Return the expandEntityReferences flag.
virtual DOMNodenextNode ()=0
 Returns the next node in the set and advances the position of the DOMNodeIterator in the set.
virtual DOMNodepreviousNode ()=0
 Returns the previous node in the set and moves the position of the DOMNodeIterator backwards in the set.
virtual void detach ()=0
 Detaches the DOMNodeIterator from the set which it iterated over, releasing any computational resources and placing the DOMNodeIterator in the INVALID state.
Non-standard Extension
virtual void release ()=0
 Called to indicate that this NodeIterator is no longer in use and that the implementation may relinquish any resources associated with it.

Protected Member Functions

Hidden constructors
 DOMNodeIterator ()
 DOMNodeIterator (const DOMNodeIterator &)
+


Detailed Description

+DOMNodeIterators are used to step through a set of nodes, e.g. +

+the set of nodes in a DOMNodeList, the document subtree governed by a particular DOMNode, the results of a query, or any other set of nodes. The set of nodes to be iterated is determined by the implementation of the DOMNodeIterator. DOM Level 2 specifies a single DOMNodeIterator implementation for document-order traversal of a document subtree. Instances of these DOMNodeIterators are created by calling DOMDocumentTraversal.createNodeIterator().

+See also the Document Object Model (DOM) Level 2 Traversal and Range Specification.

Since:
DOM Level 2
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMNodeIterator::DOMNodeIterator  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
xercesc::DOMNodeIterator::DOMNodeIterator const DOMNodeIterator  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMNodeIterator::~DOMNodeIterator  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual void xercesc::DOMNodeIterator::detach  )  [pure virtual]
+
+ + + + + +
+   + + +

+Detaches the DOMNodeIterator from the set which it iterated over, releasing any computational resources and placing the DOMNodeIterator in the INVALID state. +

+After detach has been invoked, calls to nextNode or previousNode will raise the exception INVALID_STATE_ERR.

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual bool xercesc::DOMNodeIterator::getExpandEntityReferences  )  [pure virtual]
+
+ + + + + +
+   + + +

+Return the expandEntityReferences flag. +

+The value of this flag determines whether the children of entity reference nodes are visible to the DOMNodeIterator. If false, these children and their descendants will be rejected. Note that this rejection takes precedence over whatToShow and the filter. Also note that this is currently the only situation where DOMNodeIterators may reject a complete subtree rather than skipping individual nodes.
+
+ To produce a view of the document that has entity references expanded and does not expose the entity reference node itself, use the whatToShow flags to hide the entity reference node and set expandEntityReferences to true when creating the DOMNodeIterator. To produce a view of the document that has entity reference nodes but no entity expansion, use the whatToShow flags to show the entity reference node and set expandEntityReferences to false.

+

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNodeFilter* xercesc::DOMNodeIterator::getFilter  )  [pure virtual]
+
+ + + + + +
+   + + +

+The DOMNodeFilter used to screen nodes. +

+

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMNodeIterator::getRoot  )  [pure virtual]
+
+ + + + + +
+   + + +

+The root node of the DOMNodeIterator, as specified when it was created. +

+

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual unsigned long xercesc::DOMNodeIterator::getWhatToShow  )  [pure virtual]
+
+ + + + + +
+   + + +

+Return which node types are presented via the iterator. +

+This attribute determines which node types are presented via the DOMNodeIterator. The available set of constants is defined in the DOMNodeFilter interface. Nodes not accepted by whatToShow will be skipped, but their children may still be considered. Note that this skip takes precedence over the filter, if any.

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMNodeIterator::nextNode  )  [pure virtual]
+
+ + + + + +
+   + + +

+Returns the next node in the set and advances the position of the DOMNodeIterator in the set. +

+After a DOMNodeIterator is created, the first call to nextNode() returns the first node in the set.

Returns:
The next DOMNode in the set being iterated over, or null if there are no more members in that set.
+
Exceptions:
+ + +
DOMException INVALID_STATE_ERR: Raised if this method is called after the detach method was invoked.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMNodeIterator::previousNode  )  [pure virtual]
+
+ + + + + +
+   + + +

+Returns the previous node in the set and moves the position of the DOMNodeIterator backwards in the set. +

+

Returns:
The previous DOMNode in the set being iterated over, or null if there are no more members in that set.
+
Exceptions:
+ + +
DOMException INVALID_STATE_ERR: Raised if this method is called after the detach method was invoked.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual void xercesc::DOMNodeIterator::release  )  [pure virtual]
+
+ + + + + +
+   + + +

+Called to indicate that this NodeIterator is no longer in use and that the implementation may relinquish any resources associated with it. +

+(release() will call detach() where appropriate)

+Access to a released object will lead to unexpected result.

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMNodeList-members.html b/docs/dom3-api/classxercesc_1_1DOMNodeList-members.html new file mode 100644 index 00000000..d2e21d4b --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMNodeList-members.html @@ -0,0 +1,31 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMNodeList Member List

This is the complete list of members for xercesc::DOMNodeList, including all inherited members.

+ + + + +
DOMNodeList()xercesc::DOMNodeList [inline, protected]
getLength() const =0xercesc::DOMNodeList [pure virtual]
item(XMLSize_t index) const =0xercesc::DOMNodeList [pure virtual]
~DOMNodeList()xercesc::DOMNodeList [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMNodeList.html b/docs/dom3-api/classxercesc_1_1DOMNodeList.html new file mode 100644 index 00000000..ef581482 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMNodeList.html @@ -0,0 +1,187 @@ + + +XQilla DOM Level 3 API: xercesc::DOMNodeList Class Reference + + + + + + + +

xercesc::DOMNodeList Class Reference

The DOMNodeList interface provides the abstraction of an ordered collection of nodes. +More... +

+#include <DOMNodeList.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMNodeList ()
 Destructor.
Functions introduced in DOM Level 1
virtual DOMNodeitem (XMLSize_t index) const =0
 Returns the index item in the collection.
virtual XMLSize_t getLength () const =0
 Returns the number of nodes in the list.

Protected Member Functions

Hidden constructors
 DOMNodeList ()
+


Detailed Description

+The DOMNodeList interface provides the abstraction of an ordered collection of nodes. +

+DOMNodeLists are created by DOMDocument::getElementsByTagName(), DOMNode::getChildNodes(),

+The items in the DOMNodeList are accessible via an integral index, starting from 0.

+DOMNodeLists are "live", in that any changes to the document tree are immediately reflected in any DOMNodeLists that may have been created for that tree. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMNodeList::DOMNodeList  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMNodeList::~DOMNodeList  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual XMLSize_t xercesc::DOMNodeList::getLength  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the number of nodes in the list. +

+The range of valid child node indices is 0 to length-1 inclusive.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMNode* xercesc::DOMNodeList::item XMLSize_t  index  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the index item in the collection. +

+If index is greater than or equal to the number of nodes in the list, this returns null.

+

Parameters:
+ + +
index Index into the collection.
+
+
Returns:
The node at the indexth position in the DOMNodeList, or null if that is not a valid index.
+
Since:
DOM Level 1
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMNode__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMNode__inherit__graph.map new file mode 100644 index 00000000..d01a011e --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMNode__inherit__graph.map @@ -0,0 +1,12 @@ +base referer +rect $classxercesc_1_1DOMAttr.html 252,8 380,32 +rect $classxercesc_1_1DOMCharacterData.html 218,56 413,80 +rect $classxercesc_1_1DOMDocument.html 232,104 400,128 +rect $classxercesc_1_1DOMDocumentFragment.html 204,152 428,176 +rect $classxercesc_1_1DOMDocumentType.html 217,200 414,224 +rect $classxercesc_1_1DOMElement.html 237,248 394,272 +rect $classxercesc_1_1DOMEntity.html 245,296 386,320 +rect $classxercesc_1_1DOMEntityReference.html 214,344 417,368 +rect $classxercesc_1_1DOMNotation.html 237,392 394,416 +rect $classxercesc_1_1DOMProcessingInstruction.html 198,440 433,464 +rect $classxercesc_1_1DOMXPathNamespace.html 209,488 422,512 diff --git a/docs/dom3-api/classxercesc_1_1DOMNode__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMNode__inherit__graph.md5 new file mode 100644 index 00000000..7d388739 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMNode__inherit__graph.md5 @@ -0,0 +1 @@ +41f7d242d6417d4c8958c6e319af2121 \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMNode__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMNode__inherit__graph.png new file mode 100644 index 00000000..11417e4c Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMNode__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMNotation-members.html b/docs/dom3-api/classxercesc_1_1DOMNotation-members.html new file mode 100644 index 00000000..9b5440c5 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMNotation-members.html @@ -0,0 +1,94 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMNotation Member List

This is the complete list of members for xercesc::DOMNotation, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
appendChild(DOMNode *newChild)=0xercesc::DOMNode [pure virtual]
ATTRIBUTE_NODE enum valuexercesc::DOMNode
CDATA_SECTION_NODE enum valuexercesc::DOMNode
cloneNode(bool deep) const =0xercesc::DOMNode [pure virtual]
COMMENT_NODE enum valuexercesc::DOMNode
compareTreePosition(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
DOCUMENT_FRAGMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_TYPE_NODE enum valuexercesc::DOMNode
DOMNode()xercesc::DOMNode [inline, protected]
DOMNode(const DOMNode &)xercesc::DOMNode [inline, protected]
DOMNotation()xercesc::DOMNotation [inline, protected]
DOMNotation(const DOMNotation &other)xercesc::DOMNotation [inline, protected]
DOMTreePosition enum namexercesc::DOMNode
ELEMENT_NODE enum valuexercesc::DOMNode
ENTITY_NODE enum valuexercesc::DOMNode
ENTITY_REFERENCE_NODE enum valuexercesc::DOMNode
getAttributes() const =0xercesc::DOMNode [pure virtual]
getBaseURI() const =0xercesc::DOMNode [pure virtual]
getChildNodes() const =0xercesc::DOMNode [pure virtual]
getFirstChild() const =0xercesc::DOMNode [pure virtual]
getInterface(const XMLCh *feature)=0xercesc::DOMNode [pure virtual]
getLastChild() const =0xercesc::DOMNode [pure virtual]
getLocalName() const =0xercesc::DOMNode [pure virtual]
getNamespaceURI() const =0xercesc::DOMNode [pure virtual]
getNextSibling() const =0xercesc::DOMNode [pure virtual]
getNodeName() const =0xercesc::DOMNode [pure virtual]
getNodeType() const =0xercesc::DOMNode [pure virtual]
getNodeValue() const =0xercesc::DOMNode [pure virtual]
getOwnerDocument() const =0xercesc::DOMNode [pure virtual]
getParentNode() const =0xercesc::DOMNode [pure virtual]
getPrefix() const =0xercesc::DOMNode [pure virtual]
getPreviousSibling() const =0xercesc::DOMNode [pure virtual]
getPublicId() const =0xercesc::DOMNotation [pure virtual]
getSystemId() const =0xercesc::DOMNotation [pure virtual]
getTextContent() const =0xercesc::DOMNode [pure virtual]
getUserData(const XMLCh *key) const =0xercesc::DOMNode [pure virtual]
hasAttributes() const =0xercesc::DOMNode [pure virtual]
hasChildNodes() const =0xercesc::DOMNode [pure virtual]
insertBefore(DOMNode *newChild, DOMNode *refChild)=0xercesc::DOMNode [pure virtual]
isDefaultNamespace(const XMLCh *namespaceURI) const =0xercesc::DOMNode [pure virtual]
isEqualNode(const DOMNode *arg) const =0xercesc::DOMNode [pure virtual]
isSameNode(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
isSupported(const XMLCh *feature, const XMLCh *version) const =0xercesc::DOMNode [pure virtual]
lookupNamespacePrefix(const XMLCh *namespaceURI, bool useDefault) const =0xercesc::DOMNode [pure virtual]
lookupNamespaceURI(const XMLCh *prefix) const =0xercesc::DOMNode [pure virtual]
NodeType enum namexercesc::DOMNode
normalize()=0xercesc::DOMNode [pure virtual]
NOTATION_NODE enum valuexercesc::DOMNode
PROCESSING_INSTRUCTION_NODE enum valuexercesc::DOMNode
release()=0xercesc::DOMNode [pure virtual]
removeChild(DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
replaceChild(DOMNode *newChild, DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
setNodeValue(const XMLCh *nodeValue)=0xercesc::DOMNode [pure virtual]
setPrefix(const XMLCh *prefix)=0xercesc::DOMNode [pure virtual]
setTextContent(const XMLCh *textContent)=0xercesc::DOMNode [pure virtual]
setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0xercesc::DOMNode [pure virtual]
TEXT_NODE enum valuexercesc::DOMNode
TREE_POSITION_ANCESTOR enum valuexercesc::DOMNode
TREE_POSITION_DESCENDANT enum valuexercesc::DOMNode
TREE_POSITION_DISCONNECTED enum valuexercesc::DOMNode
TREE_POSITION_EQUIVALENT enum valuexercesc::DOMNode
TREE_POSITION_FOLLOWING enum valuexercesc::DOMNode
TREE_POSITION_PRECEDING enum valuexercesc::DOMNode
TREE_POSITION_SAME_NODE enum valuexercesc::DOMNode
~DOMNode()xercesc::DOMNode [inline, virtual]
~DOMNotation()xercesc::DOMNotation [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMNotation.html b/docs/dom3-api/classxercesc_1_1DOMNotation.html new file mode 100644 index 00000000..b9dc84e5 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMNotation.html @@ -0,0 +1,217 @@ + + +XQilla DOM Level 3 API: xercesc::DOMNotation Class Reference + + + + + + + +

xercesc::DOMNotation Class Reference

This interface represents a notation declared in the DTD. +More... +

+#include <DOMNotation.hpp> +

+Inheritance diagram for xercesc::DOMNotation:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMNotation ()
 Destructor.
Functions introduced in DOM Level 1
virtual const XMLCh * getPublicId () const =0
 Get the public identifier of this notation.
virtual const XMLCh * getSystemId () const =0
 Get the system identifier of this notation.

Protected Member Functions

Hidden constructors
 DOMNotation ()
 DOMNotation (const DOMNotation &other)
+

Detailed Description

+This interface represents a notation declared in the DTD. +

+A notation either declares, by name, the format of an unparsed entity (see section 4.7 of the XML 1.0 specification), or is used for formal declaration of Processing Instruction targets (see section 2.6 of the XML 1.0 specification). The nodeName attribute inherited from DOMNode is set to the declared name of the notation.

+The DOM Level 1 does not support editing DOMNotation nodes; they are therefore readonly.

+A DOMNotation node does not have any parent.

+

Since:
DOM Level 1
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMNotation::DOMNotation  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
xercesc::DOMNotation::DOMNotation const DOMNotation other  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMNotation::~DOMNotation  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMNotation::getPublicId  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the public identifier of this notation. +

+If the public identifier was not specified, this is null.

Returns:
Returns the public identifier of the notation
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMNotation::getSystemId  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the system identifier of this notation. +

+If the system identifier was not specified, this is null.

Returns:
Returns the system identifier of the notation
+
Since:
DOM Level 1
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMNotation__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMNotation__inherit__graph.map new file mode 100644 index 00000000..baeabe5a --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMNotation__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMNode.html 17,9 155,33 diff --git a/docs/dom3-api/classxercesc_1_1DOMNotation__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMNotation__inherit__graph.md5 new file mode 100644 index 00000000..d624ee1d --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMNotation__inherit__graph.md5 @@ -0,0 +1 @@ +c025e46334181b070e4a25d6a45817b8 \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMNotation__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMNotation__inherit__graph.png new file mode 100644 index 00000000..a527f226 Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMNotation__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMPSVITypeInfo-members.html b/docs/dom3-api/classxercesc_1_1DOMPSVITypeInfo-members.html new file mode 100644 index 00000000..5a0a41a1 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMPSVITypeInfo-members.html @@ -0,0 +1,45 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMPSVITypeInfo Member List

This is the complete list of members for xercesc::DOMPSVITypeInfo, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
DOMPSVITypeInfo()xercesc::DOMPSVITypeInfo [inline, protected]
getNumericProperty(PSVIProperty prop) const =0xercesc::DOMPSVITypeInfo [pure virtual]
getStringProperty(PSVIProperty prop) const =0xercesc::DOMPSVITypeInfo [pure virtual]
PSVI_Member_Type_Definition_Anonymous enum valuexercesc::DOMPSVITypeInfo
PSVI_Member_Type_Definition_Name enum valuexercesc::DOMPSVITypeInfo
PSVI_Member_Type_Definition_Namespace enum valuexercesc::DOMPSVITypeInfo
PSVI_Nil enum valuexercesc::DOMPSVITypeInfo
PSVI_Schema_Default enum valuexercesc::DOMPSVITypeInfo
PSVI_Schema_Normalized_Value enum valuexercesc::DOMPSVITypeInfo
PSVI_Schema_Specified enum valuexercesc::DOMPSVITypeInfo
PSVI_Type_Definition_Anonymous enum valuexercesc::DOMPSVITypeInfo
PSVI_Type_Definition_Name enum valuexercesc::DOMPSVITypeInfo
PSVI_Type_Definition_Namespace enum valuexercesc::DOMPSVITypeInfo
PSVI_Type_Definition_Type enum valuexercesc::DOMPSVITypeInfo
PSVI_Validitation_Attempted enum valuexercesc::DOMPSVITypeInfo
PSVI_Validity enum valuexercesc::DOMPSVITypeInfo
PSVIProperty enum namexercesc::DOMPSVITypeInfo
~DOMPSVITypeInfo()xercesc::DOMPSVITypeInfo [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMPSVITypeInfo.html b/docs/dom3-api/classxercesc_1_1DOMPSVITypeInfo.html new file mode 100644 index 00000000..616e52c2 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMPSVITypeInfo.html @@ -0,0 +1,254 @@ + + +XQilla DOM Level 3 API: xercesc::DOMPSVITypeInfo Class Reference + + + + + + + +

xercesc::DOMPSVITypeInfo Class Reference

The DOMPSVITypeInfo interface represent the PSVI info used by DOMElement or DOMAttr nodes, specified in the schemas associated with the document. +More... +

+#include <DOMPSVITypeInfo.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + +

Public Types

enum  PSVIProperty {
+  PSVI_Validity, +PSVI_Validitation_Attempted, +PSVI_Type_Definition_Type, +PSVI_Type_Definition_Name, +
+  PSVI_Type_Definition_Namespace, +PSVI_Type_Definition_Anonymous, +PSVI_Nil, +PSVI_Member_Type_Definition_Name, +
+  PSVI_Member_Type_Definition_Namespace, +PSVI_Member_Type_Definition_Anonymous, +PSVI_Schema_Default, +PSVI_Schema_Normalized_Value, +
+  PSVI_Schema_Specified +
+ }

Public Member Functions

Destructor
virtual ~DOMPSVITypeInfo ()
 Destructor.
virtual const XMLCh * getStringProperty (PSVIProperty prop) const =0
 Returns the string value of the specified PSVI property associated to a DOMElement or DOMAttr, or null if not available.
virtual int getNumericProperty (PSVIProperty prop) const =0
 Returns the numeric value of the specified PSVI property associated to a DOMElement or DOMAttr, or null if not available.

Protected Member Functions

Hidden constructors
 DOMPSVITypeInfo ()
+


Detailed Description

+The DOMPSVITypeInfo interface represent the PSVI info used by DOMElement or DOMAttr nodes, specified in the schemas associated with the document. +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
enum xercesc::DOMPSVITypeInfo::PSVIProperty
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + + + + + + + + + + + + +
PSVI_Validity  +
PSVI_Validitation_Attempted  +
PSVI_Type_Definition_Type  +
PSVI_Type_Definition_Name  +
PSVI_Type_Definition_Namespace  +
PSVI_Type_Definition_Anonymous  +
PSVI_Nil  +
PSVI_Member_Type_Definition_Name  +
PSVI_Member_Type_Definition_Namespace  +
PSVI_Member_Type_Definition_Anonymous  +
PSVI_Schema_Default  +
PSVI_Schema_Normalized_Value  +
PSVI_Schema_Specified  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMPSVITypeInfo::DOMPSVITypeInfo  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMPSVITypeInfo::~DOMPSVITypeInfo  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual int xercesc::DOMPSVITypeInfo::getNumericProperty PSVIProperty  prop  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the numeric value of the specified PSVI property associated to a DOMElement or DOMAttr, or null if not available. +

+"Experimental - subject to change"

+

Returns:
the numeric value of the specified PSVI property associated to a DOMElement or DOMAttr, or null if not available.
+
+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* xercesc::DOMPSVITypeInfo::getStringProperty PSVIProperty  prop  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the string value of the specified PSVI property associated to a DOMElement or DOMAttr, or null if not available. +

+"Experimental - subject to change"

+

Returns:
the string value of the specified PSVI property associated to a DOMElement or DOMAttr, or null if not available.
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMProcessingInstruction-members.html b/docs/dom3-api/classxercesc_1_1DOMProcessingInstruction-members.html new file mode 100644 index 00000000..81ecb819 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMProcessingInstruction-members.html @@ -0,0 +1,95 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMProcessingInstruction Member List

This is the complete list of members for xercesc::DOMProcessingInstruction, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
appendChild(DOMNode *newChild)=0xercesc::DOMNode [pure virtual]
ATTRIBUTE_NODE enum valuexercesc::DOMNode
CDATA_SECTION_NODE enum valuexercesc::DOMNode
cloneNode(bool deep) const =0xercesc::DOMNode [pure virtual]
COMMENT_NODE enum valuexercesc::DOMNode
compareTreePosition(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
DOCUMENT_FRAGMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_TYPE_NODE enum valuexercesc::DOMNode
DOMNode()xercesc::DOMNode [inline, protected]
DOMNode(const DOMNode &)xercesc::DOMNode [inline, protected]
DOMProcessingInstruction()xercesc::DOMProcessingInstruction [inline, protected]
DOMProcessingInstruction(const DOMProcessingInstruction &other)xercesc::DOMProcessingInstruction [inline, protected]
DOMTreePosition enum namexercesc::DOMNode
ELEMENT_NODE enum valuexercesc::DOMNode
ENTITY_NODE enum valuexercesc::DOMNode
ENTITY_REFERENCE_NODE enum valuexercesc::DOMNode
getAttributes() const =0xercesc::DOMNode [pure virtual]
getBaseURI() const =0xercesc::DOMNode [pure virtual]
getChildNodes() const =0xercesc::DOMNode [pure virtual]
getData() const =0xercesc::DOMProcessingInstruction [pure virtual]
getFirstChild() const =0xercesc::DOMNode [pure virtual]
getInterface(const XMLCh *feature)=0xercesc::DOMNode [pure virtual]
getLastChild() const =0xercesc::DOMNode [pure virtual]
getLocalName() const =0xercesc::DOMNode [pure virtual]
getNamespaceURI() const =0xercesc::DOMNode [pure virtual]
getNextSibling() const =0xercesc::DOMNode [pure virtual]
getNodeName() const =0xercesc::DOMNode [pure virtual]
getNodeType() const =0xercesc::DOMNode [pure virtual]
getNodeValue() const =0xercesc::DOMNode [pure virtual]
getOwnerDocument() const =0xercesc::DOMNode [pure virtual]
getParentNode() const =0xercesc::DOMNode [pure virtual]
getPrefix() const =0xercesc::DOMNode [pure virtual]
getPreviousSibling() const =0xercesc::DOMNode [pure virtual]
getTarget() const =0xercesc::DOMProcessingInstruction [pure virtual]
getTextContent() const =0xercesc::DOMNode [pure virtual]
getUserData(const XMLCh *key) const =0xercesc::DOMNode [pure virtual]
hasAttributes() const =0xercesc::DOMNode [pure virtual]
hasChildNodes() const =0xercesc::DOMNode [pure virtual]
insertBefore(DOMNode *newChild, DOMNode *refChild)=0xercesc::DOMNode [pure virtual]
isDefaultNamespace(const XMLCh *namespaceURI) const =0xercesc::DOMNode [pure virtual]
isEqualNode(const DOMNode *arg) const =0xercesc::DOMNode [pure virtual]
isSameNode(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
isSupported(const XMLCh *feature, const XMLCh *version) const =0xercesc::DOMNode [pure virtual]
lookupNamespacePrefix(const XMLCh *namespaceURI, bool useDefault) const =0xercesc::DOMNode [pure virtual]
lookupNamespaceURI(const XMLCh *prefix) const =0xercesc::DOMNode [pure virtual]
NodeType enum namexercesc::DOMNode
normalize()=0xercesc::DOMNode [pure virtual]
NOTATION_NODE enum valuexercesc::DOMNode
PROCESSING_INSTRUCTION_NODE enum valuexercesc::DOMNode
release()=0xercesc::DOMNode [pure virtual]
removeChild(DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
replaceChild(DOMNode *newChild, DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
setData(const XMLCh *data)=0xercesc::DOMProcessingInstruction [pure virtual]
setNodeValue(const XMLCh *nodeValue)=0xercesc::DOMNode [pure virtual]
setPrefix(const XMLCh *prefix)=0xercesc::DOMNode [pure virtual]
setTextContent(const XMLCh *textContent)=0xercesc::DOMNode [pure virtual]
setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0xercesc::DOMNode [pure virtual]
TEXT_NODE enum valuexercesc::DOMNode
TREE_POSITION_ANCESTOR enum valuexercesc::DOMNode
TREE_POSITION_DESCENDANT enum valuexercesc::DOMNode
TREE_POSITION_DISCONNECTED enum valuexercesc::DOMNode
TREE_POSITION_EQUIVALENT enum valuexercesc::DOMNode
TREE_POSITION_FOLLOWING enum valuexercesc::DOMNode
TREE_POSITION_PRECEDING enum valuexercesc::DOMNode
TREE_POSITION_SAME_NODE enum valuexercesc::DOMNode
~DOMNode()xercesc::DOMNode [inline, virtual]
~DOMProcessingInstruction()xercesc::DOMProcessingInstruction [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMProcessingInstruction.html b/docs/dom3-api/classxercesc_1_1DOMProcessingInstruction.html new file mode 100644 index 00000000..c790138d --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMProcessingInstruction.html @@ -0,0 +1,257 @@ + + +XQilla DOM Level 3 API: xercesc::DOMProcessingInstruction Class Reference + + + + + + + +

xercesc::DOMProcessingInstruction Class Reference

The DOMProcessingInstruction interface represents a "processing instruction", used in XML as a way to keep processor-specific information in the text of the document. +More... +

+#include <DOMProcessingInstruction.hpp> +

+Inheritance diagram for xercesc::DOMProcessingInstruction:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMProcessingInstruction ()
 Destructor.
Functions introduced in DOM Level 1
virtual const XMLCh * getTarget () const =0
 The target of this processing instruction.
virtual const XMLCh * getData () const =0
 The content of this processing instruction.
virtual void setData (const XMLCh *data)=0
 Sets the content of this processing instruction.

Protected Member Functions

Hidden constructors
 DOMProcessingInstruction ()
 DOMProcessingInstruction (const DOMProcessingInstruction &other)
+

Detailed Description

+The DOMProcessingInstruction interface represents a "processing instruction", used in XML as a way to keep processor-specific information in the text of the document. +

+

Since:
DOM Level 1
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMProcessingInstruction::DOMProcessingInstruction  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
xercesc::DOMProcessingInstruction::DOMProcessingInstruction const DOMProcessingInstruction other  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMProcessingInstruction::~DOMProcessingInstruction  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMProcessingInstruction::getData  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The content of this processing instruction. +

+This is from the first non white space character after the target to the character immediately preceding the ?>.

Exceptions:
+ + +
DOMException NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMProcessingInstruction::getTarget  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The target of this processing instruction. +

+XML defines this as being the first token following the markup that begins the processing instruction.

+

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMProcessingInstruction::setData const XMLCh *  data  )  [pure virtual]
+
+ + + + + +
+   + + +

+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 ?>.

Parameters:
+ + +
data The string containing the processing instruction
+
+
Since:
DOM Level 1
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMProcessingInstruction__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMProcessingInstruction__inherit__graph.map new file mode 100644 index 00000000..4045fa15 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMProcessingInstruction__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMNode.html 56,9 194,33 diff --git a/docs/dom3-api/classxercesc_1_1DOMProcessingInstruction__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMProcessingInstruction__inherit__graph.md5 new file mode 100644 index 00000000..a4152183 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMProcessingInstruction__inherit__graph.md5 @@ -0,0 +1 @@ +d2d9ed25e9363ada348140db0df1078f \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMProcessingInstruction__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMProcessingInstruction__inherit__graph.png new file mode 100644 index 00000000..ca869ecc Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMProcessingInstruction__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMRange-members.html b/docs/dom3-api/classxercesc_1_1DOMRange-members.html new file mode 100644 index 00000000..e3279a88 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMRange-members.html @@ -0,0 +1,60 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMRange Member List

This is the complete list of members for xercesc::DOMRange, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cloneContents() const =0xercesc::DOMRange [pure virtual]
cloneRange() const =0xercesc::DOMRange [pure virtual]
collapse(bool toStart)=0xercesc::DOMRange [pure virtual]
compareBoundaryPoints(CompareHow how, const DOMRange *sourceRange) const =0xercesc::DOMRange [pure virtual]
CompareHow enum namexercesc::DOMRange
deleteContents()=0xercesc::DOMRange [pure virtual]
detach()=0xercesc::DOMRange [pure virtual]
DOMRange()xercesc::DOMRange [inline, protected]
DOMRange(const DOMRange &)xercesc::DOMRange [inline, protected]
END_TO_END enum valuexercesc::DOMRange
END_TO_START enum valuexercesc::DOMRange
extractContents()=0xercesc::DOMRange [pure virtual]
getCollapsed() const =0xercesc::DOMRange [pure virtual]
getCommonAncestorContainer() const =0xercesc::DOMRange [pure virtual]
getEndContainer() const =0xercesc::DOMRange [pure virtual]
getEndOffset() const =0xercesc::DOMRange [pure virtual]
getStartContainer() const =0xercesc::DOMRange [pure virtual]
getStartOffset() const =0xercesc::DOMRange [pure virtual]
insertNode(DOMNode *newNode)=0xercesc::DOMRange [pure virtual]
release()=0xercesc::DOMRange [pure virtual]
selectNode(const DOMNode *refNode)=0xercesc::DOMRange [pure virtual]
selectNodeContents(const DOMNode *refNode)=0xercesc::DOMRange [pure virtual]
setEnd(const DOMNode *refNode, XMLSize_t offset)=0xercesc::DOMRange [pure virtual]
setEndAfter(const DOMNode *refNode)=0xercesc::DOMRange [pure virtual]
setEndBefore(const DOMNode *refNode)=0xercesc::DOMRange [pure virtual]
setStart(const DOMNode *refNode, XMLSize_t offset)=0xercesc::DOMRange [pure virtual]
setStartAfter(const DOMNode *refNode)=0xercesc::DOMRange [pure virtual]
setStartBefore(const DOMNode *refNode)=0xercesc::DOMRange [pure virtual]
START_TO_END enum valuexercesc::DOMRange
START_TO_START enum valuexercesc::DOMRange
surroundContents(DOMNode *newParent)=0xercesc::DOMRange [pure virtual]
toString() const =0xercesc::DOMRange [pure virtual]
~DOMRange()xercesc::DOMRange [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMRange.html b/docs/dom3-api/classxercesc_1_1DOMRange.html new file mode 100644 index 00000000..3a081c19 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMRange.html @@ -0,0 +1,1289 @@ + + +XQilla DOM Level 3 API: xercesc::DOMRange Class Reference + + + + + + + +

xercesc::DOMRange Class Reference

#include <DOMRange.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

Public Contants
enum  CompareHow { START_TO_START = 0, +START_TO_END = 1, +END_TO_END = 2, +END_TO_START = 3 + }
 Constants CompareHow. More...

Public Member Functions

Destructor
virtual ~DOMRange ()
 Destructor.
Functions introduced in DOM Level 2
virtual DOMNodegetStartContainer () const =0
 DOMNode within which the Range begins
Exceptions:
+ + +
DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+
+
virtual XMLSize_t getStartOffset () const =0
 Offset within the starting node of the Range.
virtual DOMNodegetEndContainer () const =0
 DOMNode within which the Range ends
Exceptions:
+ + +
DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+
+
virtual XMLSize_t getEndOffset () const =0
 Offset within the ending node of the Range.
virtual bool getCollapsed () const =0
 TRUE if the Range is collapsed
Exceptions:
+ + +
DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+
+
virtual const DOMNodegetCommonAncestorContainer () const =0
 The deepest common ancestor container of the Range's two boundary-points.
virtual void setStart (const DOMNode *refNode, XMLSize_t offset)=0
 Sets the attributes describing the start of the Range.
virtual void setEnd (const DOMNode *refNode, XMLSize_t offset)=0
 Sets the attributes describing the end of a Range.
virtual void setStartBefore (const DOMNode *refNode)=0
 Sets the start position to be before a node.
virtual void setStartAfter (const DOMNode *refNode)=0
 Sets the start position to be after a node.
virtual void setEndBefore (const DOMNode *refNode)=0
 Sets the end position to be before a node.
virtual void setEndAfter (const DOMNode *refNode)=0
 Sets the end of a Range to be after a node.
virtual void collapse (bool toStart)=0
 Collapse a Range onto one of its boundary-points.
virtual void selectNode (const DOMNode *refNode)=0
 Select a node and its contents.
virtual void selectNodeContents (const DOMNode *refNode)=0
 Select the contents within a node.
virtual short compareBoundaryPoints (CompareHow how, const DOMRange *sourceRange) const =0
 Compare the boundary-points of two Ranges in a document.
virtual void deleteContents ()=0
 Removes the contents of a Range from the containing document or document fragment without returning a reference to the removed content.
virtual DOMDocumentFragmentextractContents ()=0
 Moves the contents of a Range from the containing document or document fragment to a new DOMDocumentFragment.
virtual DOMDocumentFragmentcloneContents () const =0
 Duplicates the contents of a Range.
virtual void insertNode (DOMNode *newNode)=0
 Inserts a node into the DOMDocument or DOMDocumentFragment at the start of the Range.
virtual void surroundContents (DOMNode *newParent)=0
 Reparents the contents of the Range to the given node and inserts the node at the position of the start of the Range.
virtual DOMRangecloneRange () const =0
 Produces a new Range whose boundary-points are equal to the boundary-points of the Range.
virtual const XMLCh * toString () const =0
 Returns the contents of a Range as a string.
virtual void detach ()=0
 Called to indicate that the Range is no longer in use and that the implementation may relinquish any resources associated with this Range.
Non-standard Extension
virtual void release ()=0
 Called to indicate that this Range is no longer in use and that the implementation may relinquish any resources associated with it.

Protected Member Functions

Hidden constructors
 DOMRange ()
 DOMRange (const DOMRange &)
+


Detailed Description

+See also the Document Object Model (DOM) Level 2 Traversal and Range Specification.
Since:
DOM Level 2
+ +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
enum xercesc::DOMRange::CompareHow
+
+ + + + + +
+   + + +

+Constants CompareHow. +

+START_TO_START: Compare start boundary-point of sourceRange to start boundary-point of Range on which compareBoundaryPoints is invoked.

+START_TO_END: Compare start boundary-point of sourceRange to end boundary-point of Range on which compareBoundaryPoints is invoked.

+END_TO_END: Compare end boundary-point of sourceRange to end boundary-point of Range on which compareBoundaryPoints is invoked.

+END_TO_START: Compare end boundary-point of sourceRange to start boundary-point of Range on which compareBoundaryPoints is invoked.

+

Since:
DOM Level 2
+
Enumerator:
+ + + + + +
START_TO_START  +
START_TO_END  +
END_TO_END  +
END_TO_START  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMRange::DOMRange  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
xercesc::DOMRange::DOMRange const DOMRange  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMRange::~DOMRange  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual DOMDocumentFragment* xercesc::DOMRange::cloneContents  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Duplicates the contents of a Range. +

+

Returns:
A DOMDocumentFragment that contains content equivalent to this Range.
+
Exceptions:
+ + +
DOMException HIERARCHY_REQUEST_ERR: Raised if a DOMDocumentType node would be extracted into the new DOMDocumentFragment.
+INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual DOMRange* xercesc::DOMRange::cloneRange  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Produces a new Range whose boundary-points are equal to the boundary-points of the Range. +

+

Returns:
The duplicated Range.
+
Exceptions:
+ + +
DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMRange::collapse bool  toStart  )  [pure virtual]
+
+ + + + + +
+   + + +

+Collapse a Range onto one of its boundary-points. +

+

Parameters:
+ + +
toStart If TRUE, collapses the Range onto its start; if FALSE, collapses it onto its end.
+
+
Exceptions:
+ + +
DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual short xercesc::DOMRange::compareBoundaryPoints CompareHow  how,
const DOMRange sourceRange
const [pure virtual]
+
+ + + + + +
+   + + +

+Compare the boundary-points of two Ranges in a document. +

+

Parameters:
+ + + +
how A code representing the type of comparison, as defined above.
sourceRange The Range on which this current Range is compared to.
+
+
Returns:
-1, 0 or 1 depending on whether the corresponding boundary-point of the Range is respectively before, equal to, or after the corresponding boundary-point of sourceRange.
+
Exceptions:
+ + +
DOMException WRONG_DOCUMENT_ERR: Raised if the two Ranges are not in the same DOMDocument or DOMDocumentFragment.
+INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual void xercesc::DOMRange::deleteContents  )  [pure virtual]
+
+ + + + + +
+   + + +

+Removes the contents of a Range from the containing document or document fragment without returning a reference to the removed content. +

+

Exceptions:
+ + +
DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if any portion of the content of the Range is read-only or any of the nodes that contain any of the content of the Range are read-only.
+INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual void xercesc::DOMRange::detach  )  [pure virtual]
+
+ + + + + +
+   + + +

+Called to indicate that the Range is no longer in use and that the implementation may relinquish any resources associated with this Range. +

+Subsequent calls to any methods or attribute getters on this Range will result in a DOMException being thrown with an error code of INVALID_STATE_ERR.

Exceptions:
+ + +
DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual DOMDocumentFragment* xercesc::DOMRange::extractContents  )  [pure virtual]
+
+ + + + + +
+   + + +

+Moves the contents of a Range from the containing document or document fragment to a new DOMDocumentFragment. +

+

Returns:
A DOMDocumentFragment containing the extracted contents.
+
Exceptions:
+ + +
DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if any portion of the content of the Range is read-only or any of the nodes which contain any of the content of the Range are read-only.
+HIERARCHY_REQUEST_ERR: Raised if a DOMDocumentType node would be extracted into the new DOMDocumentFragment.
+INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual bool xercesc::DOMRange::getCollapsed  )  const [pure virtual]
+
+ + + + + +
+   + + +

+TRUE if the Range is collapsed

Exceptions:
+ + +
DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+
+ +

+

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual const DOMNode* xercesc::DOMRange::getCommonAncestorContainer  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The deepest common ancestor container of the Range's two boundary-points. +

+

Exceptions:
+ + +
DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMRange::getEndContainer  )  const [pure virtual]
+
+ + + + + +
+   + + +

+DOMNode within which the Range ends

Exceptions:
+ + +
DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+
+ +

+

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual XMLSize_t xercesc::DOMRange::getEndOffset  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Offset within the ending node of the Range. +

+

Exceptions:
+ + +
DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMRange::getStartContainer  )  const [pure virtual]
+
+ + + + + +
+   + + +

+DOMNode within which the Range begins

Exceptions:
+ + +
DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+
+ +

+

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual XMLSize_t xercesc::DOMRange::getStartOffset  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Offset within the starting node of the Range. +

+

Exceptions:
+ + +
DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMRange::insertNode DOMNode newNode  )  [pure virtual]
+
+ + + + + +
+   + + +

+Inserts a node into the DOMDocument or DOMDocumentFragment at the start of the Range. +

+If the container is a DOMText node, this will be split at the start of the Range (as if the DOMText node's splitText method was performed at the insertion point) and the insertion will occur between the two resulting DOMText nodes. Adjacent DOMText nodes will not be automatically merged. If the node to be inserted is a DOMDocumentFragment node, the children will be inserted rather than the DOMDocumentFragment node itself.

Parameters:
+ + +
newNode The node to insert at the start of the Range
+
+
Exceptions:
+ + + +
DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if an ancestor container of the start of the Range is read-only.
+WRONG_DOCUMENT_ERR: Raised if newNode and the container of the start of the Range were not created from the same document.
+HIERARCHY_REQUEST_ERR: Raised if the container of the start of the Range is of a type that does not allow children of the type of newNode or if newNode is an ancestor of the container.
+INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
DOMRangeException INVALID_NODE_TYPE_ERR: Raised if newNode is an DOMAttr, DOMEntity, DOMNotation, or DOMDocument node.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual void xercesc::DOMRange::release  )  [pure virtual]
+
+ + + + + +
+   + + +

+Called to indicate that this Range is no longer in use and that the implementation may relinquish any resources associated with it. +

+(release() will call detach() where appropriate)

+Access to a released object will lead to unexpected result.

+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMRange::selectNode const DOMNode refNode  )  [pure virtual]
+
+ + + + + +
+   + + +

+Select a node and its contents. +

+

Parameters:
+ + +
refNode The node to select.
+
+
Exceptions:
+ + + +
DOMRangeException INVALID_NODE_TYPE_ERR: Raised if an ancestor of refNode is an DOMEntity, DOMNotation or DOMDocumentType node or if refNode is a DOMDocument, DOMDocumentFragment, DOMAttr, DOMEntity, or DOMNotation node.
DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+WRONG_DOCUMENT_ERR: Raised if refNode was created from a different document than the one that created this range.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMRange::selectNodeContents const DOMNode refNode  )  [pure virtual]
+
+ + + + + +
+   + + +

+Select the contents within a node. +

+

Parameters:
+ + +
refNode DOMNode to select from
+
+
Exceptions:
+ + + +
DOMRangeException INVALID_NODE_TYPE_ERR: Raised if refNode or an ancestor of refNode is an DOMEntity, DOMNotation or DOMDocumentType node.
DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+WRONG_DOCUMENT_ERR: Raised if refNode was created from a different document than the one that created this range.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void xercesc::DOMRange::setEnd const DOMNode refNode,
XMLSize_t  offset
[pure virtual]
+
+ + + + + +
+   + + +

+Sets the attributes describing the end of a Range. +

+

Parameters:
+ + + +
refNode The refNode value. This parameter must be different from null.
offset The endOffset value.
+
+
Exceptions:
+ + + +
DOMRangeException INVALID_NODE_TYPE_ERR: Raised if refNode or an ancestor of refNode is an DOMEntity, DOMNotation, or DOMDocumentType node.
DOMException INDEX_SIZE_ERR: Raised if offset is negative or greater than the number of child units in refNode. Child units are 16-bit units if refNode is a type of DOMCharacterData node (e.g., a DOMText or DOMComment node) or a DOMProcessingInstruction node. Child units are Nodes in all other cases.
+INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+WRONG_DOCUMENT_ERR: Raised if refNode was created from a different document than the one that created this range.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMRange::setEndAfter const DOMNode refNode  )  [pure virtual]
+
+ + + + + +
+   + + +

+Sets the end of a Range to be after a node. +

+

Parameters:
+ + +
refNode Range ends after refNode.
+
+
Exceptions:
+ + + +
DOMRangeException INVALID_NODE_TYPE_ERR: Raised if the root container of refNode is not a DOMAttr, DOMDocument or DOMDocumentFragment node or if refNode is a DOMDocument, DOMDocumentFragment, DOMAttr, DOMEntity, or DOMNotation node.
DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+WRONG_DOCUMENT_ERR: Raised if refNode was created from a different document than the one that created this range.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMRange::setEndBefore const DOMNode refNode  )  [pure virtual]
+
+ + + + + +
+   + + +

+Sets the end position to be before a node. +

+

Parameters:
+ + +
refNode Range ends before refNode
+
+
Exceptions:
+ + + +
DOMRangeException INVALID_NODE_TYPE_ERR: Raised if the root container of refNode is not an DOMAttr, DOMDocument, or DOMDocumentFragment node or if refNode is a DOMDocument, DOMDocumentFragment, DOMAttr, DOMEntity, or DOMNotation node.
DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+WRONG_DOCUMENT_ERR: Raised if refNode was created from a different document than the one that created this range.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void xercesc::DOMRange::setStart const DOMNode refNode,
XMLSize_t  offset
[pure virtual]
+
+ + + + + +
+   + + +

+Sets the attributes describing the start of the Range. +

+

Parameters:
+ + + +
refNode The refNode value. This parameter must be different from null.
offset The startOffset value.
+
+
Exceptions:
+ + + +
DOMRangeException INVALID_NODE_TYPE_ERR: Raised if refNode or an ancestor of refNode is an DOMEntity, DOMNotation, or DOMDocumentType node.
DOMException INDEX_SIZE_ERR: Raised if offset is negative or greater than the number of child units in refNode. Child units are 16-bit units if refNode is a type of DOMCharacterData node (e.g., a DOMText or DOMComment node) or a DOMProcessingInstruction node. Child units are Nodes in all other cases.
+INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+WRONG_DOCUMENT_ERR: Raised if refNode was created from a different document than the one that created this range.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMRange::setStartAfter const DOMNode refNode  )  [pure virtual]
+
+ + + + + +
+   + + +

+Sets the start position to be after a node. +

+

Parameters:
+ + +
refNode Range starts after refNode
+
+
Exceptions:
+ + + +
DOMRangeException INVALID_NODE_TYPE_ERR: Raised if the root container of refNode is not an DOMAttr, DOMDocument, or DOMDocumentFragment node or if refNode is a DOMDocument, DOMDocumentFragment, DOMAttr, DOMEntity, or DOMNotation node.
DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+WRONG_DOCUMENT_ERR: Raised if refNode was created from a different document than the one that created this range.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMRange::setStartBefore const DOMNode refNode  )  [pure virtual]
+
+ + + + + +
+   + + +

+Sets the start position to be before a node. +

+

Parameters:
+ + +
refNode Range starts before refNode
+
+
Exceptions:
+ + + +
DOMRangeException INVALID_NODE_TYPE_ERR: Raised if the root container of refNode is not an DOMAttr, DOMDocument, or DOMDocumentFragment node or if refNode is a DOMDocument, DOMDocumentFragment, DOMAttr, DOMEntity, or DOMNotation node.
DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+WRONG_DOCUMENT_ERR: Raised if refNode was created from a different document than the one that created this range.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMRange::surroundContents DOMNode newParent  )  [pure virtual]
+
+ + + + + +
+   + + +

+Reparents the contents of the Range to the given node and inserts the node at the position of the start of the Range. +

+

Parameters:
+ + +
newParent The node to surround the contents with.
+
+
Exceptions:
+ + + +
DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if an ancestor container of either boundary-point of the Range is read-only.
+WRONG_DOCUMENT_ERR: Raised if newParent and the container of the start of the Range were not created from the same document.
+HIERARCHY_REQUEST_ERR: Raised if the container of the start of the Range is of a type that does not allow children of the type of newParent or if newParent is an ancestor of the container or if node would end up with a child node of a type not allowed by the type of node.
+INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
DOMRangeException BAD_BOUNDARYPOINTS_ERR: Raised if the Range partially selects a non-text node.
+INVALID_NODE_TYPE_ERR: Raised if node is an DOMAttr, DOMEntity, DOMDocumentType, DOMNotation, DOMDocument, or DOMDocumentFragment node.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMRange::toString  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the contents of a Range as a string. +

+This string contains only the data characters, not any markup.

Returns:
The contents of the Range.
+
Exceptions:
+ + +
DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
+
+
Since:
DOM Level 2
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMRangeException-members.html b/docs/dom3-api/classxercesc_1_1DOMRangeException-members.html new file mode 100644 index 00000000..1093ae40 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMRangeException-members.html @@ -0,0 +1,59 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMRangeException Member List

This is the complete list of members for xercesc::DOMRangeException, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BAD_BOUNDARYPOINTS_ERR enum valuexercesc::DOMRangeException
codexercesc::DOMRangeException
DOMException()xercesc::DOMException
DOMException(short code, const XMLCh *message, MemoryManager *const memoryManager=XMLPlatformUtils::fgMemoryManager)xercesc::DOMException
DOMException(const DOMException &other)xercesc::DOMException
DOMRangeException()xercesc::DOMRangeException
DOMRangeException(RangeExceptionCode code, const XMLCh *message, MemoryManager *const memoryManager)xercesc::DOMRangeException
DOMRangeException(const DOMRangeException &other)xercesc::DOMRangeException
DOMSTRING_SIZE_ERR enum valuexercesc::DOMException
ExceptionCode enum namexercesc::DOMException
fMemoryManagerxercesc::DOMException [protected]
getMessage() const xercesc::DOMException [inline]
HIERARCHY_REQUEST_ERR enum valuexercesc::DOMException
INDEX_SIZE_ERR enum valuexercesc::DOMException
INUSE_ATTRIBUTE_ERR enum valuexercesc::DOMException
INVALID_ACCESS_ERR enum valuexercesc::DOMException
INVALID_CHARACTER_ERR enum valuexercesc::DOMException
INVALID_MODIFICATION_ERR enum valuexercesc::DOMException
INVALID_NODE_TYPE_ERR enum valuexercesc::DOMRangeException
INVALID_STATE_ERR enum valuexercesc::DOMException
msgxercesc::DOMException
NAMESPACE_ERR enum valuexercesc::DOMException
NO_DATA_ALLOWED_ERR enum valuexercesc::DOMException
NO_MODIFICATION_ALLOWED_ERR enum valuexercesc::DOMException
NOT_FOUND_ERR enum valuexercesc::DOMException
NOT_SUPPORTED_ERR enum valuexercesc::DOMException
RangeExceptionCode enum namexercesc::DOMRangeException
SYNTAX_ERR enum valuexercesc::DOMException
VALIDATION_ERR enum valuexercesc::DOMException
WRONG_DOCUMENT_ERR enum valuexercesc::DOMException
~DOMException()xercesc::DOMException [virtual]
~DOMRangeException()xercesc::DOMRangeException [virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMRangeException.html b/docs/dom3-api/classxercesc_1_1DOMRangeException.html new file mode 100644 index 00000000..ce21cf09 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMRangeException.html @@ -0,0 +1,287 @@ + + +XQilla DOM Level 3 API: xercesc::DOMRangeException Class Reference + + + + + + + +

xercesc::DOMRangeException Class Reference

Range operations may throw a DOMRangeException as specified in their method descriptions. +More... +

+#include <DOMRangeException.hpp> +

+Inheritance diagram for xercesc::DOMRangeException:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

Public Contants
enum  RangeExceptionCode { BAD_BOUNDARYPOINTS_ERR = 1, +INVALID_NODE_TYPE_ERR = 2 + }
 Enumerators for DOM Range Exceptions. More...

Public Member Functions

Constructors
 DOMRangeException ()
 Default constructor for DOMRangeException.
 DOMRangeException (RangeExceptionCode code, const XMLCh *message, MemoryManager *const memoryManager)
 Constructor which takes an error code and a message.
 DOMRangeException (const DOMRangeException &other)
 Copy constructor.
Destructor.
virtual ~DOMRangeException ()
 Destructor for DOMRangeException.

Public Attributes

Public variables
RangeExceptionCode code
 A code value, from the set defined by the RangeExceptionCode enum, indicating the type of error that occured.
+

Detailed Description

+Range operations may throw a DOMRangeException as specified in their method descriptions. +

+See also the Document Object Model (DOM) Level 2 Traversal and Range Specification.

Since:
DOM Level 2
+ +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
enum xercesc::DOMRangeException::RangeExceptionCode
+
+ + + + + +
+   + + +

+Enumerators for DOM Range Exceptions. +

+BAD_BOUNDARYPOINTS_ERR: If the boundary-points of a Range do not meet specific requirements.

+INVALID_NODE_TYPE_ERR: If the container of an boundary-point of a Range is being set to either a node of an invalid type or a node with an ancestor of an invalid type.

+

Since:
DOM Level 2
+
Enumerator:
+ + + +
BAD_BOUNDARYPOINTS_ERR  +
INVALID_NODE_TYPE_ERR  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMRangeException::DOMRangeException  ) 
+
+ + + + + +
+   + + +

+Default constructor for DOMRangeException. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xercesc::DOMRangeException::DOMRangeException RangeExceptionCode  code,
const XMLCh *  message,
MemoryManager *const   memoryManager
+
+ + + + + +
+   + + +

+Constructor which takes an error code and a message. +

+

Parameters:
+ + + + +
code The error code which indicates the exception
message The string containing the error message
memoryManager The memory manager used to (de)allocate memory
+
+
+

+ + + + +
+ + + + + + + + + +
xercesc::DOMRangeException::DOMRangeException const DOMRangeException other  ) 
+
+ + + + + +
+   + + +

+Copy constructor. +

+

Parameters:
+ + +
other The object to be copied.
+
+
+

+ + + + +
+ + + + + + + + +
xercesc::DOMRangeException::~DOMRangeException  )  [virtual]
+
+ + + + + +
+   + + +

+Destructor for DOMRangeException. +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
RangeExceptionCode xercesc::DOMRangeException::code
+
+ + + + + +
+   + + +

+A code value, from the set defined by the RangeExceptionCode enum, indicating the type of error that occured. +

+

Since:
DOM Level 2
+ +

+Reimplemented from xercesc::DOMException.

+


The documentation for this class was generated from the following files: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMRangeException__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMRangeException__inherit__graph.map new file mode 100644 index 00000000..2f29ec49 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMRangeException__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMException.html 27,9 193,33 diff --git a/docs/dom3-api/classxercesc_1_1DOMRangeException__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMRangeException__inherit__graph.md5 new file mode 100644 index 00000000..8efd1d1c --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMRangeException__inherit__graph.md5 @@ -0,0 +1 @@ +2fb1a8eaeb3741fb84930e1e6734678c \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMRangeException__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMRangeException__inherit__graph.png new file mode 100644 index 00000000..7da234cf Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMRangeException__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMText-members.html b/docs/dom3-api/classxercesc_1_1DOMText-members.html new file mode 100644 index 00000000..10219499 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMText-members.html @@ -0,0 +1,108 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMText Member List

This is the complete list of members for xercesc::DOMText, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
appendChild(DOMNode *newChild)=0xercesc::DOMNode [pure virtual]
appendData(const XMLCh *arg)=0xercesc::DOMCharacterData [pure virtual]
ATTRIBUTE_NODE enum valuexercesc::DOMNode
CDATA_SECTION_NODE enum valuexercesc::DOMNode
cloneNode(bool deep) const =0xercesc::DOMNode [pure virtual]
COMMENT_NODE enum valuexercesc::DOMNode
compareTreePosition(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
deleteData(XMLSize_t offset, XMLSize_t count)=0xercesc::DOMCharacterData [pure virtual]
DOCUMENT_FRAGMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_TYPE_NODE enum valuexercesc::DOMNode
DOMCharacterData()xercesc::DOMCharacterData [inline, protected]
DOMCharacterData(const DOMCharacterData &other)xercesc::DOMCharacterData [inline, protected]
DOMNode()xercesc::DOMNode [inline, protected]
DOMNode(const DOMNode &)xercesc::DOMNode [inline, protected]
DOMText()xercesc::DOMText [inline, protected]
DOMText(const DOMText &other)xercesc::DOMText [inline, protected]
DOMTreePosition enum namexercesc::DOMNode
ELEMENT_NODE enum valuexercesc::DOMNode
ENTITY_NODE enum valuexercesc::DOMNode
ENTITY_REFERENCE_NODE enum valuexercesc::DOMNode
getAttributes() const =0xercesc::DOMNode [pure virtual]
getBaseURI() const =0xercesc::DOMNode [pure virtual]
getChildNodes() const =0xercesc::DOMNode [pure virtual]
getData() const =0xercesc::DOMCharacterData [pure virtual]
getFirstChild() const =0xercesc::DOMNode [pure virtual]
getInterface(const XMLCh *feature)=0xercesc::DOMNode [pure virtual]
getIsWhitespaceInElementContent() const =0xercesc::DOMText [pure virtual]
getLastChild() const =0xercesc::DOMNode [pure virtual]
getLength() const =0xercesc::DOMCharacterData [pure virtual]
getLocalName() const =0xercesc::DOMNode [pure virtual]
getNamespaceURI() const =0xercesc::DOMNode [pure virtual]
getNextSibling() const =0xercesc::DOMNode [pure virtual]
getNodeName() const =0xercesc::DOMNode [pure virtual]
getNodeType() const =0xercesc::DOMNode [pure virtual]
getNodeValue() const =0xercesc::DOMNode [pure virtual]
getOwnerDocument() const =0xercesc::DOMNode [pure virtual]
getParentNode() const =0xercesc::DOMNode [pure virtual]
getPrefix() const =0xercesc::DOMNode [pure virtual]
getPreviousSibling() const =0xercesc::DOMNode [pure virtual]
getTextContent() const =0xercesc::DOMNode [pure virtual]
getUserData(const XMLCh *key) const =0xercesc::DOMNode [pure virtual]
getWholeText()=0xercesc::DOMText [pure virtual]
hasAttributes() const =0xercesc::DOMNode [pure virtual]
hasChildNodes() const =0xercesc::DOMNode [pure virtual]
insertBefore(DOMNode *newChild, DOMNode *refChild)=0xercesc::DOMNode [pure virtual]
insertData(XMLSize_t offset, const XMLCh *arg)=0xercesc::DOMCharacterData [pure virtual]
isDefaultNamespace(const XMLCh *namespaceURI) const =0xercesc::DOMNode [pure virtual]
isEqualNode(const DOMNode *arg) const =0xercesc::DOMNode [pure virtual]
isIgnorableWhitespace() const =0xercesc::DOMText [pure virtual]
isSameNode(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
isSupported(const XMLCh *feature, const XMLCh *version) const =0xercesc::DOMNode [pure virtual]
lookupNamespacePrefix(const XMLCh *namespaceURI, bool useDefault) const =0xercesc::DOMNode [pure virtual]
lookupNamespaceURI(const XMLCh *prefix) const =0xercesc::DOMNode [pure virtual]
NodeType enum namexercesc::DOMNode
normalize()=0xercesc::DOMNode [pure virtual]
NOTATION_NODE enum valuexercesc::DOMNode
PROCESSING_INSTRUCTION_NODE enum valuexercesc::DOMNode
release()=0xercesc::DOMNode [pure virtual]
removeChild(DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
replaceChild(DOMNode *newChild, DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
replaceData(XMLSize_t offset, XMLSize_t count, const XMLCh *arg)=0xercesc::DOMCharacterData [pure virtual]
replaceWholeText(const XMLCh *content)=0xercesc::DOMText [pure virtual]
setData(const XMLCh *data)=0xercesc::DOMCharacterData [pure virtual]
setNodeValue(const XMLCh *nodeValue)=0xercesc::DOMNode [pure virtual]
setPrefix(const XMLCh *prefix)=0xercesc::DOMNode [pure virtual]
setTextContent(const XMLCh *textContent)=0xercesc::DOMNode [pure virtual]
setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0xercesc::DOMNode [pure virtual]
splitText(XMLSize_t offset)=0xercesc::DOMText [pure virtual]
substringData(XMLSize_t offset, XMLSize_t count) const =0xercesc::DOMCharacterData [pure virtual]
TEXT_NODE enum valuexercesc::DOMNode
TREE_POSITION_ANCESTOR enum valuexercesc::DOMNode
TREE_POSITION_DESCENDANT enum valuexercesc::DOMNode
TREE_POSITION_DISCONNECTED enum valuexercesc::DOMNode
TREE_POSITION_EQUIVALENT enum valuexercesc::DOMNode
TREE_POSITION_FOLLOWING enum valuexercesc::DOMNode
TREE_POSITION_PRECEDING enum valuexercesc::DOMNode
TREE_POSITION_SAME_NODE enum valuexercesc::DOMNode
~DOMCharacterData()xercesc::DOMCharacterData [inline, virtual]
~DOMNode()xercesc::DOMNode [inline, virtual]
~DOMText()xercesc::DOMText [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMText.html b/docs/dom3-api/classxercesc_1_1DOMText.html new file mode 100644 index 00000000..966e2ba7 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMText.html @@ -0,0 +1,348 @@ + + +XQilla DOM Level 3 API: xercesc::DOMText Class Reference + + + + + + + +

xercesc::DOMText Class Reference

The DOMText interface inherits from DOMCharacterData and represents the textual content (termed character data in XML) of an DOMElement or DOMAttr. +More... +

+#include <DOMText.hpp> +

+Inheritance diagram for xercesc::DOMText:

Inheritance graph
+ + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMText ()
 Destructor.
Functions introduced in DOM Level 1
virtual DOMTextsplitText (XMLSize_t offset)=0
 Breaks this node into two nodes at the specified offset, keeping both in the tree as siblings.
Functions introduced in DOM Level 3
virtual bool getIsWhitespaceInElementContent () const =0
 Returns whether this text node contains whitespace in element content, often abusively called "ignorable whitespace".
virtual const XMLCh * getWholeText ()=0
 Returns all text of DOMText nodes logically-adjacent text nodes to this node, concatenated in document order.
virtual DOMTextreplaceWholeText (const XMLCh *content)=0
 Substitutes the a specified text for the text of the current node and all logically-adjacent text nodes.
Non-standard extension
virtual bool isIgnorableWhitespace () const =0
 Non-standard extension.

Protected Member Functions

Hidden constructors
 DOMText ()
 DOMText (const DOMText &other)
+

Detailed Description

+The DOMText interface inherits from DOMCharacterData and represents the textual content (termed character data in XML) of an DOMElement or DOMAttr. +

+If there is no markup inside an element's content, the text is contained in a single object implementing the DOMText interface that is the only child of the element. If there is markup, it is parsed into the information items (elements, comments, etc.) and DOMText nodes that form the list of children of the element.

+When a document is first made available via the DOM, there is only one DOMText node for each block of text. Users may create adjacent DOMText nodes that represent the contents of a given element without any intervening markup, but should be aware that there is no way to represent the separations between these nodes in XML or HTML, so they will not (in general) persist between DOM editing sessions. The normalize() method on DOMNode merges any such adjacent DOMText objects into a single node for each block of text.

+See also the Document Object Model (DOM) Level 2 Core Specification. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMText::DOMText  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
xercesc::DOMText::DOMText const DOMText other  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMText::~DOMText  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual bool xercesc::DOMText::getIsWhitespaceInElementContent  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns whether this text node contains whitespace in element content, often abusively called "ignorable whitespace". +

+An implementation can only return true if, one way or another, it has access to the relevant information (e.g., the DTD or schema).

+"Experimental - subject to change"

+
+ This attribute represents the property [element content whitespace] defined in .

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMText::getWholeText  )  [pure virtual]
+
+ + + + + +
+   + + +

+Returns all text of DOMText nodes logically-adjacent text nodes to this node, concatenated in document order. +

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual bool xercesc::DOMText::isIgnorableWhitespace  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Non-standard extension. +

+Return true if this node contains ignorable whitespaces only.

Returns:
True if this node contains ignorable whitespaces only.
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMText* xercesc::DOMText::replaceWholeText const XMLCh *  content  )  [pure virtual]
+
+ + + + + +
+   + + +

+Substitutes the a specified text for the text of the current node and all logically-adjacent text nodes. +

+"Experimental - subject to change"

+
+This method returns the node in the hierarchy which received the replacement text, which is null if the text was empty or is the current node if the current node is not read-only or otherwise is a new node of the same type as the current node inserted at the site of the replacement. All logically-adjacent text nodes are removed including the current node unless it was the recipient of the replacement text.
+Where the nodes to be removed are read-only descendants of an DOMEntityReference, the DOMEntityReference must be removed instead of the read-only nodes. If any DOMEntityReference to be removed has descendants that are not DOMEntityReference, DOMText, or DOMCDATASection nodes, the replaceWholeText method must fail before performing any modification of the document, raising a DOMException with the code NO_MODIFICATION_ALLOWED_ERR.

Parameters:
+ + +
content The content of the replacing DOMText node.
+
+
Returns:
The DOMText node created with the specified content.
+
Exceptions:
+ + +
DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if one of the DOMText nodes being replaced is readonly.
+
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMText* xercesc::DOMText::splitText XMLSize_t  offset  )  [pure virtual]
+
+ + + + + +
+   + + +

+Breaks this node into two nodes at the specified offset, keeping both in the tree as siblings. +

+After being split, this node will contain all the content up to the offset point. A new node of the same type, which contains all the content at and after the offset point, is returned. If the original node had a parent node, the new node is inserted as the next sibling of the original node. When the offset is equal to the length of this node, the new node has no data.

Parameters:
+ + +
offset The 16-bit unit offset at which to split, starting from 0.
+
+
Returns:
The new node, of the same type as this node.
+
Exceptions:
+ + +
DOMException INDEX_SIZE_ERR: Raised if the specified offset is negative or greater than the number of 16-bit units in data.
+NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+
+
Since:
DOM Level 1
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMText__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMText__inherit__graph.map new file mode 100644 index 00000000..56e46d06 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMText__inherit__graph.map @@ -0,0 +1,4 @@ +base referer +rect $classxercesc_1_1DOMCDATASection.html 8,233 202,257 +rect $classxercesc_1_1DOMCharacterData.html 8,84 202,108 +rect $classxercesc_1_1DOMNode.html 36,9 174,33 diff --git a/docs/dom3-api/classxercesc_1_1DOMText__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMText__inherit__graph.md5 new file mode 100644 index 00000000..45e51102 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMText__inherit__graph.md5 @@ -0,0 +1 @@ +42d5b3bd7a77d07c6e5dad26df04a7ae \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMText__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMText__inherit__graph.png new file mode 100644 index 00000000..903d296b Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMText__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMTreeWalker-members.html b/docs/dom3-api/classxercesc_1_1DOMTreeWalker-members.html new file mode 100644 index 00000000..7c13855a --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMTreeWalker-members.html @@ -0,0 +1,44 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMTreeWalker Member List

This is the complete list of members for xercesc::DOMTreeWalker, including all inherited members.

+ + + + + + + + + + + + + + + + + +
DOMTreeWalker()xercesc::DOMTreeWalker [inline, protected]
DOMTreeWalker(const DOMTreeWalker &)xercesc::DOMTreeWalker [inline, protected]
firstChild()=0xercesc::DOMTreeWalker [pure virtual]
getCurrentNode()=0xercesc::DOMTreeWalker [pure virtual]
getExpandEntityReferences()=0xercesc::DOMTreeWalker [pure virtual]
getFilter()=0xercesc::DOMTreeWalker [pure virtual]
getRoot()=0xercesc::DOMTreeWalker [pure virtual]
getWhatToShow()=0xercesc::DOMTreeWalker [pure virtual]
lastChild()=0xercesc::DOMTreeWalker [pure virtual]
nextNode()=0xercesc::DOMTreeWalker [pure virtual]
nextSibling()=0xercesc::DOMTreeWalker [pure virtual]
parentNode()=0xercesc::DOMTreeWalker [pure virtual]
previousNode()=0xercesc::DOMTreeWalker [pure virtual]
previousSibling()=0xercesc::DOMTreeWalker [pure virtual]
release()=0xercesc::DOMTreeWalker [pure virtual]
setCurrentNode(DOMNode *currentNode)=0xercesc::DOMTreeWalker [pure virtual]
~DOMTreeWalker()xercesc::DOMTreeWalker [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMTreeWalker.html b/docs/dom3-api/classxercesc_1_1DOMTreeWalker.html new file mode 100644 index 00000000..8fbd9325 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMTreeWalker.html @@ -0,0 +1,624 @@ + + +XQilla DOM Level 3 API: xercesc::DOMTreeWalker Class Reference + + + + + + + +

xercesc::DOMTreeWalker Class Reference

DOMTreeWalker objects are used to navigate a document tree or subtree using the view of the document defined by their whatToShow flags and filter (if any). +More... +

+#include <DOMTreeWalker.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMTreeWalker ()
 Destructor.
Functions introduced in DOM Level 2
virtual DOMNodegetRoot ()=0
 The root node of the DOMTreeWalker, as specified when it was created.
virtual unsigned long getWhatToShow ()=0
 This attribute determines which node types are presented via the DOMTreeWalker.
virtual DOMNodeFiltergetFilter ()=0
 Return The filter used to screen nodes.
virtual bool getExpandEntityReferences ()=0
 The value of this flag determines whether the children of entity reference nodes are visible to the DOMTreeWalker.
virtual DOMNodegetCurrentNode ()=0
 Return the node at which the DOMTreeWalker is currently positioned.
virtual DOMNodeparentNode ()=0
 Moves to and returns the closest visible ancestor node of the current node.
virtual DOMNodefirstChild ()=0
 Moves the DOMTreeWalker to the first visible child of the current node, and returns the new node.
virtual DOMNodelastChild ()=0
 Moves the DOMTreeWalker to the last visible child of the current node, and returns the new node.
virtual DOMNodepreviousSibling ()=0
 Moves the DOMTreeWalker to the previous sibling of the current node, and returns the new node.
virtual DOMNodenextSibling ()=0
 Moves the DOMTreeWalker to the next sibling of the current node, and returns the new node.
virtual DOMNodepreviousNode ()=0
 Moves the DOMTreeWalker to the previous visible node in document order relative to the current node, and returns the new node.
virtual DOMNodenextNode ()=0
 Moves the DOMTreeWalker to the next visible node in document order relative to the current node, and returns the new node.
virtual void setCurrentNode (DOMNode *currentNode)=0
 The node at which the DOMTreeWalker is currently positioned.
Non-standard Extension
virtual void release ()=0
 Called to indicate that this TreeWalker is no longer in use and that the implementation may relinquish any resources associated with it.

Protected Member Functions

Hidden constructors
 DOMTreeWalker ()
 DOMTreeWalker (const DOMTreeWalker &)
+


Detailed Description

+DOMTreeWalker objects are used to navigate a document tree or subtree using the view of the document defined by their whatToShow flags and filter (if any). +

+Any function which performs navigation using a DOMTreeWalker will automatically support any view defined by a DOMTreeWalker.

+Omitting nodes from the logical view of a subtree can result in a structure that is substantially different from the same subtree in the complete, unfiltered document. Nodes that are siblings in the DOMTreeWalker view may be children of different, widely separated nodes in the original view. For instance, consider a DOMNodeFilter that skips all nodes except for DOMText nodes and the root node of a document. In the logical view that results, all text nodes will be siblings and appear as direct children of the root node, no matter how deeply nested the structure of the original document.

+See also the Document Object Model (DOM) Level 2 Traversal and Range Specification.

+

Since:
DOM Level 2
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMTreeWalker::DOMTreeWalker  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
xercesc::DOMTreeWalker::DOMTreeWalker const DOMTreeWalker  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMTreeWalker::~DOMTreeWalker  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMTreeWalker::firstChild  )  [pure virtual]
+
+ + + + + +
+   + + +

+Moves the DOMTreeWalker to the first visible child of the current node, and returns the new node. +

+If the current node has no visible children, returns null, and retains the current node.

Returns:
The new node, or null if the current node has no visible children in the DOMTreeWalker's logical view.
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMTreeWalker::getCurrentNode  )  [pure virtual]
+
+ + + + + +
+   + + +

+Return the node at which the DOMTreeWalker is currently positioned. +

+

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual bool xercesc::DOMTreeWalker::getExpandEntityReferences  )  [pure virtual]
+
+ + + + + +
+   + + +

+The value of this flag determines whether the children of entity reference nodes are visible to the DOMTreeWalker. +

+If false, these children and their descendants will be rejected. Note that this rejection takes precedence over whatToShow and the filter, if any.
+ To produce a view of the document that has entity references expanded and does not expose the entity reference node itself, use the whatToShow flags to hide the entity reference node and set expandEntityReferences to true when creating the DOMTreeWalker. To produce a view of the document that has entity reference nodes but no entity expansion, use the whatToShow flags to show the entity reference node and set expandEntityReferences to false.

+

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNodeFilter* xercesc::DOMTreeWalker::getFilter  )  [pure virtual]
+
+ + + + + +
+   + + +

+Return The filter used to screen nodes. +

+

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMTreeWalker::getRoot  )  [pure virtual]
+
+ + + + + +
+   + + +

+The root node of the DOMTreeWalker, as specified when it was created. +

+

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual unsigned long xercesc::DOMTreeWalker::getWhatToShow  )  [pure virtual]
+
+ + + + + +
+   + + +

+This attribute determines which node types are presented via the DOMTreeWalker. +

+The available set of constants is defined in the DOMNodeFilter interface. Nodes not accepted by whatToShow will be skipped, but their children may still be considered. Note that this skip takes precedence over the filter, if any.

+

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMTreeWalker::lastChild  )  [pure virtual]
+
+ + + + + +
+   + + +

+Moves the DOMTreeWalker to the last visible child of the current node, and returns the new node. +

+If the current node has no visible children, returns null, and retains the current node.

Returns:
The new node, or null if the current node has no children in the DOMTreeWalker's logical view.
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMTreeWalker::nextNode  )  [pure virtual]
+
+ + + + + +
+   + + +

+Moves the DOMTreeWalker to the next visible node in document order relative to the current node, and returns the new node. +

+If the current node has no next node, or if the search for nextNode attempts to step upward from the DOMTreeWalker's root node, returns null, and retains the current node.

Returns:
The new node, or null if the current node has no next node in the DOMTreeWalker's logical view.
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMTreeWalker::nextSibling  )  [pure virtual]
+
+ + + + + +
+   + + +

+Moves the DOMTreeWalker to the next sibling of the current node, and returns the new node. +

+If the current node has no visible next sibling, returns null, and retains the current node.

Returns:
The new node, or null if the current node has no next sibling. in the DOMTreeWalker's logical view.
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMTreeWalker::parentNode  )  [pure virtual]
+
+ + + + + +
+   + + +

+Moves to and returns the closest visible ancestor node of the current node. +

+If the search for parentNode attempts to step upward from the DOMTreeWalker's root node, or if it fails to find a visible ancestor node, this method retains the current position and returns null.

Returns:
The new parent node, or null if the current node has no parent in the DOMTreeWalker's logical view.
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMTreeWalker::previousNode  )  [pure virtual]
+
+ + + + + +
+   + + +

+Moves the DOMTreeWalker to the previous visible node in document order relative to the current node, and returns the new node. +

+If the current node has no previous node, or if the search for previousNode attempts to step upward from the DOMTreeWalker's root node, returns null, and retains the current node.

Returns:
The new node, or null if the current node has no previous node in the DOMTreeWalker's logical view.
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMTreeWalker::previousSibling  )  [pure virtual]
+
+ + + + + +
+   + + +

+Moves the DOMTreeWalker to the previous sibling of the current node, and returns the new node. +

+If the current node has no visible previous sibling, returns null, and retains the current node.

Returns:
The new node, or null if the current node has no previous sibling. in the DOMTreeWalker's logical view.
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual void xercesc::DOMTreeWalker::release  )  [pure virtual]
+
+ + + + + +
+   + + +

+Called to indicate that this TreeWalker is no longer in use and that the implementation may relinquish any resources associated with it. +

+Access to a released object will lead to unexpected result.

+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMTreeWalker::setCurrentNode DOMNode currentNode  )  [pure virtual]
+
+ + + + + +
+   + + +

+The node at which the DOMTreeWalker is currently positioned. +

+
+Alterations to the DOM tree may cause the current node to no longer be accepted by the DOMTreeWalker's associated filter. currentNode may also be explicitly set to any node, whether or not it is within the subtree specified by the root node or would be accepted by the filter and whatToShow flags. Further traversal occurs relative to currentNode even if it is not part of the current view, by applying the filters in the requested direction; if no traversal is possible, currentNode is not changed.

Exceptions:
+ + +
DOMException NOT_SUPPORTED_ERR: Raised if an attempt is made to set currentNode to null.
+
+
Since:
DOM Level 2
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMTypeInfo-members.html b/docs/dom3-api/classxercesc_1_1DOMTypeInfo-members.html new file mode 100644 index 00000000..0ae2149c --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMTypeInfo-members.html @@ -0,0 +1,31 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMTypeInfo Member List

This is the complete list of members for xercesc::DOMTypeInfo, including all inherited members.

+ + + + +
DOMTypeInfo()xercesc::DOMTypeInfo [inline, protected]
getName() const =0xercesc::DOMTypeInfo [pure virtual]
getNamespace() const =0xercesc::DOMTypeInfo [pure virtual]
~DOMTypeInfo()xercesc::DOMTypeInfo [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMTypeInfo.html b/docs/dom3-api/classxercesc_1_1DOMTypeInfo.html new file mode 100644 index 00000000..00243fbb --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMTypeInfo.html @@ -0,0 +1,181 @@ + + +XQilla DOM Level 3 API: xercesc::DOMTypeInfo Class Reference + + + + + + + +

xercesc::DOMTypeInfo Class Reference

The DOMTypeInfo interface represent a type used by DOMElement or DOMAttr nodes, specified in the schemas associated with the document. +More... +

+#include <DOMTypeInfo.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMTypeInfo ()
 Destructor.
virtual const XMLCh * getName () const =0
 Returns The name of a type declared for the associated DOMElement or DOMAttr, or null if undeclared.
virtual const XMLCh * getNamespace () const =0
 The namespace of the type declared for the associated DOMElement or DOMAttr or null if the DOMElement does not have declaration or if no namespace information is available.

Protected Member Functions

Hidden constructors
 DOMTypeInfo ()
+


Detailed Description

+The DOMTypeInfo interface represent a type used by DOMElement or DOMAttr nodes, specified in the schemas associated with the document. +

+The type is a pair of a namespace URI and name properties, and depends on the document's schema. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMTypeInfo::DOMTypeInfo  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMTypeInfo::~DOMTypeInfo  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMTypeInfo::getName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns The name of a type declared for the associated DOMElement or DOMAttr, or null if undeclared. +

+"Experimental - subject to change"

+

Returns:
The name of a type declared for the associated DOMElement or DOMAttribute, or null if undeclared.
+
Since:
DOM level 3
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMTypeInfo::getNamespace  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The namespace of the type declared for the associated DOMElement or DOMAttr or null if the DOMElement does not have declaration or if no namespace information is available. +

+"Experimental - subject to change"

+

Returns:
The namespace of the type declared for the associated DOMElement or DOMAttr or null if the DOMElement does not have declaration or if no namespace information is available.
+
Since:
DOM level 3
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMUserDataHandler-members.html b/docs/dom3-api/classxercesc_1_1DOMUserDataHandler-members.html new file mode 100644 index 00000000..43203cec --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMUserDataHandler-members.html @@ -0,0 +1,35 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMUserDataHandler Member List

This is the complete list of members for xercesc::DOMUserDataHandler, including all inherited members.

+ + + + + + + + +
DOMOperationType enum namexercesc::DOMUserDataHandler
DOMUserDataHandler()xercesc::DOMUserDataHandler [inline, protected]
handle(DOMOperationType operation, const XMLCh *const key, void *data, const DOMNode *src, const DOMNode *dst)=0xercesc::DOMUserDataHandler [pure virtual]
NODE_CLONED enum valuexercesc::DOMUserDataHandler
NODE_DELETED enum valuexercesc::DOMUserDataHandler
NODE_IMPORTED enum valuexercesc::DOMUserDataHandler
NODE_RENAMED enum valuexercesc::DOMUserDataHandler
~DOMUserDataHandler()xercesc::DOMUserDataHandler [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMUserDataHandler.html b/docs/dom3-api/classxercesc_1_1DOMUserDataHandler.html new file mode 100644 index 00000000..5765ccc1 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMUserDataHandler.html @@ -0,0 +1,238 @@ + + +XQilla DOM Level 3 API: xercesc::DOMUserDataHandler Class Reference + + + + + + + +

xercesc::DOMUserDataHandler Class Reference

When associating an object to a key on a node using setUserData the application can provide a handler that gets called when the node the object is associated to is being cloned or imported. +More... +

+#include <DOMUserDataHandler.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + +

Public Types

Public Constants
enum  DOMOperationType { NODE_CLONED = 1, +NODE_IMPORTED = 2, +NODE_DELETED = 3, +NODE_RENAMED = 4 + }
 Operation Type. More...

Public Member Functions

Destructor
virtual ~DOMUserDataHandler ()
 Destructor.
Functions introduced in DOM Level 3
virtual void handle (DOMOperationType operation, const XMLCh *const key, void *data, const DOMNode *src, const DOMNode *dst)=0
 This method is called whenever the node for which this handler is registered is imported or cloned.

Protected Member Functions

Hidden constructors
 DOMUserDataHandler ()
+


Detailed Description

+When associating an object to a key on a node using setUserData the application can provide a handler that gets called when the node the object is associated to is being cloned or imported. +

+This can be used by the application to implement various behaviors regarding the data it associates to the DOM nodes. This interface defines that handler.

+"Experimental - subject to change"

+See also the Document Object Model (DOM) Level 3 Core Specification.

Since:
DOM Level 3
+ +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
enum xercesc::DOMUserDataHandler::DOMOperationType
+
+ + + + + +
+   + + +

+Operation Type. +

+NODE_CLONED: The node is cloned.

+NODE_IMPORTED The node is imported.

+NODE_DELETED The node is deleted.

+NODE_RENAMED The node is renamed.

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
Enumerator:
+ + + + + +
NODE_CLONED  +
NODE_IMPORTED  +
NODE_DELETED  +
NODE_RENAMED  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMUserDataHandler::DOMUserDataHandler  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMUserDataHandler::~DOMUserDataHandler  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void xercesc::DOMUserDataHandler::handle DOMOperationType  operation,
const XMLCh *const   key,
void *  data,
const DOMNode src,
const DOMNode dst
[pure virtual]
+
+ + + + + +
+   + + +

+This method is called whenever the node for which this handler is registered is imported or cloned. +

+"Experimental - subject to change"

+

Parameters:
+ + + + + + +
operation Specifies the type of operation that is being performed on the node.
key Specifies the key for which this handler is being called.
data Specifies the data for which this handler is being called.
src Specifies the node being cloned, imported, or renamed.
dst Specifies the node newly created.
+
+
Since:
DOM Level 3
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMWriter-members.html b/docs/dom3-api/classxercesc_1_1DOMWriter-members.html new file mode 100644 index 00000000..d3039efa --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMWriter-members.html @@ -0,0 +1,43 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMWriter Member List

This is the complete list of members for xercesc::DOMWriter, including all inherited members.

+ + + + + + + + + + + + + + + + +
canSetFeature(const XMLCh *const featName, bool state) const =0xercesc::DOMWriter [pure virtual]
DOMWriter()xercesc::DOMWriter [inline, protected]
getEncoding() const =0xercesc::DOMWriter [pure virtual]
getErrorHandler() const =0xercesc::DOMWriter [pure virtual]
getFeature(const XMLCh *const featName) const =0xercesc::DOMWriter [pure virtual]
getFilter() const =0xercesc::DOMWriter [pure virtual]
getNewLine() const =0xercesc::DOMWriter [pure virtual]
release()=0xercesc::DOMWriter [pure virtual]
setEncoding(const XMLCh *const encoding)=0xercesc::DOMWriter [pure virtual]
setErrorHandler(DOMErrorHandler *errorHandler)=0xercesc::DOMWriter [pure virtual]
setFeature(const XMLCh *const featName, bool state)=0xercesc::DOMWriter [pure virtual]
setFilter(DOMWriterFilter *filter)=0xercesc::DOMWriter [pure virtual]
setNewLine(const XMLCh *const newLine)=0xercesc::DOMWriter [pure virtual]
writeNode(XMLFormatTarget *const destination, const DOMNode &nodeToWrite)=0xercesc::DOMWriter [pure virtual]
writeToString(const DOMNode &nodeToWrite)=0xercesc::DOMWriter [pure virtual]
~DOMWriter()xercesc::DOMWriter [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMWriter.html b/docs/dom3-api/classxercesc_1_1DOMWriter.html new file mode 100644 index 00000000..afe6f0a8 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMWriter.html @@ -0,0 +1,717 @@ + + +XQilla DOM Level 3 API: xercesc::DOMWriter Class Reference + + + + + + + +

xercesc::DOMWriter Class Reference

#include <DOMWriter.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMWriter ()
 Destructor.
Functions introduced in DOM Level 3
virtual bool canSetFeature (const XMLCh *const featName, bool state) const =0
 Query whether setting a feature to a specific value is supported.
virtual void setFeature (const XMLCh *const featName, bool state)=0
 Set the state of a feature.
virtual bool getFeature (const XMLCh *const featName) const =0
 Look up the value of a feature.
virtual void setEncoding (const XMLCh *const encoding)=0
 The character encoding in which the output will be written.
virtual void setNewLine (const XMLCh *const newLine)=0
 The end-of-line sequence of characters to be used in the XML being written out.
virtual void setErrorHandler (DOMErrorHandler *errorHandler)=0
 The error handler that will receive error notifications during serialization.
virtual void setFilter (DOMWriterFilter *filter)=0
 When the application provides a filter, the serializer will call out to the filter before serializing each Node.
virtual const XMLCh * getEncoding () const =0
 Return the character encoding in which the output will be written.
virtual const XMLCh * getNewLine () const =0
 Return the end-of-line sequence of characters to be used in the XML being written out.
virtual DOMErrorHandlergetErrorHandler () const =0
 Return the error handler that will receive error notifications during serialization.
virtual DOMWriterFiltergetFilter () const =0
 Return the WriterFilter used.
virtual bool writeNode (XMLFormatTarget *const destination, const DOMNode &nodeToWrite)=0
 Write out the specified node as described above in the description of DOMWriter.
virtual XMLCh * writeToString (const DOMNode &nodeToWrite)=0
 Serialize the specified node as described above in the description of DOMWriter.
Non-standard Extension
virtual void release ()=0
 Called to indicate that this Writer is no longer in use and that the implementation may relinquish any resources associated with it.

Protected Member Functions

Hidden constructors
 DOMWriter ()
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMWriter::DOMWriter  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMWriter::~DOMWriter  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool xercesc::DOMWriter::canSetFeature const XMLCh *const   featName,
bool  state
const [pure virtual]
+
+ + + + + +
+   + + +

+Query whether setting a feature to a specific value is supported. +

+
+The feature name has the same form as a DOM hasFeature string.

+"Experimental - subject to change"

+

Parameters:
+ + + +
featName The feature name, which is a DOM has-feature style string.
state The requested state of the feature (true or false).
+
+
Returns:
true if the feature could be successfully set to the specified value, or false if the feature is not recognized or the requested value is not supported. The value of the feature itself is not changed.
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMWriter::getEncoding  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Return the character encoding in which the output will be written. +

+"Experimental - subject to change"

+

Returns:
The character encoding used.
+
See also:
setEncoding
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual DOMErrorHandler* xercesc::DOMWriter::getErrorHandler  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Return the error handler that will receive error notifications during serialization. +

+"Experimental - subject to change"

+

Returns:
The error handler to be used.
+
See also:
setErrorHandler
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual bool xercesc::DOMWriter::getFeature const XMLCh *const   featName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Look up the value of a feature. +

+
+The feature name has the same form as a DOM hasFeature string

Parameters:
+ + +
featName The feature name, which is a string with DOM has-feature syntax.
+
+
Returns:
The current state of the feature (true or false).
+
Exceptions:
+ + +
DOMException Raise a NOT_FOUND_ERR When the DOMWriter does not recognize the feature name.
+
+

+"Experimental - subject to change"

+

See also:
setFeature
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual DOMWriterFilter* xercesc::DOMWriter::getFilter  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Return the WriterFilter used. +

+"Experimental - subject to change"

+

Returns:
The writer filter used.
+
See also:
setFilter
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMWriter::getNewLine  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Return the end-of-line sequence of characters to be used in the XML being written out. +

+"Experimental - subject to change"

+

Returns:
The end-of-line sequence of characters to be used.
+
See also:
setNewLine
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual void xercesc::DOMWriter::release  )  [pure virtual]
+
+ + + + + +
+   + + +

+Called to indicate that this Writer is no longer in use and that the implementation may relinquish any resources associated with it. +

+Access to a released object will lead to unexpected result.

+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMWriter::setEncoding const XMLCh *const   encoding  )  [pure virtual]
+
+ + + + + +
+   + + +

+The character encoding in which the output will be written. +

+
+ The encoding to use when writing is determined as follows: If the encoding attribute has been set, that value will be used.If the encoding attribute is null or empty, but the item to be written includes an encoding declaration, that value will be used.If neither of the above provides an encoding name, a default encoding of "UTF-8" will be used.
+The default value is null.

+"Experimental - subject to change"

+

Parameters:
+ + +
encoding The character encoding in which the output will be written.
+
+
See also:
getEncoding
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMWriter::setErrorHandler DOMErrorHandler errorHandler  )  [pure virtual]
+
+ + + + + +
+   + + +

+The error handler that will receive error notifications during serialization. +

+The node where the error occured is passed to this error handler, any modification to nodes from within an error callback should be avoided since this will result in undefined, implementation dependent behavior.

+"Experimental - subject to change"

+

Parameters:
+ + +
errorHandler The error handler to be used.
+
+
See also:
getErrorHandler
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void xercesc::DOMWriter::setFeature const XMLCh *const   featName,
bool  state
[pure virtual]
+
+ + + + + +
+   + + +

+Set the state of a feature. +

+
+The feature name has the same form as a DOM hasFeature string.
+It is possible for a DOMWriter to recognize a feature name but to be unable to set its value.

+"Experimental - subject to change"

+

Parameters:
+ + + +
featName The feature name.
state The requested state of the feature (true or false).
+
+
Exceptions:
+ + +
DOMException Raise a NOT_SUPPORTED_ERR exception when the DOMWriter recognizes the feature name but cannot set the requested value.
+Raise a NOT_FOUND_ERR When the DOMWriter does not recognize the feature name.
+
+
See also:
getFeature
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMWriter::setFilter DOMWriterFilter filter  )  [pure virtual]
+
+ + + + + +
+   + + +

+When the application provides a filter, the serializer will call out to the filter before serializing each Node. +

+Attribute nodes are never passed to the filter. The filter implementation can choose to remove the node from the stream or to terminate the serialization early.

+"Experimental - subject to change"

+

Parameters:
+ + +
filter The writer filter to be used.
+
+
See also:
getFilter
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMWriter::setNewLine const XMLCh *const   newLine  )  [pure virtual]
+
+ + + + + +
+   + + +

+The end-of-line sequence of characters to be used in the XML being written out. +

+The only permitted values are these:

+
null
+
Use a default end-of-line sequence. DOM implementations should choose the default to match the usual convention for text files in the environment being used. Implementations must choose a default sequence that matches one of those allowed by 2.11 "End-of-Line Handling".
+
CR
+
The carriage-return character (xD).
+
CR-LF
+
The carriage-return and line-feed characters (xD xA).
+
LF
+
The line-feed character (xA).
+
+
+The default value for this attribute is null.

+"Experimental - subject to change"

+

Parameters:
+ + +
newLine The end-of-line sequence of characters to be used.
+
+
See also:
getNewLine
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool xercesc::DOMWriter::writeNode XMLFormatTarget *const   destination,
const DOMNode nodeToWrite
[pure virtual]
+
+ + + + + +
+   + + +

+Write out the specified node as described above in the description of DOMWriter. +

+Writing a Document or Entity node produces a serialized form that is well formed XML. Writing other node types produces a fragment of text in a form that is not fully defined by this document, but that should be useful to a human for debugging or diagnostic purposes.

+"Experimental - subject to change"

+

Parameters:
+ + + +
destination The destination for the data to be written.
nodeToWrite The Document or Entity node to be written. For other node types, something sensible should be written, but the exact serialized form is not specified.
+
+
Returns:
Returns true if node was successfully serialized and false in case a failure occured and the failure wasn't canceled by the error handler.
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual XMLCh* xercesc::DOMWriter::writeToString const DOMNode nodeToWrite  )  [pure virtual]
+
+ + + + + +
+   + + +

+Serialize the specified node as described above in the description of DOMWriter. +

+The result of serializing the node is returned as a string. Writing a Document or Entity node produces a serialized form that is well formed XML. Writing other node types produces a fragment of text in a form that is not fully defined by this document, but that should be useful to a human for debugging or diagnostic purposes.

+"Experimental - subject to change"

+

Parameters:
+ + +
nodeToWrite The node to be written.
+
+
Returns:
Returns the serialized data, or null in case a failure occured and the failure wasn't canceled by the error handler. The returned string is always in UTF-16. The encoding information available in DOMWriter is ignored in writeToString().
+
Since:
DOM Level 3
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMWriterFilter-members.html b/docs/dom3-api/classxercesc_1_1DOMWriterFilter-members.html new file mode 100644 index 00000000..9bbfe748 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMWriterFilter-members.html @@ -0,0 +1,52 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMWriterFilter Member List

This is the complete list of members for xercesc::DOMWriterFilter, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
acceptNode(const DOMNode *node) const =0xercesc::DOMWriterFilter [pure virtual]
DOMNodeFilter()xercesc::DOMNodeFilter [inline, protected]
DOMWriterFilter()xercesc::DOMWriterFilter [inline, protected]
FILTER_ACCEPT enum valuexercesc::DOMNodeFilter
FILTER_REJECT enum valuexercesc::DOMNodeFilter
FILTER_SKIP enum valuexercesc::DOMNodeFilter
FilterAction enum namexercesc::DOMNodeFilter
getWhatToShow() const =0xercesc::DOMWriterFilter [pure virtual]
setWhatToShow(unsigned long toShow)=0xercesc::DOMWriterFilter [pure virtual]
SHOW_ALL enum valuexercesc::DOMNodeFilter
SHOW_ATTRIBUTE enum valuexercesc::DOMNodeFilter
SHOW_CDATA_SECTION enum valuexercesc::DOMNodeFilter
SHOW_COMMENT enum valuexercesc::DOMNodeFilter
SHOW_DOCUMENT enum valuexercesc::DOMNodeFilter
SHOW_DOCUMENT_FRAGMENT enum valuexercesc::DOMNodeFilter
SHOW_DOCUMENT_TYPE enum valuexercesc::DOMNodeFilter
SHOW_ELEMENT enum valuexercesc::DOMNodeFilter
SHOW_ENTITY enum valuexercesc::DOMNodeFilter
SHOW_ENTITY_REFERENCE enum valuexercesc::DOMNodeFilter
SHOW_NOTATION enum valuexercesc::DOMNodeFilter
SHOW_PROCESSING_INSTRUCTION enum valuexercesc::DOMNodeFilter
SHOW_TEXT enum valuexercesc::DOMNodeFilter
ShowType enum namexercesc::DOMNodeFilter
~DOMNodeFilter()xercesc::DOMNodeFilter [inline, virtual]
~DOMWriterFilter()xercesc::DOMWriterFilter [inline, virtual]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMWriterFilter.html b/docs/dom3-api/classxercesc_1_1DOMWriterFilter.html new file mode 100644 index 00000000..534e2cd1 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMWriterFilter.html @@ -0,0 +1,221 @@ + + +XQilla DOM Level 3 API: xercesc::DOMWriterFilter Class Reference + + + + + + + +

xercesc::DOMWriterFilter Class Reference

#include <DOMWriterFilter.hpp> +

+Inheritance diagram for xercesc::DOMWriterFilter:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMWriterFilter ()
 Destructor.
Functions introduced in DOM Level 3
virtual short acceptNode (const DOMNode *node) const =0
 Interface from DOMNodeFilter, to be implemented by implementation (derived class).
virtual unsigned long getWhatToShow () const =0
 Tells the DOMWriter what types of nodes to show to the filter.
virtual void setWhatToShow (unsigned long toShow)=0
 Set what types of nodes are to be presented.

Protected Member Functions

Hidden constructors
 DOMWriterFilter ()
+

Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMWriterFilter::DOMWriterFilter  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMWriterFilter::~DOMWriterFilter  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual short xercesc::DOMWriterFilter::acceptNode const DOMNode node  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Interface from DOMNodeFilter, to be implemented by implementation (derived class). +

+ +

+Implements xercesc::DOMNodeFilter.

+

+ + + + +
+ + + + + + + + +
virtual unsigned long xercesc::DOMWriterFilter::getWhatToShow  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Tells the DOMWriter what types of nodes to show to the filter. +

+See DOMNodeFilter for definition of the constants. The constant SHOW_ATTRIBUTE is meaningless here, attribute nodes will never be passed to a DOMWriterFilter.

+"Experimental - subject to change"

+

Returns:
The constants of what types of nodes to show.
+
See also:
setWhatToShow
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMWriterFilter::setWhatToShow unsigned long  toShow  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set what types of nodes are to be presented. +

+See DOMNodeFilter for definition of the constants.

+"Experimental - subject to change"

+

Parameters:
+ + +
toShow The constants of what types of nodes to show.
+
+
See also:
getWhatToShow
+
Since:
DOM Level 3
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMWriterFilter__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMWriterFilter__inherit__graph.map new file mode 100644 index 00000000..47335dc7 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMWriterFilter__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMNodeFilter.html 9,9 177,33 diff --git a/docs/dom3-api/classxercesc_1_1DOMWriterFilter__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMWriterFilter__inherit__graph.md5 new file mode 100644 index 00000000..0acaa927 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMWriterFilter__inherit__graph.md5 @@ -0,0 +1 @@ +99c3942bb6df71f0f09e10be32378814 \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMWriterFilter__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMWriterFilter__inherit__graph.png new file mode 100644 index 00000000..10890909 Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMWriterFilter__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathEvaluator-members.html b/docs/dom3-api/classxercesc_1_1DOMXPathEvaluator-members.html new file mode 100644 index 00000000..608975c0 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMXPathEvaluator-members.html @@ -0,0 +1,32 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMXPathEvaluator Member List

This is the complete list of members for xercesc::DOMXPathEvaluator, including all inherited members.

+ + + + + +
createExpression(const XMLCh *expression, const DOMXPathNSResolver *resolver)=0xercesc::DOMXPathEvaluator [pure virtual]
createNSResolver(DOMNode *nodeResolver)=0xercesc::DOMXPathEvaluator [pure virtual]
DOMXPathEvaluator()xercesc::DOMXPathEvaluator [inline, protected]
evaluate(const XMLCh *expression, DOMNode *contextNode, const DOMXPathNSResolver *resolver, unsigned short type, void *result)=0xercesc::DOMXPathEvaluator [pure virtual]
~DOMXPathEvaluator()xercesc::DOMXPathEvaluator [inline, virtual]


Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathEvaluator.html b/docs/dom3-api/classxercesc_1_1DOMXPathEvaluator.html new file mode 100644 index 00000000..69e481b3 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMXPathEvaluator.html @@ -0,0 +1,287 @@ + + +XQilla DOM Level 3 API: xercesc::DOMXPathEvaluator Class Reference + + + + + + + +

xercesc::DOMXPathEvaluator Class Reference

The evaluation of XPath expressions is provided by DOMXPathEvaluator. +More... +

+#include <DOMXPathEvaluator.hpp> +

+Inheritance diagram for xercesc::DOMXPathEvaluator:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMXPathEvaluator ()
 Destructor.
Functions introduced in DOM Level 3
virtual const DOMXPathExpressioncreateExpression (const XMLCh *expression, const DOMXPathNSResolver *resolver)=0
 Creates a parsed XPath expression with resolved namespaces.
virtual const DOMXPathNSResolvercreateNSResolver (DOMNode *nodeResolver)=0
 Adapts any DOM node to resolve namespaces so that an XPath expression can be easily evaluated relative to the context of the node where it appeared within the document.
virtual void * evaluate (const XMLCh *expression, DOMNode *contextNode, const DOMXPathNSResolver *resolver, unsigned short type, void *result)=0
 Evaluates an XPath expression string and returns a result of the specified type if possible.

Protected Member Functions

Hidden constructors
 DOMXPathEvaluator ()
+

Detailed Description

+The evaluation of XPath expressions is provided by DOMXPathEvaluator. +

+In a DOM implementation which supports the XPath 3.0 feature, the DOMXPathEvaluator interface will be implemented on the same object which implements the Document interface permitting it to be obtained by casting or by using the DOM Level 3 getInterface method. In this case the implementation obtained from the Document supports the XPath DOM module and is compatible with the XPath 1.0 specification. Evaluation of expressions with specialized extension functions or variables may not work in all implementations and is, therefore, not portable. XPathEvaluator implementations may be available from other sources that could provide specific support for specialized extension functions or variables as would be defined by other specifications.

Since:
DOM Level 3
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMXPathEvaluator::DOMXPathEvaluator  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMXPathEvaluator::~DOMXPathEvaluator  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual const DOMXPathExpression* xercesc::DOMXPathEvaluator::createExpression const XMLCh *  expression,
const DOMXPathNSResolver resolver
[pure virtual]
+
+ + + + + +
+   + + +

+Creates a parsed XPath expression with resolved namespaces. +

+This is useful when an expression will be reused in an application since it makes it possible to compile the expression string into a more efficient internal form and preresolve all namespace prefixes which occur within the expression.

Parameters:
+ + + +
expression of type XMLCh - The XPath expression string to be parsed.
resolver of type XPathNSResolver - The resolver permits translation of all prefixes, including the xml namespace prefix, within the XPath expression into appropriate namespace URIs. If this is specified as null, any namespace prefix within the expression will result in DOMException being thrown with the code NAMESPACE_ERR.
+
+
Returns:
XPathExpression The compiled form of the XPath expression.
+
Exceptions:
+ + + +
<code>XPathException</code> INVALID_EXPRESSION_ERR: Raised if the expression is not legal according to the rules of the DOMXPathEvaluator.
DOMException NAMESPACE_ERR: Raised if the expression contains namespace prefixes which cannot be resolved by the specified XPathNSResolver.
+
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual const DOMXPathNSResolver* xercesc::DOMXPathEvaluator::createNSResolver DOMNode nodeResolver  )  [pure virtual]
+
+ + + + + +
+   + + +

+Adapts any DOM node to resolve namespaces so that an XPath expression can be easily evaluated relative to the context of the node where it appeared within the document. +

+This adapter works like the DOM Level 3 method lookupNamespaceURI on nodes in resolving the namespaceURI from a given prefix using the current information available in the node's hierarchy at the time lookupNamespaceURI is called. also correctly resolving the implicit xml prefix.

Parameters:
+ + +
nodeResolver of type DOMNode The node to be used as a context for namespace resolution.
+
+
Returns:
XPathNSResolver XPathNSResolver which resolves namespaces with respect to the definitions in scope for a specified node.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void* xercesc::DOMXPathEvaluator::evaluate const XMLCh *  expression,
DOMNode contextNode,
const DOMXPathNSResolver resolver,
unsigned short  type,
void *  result
[pure virtual]
+
+ + + + + +
+   + + +

+Evaluates an XPath expression string and returns a result of the specified type if possible. +

+

Parameters:
+ + + + + + +
expression of type XMLCh The XPath expression string to be parsed and evaluated.
contextNode of type DOMNode The context is context node for the evaluation of this XPath expression. If the DOMXPathEvaluator was obtained by casting the DOMDocument then this must be owned by the same document and must be a DOMDocument, DOMElement, DOMAttribute, DOMText, DOMCDATASection, DOMComment, DOMProcessingInstruction, or XPathNamespace node. If the context node is a DOMText or a DOMCDATASection, then the context is interpreted as the whole logical text node as seen by XPath, unless the node is empty in which case it may not serve as the XPath context.
resolver of type XPathNSResolver The resolver permits translation of all prefixes, including the xml namespace prefix, within the XPath expression into appropriate namespace URIs. If this is specified as null, any namespace prefix within the expression will result in DOMException being thrown with the code NAMESPACE_ERR.
type of type unsigned short - If a specific type is specified, then the result will be returned as the corresponding type. For XPath 1.0 results, this must be one of the codes of the XPathResult interface.
result of type void* - The result specifies a specific result object which may be reused and returned by this method. If this is specified as null or the implementation does not reuse the specified result, a new result object will be constructed and returned. For XPath 1.0 results, this object will be of type XPathResult.
+
+
Returns:
void* The result of the evaluation of the XPath expression. For XPath 1.0 results, this object will be of type XPathResult.
+
Exceptions:
+ + + +
<code>XPathException</code> INVALID_EXPRESSION_ERR: Raised if the expression is not legal according to the rules of the DOMXPathEvaluator TYPE_ERR: Raised if the result cannot be converted to return the specified type.
DOMException NAMESPACE_ERR: Raised if the expression contains namespace prefixes which cannot be resolved by the specified XPathNSResolver. WRONG_DOCUMENT_ERR: The Node is from a document that is not supported by this DOMXPathEvaluator. NOT_SUPPORTED_ERR: The Node is not a type permitted as an XPath context node or the request type is not permitted by this DOMXPathEvaluator.
+
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathEvaluator__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMXPathEvaluator__inherit__graph.map new file mode 100644 index 00000000..58f78ef3 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMXPathEvaluator__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMDocument.html 24,83 192,107 diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathEvaluator__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMXPathEvaluator__inherit__graph.md5 new file mode 100644 index 00000000..fe4df323 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMXPathEvaluator__inherit__graph.md5 @@ -0,0 +1 @@ +03cb961b030a9dabb78405f12854c69d \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathEvaluator__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMXPathEvaluator__inherit__graph.png new file mode 100644 index 00000000..30ab8c3f Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMXPathEvaluator__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathException-members.html b/docs/dom3-api/classxercesc_1_1DOMXPathException-members.html new file mode 100644 index 00000000..d131b309 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMXPathException-members.html @@ -0,0 +1,36 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMXPathException Member List

This is the complete list of members for xercesc::DOMXPathException, including all inherited members.

+ + + + + + + + + +
codexercesc::DOMXPathException
DOMXPathException()xercesc::DOMXPathException
DOMXPathException(short code, const XMLCh *message)xercesc::DOMXPathException
DOMXPathException(const DOMXPathException &other)xercesc::DOMXPathException
ExceptionCode enum namexercesc::DOMXPathException
INVALID_EXPRESSION_ERR enum valuexercesc::DOMXPathException
msgxercesc::DOMXPathException
TYPE_ERR enum valuexercesc::DOMXPathException
~DOMXPathException()xercesc::DOMXPathException [virtual]


Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathException.html b/docs/dom3-api/classxercesc_1_1DOMXPathException.html new file mode 100644 index 00000000..b39feca4 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMXPathException.html @@ -0,0 +1,293 @@ + + +XQilla DOM Level 3 API: xercesc::DOMXPathException Class Reference + + + + + + + +

xercesc::DOMXPathException Class Reference

#include <DOMXPathException.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

enum  ExceptionCode { INVALID_EXPRESSION_ERR = 51, +TYPE_ERR = 52 + }
 ExceptionCode INVALID_EXPRESSION_ERR If the expression has a syntax error or otherwise is not a legal expression according to the rules of the specific XPathEvaluator or contains specialized extension functions or variables not supported by this implementation. More...

Public Member Functions

Constructors
 DOMXPathException ()
 Default constructor for DOMXPathException.
 DOMXPathException (short code, const XMLCh *message)
 Constructor which takes an error code and a message.
 DOMXPathException (const DOMXPathException &other)
 Copy constructor.
Destructor.
virtual ~DOMXPathException ()
 Destructor for DOMXPathException.

Public Attributes

Public variables
ExceptionCode code
 A code value, from the set defined by the ExceptionCode enum, indicating the type of error that occured.
const XMLCh * msg
 A string value.
+


Detailed Description

+
Since:
DOM Level 3
+ +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
enum xercesc::DOMXPathException::ExceptionCode
+
+ + + + + +
+   + + +

+ExceptionCode INVALID_EXPRESSION_ERR If the expression has a syntax error or otherwise is not a legal expression according to the rules of the specific XPathEvaluator or contains specialized extension functions or variables not supported by this implementation. +

+TYPE_ERR If the expression cannot be converted to return the specified type.

Enumerator:
+ + + +
INVALID_EXPRESSION_ERR  +
TYPE_ERR  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMXPathException::DOMXPathException  ) 
+
+ + + + + +
+   + + +

+Default constructor for DOMXPathException. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
xercesc::DOMXPathException::DOMXPathException short  code,
const XMLCh *  message
+
+ + + + + +
+   + + +

+Constructor which takes an error code and a message. +

+

Parameters:
+ + + +
code The error code which indicates the exception
message The string containing the error message
+
+
+

+ + + + +
+ + + + + + + + + +
xercesc::DOMXPathException::DOMXPathException const DOMXPathException other  ) 
+
+ + + + + +
+   + + +

+Copy constructor. +

+

Parameters:
+ + +
other The object to be copied.
+
+
+

+ + + + +
+ + + + + + + + +
xercesc::DOMXPathException::~DOMXPathException  )  [virtual]
+
+ + + + + +
+   + + +

+Destructor for DOMXPathException. +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
ExceptionCode xercesc::DOMXPathException::code
+
+ + + + + +
+   + + +

+A code value, from the set defined by the ExceptionCode enum, indicating the type of error that occured. +

+

+

+ + + + +
+ + + + +
const XMLCh* xercesc::DOMXPathException::msg
+
+ + + + + +
+   + + +

+A string value. +

+Applications may use this field to hold an error message. The field value is not set by the DOM implementation, meaning that the string will be empty when an exception is first thrown.

+


The documentation for this class was generated from the following files: +
Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathExpression-members.html b/docs/dom3-api/classxercesc_1_1DOMXPathExpression-members.html new file mode 100644 index 00000000..19925047 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMXPathExpression-members.html @@ -0,0 +1,30 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMXPathExpression Member List

This is the complete list of members for xercesc::DOMXPathExpression, including all inherited members.

+ + + +
DOMXPathExpression()xercesc::DOMXPathExpression [inline, protected]
evaluate(DOMNode *contextNode, unsigned short type, void *result) const =0xercesc::DOMXPathExpression [pure virtual]
~DOMXPathExpression()xercesc::DOMXPathExpression [inline, virtual]


Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathExpression.html b/docs/dom3-api/classxercesc_1_1DOMXPathExpression.html new file mode 100644 index 00000000..4b7d3676 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMXPathExpression.html @@ -0,0 +1,180 @@ + + +XQilla DOM Level 3 API: xercesc::DOMXPathExpression Class Reference + + + + + + + +

xercesc::DOMXPathExpression Class Reference

The DOMXPathExpression interface represents a parsed and resolved XPath expression. +More... +

+#include <DOMXPathExpression.hpp> +

+Inheritance diagram for xercesc::DOMXPathExpression:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMXPathExpression ()
 Destructor.
Functions introduced in DOM Level 3
virtual void * evaluate (DOMNode *contextNode, unsigned short type, void *result) const =0
 Evaluates this XPath expression and returns a result.

Protected Member Functions

Hidden constructors
 DOMXPathExpression ()
+

Detailed Description

+The DOMXPathExpression interface represents a parsed and resolved XPath expression. +

+

Since:
DOM Level 3
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMXPathExpression::DOMXPathExpression  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMXPathExpression::~DOMXPathExpression  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void* xercesc::DOMXPathExpression::evaluate DOMNode contextNode,
unsigned short  type,
void *  result
const [pure virtual]
+
+ + + + + +
+   + + +

+Evaluates this XPath expression and returns a result. +

+

Parameters:
+ + + + +
contextNode of type DOMNode The context is context node for the evaluation of this XPath expression. If the XPathEvaluator was obtained by casting the Document then this must be owned by the same document and must be a DOMDocument, DOMElement, DOMAttribute, DOMText, DOMCDATASection, DOMComment, DOMProcessingInstruction, or XPathNamespace. If the context node is a DOMText or a DOMCDATASection, then the context is interpreted as the whole logical text node as seen by XPath, unless the node is empty in which case it may not serve as the XPath context.
type of type unsigned short If a specific type is specified, then the result will be coerced to return the specified type relying on XPath conversions and fail if the desired coercion is not possible. This must be one of the type codes of XPathResult.
result of type void* The result specifies a specific result object which may be reused and returned by this method. If this is specified as nullor the implementation does not reuse the specified result, a new result object will be constructed and returned. For XPath 1.0 results, this object will be of type XPathResult.
+
+
Returns:
void* The result of the evaluation of the XPath expression. For XPath 1.0 results, this object will be of type XPathResult.
+
Exceptions:
+ + + +
<code>XPathException</code> TYPE_ERR: Raised if the result cannot be converted to return the specified type.
<code>DOMException</code> WRONG_DOCUMENT_ERR: The DOMNode is from a document that is not supported by the XPathEvaluator that created this DOMXPathExpression. NOT_SUPPORTED_ERR: The Node is not a type permitted as an XPath context node or the request type is not permitted by this DOMXPathExpression.
+
+ +

+Implemented in XQillaExpression.

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathExpression__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMXPathExpression__inherit__graph.map new file mode 100644 index 00000000..4137bd37 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMXPathExpression__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classXQillaExpression.html 52,83 174,107 diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathExpression__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMXPathExpression__inherit__graph.md5 new file mode 100644 index 00000000..ad9a63eb --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMXPathExpression__inherit__graph.md5 @@ -0,0 +1 @@ +84258a0bd8c4cea257db065c65040b11 \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathExpression__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMXPathExpression__inherit__graph.png new file mode 100644 index 00000000..1117fe42 Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMXPathExpression__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathNSResolver-members.html b/docs/dom3-api/classxercesc_1_1DOMXPathNSResolver-members.html new file mode 100644 index 00000000..d29242bf --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMXPathNSResolver-members.html @@ -0,0 +1,31 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMXPathNSResolver Member List

This is the complete list of members for xercesc::DOMXPathNSResolver, including all inherited members.

+ + + + +
DOMXPathNSResolver()xercesc::DOMXPathNSResolver [inline, protected]
lookupNamespaceURI(const XMLCh *prefix) const =0xercesc::DOMXPathNSResolver [pure virtual]
lookupPrefix(const XMLCh *URI) const =0xercesc::DOMXPathNSResolver [pure virtual]
~DOMXPathNSResolver()xercesc::DOMXPathNSResolver [inline, virtual]


Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathNSResolver.html b/docs/dom3-api/classxercesc_1_1DOMXPathNSResolver.html new file mode 100644 index 00000000..d056ef8a --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMXPathNSResolver.html @@ -0,0 +1,199 @@ + + +XQilla DOM Level 3 API: xercesc::DOMXPathNSResolver Class Reference + + + + + + + +

xercesc::DOMXPathNSResolver Class Reference

The DOMXPathNSResolver interface permit prefix strings in the expression to be properly bound to namespaceURI strings. +More... +

+#include <DOMXPathNSResolver.hpp> +

+Inheritance diagram for xercesc::DOMXPathNSResolver:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMXPathNSResolver ()
 Destructor.
Functions introduced in DOM Level 3
virtual const XMLCh * lookupNamespaceURI (const XMLCh *prefix) const =0
 Look up the namespace URI associated to the given namespace prefix.
Non-standard extension
virtual const XMLCh * lookupPrefix (const XMLCh *URI) const =0
 Non-standard extension.

Protected Member Functions

Hidden constructors
 DOMXPathNSResolver ()
+

Detailed Description

+The DOMXPathNSResolver interface permit prefix strings in the expression to be properly bound to namespaceURI strings. +

+DOMXPathEvaluator can construct an implementation of DOMXPathNSResolver from a node, or the interface may be implemented by any application.

Since:
DOM Level 3
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMXPathNSResolver::DOMXPathNSResolver  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMXPathNSResolver::~DOMXPathNSResolver  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* xercesc::DOMXPathNSResolver::lookupNamespaceURI const XMLCh *  prefix  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Look up the namespace URI associated to the given namespace prefix. +

+The XPath evaluator must never call this with a null or empty argument, because the result of doing this is undefined.

Parameters:
+ + +
prefix of type XMLCh - The prefix to look for.
+
+
Returns:
the associated namespace URI or null if none is found.
+ +

+Implemented in XQillaNSResolver.

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* xercesc::DOMXPathNSResolver::lookupPrefix const XMLCh *  URI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Non-standard extension. +

+XPath2 implementations require a reverse lookup in the static context. Look up the prefix associated with the namespace URI The XPath evaluator must never call this with a null or empty argument, because the result of doing this is undefined.

Parameters:
+ + +
URI of type XMLCh - The namespace to look for.
+
+
Returns:
the associated prefix or null if none is found.
+ +

+Implemented in XQillaNSResolver.

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathNSResolver__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMXPathNSResolver__inherit__graph.map new file mode 100644 index 00000000..d1264b8b --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMXPathNSResolver__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classXQillaNSResolver.html 50,83 178,107 diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathNSResolver__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMXPathNSResolver__inherit__graph.md5 new file mode 100644 index 00000000..ddda589b --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMXPathNSResolver__inherit__graph.md5 @@ -0,0 +1 @@ +c2c5d278096deef1a613d874806518e3 \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathNSResolver__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMXPathNSResolver__inherit__graph.png new file mode 100644 index 00000000..155c81ad Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMXPathNSResolver__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathNamespace-members.html b/docs/dom3-api/classxercesc_1_1DOMXPathNamespace-members.html new file mode 100644 index 00000000..eb473474 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMXPathNamespace-members.html @@ -0,0 +1,94 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMXPathNamespace Member List

This is the complete list of members for xercesc::DOMXPathNamespace, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
appendChild(DOMNode *newChild)=0xercesc::DOMNode [pure virtual]
ATTRIBUTE_NODE enum valuexercesc::DOMNode
CDATA_SECTION_NODE enum valuexercesc::DOMNode
cloneNode(bool deep) const =0xercesc::DOMNode [pure virtual]
COMMENT_NODE enum valuexercesc::DOMNode
compareTreePosition(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
DOCUMENT_FRAGMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_TYPE_NODE enum valuexercesc::DOMNode
DOMNode()xercesc::DOMNode [inline, protected]
DOMNode(const DOMNode &)xercesc::DOMNode [inline, protected]
DOMTreePosition enum namexercesc::DOMNode
DOMXPathNamespace()xercesc::DOMXPathNamespace [inline, protected]
ELEMENT_NODE enum valuexercesc::DOMNode
ENTITY_NODE enum valuexercesc::DOMNode
ENTITY_REFERENCE_NODE enum valuexercesc::DOMNode
getAttributes() const =0xercesc::DOMNode [pure virtual]
getBaseURI() const =0xercesc::DOMNode [pure virtual]
getChildNodes() const =0xercesc::DOMNode [pure virtual]
getFirstChild() const =0xercesc::DOMNode [pure virtual]
getInterface(const XMLCh *feature)=0xercesc::DOMNode [pure virtual]
getLastChild() const =0xercesc::DOMNode [pure virtual]
getLocalName() const =0xercesc::DOMNode [pure virtual]
getNamespaceURI() const =0xercesc::DOMNode [pure virtual]
getNextSibling() const =0xercesc::DOMNode [pure virtual]
getNodeName() const =0xercesc::DOMNode [pure virtual]
getNodeType() const =0xercesc::DOMNode [pure virtual]
getNodeValue() const =0xercesc::DOMNode [pure virtual]
getOwnerDocument() const =0xercesc::DOMNode [pure virtual]
getOwnerElement() const =0xercesc::DOMXPathNamespace [pure virtual]
getParentNode() const =0xercesc::DOMNode [pure virtual]
getPrefix() const =0xercesc::DOMNode [pure virtual]
getPreviousSibling() const =0xercesc::DOMNode [pure virtual]
getTextContent() const =0xercesc::DOMNode [pure virtual]
getUserData(const XMLCh *key) const =0xercesc::DOMNode [pure virtual]
hasAttributes() const =0xercesc::DOMNode [pure virtual]
hasChildNodes() const =0xercesc::DOMNode [pure virtual]
insertBefore(DOMNode *newChild, DOMNode *refChild)=0xercesc::DOMNode [pure virtual]
isDefaultNamespace(const XMLCh *namespaceURI) const =0xercesc::DOMNode [pure virtual]
isEqualNode(const DOMNode *arg) const =0xercesc::DOMNode [pure virtual]
isSameNode(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
isSupported(const XMLCh *feature, const XMLCh *version) const =0xercesc::DOMNode [pure virtual]
lookupNamespacePrefix(const XMLCh *namespaceURI, bool useDefault) const =0xercesc::DOMNode [pure virtual]
lookupNamespaceURI(const XMLCh *prefix) const =0xercesc::DOMNode [pure virtual]
NodeType enum namexercesc::DOMNode
normalize()=0xercesc::DOMNode [pure virtual]
NOTATION_NODE enum valuexercesc::DOMNode
PROCESSING_INSTRUCTION_NODE enum valuexercesc::DOMNode
release()=0xercesc::DOMNode [pure virtual]
removeChild(DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
replaceChild(DOMNode *newChild, DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
setNodeValue(const XMLCh *nodeValue)=0xercesc::DOMNode [pure virtual]
setPrefix(const XMLCh *prefix)=0xercesc::DOMNode [pure virtual]
setTextContent(const XMLCh *textContent)=0xercesc::DOMNode [pure virtual]
setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0xercesc::DOMNode [pure virtual]
TEXT_NODE enum valuexercesc::DOMNode
TREE_POSITION_ANCESTOR enum valuexercesc::DOMNode
TREE_POSITION_DESCENDANT enum valuexercesc::DOMNode
TREE_POSITION_DISCONNECTED enum valuexercesc::DOMNode
TREE_POSITION_EQUIVALENT enum valuexercesc::DOMNode
TREE_POSITION_FOLLOWING enum valuexercesc::DOMNode
TREE_POSITION_PRECEDING enum valuexercesc::DOMNode
TREE_POSITION_SAME_NODE enum valuexercesc::DOMNode
XPATH_NAMESPACE_NODE enum valuexercesc::DOMXPathNamespace
XPathNodeType enum namexercesc::DOMXPathNamespace
~DOMNode()xercesc::DOMNode [inline, virtual]
~DOMXPathNamespace()xercesc::DOMXPathNamespace [inline, virtual]


Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathNamespace.html b/docs/dom3-api/classxercesc_1_1DOMXPathNamespace.html new file mode 100644 index 00000000..57110223 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMXPathNamespace.html @@ -0,0 +1,183 @@ + + +XQilla DOM Level 3 API: xercesc::DOMXPathNamespace Class Reference + + + + + + + +

xercesc::DOMXPathNamespace Class Reference

The DOMXPathNamespace interface is returned by DOMXPathResult interfaces to represent the XPath namespace node type that DOM lacks. +More... +

+#include <DOMXPathNamespace.hpp> +

+Inheritance diagram for xercesc::DOMXPathNamespace:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + +

Public Types

enum  XPathNodeType { XPATH_NAMESPACE_NODE = 13 + }

Public Member Functions

Destructor
virtual ~DOMXPathNamespace ()
 Destructor.
Functions introduced in DOM Level 3
virtual DOMElementgetOwnerElement () const =0
 The DOMElement on which the namespace was in scope when it was requested.

Protected Member Functions

Hidden constructors
 DOMXPathNamespace ()
+

Detailed Description

+The DOMXPathNamespace interface is returned by DOMXPathResult interfaces to represent the XPath namespace node type that DOM lacks. +

+There is no public constructor for this node type. Attempts to place it into a hierarchy or a NamedNodeMap result in a DOMException with the code HIERARCHY_REQUEST_ERR. This node is read only, so methods or setting of attributes that would mutate the node result in a DOMException with the code NO_MODIFICATION_ALLOWED_ERR. The core specification describes attributes of the DOMNode interface that are different for different node types but does not describe XPATH_NAMESPACE_NODE, so here is a description of those attributes for this node type. All attributes of DOMNode not described in this section have a null or false value. ownerDocument matches the ownerDocument of the ownerElement even if the element is later adopted. nodeName is always the string "#namespace". prefix is the prefix of the namespace represented by the node. localName is the same as prefix. nodeType is equal to XPATH_NAMESPACE_NODE. namespaceURI is the namespace URI of the namespace represented by the node. nodeValue is the same as namespaceURI. adoptNode, cloneNode, and importNode fail on this node type by raising a DOMException with the code NOT_SUPPORTED_ERR. Note: In future versions of the XPath specification, the definition of a namespace node may be changed incomatibly, in which case incompatible changes to field values may be required to implement versions beyond XPath 1.0.

Since:
DOM Level 3
+ +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
enum xercesc::DOMXPathNamespace::XPathNodeType
+
+ + + + + +
+   + + +

+

Enumerator:
+ + +
XPATH_NAMESPACE_NODE  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMXPathNamespace::DOMXPathNamespace  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMXPathNamespace::~DOMXPathNamespace  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual DOMElement* xercesc::DOMXPathNamespace::getOwnerElement  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The DOMElement on which the namespace was in scope when it was requested. +

+This does not change on a returned namespace node even if the document changes such that the namespace goes out of scope on that element and this node is no longer found there by XPath.

Since:
DOM Level 3
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathNamespace__inherit__graph.map b/docs/dom3-api/classxercesc_1_1DOMXPathNamespace__inherit__graph.map new file mode 100644 index 00000000..f23b5755 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMXPathNamespace__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMNode.html 45,9 183,33 diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathNamespace__inherit__graph.md5 b/docs/dom3-api/classxercesc_1_1DOMXPathNamespace__inherit__graph.md5 new file mode 100644 index 00000000..5e649bdc --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMXPathNamespace__inherit__graph.md5 @@ -0,0 +1 @@ +4f02f82b69ebfc5891915ca0a37961dd \ No newline at end of file diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathNamespace__inherit__graph.png b/docs/dom3-api/classxercesc_1_1DOMXPathNamespace__inherit__graph.png new file mode 100644 index 00000000..3eaabe9e Binary files /dev/null and b/docs/dom3-api/classxercesc_1_1DOMXPathNamespace__inherit__graph.png differ diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathResult-members.html b/docs/dom3-api/classxercesc_1_1DOMXPathResult-members.html new file mode 100644 index 00000000..73958293 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMXPathResult-members.html @@ -0,0 +1,49 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::DOMXPathResult Member List

This is the complete list of members for xercesc::DOMXPathResult, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
ANY_TYPE enum valuexercesc::DOMXPathResult
ANY_UNORDERED_NODE_TYPE enum valuexercesc::DOMXPathResult
BOOLEAN_TYPE enum valuexercesc::DOMXPathResult
DOMXPathResult()xercesc::DOMXPathResult [inline, protected]
FIRST_ORDERED_NODE_TYPE enum valuexercesc::DOMXPathResult
getBooleanValue() const =0xercesc::DOMXPathResult [pure virtual]
getInvalidIteratorState() const =0xercesc::DOMXPathResult [pure virtual]
getNumberValue() const =0xercesc::DOMXPathResult [pure virtual]
getResultType() const =0xercesc::DOMXPathResult [pure virtual]
getSingleNodeValue() const =0xercesc::DOMXPathResult [pure virtual]
getSnapshotLength() const =0xercesc::DOMXPathResult [pure virtual]
getStringValue() const =0xercesc::DOMXPathResult [pure virtual]
iterateNext() const =0xercesc::DOMXPathResult [pure virtual]
NUMBER_TYPE enum valuexercesc::DOMXPathResult
ORDERED_NODE_ITERATOR_TYPE enum valuexercesc::DOMXPathResult
ORDERED_NODE_SNAPSHOT_TYPE enum valuexercesc::DOMXPathResult
resultType enum namexercesc::DOMXPathResult
snapshotItem(unsigned long index) const =0xercesc::DOMXPathResult [pure virtual]
STRING_TYPE enum valuexercesc::DOMXPathResult
UNORDERED_NODE_ITERATOR_TYPE enum valuexercesc::DOMXPathResult
UNORDERED_NODE_SNAPSHOT_TYPE enum valuexercesc::DOMXPathResult
~DOMXPathResult()xercesc::DOMXPathResult [inline, virtual]


Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1DOMXPathResult.html b/docs/dom3-api/classxercesc_1_1DOMXPathResult.html new file mode 100644 index 00000000..346b1551 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1DOMXPathResult.html @@ -0,0 +1,546 @@ + + +XQilla DOM Level 3 API: xercesc::DOMXPathResult Class Reference + + + + + + + +

xercesc::DOMXPathResult Class Reference

The DOMXPathResult interface represents the result of the evaluation of an XPath 1.0 expression within the context of a particular node. +More... +

+#include <DOMXPathResult.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

Public Contants
enum  resultType {
+  ANY_TYPE = 0, +NUMBER_TYPE = 1, +STRING_TYPE = 2, +BOOLEAN_TYPE = 3, +
+  UNORDERED_NODE_ITERATOR_TYPE = 4, +ORDERED_NODE_ITERATOR_TYPE = 5, +UNORDERED_NODE_SNAPSHOT_TYPE = 6, +ORDERED_NODE_SNAPSHOT_TYPE = 7, +
+  ANY_UNORDERED_NODE_TYPE = 8, +FIRST_ORDERED_NODE_TYPE = 9 +
+ }

Public Member Functions

Destructor
virtual ~DOMXPathResult ()
 Destructor.
Functions introduced in DOM Level 3
virtual bool getBooleanValue () const =0
 Returns the boolean value of this result.
virtual bool getInvalidIteratorState () const =0
 Returns the state of the iterator.
virtual double getNumberValue () const =0
 Returns the number value of this result.
virtual short getResultType () const =0
 Returns the result type of this result.
virtual DOMNodegetSingleNodeValue () const =0
 Returns the single node value of this result.
virtual unsigned long getSnapshotLength () const =0
 Returns the snapshot length.
virtual const XMLCh * getStringValue () const =0
 Returns the string value of this result.
virtual DOMNodeiterateNext () const =0
 Iterates and returns the next node from the node set or nullif there are no more nodes.
virtual DOMNodesnapshotItem (unsigned long index) const =0
 Returns the indexth item in the snapshot collection.

Protected Member Functions

Hidden constructors
 DOMXPathResult ()
+


Detailed Description

+The DOMXPathResult interface represents the result of the evaluation of an XPath 1.0 expression within the context of a particular node. +

+Since evaluation of an XPath expression can result in various result types, this object makes it possible to discover and manipulate the type and value of the result.

Since:
DOM Level 3
+ +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
enum xercesc::DOMXPathResult::resultType
+
+ + + + + +
+   + + +

+ANY_TYPE
+This code does not represent a specific type. An evaluation of an XPath expression will never produce this type. If this type is requested, then the evaluation returns whatever type naturally results from evaluation of the expression. If the natural result is a node set when ANY_TYPE was requested, then UNORDERED_NODE_ITERATOR_TYPE is always the resulting type. Any other representation of a node set must be explicitly requested.

+ANY_UNORDERED_NODE_TYPE
+The result is a node set as defined by [XPath 1.0] and will be accessed as a single node, which may be nullif the node set is empty. Document modification does not invalidate the node, but may mean that the result node no longer corresponds to the current document. This is a convenience that permits optimization since the implementation can stop once any node in the resulting set has been found. If there is more than one node in the actual result, the single node returned might not be the first in document order.

+BOOLEAN_TYPE
+The result is a boolean as defined by [XPath 1.0]. Document modification does not invalidate the boolean, but may mean that reevaluation would not yield the same boolean.

+FIRST_ORDERED_NODE_TYPE
+The result is a node set as defined by [XPath 1.0] and will be accessed as a single node, which may be null if the node set is empty. Document modification does not invalidate the node, but may mean that the result node no longer corresponds to the current document. This is a convenience that permits optimization since the implementation can stop once the first node in document order of the resulting set has been found. If there are more than one node in the actual result, the single node returned will be the first in document order.

+NUMBER_TYPE
+The result is a number as defined by [XPath 1.0]. Document modification does not invalidate the number, but may mean that reevaluation would not yield the same number.

+ORDERED_NODE_ITERATOR_TYPE
+The result is a node set as defined by [XPath 1.0] that will be accessed iteratively, which will produce document-ordered nodes. Document modification invalidates the iteration.

+ORDERED_NODE_SNAPSHOT_TYPE
+The result is a node set as defined by [XPath 1.0] that will be accessed as a snapshot list of nodes that will be in original document order. Document modification does not invalidate the snapshot but may mean that reevaluation would not yield the same snapshot and nodes in the snapshot may have been altered, moved, or removed from the document.

+STRING_TYPE
+The result is a string as defined by [XPath 1.0]. Document modification does not invalidate the string, but may mean that the string no longer corresponds to the current document.

+UNORDERED_NODE_ITERATOR_TYPE
+The result is a node set as defined by [XPath 1.0] that will be accessed iteratively, which may not produce nodes in a particular order. Document modification invalidates the iteration. This is the default type returned if the result is a node set and ANY_TYPE is requested.

+UNORDERED_NODE_SNAPSHOT_TYPE
+The result is a node set as defined by [XPath 1.0] that will be accessed as a snapshot list of nodes that may not be in a particular order. Document modification does not invalidate the snapshot but may mean that reevaluation would not yield the same snapshot and nodes in the snapshot may have been altered, moved, or removed from the document.

Enumerator:
+ + + + + + + + + + + +
ANY_TYPE  +
NUMBER_TYPE  +
STRING_TYPE  +
BOOLEAN_TYPE  +
UNORDERED_NODE_ITERATOR_TYPE  +
ORDERED_NODE_ITERATOR_TYPE  +
UNORDERED_NODE_SNAPSHOT_TYPE  +
ORDERED_NODE_SNAPSHOT_TYPE  +
ANY_UNORDERED_NODE_TYPE  +
FIRST_ORDERED_NODE_TYPE  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMXPathResult::DOMXPathResult  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMXPathResult::~DOMXPathResult  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual bool xercesc::DOMXPathResult::getBooleanValue  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the boolean value of this result. +

+

Returns:
booleanValue of type boolean, readonly The value of this boolean result.
+
Exceptions:
+ + +
XPathException TYPE_ERR: raised if resultType is not BOOLEAN_TYPE.
+
+
+

+ + + + +
+ + + + + + + + +
virtual bool xercesc::DOMXPathResult::getInvalidIteratorState  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the state of the iterator. +

+

Returns:
invalidIteratorState Signifies that the iterator has become invalid. True if resultType is UNORDERED_NODE_ITERATOR_TYPE or ORDERED_NODE_ITERATOR_TYPE and the document has been modified since this result was returned.
+
Exceptions:
+ + +
XPathException TYPE_ERR: raised if resultType is not NUMBER_TYPE.
+
+
+

+ + + + +
+ + + + + + + + +
virtual double xercesc::DOMXPathResult::getNumberValue  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the number value of this result. +

+

Returns:
numberValue The value of this number result. If the native double type of the DOM binding does not directly support the exact IEEE 754 result of the XPath expression, then it is up to the definition of the binding to specify how the XPath number is converted to the native binding number.
+
Exceptions:
+ + +
XPathException TYPE_ERR: raised if resultType is not NUMBER_TYPE.
+
+
+

+ + + + +
+ + + + + + + + +
virtual short xercesc::DOMXPathResult::getResultType  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the result type of this result. +

+

Returns:
resultType A code representing the type of this result, as defined by the type constants.
+
Exceptions:
+ + +
XPathException TYPE_ERR: raised if resultType is not ANY_UNORDERED_NODE_TYPE or FIRST_ORDERED_NODE_TYPE.
+
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMXPathResult::getSingleNodeValue  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the single node value of this result. +

+

Returns:
singleNodeValue The value of this single node result, which may be null.
+
Exceptions:
+ + +
XPathException TYPE_ERR: raised if resultType is not ANY_UNORDERED_NODE_TYPE or FIRST_ORDERED_NODE_TYPE.
+
+
+

+ + + + +
+ + + + + + + + +
virtual unsigned long xercesc::DOMXPathResult::getSnapshotLength  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the snapshot length. +

+

Returns:
snapshotLength The number of nodes in the result snapshot. Valid values for snapshotItem indices are 0 to snapshotLength-1 inclusive.
+
Exceptions:
+ + +
XPathException TYPE_ERR: raised if resultType is not UNORDERED_NODE_SNAPSHOT_TYPE or ORDERED_NODE_SNAPSHOT_TYPE.
+
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMXPathResult::getStringValue  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the string value of this result. +

+

Returns:
stringValue The value of this string result.
+
Exceptions:
+ + +
XPathException TYPE_ERR: raised if resultType is not STRING_TYPE.
+
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMXPathResult::iterateNext  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Iterates and returns the next node from the node set or nullif there are no more nodes. +

+

Returns:
the next node.
+
Exceptions:
+ + + +
XPathException TYPE_ERR: raised if resultType is not UNORDERED_NODE_ITERATOR_TYPE or ORDERED_NODE_ITERATOR_TYPE.
DOMException INVALID_STATE_ERR: The document has been mutated since the result was returned.
+
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMNode* xercesc::DOMXPathResult::snapshotItem unsigned long  index  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the indexth item in the snapshot collection. +

+If index is greater than or equal to the number of nodes in the list, this method returns null. Unlike the iterator result, the snapshot does not become invalid, but may not correspond to the current document if it is mutated.

Parameters:
+ + +
index of type unsigned long - Index into the snapshot collection.
+
+
Returns:
The node at the indexth position in the NodeList, or null if that is not a valid index.
+
Exceptions:
+ + +
XPathException TYPE_ERR: raised if resultType is not UNORDERED_NODE_SNAPSHOT_TYPE or ORDERED_NODE_SNAPSHOT_TYPE.
+
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1MemoryManager-members.html b/docs/dom3-api/classxercesc_1_1MemoryManager-members.html new file mode 100644 index 00000000..ef4919fb --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1MemoryManager-members.html @@ -0,0 +1,31 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::MemoryManager Member List

This is the complete list of members for xercesc::MemoryManager, including all inherited members.

+ + + + +
allocate(size_t size)=0xercesc::MemoryManager [pure virtual]
deallocate(void *p)=0xercesc::MemoryManager [pure virtual]
MemoryManager()xercesc::MemoryManager [inline, protected]
~MemoryManager()xercesc::MemoryManager [inline, virtual]


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1MemoryManager.html b/docs/dom3-api/classxercesc_1_1MemoryManager.html new file mode 100644 index 00000000..8d1ad4b8 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1MemoryManager.html @@ -0,0 +1,191 @@ + + +XQilla DOM Level 3 API: xercesc::MemoryManager Class Reference + + + + + + + +

xercesc::MemoryManager Class Reference

Configurable memory manager. +More... +

+#include <MemoryManager.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~MemoryManager ()
 Default destructor.
The pure virtual methods in this interface.
virtual void * allocate (size_t size)=0
 This method allocates requested memory.
virtual void deallocate (void *p)=0
 This method deallocates memory.

Protected Member Functions

Constructor
 MemoryManager ()
 Protected default constructor.
+


Detailed Description

+Configurable memory manager. +

+This interface allows outside applications to plug in their own memory manager to be used by Xerces for memory allocation/deallocation. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
virtual xercesc::MemoryManager::~MemoryManager  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Default destructor. +

+

+

+ + + + +
+ + + + + + + + +
xercesc::MemoryManager::MemoryManager  )  [inline, protected]
+
+ + + + + +
+   + + +

+Protected default constructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual void* xercesc::MemoryManager::allocate size_t  size  )  [pure virtual]
+
+ + + + + +
+   + + +

+This method allocates requested memory. +

+

Parameters:
+ + +
size The requested memory size
+
+
Returns:
A pointer to the allocated memory
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::MemoryManager::deallocate void *  p  )  [pure virtual]
+
+ + + + + +
+   + + +

+This method deallocates memory. +

+

Parameters:
+ + +
p The pointer to the allocated memory to be deleted
+
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1StDOMNode-members.html b/docs/dom3-api/classxercesc_1_1StDOMNode-members.html new file mode 100644 index 00000000..3acfe50b --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1StDOMNode-members.html @@ -0,0 +1,38 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::StDOMNode< T > Member List

This is the complete list of members for xercesc::StDOMNode< T >, including all inherited members.

+ + + + + + + + + + + +
ClearNode()xercesc::StDOMNode< T > [inline]
operator *()xercesc::StDOMNode< T > [inline]
operator *() const xercesc::StDOMNode< T > [inline]
operator T *() const xercesc::StDOMNode< T > [inline]
operator!=(T *node) const xercesc::StDOMNode< T > [inline]
operator->() const xercesc::StDOMNode< T > [inline]
operator=(T *node)xercesc::StDOMNode< T > [inline]
operator==(T *node) const xercesc::StDOMNode< T > [inline]
StDOMNode(T *node=(T *) 0)xercesc::StDOMNode< T > [inline]
StDOMNode(const StDOMNode &stNode)xercesc::StDOMNode< T > [inline]
~StDOMNode()xercesc::StDOMNode< T > [inline]


Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1StDOMNode.html b/docs/dom3-api/classxercesc_1_1StDOMNode.html new file mode 100644 index 00000000..e9ce4198 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1StDOMNode.html @@ -0,0 +1,409 @@ + + +XQilla DOM Level 3 API: xercesc::StDOMNode< T > Class Template Reference + + + + + + + +

xercesc::StDOMNode< T > Class Template Reference

#include <StDOMNode.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 StDOMNode (T *node=(T *) 0)
 StDOMNode (const StDOMNode &stNode)
 ~StDOMNode ()
T * operator= (T *node)
bool operator!= (T *node) const
bool operator== (T *node) const
T & operator * ()
const T & operator * () const
T * operator-> () const
 operator T * () const
void ClearNode ()
+

template<class T>
+ class xercesc::StDOMNode< T >

+ +

Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + +
+template<class T>
xercesc::StDOMNode< T >::StDOMNode T *  node = (T*)0  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + +
+template<class T>
xercesc::StDOMNode< T >::StDOMNode const StDOMNode< T > &  stNode  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class T>
xercesc::StDOMNode< T >::~StDOMNode  )  [inline]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + +
+template<class T>
void xercesc::StDOMNode< T >::ClearNode  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class T>
const T& xercesc::StDOMNode< T >::operator *  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class T>
T& xercesc::StDOMNode< T >::operator *  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class T>
xercesc::StDOMNode< T >::operator T *  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + +
+template<class T>
bool xercesc::StDOMNode< T >::operator!= T *  node  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class T>
T* xercesc::StDOMNode< T >::operator->  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + +
+template<class T>
T* xercesc::StDOMNode< T >::operator= T *  node  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + +
+template<class T>
bool xercesc::StDOMNode< T >::operator== T *  node  )  const [inline]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1XMLDeleter-members.html b/docs/dom3-api/classxercesc_1_1XMLDeleter-members.html new file mode 100644 index 00000000..e03993db --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1XMLDeleter-members.html @@ -0,0 +1,29 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::XMLDeleter Member List

This is the complete list of members for xercesc::XMLDeleter, including all inherited members.

+ + +
XMLDeleter()xercesc::XMLDeleter [inline, protected]
~XMLDeleter()xercesc::XMLDeleter [inline, virtual]


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1XMLDeleter.html b/docs/dom3-api/classxercesc_1_1XMLDeleter.html new file mode 100644 index 00000000..689b5cd5 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1XMLDeleter.html @@ -0,0 +1,96 @@ + + +XQilla DOM Level 3 API: xercesc::XMLDeleter Class Reference + + + + + + + +

xercesc::XMLDeleter Class Reference

#include <PlatformUtils.hpp> +

+List of all members. + + + + + + + +

Public Member Functions

virtual ~XMLDeleter ()

Protected Member Functions

 XMLDeleter ()
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::XMLDeleter::~XMLDeleter  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
xercesc::XMLDeleter::XMLDeleter  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1XMLPlatformUtils-members.html b/docs/dom3-api/classxercesc_1_1XMLPlatformUtils-members.html new file mode 100644 index 00000000..434e6184 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1XMLPlatformUtils-members.html @@ -0,0 +1,69 @@ + + +XQilla DOM Level 3 API: Member List + + + + + + +

xercesc::XMLPlatformUtils Member List

This is the complete list of members for xercesc::XMLPlatformUtils, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
alignPointerForNewBlockAllocation(size_t ptrSize)xercesc::XMLPlatformUtils [inline, static]
atomicDecrement(int &location)xercesc::XMLPlatformUtils [static]
atomicIncrement(int &location)xercesc::XMLPlatformUtils [static]
closeFile(FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
closeMutex(void *const mtxHandle)xercesc::XMLPlatformUtils [static]
compareAndSwap(void **toFill, const void *const newValue, const void *const toCompare)xercesc::XMLPlatformUtils [static]
curFilePos(FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
fgArrayMemoryManagerxercesc::XMLPlatformUtils [static]
fgAtomicMutexxercesc::XMLPlatformUtils [static]
fgDefaultPanicHandlerxercesc::XMLPlatformUtils [static]
fgMemoryManagerxercesc::XMLPlatformUtils [static]
fgNetAccessorxercesc::XMLPlatformUtils [static]
fgTransServicexercesc::XMLPlatformUtils [static]
fgUserPanicHandlerxercesc::XMLPlatformUtils [static]
fileSize(FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
getCurrentDirectory(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
getCurrentMillis()xercesc::XMLPlatformUtils [static]
getFullPath(const XMLCh *const srcPath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
Initialize(const char *const locale=XMLUni::fgXercescDefaultLocale, const char *const nlsHome=0, PanicHandler *const panicHandler=0, MemoryManager *const memoryManager=0, bool toInitStatics=false)xercesc::XMLPlatformUtils [static]
isAnySlash(XMLCh c)xercesc::XMLPlatformUtils [inline, static]
isNELRecognized()xercesc::XMLPlatformUtils [static]
isRelative(const XMLCh *const toCheck, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
isStrictIANAEncoding()xercesc::XMLPlatformUtils [static]
loadMsgSet(const XMLCh *const msgDomain)xercesc::XMLPlatformUtils [static]
lockMutex(void *const mtxHandle)xercesc::XMLPlatformUtils [static]
makeMutex(MemoryManager *manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
openFile(const char *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
openFile(const XMLCh *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
openFileToWrite(const char *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
openFileToWrite(const XMLCh *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
openStdInHandle(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
panic(const PanicHandler::PanicReasons reason)xercesc::XMLPlatformUtils [static]
readFileBuffer(FileHandle theFile, const unsigned int toRead, XMLByte *const toFill, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
recognizeNEL(bool state, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
removeDotDotSlash(XMLCh *const srcPath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
removeDotSlash(XMLCh *const srcPath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
resetFile(FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
strictIANAEncoding(const bool state)xercesc::XMLPlatformUtils [static]
Terminate()xercesc::XMLPlatformUtils [static]
unlockMutex(void *const mtxHandle)xercesc::XMLPlatformUtils [static]
weavePaths(const XMLCh *const basePath, const XMLCh *const relativePath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
writeBufferToFile(FileHandle const theFile, long toWrite, const XMLByte *const toFlush, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]


Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/classxercesc_1_1XMLPlatformUtils.html b/docs/dom3-api/classxercesc_1_1XMLPlatformUtils.html new file mode 100644 index 00000000..fbf00de4 --- /dev/null +++ b/docs/dom3-api/classxercesc_1_1XMLPlatformUtils.html @@ -0,0 +1,1843 @@ + + +XQilla DOM Level 3 API: xercesc::XMLPlatformUtils Class Reference + + + + + + + +

xercesc::XMLPlatformUtils Class Reference

Utilities that must be implemented in a platform-specific way. +More... +

+#include <PlatformUtils.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Static Public Member Functions

static size_t alignPointerForNewBlockAllocation (size_t ptrSize)
 Aligns the specified pointer per platform block allocation requirements.
Initialization amd Panic methods
static void Initialize (const char *const locale=XMLUni::fgXercescDefaultLocale, const char *const nlsHome=0, PanicHandler *const panicHandler=0, MemoryManager *const memoryManager=0, bool toInitStatics=false)
 Perform per-process parser initialization.
static void Terminate ()
 Perform per-process parser termination.
static void panic (const PanicHandler::PanicReasons reason)
 The panic mechanism.
File Methods
static unsigned int curFilePos (FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Get the current file position.
static void closeFile (FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Closes the file handle.
static unsigned int fileSize (FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Returns the file size.
static FileHandle openFile (const char *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Opens the file.
static FileHandle openFile (const XMLCh *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Opens a named file.
static FileHandle openFileToWrite (const char *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Open a named file to write.
static FileHandle openFileToWrite (const XMLCh *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Open a named file to write.
static FileHandle openStdInHandle (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Opens the standard input as a file.
static unsigned int readFileBuffer (FileHandle theFile, const unsigned int toRead, XMLByte *const toFill, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Reads the file buffer.
static void writeBufferToFile (FileHandle const theFile, long toWrite, const XMLByte *const toFlush, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Writes the buffer to the file.
static void resetFile (FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Resets the file handle.
File System Methods
static XMLCh * getFullPath (const XMLCh *const srcPath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Gets the full path from a relative path.
static XMLCh * getCurrentDirectory (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Gets the current working directory.
static bool isAnySlash (XMLCh c)
 Check if a charater is a slash.
static void removeDotSlash (XMLCh *const srcPath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Remove occurences of the pair of dot slash.
static void removeDotDotSlash (XMLCh *const srcPath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Remove occurences of the dot dot slash.
static bool isRelative (const XMLCh *const toCheck, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Determines if a path is relative or absolute.
static XMLCh * weavePaths (const XMLCh *const basePath, const XMLCh *const relativePath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Utility to join two paths.
Timing Methods
static unsigned long getCurrentMillis ()
 Gets the system time in milliseconds.
Mutex Methods
static void closeMutex (void *const mtxHandle)
 Closes a mutex handle.
static void lockMutex (void *const mtxHandle)
 Locks a mutex handle.
static void * makeMutex (MemoryManager *manager=XMLPlatformUtils::fgMemoryManager)
 Make a new mutex.
static void unlockMutex (void *const mtxHandle)
 Unlocks a mutex.
External Message Support
static XMLMsgLoader * loadMsgSet (const XMLCh *const msgDomain)
 Loads the message set from among the available domains.
Miscellaneous synchronization methods
static void * compareAndSwap (void **toFill, const void *const newValue, const void *const toCompare)
 Conditionally updates or returns a single word variable atomically.
Atomic Increment and Decrement
static int atomicIncrement (int &location)
 Increments a single word variable atomically.
static int atomicDecrement (int &location)
 Decrements a single word variable atomically.
NEL Character Handling
static void recognizeNEL (bool state, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 This function enables the recognition of NEL(0x85) char and LSEP (0x2028) as newline chars which is disabled by default.
static bool isNELRecognized ()
 Return the value of fgNEL flag.
Strict IANA Encoding Checking
static void strictIANAEncoding (const bool state)
 This function enables/disables strict IANA encoding names checking.
static bool isStrictIANAEncoding ()
 Returns whether a strict IANA encoding name check is enabled or disabled.

Static Public Attributes

Public Static Data
static XMLNetAccessor * fgNetAccessor
 The network accessor.
static XMLTransService * fgTransService
 The transcoding service.
static PanicHandler * fgUserPanicHandler
 The Panic Handler.
static PanicHandler * fgDefaultPanicHandler
 The Panic Handler.
static MemoryManagerfgMemoryManager
 The configurable memory manager.
static MemoryManagerfgArrayMemoryManager
 The array-allocating memory manager.
static XMLMutex * fgAtomicMutex
+


Detailed Description

+Utilities that must be implemented in a platform-specific way. +

+This class contains methods that must be implemented in a platform specific manner. The actual implementations of these methods are available in the per-platform files indide src/util/Platforms . +

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
static size_t xercesc::XMLPlatformUtils::alignPointerForNewBlockAllocation size_t  ptrSize  )  [inline, static]
+
+ + + + + +
+   + + +

+Aligns the specified pointer per platform block allocation requirements. +

+The results of this function may be altered by defining XML_PLATFORM_NEW_BLOCK_ALIGNMENT.

+

+ + + + +
+ + + + + + + + + +
static int xercesc::XMLPlatformUtils::atomicDecrement int &  location  )  [static]
+
+ + + + + +
+   + + +

+Decrements a single word variable atomically. +

+This must be implemented by the per-platform driver. The atomicDecrement subroutine increments one word in a single atomic operation. This operation is useful when a counter variable is shared between several threads or processes. When updating such a counter variable, it is important to make sure that the fetch, update, and store operations occur atomically (are not interruptible).

+

Parameters:
+ + +
location Specifies the address of the word variable to be decremented.
+
+
Returns:
The function return value is positive if the result of the operation was positive. Zero if the result of the operation was zero. Negative if the result of the operation was negative. Except for the zero case, the value returned may differ from the actual result of the operation - only the sign and zero/nonzero state is guaranteed to be correct.
+
+

+ + + + +
+ + + + + + + + + +
static int xercesc::XMLPlatformUtils::atomicIncrement int &  location  )  [static]
+
+ + + + + +
+   + + +

+Increments a single word variable atomically. +

+This must be implemented by the per-platform driver. The atomicIncrement subroutine increments one word in a single atomic operation. This operation is useful when a counter variable is shared between several threads or processes. When updating such a counter variable, it is important to make sure that the fetch, update, and store operations occur atomically (are not interruptible).

+

Parameters:
+ + +
location Specifies the address of the word variable to be incremented.
+
+
Returns:
The function return value is positive if the result of the operation was positive. Zero if the result of the operation was zero. Negative if the result of the operation was negative. Except for the zero case, the value returned may differ from the actual result of the operation - only the sign and zero/nonzero state is guaranteed to be correct.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static void xercesc::XMLPlatformUtils::closeFile FileHandle  theFile,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Closes the file handle. +

+This must be implemented by the per-platform driver, which should use local file services to close the passed file handle, and to destroy the passed file handle and any allocated data or system resources it contains.

+

Parameters:
+ + + +
theFile The file handle to close
manager The MemoryManager to use to allocate objects
+
+
+

+ + + + +
+ + + + + + + + + +
static void xercesc::XMLPlatformUtils::closeMutex void *const   mtxHandle  )  [static]
+
+ + + + + +
+   + + +

+Closes a mutex handle. +

+Each per-platform driver must implement this. Only it knows what the actual content of the passed mutex handle is.

+

Parameters:
+ + +
mtxHandle The mutex handle that you want to close
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void* xercesc::XMLPlatformUtils::compareAndSwap void **  toFill,
const void *const   newValue,
const void *const   toCompare
[static]
+
+ + + + + +
+   + + +

+Conditionally updates or returns a single word variable atomically. +

+This must be implemented by the per-platform driver. The compareAndSwap subroutine performs an atomic operation which compares the contents of a single word variable with a stored old value. If the values are equal, a new value is stored in the single word variable and TRUE is returned; otherwise, the old value is set to the current value of the single word variable and FALSE is returned.

+The compareAndSwap subroutine is useful when a word value must be updated only if it has not been changed since it was last read.

+Note: The word containing the single word variable must be aligned on a full word boundary.

+

Parameters:
+ + + + +
toFill Specifies the address of the single word variable
newValue Specifies the new value to be conditionally assigned to the single word variable.
toCompare Specifies the address of the old value to be checked against (and conditionally updated with) the value of the single word variable.
+
+
Returns:
Returns the new value assigned to the single word variable
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static unsigned int xercesc::XMLPlatformUtils::curFilePos FileHandle  theFile,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Get the current file position. +

+This must be implemented by the per-platform driver, which should use local file services to deterine the current position within the passed file.

+Since the file API provided here only reads, if the host platform supports separate read/write positions, only the read position is of any interest, and hence should be the one returned.

+

Parameters:
+ + + +
theFile The file handle
manager The MemoryManager to use to allocate objects
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static unsigned int xercesc::XMLPlatformUtils::fileSize FileHandle  theFile,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Returns the file size. +

+This must be implemented by the per-platform driver, which should use local file services to determine the current size of the file represented by the passed handle.

+

Parameters:
+ + + +
theFile The file handle whose size you want
manager The MemoryManager to use to allocate objects
+
+
Returns:
Returns the size of the file in bytes
+
+

+ + + + +
+ + + + + + + + + +
static XMLCh* xercesc::XMLPlatformUtils::getCurrentDirectory MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  )  [static]
+
+ + + + + +
+   + + +

+Gets the current working directory. +

+This must be implemented by the per-platform driver. It returns the current working directory is.

Parameters:
+ + +
manager The MemoryManager to use to allocate objects
+
+
Returns:
Returns the current working directory. This is dyanmically allocated and must be deleted by the caller when its no longer needed! The memory returned will be allocated using the static memory manager, if users do not supply a memory manager. Users then need to make sure to use either the default or user specific memory manager to deallocate the memory.
+
+

+ + + + +
+ + + + + + + + +
static unsigned long xercesc::XMLPlatformUtils::getCurrentMillis  )  [static]
+
+ + + + + +
+   + + +

+Gets the system time in milliseconds. +

+This must be implemented by the per-platform driver, which should use local services to return the current value of a running millisecond timer. Note that the value returned is only as accurate as the millisecond time of the underyling host system.

+

Returns:
Returns the system time as an unsigned long
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static XMLCh* xercesc::XMLPlatformUtils::getFullPath const XMLCh *const   srcPath,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Gets the full path from a relative path. +

+This must be implemented by the per-platform driver. It should complete a relative path using the 'current directory', or whatever the local equivalent of a current directory is. If the passed source path is actually fully qualified, then a straight copy of it will be returned.

+

Parameters:
+ + + +
srcPath The path of the file for which you want the full path
manager Pointer to the memory manager to be used to allocate objects.
+
+
Returns:
Returns the fully qualified path of the file name including the file name. This is dyanmically allocated and must be deleted by the caller when its no longer needed! The memory returned will beallocated using the static memory manager, if user do not supply a memory manager. Users then need to make sure to use either the default or user specific memory manager to deallocate the memory.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void xercesc::XMLPlatformUtils::Initialize const char *const   locale = XMLUni::fgXercescDefaultLocale,
const char *const   nlsHome = 0,
PanicHandler *const   panicHandler = 0,
MemoryManager *const   memoryManager = 0,
bool  toInitStatics = false
[static]
+
+ + + + + +
+   + + +

+Perform per-process parser initialization. +

+Initialization must be called first in any client code.

+The locale is set iff the Initialize() is invoked for the very first time, to ensure that each and every message loaders, in the process space, share the same locale.

+All subsequent invocations of Initialize(), with a different locale, have no effect on the message loaders, either instantiated, or to be instantiated.

+To set to a different locale, client application needs to Terminate() (or multiple Terminate() in the case where multiple Initialize() have been invoked before), followed by Initialize(new_locale).

+The default locale is "en_US".

+nlsHome: user specified location where MsgLoader retrieves error message files. the discussion above with regard to locale, applies to this nlsHome as well.

+panicHandler: application's panic handler, application owns this handler. Application shall make sure that the plugged panic handler persists through the call to XMLPlatformUtils::terminate().

+memoryManager: plugged-in memory manager which is owned by user applications. Applications must make sure that the plugged-in memory manager persist through the call to XMLPlatformUtils::terminate()

+

+ + + + +
+ + + + + + + + + +
static bool xercesc::XMLPlatformUtils::isAnySlash XMLCh  c  )  [inline, static]
+
+ + + + + +
+   + + +

+Check if a charater is a slash. +

+This must be implemented by the per-platform driver.

+

Parameters:
+ + +
c the character to be examined
+
+
Returns:
true if the character examined is a slash false otherwise
+
+

+ + + + +
+ + + + + + + + +
static bool xercesc::XMLPlatformUtils::isNELRecognized  )  [static]
+
+ + + + + +
+   + + +

+Return the value of fgNEL flag. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static bool xercesc::XMLPlatformUtils::isRelative const XMLCh *const   toCheck,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Determines if a path is relative or absolute. +

+This must be implemented by the per-platform driver, which should determine whether the passed path is relative or not. The concept of relative and absolute might be... well relative on different platforms. But, as long as the determination is made consistently and in coordination with the weavePaths() method, it should work for any platform.

+

Parameters:
+ + + +
toCheck The file name which you want to check
manager The MemoryManager to use to allocate objects
+
+
Returns:
Returns true if the filename appears to be relative
+
+

+ + + + +
+ + + + + + + + +
static bool xercesc::XMLPlatformUtils::isStrictIANAEncoding  )  [static]
+
+ + + + + +
+   + + +

+Returns whether a strict IANA encoding name check is enabled or disabled. +

+

+

+ + + + +
+ + + + + + + + + +
static XMLMsgLoader* xercesc::XMLPlatformUtils::loadMsgSet const XMLCh *const   msgDomain  )  [static]
+
+ + + + + +
+   + + +

+Loads the message set from among the available domains. +

+The returned object must be dynamically allocated and the caller becomes responsible for cleaning it up.

+

Parameters:
+ + +
msgDomain The message domain which you want to load
+
+
+

+ + + + +
+ + + + + + + + + +
static void xercesc::XMLPlatformUtils::lockMutex void *const   mtxHandle  )  [static]
+
+ + + + + +
+   + + +

+Locks a mutex handle. +

+Each per-platform driver must implement this. Only it knows what the actual content of the passed mutex handle is.

+

Parameters:
+ + +
mtxHandle The mutex handle that you want to lock
+
+
+

+ + + + +
+ + + + + + + + + +
static void* xercesc::XMLPlatformUtils::makeMutex MemoryManager manager = XMLPlatformUtils::fgMemoryManager  )  [static]
+
+ + + + + +
+   + + +

+Make a new mutex. +

+Each per-platform driver must implement this. Only it knows what the actual content of the passed mutex handle is. The returned handle pointer will be eventually passed to closeMutex() which is also implemented by the platform driver.

+

Parameters:
+ + +
manager The MemoryManager to use to allocate objects
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static FileHandle xercesc::XMLPlatformUtils::openFile const XMLCh *const   fileName,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Opens a named file. +

+This must be implemented by the per-platform driver, which should use local file services to open the passed file. If it fails, a null handle pointer should be returned.

+

Parameters:
+ + + +
fileName The string containing the name of the file
manager The MemoryManager to use to allocate objects
+
+
Returns:
The file handle of the opened file
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static FileHandle xercesc::XMLPlatformUtils::openFile const char *const   fileName,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Opens the file. +

+This must be implemented by the per-platform driver, which should use local file services to open passed file. If it fails, a null handle pointer should be returned.

+

Parameters:
+ + + +
fileName The string containing the name of the file
manager The MemoryManager to use to allocate objects
+
+
Returns:
The file handle of the opened file
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static FileHandle xercesc::XMLPlatformUtils::openFileToWrite const XMLCh *const   fileName,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Open a named file to write. +

+This must be implemented by the per-platform driver, which should use local file services to open the passed file. If it fails, a null handle pointer should be returned.

+

Parameters:
+ + + +
fileName The string containing the name of the file
manager The MemoryManager to use to allocate objects
+
+
Returns:
The file handle of the opened file
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static FileHandle xercesc::XMLPlatformUtils::openFileToWrite const char *const   fileName,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Open a named file to write. +

+This must be implemented by the per-platform driver, which should use local file services to open passed file. If it fails, a null handle pointer should be returned.

+

Parameters:
+ + + +
fileName The string containing the name of the file
manager The MemoryManager to use to allocate objects
+
+
Returns:
The file handle of the opened file
+
+

+ + + + +
+ + + + + + + + + +
static FileHandle xercesc::XMLPlatformUtils::openStdInHandle MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  )  [static]
+
+ + + + + +
+   + + +

+Opens the standard input as a file. +

+This must be implemented by the per-platform driver, which should use local file services to open a handle to the standard input. It should be a copy of the standard input handle, since it will be closed later!

+

Parameters:
+ + +
manager The MemoryManager to use to allocate objects
+
+
Returns:
The file handle of the standard input stream
+
+

+ + + + +
+ + + + + + + + + +
static void xercesc::XMLPlatformUtils::panic const PanicHandler::PanicReasons  reason  )  [static]
+
+ + + + + +
+   + + +

+The panic mechanism. +

+If, during initialization, we cannot even get far enough along to get transcoding up or get message loading working, we call this method.

+Each platform can implement it however they want. This method will delegate the panic handling to a user specified panic handler or in the absence of it, the default panic handler.

+In case the default panic handler does not support a particular platform, the platform specific panic hanlding shall be implemented here .

+

Parameters:
+ + +
reason The enumeration that defines the cause of the failure
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static unsigned int xercesc::XMLPlatformUtils::readFileBuffer FileHandle  theFile,
const unsigned int  toRead,
XMLByte *const   toFill,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Reads the file buffer. +

+This must be implemented by the per-platform driver, which should use local file services to read up to 'toRead' bytes of data from the passed file, and return those bytes in the 'toFill' buffer. It is not an error not to read the requested number of bytes. When the end of file is reached, zero should be returned.

+

Parameters:
+ + + + + +
theFile The file handle to be read from.
toRead The maximum number of byte to read from the current position
toFill The byte buffer to fill
manager The MemoryManager to use to allocate objects
+
+
Returns:
Returns the number of bytes read from the stream or file
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static void xercesc::XMLPlatformUtils::recognizeNEL bool  state,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+This function enables the recognition of NEL(0x85) char and LSEP (0x2028) as newline chars which is disabled by default. +

+It is only called once per process. Once it is set, any subsequent calls will result in exception being thrown.

+Note: 1. Turning this option on will make the parser non compliant to XML 1.0. 2. This option has no effect to document conforming to XML 1.1 compliant, which always recognize these two chars (0x85 and 0x2028) as newline characters.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static void xercesc::XMLPlatformUtils::removeDotDotSlash XMLCh *const   srcPath,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Remove occurences of the dot dot slash. +

+To remove the sequence, slash dot dot slash and its preceding path segment if and only if the preceding path segment is not slash dot dot slash.

+

Parameters:
+ + + +
srcPath The path for which you want to remove the slash dot dot slash sequence and its preceding path segment.
manager The MemoryManager to use to allocate objects
+
+
Returns:
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static void xercesc::XMLPlatformUtils::removeDotSlash XMLCh *const   srcPath,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Remove occurences of the pair of dot slash. +

+To remove the sequence, dot slash if it is part of the sequence, slash dot slash.

+

Parameters:
+ + + +
srcPath The path for which you want to remove the dot slash sequence.
manager The MemoryManager to use to allocate objects
+
+
Returns:
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static void xercesc::XMLPlatformUtils::resetFile FileHandle  theFile,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Resets the file handle. +

+This must be implemented by the per-platform driver which will use local file services to reset the file position to the start of the the file.

+

Parameters:
+ + + +
theFile The file handle that you want to reset
manager The MemoryManager to use to allocate objects
+
+
+

+ + + + +
+ + + + + + + + + +
static void xercesc::XMLPlatformUtils::strictIANAEncoding const bool  state  )  [static]
+
+ + + + + +
+   + + +

+This function enables/disables strict IANA encoding names checking. +

+The strict checking is disabled by default.

+

Parameters:
+ + +
state If true, a strict IANA encoding name check is performed, otherwise, no checking.
+
+
+

+ + + + +
+ + + + + + + + +
static void xercesc::XMLPlatformUtils::Terminate  )  [static]
+
+ + + + + +
+   + + +

+Perform per-process parser termination. +

+The termination call is currently optional, to aid those dynamically loading the parser to clean up before exit, or to avoid spurious reports from leak detectors.

+

+ + + + +
+ + + + + + + + + +
static void xercesc::XMLPlatformUtils::unlockMutex void *const   mtxHandle  )  [static]
+
+ + + + + +
+   + + +

+Unlocks a mutex. +

+Each per-platform driver must implement this. Only it knows what the actual content of the passed mutex handle is.

+Note that, since the underlying system synchronization services are used, Xerces cannot guarantee that lock/unlock operations are correctly enforced on a per-thread basis or that incorrect nesting of lock/unlock operations will be caught.

+

Parameters:
+ + +
mtxHandle The mutex handle that you want to unlock
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static XMLCh* xercesc::XMLPlatformUtils::weavePaths const XMLCh *const   basePath,
const XMLCh *const   relativePath,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Utility to join two paths. +

+This must be implemented by the per-platform driver, and should weave the relative path part together with the base part and return a new path that represents this combination.

+If the relative part turns out to be fully qualified, it will be returned as is. If it is not, then it will be woven onto the passed base path, by removing one path component for each leading "../" (or whatever is the equivalent in the local system) in the relative path.

+

Parameters:
+ + + + +
basePath The string containing the base path
relativePath The string containing the relative path
manager The MemoryManager to use to allocate objects
+
+
Returns:
Returns a string containing the 'woven' path. It should be dynamically allocated and becomes the responsibility of the caller to delete.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void xercesc::XMLPlatformUtils::writeBufferToFile FileHandle const   theFile,
long  toWrite,
const XMLByte *const   toFlush,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Writes the buffer to the file. +

+This must be implemented by the per-platform driver, which should use local file services to write up to 'toWrite' bytes of data to the passed file. Unless exception raised by local file services, 'toWrite' bytes of data is to be written to the passed file.

+

Parameters:
+ + + + + +
theFile The file handle to be written to.
toWrite The maximum number of byte to write from the current position
toFlush The byte buffer to flush
manager The MemoryManager to use to allocate objects
+
+
Returns:
void
+
+


Member Data Documentation

+

+ + + + +
+ + + + +
MemoryManager* xercesc::XMLPlatformUtils::fgArrayMemoryManager [static]
+
+ + + + + +
+   + + +

+The array-allocating memory manager. +

+This memory manager always allocates memory by calling the global new[] operator. It may be used to allocate memory where such memory needs to be deletable by calling delete []. Since this allocator is always guaranteed to do the same thing there is no reason, nor facility, to override it.

+

+ + + + +
+ + + + +
XMLMutex* xercesc::XMLPlatformUtils::fgAtomicMutex [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
PanicHandler* xercesc::XMLPlatformUtils::fgDefaultPanicHandler [static]
+
+ + + + + +
+   + + +

+The Panic Handler. +

+This is the default panic handler.

+

+ + + + +
+ + + + +
MemoryManager* xercesc::XMLPlatformUtils::fgMemoryManager [static]
+
+ + + + + +
+   + + +

+The configurable memory manager. +

+This is the pluggable memory manager. If it is not provided by an application, a default implementation is used.

+

+ + + + +
+ + + + +
XMLNetAccessor* xercesc::XMLPlatformUtils::fgNetAccessor [static]
+
+ + + + + +
+   + + +

+The network accessor. +

+This is provided by the per-platform driver, so each platform can choose what actual implementation it wants to use. The object must be dynamically allocated.

+Note that you may optionally, if your platform driver does not install a network accessor, set it manually from your client code after calling Initialize(). This works because this object is not required during initialization, and only comes into play during actual XML parsing.

+

+ + + + +
+ + + + +
XMLTransService* xercesc::XMLPlatformUtils::fgTransService [static]
+
+ + + + + +
+   + + +

+The transcoding service. +

+This is provided by the per platform driver, so each platform can choose what implemenation it wants to use. When the platform independent initialization code needs to get a transcoding service object, it will call makeTransService() to ask the per-platform code to create one. Only one transcoding service object is reqeusted per-process, so it is shared and synchronized among parser instances within that process.

+

+ + + + +
+ + + + +
PanicHandler* xercesc::XMLPlatformUtils::fgUserPanicHandler [static]
+
+ + + + + +
+   + + +

+The Panic Handler. +

+This is the application provided panic handler.

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:19:02 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/doxygen.css b/docs/dom3-api/doxygen.css new file mode 100644 index 00000000..05615b2e --- /dev/null +++ b/docs/dom3-api/doxygen.css @@ -0,0 +1,310 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: Fixed, monospace; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } +TD.md { background-color: #F4F4FB; font-weight: bold; } +TD.mdPrefix { + background-color: #F4F4FB; + color: #606060; + font-size: 80%; +} +TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; } +TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; } +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdTable { + border: 1px solid #868686; + background-color: #F4F4FB; +} +.mdRow { + padding: 8px 10px; +} +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { font-size: 75%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + diff --git a/docs/dom3-api/doxygen.png b/docs/dom3-api/doxygen.png new file mode 100644 index 00000000..f0a274bb Binary files /dev/null and b/docs/dom3-api/doxygen.png differ diff --git a/docs/dom3-api/files.html b/docs/dom3-api/files.html new file mode 100644 index 00000000..d9433467 --- /dev/null +++ b/docs/dom3-api/files.html @@ -0,0 +1,83 @@ + + +XQilla DOM Level 3 API: File Index + + + + + + +

XQilla DOM Level 3 API File List

Here is a list of all files with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DOM.hpp [code]
DOMAttr.hpp [code]
DOMBuilder.hpp [code]
DOMCDATASection.hpp [code]
DOMCharacterData.hpp [code]
DOMComment.hpp [code]
DOMConfiguration.hpp [code]
DOMDocument.hpp [code]
DOMDocumentFragment.hpp [code]
DOMDocumentRange.hpp [code]
DOMDocumentTraversal.hpp [code]
DOMDocumentType.hpp [code]
DOMElement.hpp [code]
DOMEntity.hpp [code]
DOMEntityReference.hpp [code]
DOMEntityResolver.hpp [code]
DOMError.hpp [code]
DOMErrorHandler.hpp [code]
DOMException.cpp
DOMException.hpp [code]
DOMImplementation.hpp [code]
DOMImplementationLS.hpp [code]
DOMImplementationRegistry.hpp [code]
DOMImplementationSource.hpp [code]
DOMInputSource.hpp [code]
DOMLocator.hpp [code]
DOMNamedNodeMap.hpp [code]
DOMNode.hpp [code]
DOMNodeFilter.hpp [code]
DOMNodeIterator.hpp [code]
DOMNodeList.hpp [code]
DOMNotation.hpp [code]
DOMProcessingInstruction.hpp [code]
DOMPSVITypeInfo.hpp [code]
DOMRange.hpp [code]
DOMRangeException.cpp
DOMRangeException.hpp [code]
DOMText.hpp [code]
DOMTreeWalker.hpp [code]
DOMTypeInfo.hpp [code]
DOMUserDataHandler.hpp [code]
DOMWriter.hpp [code]
DOMWriterFilter.hpp [code]
DOMXPathEvaluator.hpp [code]
DOMXPathException.cpp
DOMXPathException.hpp [code]
DOMXPathExpression.hpp [code]
DOMXPathNamespace.hpp [code]
DOMXPathNSResolver.hpp [code]
DOMXPathResult.hpp [code]
MemoryManager.hpp [code]
PlatformUtils.hpp [code]
StDOMNode.hpp [code]
XPath2Result.hpp [code]
XQillaExpression.hpp [code]
XQillaNSResolver.hpp [code]
XQillaPlatformUtils.hpp [code]
+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions.html b/docs/dom3-api/functions.html new file mode 100644 index 00000000..ec00ff10 --- /dev/null +++ b/docs/dom3-api/functions.html @@ -0,0 +1,90 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- a -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_0x62.html b/docs/dom3-api/functions_0x62.html new file mode 100644 index 00000000..a64e861e --- /dev/null +++ b/docs/dom3-api/functions_0x62.html @@ -0,0 +1,69 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- b -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_0x63.html b/docs/dom3-api/functions_0x63.html new file mode 100644 index 00000000..77189717 --- /dev/null +++ b/docs/dom3-api/functions_0x63.html @@ -0,0 +1,106 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- c -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_0x64.html b/docs/dom3-api/functions_0x64.html new file mode 100644 index 00000000..5baacbf6 --- /dev/null +++ b/docs/dom3-api/functions_0x64.html @@ -0,0 +1,125 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- d -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_0x65.html b/docs/dom3-api/functions_0x65.html new file mode 100644 index 00000000..069acc95 --- /dev/null +++ b/docs/dom3-api/functions_0x65.html @@ -0,0 +1,77 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- e -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_0x66.html b/docs/dom3-api/functions_0x66.html new file mode 100644 index 00000000..aa144f57 --- /dev/null +++ b/docs/dom3-api/functions_0x66.html @@ -0,0 +1,83 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- f -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_0x67.html b/docs/dom3-api/functions_0x67.html new file mode 100644 index 00000000..b4be41b7 --- /dev/null +++ b/docs/dom3-api/functions_0x67.html @@ -0,0 +1,168 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- g -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_0x68.html b/docs/dom3-api/functions_0x68.html new file mode 100644 index 00000000..972faca1 --- /dev/null +++ b/docs/dom3-api/functions_0x68.html @@ -0,0 +1,75 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- h -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_0x69.html b/docs/dom3-api/functions_0x69.html new file mode 100644 index 00000000..42282550 --- /dev/null +++ b/docs/dom3-api/functions_0x69.html @@ -0,0 +1,95 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- i -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_0x6c.html b/docs/dom3-api/functions_0x6c.html new file mode 100644 index 00000000..40eb867a --- /dev/null +++ b/docs/dom3-api/functions_0x6c.html @@ -0,0 +1,75 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- l -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_0x6d.html b/docs/dom3-api/functions_0x6d.html new file mode 100644 index 00000000..d0c3063c --- /dev/null +++ b/docs/dom3-api/functions_0x6d.html @@ -0,0 +1,73 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- m -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_0x6e.html b/docs/dom3-api/functions_0x6e.html new file mode 100644 index 00000000..2642e931 --- /dev/null +++ b/docs/dom3-api/functions_0x6e.html @@ -0,0 +1,83 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- n -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_0x6f.html b/docs/dom3-api/functions_0x6f.html new file mode 100644 index 00000000..ba8c5ce0 --- /dev/null +++ b/docs/dom3-api/functions_0x6f.html @@ -0,0 +1,78 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- o -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_0x70.html b/docs/dom3-api/functions_0x70.html new file mode 100644 index 00000000..05b98a01 --- /dev/null +++ b/docs/dom3-api/functions_0x70.html @@ -0,0 +1,89 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- p -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_0x72.html b/docs/dom3-api/functions_0x72.html new file mode 100644 index 00000000..1b884c8c --- /dev/null +++ b/docs/dom3-api/functions_0x72.html @@ -0,0 +1,89 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- r -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_0x73.html b/docs/dom3-api/functions_0x73.html new file mode 100644 index 00000000..d7904d92 --- /dev/null +++ b/docs/dom3-api/functions_0x73.html @@ -0,0 +1,145 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- s -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_0x74.html b/docs/dom3-api/functions_0x74.html new file mode 100644 index 00000000..af57b6d3 --- /dev/null +++ b/docs/dom3-api/functions_0x74.html @@ -0,0 +1,79 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- t -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_0x75.html b/docs/dom3-api/functions_0x75.html new file mode 100644 index 00000000..35b5d1b8 --- /dev/null +++ b/docs/dom3-api/functions_0x75.html @@ -0,0 +1,70 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- u -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_0x76.html b/docs/dom3-api/functions_0x76.html new file mode 100644 index 00000000..03068837 --- /dev/null +++ b/docs/dom3-api/functions_0x76.html @@ -0,0 +1,68 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- v -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_0x77.html b/docs/dom3-api/functions_0x77.html new file mode 100644 index 00000000..e6a27f51 --- /dev/null +++ b/docs/dom3-api/functions_0x77.html @@ -0,0 +1,72 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- w -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_0x78.html b/docs/dom3-api/functions_0x78.html new file mode 100644 index 00000000..21c5aeb0 --- /dev/null +++ b/docs/dom3-api/functions_0x78.html @@ -0,0 +1,73 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- x -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_0x7e.html b/docs/dom3-api/functions_0x7e.html new file mode 100644 index 00000000..2fcb9605 --- /dev/null +++ b/docs/dom3-api/functions_0x7e.html @@ -0,0 +1,117 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- ~ -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_enum.html b/docs/dom3-api/functions_enum.html new file mode 100644 index 00000000..0650ffec --- /dev/null +++ b/docs/dom3-api/functions_enum.html @@ -0,0 +1,53 @@ + + +XQilla DOM Level 3 API: Class Members - Enumerations + + + + + + + +  +

+

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_eval.html b/docs/dom3-api/functions_eval.html new file mode 100644 index 00000000..95ae566a --- /dev/null +++ b/docs/dom3-api/functions_eval.html @@ -0,0 +1,196 @@ + + +XQilla DOM Level 3 API: Class Members - Enumerator + + + + + + + +
+ +
+ +

+  +

+

- a -

+

- b -

+

- c -

+

- d -

+

- e -

+

- f -

+

- h -

+

- i -

+

- m -

+

- n -

+

- o -

+

- p -

+

- s -

+

- t -

+

- u -

+

- v -

+

- w -

+

- x -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_func.html b/docs/dom3-api/functions_func.html new file mode 100644 index 00000000..d9cd00b6 --- /dev/null +++ b/docs/dom3-api/functions_func.html @@ -0,0 +1,80 @@ + + +XQilla DOM Level 3 API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- a -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_func_0x63.html b/docs/dom3-api/functions_func_0x63.html new file mode 100644 index 00000000..a7fa3be9 --- /dev/null +++ b/docs/dom3-api/functions_func_0x63.html @@ -0,0 +1,100 @@ + + +XQilla DOM Level 3 API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- c -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_func_0x64.html b/docs/dom3-api/functions_func_0x64.html new file mode 100644 index 00000000..ec9f2abf --- /dev/null +++ b/docs/dom3-api/functions_func_0x64.html @@ -0,0 +1,114 @@ + + +XQilla DOM Level 3 API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- d -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_func_0x65.html b/docs/dom3-api/functions_func_0x65.html new file mode 100644 index 00000000..ac6e8853 --- /dev/null +++ b/docs/dom3-api/functions_func_0x65.html @@ -0,0 +1,68 @@ + + +XQilla DOM Level 3 API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- e -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_func_0x66.html b/docs/dom3-api/functions_func_0x66.html new file mode 100644 index 00000000..52eb384d --- /dev/null +++ b/docs/dom3-api/functions_func_0x66.html @@ -0,0 +1,67 @@ + + +XQilla DOM Level 3 API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- f -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_func_0x67.html b/docs/dom3-api/functions_func_0x67.html new file mode 100644 index 00000000..81457b8e --- /dev/null +++ b/docs/dom3-api/functions_func_0x67.html @@ -0,0 +1,166 @@ + + +XQilla DOM Level 3 API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- g -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_func_0x68.html b/docs/dom3-api/functions_func_0x68.html new file mode 100644 index 00000000..c50ae28b --- /dev/null +++ b/docs/dom3-api/functions_func_0x68.html @@ -0,0 +1,72 @@ + + +XQilla DOM Level 3 API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- h -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_func_0x69.html b/docs/dom3-api/functions_func_0x69.html new file mode 100644 index 00000000..ab480b9f --- /dev/null +++ b/docs/dom3-api/functions_func_0x69.html @@ -0,0 +1,84 @@ + + +XQilla DOM Level 3 API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- i -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_func_0x6c.html b/docs/dom3-api/functions_func_0x6c.html new file mode 100644 index 00000000..2dc85de4 --- /dev/null +++ b/docs/dom3-api/functions_func_0x6c.html @@ -0,0 +1,73 @@ + + +XQilla DOM Level 3 API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- l -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_func_0x6d.html b/docs/dom3-api/functions_func_0x6d.html new file mode 100644 index 00000000..d0a30905 --- /dev/null +++ b/docs/dom3-api/functions_func_0x6d.html @@ -0,0 +1,68 @@ + + +XQilla DOM Level 3 API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- m -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_func_0x6e.html b/docs/dom3-api/functions_func_0x6e.html new file mode 100644 index 00000000..dd67b7b6 --- /dev/null +++ b/docs/dom3-api/functions_func_0x6e.html @@ -0,0 +1,69 @@ + + +XQilla DOM Level 3 API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- n -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_func_0x6f.html b/docs/dom3-api/functions_func_0x6f.html new file mode 100644 index 00000000..9dc24861 --- /dev/null +++ b/docs/dom3-api/functions_func_0x6f.html @@ -0,0 +1,74 @@ + + +XQilla DOM Level 3 API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- o -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_func_0x70.html b/docs/dom3-api/functions_func_0x70.html new file mode 100644 index 00000000..0f58703a --- /dev/null +++ b/docs/dom3-api/functions_func_0x70.html @@ -0,0 +1,72 @@ + + +XQilla DOM Level 3 API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- p -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_func_0x72.html b/docs/dom3-api/functions_func_0x72.html new file mode 100644 index 00000000..3aa2dc4c --- /dev/null +++ b/docs/dom3-api/functions_func_0x72.html @@ -0,0 +1,84 @@ + + +XQilla DOM Level 3 API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- r -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_func_0x73.html b/docs/dom3-api/functions_func_0x73.html new file mode 100644 index 00000000..20f5daeb --- /dev/null +++ b/docs/dom3-api/functions_func_0x73.html @@ -0,0 +1,124 @@ + + +XQilla DOM Level 3 API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- s -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_func_0x74.html b/docs/dom3-api/functions_func_0x74.html new file mode 100644 index 00000000..25a8430f --- /dev/null +++ b/docs/dom3-api/functions_func_0x74.html @@ -0,0 +1,68 @@ + + +XQilla DOM Level 3 API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- t -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_func_0x75.html b/docs/dom3-api/functions_func_0x75.html new file mode 100644 index 00000000..7a666ee2 --- /dev/null +++ b/docs/dom3-api/functions_func_0x75.html @@ -0,0 +1,66 @@ + + +XQilla DOM Level 3 API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- u -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_func_0x77.html b/docs/dom3-api/functions_func_0x77.html new file mode 100644 index 00000000..5ef09d63 --- /dev/null +++ b/docs/dom3-api/functions_func_0x77.html @@ -0,0 +1,69 @@ + + +XQilla DOM Level 3 API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- w -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_func_0x78.html b/docs/dom3-api/functions_func_0x78.html new file mode 100644 index 00000000..63641dbc --- /dev/null +++ b/docs/dom3-api/functions_func_0x78.html @@ -0,0 +1,69 @@ + + +XQilla DOM Level 3 API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- x -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_func_0x7e.html b/docs/dom3-api/functions_func_0x7e.html new file mode 100644 index 00000000..ba6f4048 --- /dev/null +++ b/docs/dom3-api/functions_func_0x7e.html @@ -0,0 +1,115 @@ + + +XQilla DOM Level 3 API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- ~ -

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/functions_vars.html b/docs/dom3-api/functions_vars.html new file mode 100644 index 00000000..a729f9cc --- /dev/null +++ b/docs/dom3-api/functions_vars.html @@ -0,0 +1,49 @@ + + +XQilla DOM Level 3 API: Class Members - Variables + + + + + + + +  +

+

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/globals.html b/docs/dom3-api/globals.html new file mode 100644 index 00000000..60a293fe --- /dev/null +++ b/docs/dom3-api/globals.html @@ -0,0 +1,52 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + +
+ +
+Here is a list of all file members with links to the files they belong to: +

+

+
Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/globals_defs.html b/docs/dom3-api/globals_defs.html new file mode 100644 index 00000000..3b06529b --- /dev/null +++ b/docs/dom3-api/globals_defs.html @@ -0,0 +1,48 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + +
+ +
+  +

+

+
Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/globals_func.html b/docs/dom3-api/globals_func.html new file mode 100644 index 00000000..b638432c --- /dev/null +++ b/docs/dom3-api/globals_func.html @@ -0,0 +1,37 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + +
+ +
+  +

+

+
Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/globals_type.html b/docs/dom3-api/globals_type.html new file mode 100644 index 00000000..c55b19bb --- /dev/null +++ b/docs/dom3-api/globals_type.html @@ -0,0 +1,39 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + +
+ +
+  +

+

+
Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/graph_legend.dot b/docs/dom3-api/graph_legend.dot new file mode 100644 index 00000000..5420927d --- /dev/null +++ b/docs/dom3-api/graph_legend.dot @@ -0,0 +1,22 @@ +digraph G +{ + edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10]; + node [fontname="Helvetica",fontsize=10,shape=record]; + Node9 [shape="box",label="Inherited",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",style="filled" fontcolor="white"]; + Node10 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"]; + Node10 [shape="box",label="PublicBase",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classPublicBase.html"]; + Node11 -> Node10 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"]; + Node11 [shape="box",label="Truncated",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="red",URL="$classTruncated.html"]; + Node13 -> Node9 [dir=back,color="darkgreen",fontsize=10,style="solid",fontname="Helvetica"]; + Node13 [shape="box",label="ProtectedBase",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classProtectedBase.html"]; + Node14 -> Node9 [dir=back,color="firebrick4",fontsize=10,style="solid",fontname="Helvetica"]; + Node14 [shape="box",label="PrivateBase",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classPrivateBase.html"]; + Node15 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"]; + Node15 [shape="box",label="Undocumented",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="grey75"]; + Node16 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"]; + Node16 [shape="box",label="Templ< int >",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classTempl.html"]; + Node17 -> Node16 [dir=back,color="orange",fontsize=10,style="dashed",label="< int >",fontname="Helvetica"]; + Node17 [shape="box",label="Templ< T >",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classTempl.html"]; + Node18 -> Node9 [dir=back,color="darkorchid3",fontsize=10,style="dashed",label="m_usedClass",fontname="Helvetica"]; + Node18 [shape="box",label="Used",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classUsed.html"]; +} diff --git a/docs/dom3-api/graph_legend.html b/docs/dom3-api/graph_legend.html new file mode 100644 index 00000000..a117d840 --- /dev/null +++ b/docs/dom3-api/graph_legend.html @@ -0,0 +1,81 @@ + + +XQilla DOM Level 3 API: Graph Legend + + + + + +

Graph Legend

This page explains how to interpret the graphs that are generated by doxygen.

+Consider the following example:

/*! Invisible class because of truncation */
+class Invisible { };
+
+/*! Truncated class, inheritance relation is hidden */
+class Truncated : public Invisible { };
+
+/* Class not documented with doxygen comments */
+class Undocumented { };
+
+/*! Class that is inherited using public inheritance */
+class PublicBase : public Truncated { };
+
+/*! A template class */
+template<class T> class Templ { };
+
+/*! Class that is inherited using protected inheritance */
+class ProtectedBase { };
+
+/*! Class that is inherited using private inheritance */
+class PrivateBase { };
+
+/*! Class that is used by the Inherited class */
+class Used { };
+
+/*! Super class that inherits a number of other classes */
+class Inherited : public PublicBase,
+                  protected ProtectedBase,
+                  private PrivateBase,
+                  public Undocumented
+                  public Templ<int>
+{
+  private:
+    Used *m_usedClass;
+};
+
If the MAX_DOT_GRAPH_HEIGHT tag in the configuration file is set to 240 this will result in the following graph:

+

+graph_legend.png +
+

+The boxes in the above graph have the following meaning:

    +
  • +A filled black box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a grey border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+The arrows have the following meaning:
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance.
  • +
+
Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/graph_legend.png b/docs/dom3-api/graph_legend.png new file mode 100644 index 00000000..d9ad2c05 Binary files /dev/null and b/docs/dom3-api/graph_legend.png differ diff --git a/docs/dom3-api/hierarchy.html b/docs/dom3-api/hierarchy.html new file mode 100644 index 00000000..691901f8 --- /dev/null +++ b/docs/dom3-api/hierarchy.html @@ -0,0 +1,109 @@ + + +XQilla DOM Level 3 API: Hierarchical Index + + + + + + +

XQilla DOM Level 3 API Class Hierarchy

Go to the graphical class hierarchy +

+This inheritance list is sorted roughly, but not completely, alphabetically:

+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/index.html b/docs/dom3-api/index.html new file mode 100644 index 00000000..f3310c27 --- /dev/null +++ b/docs/dom3-api/index.html @@ -0,0 +1,21 @@ + + +XQilla DOM Level 3 API: Main Page + + + + + +

XQilla DOM Level 3 API Documentation

+

+

1.0


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/inherit__graph__0.map b/docs/dom3-api/inherit__graph__0.map new file mode 100644 index 00000000..ba628fdd --- /dev/null +++ b/docs/dom3-api/inherit__graph__0.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMBuilder.html 7,8 157,32 diff --git a/docs/dom3-api/inherit__graph__0.md5 b/docs/dom3-api/inherit__graph__0.md5 new file mode 100644 index 00000000..cb008f70 --- /dev/null +++ b/docs/dom3-api/inherit__graph__0.md5 @@ -0,0 +1 @@ +7ee683b4bee8f72649d3657529f17a8a \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__0.png b/docs/dom3-api/inherit__graph__0.png new file mode 100644 index 00000000..cdda4479 Binary files /dev/null and b/docs/dom3-api/inherit__graph__0.png differ diff --git a/docs/dom3-api/inherit__graph__1.map b/docs/dom3-api/inherit__graph__1.map new file mode 100644 index 00000000..8c0e7f10 --- /dev/null +++ b/docs/dom3-api/inherit__graph__1.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMConfiguration.html 8,8 194,32 diff --git a/docs/dom3-api/inherit__graph__1.md5 b/docs/dom3-api/inherit__graph__1.md5 new file mode 100644 index 00000000..d7d59c12 --- /dev/null +++ b/docs/dom3-api/inherit__graph__1.md5 @@ -0,0 +1 @@ +c7ba53f1c100c8edefb460d343bbf071 \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__1.png b/docs/dom3-api/inherit__graph__1.png new file mode 100644 index 00000000..2c3dd8d9 Binary files /dev/null and b/docs/dom3-api/inherit__graph__1.png differ diff --git a/docs/dom3-api/inherit__graph__10.map b/docs/dom3-api/inherit__graph__10.map new file mode 100644 index 00000000..c527d1ac --- /dev/null +++ b/docs/dom3-api/inherit__graph__10.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMLocator.html 8,8 160,32 diff --git a/docs/dom3-api/inherit__graph__10.md5 b/docs/dom3-api/inherit__graph__10.md5 new file mode 100644 index 00000000..2f49da22 --- /dev/null +++ b/docs/dom3-api/inherit__graph__10.md5 @@ -0,0 +1 @@ +af7fd2b71fae8769ab48cb46d32075b1 \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__10.png b/docs/dom3-api/inherit__graph__10.png new file mode 100644 index 00000000..980724cf Binary files /dev/null and b/docs/dom3-api/inherit__graph__10.png differ diff --git a/docs/dom3-api/inherit__graph__11.map b/docs/dom3-api/inherit__graph__11.map new file mode 100644 index 00000000..36f4b47c --- /dev/null +++ b/docs/dom3-api/inherit__graph__11.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMNamedNodeMap.html 8,8 216,32 diff --git a/docs/dom3-api/inherit__graph__11.md5 b/docs/dom3-api/inherit__graph__11.md5 new file mode 100644 index 00000000..661dadd0 --- /dev/null +++ b/docs/dom3-api/inherit__graph__11.md5 @@ -0,0 +1 @@ +b5c2b44d1da4c29cde29c5e8b0c833fa \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__11.png b/docs/dom3-api/inherit__graph__11.png new file mode 100644 index 00000000..34e37a91 Binary files /dev/null and b/docs/dom3-api/inherit__graph__11.png differ diff --git a/docs/dom3-api/inherit__graph__12.map b/docs/dom3-api/inherit__graph__12.map new file mode 100644 index 00000000..f27bb071 --- /dev/null +++ b/docs/dom3-api/inherit__graph__12.map @@ -0,0 +1,3 @@ +base referer +rect $classxercesc_1_1DOMNodeFilter.html 9,8 177,32 +rect $classxercesc_1_1DOMWriterFilter.html 228,8 398,32 diff --git a/docs/dom3-api/inherit__graph__12.md5 b/docs/dom3-api/inherit__graph__12.md5 new file mode 100644 index 00000000..f9f79532 --- /dev/null +++ b/docs/dom3-api/inherit__graph__12.md5 @@ -0,0 +1 @@ +b3e0ec6b5593ec249372646b3e428d74 \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__12.png b/docs/dom3-api/inherit__graph__12.png new file mode 100644 index 00000000..8af86af6 Binary files /dev/null and b/docs/dom3-api/inherit__graph__12.png differ diff --git a/docs/dom3-api/inherit__graph__13.map b/docs/dom3-api/inherit__graph__13.map new file mode 100644 index 00000000..13a57798 --- /dev/null +++ b/docs/dom3-api/inherit__graph__13.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMNodeIterator.html 7,8 189,32 diff --git a/docs/dom3-api/inherit__graph__13.md5 b/docs/dom3-api/inherit__graph__13.md5 new file mode 100644 index 00000000..c47671a1 --- /dev/null +++ b/docs/dom3-api/inherit__graph__13.md5 @@ -0,0 +1 @@ +b32ff00999079dd64bb7e3cb87cf4c21 \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__13.png b/docs/dom3-api/inherit__graph__13.png new file mode 100644 index 00000000..58cefafe Binary files /dev/null and b/docs/dom3-api/inherit__graph__13.png differ diff --git a/docs/dom3-api/inherit__graph__14.map b/docs/dom3-api/inherit__graph__14.map new file mode 100644 index 00000000..abecab46 --- /dev/null +++ b/docs/dom3-api/inherit__graph__14.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMNodeList.html 8,8 168,32 diff --git a/docs/dom3-api/inherit__graph__14.md5 b/docs/dom3-api/inherit__graph__14.md5 new file mode 100644 index 00000000..971c1f36 --- /dev/null +++ b/docs/dom3-api/inherit__graph__14.md5 @@ -0,0 +1 @@ +60d9df3484d4e1055797d439c3026254 \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__14.png b/docs/dom3-api/inherit__graph__14.png new file mode 100644 index 00000000..35aeb1cc Binary files /dev/null and b/docs/dom3-api/inherit__graph__14.png differ diff --git a/docs/dom3-api/inherit__graph__15.map b/docs/dom3-api/inherit__graph__15.map new file mode 100644 index 00000000..9104f9e1 --- /dev/null +++ b/docs/dom3-api/inherit__graph__15.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMPSVITypeInfo.html 9,8 195,32 diff --git a/docs/dom3-api/inherit__graph__15.md5 b/docs/dom3-api/inherit__graph__15.md5 new file mode 100644 index 00000000..96e3f0d2 --- /dev/null +++ b/docs/dom3-api/inherit__graph__15.md5 @@ -0,0 +1 @@ +ad3c8e5594a390fe062577c25753bc15 \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__15.png b/docs/dom3-api/inherit__graph__15.png new file mode 100644 index 00000000..db7160c7 Binary files /dev/null and b/docs/dom3-api/inherit__graph__15.png differ diff --git a/docs/dom3-api/inherit__graph__16.map b/docs/dom3-api/inherit__graph__16.map new file mode 100644 index 00000000..6a5e293e --- /dev/null +++ b/docs/dom3-api/inherit__graph__16.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMRange.html 8,8 154,32 diff --git a/docs/dom3-api/inherit__graph__16.md5 b/docs/dom3-api/inherit__graph__16.md5 new file mode 100644 index 00000000..9c81ae36 --- /dev/null +++ b/docs/dom3-api/inherit__graph__16.md5 @@ -0,0 +1 @@ +7d236ccf8e2069bfe8bce0f8d874694a \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__16.png b/docs/dom3-api/inherit__graph__16.png new file mode 100644 index 00000000..a93e9cf4 Binary files /dev/null and b/docs/dom3-api/inherit__graph__16.png differ diff --git a/docs/dom3-api/inherit__graph__17.map b/docs/dom3-api/inherit__graph__17.map new file mode 100644 index 00000000..81674ab1 --- /dev/null +++ b/docs/dom3-api/inherit__graph__17.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMTreeWalker.html 9,8 182,32 diff --git a/docs/dom3-api/inherit__graph__17.md5 b/docs/dom3-api/inherit__graph__17.md5 new file mode 100644 index 00000000..09b27ccb --- /dev/null +++ b/docs/dom3-api/inherit__graph__17.md5 @@ -0,0 +1 @@ +efc1af2e68ef84874eba6df6e6c2a187 \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__17.png b/docs/dom3-api/inherit__graph__17.png new file mode 100644 index 00000000..208c3c00 Binary files /dev/null and b/docs/dom3-api/inherit__graph__17.png differ diff --git a/docs/dom3-api/inherit__graph__18.map b/docs/dom3-api/inherit__graph__18.map new file mode 100644 index 00000000..08ac443a --- /dev/null +++ b/docs/dom3-api/inherit__graph__18.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMTypeInfo.html 9,8 166,32 diff --git a/docs/dom3-api/inherit__graph__18.md5 b/docs/dom3-api/inherit__graph__18.md5 new file mode 100644 index 00000000..a5f085b5 --- /dev/null +++ b/docs/dom3-api/inherit__graph__18.md5 @@ -0,0 +1 @@ +7aaf25c77c9afcf3f6daded2155fa3e8 \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__18.png b/docs/dom3-api/inherit__graph__18.png new file mode 100644 index 00000000..21bc8879 Binary files /dev/null and b/docs/dom3-api/inherit__graph__18.png differ diff --git a/docs/dom3-api/inherit__graph__19.map b/docs/dom3-api/inherit__graph__19.map new file mode 100644 index 00000000..1100cad9 --- /dev/null +++ b/docs/dom3-api/inherit__graph__19.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMUserDataHandler.html 8,8 218,32 diff --git a/docs/dom3-api/inherit__graph__19.md5 b/docs/dom3-api/inherit__graph__19.md5 new file mode 100644 index 00000000..b4f32cb8 --- /dev/null +++ b/docs/dom3-api/inherit__graph__19.md5 @@ -0,0 +1 @@ +e099446bf7a0e9fce15a460023d199b7 \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__19.png b/docs/dom3-api/inherit__graph__19.png new file mode 100644 index 00000000..503dd8b1 Binary files /dev/null and b/docs/dom3-api/inherit__graph__19.png differ diff --git a/docs/dom3-api/inherit__graph__2.map b/docs/dom3-api/inherit__graph__2.map new file mode 100644 index 00000000..1d29a45a --- /dev/null +++ b/docs/dom3-api/inherit__graph__2.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMEntityResolver.html 9,8 201,32 diff --git a/docs/dom3-api/inherit__graph__2.md5 b/docs/dom3-api/inherit__graph__2.md5 new file mode 100644 index 00000000..47bf3cea --- /dev/null +++ b/docs/dom3-api/inherit__graph__2.md5 @@ -0,0 +1 @@ +6d9c313cdff28a3c2fc25d9f119c8cba \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__2.png b/docs/dom3-api/inherit__graph__2.png new file mode 100644 index 00000000..882e9e2c Binary files /dev/null and b/docs/dom3-api/inherit__graph__2.png differ diff --git a/docs/dom3-api/inherit__graph__20.map b/docs/dom3-api/inherit__graph__20.map new file mode 100644 index 00000000..30778640 --- /dev/null +++ b/docs/dom3-api/inherit__graph__20.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMWriter.html 9,8 150,32 diff --git a/docs/dom3-api/inherit__graph__20.md5 b/docs/dom3-api/inherit__graph__20.md5 new file mode 100644 index 00000000..a821cca9 --- /dev/null +++ b/docs/dom3-api/inherit__graph__20.md5 @@ -0,0 +1 @@ +239341f97237b1e274554009b159b651 \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__20.png b/docs/dom3-api/inherit__graph__20.png new file mode 100644 index 00000000..f7236e2d Binary files /dev/null and b/docs/dom3-api/inherit__graph__20.png differ diff --git a/docs/dom3-api/inherit__graph__21.map b/docs/dom3-api/inherit__graph__21.map new file mode 100644 index 00000000..969d37ed --- /dev/null +++ b/docs/dom3-api/inherit__graph__21.map @@ -0,0 +1,19 @@ +base referer +rect $classxercesc_1_1DOMDocumentRange.html 15,8 223,32 +rect $classxercesc_1_1DOMDocument.html 314,56 482,80 +rect $classxercesc_1_1DOMDocumentTraversal.html 9,56 230,80 +rect $classxercesc_1_1DOMNode.html 50,296 189,320 +rect $classxercesc_1_1DOMAttr.html 334,104 462,128 +rect $classxercesc_1_1DOMCharacterData.html 301,152 495,176 +rect $classxercesc_1_1DOMDocumentFragment.html 286,200 510,224 +rect $classxercesc_1_1DOMDocumentType.html 299,248 497,272 +rect $classxercesc_1_1DOMElement.html 319,296 477,320 +rect $classxercesc_1_1DOMEntity.html 327,344 469,368 +rect $classxercesc_1_1DOMEntityReference.html 297,392 499,416 +rect $classxercesc_1_1DOMNotation.html 319,440 477,464 +rect $classxercesc_1_1DOMProcessingInstruction.html 281,488 515,512 +rect $classxercesc_1_1DOMXPathNamespace.html 291,536 505,560 +rect $classxercesc_1_1DOMComment.html 565,128 730,152 +rect $classxercesc_1_1DOMText.html 582,176 713,200 +rect $classxercesc_1_1DOMCDATASection.html 778,176 973,200 +rect $classxercesc_1_1DOMXPathEvaluator.html 19,104 219,128 diff --git a/docs/dom3-api/inherit__graph__21.md5 b/docs/dom3-api/inherit__graph__21.md5 new file mode 100644 index 00000000..dba76504 --- /dev/null +++ b/docs/dom3-api/inherit__graph__21.md5 @@ -0,0 +1 @@ +8f2508f6e8d211b7487e5d1e868c935a \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__21.png b/docs/dom3-api/inherit__graph__21.png new file mode 100644 index 00000000..dcd45645 Binary files /dev/null and b/docs/dom3-api/inherit__graph__21.png differ diff --git a/docs/dom3-api/inherit__graph__22.map b/docs/dom3-api/inherit__graph__22.map new file mode 100644 index 00000000..2cc5c3a6 --- /dev/null +++ b/docs/dom3-api/inherit__graph__22.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMXPathException.html 8,8 210,32 diff --git a/docs/dom3-api/inherit__graph__22.md5 b/docs/dom3-api/inherit__graph__22.md5 new file mode 100644 index 00000000..7ee8da27 --- /dev/null +++ b/docs/dom3-api/inherit__graph__22.md5 @@ -0,0 +1 @@ +01346771fa9e87ef6bb32450cb00fa96 \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__22.png b/docs/dom3-api/inherit__graph__22.png new file mode 100644 index 00000000..84cb340f Binary files /dev/null and b/docs/dom3-api/inherit__graph__22.png differ diff --git a/docs/dom3-api/inherit__graph__23.map b/docs/dom3-api/inherit__graph__23.map new file mode 100644 index 00000000..c8fdacd2 --- /dev/null +++ b/docs/dom3-api/inherit__graph__23.map @@ -0,0 +1,3 @@ +base referer +rect $classxercesc_1_1DOMXPathExpression.html 8,8 218,32 +rect $classXQillaExpression.html 268,8 390,32 diff --git a/docs/dom3-api/inherit__graph__23.md5 b/docs/dom3-api/inherit__graph__23.md5 new file mode 100644 index 00000000..6edef974 --- /dev/null +++ b/docs/dom3-api/inherit__graph__23.md5 @@ -0,0 +1 @@ +ee1b6a78102f19cceed2ad3f5a4e251d \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__23.png b/docs/dom3-api/inherit__graph__23.png new file mode 100644 index 00000000..b428d53b Binary files /dev/null and b/docs/dom3-api/inherit__graph__23.png differ diff --git a/docs/dom3-api/inherit__graph__24.map b/docs/dom3-api/inherit__graph__24.map new file mode 100644 index 00000000..660a8460 --- /dev/null +++ b/docs/dom3-api/inherit__graph__24.map @@ -0,0 +1,3 @@ +base referer +rect $classxercesc_1_1DOMXPathNSResolver.html 9,8 222,32 +rect $classXQillaNSResolver.html 273,8 401,32 diff --git a/docs/dom3-api/inherit__graph__24.md5 b/docs/dom3-api/inherit__graph__24.md5 new file mode 100644 index 00000000..12e55f4a --- /dev/null +++ b/docs/dom3-api/inherit__graph__24.md5 @@ -0,0 +1 @@ +2d6160b72648c02a824062ab953476bc \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__24.png b/docs/dom3-api/inherit__graph__24.png new file mode 100644 index 00000000..8439e57b Binary files /dev/null and b/docs/dom3-api/inherit__graph__24.png differ diff --git a/docs/dom3-api/inherit__graph__25.map b/docs/dom3-api/inherit__graph__25.map new file mode 100644 index 00000000..de92d135 --- /dev/null +++ b/docs/dom3-api/inherit__graph__25.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMXPathResult.html 7,8 189,32 diff --git a/docs/dom3-api/inherit__graph__25.md5 b/docs/dom3-api/inherit__graph__25.md5 new file mode 100644 index 00000000..c3e5b50c --- /dev/null +++ b/docs/dom3-api/inherit__graph__25.md5 @@ -0,0 +1 @@ +90a6a22c99e84333dbd64a0ab6ab57f4 \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__25.png b/docs/dom3-api/inherit__graph__25.png new file mode 100644 index 00000000..a54f983f Binary files /dev/null and b/docs/dom3-api/inherit__graph__25.png differ diff --git a/docs/dom3-api/inherit__graph__26.map b/docs/dom3-api/inherit__graph__26.map new file mode 100644 index 00000000..85d5e9b6 --- /dev/null +++ b/docs/dom3-api/inherit__graph__26.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1MemoryManager.html 8,8 186,32 diff --git a/docs/dom3-api/inherit__graph__26.md5 b/docs/dom3-api/inherit__graph__26.md5 new file mode 100644 index 00000000..c000ab5e --- /dev/null +++ b/docs/dom3-api/inherit__graph__26.md5 @@ -0,0 +1 @@ +329404e03bc61d416eed702fe46f827b \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__26.png b/docs/dom3-api/inherit__graph__26.png new file mode 100644 index 00000000..7cab8de8 Binary files /dev/null and b/docs/dom3-api/inherit__graph__26.png differ diff --git a/docs/dom3-api/inherit__graph__27.map b/docs/dom3-api/inherit__graph__27.map new file mode 100644 index 00000000..005f9dba --- /dev/null +++ b/docs/dom3-api/inherit__graph__27.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1StDOMNode.html 8,8 192,32 diff --git a/docs/dom3-api/inherit__graph__27.md5 b/docs/dom3-api/inherit__graph__27.md5 new file mode 100644 index 00000000..a5622377 --- /dev/null +++ b/docs/dom3-api/inherit__graph__27.md5 @@ -0,0 +1 @@ +92f1e3f1f63cb10e37ded1f4ceff4bcb \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__27.png b/docs/dom3-api/inherit__graph__27.png new file mode 100644 index 00000000..077158ad Binary files /dev/null and b/docs/dom3-api/inherit__graph__27.png differ diff --git a/docs/dom3-api/inherit__graph__28.map b/docs/dom3-api/inherit__graph__28.map new file mode 100644 index 00000000..a3a78fcb --- /dev/null +++ b/docs/dom3-api/inherit__graph__28.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1XMLDeleter.html 8,8 154,32 diff --git a/docs/dom3-api/inherit__graph__28.md5 b/docs/dom3-api/inherit__graph__28.md5 new file mode 100644 index 00000000..8f601bab --- /dev/null +++ b/docs/dom3-api/inherit__graph__28.md5 @@ -0,0 +1 @@ +1e8c00e4086e8ac04962b86dc5c277d3 \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__28.png b/docs/dom3-api/inherit__graph__28.png new file mode 100644 index 00000000..ff534a33 Binary files /dev/null and b/docs/dom3-api/inherit__graph__28.png differ diff --git a/docs/dom3-api/inherit__graph__29.map b/docs/dom3-api/inherit__graph__29.map new file mode 100644 index 00000000..447b71f2 --- /dev/null +++ b/docs/dom3-api/inherit__graph__29.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1XMLPlatformUtils.html 9,8 187,32 diff --git a/docs/dom3-api/inherit__graph__29.md5 b/docs/dom3-api/inherit__graph__29.md5 new file mode 100644 index 00000000..d56e3b64 --- /dev/null +++ b/docs/dom3-api/inherit__graph__29.md5 @@ -0,0 +1 @@ +8e467adf9e37a74aff188c7e8f32033d \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__29.png b/docs/dom3-api/inherit__graph__29.png new file mode 100644 index 00000000..d460d939 Binary files /dev/null and b/docs/dom3-api/inherit__graph__29.png differ diff --git a/docs/dom3-api/inherit__graph__3.map b/docs/dom3-api/inherit__graph__3.map new file mode 100644 index 00000000..f4a35241 --- /dev/null +++ b/docs/dom3-api/inherit__graph__3.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMError.html 9,8 145,32 diff --git a/docs/dom3-api/inherit__graph__3.md5 b/docs/dom3-api/inherit__graph__3.md5 new file mode 100644 index 00000000..70fbdcfb --- /dev/null +++ b/docs/dom3-api/inherit__graph__3.md5 @@ -0,0 +1 @@ +b4d8064dea05a6e833e685f163b8d107 \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__3.png b/docs/dom3-api/inherit__graph__3.png new file mode 100644 index 00000000..2500f390 Binary files /dev/null and b/docs/dom3-api/inherit__graph__3.png differ diff --git a/docs/dom3-api/inherit__graph__30.map b/docs/dom3-api/inherit__graph__30.map new file mode 100644 index 00000000..8544f2c0 --- /dev/null +++ b/docs/dom3-api/inherit__graph__30.map @@ -0,0 +1,2 @@ +base referer +rect $classXPath2Result.html 9,8 113,32 diff --git a/docs/dom3-api/inherit__graph__30.md5 b/docs/dom3-api/inherit__graph__30.md5 new file mode 100644 index 00000000..063526a3 --- /dev/null +++ b/docs/dom3-api/inherit__graph__30.md5 @@ -0,0 +1 @@ +0d9ecbc53df5a1c209a64e03706efc29 \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__30.png b/docs/dom3-api/inherit__graph__30.png new file mode 100644 index 00000000..5d64eb66 Binary files /dev/null and b/docs/dom3-api/inherit__graph__30.png differ diff --git a/docs/dom3-api/inherit__graph__31.map b/docs/dom3-api/inherit__graph__31.map new file mode 100644 index 00000000..32e6968b --- /dev/null +++ b/docs/dom3-api/inherit__graph__31.map @@ -0,0 +1,2 @@ +base referer +rect $classXQillaPlatformUtils.html 7,8 141,32 diff --git a/docs/dom3-api/inherit__graph__31.md5 b/docs/dom3-api/inherit__graph__31.md5 new file mode 100644 index 00000000..6e18b206 --- /dev/null +++ b/docs/dom3-api/inherit__graph__31.md5 @@ -0,0 +1 @@ +b371e85dc9562530c4f8b0bf93781d4d \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__31.png b/docs/dom3-api/inherit__graph__31.png new file mode 100644 index 00000000..60be8efc Binary files /dev/null and b/docs/dom3-api/inherit__graph__31.png differ diff --git a/docs/dom3-api/inherit__graph__4.map b/docs/dom3-api/inherit__graph__4.map new file mode 100644 index 00000000..4042c362 --- /dev/null +++ b/docs/dom3-api/inherit__graph__4.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMErrorHandler.html 8,8 192,32 diff --git a/docs/dom3-api/inherit__graph__4.md5 b/docs/dom3-api/inherit__graph__4.md5 new file mode 100644 index 00000000..19c1dd82 --- /dev/null +++ b/docs/dom3-api/inherit__graph__4.md5 @@ -0,0 +1 @@ +3a36cf547ab043d7afa344d7082ecf6a \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__4.png b/docs/dom3-api/inherit__graph__4.png new file mode 100644 index 00000000..f36caf15 Binary files /dev/null and b/docs/dom3-api/inherit__graph__4.png differ diff --git a/docs/dom3-api/inherit__graph__5.map b/docs/dom3-api/inherit__graph__5.map new file mode 100644 index 00000000..114575d9 --- /dev/null +++ b/docs/dom3-api/inherit__graph__5.map @@ -0,0 +1,3 @@ +base referer +rect $classxercesc_1_1DOMException.html 9,8 174,32 +rect $classxercesc_1_1DOMRangeException.html 223,8 429,32 diff --git a/docs/dom3-api/inherit__graph__5.md5 b/docs/dom3-api/inherit__graph__5.md5 new file mode 100644 index 00000000..2ba666cd --- /dev/null +++ b/docs/dom3-api/inherit__graph__5.md5 @@ -0,0 +1 @@ +d7d59b1f6c69bdeac62566767e2845e5 \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__5.png b/docs/dom3-api/inherit__graph__5.png new file mode 100644 index 00000000..60288b39 Binary files /dev/null and b/docs/dom3-api/inherit__graph__5.png differ diff --git a/docs/dom3-api/inherit__graph__6.map b/docs/dom3-api/inherit__graph__6.map new file mode 100644 index 00000000..b9e3d839 --- /dev/null +++ b/docs/dom3-api/inherit__graph__6.map @@ -0,0 +1,3 @@ +base referer +rect $classxercesc_1_1DOMImplementationLS.html 9,8 222,32 +rect $classxercesc_1_1DOMImplementation.html 273,8 470,32 diff --git a/docs/dom3-api/inherit__graph__6.md5 b/docs/dom3-api/inherit__graph__6.md5 new file mode 100644 index 00000000..30a55d06 --- /dev/null +++ b/docs/dom3-api/inherit__graph__6.md5 @@ -0,0 +1 @@ +2d05e80c5c296debefe32e6e1e14bb28 \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__6.png b/docs/dom3-api/inherit__graph__6.png new file mode 100644 index 00000000..377605bb Binary files /dev/null and b/docs/dom3-api/inherit__graph__6.png differ diff --git a/docs/dom3-api/inherit__graph__7.map b/docs/dom3-api/inherit__graph__7.map new file mode 100644 index 00000000..30bc08b8 --- /dev/null +++ b/docs/dom3-api/inherit__graph__7.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMImplementationRegistry.html 8,8 256,32 diff --git a/docs/dom3-api/inherit__graph__7.md5 b/docs/dom3-api/inherit__graph__7.md5 new file mode 100644 index 00000000..4a0d2158 --- /dev/null +++ b/docs/dom3-api/inherit__graph__7.md5 @@ -0,0 +1 @@ +79b0b71d61d6b379af01580a832c8caa \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__7.png b/docs/dom3-api/inherit__graph__7.png new file mode 100644 index 00000000..9b1c472a Binary files /dev/null and b/docs/dom3-api/inherit__graph__7.png differ diff --git a/docs/dom3-api/inherit__graph__8.map b/docs/dom3-api/inherit__graph__8.map new file mode 100644 index 00000000..56c1cd9d --- /dev/null +++ b/docs/dom3-api/inherit__graph__8.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMImplementationSource.html 9,8 249,32 diff --git a/docs/dom3-api/inherit__graph__8.md5 b/docs/dom3-api/inherit__graph__8.md5 new file mode 100644 index 00000000..3410e85a --- /dev/null +++ b/docs/dom3-api/inherit__graph__8.md5 @@ -0,0 +1 @@ +241b5b649248bbbf44616a59323cc149 \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__8.png b/docs/dom3-api/inherit__graph__8.png new file mode 100644 index 00000000..c8af503d Binary files /dev/null and b/docs/dom3-api/inherit__graph__8.png differ diff --git a/docs/dom3-api/inherit__graph__9.map b/docs/dom3-api/inherit__graph__9.map new file mode 100644 index 00000000..2fa5fbbc --- /dev/null +++ b/docs/dom3-api/inherit__graph__9.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMInputSource.html 9,8 187,32 diff --git a/docs/dom3-api/inherit__graph__9.md5 b/docs/dom3-api/inherit__graph__9.md5 new file mode 100644 index 00000000..fb342ee0 --- /dev/null +++ b/docs/dom3-api/inherit__graph__9.md5 @@ -0,0 +1 @@ +fa78ecdb27acc93840d4b2179a19c2cc \ No newline at end of file diff --git a/docs/dom3-api/inherit__graph__9.png b/docs/dom3-api/inherit__graph__9.png new file mode 100644 index 00000000..0d85bff4 Binary files /dev/null and b/docs/dom3-api/inherit__graph__9.png differ diff --git a/docs/dom3-api/inherits.html b/docs/dom3-api/inherits.html new file mode 100644 index 00000000..7a7e9e75 --- /dev/null +++ b/docs/dom3-api/inherits.html @@ -0,0 +1,180 @@ + + +XQilla DOM Level 3 API: Graphical Class Hierarchy + + + + + + +

XQilla DOM Level 3 API Graphical Class Hierarchy

Go to the textual class hierarchy +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + + +
+ + + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + + + + + + + + + + + + + + + + + + +
+ + +
+ + + +
+ + + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+


Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/namespacemembers.html b/docs/dom3-api/namespacemembers.html new file mode 100644 index 00000000..6bb6b086 --- /dev/null +++ b/docs/dom3-api/namespacemembers.html @@ -0,0 +1,39 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + +
+ +
+Here is a list of all namespace members with links to the namespace documentation for each member: +

+

+
Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/namespacemembers_func.html b/docs/dom3-api/namespacemembers_func.html new file mode 100644 index 00000000..aeb19c55 --- /dev/null +++ b/docs/dom3-api/namespacemembers_func.html @@ -0,0 +1,36 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + +
+ +
+  +

+

+
Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/namespacemembers_type.html b/docs/dom3-api/namespacemembers_type.html new file mode 100644 index 00000000..ab0dbaee --- /dev/null +++ b/docs/dom3-api/namespacemembers_type.html @@ -0,0 +1,38 @@ + + +XQilla DOM Level 3 API: Class Members + + + + + + +
+ +
+  +

+

+
Generated on Tue Dec 12 00:19:03 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/namespaces.html b/docs/dom3-api/namespaces.html new file mode 100644 index 00000000..0442801a --- /dev/null +++ b/docs/dom3-api/namespaces.html @@ -0,0 +1,27 @@ + + +XQilla DOM Level 3 API: Namespace Index + + + + + + +

XQilla DOM Level 3 API Namespace List

Here is a list of all namespaces with brief descriptions: + +
xercescThis class holds the list of registered DOMImplementations
+
Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/namespacexercesc.html b/docs/dom3-api/namespacexercesc.html new file mode 100644 index 00000000..85beaf1a --- /dev/null +++ b/docs/dom3-api/namespacexercesc.html @@ -0,0 +1,298 @@ + + +XQilla DOM Level 3 API: xercesc Namespace Reference + + + + + + +

xercesc Namespace Reference

This class holds the list of registered DOMImplementations. +More... +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Classes

class  MemoryManager
 Configurable memory manager. More...
class  XMLDeleter
class  XMLPlatformUtils
 Utilities that must be implemented in a platform-specific way. More...
class  DOMAttr
 The DOMAttr class refers to an attribute of an XML element. More...
class  DOMBuilder
 DOMBuilder provides an API for parsing XML documents and building the corresponding DOM document tree. More...
class  DOMCDATASection
 CDATA sections are used to escape blocks of text containing characters that would otherwise be regarded as markup. More...
class  DOMCharacterData
 The DOMCharacterData interface extends DOMNode with a set of attributes and methods for accessing character data in the DOM. More...
class  DOMComment
 This interface inherits from CharacterData and represents the content of a comment, i.e., all the characters between the starting ' <!--' and ending '-->'. More...
class  DOMConfiguration
 The DOMConfiguration interface represents the configuration of a document and maintains a table of recognized parameters. More...
class  DOMDocument
 The DOMDocument interface represents the entire XML document. More...
class  DOMDocumentFragment
 DOMDocumentFragment is a "lightweight" or "minimal" DOMDocument object. More...
class  DOMDocumentRange
class  DOMDocumentTraversal
 DOMDocumentTraversal contains methods that create DOMNodeIterators and DOMTreeWalkers to traverse a node and its children in document order (depth first, pre-order traversal, which is equivalent to the order in which the start tags occur in the text representation of the document). More...
class  DOMDocumentType
 Each DOMDocument has a doctype attribute whose value is either null or a DOMDocumentType object. More...
class  DOMElement
 By far the vast majority of objects (apart from text) that authors encounter when traversing a document are DOMElement nodes. More...
class  DOMEntity
 This interface represents an entity, either parsed or unparsed, in an XML document. More...
class  DOMEntityReference
 DOMEntityReference objects may be inserted into the structure model when an entity reference is in the source document, or when the user wishes to insert an entity reference. More...
class  DOMEntityResolver
 DOMEntityResolver provides a way for applications to redirect references to external entities. More...
class  DOMError
 DOMError is an interface that describes an error. More...
class  DOMErrorHandler
 Basic interface for DOM error handlers. More...
class  DOMException
class  DOMImplementation
 The DOMImplementation interface provides a number of methods for performing operations that are independent of any particular instance of the document object model. More...
class  DOMImplementationLS
class  DOMImplementationRegistry
class  DOMImplementationSource
class  DOMInputSource
 This interface represents a single input source for an XML entity. More...
class  DOMLocator
 DOMLocator is an interface that describes a location. More...
class  DOMNamedNodeMap
 DOMNamedNodeMaps are used to represent collections of nodes that can be accessed by name. More...
class  DOMNode
 The DOMNode interface is the primary datatype for the entire Document Object Model. More...
class  DOMNodeFilter
 Filters are objects that know how to "filter out" nodes. More...
class  DOMNodeIterator
 DOMNodeIterators are used to step through a set of nodes, e.g. More...
class  DOMNodeList
 The DOMNodeList interface provides the abstraction of an ordered collection of nodes. More...
class  DOMNotation
 This interface represents a notation declared in the DTD. More...
class  DOMProcessingInstruction
 The DOMProcessingInstruction interface represents a "processing instruction", used in XML as a way to keep processor-specific information in the text of the document. More...
class  DOMPSVITypeInfo
 The DOMPSVITypeInfo interface represent the PSVI info used by DOMElement or DOMAttr nodes, specified in the schemas associated with the document. More...
class  DOMRange
class  DOMRangeException
 Range operations may throw a DOMRangeException as specified in their method descriptions. More...
class  DOMText
 The DOMText interface inherits from DOMCharacterData and represents the textual content (termed character data in XML) of an DOMElement or DOMAttr. More...
class  DOMTreeWalker
 DOMTreeWalker objects are used to navigate a document tree or subtree using the view of the document defined by their whatToShow flags and filter (if any). More...
class  DOMTypeInfo
 The DOMTypeInfo interface represent a type used by DOMElement or DOMAttr nodes, specified in the schemas associated with the document. More...
class  DOMUserDataHandler
 When associating an object to a key on a node using setUserData the application can provide a handler that gets called when the node the object is associated to is being cloned or imported. More...
class  DOMWriter
class  DOMWriterFilter
class  DOMXPathEvaluator
 The evaluation of XPath expressions is provided by DOMXPathEvaluator. More...
class  DOMXPathException
class  DOMXPathExpression
 The DOMXPathExpression interface represents a parsed and resolved XPath expression. More...
class  DOMXPathNamespace
 The DOMXPathNamespace interface is returned by DOMXPathResult interfaces to represent the XPath namespace node type that DOM lacks. More...
class  DOMXPathNSResolver
 The DOMXPathNSResolver interface permit prefix strings in the expression to be properly bound to namespaceURI strings. More...
class  DOMXPathResult
 The DOMXPathResult interface represents the result of the evaluation of an XPath 1.0 expression within the context of a particular node. More...
class  StDOMNode

Typedefs

typedef DOMNodeDOMNodeSPtr
typedef DOMAttrDOMAttrSPtr
typedef DOMElementDOMElementSPtr

Functions

 MakeXMLException (XMLPlatformUtilsException, XMLUTIL_EXPORT) inline size_t XMLPlatformUtils
+


Detailed Description

+This class holds the list of registered DOMImplementations. +

+Implementation or application can register DOMImplementationSource to the registry, and then can query DOMImplementation based on a list of requested features.

+This provides an application with an implementation independent starting point.

+

See also:
DOMImplementation

+DOMImplementationSource

+
Since:
DOM Level 3
+ +

+


Typedef Documentation

+

+ + + + +
+ + + + +
typedef DOMAttr* xercesc::DOMAttrSPtr
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
typedef DOMElement* xercesc::DOMElementSPtr
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
typedef DOMNode* xercesc::DOMNodeSPtr
+
+ + + + + +
+   + + +

+

+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
xercesc::MakeXMLException XMLPlatformUtilsException ,
XMLUTIL_EXPORT 
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:19:01 2006 for XQilla DOM Level 3 API by  + +doxygen 1.4.6
+ + diff --git a/docs/dom3-api/tab_b.gif b/docs/dom3-api/tab_b.gif new file mode 100644 index 00000000..0d623483 Binary files /dev/null and b/docs/dom3-api/tab_b.gif differ diff --git a/docs/dom3-api/tab_l.gif b/docs/dom3-api/tab_l.gif new file mode 100644 index 00000000..9b1e6337 Binary files /dev/null and b/docs/dom3-api/tab_l.gif differ diff --git a/docs/dom3-api/tab_r.gif b/docs/dom3-api/tab_r.gif new file mode 100644 index 00000000..ce9dd9f5 Binary files /dev/null and b/docs/dom3-api/tab_r.gif differ diff --git a/docs/dom3-api/tabs.css b/docs/dom3-api/tabs.css new file mode 100644 index 00000000..a61552a6 --- /dev/null +++ b/docs/dom3-api/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI#current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI#current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/docs/simple-api/ATAnySimpleType_8hpp-source.html b/docs/simple-api/ATAnySimpleType_8hpp-source.html new file mode 100644 index 00000000..1361e85d --- /dev/null +++ b/docs/simple-api/ATAnySimpleType_8hpp-source.html @@ -0,0 +1,71 @@ + + +XQilla Simple API: ATAnySimpleType.hpp Source File + + + + + + +

ATAnySimpleType.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ATAnySimpleType.hpp,v 1.7 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ATANYSIMPLETYPE_HPP
+00015 #define _ATANYSIMPLETYPE_HPP
+00016 
+00017 #include <xercesc/util/XercesDefs.hpp>
+00018 #include <xqilla/framework/XQillaExport.hpp>
+00019 #include <xqilla/items/AnyAtomicType.hpp>
+00020 
+00021 class DynamicContext;
+00022 
+00027 class XQILLA_API ATAnySimpleType : public AnyAtomicType
+00028 {
+00029 
+00030 public:
+00031   /* Get the name of the primitive type (basic type) of this type
+00032    * (ie "decimal" for xs:decimal) */
+00033   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00034 
+00035   /* Get the namespace URI for this type */
+00036   virtual const XMLCh* getTypeURI() const = 0;
+00037 
+00038   /* Get the name of this type  (ie "integer" for xs:integer) */
+00039   virtual const XMLCh* getTypeName() const = 0;
+00040 
+00041   /* returns the XMLCh* (canonical) representation of this type */
+00042   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00043 
+00044   /* returns true if the two objects' URI are equal (string comparison)
+00045    * false otherwise */
+00046   virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0;
+00047 
+00048   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00049 };
+00050 
+00051 #endif //  _ATANYSIMPLETYPE_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATAnySimpleType_8hpp.html b/docs/simple-api/ATAnySimpleType_8hpp.html new file mode 100644 index 00000000..5c88cc2c --- /dev/null +++ b/docs/simple-api/ATAnySimpleType_8hpp.html @@ -0,0 +1,43 @@ + + +XQilla Simple API: ATAnySimpleType.hpp File Reference + + + + + + +

ATAnySimpleType.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/AnyAtomicType.hpp>
+ +

+Include dependency graph for ATAnySimpleType.hpp:

+ + + + + +

+Go to the source code of this file. + + + + + +

Classes

class  ATAnySimpleType
 This class represents the atomic types (ie, the simple types which are not list or union types) with type annotation xs:anySimpleType. More...
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATAnySimpleType_8hpp__incl.map b/docs/simple-api/ATAnySimpleType_8hpp__incl.map new file mode 100644 index 00000000..6aa9eaa6 --- /dev/null +++ b/docs/simple-api/ATAnySimpleType_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $AnyAtomicType_8hpp.html 213,109 424,133 +rect $Item_8hpp.html 472,109 616,133 diff --git a/docs/simple-api/ATAnySimpleType_8hpp__incl.md5 b/docs/simple-api/ATAnySimpleType_8hpp__incl.md5 new file mode 100644 index 00000000..88672ccb --- /dev/null +++ b/docs/simple-api/ATAnySimpleType_8hpp__incl.md5 @@ -0,0 +1 @@ +44ae58fef9901cec22836a087b0dcc6b \ No newline at end of file diff --git a/docs/simple-api/ATAnySimpleType_8hpp__incl.png b/docs/simple-api/ATAnySimpleType_8hpp__incl.png new file mode 100644 index 00000000..ae64df4f Binary files /dev/null and b/docs/simple-api/ATAnySimpleType_8hpp__incl.png differ diff --git a/docs/simple-api/ATAnyURIOrDerived_8hpp-source.html b/docs/simple-api/ATAnyURIOrDerived_8hpp-source.html new file mode 100644 index 00000000..9591eaa5 --- /dev/null +++ b/docs/simple-api/ATAnyURIOrDerived_8hpp-source.html @@ -0,0 +1,70 @@ + + +XQilla Simple API: ATAnyURIOrDerived.hpp Source File + + + + + + +

ATAnyURIOrDerived.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ATAnyURIOrDerived.hpp,v 1.7 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ATANYURIORDERIVED_HPP
+00015 #define _ATANYURIORDERIVED_HPP
+00016 
+00017 #include <xercesc/util/XercesDefs.hpp>
+00018 #include <xqilla/framework/XQillaExport.hpp>
+00019 #include <xqilla/items/AnyAtomicType.hpp>
+00020 
+00021 class DynamicContext;
+00022 
+00023 class XQILLA_API ATAnyURIOrDerived : public AnyAtomicType
+00024 {
+00025 public:
+00026   /* Get the name of the primitive type (basic type) of this type
+00027    * (ie "decimal" for xs:decimal) */
+00028   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00029 
+00030   /* Get the namespace URI for this type */
+00031   virtual const XMLCh* getTypeURI() const = 0;
+00032 
+00033   /* Get the name of this type  (ie "integer" for xs:integer) */
+00034   virtual const XMLCh* getTypeName() const = 0;
+00035 
+00036   /* returns the XMLCh* (canonical) representation of this type */
+00037   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00038 
+00039   /* returns true if the two objects' URI are equal (string comparison)
+00040    * false otherwise */
+00041   virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0;
+00042 
+00043   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00044 };
+00045 
+00046 #endif //  _ATANYURIORDERIVED_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATAnyURIOrDerived_8hpp.html b/docs/simple-api/ATAnyURIOrDerived_8hpp.html new file mode 100644 index 00000000..941accfb --- /dev/null +++ b/docs/simple-api/ATAnyURIOrDerived_8hpp.html @@ -0,0 +1,48 @@ + + +XQilla Simple API: ATAnyURIOrDerived.hpp File Reference + + + + + + +

ATAnyURIOrDerived.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/AnyAtomicType.hpp>
+ +

+Include dependency graph for ATAnyURIOrDerived.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + +

Classes

class  ATAnyURIOrDerived
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATAnyURIOrDerived_8hpp__dep__incl.map b/docs/simple-api/ATAnyURIOrDerived_8hpp__dep__incl.map new file mode 100644 index 00000000..4d7d7db3 --- /dev/null +++ b/docs/simple-api/ATAnyURIOrDerived_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $ItemFactory_8hpp.html 226,8 344,32 diff --git a/docs/simple-api/ATAnyURIOrDerived_8hpp__dep__incl.md5 b/docs/simple-api/ATAnyURIOrDerived_8hpp__dep__incl.md5 new file mode 100644 index 00000000..9e1509c1 --- /dev/null +++ b/docs/simple-api/ATAnyURIOrDerived_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +781aaf7cb4943718a10eab7a804b23d8 \ No newline at end of file diff --git a/docs/simple-api/ATAnyURIOrDerived_8hpp__dep__incl.png b/docs/simple-api/ATAnyURIOrDerived_8hpp__dep__incl.png new file mode 100644 index 00000000..e87009dd Binary files /dev/null and b/docs/simple-api/ATAnyURIOrDerived_8hpp__dep__incl.png differ diff --git a/docs/simple-api/ATAnyURIOrDerived_8hpp__incl.map b/docs/simple-api/ATAnyURIOrDerived_8hpp__incl.map new file mode 100644 index 00000000..78f6b931 --- /dev/null +++ b/docs/simple-api/ATAnyURIOrDerived_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $AnyAtomicType_8hpp.html 226,109 437,133 +rect $Item_8hpp.html 485,109 629,133 diff --git a/docs/simple-api/ATAnyURIOrDerived_8hpp__incl.md5 b/docs/simple-api/ATAnyURIOrDerived_8hpp__incl.md5 new file mode 100644 index 00000000..58f3d0e3 --- /dev/null +++ b/docs/simple-api/ATAnyURIOrDerived_8hpp__incl.md5 @@ -0,0 +1 @@ +a0a2297e948fae6046da4ee8daaa0eb0 \ No newline at end of file diff --git a/docs/simple-api/ATAnyURIOrDerived_8hpp__incl.png b/docs/simple-api/ATAnyURIOrDerived_8hpp__incl.png new file mode 100644 index 00000000..389e2de9 Binary files /dev/null and b/docs/simple-api/ATAnyURIOrDerived_8hpp__incl.png differ diff --git a/docs/simple-api/ATBase64BinaryOrDerived_8hpp-source.html b/docs/simple-api/ATBase64BinaryOrDerived_8hpp-source.html new file mode 100644 index 00000000..c48dc9af --- /dev/null +++ b/docs/simple-api/ATBase64BinaryOrDerived_8hpp-source.html @@ -0,0 +1,73 @@ + + +XQilla Simple API: ATBase64BinaryOrDerived.hpp Source File + + + + + + +

ATBase64BinaryOrDerived.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ATBase64BinaryOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ATBASE64BINARYORDERIVED_HPP
+00015 #define _ATBASE64BINARYORDERIVED_HPP
+00016 
+00017 #include <xercesc/util/XercesDefs.hpp>
+00018 #include <xqilla/items/AnyAtomicType.hpp>
+00019 
+00020 #include <xqilla/framework/XQillaExport.hpp>
+00021 
+00022 class DynamicContext;
+00023 
+00024 class XQILLA_API ATBase64BinaryOrDerived : public AnyAtomicType
+00025 {
+00026 public:
+00027   /* Get the name of the primitive type (basic type) of this type (ie "decimal" for xs:decimal) */
+00028   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00029 
+00030   /* Get the namespace URI for this type */
+00031   virtual const XMLCh* getTypeURI() const = 0;
+00032 
+00033   /* Get the name of this type  (ie "integer" for xs:integer) */
+00034   virtual const XMLCh* getTypeName() const = 0;
+00035 
+00036   /* returns the XMLCh* (canonical) representation of this type */
+00037   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00038 
+00039   /* returns true if the two objects' base 64 binary representation
+00040    *  are equal (string comparison) false otherwise */
+00041   virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0;
+00042 
+00045   virtual int compare(const ATBase64BinaryOrDerived::Ptr &other, const DynamicContext *context) const = 0;
+00046  
+00047 protected: 
+00048   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00049 };
+00050 
+00051 #endif //  _ATBASE64BINARYORDERIVED_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATBase64BinaryOrDerived_8hpp.html b/docs/simple-api/ATBase64BinaryOrDerived_8hpp.html new file mode 100644 index 00000000..e5c66abf --- /dev/null +++ b/docs/simple-api/ATBase64BinaryOrDerived_8hpp.html @@ -0,0 +1,42 @@ + + +XQilla Simple API: ATBase64BinaryOrDerived.hpp File Reference + + + + + + +

ATBase64BinaryOrDerived.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xqilla/items/AnyAtomicType.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+ +

+Include dependency graph for ATBase64BinaryOrDerived.hpp:

+ + + + + +

+Go to the source code of this file. + + + + +

Classes

class  ATBase64BinaryOrDerived
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATBase64BinaryOrDerived_8hpp__incl.map b/docs/simple-api/ATBase64BinaryOrDerived_8hpp__incl.map new file mode 100644 index 00000000..273d26b3 --- /dev/null +++ b/docs/simple-api/ATBase64BinaryOrDerived_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $AnyAtomicType_8hpp.html 264,109 474,133 +rect $Item_8hpp.html 522,109 666,133 diff --git a/docs/simple-api/ATBase64BinaryOrDerived_8hpp__incl.md5 b/docs/simple-api/ATBase64BinaryOrDerived_8hpp__incl.md5 new file mode 100644 index 00000000..5d83769a --- /dev/null +++ b/docs/simple-api/ATBase64BinaryOrDerived_8hpp__incl.md5 @@ -0,0 +1 @@ +dbb4bcaab1e3e191cb63f28d47c30192 \ No newline at end of file diff --git a/docs/simple-api/ATBase64BinaryOrDerived_8hpp__incl.png b/docs/simple-api/ATBase64BinaryOrDerived_8hpp__incl.png new file mode 100644 index 00000000..7eedc1cc Binary files /dev/null and b/docs/simple-api/ATBase64BinaryOrDerived_8hpp__incl.png differ diff --git a/docs/simple-api/ATBooleanOrDerived_8hpp-source.html b/docs/simple-api/ATBooleanOrDerived_8hpp-source.html new file mode 100644 index 00000000..e7e3615b --- /dev/null +++ b/docs/simple-api/ATBooleanOrDerived_8hpp-source.html @@ -0,0 +1,83 @@ + + +XQilla Simple API: ATBooleanOrDerived.hpp Source File + + + + + + +

ATBooleanOrDerived.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ATBooleanOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ATBOOLEANORDERIVED_HPP
+00015 #define _ATBOOLEANORDERIVED_HPP
+00016 
+00017 #include <xercesc/util/XercesDefs.hpp>
+00018 #include <xqilla/items/AnyAtomicType.hpp>
+00019 
+00020 #include <xqilla/framework/XQillaExport.hpp>
+00021 
+00022 class XPath2MemoryManager;
+00023 
+00024 class XQILLA_API ATBooleanOrDerived : public AnyAtomicType
+00025 {
+00026 public:
+00027   typedef RefCountPointer<const ATBooleanOrDerived> Ptr;
+00028 
+00029   /* Get the name of the primitive type (basic type) of this type 
+00030    * (ie "decimal" for xs:decimal) */
+00031   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00032 
+00033   /* Get the namespace URI for this type */
+00034   virtual const XMLCh* getTypeURI() const = 0;
+00035 
+00036   /* Get the name of this type  (ie "integer" for xs:integer) */
+00037   virtual const XMLCh* getTypeName() const = 0;
+00038 
+00039   /* returns the XMLCh* (canonical) representation of this type */
+00040   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00041 
+00042   /* returns true if the two objects have the same boolean value
+00043    * false otherwise */
+00044   virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0;
+00045 
+00048   virtual int compare(const ATBooleanOrDerived::Ptr &other, const DynamicContext *context) const = 0;
+00049   
+00050   /* returns true if boolean value evaluates to true
+00051    * false otherwise */
+00052   virtual bool isTrue() const = 0;
+00053 
+00054   /* returns false if boolean value evaluates to true
+00055    * true otherwise */
+00056   virtual bool isFalse() const = 0;
+00057 
+00058   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00059 };
+00060 
+00061 #endif //  _ATBOOLEANORDERIVED_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATBooleanOrDerived_8hpp.html b/docs/simple-api/ATBooleanOrDerived_8hpp.html new file mode 100644 index 00000000..5bacf100 --- /dev/null +++ b/docs/simple-api/ATBooleanOrDerived_8hpp.html @@ -0,0 +1,49 @@ + + +XQilla Simple API: ATBooleanOrDerived.hpp File Reference + + + + + + +

ATBooleanOrDerived.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xqilla/items/AnyAtomicType.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+ +

+Include dependency graph for ATBooleanOrDerived.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + +

+Go to the source code of this file. + + + + +

Classes

class  ATBooleanOrDerived
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATBooleanOrDerived_8hpp__dep__incl.map b/docs/simple-api/ATBooleanOrDerived_8hpp__dep__incl.map new file mode 100644 index 00000000..bab6b413 --- /dev/null +++ b/docs/simple-api/ATBooleanOrDerived_8hpp__dep__incl.map @@ -0,0 +1,3 @@ +base referer +rect $Node_8hpp.html 229,8 309,32 +rect $ItemFactory_8hpp.html 357,33 474,57 diff --git a/docs/simple-api/ATBooleanOrDerived_8hpp__dep__incl.md5 b/docs/simple-api/ATBooleanOrDerived_8hpp__dep__incl.md5 new file mode 100644 index 00000000..9b2c481a --- /dev/null +++ b/docs/simple-api/ATBooleanOrDerived_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +7ded479aba1d43d858141db49fafc793 \ No newline at end of file diff --git a/docs/simple-api/ATBooleanOrDerived_8hpp__dep__incl.png b/docs/simple-api/ATBooleanOrDerived_8hpp__dep__incl.png new file mode 100644 index 00000000..29f6ee96 Binary files /dev/null and b/docs/simple-api/ATBooleanOrDerived_8hpp__dep__incl.png differ diff --git a/docs/simple-api/ATBooleanOrDerived_8hpp__incl.map b/docs/simple-api/ATBooleanOrDerived_8hpp__incl.map new file mode 100644 index 00000000..939a7f2e --- /dev/null +++ b/docs/simple-api/ATBooleanOrDerived_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $AnyAtomicType_8hpp.html 229,109 440,133 +rect $Item_8hpp.html 488,109 632,133 diff --git a/docs/simple-api/ATBooleanOrDerived_8hpp__incl.md5 b/docs/simple-api/ATBooleanOrDerived_8hpp__incl.md5 new file mode 100644 index 00000000..e635f9a2 --- /dev/null +++ b/docs/simple-api/ATBooleanOrDerived_8hpp__incl.md5 @@ -0,0 +1 @@ +6b7ddf4dee9517b5bb3628180e488d39 \ No newline at end of file diff --git a/docs/simple-api/ATBooleanOrDerived_8hpp__incl.png b/docs/simple-api/ATBooleanOrDerived_8hpp__incl.png new file mode 100644 index 00000000..479183c4 Binary files /dev/null and b/docs/simple-api/ATBooleanOrDerived_8hpp__incl.png differ diff --git a/docs/simple-api/ATDateOrDerived_8hpp-source.html b/docs/simple-api/ATDateOrDerived_8hpp-source.html new file mode 100644 index 00000000..0c11e127 --- /dev/null +++ b/docs/simple-api/ATDateOrDerived_8hpp-source.html @@ -0,0 +1,103 @@ + + +XQilla Simple API: ATDateOrDerived.hpp Source File + + + + + + +

ATDateOrDerived.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ATDateOrDerived.hpp,v 1.9 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ATDATEORDERIVED_HPP
+00015 #define _ATDATEORDERIVED_HPP
+00016 
+00017 #include <xercesc/util/XMLString.hpp>
+00018 #include <xqilla/items/DateOrTimeType.hpp>
+00019 
+00020 #include <xqilla/framework/XQillaExport.hpp>
+00021 #include <xqilla/items/ATDecimalOrDerived.hpp>
+00022 #include <xqilla/items/ATDurationOrDerived.hpp>
+00023 #include <xqilla/items/Timezone.hpp>
+00024 
+00025 class XQILLA_API ATDateOrDerived : public DateOrTimeType
+00026 {
+00027 public:
+00028   typedef RefCountPointer<const ATDateOrDerived> Ptr;
+00029 
+00030   /* Get the name of the primitive type (basic type) of this type
+00031    * (ie "decimal" for xs:decimal) */
+00032   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00033 
+00034   /* Get the namespace URI for this type */
+00035   virtual const XMLCh* getTypeURI() const = 0;
+00036 
+00037   /* Get the name of this type  (ie "integer" for xs:integer) */
+00038   virtual const XMLCh* getTypeName() const = 0;
+00039 
+00040   /* returns the XMLCh* (lexical) representation of this type */
+00041   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00042 
+00043   /* returns true if the two objects represent the same date,
+00044    * false otherwise */
+00045   virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0;
+00046 
+00049   virtual int compare(const ATDateOrDerived::Ptr &other, const DynamicContext *context) const = 0;
+00050  
+00054   virtual ATDecimalOrDerived::Ptr getYears(const DynamicContext *context) const = 0;
+00055 
+00059   virtual ATDecimalOrDerived::Ptr getMonths(const DynamicContext *context) const = 0;
+00060 
+00064   virtual ATDecimalOrDerived::Ptr getDays(const DynamicContext *context) const = 0;
+00065 
+00069   virtual const Timezone::Ptr &getTimezone() const = 0;
+00070 
+00074   virtual bool hasTimezone() const = 0;
+00075 
+00080   virtual ATDateOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const = 0;
+00081 
+00085   virtual ATDateOrDerived::Ptr addTimezone(const ATDurationOrDerived::Ptr &timezone,
+00086                                            const DynamicContext* context) const = 0;
+00087 
+00091   virtual ATDateOrDerived::Ptr addYearMonthDuration(const ATDurationOrDerived::Ptr &yearMonth,
+00092                                                     const DynamicContext* context) const = 0;
+00093 
+00097   virtual ATDateOrDerived::Ptr addDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime,  const DynamicContext* context) const = 0;
+00098   
+00102   virtual ATDateOrDerived::Ptr subtractYearMonthDuration(const ATDurationOrDerived::Ptr &yearMonth,
+00103                                                          const DynamicContext* context) const = 0;
+00104 
+00108   virtual ATDateOrDerived::Ptr subtractDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime,
+00109                                                        const DynamicContext* context) const = 0;
+00114   virtual ATDurationOrDerived::Ptr subtractDate(const ATDateOrDerived::Ptr &date,  const DynamicContext* context) const = 0;
+00115 
+00116   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00117 };
+00118 
+00119 #endif //  _ATDATEORDERIVED_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATDateOrDerived_8hpp.html b/docs/simple-api/ATDateOrDerived_8hpp.html new file mode 100644 index 00000000..be93d0a2 --- /dev/null +++ b/docs/simple-api/ATDateOrDerived_8hpp.html @@ -0,0 +1,53 @@ + + +XQilla Simple API: ATDateOrDerived.hpp File Reference + + + + + + +

ATDateOrDerived.hpp File Reference

#include <xercesc/util/XMLString.hpp>
+#include <xqilla/items/DateOrTimeType.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/ATDecimalOrDerived.hpp>
+#include <xqilla/items/ATDurationOrDerived.hpp>
+#include <xqilla/items/Timezone.hpp>
+ +

+Include dependency graph for ATDateOrDerived.hpp:

+ + + + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + +

Classes

class  ATDateOrDerived
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATDateOrDerived_8hpp__dep__incl.map b/docs/simple-api/ATDateOrDerived_8hpp__dep__incl.map new file mode 100644 index 00000000..4cfbbc7e --- /dev/null +++ b/docs/simple-api/ATDateOrDerived_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $ItemFactory_8hpp.html 210,8 328,32 diff --git a/docs/simple-api/ATDateOrDerived_8hpp__dep__incl.md5 b/docs/simple-api/ATDateOrDerived_8hpp__dep__incl.md5 new file mode 100644 index 00000000..e300aae2 --- /dev/null +++ b/docs/simple-api/ATDateOrDerived_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +9815d4b586c270cc12627da9f3b7ca4c \ No newline at end of file diff --git a/docs/simple-api/ATDateOrDerived_8hpp__dep__incl.png b/docs/simple-api/ATDateOrDerived_8hpp__dep__incl.png new file mode 100644 index 00000000..12343b34 Binary files /dev/null and b/docs/simple-api/ATDateOrDerived_8hpp__dep__incl.png differ diff --git a/docs/simple-api/ATDateOrDerived_8hpp__incl.map b/docs/simple-api/ATDateOrDerived_8hpp__incl.map new file mode 100644 index 00000000..d8b0a901 --- /dev/null +++ b/docs/simple-api/ATDateOrDerived_8hpp__incl.map @@ -0,0 +1,5 @@ +base referer +rect $DateOrTimeType_8hpp.html 210,58 429,82 +rect $ATDecimalOrDerived_8hpp.html 770,159 1013,183 +rect $ATDurationOrDerived_8hpp.html 478,210 721,234 +rect $Timezone_8hpp.html 231,259 407,283 diff --git a/docs/simple-api/ATDateOrDerived_8hpp__incl.md5 b/docs/simple-api/ATDateOrDerived_8hpp__incl.md5 new file mode 100644 index 00000000..14d9bc07 --- /dev/null +++ b/docs/simple-api/ATDateOrDerived_8hpp__incl.md5 @@ -0,0 +1 @@ +e511111b76a67dd296aeb60d51989349 \ No newline at end of file diff --git a/docs/simple-api/ATDateOrDerived_8hpp__incl.png b/docs/simple-api/ATDateOrDerived_8hpp__incl.png new file mode 100644 index 00000000..63522603 Binary files /dev/null and b/docs/simple-api/ATDateOrDerived_8hpp__incl.png differ diff --git a/docs/simple-api/ATDateTimeOrDerived_8hpp-source.html b/docs/simple-api/ATDateTimeOrDerived_8hpp-source.html new file mode 100644 index 00000000..77128e8d --- /dev/null +++ b/docs/simple-api/ATDateTimeOrDerived_8hpp-source.html @@ -0,0 +1,109 @@ + + +XQilla Simple API: ATDateTimeOrDerived.hpp Source File + + + + + + +

ATDateTimeOrDerived.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ATDateTimeOrDerived.hpp,v 1.9 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ATDATETIMEORDERIVED_HPP
+00015 #define _ATDATETIMEORDERIVED_HPP
+00016 
+00017 #include <xercesc/util/XMLString.hpp>
+00018 #include <xqilla/items/DateOrTimeType.hpp>
+00019 
+00020 #include <xqilla/framework/XQillaExport.hpp>
+00021 #include <xqilla/items/ATDecimalOrDerived.hpp>
+00022 #include <xqilla/items/ATDurationOrDerived.hpp>
+00023 #include <xqilla/items/Timezone.hpp>
+00024 
+00025 class XQILLA_API ATDateTimeOrDerived : public DateOrTimeType
+00026 {
+00027 public:
+00028   typedef RefCountPointer<const ATDateTimeOrDerived> Ptr;
+00029 
+00030   /* Get the name of the primitive type (basic type) of this type
+00031    * (ie "decimal" for xs:decimal) */
+00032   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00033 
+00034   /* Get the namespace URI for this type */
+00035   virtual const XMLCh* getTypeURI() const = 0;
+00036 
+00037   /* Get the name of this type  (ie "integer" for xs:integer) */
+00038   virtual const XMLCh* getTypeName() const = 0;
+00039 
+00040   /* returns the XMLCh* (lexical) representation of this type */
+00041   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00042 
+00043   /* returns true if the two objects represent the same date,
+00044    * false otherwise */
+00045   virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0;
+00046 
+00049   virtual int compare(const ATDateTimeOrDerived::Ptr &other, const DynamicContext *context) const = 0;
+00050  
+00054   virtual ATDecimalOrDerived::Ptr getYears(const DynamicContext *context) const = 0;
+00055 
+00059   virtual ATDecimalOrDerived::Ptr getMonths(const DynamicContext *context) const = 0;
+00060 
+00064   virtual ATDecimalOrDerived::Ptr getDays(const DynamicContext *context) const = 0;
+00065 
+00069   virtual ATDecimalOrDerived::Ptr getHours(const DynamicContext *context) const = 0;
+00070 
+00074   virtual ATDecimalOrDerived::Ptr getMinutes(const DynamicContext *context) const = 0;
+00075 
+00079   virtual ATDecimalOrDerived::Ptr getSeconds(const DynamicContext *context) const = 0;
+00080 
+00084   virtual const Timezone::Ptr &getTimezone() const = 0;
+00085 
+00089   virtual bool hasTimezone() const = 0;
+00090 
+00095   virtual ATDateTimeOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const = 0;
+00096 
+00100   virtual ATDateTimeOrDerived::Ptr addTimezone(const ATDurationOrDerived::Ptr &timezone, const DynamicContext* context) const = 0;
+00101 
+00105   virtual ATDateTimeOrDerived::Ptr addYearMonthDuration(const ATDurationOrDerived::Ptr &yearMonth,  const DynamicContext* context) const = 0;
+00106 
+00110   virtual ATDateTimeOrDerived::Ptr addDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime,  const DynamicContext* context) const = 0;
+00111   
+00115   virtual ATDateTimeOrDerived::Ptr subtractYearMonthDuration(const ATDurationOrDerived::Ptr &yearMonth,  const DynamicContext* context) const = 0;
+00116 
+00120   virtual ATDateTimeOrDerived::Ptr subtractDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime,  const DynamicContext* context) const = 0;
+00121 
+00126   virtual ATDurationOrDerived::Ptr subtractDateTimeAsDayTimeDuration(const ATDateTimeOrDerived::Ptr &date,  const DynamicContext* context) const = 0;
+00127 
+00132   virtual ATDurationOrDerived::Ptr subtractDateTimeAsYearMonthDuration(const ATDateTimeOrDerived::Ptr &date, const DynamicContext* context) const = 0;
+00133 
+00134 
+00135   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00136 };
+00137 
+00138 #endif //  _ATDATETIMEORDERIVED_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATDateTimeOrDerived_8hpp.html b/docs/simple-api/ATDateTimeOrDerived_8hpp.html new file mode 100644 index 00000000..87b0f3f0 --- /dev/null +++ b/docs/simple-api/ATDateTimeOrDerived_8hpp.html @@ -0,0 +1,53 @@ + + +XQilla Simple API: ATDateTimeOrDerived.hpp File Reference + + + + + + +

ATDateTimeOrDerived.hpp File Reference

#include <xercesc/util/XMLString.hpp>
+#include <xqilla/items/DateOrTimeType.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/ATDecimalOrDerived.hpp>
+#include <xqilla/items/ATDurationOrDerived.hpp>
+#include <xqilla/items/Timezone.hpp>
+ +

+Include dependency graph for ATDateTimeOrDerived.hpp:

+ + + + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + +

Classes

class  ATDateTimeOrDerived
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATDateTimeOrDerived_8hpp__dep__incl.map b/docs/simple-api/ATDateTimeOrDerived_8hpp__dep__incl.map new file mode 100644 index 00000000..f323e027 --- /dev/null +++ b/docs/simple-api/ATDateTimeOrDerived_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $ItemFactory_8hpp.html 239,8 357,32 diff --git a/docs/simple-api/ATDateTimeOrDerived_8hpp__dep__incl.md5 b/docs/simple-api/ATDateTimeOrDerived_8hpp__dep__incl.md5 new file mode 100644 index 00000000..eaec7bf0 --- /dev/null +++ b/docs/simple-api/ATDateTimeOrDerived_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +26a5a4b74fdc4ed4f22b21a09c80d7e2 \ No newline at end of file diff --git a/docs/simple-api/ATDateTimeOrDerived_8hpp__dep__incl.png b/docs/simple-api/ATDateTimeOrDerived_8hpp__dep__incl.png new file mode 100644 index 00000000..e7a57e50 Binary files /dev/null and b/docs/simple-api/ATDateTimeOrDerived_8hpp__dep__incl.png differ diff --git a/docs/simple-api/ATDateTimeOrDerived_8hpp__incl.map b/docs/simple-api/ATDateTimeOrDerived_8hpp__incl.map new file mode 100644 index 00000000..fea295ec --- /dev/null +++ b/docs/simple-api/ATDateTimeOrDerived_8hpp__incl.map @@ -0,0 +1,5 @@ +base referer +rect $DateOrTimeType_8hpp.html 240,58 458,82 +rect $ATDecimalOrDerived_8hpp.html 800,159 1042,183 +rect $ATDurationOrDerived_8hpp.html 508,210 750,234 +rect $Timezone_8hpp.html 261,259 437,283 diff --git a/docs/simple-api/ATDateTimeOrDerived_8hpp__incl.md5 b/docs/simple-api/ATDateTimeOrDerived_8hpp__incl.md5 new file mode 100644 index 00000000..f6f13f4d --- /dev/null +++ b/docs/simple-api/ATDateTimeOrDerived_8hpp__incl.md5 @@ -0,0 +1 @@ +f95654f16d3394cef30f9222d8d724d3 \ No newline at end of file diff --git a/docs/simple-api/ATDateTimeOrDerived_8hpp__incl.png b/docs/simple-api/ATDateTimeOrDerived_8hpp__incl.png new file mode 100644 index 00000000..0bc4d244 Binary files /dev/null and b/docs/simple-api/ATDateTimeOrDerived_8hpp__incl.png differ diff --git a/docs/simple-api/ATDecimalOrDerived_8hpp-source.html b/docs/simple-api/ATDecimalOrDerived_8hpp-source.html new file mode 100644 index 00000000..b638b73e --- /dev/null +++ b/docs/simple-api/ATDecimalOrDerived_8hpp-source.html @@ -0,0 +1,111 @@ + + +XQilla Simple API: ATDecimalOrDerived.hpp Source File + + + + + + +

ATDecimalOrDerived.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ATDecimalOrDerived.hpp,v 1.11 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ATDECIMALORDERIVED_HPP
+00015 #define _ATDECIMALORDERIVED_HPP
+00016 
+00017 #include <xercesc/util/XercesDefs.hpp>
+00018 #include <xqilla/framework/XQillaExport.hpp>
+00019 #include <xqilla/items/Numeric.hpp>
+00020 
+00021 class DynamicContext;
+00022 class MAPM;
+00023 class XQILLA_API ATDecimalOrDerived : public Numeric
+00024 {
+00025 public:
+00026   typedef RefCountPointer<const ATDecimalOrDerived> Ptr;
+00027 
+00028   /* Get the name of the primitive type (basic type) of this type
+00029    * (ie "decimal" for xs:decimal) */
+00030   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00031 
+00032   /* Get the namespace URI for this type */
+00033   virtual const XMLCh* getTypeURI() const = 0;
+00034 
+00035   /* Get the name of this type  (ie "integer" for xs:integer) */
+00036   virtual const XMLCh* getTypeName() const = 0;
+00037 
+00038   /* returns the XMLCh* (canonical) representation of this type */
+00039   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00040 
+00041   /* Promote this to the given type, if possible */
+00042   virtual Numeric::Ptr promoteTypeIfApplicable(const XMLCh* typeURI, const XMLCh* typeName, const DynamicContext* context) const = 0;
+00043 
+00045   virtual Numeric::Ptr add(const Numeric::Ptr &other, const DynamicContext* context) const = 0;
+00046 
+00049   virtual Numeric::Ptr subtract(const Numeric::Ptr &other, const DynamicContext* context) const = 0;
+00050 
+00052   virtual Numeric::Ptr multiply(const Numeric::Ptr &other, const DynamicContext* context) const = 0;
+00053 
+00055   virtual Numeric::Ptr divide(const Numeric::Ptr &other, const DynamicContext* context) const = 0;
+00056 
+00058   virtual Numeric::Ptr mod(const Numeric::Ptr &other, const DynamicContext* context) const = 0;
+00059 
+00061   virtual Numeric::Ptr floor(const DynamicContext* context) const = 0;
+00062 
+00064   virtual Numeric::Ptr ceiling(const DynamicContext* context) const = 0;
+00065 
+00067   virtual Numeric::Ptr round(const DynamicContext* context) const = 0;
+00068 
+00070   virtual Numeric::Ptr roundHalfToEven(const Numeric::Ptr &precision, const DynamicContext* context) const = 0;
+00071 
+00073   virtual Numeric::Ptr invert(const DynamicContext* context) const = 0;
+00074 
+00076   virtual Numeric::Ptr abs(const DynamicContext* context) const = 0;
+00077 
+00079   virtual bool isZero() const = 0;
+00080 
+00082   virtual bool isNegative() const = 0;
+00083 
+00085   virtual bool isPositive() const = 0;
+00086 
+00087   /* Is this floating point value not a number? */
+00088   virtual bool isNaN() const { return false; }
+00089 
+00090   /* Is this floating point value infinite? */
+00091   virtual bool isInfinite() const { return false; }
+00092 
+00094   virtual XMLInt32 treatAsCodepoint(const DynamicContext* context) const = 0;
+00095 
+00096   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00097 
+00098   virtual const MAPM &asMAPM() const = 0;
+00099 
+00100   virtual State getState() const = 0;
+00101 };
+00102 
+00103 #endif //  _ATDECIMALORDERIVED_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATDecimalOrDerived_8hpp.html b/docs/simple-api/ATDecimalOrDerived_8hpp.html new file mode 100644 index 00000000..c828b75e --- /dev/null +++ b/docs/simple-api/ATDecimalOrDerived_8hpp.html @@ -0,0 +1,61 @@ + + +XQilla Simple API: ATDecimalOrDerived.hpp File Reference + + + + + + +

ATDecimalOrDerived.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/Numeric.hpp>
+ +

+Include dependency graph for ATDecimalOrDerived.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + + + + + + + + + + + + + +

+Go to the source code of this file. + + + + +

Classes

class  ATDecimalOrDerived
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATDecimalOrDerived_8hpp__dep__incl.map b/docs/simple-api/ATDecimalOrDerived_8hpp__dep__incl.map new file mode 100644 index 00000000..b6df7a71 --- /dev/null +++ b/docs/simple-api/ATDecimalOrDerived_8hpp__dep__incl.map @@ -0,0 +1,15 @@ +base referer +rect $Sequence_8hpp.html 264,32 370,56 +rect $ATDurationOrDerived_8hpp.html 229,317 405,341 +rect $ATDateOrDerived_8hpp.html 670,181 822,205 +rect $ItemFactory_8hpp.html 893,301 1010,325 +rect $ATDateTimeOrDerived_8hpp.html 656,517 837,541 +rect $ATTimeOrDerived_8hpp.html 669,565 824,589 +rect $DynamicContext_8hpp.html 454,365 598,389 +rect $Timezone_8hpp.html 473,317 580,341 +rect $ContextHelpers_8hpp.html 677,469 816,493 +rect $ATGDayOrDerived_8hpp.html 668,421 825,445 +rect $ATGMonthOrDerived_8hpp.html 661,229 832,253 +rect $ATGMonthDayOrDerived_8hpp.html 649,277 844,301 +rect $ATGYearMonthOrDerived_8hpp.html 648,325 845,349 +rect $ATGYearOrDerived_8hpp.html 666,373 826,397 diff --git a/docs/simple-api/ATDecimalOrDerived_8hpp__dep__incl.md5 b/docs/simple-api/ATDecimalOrDerived_8hpp__dep__incl.md5 new file mode 100644 index 00000000..d6a7b387 --- /dev/null +++ b/docs/simple-api/ATDecimalOrDerived_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +efd49c8c08fcde5c3310fc69fc0cdbb8 \ No newline at end of file diff --git a/docs/simple-api/ATDecimalOrDerived_8hpp__dep__incl.png b/docs/simple-api/ATDecimalOrDerived_8hpp__dep__incl.png new file mode 100644 index 00000000..63258dc0 Binary files /dev/null and b/docs/simple-api/ATDecimalOrDerived_8hpp__dep__incl.png differ diff --git a/docs/simple-api/ATDecimalOrDerived_8hpp__incl.map b/docs/simple-api/ATDecimalOrDerived_8hpp__incl.map new file mode 100644 index 00000000..baa8860f --- /dev/null +++ b/docs/simple-api/ATDecimalOrDerived_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $Numeric_8hpp.html 229,109 397,133 +rect $AnyAtomicType_8hpp.html 445,109 656,133 diff --git a/docs/simple-api/ATDecimalOrDerived_8hpp__incl.md5 b/docs/simple-api/ATDecimalOrDerived_8hpp__incl.md5 new file mode 100644 index 00000000..7d5bf5f8 --- /dev/null +++ b/docs/simple-api/ATDecimalOrDerived_8hpp__incl.md5 @@ -0,0 +1 @@ +dcd77e80018d6377cb6d81c2e2b9b865 \ No newline at end of file diff --git a/docs/simple-api/ATDecimalOrDerived_8hpp__incl.png b/docs/simple-api/ATDecimalOrDerived_8hpp__incl.png new file mode 100644 index 00000000..92b8cbdd Binary files /dev/null and b/docs/simple-api/ATDecimalOrDerived_8hpp__incl.png differ diff --git a/docs/simple-api/ATDoubleOrDerived_8hpp-source.html b/docs/simple-api/ATDoubleOrDerived_8hpp-source.html new file mode 100644 index 00000000..867ab55c --- /dev/null +++ b/docs/simple-api/ATDoubleOrDerived_8hpp-source.html @@ -0,0 +1,105 @@ + + +XQilla Simple API: ATDoubleOrDerived.hpp Source File + + + + + + +

ATDoubleOrDerived.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ATDoubleOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ATDOUBLEORDERIVED_HPP
+00015 #define _ATDOUBLEORDERIVED_HPP
+00016 
+00017 #include <xercesc/util/XercesDefs.hpp>
+00018 #include <xqilla/framework/XQillaExport.hpp>
+00019 #include <xqilla/items/Numeric.hpp>
+00020 
+00021 class XQILLA_API ATDoubleOrDerived : public Numeric
+00022 {
+00023 public:
+00024   typedef RefCountPointer<const ATDoubleOrDerived> Ptr;
+00025 
+00026   /* Get the name of the primitive type (basic type) of this type
+00027    * (ie "decimal" for xs:decimal) */
+00028   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00029 
+00030   /* Get the namespace URI for this type */
+00031   virtual const XMLCh* getTypeURI() const = 0;
+00032 
+00033   /* Get the name of this type  (ie "integer" for xs:integer) */
+00034   virtual const XMLCh* getTypeName() const = 0;
+00035 
+00036   /* returns the XMLCh* (canonical) representation of this type */
+00037   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00038   
+00039   /* Promote this to the given type, if possible */
+00040   virtual Numeric::Ptr promoteTypeIfApplicable(const XMLCh* typeURI, const XMLCh* typeName, const DynamicContext* context) const = 0;
+00041   
+00043   virtual Numeric::Ptr add(const Numeric::Ptr &other, const DynamicContext* context) const = 0;
+00044 
+00047   virtual Numeric::Ptr subtract(const Numeric::Ptr &other, const DynamicContext* context) const = 0;
+00048 
+00050   virtual Numeric::Ptr multiply(const Numeric::Ptr &other, const DynamicContext* context) const = 0;
+00051 
+00053   virtual Numeric::Ptr divide(const Numeric::Ptr &other, const DynamicContext* context) const = 0;
+00054 
+00056   virtual Numeric::Ptr mod(const Numeric::Ptr &other, const DynamicContext* context) const = 0;
+00057 
+00059   virtual Numeric::Ptr floor(const DynamicContext* context) const = 0;
+00060 
+00062   virtual Numeric::Ptr ceiling(const DynamicContext* context) const = 0;
+00063 
+00065   virtual Numeric::Ptr round(const DynamicContext* context) const = 0;
+00066 
+00068   virtual Numeric::Ptr roundHalfToEven(const Numeric::Ptr &precision, const DynamicContext* context) const = 0;
+00069   
+00071   virtual Numeric::Ptr invert(const DynamicContext* context) const = 0;
+00072 
+00074   virtual Numeric::Ptr abs(const DynamicContext* context) const = 0;
+00075   
+00076   /* Is this xs:double not a number */
+00077   virtual bool isNaN() const = 0;
+00078 
+00079   /* Is this xs:double infinite? */
+00080   virtual bool isInfinite() const = 0;
+00081 
+00083   virtual bool isZero() const = 0;
+00084 
+00086   virtual bool isPositive() const = 0;
+00087 
+00088   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00089 
+00090   virtual const MAPM &asMAPM() const = 0;
+00091 
+00092   virtual State getState() const = 0;
+00093 };
+00094 
+00095 #endif //  _ATDOUBLEORDERIVED_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATDoubleOrDerived_8hpp.html b/docs/simple-api/ATDoubleOrDerived_8hpp.html new file mode 100644 index 00000000..a55de6d6 --- /dev/null +++ b/docs/simple-api/ATDoubleOrDerived_8hpp.html @@ -0,0 +1,48 @@ + + +XQilla Simple API: ATDoubleOrDerived.hpp File Reference + + + + + + +

ATDoubleOrDerived.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/Numeric.hpp>
+ +

+Include dependency graph for ATDoubleOrDerived.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + +

Classes

class  ATDoubleOrDerived
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATDoubleOrDerived_8hpp__dep__incl.map b/docs/simple-api/ATDoubleOrDerived_8hpp__dep__incl.map new file mode 100644 index 00000000..601e2d62 --- /dev/null +++ b/docs/simple-api/ATDoubleOrDerived_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $ItemFactory_8hpp.html 223,8 341,32 diff --git a/docs/simple-api/ATDoubleOrDerived_8hpp__dep__incl.md5 b/docs/simple-api/ATDoubleOrDerived_8hpp__dep__incl.md5 new file mode 100644 index 00000000..df9efe64 --- /dev/null +++ b/docs/simple-api/ATDoubleOrDerived_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +a7d5bcc1107de20ffe16532b7e1f65f5 \ No newline at end of file diff --git a/docs/simple-api/ATDoubleOrDerived_8hpp__dep__incl.png b/docs/simple-api/ATDoubleOrDerived_8hpp__dep__incl.png new file mode 100644 index 00000000..ffa989c2 Binary files /dev/null and b/docs/simple-api/ATDoubleOrDerived_8hpp__dep__incl.png differ diff --git a/docs/simple-api/ATDoubleOrDerived_8hpp__incl.map b/docs/simple-api/ATDoubleOrDerived_8hpp__incl.map new file mode 100644 index 00000000..82f7e7d8 --- /dev/null +++ b/docs/simple-api/ATDoubleOrDerived_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $Numeric_8hpp.html 224,109 392,133 +rect $AnyAtomicType_8hpp.html 440,109 650,133 diff --git a/docs/simple-api/ATDoubleOrDerived_8hpp__incl.md5 b/docs/simple-api/ATDoubleOrDerived_8hpp__incl.md5 new file mode 100644 index 00000000..be9f3705 --- /dev/null +++ b/docs/simple-api/ATDoubleOrDerived_8hpp__incl.md5 @@ -0,0 +1 @@ +9a21dd048af7d12cff90b59797a09f03 \ No newline at end of file diff --git a/docs/simple-api/ATDoubleOrDerived_8hpp__incl.png b/docs/simple-api/ATDoubleOrDerived_8hpp__incl.png new file mode 100644 index 00000000..1c40890a Binary files /dev/null and b/docs/simple-api/ATDoubleOrDerived_8hpp__incl.png differ diff --git a/docs/simple-api/ATDurationOrDerived_8hpp-source.html b/docs/simple-api/ATDurationOrDerived_8hpp-source.html new file mode 100644 index 00000000..3acc6451 --- /dev/null +++ b/docs/simple-api/ATDurationOrDerived_8hpp-source.html @@ -0,0 +1,123 @@ + + +XQilla Simple API: ATDurationOrDerived.hpp Source File + + + + + + +

ATDurationOrDerived.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ATDurationOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ATDURATIONORDERIVED_HPP
+00015 #define _ATDURATIONORDERIVED_HPP
+00016 
+00017 #include <xercesc/util/XercesDefs.hpp>
+00018 
+00019 #include <xqilla/items/AnyAtomicType.hpp>
+00020 #include <xqilla/framework/XQillaExport.hpp>
+00021 #include <xqilla/items/ATDecimalOrDerived.hpp>
+00022 
+00023 class XPath2MemoryManager;
+00024 class DynamicContext;
+00025 
+00026 class XQILLA_API ATDurationOrDerived : public AnyAtomicType
+00027 {
+00028 public:
+00029   typedef RefCountPointer<const ATDurationOrDerived> Ptr;
+00030 
+00031   /* Get the name of the primitive type (basic type) of this type 
+00032    * (ie "decimal" for xs:decimal) */
+00033   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00034 
+00035   /* Get the namespace URI for this type */
+00036   virtual const XMLCh* getTypeURI() const = 0;
+00037 
+00038   /* Get the name of this type  (ie "integer" for xs:integer) */
+00039   virtual const XMLCh* getTypeName() const = 0;
+00040 
+00041   /* returns the XMLCh* (canonical) representation of this type */
+00042   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00043 
+00044   /* returns true if this duration is an instance of a xdt:dayTimeDuration */
+00045   virtual bool isDayTimeDuration() const = 0;
+00046 
+00047   /* returns true if this duration is an instance of a xdt:yearMonthDuration */
+00048   virtual bool isYearMonthDuration() const = 0;
+00049 
+00050   /* returns true if the two objects have the same duration
+00051    * false otherwise */
+00052   virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0;
+00053 
+00056   virtual int compare(const ATDurationOrDerived::Ptr &other, const DynamicContext *context) const = 0;
+00057   
+00060   virtual ATDurationOrDerived::Ptr divide(const Numeric::Ptr &divisor, const DynamicContext* context) const = 0;
+00061   
+00064   virtual ATDecimalOrDerived::Ptr divide(const ATDurationOrDerived::Ptr &divisor, const DynamicContext* context) const = 0;
+00065 
+00068   virtual ATDurationOrDerived::Ptr multiply(const Numeric::Ptr &divisor, const DynamicContext* context) const = 0;
+00069   
+00072   virtual ATDurationOrDerived::Ptr add(const ATDurationOrDerived::Ptr &other, const DynamicContext* context) const = 0;
+00073   
+00076   virtual ATDurationOrDerived::Ptr subtract(const ATDurationOrDerived::Ptr &other, const DynamicContext* context) const = 0;
+00077 
+00079   virtual ATDecimalOrDerived::Ptr getYears(const DynamicContext* context) const = 0;
+00080 
+00082   virtual ATDecimalOrDerived::Ptr getMonths(const DynamicContext* context) const = 0;
+00083 
+00085   virtual ATDecimalOrDerived::Ptr getDays(const DynamicContext* context) const = 0;
+00086 
+00088   virtual ATDecimalOrDerived::Ptr getHours(const DynamicContext* context) const = 0;
+00089 
+00091   virtual ATDecimalOrDerived::Ptr getMinutes(const DynamicContext* context) const = 0;
+00092 
+00094   virtual ATDecimalOrDerived::Ptr getSeconds(const DynamicContext* context) const = 0;
+00095 
+00096   /* return this duration in forms of seconds */
+00097   virtual ATDecimalOrDerived::Ptr asSeconds(const DynamicContext* context) const = 0;
+00098 
+00099   /* return this duration in forms of months */
+00100   virtual ATDecimalOrDerived::Ptr asMonths(const DynamicContext* context) const = 0;
+00101 
+00103   virtual bool isNegative() const = 0;
+00104 
+00105   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00106   
+00107   static const XMLCh fgDT_DAYTIMEDURATION[];
+00108   static const XMLCh fgDT_DAYTIMEDURATION_XERCESHASH[];
+00109   static const XMLCh pattern_DT_DAYTIMEDURATION[];
+00110  
+00111   static const XMLCh fgDT_YEARMONTHDURATION[];
+00112   static const XMLCh fgDT_YEARMONTHDURATION_XERCESHASH[];
+00113   static const XMLCh pattern_DT_YEARMONTHDURATION[];
+00114 };
+00115 
+00116 #endif //  _ATDURATIONORDERIVED_HPP
+00117 
+00118 
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATDurationOrDerived_8hpp.html b/docs/simple-api/ATDurationOrDerived_8hpp.html new file mode 100644 index 00000000..66264115 --- /dev/null +++ b/docs/simple-api/ATDurationOrDerived_8hpp.html @@ -0,0 +1,60 @@ + + +XQilla Simple API: ATDurationOrDerived.hpp File Reference + + + + + + +

ATDurationOrDerived.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xqilla/items/AnyAtomicType.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/ATDecimalOrDerived.hpp>
+ +

+Include dependency graph for ATDurationOrDerived.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + + + + + + + + + + + +

+Go to the source code of this file. + + + + +

Classes

class  ATDurationOrDerived
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATDurationOrDerived_8hpp__dep__incl.map b/docs/simple-api/ATDurationOrDerived_8hpp__dep__incl.map new file mode 100644 index 00000000..296f25dc --- /dev/null +++ b/docs/simple-api/ATDurationOrDerived_8hpp__dep__incl.map @@ -0,0 +1,13 @@ +base referer +rect $DynamicContext_8hpp.html 233,12 377,36 +rect $ATDateOrDerived_8hpp.html 449,110 601,134 +rect $ItemFactory_8hpp.html 671,254 789,278 +rect $Timezone_8hpp.html 251,254 358,278 +rect $ATDateTimeOrDerived_8hpp.html 434,158 615,182 +rect $ATTimeOrDerived_8hpp.html 447,446 602,470 +rect $ContextHelpers_8hpp.html 455,12 594,36 +rect $ATGDayOrDerived_8hpp.html 446,206 603,230 +rect $ATGMonthOrDerived_8hpp.html 439,254 610,278 +rect $ATGMonthDayOrDerived_8hpp.html 427,302 622,326 +rect $ATGYearMonthOrDerived_8hpp.html 426,350 623,374 +rect $ATGYearOrDerived_8hpp.html 445,398 605,422 diff --git a/docs/simple-api/ATDurationOrDerived_8hpp__dep__incl.md5 b/docs/simple-api/ATDurationOrDerived_8hpp__dep__incl.md5 new file mode 100644 index 00000000..0fe4b61c --- /dev/null +++ b/docs/simple-api/ATDurationOrDerived_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +f51f435f0636b47ce5bcb05fae7f72ae \ No newline at end of file diff --git a/docs/simple-api/ATDurationOrDerived_8hpp__dep__incl.png b/docs/simple-api/ATDurationOrDerived_8hpp__dep__incl.png new file mode 100644 index 00000000..9d37c769 Binary files /dev/null and b/docs/simple-api/ATDurationOrDerived_8hpp__dep__incl.png differ diff --git a/docs/simple-api/ATDurationOrDerived_8hpp__incl.map b/docs/simple-api/ATDurationOrDerived_8hpp__incl.map new file mode 100644 index 00000000..266774d8 --- /dev/null +++ b/docs/simple-api/ATDurationOrDerived_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $AnyAtomicType_8hpp.html 248,58 458,82 +rect $ATDecimalOrDerived_8hpp.html 232,106 474,130 diff --git a/docs/simple-api/ATDurationOrDerived_8hpp__incl.md5 b/docs/simple-api/ATDurationOrDerived_8hpp__incl.md5 new file mode 100644 index 00000000..207caabe --- /dev/null +++ b/docs/simple-api/ATDurationOrDerived_8hpp__incl.md5 @@ -0,0 +1 @@ +c21ad84163d218c248a017c9895ba838 \ No newline at end of file diff --git a/docs/simple-api/ATDurationOrDerived_8hpp__incl.png b/docs/simple-api/ATDurationOrDerived_8hpp__incl.png new file mode 100644 index 00000000..98313f85 Binary files /dev/null and b/docs/simple-api/ATDurationOrDerived_8hpp__incl.png differ diff --git a/docs/simple-api/ATFloatOrDerived_8hpp-source.html b/docs/simple-api/ATFloatOrDerived_8hpp-source.html new file mode 100644 index 00000000..c3b7cd9a --- /dev/null +++ b/docs/simple-api/ATFloatOrDerived_8hpp-source.html @@ -0,0 +1,105 @@ + + +XQilla Simple API: ATFloatOrDerived.hpp Source File + + + + + + +

ATFloatOrDerived.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ATFloatOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ATFLOATORDERIVED_HPP
+00015 #define _ATFLOATORDERIVED_HPP
+00016 
+00017 #include <xercesc/util/XercesDefs.hpp>
+00018 #include <xqilla/framework/XQillaExport.hpp>
+00019 #include <xqilla/items/Numeric.hpp>
+00020 
+00021 class XQILLA_API ATFloatOrDerived : public Numeric
+00022 {
+00023 public:
+00024   typedef RefCountPointer<const ATFloatOrDerived> Ptr;
+00025 
+00026   /* Get the name of the primitive type (basic type) of this type
+00027    * (ie "decimal" for xs:decimal) */
+00028   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00029 
+00030   /* Get the namespace URI for this type */
+00031   virtual const XMLCh* getTypeURI() const = 0;
+00032 
+00033   /* Get the name of this type  (ie "integer" for xs:integer) */
+00034   virtual const XMLCh* getTypeName() const = 0;
+00035 
+00036   /* returns the XMLCh* (canonical) representation of this type */
+00037   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00038 
+00039   /* Promote this to the given type, if possible */
+00040   virtual Numeric::Ptr promoteTypeIfApplicable(const XMLCh* typeURI, const XMLCh* typeName, const DynamicContext* context) const = 0;
+00041 
+00043   virtual Numeric::Ptr add(const Numeric::Ptr &other, const DynamicContext* context) const = 0;
+00044 
+00047   virtual Numeric::Ptr subtract(const Numeric::Ptr &other, const DynamicContext* context) const = 0;
+00048 
+00050   virtual Numeric::Ptr multiply(const Numeric::Ptr &other, const DynamicContext* context) const = 0;
+00051 
+00053   virtual Numeric::Ptr divide(const Numeric::Ptr &other, const DynamicContext* context) const = 0;
+00054 
+00056   virtual Numeric::Ptr mod(const Numeric::Ptr &other, const DynamicContext* context) const = 0;
+00057 
+00059   virtual Numeric::Ptr floor(const DynamicContext* context) const = 0;
+00060 
+00062   virtual Numeric::Ptr ceiling(const DynamicContext* context) const = 0;
+00063 
+00065   virtual Numeric::Ptr round(const DynamicContext* context) const = 0;
+00066 
+00068   virtual Numeric::Ptr roundHalfToEven(const Numeric::Ptr &precision, const DynamicContext* context) const = 0;
+00069 
+00071   virtual Numeric::Ptr invert(const DynamicContext* context) const = 0;
+00072   
+00073   /* Is this xs:double not a number */
+00074   virtual bool isNaN() const = 0;
+00075 
+00076   /* Is this xs:double infinite? */
+00077   virtual bool isInfinite() const = 0;
+00078 
+00080   virtual bool isZero() const = 0;
+00081 
+00083   virtual bool isPositive() const = 0;
+00084 
+00086   virtual bool isNegative() const = 0;  
+00087 
+00088   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00089 
+00090   virtual const MAPM &asMAPM() const = 0;
+00091 
+00092   virtual State getState() const = 0;
+00093 };
+00094 
+00095 #endif //  _ATFLOATORDERIVED_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATFloatOrDerived_8hpp.html b/docs/simple-api/ATFloatOrDerived_8hpp.html new file mode 100644 index 00000000..e5508821 --- /dev/null +++ b/docs/simple-api/ATFloatOrDerived_8hpp.html @@ -0,0 +1,48 @@ + + +XQilla Simple API: ATFloatOrDerived.hpp File Reference + + + + + + +

ATFloatOrDerived.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/Numeric.hpp>
+ +

+Include dependency graph for ATFloatOrDerived.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + +

Classes

class  ATFloatOrDerived
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATFloatOrDerived_8hpp__dep__incl.map b/docs/simple-api/ATFloatOrDerived_8hpp__dep__incl.map new file mode 100644 index 00000000..4cfbbc7e --- /dev/null +++ b/docs/simple-api/ATFloatOrDerived_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $ItemFactory_8hpp.html 210,8 328,32 diff --git a/docs/simple-api/ATFloatOrDerived_8hpp__dep__incl.md5 b/docs/simple-api/ATFloatOrDerived_8hpp__dep__incl.md5 new file mode 100644 index 00000000..3b6c2d28 --- /dev/null +++ b/docs/simple-api/ATFloatOrDerived_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +2e2503f0225e80d24bde1a006aedaa2f \ No newline at end of file diff --git a/docs/simple-api/ATFloatOrDerived_8hpp__dep__incl.png b/docs/simple-api/ATFloatOrDerived_8hpp__dep__incl.png new file mode 100644 index 00000000..cc9c748a Binary files /dev/null and b/docs/simple-api/ATFloatOrDerived_8hpp__dep__incl.png differ diff --git a/docs/simple-api/ATFloatOrDerived_8hpp__incl.map b/docs/simple-api/ATFloatOrDerived_8hpp__incl.map new file mode 100644 index 00000000..a1572178 --- /dev/null +++ b/docs/simple-api/ATFloatOrDerived_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $Numeric_8hpp.html 210,109 378,133 +rect $AnyAtomicType_8hpp.html 426,109 637,133 diff --git a/docs/simple-api/ATFloatOrDerived_8hpp__incl.md5 b/docs/simple-api/ATFloatOrDerived_8hpp__incl.md5 new file mode 100644 index 00000000..0f5d77de --- /dev/null +++ b/docs/simple-api/ATFloatOrDerived_8hpp__incl.md5 @@ -0,0 +1 @@ +89c4cf42c81c86cf86aa5af906b9b1bd \ No newline at end of file diff --git a/docs/simple-api/ATFloatOrDerived_8hpp__incl.png b/docs/simple-api/ATFloatOrDerived_8hpp__incl.png new file mode 100644 index 00000000..bb78d5d6 Binary files /dev/null and b/docs/simple-api/ATFloatOrDerived_8hpp__incl.png differ diff --git a/docs/simple-api/ATGDayOrDerived_8hpp-source.html b/docs/simple-api/ATGDayOrDerived_8hpp-source.html new file mode 100644 index 00000000..6765bda3 --- /dev/null +++ b/docs/simple-api/ATGDayOrDerived_8hpp-source.html @@ -0,0 +1,79 @@ + + +XQilla Simple API: ATGDayOrDerived.hpp Source File + + + + + + +

ATGDayOrDerived.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ATGDayOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ATGDAYORDERIVED_HPP
+00015 #define _ATGDAYORDERIVED_HPP
+00016 
+00017 #include <xercesc/util/XercesDefs.hpp>
+00018 #include <xqilla/framework/XQillaExport.hpp>
+00019 #include <xqilla/items/DateOrTimeType.hpp>
+00020 #include <xqilla/items/Timezone.hpp>
+00021 
+00022 class DynamicContext;
+00023 
+00024 class XQILLA_API ATGDayOrDerived : public DateOrTimeType
+00025 {
+00026 public:
+00027   typedef RefCountPointer<const ATGDayOrDerived> Ptr;
+00028 
+00029   /* Get the name of the primitive type (basic type) of this type
+00030    * (ie "decimal" for xs:decimal) */
+00031   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00032 
+00033   /* Get the namespace URI for this type */
+00034   virtual const XMLCh* getTypeURI() const = 0;
+00035 
+00036   /* Get the name of this type  (ie "integer" for xs:integer) */
+00037   virtual const XMLCh* getTypeName() const = 0;
+00038 
+00039   /* returns the XMLCh* (canonical) representation of this type */
+00040   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00041 
+00042   /* returns true if the two objects are equal 
+00043    * false otherwise */
+00044   virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0;
+00045 
+00048   virtual int compare(const ATGDayOrDerived::Ptr &other, const DynamicContext *context) const = 0;
+00049  
+00051   virtual bool hasTimezone() const = 0;
+00052 
+00054   virtual ATGDayOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const = 0;
+00055 
+00056   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00057 };
+00058 
+00059 #endif //  _ATGDAYORDERIVED_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATGDayOrDerived_8hpp.html b/docs/simple-api/ATGDayOrDerived_8hpp.html new file mode 100644 index 00000000..76910321 --- /dev/null +++ b/docs/simple-api/ATGDayOrDerived_8hpp.html @@ -0,0 +1,49 @@ + + +XQilla Simple API: ATGDayOrDerived.hpp File Reference + + + + + + +

ATGDayOrDerived.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/DateOrTimeType.hpp>
+#include <xqilla/items/Timezone.hpp>
+ +

+Include dependency graph for ATGDayOrDerived.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + +

Classes

class  ATGDayOrDerived
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATGDayOrDerived_8hpp__dep__incl.map b/docs/simple-api/ATGDayOrDerived_8hpp__dep__incl.map new file mode 100644 index 00000000..827d8553 --- /dev/null +++ b/docs/simple-api/ATGDayOrDerived_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $ItemFactory_8hpp.html 215,8 333,32 diff --git a/docs/simple-api/ATGDayOrDerived_8hpp__dep__incl.md5 b/docs/simple-api/ATGDayOrDerived_8hpp__dep__incl.md5 new file mode 100644 index 00000000..ead006a6 --- /dev/null +++ b/docs/simple-api/ATGDayOrDerived_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +32732da39c2b8fc27a8a080d6cad0a4f \ No newline at end of file diff --git a/docs/simple-api/ATGDayOrDerived_8hpp__dep__incl.png b/docs/simple-api/ATGDayOrDerived_8hpp__dep__incl.png new file mode 100644 index 00000000..477614ec Binary files /dev/null and b/docs/simple-api/ATGDayOrDerived_8hpp__dep__incl.png differ diff --git a/docs/simple-api/ATGDayOrDerived_8hpp__incl.map b/docs/simple-api/ATGDayOrDerived_8hpp__incl.map new file mode 100644 index 00000000..a0288ca1 --- /dev/null +++ b/docs/simple-api/ATGDayOrDerived_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DateOrTimeType_8hpp.html 216,157 434,181 +rect $Timezone_8hpp.html 237,58 413,82 diff --git a/docs/simple-api/ATGDayOrDerived_8hpp__incl.md5 b/docs/simple-api/ATGDayOrDerived_8hpp__incl.md5 new file mode 100644 index 00000000..3ace0748 --- /dev/null +++ b/docs/simple-api/ATGDayOrDerived_8hpp__incl.md5 @@ -0,0 +1 @@ +0b2e930c21a53708a62854e39d6b1859 \ No newline at end of file diff --git a/docs/simple-api/ATGDayOrDerived_8hpp__incl.png b/docs/simple-api/ATGDayOrDerived_8hpp__incl.png new file mode 100644 index 00000000..1d020c7b Binary files /dev/null and b/docs/simple-api/ATGDayOrDerived_8hpp__incl.png differ diff --git a/docs/simple-api/ATGMonthDayOrDerived_8hpp-source.html b/docs/simple-api/ATGMonthDayOrDerived_8hpp-source.html new file mode 100644 index 00000000..678a2f90 --- /dev/null +++ b/docs/simple-api/ATGMonthDayOrDerived_8hpp-source.html @@ -0,0 +1,79 @@ + + +XQilla Simple API: ATGMonthDayOrDerived.hpp Source File + + + + + + +

ATGMonthDayOrDerived.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ATGMonthDayOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ATGMONTHDAYORDERIVED_HPP
+00015 #define _ATGMONTHDAYORDERIVED_HPP
+00016 
+00017 #include <xercesc/util/XercesDefs.hpp>
+00018 #include <xqilla/framework/XQillaExport.hpp>
+00019 #include <xqilla/items/DateOrTimeType.hpp>
+00020 #include <xqilla/items/Timezone.hpp>
+00021 
+00022 class DynamicContext;
+00023 
+00024 class XQILLA_API ATGMonthDayOrDerived : public DateOrTimeType
+00025 {
+00026 public:
+00027   typedef RefCountPointer<const ATGMonthDayOrDerived> Ptr;
+00028 
+00029   /* Get the name of the primitive type (basic type) of this type
+00030    * (ie "decimal" for xs:decimal) */
+00031   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00032 
+00033   /* Get the namespace URI for this type */
+00034   virtual const XMLCh* getTypeURI() const = 0;
+00035 
+00036   /* Get the name of this type  (ie "integer" for xs:integer) */
+00037   virtual const XMLCh* getTypeName() const = 0;
+00038 
+00039   /* returns the XMLCh* (canonical) representation of this type */
+00040   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00041 
+00042   /* returns true if the two objects are equal 
+00043    * false otherwise */
+00044   virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0;
+00045 
+00048   virtual int compare(const ATGMonthDayOrDerived::Ptr &other, const DynamicContext *context) const = 0;
+00049  
+00051   virtual bool hasTimezone() const = 0;
+00052 
+00054   virtual ATGMonthDayOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const = 0;
+00055 
+00056   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00057 };
+00058 
+00059 #endif //  _ATGMONTHDAYORDERIVED_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATGMonthDayOrDerived_8hpp.html b/docs/simple-api/ATGMonthDayOrDerived_8hpp.html new file mode 100644 index 00000000..c682ef6a --- /dev/null +++ b/docs/simple-api/ATGMonthDayOrDerived_8hpp.html @@ -0,0 +1,49 @@ + + +XQilla Simple API: ATGMonthDayOrDerived.hpp File Reference + + + + + + +

ATGMonthDayOrDerived.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/DateOrTimeType.hpp>
+#include <xqilla/items/Timezone.hpp>
+ +

+Include dependency graph for ATGMonthDayOrDerived.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + +

Classes

class  ATGMonthDayOrDerived
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATGMonthDayOrDerived_8hpp__dep__incl.map b/docs/simple-api/ATGMonthDayOrDerived_8hpp__dep__incl.map new file mode 100644 index 00000000..f29d9d00 --- /dev/null +++ b/docs/simple-api/ATGMonthDayOrDerived_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $ItemFactory_8hpp.html 253,8 370,32 diff --git a/docs/simple-api/ATGMonthDayOrDerived_8hpp__dep__incl.md5 b/docs/simple-api/ATGMonthDayOrDerived_8hpp__dep__incl.md5 new file mode 100644 index 00000000..5c2f01a7 --- /dev/null +++ b/docs/simple-api/ATGMonthDayOrDerived_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +01a6743929df6890f4e79c85c38243cb \ No newline at end of file diff --git a/docs/simple-api/ATGMonthDayOrDerived_8hpp__dep__incl.png b/docs/simple-api/ATGMonthDayOrDerived_8hpp__dep__incl.png new file mode 100644 index 00000000..4f962434 Binary files /dev/null and b/docs/simple-api/ATGMonthDayOrDerived_8hpp__dep__incl.png differ diff --git a/docs/simple-api/ATGMonthDayOrDerived_8hpp__incl.map b/docs/simple-api/ATGMonthDayOrDerived_8hpp__incl.map new file mode 100644 index 00000000..9af7dcc7 --- /dev/null +++ b/docs/simple-api/ATGMonthDayOrDerived_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DateOrTimeType_8hpp.html 253,157 472,181 +rect $Timezone_8hpp.html 274,58 450,82 diff --git a/docs/simple-api/ATGMonthDayOrDerived_8hpp__incl.md5 b/docs/simple-api/ATGMonthDayOrDerived_8hpp__incl.md5 new file mode 100644 index 00000000..7d5906d6 --- /dev/null +++ b/docs/simple-api/ATGMonthDayOrDerived_8hpp__incl.md5 @@ -0,0 +1 @@ +736e869682e5cec42e314b057120ad30 \ No newline at end of file diff --git a/docs/simple-api/ATGMonthDayOrDerived_8hpp__incl.png b/docs/simple-api/ATGMonthDayOrDerived_8hpp__incl.png new file mode 100644 index 00000000..ce5c8b55 Binary files /dev/null and b/docs/simple-api/ATGMonthDayOrDerived_8hpp__incl.png differ diff --git a/docs/simple-api/ATGMonthOrDerived_8hpp-source.html b/docs/simple-api/ATGMonthOrDerived_8hpp-source.html new file mode 100644 index 00000000..837198b9 --- /dev/null +++ b/docs/simple-api/ATGMonthOrDerived_8hpp-source.html @@ -0,0 +1,79 @@ + + +XQilla Simple API: ATGMonthOrDerived.hpp Source File + + + + + + +

ATGMonthOrDerived.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ATGMonthOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ATGMONTHORDERIVED_HPP
+00015 #define _ATGMONTHORDERIVED_HPP
+00016 
+00017 #include <xercesc/util/XercesDefs.hpp>
+00018 #include <xqilla/framework/XQillaExport.hpp>
+00019 #include <xqilla/items/DateOrTimeType.hpp>
+00020 #include <xqilla/items/Timezone.hpp>
+00021 
+00022 class DynamicContext;
+00023 
+00024 class XQILLA_API ATGMonthOrDerived : public DateOrTimeType
+00025 {
+00026 public:
+00027   typedef RefCountPointer<const ATGMonthOrDerived> Ptr;
+00028 
+00029   /* Get the name of the primitive type (basic type) of this type
+00030    * (ie "decimal" for xs:decimal) */
+00031   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00032 
+00033   /* Get the namespace URI for this type */
+00034   virtual const XMLCh* getTypeURI() const = 0;
+00035 
+00036   /* Get the name of this type  (ie "integer" for xs:integer) */
+00037   virtual const XMLCh* getTypeName() const = 0;
+00038 
+00039   /* returns the XMLCh* (canonical) representation of this type */
+00040   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00041 
+00042   /* returns true if the two objects are equal 
+00043    * false otherwise */
+00044   virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0;
+00045 
+00048   virtual int compare(const ATGMonthOrDerived::Ptr &other, const DynamicContext *context) const = 0;
+00049  
+00051   virtual bool hasTimezone() const = 0;
+00052 
+00054   virtual ATGMonthOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const = 0;
+00055 
+00056   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00057 };
+00058 
+00059 #endif //  _ATGMONTHORDERIVED_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATGMonthOrDerived_8hpp.html b/docs/simple-api/ATGMonthOrDerived_8hpp.html new file mode 100644 index 00000000..75af54b3 --- /dev/null +++ b/docs/simple-api/ATGMonthOrDerived_8hpp.html @@ -0,0 +1,49 @@ + + +XQilla Simple API: ATGMonthOrDerived.hpp File Reference + + + + + + +

ATGMonthOrDerived.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/DateOrTimeType.hpp>
+#include <xqilla/items/Timezone.hpp>
+ +

+Include dependency graph for ATGMonthOrDerived.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + +

Classes

class  ATGMonthOrDerived
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATGMonthOrDerived_8hpp__dep__incl.map b/docs/simple-api/ATGMonthOrDerived_8hpp__dep__incl.map new file mode 100644 index 00000000..6afd0f4d --- /dev/null +++ b/docs/simple-api/ATGMonthOrDerived_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $ItemFactory_8hpp.html 229,8 346,32 diff --git a/docs/simple-api/ATGMonthOrDerived_8hpp__dep__incl.md5 b/docs/simple-api/ATGMonthOrDerived_8hpp__dep__incl.md5 new file mode 100644 index 00000000..7262b83e --- /dev/null +++ b/docs/simple-api/ATGMonthOrDerived_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +698d014b14714b4caf2e2319c7a7d59e \ No newline at end of file diff --git a/docs/simple-api/ATGMonthOrDerived_8hpp__dep__incl.png b/docs/simple-api/ATGMonthOrDerived_8hpp__dep__incl.png new file mode 100644 index 00000000..9fad15b4 Binary files /dev/null and b/docs/simple-api/ATGMonthOrDerived_8hpp__dep__incl.png differ diff --git a/docs/simple-api/ATGMonthOrDerived_8hpp__incl.map b/docs/simple-api/ATGMonthOrDerived_8hpp__incl.map new file mode 100644 index 00000000..40e79142 --- /dev/null +++ b/docs/simple-api/ATGMonthOrDerived_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DateOrTimeType_8hpp.html 229,157 448,181 +rect $Timezone_8hpp.html 250,58 426,82 diff --git a/docs/simple-api/ATGMonthOrDerived_8hpp__incl.md5 b/docs/simple-api/ATGMonthOrDerived_8hpp__incl.md5 new file mode 100644 index 00000000..4a170c62 --- /dev/null +++ b/docs/simple-api/ATGMonthOrDerived_8hpp__incl.md5 @@ -0,0 +1 @@ +7e69a3d2791d9c1f3e47956beaf94a45 \ No newline at end of file diff --git a/docs/simple-api/ATGMonthOrDerived_8hpp__incl.png b/docs/simple-api/ATGMonthOrDerived_8hpp__incl.png new file mode 100644 index 00000000..526b7ff3 Binary files /dev/null and b/docs/simple-api/ATGMonthOrDerived_8hpp__incl.png differ diff --git a/docs/simple-api/ATGYearMonthOrDerived_8hpp-source.html b/docs/simple-api/ATGYearMonthOrDerived_8hpp-source.html new file mode 100644 index 00000000..b67f224a --- /dev/null +++ b/docs/simple-api/ATGYearMonthOrDerived_8hpp-source.html @@ -0,0 +1,79 @@ + + +XQilla Simple API: ATGYearMonthOrDerived.hpp Source File + + + + + + +

ATGYearMonthOrDerived.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ATGYearMonthOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ATGYEARMONTHORDERIVED_HPP
+00015 #define _ATGYEARMONTHORDERIVED_HPP
+00016 
+00017 #include <xercesc/util/XercesDefs.hpp>
+00018 #include <xqilla/framework/XQillaExport.hpp>
+00019 #include <xqilla/items/DateOrTimeType.hpp>
+00020 #include <xqilla/items/Timezone.hpp>
+00021 
+00022 class DynamicContext;
+00023 
+00024 class XQILLA_API ATGYearMonthOrDerived : public DateOrTimeType
+00025 {
+00026 public:
+00027   typedef RefCountPointer<const ATGYearMonthOrDerived> Ptr;
+00028 
+00029   /* Get the name of the primitive type (basic type) of this type
+00030    * (ie "decimal" for xs:decimal) */
+00031   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00032 
+00033   /* Get the namespace URI for this type */
+00034   virtual const XMLCh* getTypeURI() const = 0;
+00035 
+00036   /* Get the name of this type  (ie "integer" for xs:integer) */
+00037   virtual const XMLCh* getTypeName() const = 0;
+00038 
+00039   /* returns the XMLCh* (canonical) representation of this type */
+00040   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00041 
+00042   /* returns true if the two objects are equal 
+00043    * false otherwise */
+00044   virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0;
+00045 
+00048   virtual int compare(const ATGYearMonthOrDerived::Ptr &other, const DynamicContext *context) const = 0;
+00049  
+00051   virtual bool hasTimezone() const = 0;
+00052 
+00054   virtual ATGYearMonthOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const = 0;
+00055 
+00056   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00057 };
+00058 
+00059 #endif //  _ATGYEARMONTHORDERIVED_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATGYearMonthOrDerived_8hpp.html b/docs/simple-api/ATGYearMonthOrDerived_8hpp.html new file mode 100644 index 00000000..c28892fd --- /dev/null +++ b/docs/simple-api/ATGYearMonthOrDerived_8hpp.html @@ -0,0 +1,49 @@ + + +XQilla Simple API: ATGYearMonthOrDerived.hpp File Reference + + + + + + +

ATGYearMonthOrDerived.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/DateOrTimeType.hpp>
+#include <xqilla/items/Timezone.hpp>
+ +

+Include dependency graph for ATGYearMonthOrDerived.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + +

Classes

class  ATGYearMonthOrDerived
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATGYearMonthOrDerived_8hpp__dep__incl.map b/docs/simple-api/ATGYearMonthOrDerived_8hpp__dep__incl.map new file mode 100644 index 00000000..f29d9d00 --- /dev/null +++ b/docs/simple-api/ATGYearMonthOrDerived_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $ItemFactory_8hpp.html 253,8 370,32 diff --git a/docs/simple-api/ATGYearMonthOrDerived_8hpp__dep__incl.md5 b/docs/simple-api/ATGYearMonthOrDerived_8hpp__dep__incl.md5 new file mode 100644 index 00000000..2e116531 --- /dev/null +++ b/docs/simple-api/ATGYearMonthOrDerived_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +d8f62b80a5ecda2d4c965998380ff486 \ No newline at end of file diff --git a/docs/simple-api/ATGYearMonthOrDerived_8hpp__dep__incl.png b/docs/simple-api/ATGYearMonthOrDerived_8hpp__dep__incl.png new file mode 100644 index 00000000..54c40137 Binary files /dev/null and b/docs/simple-api/ATGYearMonthOrDerived_8hpp__dep__incl.png differ diff --git a/docs/simple-api/ATGYearMonthOrDerived_8hpp__incl.map b/docs/simple-api/ATGYearMonthOrDerived_8hpp__incl.map new file mode 100644 index 00000000..9af7dcc7 --- /dev/null +++ b/docs/simple-api/ATGYearMonthOrDerived_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DateOrTimeType_8hpp.html 253,157 472,181 +rect $Timezone_8hpp.html 274,58 450,82 diff --git a/docs/simple-api/ATGYearMonthOrDerived_8hpp__incl.md5 b/docs/simple-api/ATGYearMonthOrDerived_8hpp__incl.md5 new file mode 100644 index 00000000..1ed5ef5d --- /dev/null +++ b/docs/simple-api/ATGYearMonthOrDerived_8hpp__incl.md5 @@ -0,0 +1 @@ +043b7220823caad386f78c52fedc51a1 \ No newline at end of file diff --git a/docs/simple-api/ATGYearMonthOrDerived_8hpp__incl.png b/docs/simple-api/ATGYearMonthOrDerived_8hpp__incl.png new file mode 100644 index 00000000..ffbd99b0 Binary files /dev/null and b/docs/simple-api/ATGYearMonthOrDerived_8hpp__incl.png differ diff --git a/docs/simple-api/ATGYearOrDerived_8hpp-source.html b/docs/simple-api/ATGYearOrDerived_8hpp-source.html new file mode 100644 index 00000000..a75cb480 --- /dev/null +++ b/docs/simple-api/ATGYearOrDerived_8hpp-source.html @@ -0,0 +1,79 @@ + + +XQilla Simple API: ATGYearOrDerived.hpp Source File + + + + + + +

ATGYearOrDerived.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ATGYearOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ATGYEARORDERIVED_HPP
+00015 #define _ATGYEARORDERIVED_HPP
+00016 
+00017 #include <xercesc/util/XercesDefs.hpp>
+00018 #include <xqilla/framework/XQillaExport.hpp>
+00019 #include <xqilla/items/DateOrTimeType.hpp>
+00020 #include <xqilla/items/Timezone.hpp>
+00021 
+00022 class DynamicContext;
+00023 
+00024 class XQILLA_API ATGYearOrDerived : public DateOrTimeType
+00025 {
+00026 public:
+00027   typedef RefCountPointer<const ATGYearOrDerived> Ptr;
+00028 
+00029   /* Get the name of the primitive type (basic type) of this type
+00030    * (ie "decimal" for xs:decimal) */
+00031   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00032 
+00033   /* Get the namespace URI for this type */
+00034   virtual const XMLCh* getTypeURI() const = 0;
+00035 
+00036   /* Get the name of this type  (ie "integer" for xs:integer) */
+00037   virtual const XMLCh* getTypeName() const = 0;
+00038 
+00039   /* returns the XMLCh* (canonical) representation of this type */
+00040   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00041 
+00042   /* returns true if the two objects are equal 
+00043    * false otherwise */
+00044   virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0;
+00045 
+00048   virtual int compare(const ATGYearOrDerived::Ptr &other, const DynamicContext *context) const = 0;
+00049  
+00051   virtual bool hasTimezone() const = 0;
+00052 
+00054   virtual ATGYearOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const = 0;
+00055 
+00056   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00057 };
+00058 
+00059 #endif //  _ATGYEARORDERIVED_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATGYearOrDerived_8hpp.html b/docs/simple-api/ATGYearOrDerived_8hpp.html new file mode 100644 index 00000000..4d283a75 --- /dev/null +++ b/docs/simple-api/ATGYearOrDerived_8hpp.html @@ -0,0 +1,49 @@ + + +XQilla Simple API: ATGYearOrDerived.hpp File Reference + + + + + + +

ATGYearOrDerived.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/DateOrTimeType.hpp>
+#include <xqilla/items/Timezone.hpp>
+ +

+Include dependency graph for ATGYearOrDerived.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + +

Classes

class  ATGYearOrDerived
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATGYearOrDerived_8hpp__dep__incl.map b/docs/simple-api/ATGYearOrDerived_8hpp__dep__incl.map new file mode 100644 index 00000000..3e6e4310 --- /dev/null +++ b/docs/simple-api/ATGYearOrDerived_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $ItemFactory_8hpp.html 218,8 336,32 diff --git a/docs/simple-api/ATGYearOrDerived_8hpp__dep__incl.md5 b/docs/simple-api/ATGYearOrDerived_8hpp__dep__incl.md5 new file mode 100644 index 00000000..56461dc1 --- /dev/null +++ b/docs/simple-api/ATGYearOrDerived_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +b692cc0f8330d0656add18903639dbb4 \ No newline at end of file diff --git a/docs/simple-api/ATGYearOrDerived_8hpp__dep__incl.png b/docs/simple-api/ATGYearOrDerived_8hpp__dep__incl.png new file mode 100644 index 00000000..673a277f Binary files /dev/null and b/docs/simple-api/ATGYearOrDerived_8hpp__dep__incl.png differ diff --git a/docs/simple-api/ATGYearOrDerived_8hpp__incl.map b/docs/simple-api/ATGYearOrDerived_8hpp__incl.map new file mode 100644 index 00000000..190c2c05 --- /dev/null +++ b/docs/simple-api/ATGYearOrDerived_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DateOrTimeType_8hpp.html 218,157 437,181 +rect $Timezone_8hpp.html 239,58 415,82 diff --git a/docs/simple-api/ATGYearOrDerived_8hpp__incl.md5 b/docs/simple-api/ATGYearOrDerived_8hpp__incl.md5 new file mode 100644 index 00000000..7b8181da --- /dev/null +++ b/docs/simple-api/ATGYearOrDerived_8hpp__incl.md5 @@ -0,0 +1 @@ +50bbc9834113a6122041a631a37f80af \ No newline at end of file diff --git a/docs/simple-api/ATGYearOrDerived_8hpp__incl.png b/docs/simple-api/ATGYearOrDerived_8hpp__incl.png new file mode 100644 index 00000000..142fc0bb Binary files /dev/null and b/docs/simple-api/ATGYearOrDerived_8hpp__incl.png differ diff --git a/docs/simple-api/ATHexBinaryOrDerived_8hpp-source.html b/docs/simple-api/ATHexBinaryOrDerived_8hpp-source.html new file mode 100644 index 00000000..7e7985ab --- /dev/null +++ b/docs/simple-api/ATHexBinaryOrDerived_8hpp-source.html @@ -0,0 +1,72 @@ + + +XQilla Simple API: ATHexBinaryOrDerived.hpp Source File + + + + + + +

ATHexBinaryOrDerived.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ATHexBinaryOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ATHEXBINARYORDERIVED_HPP
+00015 #define _ATHEXBINARYORDERIVED_HPP
+00016 
+00017 #include <xercesc/util/XercesDefs.hpp>
+00018 #include <xqilla/framework/XQillaExport.hpp>
+00019 #include <xqilla/items/AnyAtomicType.hpp>
+00020 
+00021 class DynamicContext;
+00022 
+00023 class XQILLA_API ATHexBinaryOrDerived : public AnyAtomicType
+00024 {
+00025 public:
+00026   /* Get the name of the primitive type (basic type) of this type
+00027    * (ie "decimal" for xs:decimal) */
+00028   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00029 
+00030   /* Get the namespace URI for this type */
+00031   virtual const XMLCh* getTypeURI() const = 0;
+00032 
+00033   /* Get the name of this type  (ie "integer" for xs:integer) */
+00034   virtual const XMLCh* getTypeName() const = 0;
+00035 
+00036   /* returns the XMLCh* (canonical) representation of this type */
+00037   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00038 
+00039   /* returns true if the two objects' URI are equal (string comparison)
+00040    * false otherwise */
+00041   virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0;
+00042 
+00045   virtual int compare(const ATHexBinaryOrDerived::Ptr &other, const DynamicContext *context) const = 0;
+00046  
+00047   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00048 };
+00049 
+00050 #endif //  _ATHEXBINARYORDERIVED_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATHexBinaryOrDerived_8hpp.html b/docs/simple-api/ATHexBinaryOrDerived_8hpp.html new file mode 100644 index 00000000..e8356e23 --- /dev/null +++ b/docs/simple-api/ATHexBinaryOrDerived_8hpp.html @@ -0,0 +1,42 @@ + + +XQilla Simple API: ATHexBinaryOrDerived.hpp File Reference + + + + + + +

ATHexBinaryOrDerived.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/AnyAtomicType.hpp>
+ +

+Include dependency graph for ATHexBinaryOrDerived.hpp:

+ + + + + +

+Go to the source code of this file. + + + + +

Classes

class  ATHexBinaryOrDerived
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATHexBinaryOrDerived_8hpp__incl.map b/docs/simple-api/ATHexBinaryOrDerived_8hpp__incl.map new file mode 100644 index 00000000..69b7cd9b --- /dev/null +++ b/docs/simple-api/ATHexBinaryOrDerived_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $AnyAtomicType_8hpp.html 242,109 453,133 +rect $Item_8hpp.html 501,109 645,133 diff --git a/docs/simple-api/ATHexBinaryOrDerived_8hpp__incl.md5 b/docs/simple-api/ATHexBinaryOrDerived_8hpp__incl.md5 new file mode 100644 index 00000000..62934ff8 --- /dev/null +++ b/docs/simple-api/ATHexBinaryOrDerived_8hpp__incl.md5 @@ -0,0 +1 @@ +b74a871806471ef44652a5bb866cf9c1 \ No newline at end of file diff --git a/docs/simple-api/ATHexBinaryOrDerived_8hpp__incl.png b/docs/simple-api/ATHexBinaryOrDerived_8hpp__incl.png new file mode 100644 index 00000000..06b65669 Binary files /dev/null and b/docs/simple-api/ATHexBinaryOrDerived_8hpp__incl.png differ diff --git a/docs/simple-api/ATNotationOrDerived_8hpp-source.html b/docs/simple-api/ATNotationOrDerived_8hpp-source.html new file mode 100644 index 00000000..b71fcf6a --- /dev/null +++ b/docs/simple-api/ATNotationOrDerived_8hpp-source.html @@ -0,0 +1,72 @@ + + +XQilla Simple API: ATNotationOrDerived.hpp Source File + + + + + + +

ATNotationOrDerived.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ATNotationOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ATNOTATIONORDERIVED_HPP
+00015 #define _ATNOTATIONORDERIVED_HPP
+00016 
+00017 #include <xercesc/util/XercesDefs.hpp>
+00018 #include <xqilla/framework/XQillaExport.hpp>
+00019 #include <xqilla/items/AnyAtomicType.hpp>
+00020 
+00021 class DynamicContext;
+00022 
+00023 class XQILLA_API ATNotationOrDerived : public AnyAtomicType
+00024 {
+00025 public:
+00026   /* Get the name of the primitive type (basic type) of this type
+00027    * (ie "decimal" for xs:decimal) */
+00028   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00029 
+00030   /* Get the namespace URI for this type */
+00031   virtual const XMLCh* getTypeURI() const = 0;
+00032 
+00033   /* Get the name of this type  (ie "integer" for xs:integer) */
+00034   virtual const XMLCh* getTypeName() const = 0;
+00035 
+00036   /* returns the XMLCh* (canonical) representation of this type */
+00037   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00038 
+00039   /* returns true if the two objects' URI are equal (string comparison)
+00040    * false otherwise */
+00041   virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0;
+00042 
+00045   virtual int compare(const ATNotationOrDerived::Ptr &other, const DynamicContext *context) const = 0;
+00046  
+00047   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00048 };
+00049 
+00050 #endif //  _ATNOTATIONORDERIVED_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATNotationOrDerived_8hpp.html b/docs/simple-api/ATNotationOrDerived_8hpp.html new file mode 100644 index 00000000..cba2b167 --- /dev/null +++ b/docs/simple-api/ATNotationOrDerived_8hpp.html @@ -0,0 +1,42 @@ + + +XQilla Simple API: ATNotationOrDerived.hpp File Reference + + + + + + +

ATNotationOrDerived.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/AnyAtomicType.hpp>
+ +

+Include dependency graph for ATNotationOrDerived.hpp:

+ + + + + +

+Go to the source code of this file. + + + + +

Classes

class  ATNotationOrDerived
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATNotationOrDerived_8hpp__incl.map b/docs/simple-api/ATNotationOrDerived_8hpp__incl.map new file mode 100644 index 00000000..cf557b11 --- /dev/null +++ b/docs/simple-api/ATNotationOrDerived_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $AnyAtomicType_8hpp.html 232,109 442,133 +rect $Item_8hpp.html 490,109 634,133 diff --git a/docs/simple-api/ATNotationOrDerived_8hpp__incl.md5 b/docs/simple-api/ATNotationOrDerived_8hpp__incl.md5 new file mode 100644 index 00000000..61dac427 --- /dev/null +++ b/docs/simple-api/ATNotationOrDerived_8hpp__incl.md5 @@ -0,0 +1 @@ +db478a88abeeacad2c648a73a39a592e \ No newline at end of file diff --git a/docs/simple-api/ATNotationOrDerived_8hpp__incl.png b/docs/simple-api/ATNotationOrDerived_8hpp__incl.png new file mode 100644 index 00000000..40ad3fdb Binary files /dev/null and b/docs/simple-api/ATNotationOrDerived_8hpp__incl.png differ diff --git a/docs/simple-api/ATQNameOrDerived_8hpp-source.html b/docs/simple-api/ATQNameOrDerived_8hpp-source.html new file mode 100644 index 00000000..ecfb1cd4 --- /dev/null +++ b/docs/simple-api/ATQNameOrDerived_8hpp-source.html @@ -0,0 +1,83 @@ + + +XQilla Simple API: ATQNameOrDerived.hpp Source File + + + + + + +

ATQNameOrDerived.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ATQNameOrDerived.hpp,v 1.9 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ATQNAMEORDERIVED_HPP
+00015 #define _ATQNAMEORDERIVED_HPP
+00016 
+00017 #include <xercesc/util/XercesDefs.hpp>
+00018 #include <xqilla/framework/XQillaExport.hpp>
+00019 #include <xqilla/items/AnyAtomicType.hpp>
+00020 
+00021 class DynamicContext;
+00022 
+00023 class XQILLA_API ATQNameOrDerived : public AnyAtomicType
+00024 {
+00025 public:
+00026   typedef RefCountPointer<const ATQNameOrDerived> Ptr;
+00027 
+00028   /* Get the name of the primitive type (basic type) of this type
+00029    * (ie "decimal" for xs:decimal) */
+00030   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00031 
+00032   /* Get the namespace URI for this type */
+00033   virtual const XMLCh* getTypeURI() const = 0;
+00034 
+00035   /* Get the name of this type  (ie "integer" for xs:integer) */
+00036   virtual const XMLCh* getTypeName() const = 0;
+00037 
+00038   /* returns the URI */
+00039   virtual const XMLCh* getURI() const = 0;
+00040 
+00041   /* returns the prefix */
+00042   virtual const XMLCh* getPrefix() const = 0;
+00043 
+00044   /* returns the name */
+00045   virtual const XMLCh* getName() const = 0;
+00046 
+00047   /* returns the XMLCh* (canonical) representation of this type */
+00048   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00049 
+00050   /* returns true if the two objects' URI are equal (string comparison)
+00051    * false otherwise */
+00052   virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0;
+00053 
+00056   virtual int compare(const ATQNameOrDerived::Ptr &other, const DynamicContext *context) const = 0;
+00057  
+00058   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00059 };
+00060 
+00061 #endif //  _ATQNAMEORDERIVED_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATQNameOrDerived_8hpp.html b/docs/simple-api/ATQNameOrDerived_8hpp.html new file mode 100644 index 00000000..d926fdc3 --- /dev/null +++ b/docs/simple-api/ATQNameOrDerived_8hpp.html @@ -0,0 +1,49 @@ + + +XQilla Simple API: ATQNameOrDerived.hpp File Reference + + + + + + +

ATQNameOrDerived.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/AnyAtomicType.hpp>
+ +

+Include dependency graph for ATQNameOrDerived.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + +

+Go to the source code of this file. + + + + +

Classes

class  ATQNameOrDerived
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATQNameOrDerived_8hpp__dep__incl.map b/docs/simple-api/ATQNameOrDerived_8hpp__dep__incl.map new file mode 100644 index 00000000..65327e3f --- /dev/null +++ b/docs/simple-api/ATQNameOrDerived_8hpp__dep__incl.map @@ -0,0 +1,3 @@ +base referer +rect $Node_8hpp.html 226,8 306,32 +rect $ItemFactory_8hpp.html 354,33 472,57 diff --git a/docs/simple-api/ATQNameOrDerived_8hpp__dep__incl.md5 b/docs/simple-api/ATQNameOrDerived_8hpp__dep__incl.md5 new file mode 100644 index 00000000..acf3e0f0 --- /dev/null +++ b/docs/simple-api/ATQNameOrDerived_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +5592c11fae0340d6b5b87d8902bf3481 \ No newline at end of file diff --git a/docs/simple-api/ATQNameOrDerived_8hpp__dep__incl.png b/docs/simple-api/ATQNameOrDerived_8hpp__dep__incl.png new file mode 100644 index 00000000..896a459f Binary files /dev/null and b/docs/simple-api/ATQNameOrDerived_8hpp__dep__incl.png differ diff --git a/docs/simple-api/ATQNameOrDerived_8hpp__incl.map b/docs/simple-api/ATQNameOrDerived_8hpp__incl.map new file mode 100644 index 00000000..78f6b931 --- /dev/null +++ b/docs/simple-api/ATQNameOrDerived_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $AnyAtomicType_8hpp.html 226,109 437,133 +rect $Item_8hpp.html 485,109 629,133 diff --git a/docs/simple-api/ATQNameOrDerived_8hpp__incl.md5 b/docs/simple-api/ATQNameOrDerived_8hpp__incl.md5 new file mode 100644 index 00000000..de701ba5 --- /dev/null +++ b/docs/simple-api/ATQNameOrDerived_8hpp__incl.md5 @@ -0,0 +1 @@ +c83a071b13f4780cdeb42ba1c49dd6f3 \ No newline at end of file diff --git a/docs/simple-api/ATQNameOrDerived_8hpp__incl.png b/docs/simple-api/ATQNameOrDerived_8hpp__incl.png new file mode 100644 index 00000000..80413338 Binary files /dev/null and b/docs/simple-api/ATQNameOrDerived_8hpp__incl.png differ diff --git a/docs/simple-api/ATStringOrDerived_8hpp-source.html b/docs/simple-api/ATStringOrDerived_8hpp-source.html new file mode 100644 index 00000000..9aa71046 --- /dev/null +++ b/docs/simple-api/ATStringOrDerived_8hpp-source.html @@ -0,0 +1,90 @@ + + +XQilla Simple API: ATStringOrDerived.hpp Source File + + + + + + +

ATStringOrDerived.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ATStringOrDerived.hpp,v 1.7 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ATSTRINGORDERIVED_HPP
+00015 #define _ATSTRINGORDERIVED_HPP
+00016 
+00017 #include <xercesc/util/XercesDefs.hpp>
+00018 #include <xqilla/framework/XQillaExport.hpp>
+00019 #include <xqilla/items/AnyAtomicType.hpp>
+00020 #include <xqilla/items/Numeric.hpp>
+00021 
+00022 class Collation;
+00023 class Result;
+00024 class DynamicContext;
+00025 
+00026 class XQILLA_API ATStringOrDerived : public AnyAtomicType
+00027 {
+00028 public:
+00029   typedef RefCountPointer<const ATStringOrDerived> Ptr;
+00030 
+00031   /* Get the name of the primitive type (basic type) of this type
+00032    * (ie "decimal" for xs:decimal) */
+00033   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00034 
+00035   /* Get the namespace URI for this type */
+00036   virtual const XMLCh* getTypeURI() const = 0;
+00037 
+00038   /* Get the name of this type  (ie "integer" for xs:integer) */
+00039   virtual const XMLCh* getTypeName() const = 0;
+00040 
+00041   /* returns the XMLCh* (canonical) representation of this type */
+00042   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00043 
+00044   /* returns this string as a set of codepoints */
+00045   virtual Result asCodepoints(const DynamicContext* context) const = 0;
+00046 
+00047   /* returns the length of this string */
+00048   virtual unsigned int getLength() const = 0;
+00049 
+00050   /* returns the substring starting at startingLoc of given length */
+00051   virtual ATStringOrDerived::Ptr substring(const Numeric::Ptr &startingLoc, const Numeric::Ptr &length, const DynamicContext* context) const = 0;
+00052 
+00053   /* returns the substring that occurs after the first occurence of pattern */
+00054   virtual ATStringOrDerived::Ptr substringAfter(const ATStringOrDerived::Ptr &pattern, Collation* collation, const DynamicContext* context) const = 0;
+00055 
+00056   /* returns the substring that occurs before the first occurence of pattern */
+00057   virtual ATStringOrDerived::Ptr substringBefore(const ATStringOrDerived::Ptr &pattern, Collation* collation, const DynamicContext* context) const = 0;
+00058 
+00059   /* returns true if the two objects' URI are equal (string comparison)
+00060    * false otherwise */
+00061   virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0;
+00062 
+00063   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00064 };
+00065 
+00066 #endif //  _ATSTRINGORDERIVED_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATStringOrDerived_8hpp.html b/docs/simple-api/ATStringOrDerived_8hpp.html new file mode 100644 index 00000000..17fd325d --- /dev/null +++ b/docs/simple-api/ATStringOrDerived_8hpp.html @@ -0,0 +1,49 @@ + + +XQilla Simple API: ATStringOrDerived.hpp File Reference + + + + + + +

ATStringOrDerived.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/AnyAtomicType.hpp>
+#include <xqilla/items/Numeric.hpp>
+ +

+Include dependency graph for ATStringOrDerived.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + +

Classes

class  ATStringOrDerived
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATStringOrDerived_8hpp__dep__incl.map b/docs/simple-api/ATStringOrDerived_8hpp__dep__incl.map new file mode 100644 index 00000000..827d8553 --- /dev/null +++ b/docs/simple-api/ATStringOrDerived_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $ItemFactory_8hpp.html 215,8 333,32 diff --git a/docs/simple-api/ATStringOrDerived_8hpp__dep__incl.md5 b/docs/simple-api/ATStringOrDerived_8hpp__dep__incl.md5 new file mode 100644 index 00000000..3d4f1cbc --- /dev/null +++ b/docs/simple-api/ATStringOrDerived_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +86d43f6409e3047cc6baaabf60c05141 \ No newline at end of file diff --git a/docs/simple-api/ATStringOrDerived_8hpp__dep__incl.png b/docs/simple-api/ATStringOrDerived_8hpp__dep__incl.png new file mode 100644 index 00000000..22fc5f08 Binary files /dev/null and b/docs/simple-api/ATStringOrDerived_8hpp__dep__incl.png differ diff --git a/docs/simple-api/ATStringOrDerived_8hpp__incl.map b/docs/simple-api/ATStringOrDerived_8hpp__incl.map new file mode 100644 index 00000000..4e14bd07 --- /dev/null +++ b/docs/simple-api/ATStringOrDerived_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $AnyAtomicType_8hpp.html 432,160 642,184 +rect $Numeric_8hpp.html 216,109 384,133 diff --git a/docs/simple-api/ATStringOrDerived_8hpp__incl.md5 b/docs/simple-api/ATStringOrDerived_8hpp__incl.md5 new file mode 100644 index 00000000..88d49e35 --- /dev/null +++ b/docs/simple-api/ATStringOrDerived_8hpp__incl.md5 @@ -0,0 +1 @@ +d67666f078fb4d68a9e7350031e6c1d3 \ No newline at end of file diff --git a/docs/simple-api/ATStringOrDerived_8hpp__incl.png b/docs/simple-api/ATStringOrDerived_8hpp__incl.png new file mode 100644 index 00000000..8636b7c7 Binary files /dev/null and b/docs/simple-api/ATStringOrDerived_8hpp__incl.png differ diff --git a/docs/simple-api/ATTimeOrDerived_8hpp-source.html b/docs/simple-api/ATTimeOrDerived_8hpp-source.html new file mode 100644 index 00000000..b6e5002f --- /dev/null +++ b/docs/simple-api/ATTimeOrDerived_8hpp-source.html @@ -0,0 +1,99 @@ + + +XQilla Simple API: ATTimeOrDerived.hpp Source File + + + + + + +

ATTimeOrDerived.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ATTimeOrDerived.hpp,v 1.9 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ATTIMEORDERIVED_HPP
+00015 #define _ATTIMEORDERIVED_HPP
+00016 
+00017 #include <xercesc/util/XMLString.hpp>
+00018 #include <xqilla/items/DateOrTimeType.hpp>
+00019 
+00020 #include <xqilla/framework/XQillaExport.hpp>
+00021 #include <xqilla/items/ATDecimalOrDerived.hpp>
+00022 #include <xqilla/items/ATDurationOrDerived.hpp>
+00023 #include <xqilla/items/Timezone.hpp>
+00024 
+00025 class XQILLA_API ATTimeOrDerived : public DateOrTimeType
+00026 {
+00027 public:
+00028   typedef RefCountPointer<const ATTimeOrDerived> Ptr;
+00029 
+00030   /* Get the name of the primitive type (basic type) of this type
+00031    * (ie "decimal" for xs:decimal) */
+00032   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00033 
+00034   /* Get the namespace URI for this type */
+00035   virtual const XMLCh* getTypeURI() const = 0;
+00036 
+00037   /* Get the name of this type  (ie "integer" for xs:integer) */
+00038   virtual const XMLCh* getTypeName() const = 0;
+00039 
+00040   /* returns the XMLCh* (lexical) representation of this type */
+00041   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00042 
+00043   /* returns true if the two objects represent the same time,
+00044    * false otherwise */
+00045   virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0;
+00046 
+00049   virtual int compare(const ATTimeOrDerived::Ptr &other, const DynamicContext *context) const = 0;
+00050  
+00054   virtual ATDecimalOrDerived::Ptr getHours(const DynamicContext *context) const = 0;
+00055 
+00059   virtual ATDecimalOrDerived::Ptr getMinutes(const DynamicContext *context) const = 0;
+00060 
+00064   virtual ATDecimalOrDerived::Ptr getSeconds(const DynamicContext *context) const = 0;
+00065 
+00069   virtual const Timezone::Ptr &getTimezone() const = 0;
+00070 
+00074   virtual bool hasTimezone() const = 0;
+00075 
+00080   virtual ATTimeOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const = 0;
+00081 
+00085   virtual ATTimeOrDerived::Ptr addTimezone(const ATDurationOrDerived::Ptr &timezone,
+00086                                            const DynamicContext* context) const = 0;
+00087 
+00091   virtual ATTimeOrDerived::Ptr addDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime,
+00092                                                   const DynamicContext* context) const = 0;
+00093   
+00097   virtual ATTimeOrDerived::Ptr subtractDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime,
+00098                                                        const DynamicContext* context) const = 0;
+00099 
+00104   virtual ATDurationOrDerived::Ptr subtractTime(const ATTimeOrDerived::Ptr &time, const DynamicContext* context) const = 0;
+00105 
+00106   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00107 };
+00108 
+00109 #endif //  _ATTIMEORDERIVED_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATTimeOrDerived_8hpp.html b/docs/simple-api/ATTimeOrDerived_8hpp.html new file mode 100644 index 00000000..a586d8e3 --- /dev/null +++ b/docs/simple-api/ATTimeOrDerived_8hpp.html @@ -0,0 +1,53 @@ + + +XQilla Simple API: ATTimeOrDerived.hpp File Reference + + + + + + +

ATTimeOrDerived.hpp File Reference

#include <xercesc/util/XMLString.hpp>
+#include <xqilla/items/DateOrTimeType.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/ATDecimalOrDerived.hpp>
+#include <xqilla/items/ATDurationOrDerived.hpp>
+#include <xqilla/items/Timezone.hpp>
+ +

+Include dependency graph for ATTimeOrDerived.hpp:

+ + + + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + +

Classes

class  ATTimeOrDerived
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATTimeOrDerived_8hpp__dep__incl.map b/docs/simple-api/ATTimeOrDerived_8hpp__dep__incl.map new file mode 100644 index 00000000..4cfbbc7e --- /dev/null +++ b/docs/simple-api/ATTimeOrDerived_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $ItemFactory_8hpp.html 210,8 328,32 diff --git a/docs/simple-api/ATTimeOrDerived_8hpp__dep__incl.md5 b/docs/simple-api/ATTimeOrDerived_8hpp__dep__incl.md5 new file mode 100644 index 00000000..98e775f6 --- /dev/null +++ b/docs/simple-api/ATTimeOrDerived_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +f27bff2e1c61448c0ac9b12638e450f6 \ No newline at end of file diff --git a/docs/simple-api/ATTimeOrDerived_8hpp__dep__incl.png b/docs/simple-api/ATTimeOrDerived_8hpp__dep__incl.png new file mode 100644 index 00000000..dca79c2e Binary files /dev/null and b/docs/simple-api/ATTimeOrDerived_8hpp__dep__incl.png differ diff --git a/docs/simple-api/ATTimeOrDerived_8hpp__incl.map b/docs/simple-api/ATTimeOrDerived_8hpp__incl.map new file mode 100644 index 00000000..d8b0a901 --- /dev/null +++ b/docs/simple-api/ATTimeOrDerived_8hpp__incl.map @@ -0,0 +1,5 @@ +base referer +rect $DateOrTimeType_8hpp.html 210,58 429,82 +rect $ATDecimalOrDerived_8hpp.html 770,159 1013,183 +rect $ATDurationOrDerived_8hpp.html 478,210 721,234 +rect $Timezone_8hpp.html 231,259 407,283 diff --git a/docs/simple-api/ATTimeOrDerived_8hpp__incl.md5 b/docs/simple-api/ATTimeOrDerived_8hpp__incl.md5 new file mode 100644 index 00000000..721429c2 --- /dev/null +++ b/docs/simple-api/ATTimeOrDerived_8hpp__incl.md5 @@ -0,0 +1 @@ +ba4dd5652d489b102c6629aef9823136 \ No newline at end of file diff --git a/docs/simple-api/ATTimeOrDerived_8hpp__incl.png b/docs/simple-api/ATTimeOrDerived_8hpp__incl.png new file mode 100644 index 00000000..9d48595c Binary files /dev/null and b/docs/simple-api/ATTimeOrDerived_8hpp__incl.png differ diff --git a/docs/simple-api/ATUntypedAtomic_8hpp-source.html b/docs/simple-api/ATUntypedAtomic_8hpp-source.html new file mode 100644 index 00000000..f7f09960 --- /dev/null +++ b/docs/simple-api/ATUntypedAtomic_8hpp-source.html @@ -0,0 +1,72 @@ + + +XQilla Simple API: ATUntypedAtomic.hpp Source File + + + + + + +

ATUntypedAtomic.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ATUntypedAtomic.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ATUNTYPEDATOMIC_HPP
+00015 #define _ATUNTYPEDATOMIC_HPP
+00016 
+00017 #include <xercesc/util/XercesDefs.hpp>
+00018 #include <xqilla/framework/XQillaExport.hpp>
+00019 #include <xqilla/items/AnyAtomicType.hpp>
+00020 
+00021 class DynamicContext;
+00022 
+00023 class XQILLA_API ATUntypedAtomic : public AnyAtomicType
+00024 {
+00025 public:
+00026   /* Get the name of the primitive type (basic type) of this type
+00027    * (ie "decimal" for xs:decimal) */
+00028   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00029 
+00030   /* Get the namespace URI for this type */
+00031   virtual const XMLCh* getTypeURI() const = 0;
+00032 
+00033   /* Get the name of this type  (ie "integer" for xs:integer) */
+00034   virtual const XMLCh* getTypeName() const = 0;
+00035 
+00036   /* returns the XMLCh* (canonical) representation of this type */
+00037   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00038 
+00039   /* returns true if the two objects' URI are equal (string comparison)
+00040    * false otherwise */
+00041   virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0;
+00042 
+00043   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00044 
+00045   static const XMLCh fgDT_UNTYPEDATOMIC[];
+00046 };
+00047 
+00048 #endif //  _ATUNTYPEDATOMIC_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATUntypedAtomic_8hpp.html b/docs/simple-api/ATUntypedAtomic_8hpp.html new file mode 100644 index 00000000..650e7cdf --- /dev/null +++ b/docs/simple-api/ATUntypedAtomic_8hpp.html @@ -0,0 +1,48 @@ + + +XQilla Simple API: ATUntypedAtomic.hpp File Reference + + + + + + +

ATUntypedAtomic.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/AnyAtomicType.hpp>
+ +

+Include dependency graph for ATUntypedAtomic.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + +

Classes

class  ATUntypedAtomic
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ATUntypedAtomic_8hpp__dep__incl.map b/docs/simple-api/ATUntypedAtomic_8hpp__dep__incl.map new file mode 100644 index 00000000..c733f674 --- /dev/null +++ b/docs/simple-api/ATUntypedAtomic_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $ItemFactory_8hpp.html 213,8 330,32 diff --git a/docs/simple-api/ATUntypedAtomic_8hpp__dep__incl.md5 b/docs/simple-api/ATUntypedAtomic_8hpp__dep__incl.md5 new file mode 100644 index 00000000..49d665bd --- /dev/null +++ b/docs/simple-api/ATUntypedAtomic_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +6de8a2c4eb1981bafd0b1cfafd7c9357 \ No newline at end of file diff --git a/docs/simple-api/ATUntypedAtomic_8hpp__dep__incl.png b/docs/simple-api/ATUntypedAtomic_8hpp__dep__incl.png new file mode 100644 index 00000000..1450db7e Binary files /dev/null and b/docs/simple-api/ATUntypedAtomic_8hpp__dep__incl.png differ diff --git a/docs/simple-api/ATUntypedAtomic_8hpp__incl.map b/docs/simple-api/ATUntypedAtomic_8hpp__incl.map new file mode 100644 index 00000000..6aa9eaa6 --- /dev/null +++ b/docs/simple-api/ATUntypedAtomic_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $AnyAtomicType_8hpp.html 213,109 424,133 +rect $Item_8hpp.html 472,109 616,133 diff --git a/docs/simple-api/ATUntypedAtomic_8hpp__incl.md5 b/docs/simple-api/ATUntypedAtomic_8hpp__incl.md5 new file mode 100644 index 00000000..0a713a25 --- /dev/null +++ b/docs/simple-api/ATUntypedAtomic_8hpp__incl.md5 @@ -0,0 +1 @@ +5a4593326e824158845a61fe0fe2d461 \ No newline at end of file diff --git a/docs/simple-api/ATUntypedAtomic_8hpp__incl.png b/docs/simple-api/ATUntypedAtomic_8hpp__incl.png new file mode 100644 index 00000000..961c6a4a Binary files /dev/null and b/docs/simple-api/ATUntypedAtomic_8hpp__incl.png differ diff --git a/docs/simple-api/AnyAtomicType_8hpp-source.html b/docs/simple-api/AnyAtomicType_8hpp-source.html new file mode 100644 index 00000000..a98288fb --- /dev/null +++ b/docs/simple-api/AnyAtomicType_8hpp-source.html @@ -0,0 +1,185 @@ + + +XQilla Simple API: AnyAtomicType.hpp Source File + + + + + + +

AnyAtomicType.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: AnyAtomicType.hpp,v 1.7 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ANYATOMICTYPE_HPP
+00015 #define _ANYATOMICTYPE_HPP
+00016 
+00017 #include <xqilla/framework/XQillaExport.hpp>
+00018 #include <xqilla/items/Item.hpp>
+00019 #include <xercesc/util/XercesDefs.hpp>
+00020 
+00021 class DynamicContext;
+00022 class StaticContext;
+00023 
+00024 class XQILLA_API AnyAtomicType: public Item
+00025 {
+00026 
+00027 public:
+00028   typedef RefCountPointer<const AnyAtomicType> Ptr;
+00029 
+00030   /* isAtomicValue from Item */
+00031   virtual bool isAtomicValue() const;
+00032 
+00033   /* isNode from Item */
+00034   virtual bool isNode() const;
+00035 
+00036   /* is this type numeric?  Return false by default */
+00037   virtual bool isNumericValue() const;
+00038 
+00039   /* is this type date or time based?  Return false by default */
+00040   virtual bool isDateOrTimeTypeValue() const;
+00041 
+00042   /* Get the namespace uri of the primitive type (basic type) of this type */
+00043   virtual const XMLCh* getPrimitiveTypeURI() const;
+00044 
+00045   /* Get the name of the primitive type (basic type) of this type (ie "decimal" for xs:decimal) */
+00046   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00047 
+00048   /* Get the namespace URI for this type */
+00049   virtual const XMLCh* getTypeURI() const = 0;
+00050 
+00051   /* Get the name of this type  (ie "integer" for xs:integer) */
+00052   virtual const XMLCh* getTypeName() const = 0;
+00053 
+00054   /* If possible, cast this type to the target type  -- not virtual, this is the single entry point for casting */
+00055   AnyAtomicType::Ptr castAs(const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const;
+00056 
+00057   /* Test if this type can be cast to the target type */
+00058   virtual bool castable(const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const;
+00059 
+00060   /* returns the XMLCh* (canonical) representation of this type */
+00061   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00062 
+00063   /* returns true if the two objects are equal (whatever that means 
+00064    * in the context of the datatype), false otherwise */
+00065   virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0;
+00066 
+00067   /* Returns true if this typeName and uri match the given typeName and uri */
+00068   virtual bool isOfType(const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const;
+00069 
+00070   /* Returns true if this typeName and uri match the given typeName and uri,
+00071    * or if any of this type's parents match the given typeName and uri */
+00072   virtual bool isInstanceOfType(const XMLCh* targetURI, const XMLCh* targetType, const StaticContext* context) const;
+00073   
+00074   enum AtomicObjectType {
+00075     ANY_SIMPLE_TYPE    = 0,
+00076     ANY_URI            = 1,
+00077     BASE_64_BINARY     = 2,
+00078     BOOLEAN            = 3,
+00079     DATE               = 4,
+00080     DATE_TIME          = 5,
+00081     DAY_TIME_DURATION  = 6,
+00082     DECIMAL            = 7,
+00083     DOUBLE             = 8,
+00084     DURATION           = 9,
+00085     FLOAT              = 10,
+00086     G_DAY              = 11,
+00087     G_MONTH            = 12,
+00088     G_MONTH_DAY        = 13,
+00089     G_YEAR             = 14,
+00090     G_YEAR_MONTH       = 15,
+00091     HEX_BINARY         = 16,
+00092     NOTATION           = 17,
+00093     QNAME              = 18,
+00094     STRING             = 19,
+00095     TIME               = 20,
+00096     UNTYPED_ATOMIC     = 21,
+00097     YEAR_MONTH_DURATION= 22,
+00098     NumAtomicObjectTypes= 23
+00099   };
+00100 
+00101   /* same ordering as in cast table in F&O, for debug
+00102    * enum AtomicObjectType {
+00103     UNTYPED_ATOMIC     = 0,
+00104     ANY_SIMPLE_TYPE    = 1,
+00105     STRING             = 2,
+00106     FLOAT              = 3,
+00107     DOUBLE             = 4,
+00108     DECIMAL            = 5,
+00109     DURATION           = 6,
+00110     YEAR_MONTH_DURATION= 7,
+00111     DAY_TIME_DURATION  = 8,
+00112     DATE_TIME          = 9,
+00113     TIME               = 10,
+00114     DATE               = 11,
+00115     G_YEAR_MONTH       = 12,
+00116     G_YEAR             = 13,
+00117     G_MONTH_DAY        = 14,
+00118     G_DAY              = 15,
+00119     G_MONTH            = 16,
+00120     BOOLEAN            = 17,
+00121     BASE_64_BINARY     = 18,
+00122     HEX_BINARY         = 19,
+00123     ANY_URI            = 20,
+00124     QNAME              = 21,
+00125     NOTATION           = 22,
+00126     NumAtomicObjectTypes= 23
+00127   };*/
+00128 
+00141   bool castIsSupported(AtomicObjectType targetIndex, const DynamicContext* context) const;
+00142 
+00143   virtual AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00144  
+00145   static const XMLCh fgDT_ANYATOMICTYPE[];
+00146   static const XMLCh fgDT_ANYATOMICTYPE_XERCESHASH[];
+00147 
+00148 protected:
+00149   /* internal castAs method.  This one is virtual and does the real work */
+00150   virtual AnyAtomicType::Ptr castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI,
+00151                                             const XMLCh* targetType, const DynamicContext* context) const;
+00152 
+00153 private:
+00154 
+00155   //friend class CastTable;
+00156   //template <class TYPE> friend class DatatypeFactoryTemplate;
+00157 
+00158   // class that implements the Casting Table
+00159   class CastTable {
+00160     public: 
+00161         CastTable();
+00162         bool getCell(AtomicObjectType source, 
+00163                      AtomicObjectType target) const;
+00164     private:
+00165         bool staticCastTable[NumAtomicObjectTypes][NumAtomicObjectTypes];
+00166   };
+00167 
+00168 
+00169   // reproduction of the XPath2 casting table: http://www.w3.org/TR/xquery-operators/#casting
+00170   static const CastTable staticCastTable;  
+00171 };
+00172 
+00173 #endif //  _ANYATOMICTYPE_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/AnyAtomicType_8hpp.html b/docs/simple-api/AnyAtomicType_8hpp.html new file mode 100644 index 00000000..0410a00d --- /dev/null +++ b/docs/simple-api/AnyAtomicType_8hpp.html @@ -0,0 +1,61 @@ + + +XQilla Simple API: AnyAtomicType.hpp File Reference + + + + + + +

AnyAtomicType.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/Item.hpp>
+#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for AnyAtomicType.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + + + + + + + + + + + +

+Go to the source code of this file. + + + + + + +

Classes

class  AnyAtomicType
class  AnyAtomicType::CastTable
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/AnyAtomicType_8hpp__dep__incl.map b/docs/simple-api/AnyAtomicType_8hpp__dep__incl.map new file mode 100644 index 00000000..6e3bb423 --- /dev/null +++ b/docs/simple-api/AnyAtomicType_8hpp__dep__incl.map @@ -0,0 +1,13 @@ +base referer +rect $Numeric_8hpp.html 253,8 349,32 +rect $ATStringOrDerived_8hpp.html 453,33 613,57 +rect $ATQNameOrDerived_8hpp.html 215,106 386,130 +rect $ATBooleanOrDerived_8hpp.html 214,154 387,178 +rect $ATDurationOrDerived_8hpp.html 213,202 389,226 +rect $ATAnyURIOrDerived_8hpp.html 217,250 385,274 +rect $DateOrTimeType_8hpp.html 227,298 374,322 +rect $ATUntypedAtomic_8hpp.html 223,346 378,370 +rect $ATAnySimpleType_8hpp.html 223,394 378,418 +rect $ATBase64BinaryOrDerived_8hpp.html 197,442 405,466 +rect $ATHexBinaryOrDerived_8hpp.html 207,490 394,514 +rect $ATNotationOrDerived_8hpp.html 214,538 387,562 diff --git a/docs/simple-api/AnyAtomicType_8hpp__dep__incl.md5 b/docs/simple-api/AnyAtomicType_8hpp__dep__incl.md5 new file mode 100644 index 00000000..df34f14c --- /dev/null +++ b/docs/simple-api/AnyAtomicType_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +c37eb16807104a29511ddfcf71b609c7 \ No newline at end of file diff --git a/docs/simple-api/AnyAtomicType_8hpp__dep__incl.png b/docs/simple-api/AnyAtomicType_8hpp__dep__incl.png new file mode 100644 index 00000000..d48d6103 Binary files /dev/null and b/docs/simple-api/AnyAtomicType_8hpp__dep__incl.png differ diff --git a/docs/simple-api/AnyAtomicType_8hpp__incl.map b/docs/simple-api/AnyAtomicType_8hpp__incl.map new file mode 100644 index 00000000..3d42df5b --- /dev/null +++ b/docs/simple-api/AnyAtomicType_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $Item_8hpp.html 197,108 341,132 +rect $ReferenceCounted_8hpp.html 390,109 649,133 diff --git a/docs/simple-api/AnyAtomicType_8hpp__incl.md5 b/docs/simple-api/AnyAtomicType_8hpp__incl.md5 new file mode 100644 index 00000000..32329b76 --- /dev/null +++ b/docs/simple-api/AnyAtomicType_8hpp__incl.md5 @@ -0,0 +1 @@ +03ff73f8870ed0129154a6221330763f \ No newline at end of file diff --git a/docs/simple-api/AnyAtomicType_8hpp__incl.png b/docs/simple-api/AnyAtomicType_8hpp__incl.png new file mode 100644 index 00000000..14b90e70 Binary files /dev/null and b/docs/simple-api/AnyAtomicType_8hpp__incl.png differ diff --git a/docs/simple-api/Collation_8hpp-source.html b/docs/simple-api/Collation_8hpp-source.html new file mode 100644 index 00000000..50f4e08b --- /dev/null +++ b/docs/simple-api/Collation_8hpp-source.html @@ -0,0 +1,60 @@ + + +XQilla Simple API: Collation.hpp Source File + + + + + + +

Collation.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: Collation.hpp,v 1.8 2006/11/01 16:37:11 jpcs Exp $
+00012  */
+00013 
+00014 #if !defined(AFXQ_COLLATION_H__6BA76C4A_0A5B_480B_9870_86A89A118100__INCLUDED_)
+00015 #define AFXQ_COLLATION_H__6BA76C4A_0A5B_480B_9870_86A89A118100__INCLUDED_
+00016 
+00017 #include <xqilla/framework/XQillaExport.hpp>
+00018 #include <xercesc/util/XercesDefs.hpp>
+00019 
+00020 class Sequence;
+00021 class DynamicContext;
+00022 
+00023 class XQILLA_API Collation
+00024 {
+00025 public:
+00026   virtual ~Collation() {};
+00027 
+00028   virtual const XMLCh* getCollationName() const = 0;
+00029   virtual Sequence sort(Sequence data, const DynamicContext* context) const = 0;
+00030   virtual int compare(const XMLCh* const string1, const XMLCh* const string2) const = 0;
+00031 
+00032 protected:
+00033   Collation() {}
+00034 };
+00035 
+00036 #endif // !defined(AFXQ_COLLATION_H__6BA76C4A_0A5B_480B_9870_86A89A118100__INCLUDED_)
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/Collation_8hpp.html b/docs/simple-api/Collation_8hpp.html new file mode 100644 index 00000000..4324fb8c --- /dev/null +++ b/docs/simple-api/Collation_8hpp.html @@ -0,0 +1,64 @@ + + +XQilla Simple API: Collation.hpp File Reference + + + + + + +

Collation.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for Collation.hpp:

+ +

+Go to the source code of this file. + + + + + + + +

Classes

class  Collation

Defines

#define AFXQ_COLLATION_H__6BA76C4A_0A5B_480B_9870_86A89A118100__INCLUDED_
+


Define Documentation

+

+ + + + +
+ + + + +
#define AFXQ_COLLATION_H__6BA76C4A_0A5B_480B_9870_86A89A118100__INCLUDED_
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/Collation_8hpp__incl.map b/docs/simple-api/Collation_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/simple-api/Collation_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/simple-api/Collation_8hpp__incl.md5 b/docs/simple-api/Collation_8hpp__incl.md5 new file mode 100644 index 00000000..262cfd85 --- /dev/null +++ b/docs/simple-api/Collation_8hpp__incl.md5 @@ -0,0 +1 @@ +a3a311601db6d5af378775fb7ebf986b \ No newline at end of file diff --git a/docs/simple-api/Collation_8hpp__incl.png b/docs/simple-api/Collation_8hpp__incl.png new file mode 100644 index 00000000..5c1558eb Binary files /dev/null and b/docs/simple-api/Collation_8hpp__incl.png differ diff --git a/docs/simple-api/ContextHelpers_8hpp-source.html b/docs/simple-api/ContextHelpers_8hpp-source.html new file mode 100644 index 00000000..baeeeafd --- /dev/null +++ b/docs/simple-api/ContextHelpers_8hpp-source.html @@ -0,0 +1,115 @@ + + +XQilla Simple API: ContextHelpers.hpp Source File + + + + + + +

ContextHelpers.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ContextHelpers.hpp,v 1.2 2006/11/01 16:37:11 jpcs Exp $
+00012  */
+00013 
+00014 #if !defined(AFXQ_CONTEXTHELPERS_H__D6A320F5_21F1_421D_9E46_E4373B375E1A__INCLUDED_)
+00015 #define AFXQ_CONTEXTHELPERS_H__D6A320F5_21F1_421D_9E46_E4373B375E1A__INCLUDED_
+00016 
+00017 #include <xqilla/framework/XQillaExport.hpp>
+00018 #include <xqilla/context/DynamicContext.hpp>
+00019 
+00020 class XQILLA_API AutoNodeSetOrderingReset
+00021 {
+00022 public:
+00023   AutoNodeSetOrderingReset(StaticContext* context, StaticContext::NodeSetOrdering ordering = StaticContext::ORDERING_UNORDERED)
+00024   {
+00025     context_ = context;
+00026     ordering_ = context->getNodeSetOrdering();
+00027     context->setNodeSetOrdering(ordering);
+00028   }
+00029 
+00030   ~AutoNodeSetOrderingReset()
+00031   {
+00032     context_->setNodeSetOrdering(ordering_);
+00033   }
+00034 
+00035 protected:
+00036   StaticContext* context_;
+00037   StaticContext::NodeSetOrdering ordering_;  
+00038 };
+00039 
+00040 class XQILLA_API AutoContextItemTypeReset
+00041 {
+00042 public:
+00043   AutoContextItemTypeReset(StaticContext* context, const StaticType &sType)
+00044   {
+00045     context_ = context;
+00046     sType_ = context->getContextItemType();
+00047     context->setContextItemType(sType);
+00048   }
+00049 
+00050   ~AutoContextItemTypeReset()
+00051   {
+00052     context_->setContextItemType(sType_);
+00053   }
+00054 
+00055 protected:
+00056   StaticContext* context_;
+00057   StaticType sType_;
+00058 };
+00059 
+00060 class XQILLA_API AutoContextInfoReset
+00061 {
+00062 public:
+00063   AutoContextInfoReset(DynamicContext* context)
+00064     : oldContextItem(context->getContextItem()),
+00065       oldContextPosition(context->getContextPosition()),
+00066       oldContextSize(context->getContextSize()),
+00067       context_(context)
+00068   {
+00069   }
+00070 
+00071   ~AutoContextInfoReset()
+00072   {
+00073     resetContextInfo();
+00074   }
+00075 
+00076   void resetContextInfo()
+00077   {
+00078     context_->setContextItem(oldContextItem);
+00079     context_->setContextPosition(oldContextPosition);
+00080     context_->setContextSize(oldContextSize);
+00081   }
+00082 
+00083   Item::Ptr oldContextItem;
+00084   unsigned int oldContextPosition;
+00085   unsigned int oldContextSize;
+00086 
+00087 private:
+00088   DynamicContext* context_;
+00089 };
+00090 
+00091 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ContextHelpers_8hpp.html b/docs/simple-api/ContextHelpers_8hpp.html new file mode 100644 index 00000000..1ed35689 --- /dev/null +++ b/docs/simple-api/ContextHelpers_8hpp.html @@ -0,0 +1,74 @@ + + +XQilla Simple API: ContextHelpers.hpp File Reference + + + + + + +

ContextHelpers.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/context/DynamicContext.hpp>
+ +

+Include dependency graph for ContextHelpers.hpp:

+ + + + + + + +

+Go to the source code of this file. + + + + + + + + + + + +

Classes

class  AutoNodeSetOrderingReset
class  AutoContextItemTypeReset
class  AutoContextInfoReset

Defines

#define AFXQ_CONTEXTHELPERS_H__D6A320F5_21F1_421D_9E46_E4373B375E1A__INCLUDED_
+


Define Documentation

+

+ + + + +
+ + + + +
#define AFXQ_CONTEXTHELPERS_H__D6A320F5_21F1_421D_9E46_E4373B375E1A__INCLUDED_
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ContextHelpers_8hpp__incl.map b/docs/simple-api/ContextHelpers_8hpp__incl.map new file mode 100644 index 00000000..3c0aaa83 --- /dev/null +++ b/docs/simple-api/ContextHelpers_8hpp__incl.map @@ -0,0 +1,5 @@ +base referer +rect $DynamicContext_8hpp.html 194,82 421,106 +rect $StaticContext_8hpp.html 488,58 696,82 +rect $XQDebugCallback_8hpp.html 473,106 710,130 +rect $ATDurationOrDerived_8hpp.html 470,154 713,178 diff --git a/docs/simple-api/ContextHelpers_8hpp__incl.md5 b/docs/simple-api/ContextHelpers_8hpp__incl.md5 new file mode 100644 index 00000000..c3f480ec --- /dev/null +++ b/docs/simple-api/ContextHelpers_8hpp__incl.md5 @@ -0,0 +1 @@ +3e82b99d4970287270714468eafcb78b \ No newline at end of file diff --git a/docs/simple-api/ContextHelpers_8hpp__incl.png b/docs/simple-api/ContextHelpers_8hpp__incl.png new file mode 100644 index 00000000..dcf83c12 Binary files /dev/null and b/docs/simple-api/ContextHelpers_8hpp__incl.png differ diff --git a/docs/simple-api/DOMDocument_8hpp-source.html b/docs/simple-api/DOMDocument_8hpp-source.html new file mode 100644 index 00000000..a8b1da8e --- /dev/null +++ b/docs/simple-api/DOMDocument_8hpp-source.html @@ -0,0 +1,207 @@ + + +XQilla Simple API: DOMDocument.hpp Source File + + + + + + +

DOMDocument.hpp

Go to the documentation of this file.
00001 #ifndef DOMDocument_HEADER_GUARD_
+00002 #define DOMDocument_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMDocument.hpp 176250 2004-12-21 16:02:51Z cargilld $
+00022 */
+00023 
+00024 #include <xercesc/util/XercesDefs.hpp>
+00025 #include <xercesc/dom/DOMNode.hpp>
+00026 #include <xercesc/dom/DOMDocumentRange.hpp>
+00027 #include <xercesc/dom/DOMDocumentTraversal.hpp>
+00028 #include <xercesc/dom/DOMXPathEvaluator.hpp>
+00029 
+00030 XERCES_CPP_NAMESPACE_BEGIN
+00031 
+00032 class DOMConfiguration;
+00033 class DOMDocumentType;
+00034 class DOMElement;
+00035 class DOMDocumentFragment;
+00036 class DOMComment;
+00037 class DOMCDATASection;
+00038 class DOMProcessingInstruction;
+00039 class DOMAttr;
+00040 class DOMEntity;
+00041 class DOMEntityReference;
+00042 class DOMImplementation;
+00043 class DOMNodeFilter;
+00044 class DOMNodeList;
+00045 class DOMNotation;
+00046 class DOMText;
+00047 class DOMNode;
+00048 
+00049 
+00063 class CDOM_EXPORT DOMDocument: public DOMDocumentRange,
+00064  public DOMXPathEvaluator,
+00065  public DOMDocumentTraversal,
+00066  public DOMNode {
+00067 
+00068 
+00069 protected:
+00070     // -----------------------------------------------------------------------
+00071     //  Hidden constructors
+00072     // -----------------------------------------------------------------------
+00075     DOMDocument() {};
+00077 
+00078 private:
+00079     // -----------------------------------------------------------------------
+00080     // Unimplemented constructors and operators
+00081     // -----------------------------------------------------------------------
+00084     DOMDocument(const DOMDocument &);
+00085     DOMDocument & operator = (const DOMDocument &);
+00087 
+00088 public:
+00089     // -----------------------------------------------------------------------
+00090     //  All constructors are hidden, just the destructor is available
+00091     // -----------------------------------------------------------------------
+00098     virtual ~DOMDocument() {};
+00100 
+00101     // -----------------------------------------------------------------------
+00102     // Virtual DOMDocument interface
+00103     // -----------------------------------------------------------------------
+00126     virtual DOMElement     *createElement(const XMLCh *tagName) = 0;
+00127 
+00133     virtual DOMDocumentFragment   *createDocumentFragment() = 0;
+00134 
+00141     virtual DOMText         *createTextNode(const XMLCh *data) = 0;
+00142 
+00149     virtual DOMComment      *createComment(const XMLCh *data) = 0;
+00150 
+00158     virtual DOMCDATASection   *createCDATASection(const XMLCh *data) = 0;
+00159 
+00171     virtual DOMProcessingInstruction *createProcessingInstruction(const XMLCh *target,
+00172         const XMLCh *data) = 0;
+00173 
+00174 
+00191     virtual DOMAttr     *createAttribute(const XMLCh *name) = 0;
+00192 
+00193 
+00211     virtual DOMEntityReference    *createEntityReference(const XMLCh *name) = 0;
+00212 
+00224     virtual DOMDocumentType       *getDoctype() const = 0;
+00225 
+00231     virtual DOMImplementation  *getImplementation() const = 0;
+00232 
+00238     virtual DOMElement     *getDocumentElement() const = 0;
+00239 
+00254     virtual DOMNodeList      *getElementsByTagName(const XMLCh *tagname) const = 0;
+00255 
+00257 
+00260 
+00359     virtual DOMNode        *importNode(DOMNode *importedNode, bool deep) = 0;
+00360 
+00416     virtual DOMElement         *createElementNS(const XMLCh *namespaceURI,
+00417                                                       const XMLCh *qualifiedName) = 0;
+00418 
+00481     virtual DOMAttr        *createAttributeNS(const XMLCh *namespaceURI,
+00482                                                     const XMLCh *qualifiedName) = 0;
+00483 
+00496     virtual DOMNodeList        *getElementsByTagNameNS(const XMLCh *namespaceURI,
+00497                                                              const XMLCh *localName) const = 0;
+00498 
+00512     virtual  DOMElement        * getElementById(const XMLCh *elementId) const = 0;
+00514 
+00517 
+00528     virtual const XMLCh*           getActualEncoding() const = 0;
+00529 
+00540     virtual void                   setActualEncoding(const XMLCh* actualEncoding) = 0;
+00541 
+00550     virtual const XMLCh*           getEncoding() const = 0;
+00551 
+00560     virtual void                   setEncoding(const XMLCh* encoding) = 0;
+00561 
+00571     virtual bool                   getStandalone() const = 0;
+00572 
+00582     virtual void                   setStandalone(bool standalone) = 0;
+00583 
+00593     virtual const XMLCh*           getVersion() const = 0;
+00594 
+00604     virtual void                   setVersion(const XMLCh* version) = 0;
+00605 
+00616     virtual const XMLCh*           getDocumentURI() const = 0;
+00627     virtual void                   setDocumentURI(const XMLCh* documentURI) = 0;
+00628 
+00641     virtual bool                   getStrictErrorChecking() const = 0;
+00654     virtual void                   setStrictErrorChecking(bool strictErrorChecking) = 0;
+00655 
+00702     virtual DOMNode* renameNode(DOMNode* n, const XMLCh* namespaceURI, const XMLCh* name) = 0;
+00703 
+00704 
+00766     virtual DOMNode*               adoptNode(DOMNode* source) = 0;
+00767 
+00792     virtual void                   normalizeDocument() = 0;
+00793 
+00794 
+00810     virtual DOMConfiguration*      getDOMConfiguration() const = 0;
+00811 
+00813 
+00814     // -----------------------------------------------------------------------
+00815     // Non-standard extension
+00816     // -----------------------------------------------------------------------
+00826     virtual DOMEntity     *createEntity(const XMLCh *name) = 0;
+00827 
+00836     virtual DOMDocumentType *createDocumentType(const XMLCh *name) = 0;
+00837 
+00838     /***
+00839      * Provide default implementation to maintain source code compatibility
+00840      ***/
+00841     virtual DOMDocumentType* createDocumentType(const XMLCh *qName,
+00842                                                 const XMLCh*,  //publicId,
+00843                                                 const XMLCh*   //systemId
+00844                                                )
+00845     {
+00846         return createDocumentType(qName);
+00847     }
+00848 
+00857     virtual DOMNotation *createNotation(const XMLCh *name) = 0;
+00858 
+00868     virtual DOMElement         *createElementNS(const XMLCh *namespaceURI,
+00869                                                   const XMLCh *qualifiedName,
+00870                                                   const XMLSSize_t lineNum,
+00871                                                   const XMLSSize_t columnNum) = 0;
+00873 
+00874 };
+00875 
+00876 XERCES_CPP_NAMESPACE_END
+00877 
+00878 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/DOMDocument_8hpp.html b/docs/simple-api/DOMDocument_8hpp.html new file mode 100644 index 00000000..2510055a --- /dev/null +++ b/docs/simple-api/DOMDocument_8hpp.html @@ -0,0 +1,47 @@ + + +XQilla Simple API: DOMDocument.hpp File Reference + + + + + + +

DOMDocument.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xercesc/dom/DOMNode.hpp>
+#include <xercesc/dom/DOMDocumentRange.hpp>
+#include <xercesc/dom/DOMDocumentTraversal.hpp>
+#include <xercesc/dom/DOMXPathEvaluator.hpp>
+ +

+Include dependency graph for DOMDocument.hpp:

+ + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMDocument
 The DOMDocument interface represents the entire XML document. More...
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/DOMDocument_8hpp__incl.map b/docs/simple-api/DOMDocument_8hpp__incl.map new file mode 100644 index 00000000..fd1fedb4 --- /dev/null +++ b/docs/simple-api/DOMDocument_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOMNode_8hpp.html 238,58 430,82 diff --git a/docs/simple-api/DOMDocument_8hpp__incl.md5 b/docs/simple-api/DOMDocument_8hpp__incl.md5 new file mode 100644 index 00000000..4363955e --- /dev/null +++ b/docs/simple-api/DOMDocument_8hpp__incl.md5 @@ -0,0 +1 @@ +5fc0e7d250db511778c3739a56dd20ef \ No newline at end of file diff --git a/docs/simple-api/DOMDocument_8hpp__incl.png b/docs/simple-api/DOMDocument_8hpp__incl.png new file mode 100644 index 00000000..fb6a1dbb Binary files /dev/null and b/docs/simple-api/DOMDocument_8hpp__incl.png differ diff --git a/docs/simple-api/DOMNode_8hpp-source.html b/docs/simple-api/DOMNode_8hpp-source.html new file mode 100644 index 00000000..99df1769 --- /dev/null +++ b/docs/simple-api/DOMNode_8hpp-source.html @@ -0,0 +1,241 @@ + + +XQilla Simple API: DOMNode.hpp Source File + + + + + + +

DOMNode.hpp

Go to the documentation of this file.
00001 #ifndef DOMNode_HEADER_GUARD_
+00002 #define DOMNode_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2002,2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 /*
+00021  * $Id: DOMNode.hpp 176294 2005-01-20 17:36:18Z cargilld $
+00022  */
+00023 
+00024 #include <xercesc/util/XercesDefs.hpp>
+00025 
+00026 XERCES_CPP_NAMESPACE_BEGIN
+00027 
+00028 
+00029 class DOMDocument;
+00030 class DOMNamedNodeMap;
+00031 class DOMNodeList;
+00032 class DOMUserDataHandler;
+00033 
+00138 class  CDOM_EXPORT DOMNode {
+00139 protected:
+00140     // -----------------------------------------------------------------------
+00141     //  Hidden constructors
+00142     // -----------------------------------------------------------------------
+00145     DOMNode() {}
+00146     DOMNode(const DOMNode &) {}
+00148 
+00149 private:    
+00150     // -----------------------------------------------------------------------
+00151     // Unimplemented constructors and operators
+00152     // -----------------------------------------------------------------------
+00155     DOMNode & operator = (const DOMNode &);
+00157 
+00158 public:
+00159     // -----------------------------------------------------------------------
+00160     //  All constructors are hidden, just the destructor is available
+00161     // -----------------------------------------------------------------------
+00168     virtual ~DOMNode() {};
+00170 
+00171     // -----------------------------------------------------------------------
+00172     //  Class Types
+00173     // -----------------------------------------------------------------------
+00181     enum NodeType {
+00182         ELEMENT_NODE                = 1,
+00183         ATTRIBUTE_NODE              = 2,
+00184         TEXT_NODE                   = 3,
+00185         CDATA_SECTION_NODE          = 4,
+00186         ENTITY_REFERENCE_NODE       = 5,
+00187         ENTITY_NODE                 = 6,
+00188         PROCESSING_INSTRUCTION_NODE = 7,
+00189         COMMENT_NODE                = 8,
+00190         DOCUMENT_NODE               = 9,
+00191         DOCUMENT_TYPE_NODE          = 10,
+00192         DOCUMENT_FRAGMENT_NODE      = 11,
+00193         NOTATION_NODE               = 12
+00194     };
+00195 
+00222     enum DOMTreePosition {
+00223         TREE_POSITION_PRECEDING   = 0x01,
+00224         TREE_POSITION_FOLLOWING   = 0x02,
+00225         TREE_POSITION_ANCESTOR    = 0x04,
+00226         TREE_POSITION_DESCENDANT  = 0x08,
+00227         TREE_POSITION_EQUIVALENT  = 0x10,
+00228         TREE_POSITION_SAME_NODE   = 0x20,
+00229         TREE_POSITION_DISCONNECTED = 0x00
+00230     };
+00232 
+00233     // -----------------------------------------------------------------------
+00234     //  Virtual DOMNode interface
+00235     // -----------------------------------------------------------------------
+00238     // -----------------------------------------------------------------------
+00239     //  Getter methods
+00240     // -----------------------------------------------------------------------
+00245     virtual const XMLCh *   getNodeName() const = 0;
+00246 
+00254     virtual const XMLCh *       getNodeValue() const = 0;
+00255 
+00260     virtual short           getNodeType() const = 0;
+00261 
+00272     virtual DOMNode        *getParentNode() const = 0;
+00273 
+00288     virtual DOMNodeList    *getChildNodes() const = 0;
+00295     virtual DOMNode        *getFirstChild() const = 0;
+00296 
+00303     virtual DOMNode        *getLastChild() const = 0;
+00304 
+00311     virtual DOMNode        *getPreviousSibling() const = 0;
+00312 
+00319     virtual DOMNode        *getNextSibling() const = 0;
+00320 
+00326     virtual DOMNamedNodeMap  *getAttributes() const = 0;
+00327 
+00339     virtual DOMDocument      *getOwnerDocument() const = 0;
+00340 
+00341     // -----------------------------------------------------------------------
+00342     //  Node methods
+00343     // -----------------------------------------------------------------------
+00363     virtual DOMNode        * cloneNode(bool deep) const = 0;
+00364 
+00392     virtual DOMNode       *insertBefore(DOMNode *newChild,
+00393                                           DOMNode *refChild) = 0;
+00394 
+00395 
+00419     virtual DOMNode  *replaceChild(DOMNode *newChild,
+00420                                      DOMNode *oldChild) = 0;
+00433     virtual DOMNode        *removeChild(DOMNode *oldChild) = 0;
+00434 
+00455     virtual DOMNode        *appendChild(DOMNode *newChild) = 0;
+00456 
+00457     // -----------------------------------------------------------------------
+00458     //  Query methods
+00459     // -----------------------------------------------------------------------
+00468     virtual bool             hasChildNodes() const = 0;
+00469 
+00470     // -----------------------------------------------------------------------
+00471     //  Setter methods
+00472     // -----------------------------------------------------------------------
+00488     virtual void              setNodeValue(const XMLCh  *nodeValue) = 0;
+00490 
+00513     virtual void              normalize() = 0;
+00514 
+00530     virtual bool              isSupported(const XMLCh *feature,
+00531                                                const XMLCh *version) const = 0;
+00532 
+00548     virtual const XMLCh *         getNamespaceURI() const = 0;
+00549 
+00556     virtual const XMLCh *          getPrefix() const = 0;
+00557 
+00567     virtual const XMLCh *          getLocalName() const = 0;
+00568 
+00602     virtual void              setPrefix(const XMLCh * prefix) = 0;
+00603 
+00610     virtual bool              hasAttributes() const = 0;
+00612 
+00632     virtual bool              isSameNode(const DOMNode* other) const = 0;
+00633 
+00676     virtual bool              isEqualNode(const DOMNode* arg) const = 0;
+00677 
+00678 
+00706     virtual void*             setUserData(const XMLCh* key,
+00707                                           void* data,
+00708                                           DOMUserDataHandler* handler) = 0;
+00709 
+00723     virtual void*             getUserData(const XMLCh* key) const = 0;
+00724 
+00725 
+00744     virtual const XMLCh*           getBaseURI() const = 0;
+00745 
+00758     virtual short                  compareTreePosition(const DOMNode* other) const = 0;
+00759 
+00803     virtual const XMLCh*           getTextContent() const = 0;
+00804 
+00818     virtual void                   setTextContent(const XMLCh* textContent) = 0;
+00819 
+00837     virtual const XMLCh*           lookupNamespacePrefix(const XMLCh* namespaceURI,
+00838                                                          bool useDefault) const = 0;
+00839 
+00851     virtual bool                   isDefaultNamespace(const XMLCh* namespaceURI) const = 0;
+00852 
+00866     virtual const XMLCh*           lookupNamespaceURI(const XMLCh* prefix) const  = 0;
+00867 
+00884     virtual DOMNode*               getInterface(const XMLCh* feature) = 0;
+00886 
+00887     // -----------------------------------------------------------------------
+00888     //  Non-standard Extension
+00889     // -----------------------------------------------------------------------
+00905     virtual void              release() = 0;
+00907 #if defined(XML_DOMREFCOUNT_EXPERIMENTAL)
+00908     // -----------------------------------------------------------------------
+00909     //  Non-standard Extension
+00910     // -----------------------------------------------------------------------
+00920     virtual void decRefCount() {}
+00922 
+00923     // -----------------------------------------------------------------------
+00924     //  Non-standard Extension
+00925     // -----------------------------------------------------------------------
+00932     virtual void incRefCount() {}
+00934 #endif
+00935 };
+00936 
+00937 /***
+00938  * Utilities macros for getting memory manager within DOM
+00939 ***/
+00940 #define GET_OWNER_DOCUMENT(ptr)      \
+00941         ((DOMDocumentImpl*)(ptr->getOwnerDocument()))
+00942 
+00943 #define GET_DIRECT_MM(ptr)           \
+00944         ptr ? ((DOMDocumentImpl*)ptr)->getMemoryManager() : XMLPlatformUtils::fgMemoryManager        
+00945 
+00946 #define GET_INDIRECT_MM(ptr)                                                    \
+00947         !ptr ? XMLPlatformUtils::fgMemoryManager :                              \
+00948         GET_OWNER_DOCUMENT(ptr) ? GET_OWNER_DOCUMENT(ptr)->getMemoryManager() : \
+00949         XMLPlatformUtils::fgMemoryManager
+00950 
+00951 /***
+00952  * For DOMNode and its derivatives
+00953 ***/
+00954 #define GetDOMNodeMemoryManager GET_INDIRECT_MM(this)
+00955 
+00956 XERCES_CPP_NAMESPACE_END
+00957 
+00958 #endif
+00959 
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/DOMNode_8hpp.html b/docs/simple-api/DOMNode_8hpp.html new file mode 100644 index 00000000..5daa36b5 --- /dev/null +++ b/docs/simple-api/DOMNode_8hpp.html @@ -0,0 +1,166 @@ + + +XQilla Simple API: DOMNode.hpp File Reference + + + + + + +

DOMNode.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for DOMNode.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMNode
 The DOMNode interface is the primary datatype for the entire Document Object Model. More...

Defines

#define GET_OWNER_DOCUMENT(ptr)   ((DOMDocumentImpl*)(ptr->getOwnerDocument()))
#define GET_DIRECT_MM(ptr)   ptr ? ((DOMDocumentImpl*)ptr)->getMemoryManager() : XMLPlatformUtils::fgMemoryManager
#define GET_INDIRECT_MM(ptr)
#define GetDOMNodeMemoryManager   GET_INDIRECT_MM(this)
+


Define Documentation

+

+ + + + +
+ + + + + + + + + +
#define GET_DIRECT_MM ptr   )    ptr ? ((DOMDocumentImpl*)ptr)->getMemoryManager() : XMLPlatformUtils::fgMemoryManager
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
#define GET_INDIRECT_MM ptr   ) 
+
+ + + + + +
+   + + +

+Value:

!ptr ? XMLPlatformUtils::fgMemoryManager :                              \
+        GET_OWNER_DOCUMENT(ptr) ? GET_OWNER_DOCUMENT(ptr)->getMemoryManager() : \
+        XMLPlatformUtils::fgMemoryManager
+
+

+ + + + +
+ + + + + + + + + +
#define GET_OWNER_DOCUMENT ptr   )    ((DOMDocumentImpl*)(ptr->getOwnerDocument()))
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
#define GetDOMNodeMemoryManager   GET_INDIRECT_MM(this)
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/DOMNode_8hpp__dep__incl.map b/docs/simple-api/DOMNode_8hpp__dep__incl.map new file mode 100644 index 00000000..6a459782 --- /dev/null +++ b/docs/simple-api/DOMNode_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $DOMDocument_8hpp.html 169,8 307,32 diff --git a/docs/simple-api/DOMNode_8hpp__dep__incl.md5 b/docs/simple-api/DOMNode_8hpp__dep__incl.md5 new file mode 100644 index 00000000..16b4d6fb --- /dev/null +++ b/docs/simple-api/DOMNode_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +98e97681653c9e45589492f1d35f4e3c \ No newline at end of file diff --git a/docs/simple-api/DOMNode_8hpp__dep__incl.png b/docs/simple-api/DOMNode_8hpp__dep__incl.png new file mode 100644 index 00000000..977a562b Binary files /dev/null and b/docs/simple-api/DOMNode_8hpp__dep__incl.png differ diff --git a/docs/simple-api/DOMNode_8hpp__incl.map b/docs/simple-api/DOMNode_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/simple-api/DOMNode_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/simple-api/DOMNode_8hpp__incl.md5 b/docs/simple-api/DOMNode_8hpp__incl.md5 new file mode 100644 index 00000000..b846f86e --- /dev/null +++ b/docs/simple-api/DOMNode_8hpp__incl.md5 @@ -0,0 +1 @@ +b2554c334ca1d6418652fbcd95f17e00 \ No newline at end of file diff --git a/docs/simple-api/DOMNode_8hpp__incl.png b/docs/simple-api/DOMNode_8hpp__incl.png new file mode 100644 index 00000000..78a03f81 Binary files /dev/null and b/docs/simple-api/DOMNode_8hpp__incl.png differ diff --git a/docs/simple-api/DOMXPathNSResolver_8hpp-source.html b/docs/simple-api/DOMXPathNSResolver_8hpp-source.html new file mode 100644 index 00000000..299303d4 --- /dev/null +++ b/docs/simple-api/DOMXPathNSResolver_8hpp-source.html @@ -0,0 +1,88 @@ + + +XQilla Simple API: DOMXPathNSResolver.hpp Source File + + + + + + +

DOMXPathNSResolver.hpp

Go to the documentation of this file.
00001 #ifndef DOMXPathNSResolver_HEADER_GUARD_
+00002 #define DOMXPathNSResolver_HEADER_GUARD_
+00003 
+00004 /*
+00005  * Copyright 2001-2004 The Apache Software Foundation.
+00006  * 
+00007  * Licensed under the Apache License, Version 2.0 (the "License");
+00008  * you may not use this file except in compliance with the License.
+00009  * You may obtain a copy of the License at
+00010  * 
+00011  *      http://www.apache.org/licenses/LICENSE-2.0
+00012  * 
+00013  * Unless required by applicable law or agreed to in writing, software
+00014  * distributed under the License is distributed on an "AS IS" BASIS,
+00015  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00016  * See the License for the specific language governing permissions and
+00017  * limitations under the License.
+00018  */
+00019 
+00020 #include <xercesc/util/XercesDefs.hpp>
+00021 
+00022 XERCES_CPP_NAMESPACE_BEGIN
+00031 class CDOM_EXPORT DOMXPathNSResolver
+00032 {
+00033 
+00034 protected:
+00035     // -----------------------------------------------------------------------
+00036     //  Hidden constructors
+00037     // -----------------------------------------------------------------------
+00040     DOMXPathNSResolver() {};
+00042 
+00043 private:
+00044     // -----------------------------------------------------------------------
+00045     // Unimplemented constructors and operators
+00046     // -----------------------------------------------------------------------
+00049     DOMXPathNSResolver(const DOMXPathNSResolver &);
+00050     DOMXPathNSResolver& operator = (const  DOMXPathNSResolver&);
+00052 
+00053 public:
+00054     // -----------------------------------------------------------------------
+00055     //  All constructors are hidden, just the destructor is available
+00056     // -----------------------------------------------------------------------
+00063     virtual ~DOMXPathNSResolver() {};
+00065 
+00066     // -----------------------------------------------------------------------
+00067     // Virtual DOMDocument interface
+00068     // -----------------------------------------------------------------------
+00071 
+00078     virtual const XMLCh*          lookupNamespaceURI(const XMLCh* prefix) const = 0;
+00080 
+00081 
+00082     // -----------------------------------------------------------------------
+00083     // Non-standard extension
+00084     // -----------------------------------------------------------------------
+00087 
+00098     virtual const XMLCh*          lookupPrefix(const XMLCh* URI) const = 0;
+00099 
+00100 
+00102 };
+00103 
+00104 XERCES_CPP_NAMESPACE_END
+00105 
+00106 #endif
+00107 
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/DOMXPathNSResolver_8hpp.html b/docs/simple-api/DOMXPathNSResolver_8hpp.html new file mode 100644 index 00000000..12238a95 --- /dev/null +++ b/docs/simple-api/DOMXPathNSResolver_8hpp.html @@ -0,0 +1,40 @@ + + +XQilla Simple API: DOMXPathNSResolver.hpp File Reference + + + + + + +

DOMXPathNSResolver.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for DOMXPathNSResolver.hpp:

+ +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::DOMXPathNSResolver
 The DOMXPathNSResolver interface permit prefix strings in the expression to be properly bound to namespaceURI strings. More...
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/DOMXPathNSResolver_8hpp__incl.map b/docs/simple-api/DOMXPathNSResolver_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/simple-api/DOMXPathNSResolver_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/simple-api/DOMXPathNSResolver_8hpp__incl.md5 b/docs/simple-api/DOMXPathNSResolver_8hpp__incl.md5 new file mode 100644 index 00000000..15311042 --- /dev/null +++ b/docs/simple-api/DOMXPathNSResolver_8hpp__incl.md5 @@ -0,0 +1 @@ +4b810ddbdd941f3c957fc621bae64de4 \ No newline at end of file diff --git a/docs/simple-api/DOMXPathNSResolver_8hpp__incl.png b/docs/simple-api/DOMXPathNSResolver_8hpp__incl.png new file mode 100644 index 00000000..9c44c0a9 Binary files /dev/null and b/docs/simple-api/DOMXPathNSResolver_8hpp__incl.png differ diff --git a/docs/simple-api/DateOrTimeType_8hpp-source.html b/docs/simple-api/DateOrTimeType_8hpp-source.html new file mode 100644 index 00000000..8479e912 --- /dev/null +++ b/docs/simple-api/DateOrTimeType_8hpp-source.html @@ -0,0 +1,61 @@ + + +XQilla Simple API: DateOrTimeType.hpp Source File + + + + + + +

DateOrTimeType.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: DateOrTimeType.hpp,v 1.7 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _DATEORTIMETYPE_HPP
+00015 #define _DATEORTIMETYPE_HPP
+00016 
+00017 #include <xercesc/util/XMLString.hpp>
+00018 #include <xqilla/items/AnyAtomicType.hpp>
+00019 
+00020 #include <xqilla/framework/XQillaExport.hpp>
+00021 
+00022 class ATDecimalOrDerived;
+00023 class ATDurationOrDerived;
+00024 
+00025 class XQILLA_API DateOrTimeType : public AnyAtomicType
+00026 {
+00027 public:
+00028   typedef RefCountPointer<const DateOrTimeType> Ptr;
+00029 
+00030   /* is this type date or time based?  Return true by default */
+00031   virtual bool isDateOrTimeTypeValue() const;
+00032 
+00036   virtual bool hasTimezone() const = 0;
+00037 
+00038 };
+00039 
+00040 #endif //  _ATDATETIMEORDERIVED_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/DateOrTimeType_8hpp.html b/docs/simple-api/DateOrTimeType_8hpp.html new file mode 100644 index 00000000..838246c1 --- /dev/null +++ b/docs/simple-api/DateOrTimeType_8hpp.html @@ -0,0 +1,56 @@ + + +XQilla Simple API: DateOrTimeType.hpp File Reference + + + + + + +

DateOrTimeType.hpp File Reference

#include <xercesc/util/XMLString.hpp>
+#include <xqilla/items/AnyAtomicType.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+ +

+Include dependency graph for DateOrTimeType.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + + + + + + + + +

+Go to the source code of this file. + + + + +

Classes

class  DateOrTimeType
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/DateOrTimeType_8hpp__dep__incl.map b/docs/simple-api/DateOrTimeType_8hpp__dep__incl.map new file mode 100644 index 00000000..db6360da --- /dev/null +++ b/docs/simple-api/DateOrTimeType_8hpp__dep__incl.map @@ -0,0 +1,10 @@ +base referer +rect $ATDateOrDerived_8hpp.html 228,8 380,32 +rect $ATDateTimeOrDerived_8hpp.html 213,56 394,80 +rect $ATGDayOrDerived_8hpp.html 225,104 382,128 +rect $ATGMonthOrDerived_8hpp.html 218,152 389,176 +rect $ATGMonthDayOrDerived_8hpp.html 206,200 401,224 +rect $ATGYearMonthOrDerived_8hpp.html 205,248 402,272 +rect $ATGYearOrDerived_8hpp.html 224,296 384,320 +rect $ATTimeOrDerived_8hpp.html 226,344 381,368 +rect $ItemFactory_8hpp.html 450,176 568,200 diff --git a/docs/simple-api/DateOrTimeType_8hpp__dep__incl.md5 b/docs/simple-api/DateOrTimeType_8hpp__dep__incl.md5 new file mode 100644 index 00000000..88a91083 --- /dev/null +++ b/docs/simple-api/DateOrTimeType_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +e6152d5334822555067f41be8c2af743 \ No newline at end of file diff --git a/docs/simple-api/DateOrTimeType_8hpp__dep__incl.png b/docs/simple-api/DateOrTimeType_8hpp__dep__incl.png new file mode 100644 index 00000000..fd352318 Binary files /dev/null and b/docs/simple-api/DateOrTimeType_8hpp__dep__incl.png differ diff --git a/docs/simple-api/DateOrTimeType_8hpp__incl.map b/docs/simple-api/DateOrTimeType_8hpp__incl.map new file mode 100644 index 00000000..f69a755f --- /dev/null +++ b/docs/simple-api/DateOrTimeType_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $AnyAtomicType_8hpp.html 205,84 416,108 +rect $Item_8hpp.html 464,58 608,82 diff --git a/docs/simple-api/DateOrTimeType_8hpp__incl.md5 b/docs/simple-api/DateOrTimeType_8hpp__incl.md5 new file mode 100644 index 00000000..7118165f --- /dev/null +++ b/docs/simple-api/DateOrTimeType_8hpp__incl.md5 @@ -0,0 +1 @@ +9f3edfb2bf92cdae90ca8faebf0cac63 \ No newline at end of file diff --git a/docs/simple-api/DateOrTimeType_8hpp__incl.png b/docs/simple-api/DateOrTimeType_8hpp__incl.png new file mode 100644 index 00000000..1faa30ca Binary files /dev/null and b/docs/simple-api/DateOrTimeType_8hpp__incl.png differ diff --git a/docs/simple-api/DynamicContext_8hpp-source.html b/docs/simple-api/DynamicContext_8hpp-source.html new file mode 100644 index 00000000..2e32fa11 --- /dev/null +++ b/docs/simple-api/DynamicContext_8hpp-source.html @@ -0,0 +1,97 @@ + + +XQilla Simple API: DynamicContext.hpp Source File + + + + + + +

DynamicContext.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: DynamicContext.hpp,v 1.15 2006/11/01 16:37:11 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _DYNAMICCONTEXT_HPP
+00015 #define _DYNAMICCONTEXT_HPP
+00016 
+00017 #include <xqilla/context/StaticContext.hpp>
+00018 #include <xqilla/context/XQDebugCallback.hpp>
+00019 #include <xqilla/items/ATDurationOrDerived.hpp>
+00020 
+00021 class Sequence;
+00022 class Item;
+00023 class URIResolver;
+00024 class VariableStore;
+00025 class ItemFactory;
+00026 
+00028 class XQILLA_API DynamicContext : public StaticContext
+00029 {
+00030 public:
+00031   virtual ~DynamicContext() {};
+00032 
+00034   virtual void incrementDocumentRefCount(const XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* document) const = 0;
+00036   virtual void decrementDocumentRefCount(const XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* document) const = 0;
+00037 
+00039   virtual void clearDynamicContext() = 0;
+00040 
+00042   virtual Item::Ptr getContextItem() const = 0;
+00044   virtual void setContextItem(const Item::Ptr &item) = 0;
+00048   virtual void setExternalContextNode(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node) = 0;
+00049 
+00051   virtual unsigned int getContextPosition() const = 0;
+00053   virtual void setContextPosition(unsigned int pos) = 0;
+00054 
+00056   virtual unsigned int getContextSize() const = 0;
+00058   virtual void setContextSize(unsigned int size) = 0;
+00059   
+00061   virtual VariableStore* getVariableStore() = 0;
+00062 
+00064   virtual time_t getCurrentTime() const = 0;
+00066   virtual void setCurrentTime(time_t newTime) = 0;
+00067 
+00069   virtual ATDurationOrDerived::Ptr getImplicitTimezone() const = 0;
+00071   virtual void setImplicitTimezone(const ATDurationOrDerived::Ptr &timezoneAsDuration) = 0;
+00072 
+00085   virtual void registerURIResolver(URIResolver *resolver) = 0;
+00086   /* Resolve the given uri (and baseUri) to a DOMDocument. If the uri
+00087      is relative, the base uri is obtained from the context. */
+00088   virtual Sequence resolveDocument(const XMLCh* uri, const LocationInfo *location) = 0;
+00089   /* Resolve the given uri (and baseUri) to a ist of DOMNode objects. If the uri
+00090      is relative, the base uri is obtained from the context. */
+00091   virtual Sequence resolveCollection(const XMLCh* uri, const LocationInfo *location) = 0;
+00092   virtual Sequence resolveDefaultCollection() = 0;
+00094   virtual Node::Ptr validate(const Node::Ptr &node, DocumentCache::ValidationMode valMode) = 0;
+00095 
+00097   virtual void trace(const XMLCh* message1, const XMLCh* message2) = 0;
+00098 
+00100   virtual void setDebugCallback(XQDebugCallback* callback) = 0;
+00102   virtual XQDebugCallback* getDebugCallback() const = 0;
+00103 
+00108   virtual void testInterrupt() const {} 
+00109 };
+00110 
+00111 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/DynamicContext_8hpp.html b/docs/simple-api/DynamicContext_8hpp.html new file mode 100644 index 00000000..25f479f8 --- /dev/null +++ b/docs/simple-api/DynamicContext_8hpp.html @@ -0,0 +1,54 @@ + + +XQilla Simple API: DynamicContext.hpp File Reference + + + + + + +

DynamicContext.hpp File Reference

#include <xqilla/context/StaticContext.hpp>
+#include <xqilla/context/XQDebugCallback.hpp>
+#include <xqilla/items/ATDurationOrDerived.hpp>
+ +

+Include dependency graph for DynamicContext.hpp:

+ + + + + + + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + +

Classes

class  DynamicContext
 The execution time dynamic context interface. More...
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/DynamicContext_8hpp__dep__incl.map b/docs/simple-api/DynamicContext_8hpp__dep__incl.map new file mode 100644 index 00000000..d4bb5e6a --- /dev/null +++ b/docs/simple-api/DynamicContext_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $ContextHelpers_8hpp.html 202,8 341,32 diff --git a/docs/simple-api/DynamicContext_8hpp__dep__incl.md5 b/docs/simple-api/DynamicContext_8hpp__dep__incl.md5 new file mode 100644 index 00000000..f1a6e8ae --- /dev/null +++ b/docs/simple-api/DynamicContext_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +7aa3108ef2586d11da9b76a378852bc3 \ No newline at end of file diff --git a/docs/simple-api/DynamicContext_8hpp__dep__incl.png b/docs/simple-api/DynamicContext_8hpp__dep__incl.png new file mode 100644 index 00000000..471401da Binary files /dev/null and b/docs/simple-api/DynamicContext_8hpp__dep__incl.png differ diff --git a/docs/simple-api/DynamicContext_8hpp__incl.map b/docs/simple-api/DynamicContext_8hpp__incl.map new file mode 100644 index 00000000..d7753906 --- /dev/null +++ b/docs/simple-api/DynamicContext_8hpp__incl.map @@ -0,0 +1,8 @@ +base referer +rect $StaticContext_8hpp.html 221,342 429,366 +rect $XQDebugCallback_8hpp.html 498,270 736,294 +rect $ATDurationOrDerived_8hpp.html 204,171 446,195 +rect $PlatformUtils_8hpp.html 520,465 714,489 +rect $XMemory_8hpp.html 529,123 705,147 +rect $AnyAtomicType_8hpp.html 512,171 722,195 +rect $ATDecimalOrDerived_8hpp.html 496,75 738,99 diff --git a/docs/simple-api/DynamicContext_8hpp__incl.md5 b/docs/simple-api/DynamicContext_8hpp__incl.md5 new file mode 100644 index 00000000..c7acd0e9 --- /dev/null +++ b/docs/simple-api/DynamicContext_8hpp__incl.md5 @@ -0,0 +1 @@ +eec7dc8f969254c36b14e8c10dfdc306 \ No newline at end of file diff --git a/docs/simple-api/DynamicContext_8hpp__incl.png b/docs/simple-api/DynamicContext_8hpp__incl.png new file mode 100644 index 00000000..8b3496f1 Binary files /dev/null and b/docs/simple-api/DynamicContext_8hpp__incl.png differ diff --git a/docs/simple-api/InputSource_8hpp-source.html b/docs/simple-api/InputSource_8hpp-source.html new file mode 100644 index 00000000..795fe96d --- /dev/null +++ b/docs/simple-api/InputSource_8hpp-source.html @@ -0,0 +1,201 @@ + + +XQilla Simple API: InputSource.hpp Source File + + + + + + +

InputSource.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright 1999-2000,2004 The Apache Software Foundation.
+00003  * 
+00004  * Licensed under the Apache License, Version 2.0 (the "License");
+00005  * you may not use this file except in compliance with the License.
+00006  * You may obtain a copy of the License at
+00007  * 
+00008  *      http://www.apache.org/licenses/LICENSE-2.0
+00009  * 
+00010  * Unless required by applicable law or agreed to in writing, software
+00011  * distributed under the License is distributed on an "AS IS" BASIS,
+00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00013  * See the License for the specific language governing permissions and
+00014  * limitations under the License.
+00015  */
+00016 
+00017 /*
+00018  * $Id: InputSource.hpp 191054 2005-06-17 02:56:35Z jberry $
+00019  */
+00020 
+00021 
+00022 #ifndef INPUTSOURCE_HPP
+00023 #define INPUTSOURCE_HPP
+00024 
+00025 #include <xercesc/util/PlatformUtils.hpp>
+00026 
+00027 XERCES_CPP_NAMESPACE_BEGIN
+00028 
+00029 class BinInputStream;
+00030 
+00031 
+00062 class SAX_EXPORT InputSource : public XMemory
+00063 {
+00064 public:
+00065     // -----------------------------------------------------------------------
+00066     //  All constructors are hidden, just the destructor is available
+00067     // -----------------------------------------------------------------------
+00074     virtual ~InputSource();
+00076 
+00077 
+00078     // -----------------------------------------------------------------------
+00091     virtual BinInputStream* makeStream() const = 0;
+00092 
+00094 
+00095 
+00096     // -----------------------------------------------------------------------
+00108     virtual const XMLCh* getEncoding() const;
+00109 
+00110 
+00117     virtual const XMLCh* getPublicId() const;
+00118 
+00119 
+00128     virtual const XMLCh* getSystemId() const;
+00129 
+00138     virtual bool getIssueFatalErrorIfNotFound() const;
+00139 
+00140     MemoryManager* getMemoryManager() const;
+00141 
+00143 
+00144 
+00145     // -----------------------------------------------------------------------
+00148 
+00160     virtual void setEncoding(const XMLCh* const encodingStr);
+00161 
+00162 
+00174     virtual void setPublicId(const XMLCh* const publicId);
+00175 
+00192     virtual void setSystemId(const XMLCh* const systemId);
+00193 
+00203     virtual void setIssueFatalErrorIfNotFound(const bool flag);
+00204 
+00206 
+00207 
+00208 protected :
+00209     // -----------------------------------------------------------------------
+00210     //  Hidden constructors
+00211     // -----------------------------------------------------------------------
+00215     InputSource(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+00216 
+00222     InputSource(const XMLCh* const systemId,
+00223                 MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+00224 
+00231     InputSource
+00232     (
+00233         const   XMLCh* const   systemId
+00234         , const XMLCh* const   publicId
+00235         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+00236     );
+00237 
+00243     InputSource(const char* const systemId,
+00244                 MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+00245 
+00252     InputSource
+00253     (
+00254         const   char* const systemId
+00255         , const char* const publicId
+00256         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+00257     );
+00258 
+00260 
+00261 
+00262 
+00263 
+00264 
+00265 private:
+00266     // -----------------------------------------------------------------------
+00267     //  Unimplemented constructors and operators
+00268     // -----------------------------------------------------------------------
+00269     InputSource(const InputSource&);
+00270     InputSource& operator=(const InputSource&);
+00271 
+00272 
+00273     // -----------------------------------------------------------------------
+00274     //  Private data members
+00275     //
+00276     //  fEncoding
+00277     //      This is the encoding to use. Usually this is null, which means
+00278     //      to use the information found in the file itself. But, if set,
+00279     //      this encoding will be used without question.
+00280     //
+00281     //  fPublicId
+00282     //      This is the optional public id for the input source. It can be
+00283     //      null if none is desired.
+00284     //
+00285     //  fSystemId
+00286     //      This is the system id for the input source. This is what is
+00287     //      actually used to open the source.
+00288     //
+00289     //  fFatalErrorIfNotFound
+00290     // -----------------------------------------------------------------------
+00291     MemoryManager* const fMemoryManager;
+00292     XMLCh*         fEncoding;
+00293     XMLCh*         fPublicId;
+00294     XMLCh*         fSystemId;
+00295     bool           fFatalErrorIfNotFound;
+00296 };
+00297 
+00298 
+00299 // ---------------------------------------------------------------------------
+00300 //  InputSource: Getter methods
+00301 // ---------------------------------------------------------------------------
+00302 inline const XMLCh* InputSource::getEncoding() const
+00303 {
+00304     return fEncoding;
+00305 }
+00306 
+00307 inline const XMLCh* InputSource::getPublicId() const
+00308 {
+00309     return fPublicId;
+00310 }
+00311 
+00312 inline const XMLCh* InputSource::getSystemId() const
+00313 {
+00314     return fSystemId;
+00315 }
+00316 
+00317 inline bool InputSource::getIssueFatalErrorIfNotFound() const
+00318 {
+00319     return fFatalErrorIfNotFound;
+00320 }
+00321 
+00322 inline MemoryManager* InputSource::getMemoryManager() const
+00323 {
+00324     return fMemoryManager;
+00325 }
+00326 
+00327 // ---------------------------------------------------------------------------
+00328 //  InputSource: Setter methods
+00329 // ---------------------------------------------------------------------------
+00330 inline void InputSource::setIssueFatalErrorIfNotFound(const bool flag)
+00331 {
+00332     fFatalErrorIfNotFound = flag;
+00333 }
+00334 
+00335 XERCES_CPP_NAMESPACE_END
+00336 
+00337 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/InputSource_8hpp.html b/docs/simple-api/InputSource_8hpp.html new file mode 100644 index 00000000..694795c0 --- /dev/null +++ b/docs/simple-api/InputSource_8hpp.html @@ -0,0 +1,53 @@ + + +XQilla Simple API: InputSource.hpp File Reference + + + + + + +

InputSource.hpp File Reference

#include <xercesc/util/PlatformUtils.hpp>
+ +

+Include dependency graph for InputSource.hpp:

+ + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::InputSource
 A single input source for an XML entity. More...
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/InputSource_8hpp__dep__incl.map b/docs/simple-api/InputSource_8hpp__dep__incl.map new file mode 100644 index 00000000..bac2b107 --- /dev/null +++ b/docs/simple-api/InputSource_8hpp__dep__incl.map @@ -0,0 +1,6 @@ +base referer +rect $XQQuery_8hpp.html 210,8 314,32 +rect $LocalFileInputSource_8hpp.html 175,56 349,80 +rect $MemBufInputSource_8hpp.html 177,104 347,128 +rect $StdInInputSource_8hpp.html 186,152 338,176 +rect $URLInputSource_8hpp.html 189,200 335,224 diff --git a/docs/simple-api/InputSource_8hpp__dep__incl.md5 b/docs/simple-api/InputSource_8hpp__dep__incl.md5 new file mode 100644 index 00000000..a12f3218 --- /dev/null +++ b/docs/simple-api/InputSource_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +dbc3a32fd732641aeade3dcad55a2dd4 \ No newline at end of file diff --git a/docs/simple-api/InputSource_8hpp__dep__incl.png b/docs/simple-api/InputSource_8hpp__dep__incl.png new file mode 100644 index 00000000..d7dabf1d Binary files /dev/null and b/docs/simple-api/InputSource_8hpp__dep__incl.png differ diff --git a/docs/simple-api/InputSource_8hpp__incl.map b/docs/simple-api/InputSource_8hpp__incl.map new file mode 100644 index 00000000..01d36158 --- /dev/null +++ b/docs/simple-api/InputSource_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $PlatformUtils_8hpp.html 177,32 372,56 diff --git a/docs/simple-api/InputSource_8hpp__incl.md5 b/docs/simple-api/InputSource_8hpp__incl.md5 new file mode 100644 index 00000000..59f4ffe1 --- /dev/null +++ b/docs/simple-api/InputSource_8hpp__incl.md5 @@ -0,0 +1 @@ +a598eaa78c10474a4170de384a90575c \ No newline at end of file diff --git a/docs/simple-api/InputSource_8hpp__incl.png b/docs/simple-api/InputSource_8hpp__incl.png new file mode 100644 index 00000000..1ff78bc3 Binary files /dev/null and b/docs/simple-api/InputSource_8hpp__incl.png differ diff --git a/docs/simple-api/ItemFactory_8hpp-source.html b/docs/simple-api/ItemFactory_8hpp-source.html new file mode 100644 index 00000000..646401c8 --- /dev/null +++ b/docs/simple-api/ItemFactory_8hpp-source.html @@ -0,0 +1,171 @@ + + +XQilla Simple API: ItemFactory.hpp Source File + + + + + + +

ItemFactory.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ItemFactory.hpp,v 1.12 2006/11/01 16:37:12 jpcs Exp $
+00012  */
+00013 
+00014 /*
+00015   Factory base class
+00016 */
+00017 
+00018 #ifndef _ITEMFACTORY_HPP
+00019 #define _ITEMFACTORY_HPP
+00020 
+00021 #include <xqilla/framework/XQillaExport.hpp>
+00022 #include <xqilla/mapm/m_apm.h>
+00023 #include <xqilla/items/ATAnyURIOrDerived.hpp>
+00024 #include <xqilla/items/ATBooleanOrDerived.hpp>
+00025 #include <xqilla/items/ATDateOrDerived.hpp>
+00026 #include <xqilla/items/ATDateTimeOrDerived.hpp>
+00027 #include <xqilla/items/ATDecimalOrDerived.hpp>
+00028 #include <xqilla/items/ATDoubleOrDerived.hpp>
+00029 #include <xqilla/items/ATDurationOrDerived.hpp>
+00030 #include <xqilla/items/ATFloatOrDerived.hpp>
+00031 #include <xqilla/items/ATGDayOrDerived.hpp>
+00032 #include <xqilla/items/ATGMonthOrDerived.hpp>
+00033 #include <xqilla/items/ATGMonthDayOrDerived.hpp>
+00034 #include <xqilla/items/ATGYearMonthOrDerived.hpp>
+00035 #include <xqilla/items/ATGYearOrDerived.hpp>
+00036 #include <xqilla/items/ATQNameOrDerived.hpp>
+00037 #include <xqilla/items/ATStringOrDerived.hpp>
+00038 #include <xqilla/items/ATTimeOrDerived.hpp>
+00039 #include <xqilla/items/ATUntypedAtomic.hpp>
+00040 #include <xqilla/items/Node.hpp>
+00041 
+00042 #include <xercesc/util/XMemory.hpp>
+00043 
+00044 class XQILLA_API ItemFactory : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory
+00045 {
+00046 public:
+00047   virtual ~ItemFactory() {};
+00048 
+00049   /* @name Atomic type factory methods */
+00050 
+00051   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex(const XMLCh* typeURI, const XMLCh* typeName, bool &isPrimitive) const = 0;
+00052   virtual AnyAtomicType::Ptr createDerivedFromAtomicType(AnyAtomicType::AtomicObjectType typeIndex, const XMLCh* value,
+00053                                                          const DynamicContext* context) = 0;
+00054   virtual AnyAtomicType::Ptr createDerivedFromAtomicType(AnyAtomicType::AtomicObjectType typeIndex, const XMLCh* typeURI,
+00055                                                          const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0;
+00056   virtual AnyAtomicType::Ptr createDerivedFromAtomicType(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0;
+00057 
+00058   /* @name Node factory methods */
+00059 
+00060   class XQILLA_API ElementChild {
+00061   public:
+00062     ElementChild(const Node::Ptr &n) : node(n), clone(true) {}
+00063     ElementChild(const Node::Ptr &n, bool c) : node(n), clone(c) {}
+00064     operator const Node::Ptr &() { return node; }
+00065     const Node *operator ->() const { return node.get(); }
+00066 
+00067     Node::Ptr node;
+00068     bool clone;
+00069   };
+00070 
+00071   virtual Node::Ptr cloneNode(const Node::Ptr node, const DynamicContext *context) const = 0;
+00072   virtual Node::Ptr createTextNode(const XMLCh *value, const DynamicContext *context) const = 0;
+00073   virtual Node::Ptr createCommentNode(const XMLCh *value, const DynamicContext *context) const = 0;
+00074   virtual Node::Ptr createPINode(const XMLCh *name, const XMLCh *value, const DynamicContext *context) const = 0;
+00075   virtual Node::Ptr createAttributeNode(const XMLCh *uri, const XMLCh *prefix, const XMLCh *name,
+00076                                         const XMLCh *value, const DynamicContext *context) const = 0;
+00077   virtual Node::Ptr createElementNode(const XMLCh *uri, const XMLCh *prefix, const XMLCh *name,
+00078                                       const std::vector<Node::Ptr> &attrList, const std::vector<ElementChild> &childList,
+00079                                       const DynamicContext *context) const = 0;
+00080   virtual Node::Ptr createDocumentNode(const std::vector<Node::Ptr> &childList, const DynamicContext *context) const = 0;
+00081   virtual const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* createNamespaceNode(const XMLCh* prefix, const XMLCh* uri, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* parentNode, const DynamicContext *context) const = 0;
+00082 
+00083   /* @name Number factory methods */
+00084 
+00085   virtual ATDoubleOrDerived::Ptr createDouble(const MAPM value, const DynamicContext* context) = 0;
+00086   virtual ATDoubleOrDerived::Ptr createDouble(const XMLCh* value, const DynamicContext* context) = 0;
+00087   virtual ATDoubleOrDerived::Ptr createDoubleOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const MAPM value, const DynamicContext* context) = 0;
+00088   virtual ATDoubleOrDerived::Ptr createDoubleOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0;
+00089 
+00090   virtual ATFloatOrDerived::Ptr createFloat(const MAPM value, const DynamicContext* context) = 0;
+00091   virtual ATFloatOrDerived::Ptr createFloat(const XMLCh* value, const DynamicContext* context) = 0;
+00092   virtual ATFloatOrDerived::Ptr createFloatOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const MAPM value, const DynamicContext* context) = 0;
+00093   virtual ATFloatOrDerived::Ptr createFloatOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0;
+00094 
+00095   virtual ATDecimalOrDerived::Ptr createInteger(const int value, const DynamicContext* context) = 0;
+00096   virtual ATDecimalOrDerived::Ptr createInteger(const MAPM value, const DynamicContext* context) = 0;
+00097   virtual ATDecimalOrDerived::Ptr createInteger(const XMLCh* value, const DynamicContext* context) = 0;
+00098   virtual ATDecimalOrDerived::Ptr createNonNegativeInteger(const MAPM value, const DynamicContext* context) = 0;
+00099 
+00100   virtual ATDecimalOrDerived::Ptr createDecimal(const MAPM value, const DynamicContext* context) = 0;
+00101   virtual ATDecimalOrDerived::Ptr createDecimal(const XMLCh* value, const DynamicContext* context) = 0;
+00102   virtual ATDecimalOrDerived::Ptr createDecimalOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const MAPM value, const DynamicContext* context) = 0;
+00103   virtual ATDecimalOrDerived::Ptr createDecimalOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0;
+00104 
+00105   /* @name Date / time factory methods */
+00106 
+00107   virtual ATDateOrDerived::Ptr createDate(const XMLCh* value, const DynamicContext* context) = 0;
+00108   virtual ATDateOrDerived::Ptr createDateOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0;
+00109 
+00110   virtual ATDateTimeOrDerived::Ptr createDateTime(const XMLCh* value, const DynamicContext* context) = 0;
+00111   virtual ATDateTimeOrDerived::Ptr createDateTimeOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0;
+00112 
+00113   virtual ATTimeOrDerived::Ptr createTime(const XMLCh* value, const DynamicContext* context) = 0;
+00114   virtual ATTimeOrDerived::Ptr createTimeOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0;
+00115 
+00116   virtual ATGDayOrDerived::Ptr createGDayOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0;
+00117   virtual ATGMonthDayOrDerived::Ptr createGMonthDayOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0;
+00118   virtual ATGMonthOrDerived::Ptr createGMonthOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0;
+00119   virtual ATGYearMonthOrDerived::Ptr createGYearMonthOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0;
+00120   virtual ATGYearOrDerived::Ptr createGYearOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0;
+00121 
+00122   virtual ATDurationOrDerived::Ptr createDayTimeDuration(const XMLCh* value, const DynamicContext* context) = 0;
+00123   virtual ATDurationOrDerived::Ptr createDayTimeDuration(const MAPM &seconds, const DynamicContext* context) = 0;
+00124   virtual ATDurationOrDerived::Ptr createYearMonthDuration(const XMLCh* value, const DynamicContext* context) = 0;
+00125   virtual ATDurationOrDerived::Ptr createYearMonthDuration(const MAPM &months, const DynamicContext* context) = 0;
+00126   virtual ATDurationOrDerived::Ptr createDurationOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0;
+00127 
+00128   /* @name Other factory methods */
+00129 
+00130   virtual ATStringOrDerived::Ptr createString(const XMLCh* value, const DynamicContext* context) = 0;
+00131   virtual ATStringOrDerived::Ptr createStringOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0;
+00132 
+00133   virtual ATUntypedAtomic::Ptr createUntypedAtomic(const XMLCh* value, const DynamicContext* context) = 0;
+00134 
+00135   virtual ATBooleanOrDerived::Ptr createBoolean(bool value, const DynamicContext* context) = 0;
+00136   virtual ATBooleanOrDerived::Ptr createBoolean(const XMLCh* value, const DynamicContext* context) = 0;
+00137   virtual ATBooleanOrDerived::Ptr createBooleanOrDerived(const XMLCh* typeURI, const XMLCh* typeName, bool value, const DynamicContext* context) = 0;
+00138   virtual ATBooleanOrDerived::Ptr createBooleanOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0;
+00139 
+00140   virtual ATAnyURIOrDerived::Ptr createAnyURI(const XMLCh* value, const DynamicContext* context) = 0;
+00141 
+00142   virtual ATQNameOrDerived::Ptr createQName(const XMLCh* uri, const XMLCh* prefix, const XMLCh* name, const DynamicContext* context) = 0;
+00143   virtual ATQNameOrDerived::Ptr createQNameOrDerived(const XMLCh* typeURI, const XMLCh *prefix, const XMLCh* typeName, const XMLCh* uri, const XMLCh* name, const DynamicContext* context) = 0;
+00144 
+00145 };
+00146 
+00147 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ItemFactory_8hpp.html b/docs/simple-api/ItemFactory_8hpp.html new file mode 100644 index 00000000..039dfb22 --- /dev/null +++ b/docs/simple-api/ItemFactory_8hpp.html @@ -0,0 +1,79 @@ + + +XQilla Simple API: ItemFactory.hpp File Reference + + + + + + +

ItemFactory.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/mapm/m_apm.h>
+#include <xqilla/items/ATAnyURIOrDerived.hpp>
+#include <xqilla/items/ATBooleanOrDerived.hpp>
+#include <xqilla/items/ATDateOrDerived.hpp>
+#include <xqilla/items/ATDateTimeOrDerived.hpp>
+#include <xqilla/items/ATDecimalOrDerived.hpp>
+#include <xqilla/items/ATDoubleOrDerived.hpp>
+#include <xqilla/items/ATDurationOrDerived.hpp>
+#include <xqilla/items/ATFloatOrDerived.hpp>
+#include <xqilla/items/ATGDayOrDerived.hpp>
+#include <xqilla/items/ATGMonthOrDerived.hpp>
+#include <xqilla/items/ATGMonthDayOrDerived.hpp>
+#include <xqilla/items/ATGYearMonthOrDerived.hpp>
+#include <xqilla/items/ATGYearOrDerived.hpp>
+#include <xqilla/items/ATQNameOrDerived.hpp>
+#include <xqilla/items/ATStringOrDerived.hpp>
+#include <xqilla/items/ATTimeOrDerived.hpp>
+#include <xqilla/items/ATUntypedAtomic.hpp>
+#include <xqilla/items/Node.hpp>
+#include <xercesc/util/XMemory.hpp>
+ +

+Include dependency graph for ItemFactory.hpp:

+ + + + + + + + + + + + + + + + + + + + + + +

+Go to the source code of this file. + + + + + + +

Classes

class  ItemFactory
class  ItemFactory::ElementChild
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ItemFactory_8hpp__incl.map b/docs/simple-api/ItemFactory_8hpp__incl.map new file mode 100644 index 00000000..b1485307 --- /dev/null +++ b/docs/simple-api/ItemFactory_8hpp__incl.map @@ -0,0 +1,20 @@ +base referer +rect $ATAnyURIOrDerived_8hpp.html 802,84 1039,108 +rect $ATBooleanOrDerived_8hpp.html 486,836 729,860 +rect $ATDateOrDerived_8hpp.html 189,185 410,209 +rect $ATDecimalOrDerived_8hpp.html 799,361 1042,385 +rect $ATDurationOrDerived_8hpp.html 486,386 729,410 +rect $ATDateTimeOrDerived_8hpp.html 174,337 425,361 +rect $ATDoubleOrDerived_8hpp.html 803,537 1038,561 +rect $ATFloatOrDerived_8hpp.html 495,586 719,610 +rect $ATGDayOrDerived_8hpp.html 807,636 1034,660 +rect $ATGMonthOrDerived_8hpp.html 487,685 727,709 +rect $ATGMonthDayOrDerived_8hpp.html 789,734 1053,758 +rect $ATGYearMonthOrDerived_8hpp.html 474,785 741,809 +rect $ATGYearOrDerived_8hpp.html 806,960 1035,984 +rect $ATQNameOrDerived_8hpp.html 487,885 727,909 +rect $ATStringOrDerived_8hpp.html 493,1036 722,1060 +rect $ATTimeOrDerived_8hpp.html 187,460 411,484 +rect $ATUntypedAtomic_8hpp.html 809,1078 1033,1102 +rect $Node_8hpp.html 225,885 374,909 +rect $XMemory_8hpp.html 211,1136 387,1160 diff --git a/docs/simple-api/ItemFactory_8hpp__incl.md5 b/docs/simple-api/ItemFactory_8hpp__incl.md5 new file mode 100644 index 00000000..d485d565 --- /dev/null +++ b/docs/simple-api/ItemFactory_8hpp__incl.md5 @@ -0,0 +1 @@ +a23a2b4c5b64f0e24c16b9082f3045d2 \ No newline at end of file diff --git a/docs/simple-api/ItemFactory_8hpp__incl.png b/docs/simple-api/ItemFactory_8hpp__incl.png new file mode 100644 index 00000000..74bb7b7d Binary files /dev/null and b/docs/simple-api/ItemFactory_8hpp__incl.png differ diff --git a/docs/simple-api/Item_8hpp-source.html b/docs/simple-api/Item_8hpp-source.html new file mode 100644 index 00000000..21fb9e5a --- /dev/null +++ b/docs/simple-api/Item_8hpp-source.html @@ -0,0 +1,79 @@ + + +XQilla Simple API: Item.hpp Source File + + + + + + +

Item.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: Item.hpp,v 1.7 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _ITEM_HPP
+00015 #define _ITEM_HPP
+00016 
+00017 #include <xqilla/framework/XQillaExport.hpp>
+00018 #include <xqilla/framework/ReferenceCounted.hpp>
+00019 #include <xercesc/util/XercesDefs.hpp>
+00020 
+00021 // forward declare when we can
+00022 class XPath2MemoryManager;
+00023 class DynamicContext;
+00024 
+00025 class XQILLA_API Item : public ReferenceCounted
+00026 {
+00027 public:
+00028   typedef RefCountPointer<const Item> Ptr;
+00029 
+00031   static const XMLCh gXQilla[];
+00032 
+00033   virtual bool isNode() const = 0;
+00034 
+00035   virtual bool isAtomicValue() const = 0;
+00036 
+00037   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00038 
+00039   virtual const XMLCh* getTypeURI() const = 0;
+00040 
+00041   virtual const XMLCh* getTypeName() const = 0;
+00042 
+00044   virtual void *getInterface(const XMLCh *name) const = 0;
+00045 
+00046 protected:
+00047   Item() {}
+00048 
+00049 private:
+00050   // copy constructor
+00051   Item (const Item & other);            
+00052   // assignment operation
+00053   Item & operator=(const Item & item) ;
+00054 };
+00055 
+00056 #endif // _ITEM_HPP
+00057 
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/Item_8hpp.html b/docs/simple-api/Item_8hpp.html new file mode 100644 index 00000000..f98611d6 --- /dev/null +++ b/docs/simple-api/Item_8hpp.html @@ -0,0 +1,61 @@ + + +XQilla Simple API: Item.hpp File Reference + + + + + + +

Item.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/framework/ReferenceCounted.hpp>
+#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for Item.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + + + + + + + + + + + + + +

+Go to the source code of this file. + + + + +

Classes

class  Item
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/Item_8hpp__dep__incl.map b/docs/simple-api/Item_8hpp__dep__incl.map new file mode 100644 index 00000000..5770b137 --- /dev/null +++ b/docs/simple-api/Item_8hpp__dep__incl.map @@ -0,0 +1,15 @@ +base referer +rect $AnyAtomicType_8hpp.html 130,274 272,298 +rect $Result_8hpp.html 158,322 244,346 +rect $Numeric_8hpp.html 376,8 472,32 +rect $ATStringOrDerived_8hpp.html 576,33 736,57 +rect $ATQNameOrDerived_8hpp.html 338,106 509,130 +rect $ATBooleanOrDerived_8hpp.html 337,154 510,178 +rect $ATDurationOrDerived_8hpp.html 336,202 512,226 +rect $ATAnyURIOrDerived_8hpp.html 340,250 508,274 +rect $DateOrTimeType_8hpp.html 350,298 497,322 +rect $ATUntypedAtomic_8hpp.html 346,346 501,370 +rect $ATAnySimpleType_8hpp.html 346,394 501,418 +rect $ATBase64BinaryOrDerived_8hpp.html 320,442 528,466 +rect $ATHexBinaryOrDerived_8hpp.html 330,490 517,514 +rect $ATNotationOrDerived_8hpp.html 337,538 510,562 diff --git a/docs/simple-api/Item_8hpp__dep__incl.md5 b/docs/simple-api/Item_8hpp__dep__incl.md5 new file mode 100644 index 00000000..be164f80 --- /dev/null +++ b/docs/simple-api/Item_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +b367c596f868cf718101081756b75976 \ No newline at end of file diff --git a/docs/simple-api/Item_8hpp__dep__incl.png b/docs/simple-api/Item_8hpp__dep__incl.png new file mode 100644 index 00000000..908b110c Binary files /dev/null and b/docs/simple-api/Item_8hpp__dep__incl.png differ diff --git a/docs/simple-api/Item_8hpp__incl.map b/docs/simple-api/Item_8hpp__incl.map new file mode 100644 index 00000000..6e16d88e --- /dev/null +++ b/docs/simple-api/Item_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $ReferenceCounted_8hpp.html 132,58 390,82 +rect $MemoryManager_8hpp.html 441,58 705,82 diff --git a/docs/simple-api/Item_8hpp__incl.md5 b/docs/simple-api/Item_8hpp__incl.md5 new file mode 100644 index 00000000..94295e94 --- /dev/null +++ b/docs/simple-api/Item_8hpp__incl.md5 @@ -0,0 +1 @@ +022c5d386322c9c1e69ac63cddb7926e \ No newline at end of file diff --git a/docs/simple-api/Item_8hpp__incl.png b/docs/simple-api/Item_8hpp__incl.png new file mode 100644 index 00000000..542900b0 Binary files /dev/null and b/docs/simple-api/Item_8hpp__incl.png differ diff --git a/docs/simple-api/LocalFileInputSource_8hpp-source.html b/docs/simple-api/LocalFileInputSource_8hpp-source.html new file mode 100644 index 00000000..3424ca96 --- /dev/null +++ b/docs/simple-api/LocalFileInputSource_8hpp-source.html @@ -0,0 +1,97 @@ + + +XQilla Simple API: LocalFileInputSource.hpp Source File + + + + + + +

LocalFileInputSource.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright 1999-2000,2004 The Apache Software Foundation.
+00003  * 
+00004  * Licensed under the Apache License, Version 2.0 (the "License");
+00005  * you may not use this file except in compliance with the License.
+00006  * You may obtain a copy of the License at
+00007  * 
+00008  *      http://www.apache.org/licenses/LICENSE-2.0
+00009  * 
+00010  * Unless required by applicable law or agreed to in writing, software
+00011  * distributed under the License is distributed on an "AS IS" BASIS,
+00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00013  * See the License for the specific language governing permissions and
+00014  * limitations under the License.
+00015  */
+00016 
+00017 /*
+00018  * $Id: LocalFileInputSource.hpp 191054 2005-06-17 02:56:35Z jberry $
+00019  */
+00020 
+00021 
+00022 #if !defined(LOCALFILEINPUTSOURCE_HPP)
+00023 #define LOCALFILEINPUTSOURCE_HPP
+00024 
+00025 #include <xercesc/sax/InputSource.hpp>
+00026 
+00027 XERCES_CPP_NAMESPACE_BEGIN
+00028 
+00029 class BinInputStream;
+00030 
+00047 class XMLPARSER_EXPORT LocalFileInputSource : public InputSource
+00048 {
+00049 public :
+00050     // -----------------------------------------------------------------------
+00051     //  Constructors and Destructor
+00052     // -----------------------------------------------------------------------
+00053 
+00056 
+00085     LocalFileInputSource
+00086     (
+00087         const   XMLCh* const   basePath
+00088         , const XMLCh* const   relativePath
+00089         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+00090     );
+00091 
+00110     LocalFileInputSource
+00111     (
+00112         const   XMLCh* const   filePath
+00113         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+00114     );
+00116 
+00119     ~LocalFileInputSource();
+00121 
+00122 
+00123     // -----------------------------------------------------------------------
+00124     //  Virtual input source interface
+00125     // -----------------------------------------------------------------------
+00126 
+00129 
+00137     virtual BinInputStream* makeStream() const;
+00138 
+00140 private:
+00141     // -----------------------------------------------------------------------
+00142     //  Unimplemented constructors and operators
+00143     // -----------------------------------------------------------------------
+00144     LocalFileInputSource(const LocalFileInputSource&);
+00145     LocalFileInputSource& operator=(const LocalFileInputSource&);
+00146 
+00147 };
+00148 
+00149 XERCES_CPP_NAMESPACE_END
+00150 
+00151 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/LocalFileInputSource_8hpp.html b/docs/simple-api/LocalFileInputSource_8hpp.html new file mode 100644 index 00000000..deb6b5df --- /dev/null +++ b/docs/simple-api/LocalFileInputSource_8hpp.html @@ -0,0 +1,71 @@ + + +XQilla Simple API: LocalFileInputSource.hpp File Reference + + + + + + +

LocalFileInputSource.hpp File Reference

#include <xercesc/sax/InputSource.hpp>
+ +

+Include dependency graph for LocalFileInputSource.hpp:

+ + + + + +

+Go to the source code of this file. + + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::LocalFileInputSource
 This class is a derivative of the standard InputSource class. More...

Defines

#define LOCALFILEINPUTSOURCE_HPP
+


Define Documentation

+

+ + + + +
+ + + + +
#define LOCALFILEINPUTSOURCE_HPP
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/LocalFileInputSource_8hpp__incl.map b/docs/simple-api/LocalFileInputSource_8hpp__incl.map new file mode 100644 index 00000000..a7803615 --- /dev/null +++ b/docs/simple-api/LocalFileInputSource_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $InputSource_8hpp.html 230,32 425,56 +rect $PlatformUtils_8hpp.html 475,32 670,56 diff --git a/docs/simple-api/LocalFileInputSource_8hpp__incl.md5 b/docs/simple-api/LocalFileInputSource_8hpp__incl.md5 new file mode 100644 index 00000000..14d235eb --- /dev/null +++ b/docs/simple-api/LocalFileInputSource_8hpp__incl.md5 @@ -0,0 +1 @@ +cfb59b5d4a14deb1ecb5cadf3f362cf6 \ No newline at end of file diff --git a/docs/simple-api/LocalFileInputSource_8hpp__incl.png b/docs/simple-api/LocalFileInputSource_8hpp__incl.png new file mode 100644 index 00000000..f12a2540 Binary files /dev/null and b/docs/simple-api/LocalFileInputSource_8hpp__incl.png differ diff --git a/docs/simple-api/MemBufInputSource_8hpp-source.html b/docs/simple-api/MemBufInputSource_8hpp-source.html new file mode 100644 index 00000000..6253a987 --- /dev/null +++ b/docs/simple-api/MemBufInputSource_8hpp-source.html @@ -0,0 +1,148 @@ + + +XQilla Simple API: MemBufInputSource.hpp Source File + + + + + + +

MemBufInputSource.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright 1999-2000,2004 The Apache Software Foundation.
+00003  * 
+00004  * Licensed under the Apache License, Version 2.0 (the "License");
+00005  * you may not use this file except in compliance with the License.
+00006  * You may obtain a copy of the License at
+00007  * 
+00008  *      http://www.apache.org/licenses/LICENSE-2.0
+00009  * 
+00010  * Unless required by applicable law or agreed to in writing, software
+00011  * distributed under the License is distributed on an "AS IS" BASIS,
+00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00013  * See the License for the specific language governing permissions and
+00014  * limitations under the License.
+00015  */
+00016 
+00017 /*
+00018  * $Id: MemBufInputSource.hpp 191054 2005-06-17 02:56:35Z jberry $
+00019  */
+00020 
+00021 
+00022 #if !defined(MEMBUFINPUTSOURCE_HPP)
+00023 #define MEMBUFINPUTSOURCE_HPP
+00024 
+00025 #include <xercesc/sax/InputSource.hpp>
+00026 
+00027 XERCES_CPP_NAMESPACE_BEGIN
+00028 
+00029 class BinInputStream;
+00030 
+00031 
+00060 class XMLPARSER_EXPORT MemBufInputSource : public InputSource
+00061 {
+00062 public :
+00063     // -----------------------------------------------------------------------
+00064     //  Constructors and Destructor
+00065     // -----------------------------------------------------------------------
+00066 
+00069 
+00092     MemBufInputSource
+00093     (
+00094         const   XMLByte* const  srcDocBytes
+00095         , const unsigned int    byteCount
+00096         , const XMLCh* const    bufId
+00097         , const bool            adoptBuffer = false
+00098         , MemoryManager* const  manager = XMLPlatformUtils::fgMemoryManager
+00099     );
+00100 
+00105     MemBufInputSource
+00106     (
+00107         const   XMLByte* const  srcDocBytes
+00108         , const unsigned int    byteCount
+00109         , const char* const     bufId
+00110         , const bool            adoptBuffer = false
+00111         , MemoryManager* const  manager = XMLPlatformUtils::fgMemoryManager
+00112     );
+00114 
+00121     ~MemBufInputSource();
+00123 
+00124 
+00125     // -----------------------------------------------------------------------
+00126     //  Virtual input source interface
+00127     // -----------------------------------------------------------------------
+00128 
+00131 
+00142     BinInputStream* makeStream() const;
+00143 
+00145 
+00146 
+00147     // -----------------------------------------------------------------------
+00148     //  Setter methods
+00149     // -----------------------------------------------------------------------
+00150 
+00154 
+00170     void setCopyBufToStream(const bool newState);
+00171 
+00181     void resetMemBufInputSource(const   XMLByte* const  srcDocBytes
+00182                                 , const unsigned int    byteCount);
+00184 
+00185 
+00186 private :
+00187     // -----------------------------------------------------------------------
+00188     //  Unimplemented constructors and operators
+00189     // -----------------------------------------------------------------------
+00190     MemBufInputSource(const MemBufInputSource&);
+00191     MemBufInputSource& operator=(const MemBufInputSource&);
+00192 
+00193     // -----------------------------------------------------------------------
+00194     //  Private data members
+00195     //
+00196     //  fAdopted
+00197     //      Indicates whether the buffer is adopted or not. If so, then it
+00198     //      is destroyed when the input source is destroyed.
+00199     //
+00200     //  fByteCount
+00201     //      The size of the source document.
+00202     //
+00203     //  fCopyBufToStream
+00204     //      This defaults to true (the safe option), which causes it to
+00205     //      give a copy of the buffer to any streams it creates. If you set
+00206     //      it to false, it will allow the streams to just reference the
+00207     //      buffer (in which case this input source must stay alive as long
+00208     //      as the buffer is in use by the stream.)
+00209     //
+00210     //  fSrcBytes
+00211     //      The source memory buffer that is being spooled from. Whether it
+00212     //      belongs to the this input source or not is controlled by the
+00213     //      fAdopted flag.
+00214     // -----------------------------------------------------------------------
+00215     bool            fAdopted;
+00216     unsigned int    fByteCount;
+00217     bool            fCopyBufToStream;
+00218     const XMLByte*  fSrcBytes;
+00219 };
+00220 
+00221 
+00222 inline void MemBufInputSource::setCopyBufToStream(const bool newState)
+00223 {
+00224     fCopyBufToStream = newState;
+00225 }
+00226 
+00227 XERCES_CPP_NAMESPACE_END
+00228 
+00229 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/MemBufInputSource_8hpp.html b/docs/simple-api/MemBufInputSource_8hpp.html new file mode 100644 index 00000000..70e42168 --- /dev/null +++ b/docs/simple-api/MemBufInputSource_8hpp.html @@ -0,0 +1,71 @@ + + +XQilla Simple API: MemBufInputSource.hpp File Reference + + + + + + +

MemBufInputSource.hpp File Reference

#include <xercesc/sax/InputSource.hpp>
+ +

+Include dependency graph for MemBufInputSource.hpp:

+ + + + + +

+Go to the source code of this file. + + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::MemBufInputSource
 This class is a derivative of the standard InputSource class. More...

Defines

#define MEMBUFINPUTSOURCE_HPP
+


Define Documentation

+

+ + + + +
+ + + + +
#define MEMBUFINPUTSOURCE_HPP
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/MemBufInputSource_8hpp__incl.map b/docs/simple-api/MemBufInputSource_8hpp__incl.map new file mode 100644 index 00000000..09222a6b --- /dev/null +++ b/docs/simple-api/MemBufInputSource_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $InputSource_8hpp.html 228,32 422,56 +rect $PlatformUtils_8hpp.html 473,32 668,56 diff --git a/docs/simple-api/MemBufInputSource_8hpp__incl.md5 b/docs/simple-api/MemBufInputSource_8hpp__incl.md5 new file mode 100644 index 00000000..cee8b616 --- /dev/null +++ b/docs/simple-api/MemBufInputSource_8hpp__incl.md5 @@ -0,0 +1 @@ +5198ff4c10c78e8bb2d3b8d4522a0c4b \ No newline at end of file diff --git a/docs/simple-api/MemBufInputSource_8hpp__incl.png b/docs/simple-api/MemBufInputSource_8hpp__incl.png new file mode 100644 index 00000000..f59d59f1 Binary files /dev/null and b/docs/simple-api/MemBufInputSource_8hpp__incl.png differ diff --git a/docs/simple-api/MemoryManager_8hpp-source.html b/docs/simple-api/MemoryManager_8hpp-source.html new file mode 100644 index 00000000..5fdba9dc --- /dev/null +++ b/docs/simple-api/MemoryManager_8hpp-source.html @@ -0,0 +1,100 @@ + + +XQilla Simple API: MemoryManager.hpp Source File + + + + + + +

MemoryManager.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright 2003,2004 The Apache Software Foundation.
+00003  * 
+00004  * Licensed under the Apache License, Version 2.0 (the "License");
+00005  * you may not use this file except in compliance with the License.
+00006  * You may obtain a copy of the License at
+00007  * 
+00008  *      http://www.apache.org/licenses/LICENSE-2.0
+00009  * 
+00010  * Unless required by applicable law or agreed to in writing, software
+00011  * distributed under the License is distributed on an "AS IS" BASIS,
+00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00013  * See the License for the specific language governing permissions and
+00014  * limitations under the License.
+00015  */
+00016 
+00017  /*
+00018  * $Id: MemoryManager.hpp 191054 2005-06-17 02:56:35Z jberry $
+00019  */
+00020 
+00021 
+00022 #if !defined(MEMORYMANAGER_HPP)
+00023 #define MEMORYMANAGER_HPP
+00024 
+00025 #include <xercesc/util/XercesDefs.hpp>
+00026 #include <stdlib.h>
+00027 
+00028 
+00029 XERCES_CPP_NAMESPACE_BEGIN
+00030 
+00031 
+00038 class XMLPARSER_EXPORT MemoryManager
+00039 {
+00040 public:
+00041     // -----------------------------------------------------------------------
+00042     //  Constructors are hidden, only the virtual destructor is exposed
+00043     // -----------------------------------------------------------------------
+00044 
+00047 
+00051     virtual ~MemoryManager()
+00052     {
+00053     }
+00055 
+00056 
+00057     // -----------------------------------------------------------------------
+00058     //  The virtual memory manager interface
+00059     // -----------------------------------------------------------------------
+00062 
+00070     virtual void* allocate(size_t size) = 0;
+00071 
+00077     virtual void deallocate(void* p) = 0;
+00078 
+00080 
+00081 
+00082 protected :
+00083     // -----------------------------------------------------------------------
+00084     //  Hidden Constructors
+00085     // -----------------------------------------------------------------------
+00088 
+00092     MemoryManager()
+00093     {
+00094     }
+00096 
+00097 
+00098 
+00099 private:
+00100     // -----------------------------------------------------------------------
+00101     //  Unimplemented constructors and operators
+00102     // -----------------------------------------------------------------------
+00103     MemoryManager(const MemoryManager&);
+00104     MemoryManager& operator=(const MemoryManager&);
+00105 };
+00106 
+00107 XERCES_CPP_NAMESPACE_END
+00108 
+00109 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/MemoryManager_8hpp.html b/docs/simple-api/MemoryManager_8hpp.html new file mode 100644 index 00000000..a036ec50 --- /dev/null +++ b/docs/simple-api/MemoryManager_8hpp.html @@ -0,0 +1,82 @@ + + +XQilla Simple API: MemoryManager.hpp File Reference + + + + + + +

MemoryManager.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <stdlib.h>
+ +

+Include dependency graph for MemoryManager.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + + + + + + + + + +

+Go to the source code of this file. + + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::MemoryManager
 Configurable memory manager. More...

Defines

#define MEMORYMANAGER_HPP
+


Define Documentation

+

+ + + + +
+ + + + +
#define MEMORYMANAGER_HPP
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/MemoryManager_8hpp__dep__incl.map b/docs/simple-api/MemoryManager_8hpp__dep__incl.map new file mode 100644 index 00000000..0d07f1a0 --- /dev/null +++ b/docs/simple-api/MemoryManager_8hpp__dep__incl.map @@ -0,0 +1,10 @@ +base referer +rect $XQilla_8hpp.html 261,32 344,56 +rect $ReferenceCounted_8hpp.html 224,80 381,104 +rect $XPath2MemoryManager_8hpp.html 206,128 398,152 +rect $StringPool_8hpp.html 248,176 357,200 +rect $Item_8hpp.html 465,32 540,56 +rect $Timezone_8hpp.html 449,80 556,104 +rect $AnyAtomicType_8hpp.html 605,8 746,32 +rect $Result_8hpp.html 633,56 718,80 +rect $Sequence_8hpp.html 449,128 556,152 diff --git a/docs/simple-api/MemoryManager_8hpp__dep__incl.md5 b/docs/simple-api/MemoryManager_8hpp__dep__incl.md5 new file mode 100644 index 00000000..62ed0278 --- /dev/null +++ b/docs/simple-api/MemoryManager_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +bdaae85dfe4b3c8f9afb96aaff1fab62 \ No newline at end of file diff --git a/docs/simple-api/MemoryManager_8hpp__dep__incl.png b/docs/simple-api/MemoryManager_8hpp__dep__incl.png new file mode 100644 index 00000000..643f19f8 Binary files /dev/null and b/docs/simple-api/MemoryManager_8hpp__dep__incl.png differ diff --git a/docs/simple-api/MemoryManager_8hpp__incl.map b/docs/simple-api/MemoryManager_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/simple-api/MemoryManager_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/simple-api/MemoryManager_8hpp__incl.md5 b/docs/simple-api/MemoryManager_8hpp__incl.md5 new file mode 100644 index 00000000..912c467b --- /dev/null +++ b/docs/simple-api/MemoryManager_8hpp__incl.md5 @@ -0,0 +1 @@ +7adce67bf2b9675fcdc24e7259da91dc \ No newline at end of file diff --git a/docs/simple-api/MemoryManager_8hpp__incl.png b/docs/simple-api/MemoryManager_8hpp__incl.png new file mode 100644 index 00000000..d7396544 Binary files /dev/null and b/docs/simple-api/MemoryManager_8hpp__incl.png differ diff --git a/docs/simple-api/ModuleResolver_8hpp-source.html b/docs/simple-api/ModuleResolver_8hpp-source.html new file mode 100644 index 00000000..f225e053 --- /dev/null +++ b/docs/simple-api/ModuleResolver_8hpp-source.html @@ -0,0 +1,54 @@ + + +XQilla Simple API: ModuleResolver.hpp Source File + + + + + + +

ModuleResolver.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ModuleResolver.hpp,v 1.2 2006/11/01 16:37:12 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _MODULERESOLVER_HPP
+00015 #define _MODULERESOLVER_HPP
+00016 
+00017 #include <xqilla/framework/XQillaExport.hpp>
+00018 
+00019 class DynamicContext;
+00020 
+00021 class XQILLA_API ModuleResolver {
+00022   public:
+00023     /* virtual destructor, does nothing */
+00024     virtual ~ModuleResolver() {};      
+00025 
+00026     /* Fills the string vector with a list of locations tht, once assembled, build the module referenced by the given URI.
+00027        If the URI is unknown, returns false, otherwise returns true. */
+00028     virtual bool resolveModuleLocation(VectorOfStrings* result, const XMLCh* nsUri, const StaticContext* context) = 0;
+00029 };
+00030 #endif // _MODULERESOLVER_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ModuleResolver_8hpp.html b/docs/simple-api/ModuleResolver_8hpp.html new file mode 100644 index 00000000..81a8040f --- /dev/null +++ b/docs/simple-api/ModuleResolver_8hpp.html @@ -0,0 +1,36 @@ + + +XQilla Simple API: ModuleResolver.hpp File Reference + + + + + + +

ModuleResolver.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+ +

+Include dependency graph for ModuleResolver.hpp:

+ +

+Go to the source code of this file. + + + + +

Classes

class  ModuleResolver
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ModuleResolver_8hpp__incl.map b/docs/simple-api/ModuleResolver_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/simple-api/ModuleResolver_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/simple-api/ModuleResolver_8hpp__incl.md5 b/docs/simple-api/ModuleResolver_8hpp__incl.md5 new file mode 100644 index 00000000..25ad7cf8 --- /dev/null +++ b/docs/simple-api/ModuleResolver_8hpp__incl.md5 @@ -0,0 +1 @@ +443afc97bf0acdf15907766694615297 \ No newline at end of file diff --git a/docs/simple-api/ModuleResolver_8hpp__incl.png b/docs/simple-api/ModuleResolver_8hpp__incl.png new file mode 100644 index 00000000..b46e8347 Binary files /dev/null and b/docs/simple-api/ModuleResolver_8hpp__incl.png differ diff --git a/docs/simple-api/Node_8hpp-source.html b/docs/simple-api/Node_8hpp-source.html new file mode 100644 index 00000000..b0af9dc1 --- /dev/null +++ b/docs/simple-api/Node_8hpp-source.html @@ -0,0 +1,122 @@ + + +XQilla Simple API: Node.hpp Source File + + + + + + +

Node.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: Node.hpp,v 1.12 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _XQILLANODE_HPP
+00015 #define _XQILLANODE_HPP
+00016 
+00017 #include <xqilla/items/ATQNameOrDerived.hpp>
+00018 #include <xqilla/items/ATBooleanOrDerived.hpp>
+00019 #include <xqilla/ast/XQStep.hpp>
+00020 
+00021 class DynamicContext;
+00022 class XPath2MemoryManager;
+00023 class Sequence;
+00024 class Result;
+00025 class NodeTest;
+00026 
+00027 XERCES_CPP_NAMESPACE_BEGIN
+00028 class DOMNode;
+00029 XERCES_CPP_NAMESPACE_END
+00030 
+00031 
+00032 class XQILLA_API Node : public Item
+00033 {
+00034 public:
+00035   typedef RefCountPointer<const Node> Ptr;
+00036 
+00044   static const XMLCh gXerces[];
+00045 
+00047   virtual bool isNode() const = 0;
+00048 
+00050   virtual bool isAtomicValue() const = 0;
+00051 
+00053   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00054 
+00056   virtual bool hasInstanceOfType(const XMLCh* typeURI, const XMLCh* typeName, const DynamicContext* context) const = 0;
+00057   
+00060   virtual Sequence dmBaseURI(const DynamicContext* context) const = 0;
+00061 
+00063   virtual const XMLCh* dmNodeKind() const = 0;
+00064 
+00066   virtual ATQNameOrDerived::Ptr dmNodeName(const DynamicContext* context) const = 0;
+00067 
+00069   virtual const XMLCh* dmStringValue(const DynamicContext* context) const = 0;
+00070 
+00074   virtual Sequence dmTypedValue(DynamicContext* context) const = 0;
+00075 
+00078   virtual Sequence dmDocumentURI(const DynamicContext* context) const = 0;
+00079 
+00081   virtual ATQNameOrDerived::Ptr dmTypeName(const DynamicContext* context) const = 0;
+00082 
+00084   virtual ATBooleanOrDerived::Ptr dmNilled(const DynamicContext* context) const = 0;
+00085 
+00088   virtual bool lessThan(const Node::Ptr &other, const DynamicContext *context) const = 0;
+00089 
+00091   virtual bool equals(const Node::Ptr &other) const = 0;
+00092 
+00095   virtual bool uniqueLessThan(const Node::Ptr &other, const DynamicContext *context) const = 0;
+00096 
+00098   virtual Node::Ptr dmParent(const DynamicContext* context) const = 0;
+00099 
+00101   virtual Result dmAttributes(const DynamicContext* context, const LocationInfo *info) const = 0;
+00102 
+00104   virtual Result dmNamespaceNodes(const DynamicContext* context, const LocationInfo *info) const = 0;
+00105 
+00107   virtual Result dmChildren(const DynamicContext *context, const LocationInfo *info) const = 0;
+00108 
+00114   virtual Result getAxisResult(XQStep::Axis axis, const NodeTest *nodeTest, const DynamicContext *context, const LocationInfo *info) const = 0;
+00115 
+00117   virtual ATBooleanOrDerived::Ptr dmIsId(const DynamicContext* context) const = 0;
+00118 
+00120   virtual ATBooleanOrDerived::Ptr dmIsIdRefs(const DynamicContext* context) const = 0;
+00121 
+00122   /* Get the namespace URI for the DOM type */
+00123   virtual const XMLCh* getTypeURI() const = 0;
+00124 
+00125   /* Get the name of the DOM type  (ie "integer" for xs:integer) */
+00126   virtual const XMLCh* getTypeName() const = 0;
+00127 
+00128   static const XMLCh document_string[];
+00129   static const XMLCh element_string[];
+00130   static const XMLCh attribute_string[];
+00131   static const XMLCh text_string[];
+00132   static const XMLCh processing_instruction_string[];
+00133   static const XMLCh comment_string[];
+00134   static const XMLCh namespace_string[];
+00135   static const XMLCh cdata_string[];
+00136 };
+00137 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/Node_8hpp.html b/docs/simple-api/Node_8hpp.html new file mode 100644 index 00000000..0918aafc --- /dev/null +++ b/docs/simple-api/Node_8hpp.html @@ -0,0 +1,52 @@ + + +XQilla Simple API: Node.hpp File Reference + + + + + + +

Node.hpp File Reference

#include <xqilla/items/ATQNameOrDerived.hpp>
+#include <xqilla/items/ATBooleanOrDerived.hpp>
+#include <xqilla/ast/XQStep.hpp>
+ +

+Include dependency graph for Node.hpp:

+ + + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  Node
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/Node_8hpp__dep__incl.map b/docs/simple-api/Node_8hpp__dep__incl.map new file mode 100644 index 00000000..6fafd9ca --- /dev/null +++ b/docs/simple-api/Node_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $ItemFactory_8hpp.html 135,8 253,32 diff --git a/docs/simple-api/Node_8hpp__dep__incl.md5 b/docs/simple-api/Node_8hpp__dep__incl.md5 new file mode 100644 index 00000000..83ddaa2c --- /dev/null +++ b/docs/simple-api/Node_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +b729f56faede5149b2572e83d24d3395 \ No newline at end of file diff --git a/docs/simple-api/Node_8hpp__dep__incl.png b/docs/simple-api/Node_8hpp__dep__incl.png new file mode 100644 index 00000000..b7a10ec1 Binary files /dev/null and b/docs/simple-api/Node_8hpp__dep__incl.png differ diff --git a/docs/simple-api/Node_8hpp__incl.map b/docs/simple-api/Node_8hpp__incl.map new file mode 100644 index 00000000..81e34da9 --- /dev/null +++ b/docs/simple-api/Node_8hpp__incl.map @@ -0,0 +1,4 @@ +base referer +rect $ATQNameOrDerived_8hpp.html 137,136 377,160 +rect $ATBooleanOrDerived_8hpp.html 135,74 378,98 +rect $AnyAtomicType_8hpp.html 426,160 637,184 diff --git a/docs/simple-api/Node_8hpp__incl.md5 b/docs/simple-api/Node_8hpp__incl.md5 new file mode 100644 index 00000000..34457bfd --- /dev/null +++ b/docs/simple-api/Node_8hpp__incl.md5 @@ -0,0 +1 @@ +b3d127a0bf6e70fbebebc031eae3dd52 \ No newline at end of file diff --git a/docs/simple-api/Node_8hpp__incl.png b/docs/simple-api/Node_8hpp__incl.png new file mode 100644 index 00000000..c7b792be Binary files /dev/null and b/docs/simple-api/Node_8hpp__incl.png differ diff --git a/docs/simple-api/NumericTypeConstructor_8hpp-source.html b/docs/simple-api/NumericTypeConstructor_8hpp-source.html new file mode 100644 index 00000000..781ca0e3 --- /dev/null +++ b/docs/simple-api/NumericTypeConstructor_8hpp-source.html @@ -0,0 +1,72 @@ + + +XQilla Simple API: NumericTypeConstructor.hpp Source File + + + + + + +

NumericTypeConstructor.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: NumericTypeConstructor.hpp,v 1.3 2006/11/17 18:08:07 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _NUMERICTYPECONSTUCTOR_HPP
+00015 #define _NUMERICTYPECONSTUCTOR_HPP
+00016 
+00017 #include <xqilla/items/ItemConstructor.hpp>
+00018 #include <xercesc/util/XercesDefs.hpp>
+00019 #include <xqilla/ast/StaticType.hpp>
+00020 #include <xqilla/mapm/m_apm.h>
+00021 
+00022 class XQILLA_API NumericTypeConstructor : public ItemConstructor {
+00023 public:
+00024   NumericTypeConstructor(const XMLCh* typeURI,
+00025                          const XMLCh* typeName,
+00026                          const MAPM& value,
+00027                          AnyAtomicType::AtomicObjectType primitiveType,
+00028                          XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mm);
+00029   virtual ~NumericTypeConstructor() {}
+00030 
+00031   virtual const StaticType &getStaticType() const { return _sType; }
+00032 
+00033   virtual Item::Ptr createItem(const DynamicContext* context) const;
+00034   virtual std::string asString(const DynamicContext* context) const;
+00035 
+00036   virtual const XMLCh* getTypeURI() const { return _typeURI; }
+00037   virtual const XMLCh* getTypeName() const { return _typeName; }
+00038 
+00039 private:
+00040   const XMLCh *_typeURI;
+00041   const XMLCh *_typeName;
+00042   M_APM_struct _value;
+00043   AnyAtomicType::AtomicObjectType _primitiveType;
+00044   StaticType _sType;
+00045 };
+00046 
+00047 #endif
+00048 
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/NumericTypeConstructor_8hpp.html b/docs/simple-api/NumericTypeConstructor_8hpp.html new file mode 100644 index 00000000..e1c7d3fe --- /dev/null +++ b/docs/simple-api/NumericTypeConstructor_8hpp.html @@ -0,0 +1,39 @@ + + +XQilla Simple API: NumericTypeConstructor.hpp File Reference + + + + + + +

NumericTypeConstructor.hpp File Reference

#include <xqilla/items/ItemConstructor.hpp>
+#include <xercesc/util/XercesDefs.hpp>
+#include <xqilla/ast/StaticType.hpp>
+#include <xqilla/mapm/m_apm.h>
+ +

+Include dependency graph for NumericTypeConstructor.hpp:

+ +

+Go to the source code of this file. + + + + +

Classes

class  NumericTypeConstructor
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/NumericTypeConstructor_8hpp__incl.map b/docs/simple-api/NumericTypeConstructor_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/simple-api/NumericTypeConstructor_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/simple-api/NumericTypeConstructor_8hpp__incl.md5 b/docs/simple-api/NumericTypeConstructor_8hpp__incl.md5 new file mode 100644 index 00000000..d662cb67 --- /dev/null +++ b/docs/simple-api/NumericTypeConstructor_8hpp__incl.md5 @@ -0,0 +1 @@ +2e7e68f4cd9d817e4034852352a3b44c \ No newline at end of file diff --git a/docs/simple-api/NumericTypeConstructor_8hpp__incl.png b/docs/simple-api/NumericTypeConstructor_8hpp__incl.png new file mode 100644 index 00000000..ec1c92d6 Binary files /dev/null and b/docs/simple-api/NumericTypeConstructor_8hpp__incl.png differ diff --git a/docs/simple-api/Numeric_8hpp-source.html b/docs/simple-api/Numeric_8hpp-source.html new file mode 100644 index 00000000..9a5d40a8 --- /dev/null +++ b/docs/simple-api/Numeric_8hpp-source.html @@ -0,0 +1,151 @@ + + +XQilla Simple API: Numeric.hpp Source File + + + + + + +

Numeric.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: Numeric.hpp,v 1.12 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef __NUMERIC_HPP
+00015 #define __NUMERIC_HPP
+00016 
+00017 #include <xercesc/util/XercesDefs.hpp>
+00018 #include <xqilla/framework/XQillaExport.hpp>
+00019 #include <xqilla/items/AnyAtomicType.hpp>
+00020 
+00021 class DynamicContext;
+00022 class StaticContext;
+00023 class MAPM;
+00024 
+00025 class XQILLA_API Numeric : public AnyAtomicType
+00026 {
+00027 public:
+00028   typedef RefCountPointer<const Numeric> Ptr;
+00029 
+00030   /* is this type numeric?  Return true */
+00031   virtual bool isNumericValue() const { return true; };
+00032 
+00033   /* Get the name of the primitive type (basic type) of this type
+00034    * (ie "decimal" for xs:decimal) */
+00035   virtual const XMLCh* getPrimitiveTypeName() const = 0;
+00036 
+00037   /* Get the namespace URI for this type */
+00038   virtual const XMLCh* getTypeURI() const = 0;
+00039 
+00040   /* Get the name of this type  (ie "integer" for xs:integer) */
+00041   virtual const XMLCh* getTypeName() const = 0;
+00042 
+00043   /* returns the XMLCh* (canonical) representation of this type */
+00044   virtual const XMLCh* asString(const DynamicContext* context) const = 0;
+00045 
+00046   /* Promote this to the given type, if possible */
+00047   virtual Numeric::Ptr promoteTypeIfApplicable(const XMLCh* typeURI, const XMLCh* typeName, const DynamicContext* context) const = 0;
+00048   
+00049   /* returns true if the two Numeric values are equal 
+00050    * false otherwise */
+00051   virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const;
+00052 
+00054   virtual bool lessThan(const Numeric::Ptr &other, const DynamicContext* context) const;
+00055 
+00057   virtual bool greaterThan(const Numeric::Ptr &other, const DynamicContext* context) const;
+00058 
+00061   virtual int compare(const Numeric::Ptr &other, const DynamicContext *context) const;
+00062 
+00064   virtual Numeric::Ptr add(const Numeric::Ptr &other, const DynamicContext* context) const = 0;
+00065 
+00068   virtual Numeric::Ptr subtract(const Numeric::Ptr &other, const DynamicContext* context) const = 0;
+00069 
+00071   virtual Numeric::Ptr multiply(const Numeric::Ptr &other, const DynamicContext* context) const = 0;
+00072 
+00074   virtual Numeric::Ptr divide(const Numeric::Ptr &other, const DynamicContext* context) const = 0;
+00075 
+00077   virtual Numeric::Ptr mod(const Numeric::Ptr &other, const DynamicContext* context) const = 0;
+00078   
+00080   virtual Numeric::Ptr floor(const DynamicContext* context) const = 0;
+00081 
+00083   virtual Numeric::Ptr ceiling(const DynamicContext* context) const = 0;
+00084 
+00086   virtual Numeric::Ptr round(const DynamicContext* context) const = 0;
+00087 
+00089   virtual Numeric::Ptr roundHalfToEven(const Numeric::Ptr &precision, const DynamicContext* context) const = 0;
+00090 
+00092   virtual Numeric::Ptr invert(const DynamicContext* context) const = 0;
+00093 
+00095   virtual bool isZero() const = 0;
+00096 
+00098   virtual bool isPositive() const = 0;
+00099 
+00101   virtual bool isNegative() const = 0;
+00102 
+00103   /* Is this floating point value not a number? */
+00104   virtual bool isNaN() const = 0;
+00105 
+00106   /* Is this floating point value infinite? */
+00107   virtual bool isInfinite() const = 0;
+00108 
+00109   virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0;
+00110 
+00111   virtual const MAPM &asMAPM() const = 0;
+00112 
+00113   enum State {
+00114     NEG_INF = 0,
+00115     NEG_NUM = 1,
+00116     NUM = 2,
+00117     INF = 3,
+00118     NaN = 4
+00119   };
+00120 
+00121   virtual State getState() const = 0;
+00122 
+00123   static const XMLCh NaN_string[];
+00124   static const XMLCh NAN_string[];
+00125   static const XMLCh INF_string[];
+00126   static const XMLCh NegINF_string[];
+00127   static const XMLCh NegZero_string[];
+00128   static const XMLCh PosZero_string[];
+00129 
+00130   static void checkFloatLimits(Numeric::State &state, MAPM &value);
+00131   static void checkDoubleLimits(Numeric::State &state, MAPM &value);
+00132 
+00133   static const XMLCh *asDecimalString(const MAPM &value, int significantDigits, const StaticContext* context);
+00134   static const XMLCh *asDoubleString(State state, const MAPM &value, int significantDigits, const StaticContext* context);
+00135 
+00136 protected:
+00137   virtual AnyAtomicType::Ptr castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI,
+00138                                             const XMLCh* targetType, const DynamicContext* context) const;
+00139 
+00140   const XMLCh *asDecimalString(int significantDigits, const StaticContext* context) const;
+00141   const XMLCh *asDoubleString(int significantDigits, const StaticContext* context) const;
+00142   
+00143 };
+00144 
+00145 #endif //  __NUMERIC_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/Numeric_8hpp.html b/docs/simple-api/Numeric_8hpp.html new file mode 100644 index 00000000..39be58a2 --- /dev/null +++ b/docs/simple-api/Numeric_8hpp.html @@ -0,0 +1,57 @@ + + +XQilla Simple API: Numeric.hpp File Reference + + + + + + +

Numeric.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/AnyAtomicType.hpp>
+ +

+Include dependency graph for Numeric.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + + + + + + + + + +

+Go to the source code of this file. + + + + +

Classes

class  Numeric
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/Numeric_8hpp__dep__incl.map b/docs/simple-api/Numeric_8hpp__dep__incl.map new file mode 100644 index 00000000..236f3a87 --- /dev/null +++ b/docs/simple-api/Numeric_8hpp__dep__incl.map @@ -0,0 +1,11 @@ +base referer +rect $ATDecimalOrDerived_8hpp.html 154,157 327,181 +rect $ATDoubleOrDerived_8hpp.html 381,306 546,330 +rect $ATFloatOrDerived_8hpp.html 163,356 318,380 +rect $ATStringOrDerived_8hpp.html 161,405 321,429 +rect $Sequence_8hpp.html 410,157 517,181 +rect $ATDurationOrDerived_8hpp.html 375,58 551,82 +rect $ATDateOrDerived_8hpp.html 615,205 767,229 +rect $ItemFactory_8hpp.html 831,230 949,254 +rect $ATDateTimeOrDerived_8hpp.html 601,34 782,58 +rect $ATTimeOrDerived_8hpp.html 614,133 769,157 diff --git a/docs/simple-api/Numeric_8hpp__dep__incl.md5 b/docs/simple-api/Numeric_8hpp__dep__incl.md5 new file mode 100644 index 00000000..2a362f19 --- /dev/null +++ b/docs/simple-api/Numeric_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +f222d2d4070419f57d19ef810d3b8249 \ No newline at end of file diff --git a/docs/simple-api/Numeric_8hpp__dep__incl.png b/docs/simple-api/Numeric_8hpp__dep__incl.png new file mode 100644 index 00000000..59419632 Binary files /dev/null and b/docs/simple-api/Numeric_8hpp__dep__incl.png differ diff --git a/docs/simple-api/Numeric_8hpp__incl.map b/docs/simple-api/Numeric_8hpp__incl.map new file mode 100644 index 00000000..323ed350 --- /dev/null +++ b/docs/simple-api/Numeric_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $AnyAtomicType_8hpp.html 154,109 365,133 +rect $Item_8hpp.html 413,109 557,133 diff --git a/docs/simple-api/Numeric_8hpp__incl.md5 b/docs/simple-api/Numeric_8hpp__incl.md5 new file mode 100644 index 00000000..5367480c --- /dev/null +++ b/docs/simple-api/Numeric_8hpp__incl.md5 @@ -0,0 +1 @@ +bef1a3095149bc51a99308540f7d0e84 \ No newline at end of file diff --git a/docs/simple-api/Numeric_8hpp__incl.png b/docs/simple-api/Numeric_8hpp__incl.png new file mode 100644 index 00000000..a15caa85 Binary files /dev/null and b/docs/simple-api/Numeric_8hpp__incl.png differ diff --git a/docs/simple-api/PlatformUtils_8hpp-source.html b/docs/simple-api/PlatformUtils_8hpp-source.html new file mode 100644 index 00000000..3cf4ed70 --- /dev/null +++ b/docs/simple-api/PlatformUtils_8hpp-source.html @@ -0,0 +1,327 @@ + + +XQilla Simple API: PlatformUtils.hpp Source File + + + + + + +

PlatformUtils.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright 1999-2004 The Apache Software Foundation.
+00003  * 
+00004  * Licensed under the Apache License, Version 2.0 (the "License");
+00005  * you may not use this file except in compliance with the License.
+00006  * You may obtain a copy of the License at
+00007  * 
+00008  *      http://www.apache.org/licenses/LICENSE-2.0
+00009  * 
+00010  * Unless required by applicable law or agreed to in writing, software
+00011  * distributed under the License is distributed on an "AS IS" BASIS,
+00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00013  * See the License for the specific language governing permissions and
+00014  * limitations under the License.
+00015  */
+00016 
+00017 /*
+00018  * $Id: PlatformUtils.hpp 180016 2005-06-04 19:49:30Z jberry $
+00019  */
+00020 
+00021 
+00022 #if !defined(PLATFORMUTILS_HPP)
+00023 #define PLATFORMUTILS_HPP
+00024 
+00025 #include <xercesc/util/XMLException.hpp>
+00026 #include <xercesc/util/PanicHandler.hpp>
+00027 
+00028 XERCES_CPP_NAMESPACE_BEGIN
+00029 
+00030 class XMLMsgLoader;
+00031 class XMLNetAccessor;
+00032 class XMLTransService;
+00033 class MemoryManager;
+00034 class XMLMutex;
+00035 
+00036 //
+00037 //  For internal use only
+00038 //
+00039 //  This class provides a simple abstract API via which lazily evaluated
+00040 //  data can be cleaned up.
+00041 //
+00042 class XMLUTIL_EXPORT XMLDeleter
+00043 {
+00044 public :
+00045     virtual ~XMLDeleter();
+00046 
+00047 protected :
+00048     XMLDeleter();
+00049 
+00050 private :
+00051     XMLDeleter(const XMLDeleter&);
+00052     XMLDeleter& operator=(const XMLDeleter&);
+00053 };
+00054 
+00055 
+00064 class XMLUTIL_EXPORT XMLPlatformUtils
+00065 {
+00066 public :
+00067 
+00070 
+00083     static XMLNetAccessor*      fgNetAccessor;
+00084 
+00095     static XMLTransService*     fgTransService;
+00096 
+00101     static PanicHandler*        fgUserPanicHandler;
+00102     
+00107     static PanicHandler*        fgDefaultPanicHandler;
+00108 
+00114     static MemoryManager*       fgMemoryManager;
+00115     
+00124     static MemoryManager*       fgArrayMemoryManager;
+00125 
+00126     static XMLMutex*            fgAtomicMutex;
+00127     
+00129 
+00130 
+00133 
+00164     static void Initialize(const char*          const locale = XMLUni::fgXercescDefaultLocale
+00165                          , const char*          const nlsHome = 0
+00166                          ,       PanicHandler*  const panicHandler = 0
+00167                          ,       MemoryManager* const memoryManager = 0
+00168                          ,       bool                 toInitStatics = false);
+00169 
+00176     static void Terminate();
+00177 
+00194     static void panic
+00195     (
+00196         const   PanicHandler::PanicReasons    reason
+00197     );
+00198     
+00200 
+00203 
+00217     static unsigned int curFilePos(FileHandle theFile
+00218         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager);
+00219 
+00230     static void closeFile(FileHandle theFile
+00231         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager);
+00232 
+00243     static unsigned int fileSize(FileHandle theFile
+00244         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager);
+00245 
+00256     static FileHandle openFile(const char* const fileName
+00257         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager);
+00258 
+00269     static FileHandle openFile(const XMLCh* const fileName
+00270         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager);
+00271 
+00282     static FileHandle openFileToWrite(const char* const fileName
+00283         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager);
+00284 
+00295     static FileHandle openFileToWrite(const XMLCh* const fileName
+00296         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager);
+00297 
+00308     static FileHandle openStdInHandle(MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager);
+00309 
+00326     static unsigned int readFileBuffer
+00327     (
+00328                 FileHandle      theFile
+00329         , const unsigned int    toRead
+00330         ,       XMLByte* const  toFill
+00331         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager
+00332     );
+00333 
+00348     static void writeBufferToFile
+00349     (
+00350           FileHandle     const  theFile
+00351         , long                  toWrite
+00352         , const XMLByte* const  toFlush
+00353         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager
+00354     );
+00355 
+00365     static void resetFile(FileHandle theFile
+00366         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager);
+00367 
+00369 
+00370 
+00394     static XMLCh* getFullPath
+00395     (
+00396         const XMLCh* const srcPath
+00397         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+00398     );
+00399 
+00413     static XMLCh* getCurrentDirectory
+00414     (
+00415         MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+00416     );
+00417 
+00427     static inline bool isAnySlash(XMLCh c);
+00428     
+00438     static void   removeDotSlash(XMLCh* const srcPath
+00439         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+00440 
+00451     static void   removeDotDotSlash(XMLCh* const srcPath
+00452         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+00453 
+00467     static bool isRelative(const XMLCh* const toCheck
+00468         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+00469         );
+00470 
+00490     static XMLCh* weavePaths
+00491     (
+00492         const   XMLCh* const    basePath
+00493         , const XMLCh* const    relativePath
+00494         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+00495     );
+00497 
+00500 
+00510     static unsigned long getCurrentMillis();
+00512 
+00515 
+00523     static void closeMutex(void* const mtxHandle);
+00524 
+00532     static void lockMutex(void* const mtxHandle);
+00533 
+00543     static void* makeMutex(MemoryManager* manager = XMLPlatformUtils::fgMemoryManager);
+00544 
+00557     static void unlockMutex(void* const mtxHandle);
+00558 
+00560 
+00561 
+00564 
+00572     static XMLMsgLoader* loadMsgSet(const XMLCh* const msgDomain);
+00573 
+00575 
+00578 
+00604     static void* compareAndSwap
+00605     (
+00606                 void**      toFill
+00607         , const void* const newValue
+00608         , const void* const toCompare
+00609     );
+00610 
+00612 
+00613 
+00616 
+00636     static int atomicIncrement(int& location);
+00637 
+00657     static int atomicDecrement(int& location);
+00658 
+00660 
+00674     static void recognizeNEL(bool state
+00675         , MemoryManager* const manager  = XMLPlatformUtils::fgMemoryManager);
+00676 
+00680     static bool isNELRecognized();
+00682 
+00694     static void strictIANAEncoding(const bool state);
+00695 
+00700     static bool isStrictIANAEncoding();
+00702                 
+00710         static inline size_t alignPointerForNewBlockAllocation(size_t ptrSize);
+00711 
+00712 private :
+00713     // -----------------------------------------------------------------------
+00714     //  Unimplemented constructors and operators
+00715     // -----------------------------------------------------------------------
+00716     XMLPlatformUtils();
+00717 
+00720 
+00726     static XMLMsgLoader* loadAMsgSet(const XMLCh* const msgDomain);
+00727 
+00737     static XMLNetAccessor* makeNetAccessor();
+00738 
+00749     static XMLTransService* makeTransService();
+00750 
+00757     static void platformInit();
+00758 
+00765     static void platformTerm();
+00766 
+00774     static int  searchSlashDotDotSlash(XMLCh* const srcPath);
+00775 
+00777 
+00780 
+00787     static bool fgMemMgrAdopted;
+00788 
+00790 };
+00791 
+00792 
+00793 MakeXMLException(XMLPlatformUtilsException, XMLUTIL_EXPORT)
+00794 
+00795 
+00796 // ---------------------------------------------------------------------------
+00797 //  XMLPlatformUtils: alignPointerForNewBlockAllocation
+00798 // ---------------------------------------------------------------------------
+00799 //  Calculate alignment required by platform for a new
+00800 //      block allocation. We use this in our custom allocators
+00801 //      to ensure that returned blocks are properly aligned.
+00802 //  Note that, although this will take a pointer and return the position
+00803 //  at which it should be placed for correct alignment, in our code
+00804 //  we normally use size_t parameters to discover what the alignment
+00805 //  of header blocks should be.  Thus, if this is to be
+00806 //  used for the former purpose, to make compilers happy
+00807 //  some casting will be necessary - neilg.
+00808 //
+00809 //  Note: XML_PLATFORM_NEW_BLOCK_ALIGNMENT may be specified on a
+00810 //        per-architecture basis to dictate the alignment requirements
+00811 //        of the architecture. In the absense of this specification,
+00812 //        this routine guesses at the correct alignment value.
+00813 //
+00814 //        A XML_PLATFORM_NEW_BLOCK_ALIGNMENT value of zero is illegal.
+00815 //        If a platform requires absolutely no alignment, a value
+00816 //        of 1 should be specified ("align pointers on 1 byte boundaries").
+00817 //
+00818 inline size_t
+00819 XMLPlatformUtils::alignPointerForNewBlockAllocation(size_t ptrSize)
+00820 {
+00821         //      Macro XML_PLATFORM_NEW_BLOCK_ALIGNMENT may be defined
+00822         //      as needed to dictate alignment requirements on a
+00823         //      per-architecture basis. In the absense of that we
+00824         //      take an educated guess.
+00825         #ifdef XML_PLATFORM_NEW_BLOCK_ALIGNMENT
+00826                 size_t alignment = XML_PLATFORM_NEW_BLOCK_ALIGNMENT;
+00827         #else
+00828                 size_t alignment = (sizeof(void*) >= sizeof(double)) ? sizeof(void*) : sizeof(double);
+00829         #endif
+00830         
+00831         //      Calculate current alignment of pointer
+00832         size_t current = ptrSize % alignment;
+00833         
+00834         //      Adjust pointer alignment as needed
+00835         return (current == 0)
+00836                  ? ptrSize
+00837                  : (ptrSize + alignment - current);
+00838 }
+00839 
+00840 
+00841 
+00842 // ---------------------------------------------------------------------------
+00843 //  XMLDeleter: Public Destructor
+00844 // ---------------------------------------------------------------------------
+00845 inline XMLDeleter::~XMLDeleter()
+00846 {
+00847 }
+00848 
+00849 // ---------------------------------------------------------------------------
+00850 //  XMLDeleter: Hidden constructors and operators
+00851 // ---------------------------------------------------------------------------
+00852 inline XMLDeleter::XMLDeleter()
+00853 {
+00854 }
+00855 
+00856 XERCES_CPP_NAMESPACE_END
+00857 
+00858 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/PlatformUtils_8hpp.html b/docs/simple-api/PlatformUtils_8hpp.html new file mode 100644 index 00000000..b2372ef8 --- /dev/null +++ b/docs/simple-api/PlatformUtils_8hpp.html @@ -0,0 +1,90 @@ + + +XQilla Simple API: PlatformUtils.hpp File Reference + + + + + + +

PlatformUtils.hpp File Reference

#include <xercesc/util/XMLException.hpp>
+#include <xercesc/util/PanicHandler.hpp>
+ +

+Include dependency graph for PlatformUtils.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + + + + + + + + + + + + +

+Go to the source code of this file. + + + + + + + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::XMLDeleter
class  xercesc::XMLPlatformUtils
 Utilities that must be implemented in a platform-specific way. More...

Defines

#define PLATFORMUTILS_HPP

Functions

 xercesc::MakeXMLException (XMLPlatformUtilsException, XMLUTIL_EXPORT) inline size_t XMLPlatformUtils
+


Define Documentation

+

+ + + + +
+ + + + +
#define PLATFORMUTILS_HPP
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/PlatformUtils_8hpp__dep__incl.map b/docs/simple-api/PlatformUtils_8hpp__dep__incl.map new file mode 100644 index 00000000..5e6310c5 --- /dev/null +++ b/docs/simple-api/PlatformUtils_8hpp__dep__incl.map @@ -0,0 +1,13 @@ +base referer +rect $XQilla_8hpp.html 204,8 286,32 +rect $Sequence_8hpp.html 192,56 298,80 +rect $StaticContext_8hpp.html 182,104 308,128 +rect $InputSource_8hpp.html 185,200 305,224 +rect $XQQuery_8hpp.html 397,128 501,152 +rect $DynamicContext_8hpp.html 377,32 521,56 +rect $XQScopedNamespace_8hpp.html 357,80 541,104 +rect $ContextHelpers_8hpp.html 589,32 728,56 +rect $LocalFileInputSource_8hpp.html 362,176 536,200 +rect $MemBufInputSource_8hpp.html 364,224 534,248 +rect $StdInInputSource_8hpp.html 373,272 525,296 +rect $URLInputSource_8hpp.html 376,320 522,344 diff --git a/docs/simple-api/PlatformUtils_8hpp__dep__incl.md5 b/docs/simple-api/PlatformUtils_8hpp__dep__incl.md5 new file mode 100644 index 00000000..440b4ce0 --- /dev/null +++ b/docs/simple-api/PlatformUtils_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +41e51e96d4d94e5aab9a85eca095975b \ No newline at end of file diff --git a/docs/simple-api/PlatformUtils_8hpp__dep__incl.png b/docs/simple-api/PlatformUtils_8hpp__dep__incl.png new file mode 100644 index 00000000..64f90ddb Binary files /dev/null and b/docs/simple-api/PlatformUtils_8hpp__dep__incl.png differ diff --git a/docs/simple-api/PlatformUtils_8hpp__incl.map b/docs/simple-api/PlatformUtils_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/simple-api/PlatformUtils_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/simple-api/PlatformUtils_8hpp__incl.md5 b/docs/simple-api/PlatformUtils_8hpp__incl.md5 new file mode 100644 index 00000000..b38ed1a1 --- /dev/null +++ b/docs/simple-api/PlatformUtils_8hpp__incl.md5 @@ -0,0 +1 @@ +9f393b9a770527cd427164c361d51399 \ No newline at end of file diff --git a/docs/simple-api/PlatformUtils_8hpp__incl.png b/docs/simple-api/PlatformUtils_8hpp__incl.png new file mode 100644 index 00000000..2477cda4 Binary files /dev/null and b/docs/simple-api/PlatformUtils_8hpp__incl.png differ diff --git a/docs/simple-api/ReferenceCounted_8hpp-source.html b/docs/simple-api/ReferenceCounted_8hpp-source.html new file mode 100644 index 00000000..ab1b4e28 --- /dev/null +++ b/docs/simple-api/ReferenceCounted_8hpp-source.html @@ -0,0 +1,156 @@ + + +XQilla Simple API: ReferenceCounted.hpp Source File + + + + + + +

ReferenceCounted.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: ReferenceCounted.hpp,v 1.7 2006/11/01 16:37:12 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _REFERENCECOUNTED_HPP
+00015 #define _REFERENCECOUNTED_HPP
+00016 
+00017 #include <xqilla/framework/XQillaExport.hpp>
+00018 #include <xercesc/framework/MemoryManager.hpp>
+00019 
+00020 // for null RefCountPointer instances
+00021 #define NULLRCP ((void *)0)
+00022 
+00024 class XQILLA_API ReferenceCounted
+00025 {
+00026 public:
+00027   ReferenceCounted()
+00028     : _ref_count(0) {}
+00029   virtual ~ReferenceCounted() {}
+00030 
+00032   void incrementRefCount() const
+00033   {
+00034     ++const_cast<unsigned int&>(_ref_count);
+00035   }
+00036 
+00038   virtual void decrementRefCount() const
+00039   {
+00040     if(--const_cast<unsigned int&>(_ref_count) == 0) {
+00041       delete this;
+00042     }
+00043   }
+00044 
+00045 protected:
+00046   unsigned int _ref_count; // mutable
+00047 };
+00048 
+00050 template<class T> class RefCountPointer
+00051 {
+00052 public:
+00053   RefCountPointer(T *p = 0) : _p(p)
+00054   {
+00055     if(_p != 0) _p->incrementRefCount();
+00056   }
+00057 
+00058   template<class T2> RefCountPointer(const RefCountPointer<T2> &o) : _p((T*)(T2*)o)
+00059   {
+00060     if(_p != 0) _p->incrementRefCount();
+00061   }
+00062 
+00063   RefCountPointer(const RefCountPointer<T> &o) : _p(o._p)
+00064   {
+00065     if(_p != 0) _p->incrementRefCount();
+00066   }
+00067 
+00068   RefCountPointer &operator=(const RefCountPointer<T> &o)
+00069   {
+00070     if(_p != o._p) {
+00071       if(_p != 0) _p->decrementRefCount();
+00072       _p = o._p;
+00073       if(_p != 0) _p->incrementRefCount();
+00074     }
+00075     return *this;
+00076   }
+00077 
+00078   ~RefCountPointer()
+00079   {
+00080     if(_p != 0) _p->decrementRefCount();
+00081   }
+00082 
+00083   T *operator->() const
+00084   {
+00085     return _p;
+00086   }
+00087 
+00088   operator T*() const
+00089   {
+00090     return _p;
+00091   }
+00092 
+00093   T *get() const
+00094   {
+00095     return _p;
+00096   }
+00097 
+00098   bool isNull() const
+00099   {
+00100     return (_p == 0);
+00101   }
+00102 
+00103   bool notNull() const
+00104   {
+00105     return (_p != 0);
+00106   }
+00107 
+00108 protected:
+00109   T *_p;
+00110 };
+00111 
+00112 template<class T1, class T2>
+00113 inline bool operator==(const RefCountPointer<T1> &a, const RefCountPointer<T2> &b)
+00114 {
+00115   return (void*)(T1*)a == (void*)(T2*)b;
+00116 }
+00117 
+00118 template<class T1, class T2>
+00119 inline bool operator!=(const RefCountPointer<T1> &a, const RefCountPointer<T2> &b)
+00120 {
+00121   return (void*)(T1*)a != (void*)(T2*)b;
+00122 }
+00123 
+00124 template<class T>
+00125 inline bool operator==(const RefCountPointer<T> &a, void *b)
+00126 {
+00127   return (T*)a == (T*)b;
+00128 }
+00129 
+00130 template<class T>
+00131 inline bool operator!=(const RefCountPointer<T> &a, void *b)
+00132 {
+00133   return (T*)a != (T*)b;
+00134 }
+00135 
+00136 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ReferenceCounted_8hpp.html b/docs/simple-api/ReferenceCounted_8hpp.html new file mode 100644 index 00000000..e9756107 --- /dev/null +++ b/docs/simple-api/ReferenceCounted_8hpp.html @@ -0,0 +1,270 @@ + + +XQilla Simple API: ReferenceCounted.hpp File Reference + + + + + + +

ReferenceCounted.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <xercesc/framework/MemoryManager.hpp>
+ +

+Include dependency graph for ReferenceCounted.hpp:

+ + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + + + + + + + + + + + + + + + +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + +

Classes

class  ReferenceCounted
 Super class for reference counted classes. More...
class  RefCountPointer< T >
 Super class of all the reference counted wrappers for Items. More...

Defines

#define NULLRCP   ((void *)0)

Functions

template<class T1, class T2>
bool operator== (const RefCountPointer< T1 > &a, const RefCountPointer< T2 > &b)
template<class T1, class T2>
bool operator!= (const RefCountPointer< T1 > &a, const RefCountPointer< T2 > &b)
template<class T>
bool operator== (const RefCountPointer< T > &a, void *b)
template<class T>
bool operator!= (const RefCountPointer< T > &a, void *b)
+


Define Documentation

+

+ + + + +
+ + + + +
#define NULLRCP   ((void *)0)
+
+ + + + + +
+   + + +

+

+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<class T>
bool operator!= const RefCountPointer< T > &  a,
void *  b
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<class T1, class T2>
bool operator!= const RefCountPointer< T1 > &  a,
const RefCountPointer< T2 > &  b
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<class T>
bool operator== const RefCountPointer< T > &  a,
void *  b
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<class T1, class T2>
bool operator== const RefCountPointer< T1 > &  a,
const RefCountPointer< T2 > &  b
[inline]
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/ReferenceCounted_8hpp__dep__incl.map b/docs/simple-api/ReferenceCounted_8hpp__dep__incl.map new file mode 100644 index 00000000..ec72aa76 --- /dev/null +++ b/docs/simple-api/ReferenceCounted_8hpp__dep__incl.map @@ -0,0 +1,17 @@ +base referer +rect $Item_8hpp.html 216,442 290,466 +rect $Timezone_8hpp.html 810,394 917,418 +rect $AnyAtomicType_8hpp.html 338,298 480,322 +rect $Result_8hpp.html 366,442 452,466 +rect $Numeric_8hpp.html 584,7 680,31 +rect $ATStringOrDerived_8hpp.html 784,33 944,57 +rect $ATQNameOrDerived_8hpp.html 546,106 717,130 +rect $ATBooleanOrDerived_8hpp.html 545,154 718,178 +rect $ATDurationOrDerived_8hpp.html 544,202 720,226 +rect $ATAnyURIOrDerived_8hpp.html 548,250 716,274 +rect $DateOrTimeType_8hpp.html 558,298 705,322 +rect $ATUntypedAtomic_8hpp.html 554,346 709,370 +rect $ATAnySimpleType_8hpp.html 554,394 709,418 +rect $ATBase64BinaryOrDerived_8hpp.html 528,442 736,466 +rect $ATHexBinaryOrDerived_8hpp.html 538,490 725,514 +rect $ATNotationOrDerived_8hpp.html 545,538 718,562 diff --git a/docs/simple-api/ReferenceCounted_8hpp__dep__incl.md5 b/docs/simple-api/ReferenceCounted_8hpp__dep__incl.md5 new file mode 100644 index 00000000..6f5e3c33 --- /dev/null +++ b/docs/simple-api/ReferenceCounted_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +8a99d989ac9166baa85082accc4b7075 \ No newline at end of file diff --git a/docs/simple-api/ReferenceCounted_8hpp__dep__incl.png b/docs/simple-api/ReferenceCounted_8hpp__dep__incl.png new file mode 100644 index 00000000..064cab30 Binary files /dev/null and b/docs/simple-api/ReferenceCounted_8hpp__dep__incl.png differ diff --git a/docs/simple-api/ReferenceCounted_8hpp__incl.map b/docs/simple-api/ReferenceCounted_8hpp__incl.map new file mode 100644 index 00000000..57aab2e7 --- /dev/null +++ b/docs/simple-api/ReferenceCounted_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $MemoryManager_8hpp.html 217,56 481,80 diff --git a/docs/simple-api/ReferenceCounted_8hpp__incl.md5 b/docs/simple-api/ReferenceCounted_8hpp__incl.md5 new file mode 100644 index 00000000..a367e0bc --- /dev/null +++ b/docs/simple-api/ReferenceCounted_8hpp__incl.md5 @@ -0,0 +1 @@ +d3c61d52d09738fa1754c632ca3d0020 \ No newline at end of file diff --git a/docs/simple-api/ReferenceCounted_8hpp__incl.png b/docs/simple-api/ReferenceCounted_8hpp__incl.png new file mode 100644 index 00000000..8faed6af Binary files /dev/null and b/docs/simple-api/ReferenceCounted_8hpp__incl.png differ diff --git a/docs/simple-api/Result_8hpp-source.html b/docs/simple-api/Result_8hpp-source.html new file mode 100644 index 00000000..9597feef --- /dev/null +++ b/docs/simple-api/Result_8hpp-source.html @@ -0,0 +1,118 @@ + + +XQilla Simple API: Result.hpp Source File + + + + + + +

Result.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: Result.hpp,v 1.10 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _RESULT_HPP
+00015 #define _RESULT_HPP
+00016 
+00017 #include <string>
+00018 #include <xercesc/util/XercesDefs.hpp>
+00019 
+00020 #include <xqilla/framework/XQillaExport.hpp>
+00021 #include <xqilla/items/Item.hpp>
+00022 #include <xqilla/runtime/ResultImpl.hpp>
+00023 #include <xqilla/runtime/EmptyResult.hpp>
+00024 
+00025 class Sequence;
+00026 class SequenceType;
+00027 class DynamicContext;
+00028 class StaticType;
+00029 
+00031 class XQILLA_API Result
+00032 {
+00033 public:
+00034   Result(const Sequence &seq);
+00035   Result(ResultImpl *impl);
+00036   Result(const Result &o);
+00037   Result &operator=(const Result &o);
+00038   ~Result();
+00039 
+00041   ResultImpl *operator->();
+00042 
+00044   const ResultImpl *operator->() const;
+00045 
+00047   ResultImpl *get();
+00048 
+00050   const ResultImpl *get() const;
+00051 
+00053   bool isNull() const;
+00054 
+00055   EmptyResult* getEmpty() const;
+00056   
+00057 private:
+00058   ResultImpl *_impl;
+00059 
+00060   static EmptyResult _empty;
+00061 };
+00062 
+00063 inline bool Result::isNull() const
+00064 {
+00065   return _impl == 0;
+00066 }
+00067 
+00068 inline ResultImpl *Result::get()
+00069 {
+00070   if(_impl) return _impl;
+00071   return getEmpty();
+00072 }
+00073 
+00074 inline const ResultImpl *Result::get() const
+00075 {
+00076   if(_impl) return _impl;
+00077   return getEmpty();
+00078 }
+00079 
+00080 inline ResultImpl *Result::operator->()
+00081 {
+00082   return get();
+00083 }
+00084 
+00085 inline const ResultImpl *Result::operator->() const
+00086 {
+00087   return get();
+00088 }
+00089 
+00090 inline Result &Result::operator=(const Result &o)
+00091 {
+00092   if(o._impl != _impl) {
+00093     if(_impl) _impl->decrementRefCount();
+00094     _impl = o._impl;
+00095     if(_impl) _impl->incrementRefCount();
+00096   }
+00097   return *this;
+00098 }
+00099 
+00100 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/Result_8hpp.html b/docs/simple-api/Result_8hpp.html new file mode 100644 index 00000000..428d1c72 --- /dev/null +++ b/docs/simple-api/Result_8hpp.html @@ -0,0 +1,46 @@ + + +XQilla Simple API: Result.hpp File Reference + + + + + + +

Result.hpp File Reference

#include <string>
+#include <xercesc/util/XercesDefs.hpp>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/Item.hpp>
+#include <xqilla/runtime/ResultImpl.hpp>
+#include <xqilla/runtime/EmptyResult.hpp>
+ +

+Include dependency graph for Result.hpp:

+ + + + + +

+Go to the source code of this file. + + + + + +

Classes

class  Result
 A reference counting wrapper for the lazily evaluated query result. More...
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/Result_8hpp__incl.map b/docs/simple-api/Result_8hpp__incl.map new file mode 100644 index 00000000..7197d1b6 --- /dev/null +++ b/docs/simple-api/Result_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $Item_8hpp.html 173,106 317,130 +rect $ReferenceCounted_8hpp.html 398,57 657,81 diff --git a/docs/simple-api/Result_8hpp__incl.md5 b/docs/simple-api/Result_8hpp__incl.md5 new file mode 100644 index 00000000..9ccfae45 --- /dev/null +++ b/docs/simple-api/Result_8hpp__incl.md5 @@ -0,0 +1 @@ +7187423805f5db028297029355987c91 \ No newline at end of file diff --git a/docs/simple-api/Result_8hpp__incl.png b/docs/simple-api/Result_8hpp__incl.png new file mode 100644 index 00000000..5965fba9 Binary files /dev/null and b/docs/simple-api/Result_8hpp__incl.png differ diff --git a/docs/simple-api/Scope_8hpp-source.html b/docs/simple-api/Scope_8hpp-source.html new file mode 100644 index 00000000..f8a20095 --- /dev/null +++ b/docs/simple-api/Scope_8hpp-source.html @@ -0,0 +1,157 @@ + + +XQilla Simple API: Scope.hpp Source File + + + + + + +

Scope.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: Scope.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $
+00012  */
+00013 
+00014 /*
+00015   Scope
+00016 */
+00017 
+00018 #ifndef _SCOPE_HPP
+00019 #define _SCOPE_HPP
+00020 
+00021 #include <xqilla/framework/XQillaExport.hpp>
+00022 #include <vector>
+00023 #include <xercesc/util/RefHash2KeysTableOf.hpp>
+00024 #include <xercesc/util/XMemory.hpp>
+00025 
+00026 template<class TYPE> class VarHashEntry;
+00027 
+00029 template<class TYPE>
+00030 class Scope : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory
+00031 {
+00032 public:
+00034   typedef enum {
+00035     GLOBAL_SCOPE,
+00036     LOCAL_SCOPE,
+00037     LOGICAL_BLOCK_SCOPE
+00038   } Type;
+00039 
+00040   typedef XERCES_CPP_NAMESPACE_QUALIFIER RefHash2KeysTableOf< VarHashEntry<TYPE> > VarHash;
+00041 
+00043   Scope(XPath2MemoryManager* memMgr, Type type);
+00044   ~Scope();
+00045 
+00046   void clear();
+00047 
+00048   Type getType() const;
+00049   VarHashEntry<TYPE>* get(unsigned int nsID, const XMLCh* name);
+00050   void put(unsigned int nsID, const XMLCh* name, VarHashEntry<TYPE>* value);
+00051   void remove(unsigned int nsID, const XMLCh* name);
+00052   std::vector< std::pair<unsigned int, const XMLCh*> > getVars() const;
+00053 
+00054   Scope* getNext();
+00055   void setNext(Scope* next);
+00056   
+00057 private:
+00058   typename Scope<TYPE>::Type _type;
+00059   VarHash _map;
+00060   XPath2MemoryManager* _memMgr;
+00061   Scope<TYPE>* _next;
+00062 };
+00063 
+00064 template<class TYPE>
+00065 Scope<TYPE>::Scope(XPath2MemoryManager* memMgr, Type type) :
+00066     _map(17, true, memMgr)
+00067 {
+00068   _memMgr=memMgr;
+00069   _type = type;
+00070   _next = NULL;
+00071 }
+00072 
+00073 template<class TYPE>
+00074 void Scope<TYPE>::clear()
+00075 {
+00076   _map.removeAll();
+00077 }
+00078 
+00079 template<class TYPE>
+00080 typename Scope<TYPE>::Type Scope<TYPE>::getType() const
+00081 {
+00082   return _type;
+00083 }
+00084 
+00085 template<class TYPE>
+00086 VarHashEntry<TYPE>* Scope<TYPE>::get(unsigned int nsID, const XMLCh* name)
+00087 {
+00088         return _map.get(name,nsID);
+00089 }
+00090 
+00091 template<class TYPE>
+00092 void Scope<TYPE>::put(unsigned int nsID, const XMLCh* name, VarHashEntry<TYPE>* value)
+00093 {
+00094         _map.put((void*)_memMgr->getPooledString(name),nsID,value);
+00095 }
+00096 
+00097 template<class TYPE>
+00098 void Scope<TYPE>::remove(unsigned int nsID, const XMLCh* name)
+00099 {
+00100         _map.removeKey(name,nsID);
+00101 }
+00102 
+00103 template<class TYPE>
+00104 std::vector< std::pair<unsigned int, const XMLCh*> > Scope<TYPE>::getVars() const
+00105 {
+00106     std::vector< std::pair<unsigned int, const XMLCh*> > result;
+00107     XERCES_CPP_NAMESPACE_QUALIFIER RefHash2KeysTableOfEnumerator< VarHashEntry<TYPE> > iterator(const_cast<VarHash*>(&_map));
+00108     while(iterator.hasMoreElements())
+00109         {
+00110                 XMLCh* name;
+00111                 int nsID;
+00112                 iterator.nextElementKey((void*&)name, nsID);
+00113         result.push_back(std::pair<unsigned int, const XMLCh*>(nsID,name));
+00114         }
+00115         return result;
+00116 }
+00117 
+00118 template<class TYPE>
+00119 Scope<TYPE>::~Scope()
+00120 {
+00121   _map.removeAll();
+00122 }
+00123 
+00124 template<class TYPE>
+00125 Scope<TYPE>* Scope<TYPE>::getNext()
+00126 {
+00127     return _next;
+00128 }
+00129 
+00130 template<class TYPE>
+00131 void Scope<TYPE>::setNext(Scope<TYPE>* next)
+00132 {
+00133     _next=next;
+00134 }
+00135 
+00136 #endif // _SCOPE_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/Scope_8hpp.html b/docs/simple-api/Scope_8hpp.html new file mode 100644 index 00000000..2814dddc --- /dev/null +++ b/docs/simple-api/Scope_8hpp.html @@ -0,0 +1,43 @@ + + +XQilla Simple API: Scope.hpp File Reference + + + + + + +

Scope.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <vector>
+#include <xercesc/util/RefHash2KeysTableOf.hpp>
+#include <xercesc/util/XMemory.hpp>
+ +

+Include dependency graph for Scope.hpp:

+ + + + +

+Go to the source code of this file. + + + + + +

Classes

class  Scope< TYPE >
 used inside VariableStore to implement variable scoping More...
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/Scope_8hpp__incl.map b/docs/simple-api/Scope_8hpp__incl.map new file mode 100644 index 00000000..341bf064 --- /dev/null +++ b/docs/simple-api/Scope_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $XMemory_8hpp.html 180,152 356,176 diff --git a/docs/simple-api/Scope_8hpp__incl.md5 b/docs/simple-api/Scope_8hpp__incl.md5 new file mode 100644 index 00000000..f5fca6ba --- /dev/null +++ b/docs/simple-api/Scope_8hpp__incl.md5 @@ -0,0 +1 @@ +574d1625b119331eed6aab4c64ccf273 \ No newline at end of file diff --git a/docs/simple-api/Scope_8hpp__incl.png b/docs/simple-api/Scope_8hpp__incl.png new file mode 100644 index 00000000..7265e659 Binary files /dev/null and b/docs/simple-api/Scope_8hpp__incl.png differ diff --git a/docs/simple-api/Sequence_8hpp-source.html b/docs/simple-api/Sequence_8hpp-source.html new file mode 100644 index 00000000..ccff346e --- /dev/null +++ b/docs/simple-api/Sequence_8hpp-source.html @@ -0,0 +1,117 @@ + + +XQilla Simple API: Sequence.hpp Source File + + + + + + +

Sequence.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: Sequence.hpp,v 1.8 2006/11/01 16:37:15 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _SEQUENCE_HPP
+00015 #define _SEQUENCE_HPP
+00016 
+00017 #include <vector>
+00018 
+00019 #include <xqilla/framework/XQillaExport.hpp>
+00020 #include <xqilla/items/ATDecimalOrDerived.hpp>
+00021 #include <xqilla/framework/XPath2MemoryManager.hpp>
+00022 
+00023 #include <xercesc/util/XMemory.hpp>
+00024 #include <xercesc/util/PlatformUtils.hpp>
+00025 
+00026 class DynamicContext;
+00027 
+00028 typedef std::vector<Item::Ptr, XQillaAllocator<Item::Ptr> > VectorOfItems;
+00029 
+00033 class XQILLA_API Sequence : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory
+00034 {
+00035 
+00036 public:
+00037   typedef VectorOfItems::iterator iterator;
+00038   typedef VectorOfItems::const_iterator const_iterator;
+00039   typedef VectorOfItems::reverse_iterator reverse_iterator;
+00040   typedef VectorOfItems::const_reverse_iterator const_reverse_iterator;
+00041 
+00042   // constructor that takes one Item
+00043   Sequence(const Item::Ptr &item, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr =
+00044            XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager);
+00045   // constructor that creates a empty sequence
+00046   Sequence(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr =
+00047            XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager);
+00049   Sequence(unsigned int n, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr =
+00050            XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager);
+00051   // copy constructor
+00052   Sequence(const Sequence&, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr);
+00053   // copy constructor
+00054   Sequence(const Sequence&);
+00055   Sequence &operator=(const Sequence &);
+00056 
+00057   ~Sequence();
+00058 
+00059   void clear();
+00060 
+00061   const Item::Ptr &first() const;
+00062   const Item::Ptr &second() const;
+00063 
+00065   Sequence::iterator begin(void);
+00066   Sequence::const_iterator begin(void) const;
+00067 
+00069   Sequence::iterator end(void);
+00070   Sequence::const_iterator end(void) const;
+00071 
+00073   Sequence::reverse_iterator rbegin(void);
+00074   Sequence::const_reverse_iterator rbegin(void) const;
+00075 
+00076   Sequence::reverse_iterator rend(void);
+00077   Sequence::const_reverse_iterator rend(void) const;
+00078 
+00080   unsigned int getLength(void) const;
+00081 
+00083   const Item::Ptr &item(unsigned int index) const;
+00085   const Item::Ptr &item(const ATDecimalOrDerived::Ptr &index) const;
+00086 
+00088   void addItem(const Item::Ptr &item);
+00089 
+00091   void addItemFront(const Item::Ptr &item);
+00092 
+00094   void joinSequence(const Sequence & s);
+00095 
+00097   bool isEmpty() const;
+00098 
+00100   void sortIntoDocumentOrder(const DynamicContext *context);
+00101 
+00103   void sortWithCollation(const Collation *collation, const DynamicContext *context);
+00104 
+00105 private:
+00106   VectorOfItems _itemList;
+00107 };
+00108 
+00109 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/Sequence_8hpp.html b/docs/simple-api/Sequence_8hpp.html new file mode 100644 index 00000000..f2352e05 --- /dev/null +++ b/docs/simple-api/Sequence_8hpp.html @@ -0,0 +1,76 @@ + + +XQilla Simple API: Sequence.hpp File Reference + + + + + + +

Sequence.hpp File Reference

#include <vector>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/items/ATDecimalOrDerived.hpp>
+#include <xqilla/framework/XPath2MemoryManager.hpp>
+#include <xercesc/util/XMemory.hpp>
+#include <xercesc/util/PlatformUtils.hpp>
+ +

+Include dependency graph for Sequence.hpp:

+ + + + + + + +

+Go to the source code of this file. + + + + + + + + +

Classes

class  Sequence
 An eagerly evaluated result of a query execution. More...

Typedefs

typedef std::vector< Item::Ptr,
+ XQillaAllocator< Item::Ptr > > 
VectorOfItems
+


Typedef Documentation

+

+ + + + +
+ + + + +
typedef std::vector<Item::Ptr, XQillaAllocator<Item::Ptr> > VectorOfItems
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/Sequence_8hpp__incl.map b/docs/simple-api/Sequence_8hpp__incl.map new file mode 100644 index 00000000..828a775b --- /dev/null +++ b/docs/simple-api/Sequence_8hpp__incl.map @@ -0,0 +1,5 @@ +base referer +rect $ATDecimalOrDerived_8hpp.html 190,106 433,130 +rect $XPath2MemoryManager_8hpp.html 165,154 458,178 +rect $XMemory_8hpp.html 224,202 400,226 +rect $PlatformUtils_8hpp.html 214,250 409,274 diff --git a/docs/simple-api/Sequence_8hpp__incl.md5 b/docs/simple-api/Sequence_8hpp__incl.md5 new file mode 100644 index 00000000..06ed7f7f --- /dev/null +++ b/docs/simple-api/Sequence_8hpp__incl.md5 @@ -0,0 +1 @@ +85cbca5b39a39730c672a8fc2850185e \ No newline at end of file diff --git a/docs/simple-api/Sequence_8hpp__incl.png b/docs/simple-api/Sequence_8hpp__incl.png new file mode 100644 index 00000000..b8abf076 Binary files /dev/null and b/docs/simple-api/Sequence_8hpp__incl.png differ diff --git a/docs/simple-api/StaticContext_8hpp-source.html b/docs/simple-api/StaticContext_8hpp-source.html new file mode 100644 index 00000000..eaa8dd0a --- /dev/null +++ b/docs/simple-api/StaticContext_8hpp-source.html @@ -0,0 +1,171 @@ + + +XQilla Simple API: StaticContext.hpp Source File + + + + + + +

StaticContext.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: StaticContext.hpp,v 1.16 2006/11/01 16:37:12 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _STATICCONTEXT_HPP
+00015 #define _STATICCONTEXT_HPP
+00016 
+00017 #include <xqilla/framework/XQillaExport.hpp>
+00018 #include <time.h>
+00019 #include <xqilla/schema/DocumentCache.hpp>
+00020 #include <xercesc/util/PlatformUtils.hpp>
+00021 #include <xercesc/util/XMemory.hpp>
+00022 
+00023 // Copied from ASTNode.hpp
+00024 typedef std::vector<ASTNode*,XQillaAllocator<ASTNode*> > VectorOfASTNodes;
+00025 
+00026 class DynamicContext;
+00027 class XPath2MemoryManager;
+00028 class FuncFactory;
+00029 class DatatypeFactory;
+00030 class Collation;
+00031 class VariableTypeStore;
+00032 class ItemFactory;
+00033 class StaticType;
+00034 class ModuleResolver;
+00035 
+00036 XERCES_CPP_NAMESPACE_BEGIN
+00037 class DOMDocument;
+00038 class DOMXPathNSResolver;
+00039 class XMLEntityResolver;
+00040 XERCES_CPP_NAMESPACE_END
+00041 
+00043 class XQILLA_API StaticContext : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory
+00044 {
+00045 public:
+00046   typedef enum {
+00047       ORDERING_ORDERED,
+00048       ORDERING_UNORDERED
+00049   } NodeSetOrdering;
+00050 
+00051   typedef enum {
+00052     CONSTRUCTION_MODE_PRESERVE,
+00053     CONSTRUCTION_MODE_STRIP
+00054   } ConstructionMode;
+00055 
+00056   typedef enum {
+00057     FLWOR_ORDER_EMPTY_GREATEST,
+00058     FLWOR_ORDER_EMPTY_LEAST
+00059   } FLWOROrderingMode;
+00060 
+00061   virtual ~StaticContext() {};
+00062 
+00063   virtual DynamicContext *createModuleContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
+00064                                               XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager) const = 0;
+00065   virtual DynamicContext *createDynamicContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
+00066                                                XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager) const = 0;
+00067   
+00069   virtual ItemFactory *getItemFactory() const = 0;
+00071   virtual void setItemFactory(ItemFactory *factory) = 0;
+00072 
+00074   virtual const StaticType &getContextItemType() const = 0;
+00076   virtual void setContextItemType(const StaticType &st) = 0;
+00077 
+00079   virtual bool getXPath1CompatibilityMode() const = 0;
+00081   virtual void setXPath1CompatibilityMode(bool newMode) = 0;
+00082 
+00084   virtual const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* getNSResolver() const = 0;
+00087   virtual const XMLCh* getUriBoundToPrefix(const XMLCh* prefix, const LocationInfo *location) const = 0;
+00090   virtual const XMLCh* getPrefixBoundToUri(const XMLCh* uri) const = 0;
+00092   virtual void setNSResolver(const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* resolver) = 0;
+00094   virtual void setNamespaceBinding(const XMLCh* prefix, const XMLCh* uri) = 0;
+00095 
+00097   virtual const XMLCh* getDefaultElementAndTypeNS() const = 0;
+00099   virtual void setDefaultElementAndTypeNS(const XMLCh* newNS) = 0;
+00100 
+00102   virtual const XMLCh* getDefaultFuncNS() const = 0;
+00104   virtual void setDefaultFuncNS(const XMLCh* newNS) = 0;
+00105 
+00107   virtual const DocumentCache* getDocumentCache() const = 0;
+00109   virtual void setDocumentCache(DocumentCache* docCache) = 0;
+00110 
+00119   virtual bool isTypeOrDerivedFromType(const XMLCh* const uri, const XMLCh* const typeName, const XMLCh* const uriToCheck, const XMLCh* const typeNameToCheck) const = 0;
+00125   virtual void setXMLEntityResolver(XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* const handler) = 0;
+00127   virtual XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* getXMLEntityResolver() const = 0;
+00128 
+00130   virtual void setModuleResolver(ModuleResolver *resolver) = 0;
+00132   virtual ModuleResolver *getModuleResolver() const = 0;
+00133   /* Retrieve a list of locations for the given module URI */
+00134   virtual VectorOfStrings* resolveModuleURI(const XMLCh* uri) const = 0;
+00135 
+00137   virtual void addSchemaLocation(const XMLCh* uri, VectorOfStrings* locations) = 0;
+00138   
+00140   virtual VariableTypeStore* getVariableTypeStore() = 0;
+00141 
+00143   virtual void addCustomFunction(FuncFactory *func) = 0;
+00145   virtual ASTNode* lookUpFunction(const XMLCh* prefix, const XMLCh* name, VectorOfASTNodes& v,
+00146                                   const LocationInfo *location) const = 0;
+00147 
+00149   virtual Collation* getCollation(const XMLCh* const URI, const LocationInfo *location) const = 0;
+00151   virtual void addCollation(Collation* collation) = 0;
+00152   
+00154   virtual Collation* getDefaultCollation(const LocationInfo *location) const = 0;
+00156   virtual void setDefaultCollation(const XMLCh* const URI) = 0;
+00157 
+00159   virtual const XMLCh* getBaseURI() const = 0;
+00161   virtual void setBaseURI(const XMLCh* newURI) = 0;
+00162 
+00164   virtual NodeSetOrdering getNodeSetOrdering() const = 0;
+00166   virtual void setNodeSetOrdering(NodeSetOrdering newOrder) = 0;
+00167 
+00169   virtual ConstructionMode getConstructionMode() const = 0;
+00171   virtual void setConstructionMode(ConstructionMode newMode) = 0;
+00172 
+00174   virtual void setPreserveBoundarySpace(bool value) = 0;
+00176   virtual bool getPreserveBoundarySpace() const = 0;
+00177 
+00179   virtual FLWOROrderingMode getDefaultFLWOROrderingMode() const = 0;
+00181   virtual void setDefaultFLWOROrderingMode(FLWOROrderingMode newMode) = 0;
+00182 
+00184   virtual void setInheritNamespaces(bool value) = 0;
+00186   virtual bool getInheritNamespaces() const = 0;
+00187 
+00189   virtual void setPreserveNamespaces(bool value) = 0;
+00191   virtual bool getPreserveNamespaces() const = 0;
+00192 
+00194   virtual void enableDebugging(bool enable=true) = 0;
+00196   virtual bool isDebuggingEnabled() const = 0;
+00197 
+00199   //  XQilla context specific accessors  //
+00201 
+00203   virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *createNewDocument() const = 0;
+00205   virtual void releaseDocument(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc) const = 0;
+00206 
+00208   virtual XPath2MemoryManager* getMemoryManager() const = 0;
+00210   virtual void setMemoryManager(XPath2MemoryManager* memMgr) = 0;
+00211 };
+00212 
+00213 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/StaticContext_8hpp.html b/docs/simple-api/StaticContext_8hpp.html new file mode 100644 index 00000000..ff6d578f --- /dev/null +++ b/docs/simple-api/StaticContext_8hpp.html @@ -0,0 +1,85 @@ + + +XQilla Simple API: StaticContext.hpp File Reference + + + + + + +

StaticContext.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <time.h>
+#include <xqilla/schema/DocumentCache.hpp>
+#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/util/XMemory.hpp>
+ +

+Include dependency graph for StaticContext.hpp:

+ + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + + + +

+Go to the source code of this file. + + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  StaticContext
 The parse time static context interface. More...

Typedefs

typedef std::vector< ASTNode *,
+ XQillaAllocator< ASTNode * > > 
VectorOfASTNodes
+


Typedef Documentation

+

+ + + + +
+ + + + +
typedef std::vector<ASTNode*,XQillaAllocator<ASTNode*> > VectorOfASTNodes
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/StaticContext_8hpp__dep__incl.map b/docs/simple-api/StaticContext_8hpp__dep__incl.map new file mode 100644 index 00000000..3ad800ef --- /dev/null +++ b/docs/simple-api/StaticContext_8hpp__dep__incl.map @@ -0,0 +1,5 @@ +base referer +rect $XQQuery_8hpp.html 224,8 328,32 +rect $DynamicContext_8hpp.html 204,56 348,80 +rect $XQScopedNamespace_8hpp.html 184,104 368,128 +rect $ContextHelpers_8hpp.html 416,56 554,80 diff --git a/docs/simple-api/StaticContext_8hpp__dep__incl.md5 b/docs/simple-api/StaticContext_8hpp__dep__incl.md5 new file mode 100644 index 00000000..dfb88627 --- /dev/null +++ b/docs/simple-api/StaticContext_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +7f8029371160f2225c087c43569b751c \ No newline at end of file diff --git a/docs/simple-api/StaticContext_8hpp__dep__incl.png b/docs/simple-api/StaticContext_8hpp__dep__incl.png new file mode 100644 index 00000000..7f1cd087 Binary files /dev/null and b/docs/simple-api/StaticContext_8hpp__dep__incl.png differ diff --git a/docs/simple-api/StaticContext_8hpp__incl.map b/docs/simple-api/StaticContext_8hpp__incl.map new file mode 100644 index 00000000..c840beee --- /dev/null +++ b/docs/simple-api/StaticContext_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $PlatformUtils_8hpp.html 204,152 398,176 +rect $XMemory_8hpp.html 213,200 389,224 diff --git a/docs/simple-api/StaticContext_8hpp__incl.md5 b/docs/simple-api/StaticContext_8hpp__incl.md5 new file mode 100644 index 00000000..50890d67 --- /dev/null +++ b/docs/simple-api/StaticContext_8hpp__incl.md5 @@ -0,0 +1 @@ +864c151872db131f69c80b495b2ff5b1 \ No newline at end of file diff --git a/docs/simple-api/StaticContext_8hpp__incl.png b/docs/simple-api/StaticContext_8hpp__incl.png new file mode 100644 index 00000000..f9e8bf36 Binary files /dev/null and b/docs/simple-api/StaticContext_8hpp__incl.png differ diff --git a/docs/simple-api/StaticResolutionContext_8hpp-source.html b/docs/simple-api/StaticResolutionContext_8hpp-source.html new file mode 100644 index 00000000..8a422a6e --- /dev/null +++ b/docs/simple-api/StaticResolutionContext_8hpp-source.html @@ -0,0 +1,140 @@ + + +XQilla Simple API: StaticResolutionContext.hpp Source File + + + + + + +

StaticResolutionContext.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: StaticResolutionContext.hpp,v 1.15 2006/11/01 16:37:11 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _STATICRESOLUTIONCONTEXT_HPP
+00015 #define _STATICRESOLUTIONCONTEXT_HPP
+00016 
+00017 #include <string>
+00018 
+00019 #include <xqilla/framework/XQillaExport.hpp>
+00020 #include <xqilla/ast/StaticType.hpp>
+00021 
+00022 #include <xercesc/util/RefHash2KeysTableOf.hpp>
+00023 #include <xercesc/util/StringPool.hpp>
+00024 
+00025 #include <vector>
+00026 
+00027 class XPath2MemoryManager;
+00028 
+00029 typedef XERCES_CPP_NAMESPACE_QUALIFIER RefHash2KeysTableOf<int> VariableAccessSet;
+00030 typedef XERCES_CPP_NAMESPACE_QUALIFIER RefHash2KeysTableOfEnumerator<int> VariableAccessSetEnumerator;
+00031 
+00035 class XQILLA_API StaticResolutionContext
+00036 {
+00037 public:
+00038   StaticResolutionContext(XPath2MemoryManager* memMgr);
+00039   StaticResolutionContext(const StaticResolutionContext &o, XPath2MemoryManager* memMgr);
+00040 
+00041   void copy(const StaticResolutionContext &o);
+00042 
+00044   void clear();
+00045 
+00048   void forceNoFolding(bool value);
+00049   bool isNoFoldingForced() const;
+00050 
+00051   void contextItemUsed(bool value);
+00052   void contextPositionUsed(bool value);
+00053   void contextSizeUsed(bool value);
+00054   bool isContextItemUsed() const;
+00055   bool isContextPositionUsed() const;
+00056   bool isContextSizeUsed() const;
+00058   bool areContextFlagsUsed() const;
+00059 
+00060   void currentTimeUsed(bool value);
+00061   void implicitTimezoneUsed(bool value);
+00062   bool areContextTimeUsed() const;
+00063   void availableDocumentsUsed(bool value);
+00064   void availableCollectionsUsed(bool value);
+00065   bool areDocsOrCollectionsUsed() const;
+00066 
+00067   void variableUsed(const XMLCh *namespaceURI, const XMLCh *name);
+00068   bool removeVariable(const XMLCh *namespaceURI, const XMLCh *name);
+00069   bool isVariableUsed(const XMLCh *namespaceURI, const XMLCh *name) const;
+00070   std::vector<std::pair<const XMLCh*, const XMLCh*> > variablesUsed() const;
+00071 
+00073   void add(const StaticResolutionContext &o);
+00074   void addExceptContextFlags(const StaticResolutionContext &o);
+00075 
+00077   bool isUsed() const;
+00078   bool isUsedExceptContextFlags() const;
+00079 
+00080   void creative(bool value);
+00081   bool isCreative() const;
+00082 
+00087   enum Properties {
+00088     DOCORDER     = 0x001, 
+00089     PEER         = 0x002, 
+00090     SUBTREE      = 0x004, 
+00091     GROUPED      = 0x008, 
+00092     SAMEDOC      = 0x010, 
+00093     ONENODE      = 0x020, 
+00094     SELF         = 0x040, 
+00095     FORWARDREF   = 0x080, 
+00096     UNDEFINEDVAR = 0x100  
+00097   };
+00098 
+00099   unsigned int getProperties() const;
+00100   void setProperties(unsigned int props);
+00101 
+00102   const StaticType &getStaticType() const;
+00103   StaticType &getStaticType();
+00104 
+00105   std::string toString() const;
+00106 
+00107 private:
+00108   StaticResolutionContext(const StaticResolutionContext &o);
+00109   StaticResolutionContext &operator=(const StaticResolutionContext &o);
+00110 
+00111   bool _contextItem;
+00112   bool _contextPosition;
+00113   bool _contextSize;
+00114   bool _currentTime;
+00115   bool _implicitTimezone;
+00116   bool _availableDocuments;
+00117   bool _availableCollections;
+00118   bool _forceNoFolding;
+00119   bool _creative;
+00120 
+00121   unsigned int _properties;
+00122   StaticType _staticType;
+00123 
+00124   VariableAccessSet _dynamicVariables;
+00125   XERCES_CPP_NAMESPACE_QUALIFIER XMLStringPool _uriPool;
+00126   XPath2MemoryManager* _memMgr;
+00127 };
+00128 
+00129 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/StaticResolutionContext_8hpp.html b/docs/simple-api/StaticResolutionContext_8hpp.html new file mode 100644 index 00000000..6fd3ebd9 --- /dev/null +++ b/docs/simple-api/StaticResolutionContext_8hpp.html @@ -0,0 +1,96 @@ + + +XQilla Simple API: StaticResolutionContext.hpp File Reference + + + + + + +

StaticResolutionContext.hpp File Reference

#include <string>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/ast/StaticType.hpp>
+#include <xercesc/util/RefHash2KeysTableOf.hpp>
+#include <xercesc/util/StringPool.hpp>
+#include <vector>
+ +

+Include dependency graph for StaticResolutionContext.hpp:

+ +

+Go to the source code of this file. + + + + + + + + + + +

Classes

class  StaticResolutionContext
 Records access to various parts of the context during static resolution. More...

Typedefs

typedef xercesc::RefHash2KeysTableOf<
+ int > 
VariableAccessSet
typedef xercesc::RefHash2KeysTableOfEnumerator<
+ int > 
VariableAccessSetEnumerator
+


Typedef Documentation

+

+ + + + +
+ + + + +
typedef xercesc:: RefHash2KeysTableOf<int> VariableAccessSet
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
typedef xercesc:: RefHash2KeysTableOfEnumerator<int> VariableAccessSetEnumerator
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/StaticResolutionContext_8hpp__incl.map b/docs/simple-api/StaticResolutionContext_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/simple-api/StaticResolutionContext_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/simple-api/StaticResolutionContext_8hpp__incl.md5 b/docs/simple-api/StaticResolutionContext_8hpp__incl.md5 new file mode 100644 index 00000000..f5a98068 --- /dev/null +++ b/docs/simple-api/StaticResolutionContext_8hpp__incl.md5 @@ -0,0 +1 @@ +91fdb94a9cb9f9dbbb88ea85c003a86c \ No newline at end of file diff --git a/docs/simple-api/StaticResolutionContext_8hpp__incl.png b/docs/simple-api/StaticResolutionContext_8hpp__incl.png new file mode 100644 index 00000000..9612f031 Binary files /dev/null and b/docs/simple-api/StaticResolutionContext_8hpp__incl.png differ diff --git a/docs/simple-api/StdInInputSource_8hpp-source.html b/docs/simple-api/StdInInputSource_8hpp-source.html new file mode 100644 index 00000000..39f809cb --- /dev/null +++ b/docs/simple-api/StdInInputSource_8hpp-source.html @@ -0,0 +1,99 @@ + + +XQilla Simple API: StdInInputSource.hpp Source File + + + + + + +

StdInInputSource.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright 1999-2000,2004 The Apache Software Foundation.
+00003  * 
+00004  * Licensed under the Apache License, Version 2.0 (the "License");
+00005  * you may not use this file except in compliance with the License.
+00006  * You may obtain a copy of the License at
+00007  * 
+00008  *      http://www.apache.org/licenses/LICENSE-2.0
+00009  * 
+00010  * Unless required by applicable law or agreed to in writing, software
+00011  * distributed under the License is distributed on an "AS IS" BASIS,
+00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00013  * See the License for the specific language governing permissions and
+00014  * limitations under the License.
+00015  */
+00016 
+00017 /*
+00018  * $Id: StdInInputSource.hpp 191054 2005-06-17 02:56:35Z jberry $
+00019  */
+00020 
+00021 
+00022 #if !defined(STDININPUTSOURCE_HPP)
+00023 #define STDININPUTSOURCE_HPP
+00024 
+00025 #include <xercesc/sax/InputSource.hpp>
+00026 
+00027 XERCES_CPP_NAMESPACE_BEGIN
+00028 
+00029 class BinInputStream;
+00030 
+00031 
+00042 class XMLPARSER_EXPORT StdInInputSource : public InputSource
+00043 {
+00044 public :
+00045     // -----------------------------------------------------------------------
+00046     //  Constructors and Destructor
+00047     // -----------------------------------------------------------------------
+00048 
+00051 
+00058     StdInInputSource(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
+00060 
+00063     ~StdInInputSource();
+00065 
+00066 
+00067     // -----------------------------------------------------------------------
+00068     //  Virtual input source interface
+00069     // -----------------------------------------------------------------------
+00070 
+00071 
+00074 
+00082     BinInputStream* makeStream() const;
+00083 
+00085 
+00086 private:
+00087     // -----------------------------------------------------------------------
+00088     //  Unimplemented constructors and operators
+00089     // -----------------------------------------------------------------------
+00090     StdInInputSource(const StdInInputSource&);
+00091     StdInInputSource& operator=(const StdInInputSource&);
+00092 
+00093 };
+00094 
+00095 inline StdInInputSource::StdInInputSource(MemoryManager* const manager) :
+00096 
+00097     InputSource("stdin", manager)
+00098 {
+00099 }
+00100 
+00101 inline StdInInputSource::~StdInInputSource()
+00102 {
+00103 }
+00104 
+00105 XERCES_CPP_NAMESPACE_END
+00106 
+00107 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/StdInInputSource_8hpp.html b/docs/simple-api/StdInInputSource_8hpp.html new file mode 100644 index 00000000..44d61485 --- /dev/null +++ b/docs/simple-api/StdInInputSource_8hpp.html @@ -0,0 +1,71 @@ + + +XQilla Simple API: StdInInputSource.hpp File Reference + + + + + + +

StdInInputSource.hpp File Reference

#include <xercesc/sax/InputSource.hpp>
+ +

+Include dependency graph for StdInInputSource.hpp:

+ + + + + +

+Go to the source code of this file. + + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::StdInInputSource
 This class is a derivative of the standard InputSource class. More...

Defines

#define STDININPUTSOURCE_HPP
+


Define Documentation

+

+ + + + +
+ + + + +
#define STDININPUTSOURCE_HPP
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/StdInInputSource_8hpp__incl.map b/docs/simple-api/StdInInputSource_8hpp__incl.map new file mode 100644 index 00000000..2cf8da78 --- /dev/null +++ b/docs/simple-api/StdInInputSource_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $InputSource_8hpp.html 209,32 404,56 +rect $PlatformUtils_8hpp.html 454,32 649,56 diff --git a/docs/simple-api/StdInInputSource_8hpp__incl.md5 b/docs/simple-api/StdInInputSource_8hpp__incl.md5 new file mode 100644 index 00000000..fbec64db --- /dev/null +++ b/docs/simple-api/StdInInputSource_8hpp__incl.md5 @@ -0,0 +1 @@ +6e6c09c3b686120a7969d34a32597622 \ No newline at end of file diff --git a/docs/simple-api/StdInInputSource_8hpp__incl.png b/docs/simple-api/StdInInputSource_8hpp__incl.png new file mode 100644 index 00000000..95765d56 Binary files /dev/null and b/docs/simple-api/StdInInputSource_8hpp__incl.png differ diff --git a/docs/simple-api/StringPool_8hpp-source.html b/docs/simple-api/StringPool_8hpp-source.html new file mode 100644 index 00000000..090f8f42 --- /dev/null +++ b/docs/simple-api/StringPool_8hpp-source.html @@ -0,0 +1,110 @@ + + +XQilla Simple API: StringPool.hpp Source File + + + + + + +

StringPool.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: StringPool.hpp,v 1.8 2006/11/01 16:37:12 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef __STRINGPOOL_HPP
+00015 #define __STRINGPOOL_HPP
+00016 
+00017 #include <xqilla/framework/XQillaExport.hpp>
+00018 #include <xercesc/framework/MemoryManager.hpp>
+00019 #include <memory>
+00020 #include <string>
+00021 
+00022 class XQILLA_API StringPool
+00023 {
+00024 public:
+00025   StringPool(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mm);
+00026   ~StringPool();
+00027 
+00029   const XMLCh* getPooledString(const XMLCh *src);
+00031   const XMLCh* getPooledString(const char *src);
+00032 
+00033   unsigned int getCount() const { return _count; }
+00034   unsigned int getHits() const { return _hits; }
+00035   unsigned int getMisses() const { return _misses; }
+00036   unsigned int getTooBig() const { return _toobig; }
+00037   void dumpStatistics() const;
+00038 
+00039 private:
+00040   StringPool(const StringPool&);
+00041   StringPool &operator=(const StringPool&);
+00042 
+00043   static unsigned int hash(const XMLCh *v);
+00044   const XMLCh *replicate(const XMLCh *v, unsigned int length) const;
+00045   void resize();
+00046 
+00047   class Bucket
+00048   {
+00049   public:
+00050     Bucket(const XMLCh *v, unsigned int l, unsigned int h, Bucket *n)
+00051       : value(v), length(l), hashValue(h), next(n) {}
+00052 
+00053     const XMLCh *value;
+00054     unsigned int length;
+00055     unsigned int hashValue;
+00056     Bucket *next;
+00057   };
+00058 
+00059   XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *_mm;
+00060   Bucket **_bucketList;
+00061   unsigned int _modulus;
+00062   unsigned int _count;
+00063   unsigned int _hits;
+00064   unsigned int _misses;
+00065   unsigned int _toobig;
+00066 };
+00067 
+00068 inline unsigned int StringPool::hash(const XMLCh *v)
+00069 {
+00070   unsigned int top;
+00071   unsigned int hashVal = 0;
+00072   while(*v) {
+00073     top = hashVal >> 24;
+00074     hashVal += (hashVal * 37) + top + (unsigned int)(*v);
+00075     ++v;
+00076   }
+00077   return hashVal;
+00078 }
+00079 
+00080 inline const XMLCh *StringPool::replicate(const XMLCh *v, unsigned int length) const
+00081 {
+00082   unsigned int size = (length+1) * sizeof(XMLCh);
+00083   XMLCh *ret = (XMLCh*)_mm->allocate(size);
+00084   memcpy(ret, v, size);
+00085   return ret;
+00086 }
+00087 
+00088 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/StringPool_8hpp.html b/docs/simple-api/StringPool_8hpp.html new file mode 100644 index 00000000..c4451156 --- /dev/null +++ b/docs/simple-api/StringPool_8hpp.html @@ -0,0 +1,44 @@ + + +XQilla Simple API: StringPool.hpp File Reference + + + + + + +

StringPool.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <xercesc/framework/MemoryManager.hpp>
+#include <memory>
+#include <string>
+ +

+Include dependency graph for StringPool.hpp:

+ + + + +

+Go to the source code of this file. + + + + + + +

Classes

class  StringPool
class  StringPool::Bucket
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/StringPool_8hpp__incl.map b/docs/simple-api/StringPool_8hpp__incl.map new file mode 100644 index 00000000..d511fc0c --- /dev/null +++ b/docs/simple-api/StringPool_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $MemoryManager_8hpp.html 166,56 430,80 diff --git a/docs/simple-api/StringPool_8hpp__incl.md5 b/docs/simple-api/StringPool_8hpp__incl.md5 new file mode 100644 index 00000000..66545bd8 --- /dev/null +++ b/docs/simple-api/StringPool_8hpp__incl.md5 @@ -0,0 +1 @@ +6d9f544b90cc079001a72c31531e25e0 \ No newline at end of file diff --git a/docs/simple-api/StringPool_8hpp__incl.png b/docs/simple-api/StringPool_8hpp__incl.png new file mode 100644 index 00000000..d389b876 Binary files /dev/null and b/docs/simple-api/StringPool_8hpp__incl.png differ diff --git a/docs/simple-api/Timezone_8hpp-source.html b/docs/simple-api/Timezone_8hpp-source.html new file mode 100644 index 00000000..80b11917 --- /dev/null +++ b/docs/simple-api/Timezone_8hpp-source.html @@ -0,0 +1,77 @@ + + +XQilla Simple API: Timezone.hpp Source File + + + + + + +

Timezone.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: Timezone.hpp,v 1.12 2006/11/01 16:37:14 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _TZONE_HPP
+00015 #define _TZONE_HPP
+00016 
+00017 #include <xqilla/framework/XQillaExport.hpp>
+00018 #include <xqilla/framework/ReferenceCounted.hpp>
+00019 #include <xqilla/items/ATDurationOrDerived.hpp>
+00020 #include <xqilla/mapm/m_apm.h>
+00021 
+00022 #include <xercesc/util/XercesDefs.hpp>
+00023 
+00024 class DynamicContext;
+00025 
+00026 class XQILLA_API Timezone : public ReferenceCounted
+00027 {
+00028 public :
+00029   typedef RefCountPointer<const Timezone> Ptr;
+00030 
+00034   Timezone(const MAPM &seconds);
+00035 
+00039   Timezone(const ATDurationOrDerived::Ptr &duration, const DynamicContext* context);
+00040 
+00044   bool equals(const Timezone::Ptr &other) const;
+00045 
+00046   ATDurationOrDerived::Ptr asDayTimeDuration(const DynamicContext* context) const;
+00047   
+00052   const XMLCh* asString(const DynamicContext* context) const;
+00053 
+00057   const MAPM &asSeconds() const { return seconds_; }
+00058 
+00059   static MAPM convert(bool positive, int hour, int minute);
+00060 
+00061   static void validate(const MAPM &tz);
+00062 
+00063 private:
+00064   MAPM seconds_;
+00065 };
+00066 
+00067 #endif // _TZONE_HPP
+00068 
+00069 
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/Timezone_8hpp.html b/docs/simple-api/Timezone_8hpp.html new file mode 100644 index 00000000..0fcf46a2 --- /dev/null +++ b/docs/simple-api/Timezone_8hpp.html @@ -0,0 +1,61 @@ + + +XQilla Simple API: Timezone.hpp File Reference + + + + + + +

Timezone.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/framework/ReferenceCounted.hpp>
+#include <xqilla/items/ATDurationOrDerived.hpp>
+#include <xqilla/mapm/m_apm.h>
+#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for Timezone.hpp:

+ + + + + + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + + + + + + + + + +

+Go to the source code of this file. + + + + +

Classes

class  Timezone
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/Timezone_8hpp__dep__incl.map b/docs/simple-api/Timezone_8hpp__dep__incl.map new file mode 100644 index 00000000..16631cc1 --- /dev/null +++ b/docs/simple-api/Timezone_8hpp__dep__incl.map @@ -0,0 +1,10 @@ +base referer +rect $ATDateOrDerived_8hpp.html 185,8 337,32 +rect $ATDateTimeOrDerived_8hpp.html 170,56 351,80 +rect $ATGDayOrDerived_8hpp.html 182,104 339,128 +rect $ATGMonthOrDerived_8hpp.html 175,152 346,176 +rect $ATGMonthDayOrDerived_8hpp.html 163,200 358,224 +rect $ATGYearMonthOrDerived_8hpp.html 162,248 359,272 +rect $ATGYearOrDerived_8hpp.html 181,296 341,320 +rect $ATTimeOrDerived_8hpp.html 183,344 338,368 +rect $ItemFactory_8hpp.html 407,176 525,200 diff --git a/docs/simple-api/Timezone_8hpp__dep__incl.md5 b/docs/simple-api/Timezone_8hpp__dep__incl.md5 new file mode 100644 index 00000000..4988abb2 --- /dev/null +++ b/docs/simple-api/Timezone_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +c8aefca2bd5d402dd9b4d9bc745336d0 \ No newline at end of file diff --git a/docs/simple-api/Timezone_8hpp__dep__incl.png b/docs/simple-api/Timezone_8hpp__dep__incl.png new file mode 100644 index 00000000..e18a83bd Binary files /dev/null and b/docs/simple-api/Timezone_8hpp__dep__incl.png differ diff --git a/docs/simple-api/Timezone_8hpp__incl.map b/docs/simple-api/Timezone_8hpp__incl.map new file mode 100644 index 00000000..ee1448cb --- /dev/null +++ b/docs/simple-api/Timezone_8hpp__incl.map @@ -0,0 +1,6 @@ +base referer +rect $ReferenceCounted_8hpp.html 164,281 422,305 +rect $ATDurationOrDerived_8hpp.html 172,207 414,231 +rect $MemoryManager_8hpp.html 473,306 737,330 +rect $AnyAtomicType_8hpp.html 500,109 710,133 +rect $ATDecimalOrDerived_8hpp.html 484,207 726,231 diff --git a/docs/simple-api/Timezone_8hpp__incl.md5 b/docs/simple-api/Timezone_8hpp__incl.md5 new file mode 100644 index 00000000..5cc81afa --- /dev/null +++ b/docs/simple-api/Timezone_8hpp__incl.md5 @@ -0,0 +1 @@ +a810d5e0f258ac87985b5d863befec73 \ No newline at end of file diff --git a/docs/simple-api/Timezone_8hpp__incl.png b/docs/simple-api/Timezone_8hpp__incl.png new file mode 100644 index 00000000..daa668cf Binary files /dev/null and b/docs/simple-api/Timezone_8hpp__incl.png differ diff --git a/docs/simple-api/URIResolver_8hpp-source.html b/docs/simple-api/URIResolver_8hpp-source.html new file mode 100644 index 00000000..8f296df6 --- /dev/null +++ b/docs/simple-api/URIResolver_8hpp-source.html @@ -0,0 +1,70 @@ + + +XQilla Simple API: URIResolver.hpp Source File + + + + + + +

URIResolver.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: URIResolver.hpp,v 1.7 2006/11/01 16:37:12 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _URIRESOLVER_HPP
+00015 #define _URIRESOLVER_HPP
+00016 
+00017 #include <xqilla/framework/XQillaExport.hpp>
+00018 #include <xercesc/util/XercesDefs.hpp>
+00019 
+00020 class DynamicContext;
+00021 class Sequence;
+00022 
+00023 XERCES_CPP_NAMESPACE_BEGIN
+00024 class DOMDocument;
+00025 class DOMNodeList;
+00026 XERCES_CPP_NAMESPACE_END
+00027 
+00031 class XQILLA_API URIResolver {
+00032   public:
+00033     /* virtual destructor, does nothing */
+00034     virtual ~URIResolver() {};      
+00035 
+00036     /* Resolve the given uri (and baseUri) to a Sequence (reference parameter). If the uri
+00037        is relative, the base uri can be obtained from the context. If the uri is not handled
+00038        by this URIResolver, returns false, otherwise returns true. */
+00039     virtual bool resolveDocument(Sequence &result, const XMLCh* uri, DynamicContext* context) = 0;
+00040 
+00041     /* Resolve the given uri (and baseUri) to a Sequence (reference parameter). If the uri
+00042        is relative, the base uri can be obtained from the context. If the uri is not handled
+00043        by this URIResolver, returns false, otherwise returns true. */
+00044     virtual bool resolveCollection(Sequence &result, const XMLCh* uri, DynamicContext* context) = 0;
+00045 
+00046     /* Resolve the default collection. If it is not defined, returns false, otherwise returns true. */
+00047     virtual bool resolveDefaultCollection(Sequence &result, DynamicContext* context) = 0;
+00048 };
+00049 #endif // _URIRESOLVER_HPP
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/URIResolver_8hpp.html b/docs/simple-api/URIResolver_8hpp.html new file mode 100644 index 00000000..9f5f5841 --- /dev/null +++ b/docs/simple-api/URIResolver_8hpp.html @@ -0,0 +1,41 @@ + + +XQilla Simple API: URIResolver.hpp File Reference + + + + + + +

URIResolver.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for URIResolver.hpp:

+ +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  URIResolver
 This is an abstract class used to resolve URIs in different ways. More...
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/URIResolver_8hpp__incl.map b/docs/simple-api/URIResolver_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/simple-api/URIResolver_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/simple-api/URIResolver_8hpp__incl.md5 b/docs/simple-api/URIResolver_8hpp__incl.md5 new file mode 100644 index 00000000..62a3dc52 --- /dev/null +++ b/docs/simple-api/URIResolver_8hpp__incl.md5 @@ -0,0 +1 @@ +02ba50b3471e6b964e5494413a3a40fd \ No newline at end of file diff --git a/docs/simple-api/URIResolver_8hpp__incl.png b/docs/simple-api/URIResolver_8hpp__incl.png new file mode 100644 index 00000000..3de0f2cd Binary files /dev/null and b/docs/simple-api/URIResolver_8hpp__incl.png differ diff --git a/docs/simple-api/URLInputSource_8hpp-source.html b/docs/simple-api/URLInputSource_8hpp-source.html new file mode 100644 index 00000000..bdfc1afa --- /dev/null +++ b/docs/simple-api/URLInputSource_8hpp-source.html @@ -0,0 +1,149 @@ + + +XQilla Simple API: URLInputSource.hpp Source File + + + + + + +

URLInputSource.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright 1999-2000,2004 The Apache Software Foundation.
+00003  * 
+00004  * Licensed under the Apache License, Version 2.0 (the "License");
+00005  * you may not use this file except in compliance with the License.
+00006  * You may obtain a copy of the License at
+00007  * 
+00008  *      http://www.apache.org/licenses/LICENSE-2.0
+00009  * 
+00010  * Unless required by applicable law or agreed to in writing, software
+00011  * distributed under the License is distributed on an "AS IS" BASIS,
+00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00013  * See the License for the specific language governing permissions and
+00014  * limitations under the License.
+00015  */
+00016 
+00017 /*
+00018  * $Id: URLInputSource.hpp 191054 2005-06-17 02:56:35Z jberry $
+00019  */
+00020 
+00021 
+00022 
+00023 #if !defined(URLINPUTSOURCE_HPP)
+00024 #define URLINPUTSOURCE_HPP
+00025 
+00026 #include <xercesc/util/XMLURL.hpp>
+00027 #include <xercesc/sax/InputSource.hpp>
+00028 
+00029 XERCES_CPP_NAMESPACE_BEGIN
+00030 
+00031 class BinInputStream;
+00032 
+00048 class XMLPARSER_EXPORT URLInputSource : public InputSource
+00049 {
+00050 public :
+00051     // -----------------------------------------------------------------------
+00052     //  Constructors and Destructor
+00053     // -----------------------------------------------------------------------
+00054 
+00057 
+00069     URLInputSource
+00070     (
+00071         const XMLURL& urlId
+00072         , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
+00073     );
+00074 
+00075 
+00090     URLInputSource
+00091     (
+00092         const   XMLCh* const    baseId
+00093         , const XMLCh* const    systemId
+00094         , MemoryManager* const  manager = XMLPlatformUtils::fgMemoryManager
+00095     );
+00096 
+00113     URLInputSource
+00114     (
+00115         const   XMLCh* const    baseId
+00116         , const XMLCh* const    systemId
+00117         , const XMLCh* const    publicId
+00118         , MemoryManager* const  manager = XMLPlatformUtils::fgMemoryManager
+00119     );
+00120 
+00121 
+00136     URLInputSource
+00137     (
+00138         const   XMLCh* const    baseId
+00139         , const char* const     systemId
+00140         , MemoryManager* const  manager = XMLPlatformUtils::fgMemoryManager
+00141     );
+00142 
+00161     URLInputSource
+00162     (
+00163         const   XMLCh* const    baseId
+00164         , const char* const     systemId
+00165         , const char* const     publicId
+00166         , MemoryManager* const  manager = XMLPlatformUtils::fgMemoryManager
+00167     );
+00168 
+00170 
+00173     ~URLInputSource();
+00175 
+00176 
+00177     // -----------------------------------------------------------------------
+00178     //  Virtual input source interface
+00179     // -----------------------------------------------------------------------
+00180 
+00183 
+00188     BinInputStream* makeStream() const;
+00189 
+00191 
+00192 
+00193     // -----------------------------------------------------------------------
+00194     //  Getter methods
+00195     // -----------------------------------------------------------------------
+00196 
+00199 
+00208     const XMLURL& urlSrc() const;
+00209 
+00211 
+00212 
+00213 private :
+00214     // -----------------------------------------------------------------------
+00215     //  Unimplemented constructors and operators
+00216     // -----------------------------------------------------------------------    
+00217     URLInputSource(const URLInputSource&);
+00218     URLInputSource& operator=(const URLInputSource&);
+00219 
+00220     // -----------------------------------------------------------------------
+00221     //  Private data members
+00222     //
+00223     //  fURL
+00224     //      This is the URL created from the passed ids.
+00225     // -----------------------------------------------------------------------
+00226     XMLURL fURL;
+00227 };
+00228 
+00229 
+00230 inline const XMLURL& URLInputSource::urlSrc() const
+00231 {
+00232     return fURL;
+00233 }
+00234 
+00235 XERCES_CPP_NAMESPACE_END
+00236 
+00237 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/URLInputSource_8hpp.html b/docs/simple-api/URLInputSource_8hpp.html new file mode 100644 index 00000000..5c6671ea --- /dev/null +++ b/docs/simple-api/URLInputSource_8hpp.html @@ -0,0 +1,72 @@ + + +XQilla Simple API: URLInputSource.hpp File Reference + + + + + + +

URLInputSource.hpp File Reference

#include <xercesc/util/XMLURL.hpp>
+#include <xercesc/sax/InputSource.hpp>
+ +

+Include dependency graph for URLInputSource.hpp:

+ + + + + +

+Go to the source code of this file. + + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::URLInputSource
 This class is a derivative of the standard InputSource class. More...

Defines

#define URLINPUTSOURCE_HPP
+


Define Documentation

+

+ + + + +
+ + + + +
#define URLINPUTSOURCE_HPP
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/URLInputSource_8hpp__incl.map b/docs/simple-api/URLInputSource_8hpp__incl.map new file mode 100644 index 00000000..c138548b --- /dev/null +++ b/docs/simple-api/URLInputSource_8hpp__incl.map @@ -0,0 +1,3 @@ +base referer +rect $InputSource_8hpp.html 204,56 398,80 +rect $PlatformUtils_8hpp.html 449,56 644,80 diff --git a/docs/simple-api/URLInputSource_8hpp__incl.md5 b/docs/simple-api/URLInputSource_8hpp__incl.md5 new file mode 100644 index 00000000..56f6d0e2 --- /dev/null +++ b/docs/simple-api/URLInputSource_8hpp__incl.md5 @@ -0,0 +1 @@ +bab9f67b21abceba4c5325b3349e7c8a \ No newline at end of file diff --git a/docs/simple-api/URLInputSource_8hpp__incl.png b/docs/simple-api/URLInputSource_8hpp__incl.png new file mode 100644 index 00000000..b5e0abac Binary files /dev/null and b/docs/simple-api/URLInputSource_8hpp__incl.png differ diff --git a/docs/simple-api/VarHashEntry_8hpp-source.html b/docs/simple-api/VarHashEntry_8hpp-source.html new file mode 100644 index 00000000..f8092e78 --- /dev/null +++ b/docs/simple-api/VarHashEntry_8hpp-source.html @@ -0,0 +1,56 @@ + + +XQilla Simple API: VarHashEntry.hpp Source File + + + + + + +

VarHashEntry.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: VarHashEntry.hpp,v 1.8 2006/11/01 16:37:12 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _VARHASHENTRY_HPP
+00015 #define _VARHASHENTRY_HPP
+00016 
+00017 #include <xqilla/framework/XQillaExport.hpp>
+00018 #include <xercesc/util/XMemory.hpp>
+00019 
+00021 template<class TYPE>
+00022 class VarHashEntry : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory
+00023 {
+00024 public:
+00025   virtual ~VarHashEntry() {}
+00026 
+00029   virtual const TYPE &getValue() const = 0;
+00030 
+00033   virtual void setValue(const TYPE &value) = 0;
+00034 };
+00035 
+00036 #endif
+00037 
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/VarHashEntry_8hpp.html b/docs/simple-api/VarHashEntry_8hpp.html new file mode 100644 index 00000000..01b2f4bd --- /dev/null +++ b/docs/simple-api/VarHashEntry_8hpp.html @@ -0,0 +1,41 @@ + + +XQilla Simple API: VarHashEntry.hpp File Reference + + + + + + +

VarHashEntry.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <xercesc/util/XMemory.hpp>
+ +

+Include dependency graph for VarHashEntry.hpp:

+ + + + +

+Go to the source code of this file. + + + + + +

Classes

class  VarHashEntry< TYPE >
 The class that stores the values of the variables. More...
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/VarHashEntry_8hpp__incl.map b/docs/simple-api/VarHashEntry_8hpp__incl.map new file mode 100644 index 00000000..0b443ae7 --- /dev/null +++ b/docs/simple-api/VarHashEntry_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $XMemory_8hpp.html 210,56 386,80 diff --git a/docs/simple-api/VarHashEntry_8hpp__incl.md5 b/docs/simple-api/VarHashEntry_8hpp__incl.md5 new file mode 100644 index 00000000..75308693 --- /dev/null +++ b/docs/simple-api/VarHashEntry_8hpp__incl.md5 @@ -0,0 +1 @@ +986962c9d8d4dbcc3830c6c7b0d1f7be \ No newline at end of file diff --git a/docs/simple-api/VarHashEntry_8hpp__incl.png b/docs/simple-api/VarHashEntry_8hpp__incl.png new file mode 100644 index 00000000..4a85fab1 Binary files /dev/null and b/docs/simple-api/VarHashEntry_8hpp__incl.png differ diff --git a/docs/simple-api/VariableStore_8hpp-source.html b/docs/simple-api/VariableStore_8hpp-source.html new file mode 100644 index 00000000..e86687b3 --- /dev/null +++ b/docs/simple-api/VariableStore_8hpp-source.html @@ -0,0 +1,124 @@ + + +XQilla Simple API: VariableStore.hpp Source File + + + + + + +

VariableStore.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: VariableStore.hpp,v 1.10 2006/11/01 16:37:12 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _VARIABLESTORE_HPP
+00015 #define _VARIABLESTORE_HPP
+00016 
+00017 #include <xqilla/framework/XQillaExport.hpp>
+00018 #include <xercesc/util/XercesDefs.hpp>
+00019 #include <vector>
+00020 #include <xercesc/util/XMemory.hpp>
+00021 
+00022 class Sequence;
+00023 template<class TYPE> class VarHashEntry;
+00024 template<class TYPE> class Scope;
+00025 class StaticContext;
+00026 class XPath2MemoryManager;
+00027 class LocationInfo;
+00028 
+00031 class XQILLA_API VariableStore : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory
+00032 {
+00033 public:
+00034   typedef Scope<Sequence> MyScope;
+00035   typedef VarHashEntry<Sequence> Entry;
+00036 
+00038   virtual ~VariableStore() {};
+00039 
+00041   virtual void clear() = 0;
+00042 
+00044   virtual void addLocalScope() = 0;
+00046   virtual void addLogicalBlockScope() = 0;
+00049   virtual void removeScope() = 0;
+00050 
+00052   virtual MyScope *getScopeState() = 0;
+00054   virtual void setScopeState(MyScope *state) = 0;
+00055 
+00057   virtual void setGlobalVar(const XMLCh* ident, const Sequence &value,
+00058                             const StaticContext* context,
+00059                             const LocationInfo *location) = 0;
+00060   virtual void setGlobalVar(const XMLCh* namespaceURI, const XMLCh* name, const Sequence &value,
+00061                     const StaticContext* context) = 0;
+00062 
+00064   virtual void setVar(const XMLCh* ident, const Sequence &value,
+00065                       const StaticContext* context,
+00066                       const LocationInfo *location) = 0;
+00067   virtual void setVar(const XMLCh* namespaceURI, const XMLCh* name, const Sequence &value,
+00068               const StaticContext* context) = 0;
+00069 
+00072   virtual void declareVar(const XMLCh* ident, 
+00073                           const Sequence &value,
+00074                           const StaticContext* context,
+00075                           const LocationInfo *location) = 0;
+00076   virtual void declareVar(const XMLCh* namespaceURI,
+00077                   const XMLCh* name,
+00078                   const Sequence &value,
+00079                   const StaticContext* context) = 0;
+00080 
+00084   virtual const std::pair<bool, Sequence> getVar(const XMLCh* ident,
+00085                                                  const StaticContext* context,
+00086                                                  const LocationInfo *location) const = 0;
+00087   virtual const std::pair<bool, Sequence> getVar(const XMLCh* namespaceURI,
+00088                                     const XMLCh* name,
+00089                                     const StaticContext* context) const = 0;
+00090 
+00094   virtual Entry* getReferenceVar(const XMLCh* ident,
+00095                                  const StaticContext* context,
+00096                                  const LocationInfo *location) const = 0;
+00097   virtual Entry* getReferenceVar(const XMLCh* namespaceURI,
+00098                                     const XMLCh* name,
+00099                                     const StaticContext* context) const = 0;
+00100 
+00102   virtual const std::pair<bool, Sequence> getGlobalVar(const XMLCh* ident,
+00103                                                        const StaticContext* context,
+00104                                                        const LocationInfo *location) const = 0;
+00105   virtual const std::pair<bool, Sequence> getGlobalVar(const XMLCh* namespaceURI,
+00106                                     const XMLCh* name,
+00107                                     const StaticContext* context) const = 0;
+00108 
+00110   virtual void delVar(const XMLCh* ident, const StaticContext* context,
+00111                       const LocationInfo *location) = 0;
+00112   virtual void delVar(const XMLCh* namespaceURI, const XMLCh* name, const StaticContext* context) = 0;
+00113 
+00115   virtual void delGlobalVar(const XMLCh* ident, const StaticContext* context,
+00116                             const LocationInfo *location) = 0;
+00117 
+00119   virtual XMLCh* print(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr) const = 0;
+00120 
+00122   virtual std::vector< std::pair<const XMLCh*, const XMLCh*> > getVars() const = 0;
+00123 };
+00124 
+00125 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/VariableStore_8hpp.html b/docs/simple-api/VariableStore_8hpp.html new file mode 100644 index 00000000..06a68d32 --- /dev/null +++ b/docs/simple-api/VariableStore_8hpp.html @@ -0,0 +1,43 @@ + + +XQilla Simple API: VariableStore.hpp File Reference + + + + + + +

VariableStore.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <xercesc/util/XercesDefs.hpp>
+#include <vector>
+#include <xercesc/util/XMemory.hpp>
+ +

+Include dependency graph for VariableStore.hpp:

+ + + + +

+Go to the source code of this file. + + + + + +

Classes

class  VariableStore
 This is the wrapper class for the variable store, which implements the lookup and scoping of simple variables. More...
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/VariableStore_8hpp__incl.map b/docs/simple-api/VariableStore_8hpp__incl.map new file mode 100644 index 00000000..35fbf948 --- /dev/null +++ b/docs/simple-api/VariableStore_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $XMemory_8hpp.html 207,154 383,178 diff --git a/docs/simple-api/VariableStore_8hpp__incl.md5 b/docs/simple-api/VariableStore_8hpp__incl.md5 new file mode 100644 index 00000000..7f00fb3a --- /dev/null +++ b/docs/simple-api/VariableStore_8hpp__incl.md5 @@ -0,0 +1 @@ +2634cfbec100db8f56b58f6f1eb41e8a \ No newline at end of file diff --git a/docs/simple-api/VariableStore_8hpp__incl.png b/docs/simple-api/VariableStore_8hpp__incl.png new file mode 100644 index 00000000..16356a4f Binary files /dev/null and b/docs/simple-api/VariableStore_8hpp__incl.png differ diff --git a/docs/simple-api/VariableTypeStore_8hpp-source.html b/docs/simple-api/VariableTypeStore_8hpp-source.html new file mode 100644 index 00000000..da21a8b7 --- /dev/null +++ b/docs/simple-api/VariableTypeStore_8hpp-source.html @@ -0,0 +1,73 @@ + + +XQilla Simple API: VariableTypeStore.hpp Source File + + + + + + +

VariableTypeStore.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: VariableTypeStore.hpp,v 1.8 2006/11/01 16:37:12 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _VARIABLETYPESTORE_HPP
+00015 #define _VARIABLETYPESTORE_HPP
+00016 
+00017 #include <xqilla/framework/XQillaExport.hpp>
+00018 #include <xercesc/util/XercesDefs.hpp>
+00019 #include <xercesc/util/XMemory.hpp>
+00020 
+00021 class SequenceType;
+00022 class XPath2MemoryManager;
+00023 class StaticResolutionContext;
+00024 
+00027 class XQILLA_API VariableTypeStore : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory
+00028 {
+00029 public:
+00031   virtual ~VariableTypeStore() {};
+00032 
+00034   virtual void clear() = 0;
+00035 
+00037   virtual void addLocalScope() = 0;
+00039   virtual void addLogicalBlockScope() = 0;
+00042   virtual void removeScope() = 0;
+00043 
+00045   virtual void declareGlobalVar(const XMLCh* namespaceURI, const XMLCh* name,
+00046                                 const StaticResolutionContext &src) = 0;
+00047 
+00049   virtual const StaticResolutionContext* getGlobalVar(const XMLCh* namespaceURI,
+00050                                                       const XMLCh* name) const = 0;
+00051 
+00054   virtual void declareVar(const XMLCh* namespaceURI, const XMLCh* name,
+00055                           const StaticResolutionContext &src) = 0;
+00056 
+00060   virtual const StaticResolutionContext *getVar(const XMLCh* namespaceURI,
+00061                                                 const XMLCh* name) const = 0;
+00062 };
+00063 
+00064 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/VariableTypeStore_8hpp.html b/docs/simple-api/VariableTypeStore_8hpp.html new file mode 100644 index 00000000..59cee94d --- /dev/null +++ b/docs/simple-api/VariableTypeStore_8hpp.html @@ -0,0 +1,42 @@ + + +XQilla Simple API: VariableTypeStore.hpp File Reference + + + + + + +

VariableTypeStore.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <xercesc/util/XercesDefs.hpp>
+#include <xercesc/util/XMemory.hpp>
+ +

+Include dependency graph for VariableTypeStore.hpp:

+ + + + +

+Go to the source code of this file. + + + + + +

Classes

class  VariableTypeStore
 This is the wrapper class for the variable store, which implements the lookup and scoping of simple variables. More...
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/VariableTypeStore_8hpp__incl.map b/docs/simple-api/VariableTypeStore_8hpp__incl.map new file mode 100644 index 00000000..b6946faf --- /dev/null +++ b/docs/simple-api/VariableTypeStore_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $XMemory_8hpp.html 237,106 413,130 diff --git a/docs/simple-api/VariableTypeStore_8hpp__incl.md5 b/docs/simple-api/VariableTypeStore_8hpp__incl.md5 new file mode 100644 index 00000000..caea8321 --- /dev/null +++ b/docs/simple-api/VariableTypeStore_8hpp__incl.md5 @@ -0,0 +1 @@ +a753613b9dbcd45614cced47203dbfa8 \ No newline at end of file diff --git a/docs/simple-api/VariableTypeStore_8hpp__incl.png b/docs/simple-api/VariableTypeStore_8hpp__incl.png new file mode 100644 index 00000000..29bcb6aa Binary files /dev/null and b/docs/simple-api/VariableTypeStore_8hpp__incl.png differ diff --git a/docs/simple-api/XMLEntityResolver_8hpp-source.html b/docs/simple-api/XMLEntityResolver_8hpp-source.html new file mode 100644 index 00000000..7d0584e5 --- /dev/null +++ b/docs/simple-api/XMLEntityResolver_8hpp-source.html @@ -0,0 +1,90 @@ + + +XQilla Simple API: XMLEntityResolver.hpp Source File + + + + + + +

XMLEntityResolver.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright 1999-2000,2004 The Apache Software Foundation.
+00003  * 
+00004  * Licensed under the Apache License, Version 2.0 (the "License");
+00005  * you may not use this file except in compliance with the License.
+00006  * You may obtain a copy of the License at
+00007  * 
+00008  *      http://www.apache.org/licenses/LICENSE-2.0
+00009  * 
+00010  * Unless required by applicable law or agreed to in writing, software
+00011  * distributed under the License is distributed on an "AS IS" BASIS,
+00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00013  * See the License for the specific language governing permissions and
+00014  * limitations under the License.
+00015  */
+00016 
+00017 /*
+00018  * $Id: XMLEntityResolver.hpp 191054 2005-06-17 02:56:35Z jberry $
+00019  */
+00020 
+00021 #ifndef XMLENTITYRESOLVER_HPP
+00022 #define XMLENTITYRESOLVER_HPP
+00023 
+00024 #include <xercesc/util/XercesDefs.hpp>
+00025 #include <xercesc/util/XMemory.hpp>
+00026 #include <xercesc/util/XMLResourceIdentifier.hpp>
+00027 
+00028 XERCES_CPP_NAMESPACE_BEGIN
+00029 
+00030 class InputSource;
+00031 
+00098 class XMLUTIL_EXPORT XMLEntityResolver
+00099 {
+00100 public:
+00103 
+00104 
+00106     virtual ~XMLEntityResolver()
+00107     {
+00108     }
+00109 
+00111 
+00114 
+00152     virtual InputSource* resolveEntity
+00153     (
+00154         XMLResourceIdentifier* resourceIdentifier
+00155     ) = 0;
+00156 
+00158 protected: 
+00160     XMLEntityResolver()
+00161     {
+00162     }
+00163 
+00164 private :
+00165     /* Unimplemented constructors and operators */
+00166 
+00167     /* Copy constructor */
+00168     XMLEntityResolver(const XMLEntityResolver&);
+00169 
+00170     /* Assignment operator */
+00171     XMLEntityResolver& operator=(const XMLEntityResolver&);
+00172 
+00173 };
+00174 
+00175 XERCES_CPP_NAMESPACE_END
+00176 
+00177 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/XMLEntityResolver_8hpp.html b/docs/simple-api/XMLEntityResolver_8hpp.html new file mode 100644 index 00000000..482e73a6 --- /dev/null +++ b/docs/simple-api/XMLEntityResolver_8hpp.html @@ -0,0 +1,45 @@ + + +XQilla Simple API: XMLEntityResolver.hpp File Reference + + + + + + +

XMLEntityResolver.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <xercesc/util/XMemory.hpp>
+#include <xercesc/util/XMLResourceIdentifier.hpp>
+ +

+Include dependency graph for XMLEntityResolver.hpp:

+ + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::XMLEntityResolver
 Revised interface for resolving entities. More...
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/XMLEntityResolver_8hpp__incl.map b/docs/simple-api/XMLEntityResolver_8hpp__incl.map new file mode 100644 index 00000000..12ce265e --- /dev/null +++ b/docs/simple-api/XMLEntityResolver_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $XMemory_8hpp.html 258,58 434,82 diff --git a/docs/simple-api/XMLEntityResolver_8hpp__incl.md5 b/docs/simple-api/XMLEntityResolver_8hpp__incl.md5 new file mode 100644 index 00000000..a0723dc7 --- /dev/null +++ b/docs/simple-api/XMLEntityResolver_8hpp__incl.md5 @@ -0,0 +1 @@ +daa6ad8efed12c16fdc9d50d97b455c2 \ No newline at end of file diff --git a/docs/simple-api/XMLEntityResolver_8hpp__incl.png b/docs/simple-api/XMLEntityResolver_8hpp__incl.png new file mode 100644 index 00000000..087c28de Binary files /dev/null and b/docs/simple-api/XMLEntityResolver_8hpp__incl.png differ diff --git a/docs/simple-api/XMemory_8hpp-source.html b/docs/simple-api/XMemory_8hpp-source.html new file mode 100644 index 00000000..9bad9965 --- /dev/null +++ b/docs/simple-api/XMemory_8hpp-source.html @@ -0,0 +1,105 @@ + + +XQilla Simple API: XMemory.hpp Source File + + + + + + +

XMemory.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright 2003,2004 The Apache Software Foundation.
+00003  * 
+00004  * Licensed under the Apache License, Version 2.0 (the "License");
+00005  * you may not use this file except in compliance with the License.
+00006  * You may obtain a copy of the License at
+00007  * 
+00008  *      http://www.apache.org/licenses/LICENSE-2.0
+00009  * 
+00010  * Unless required by applicable law or agreed to in writing, software
+00011  * distributed under the License is distributed on an "AS IS" BASIS,
+00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+00013  * See the License for the specific language governing permissions and
+00014  * limitations under the License.
+00015  */
+00016 
+00017 /*
+00018  * $Id: XMemory.hpp 176295 2005-01-26 13:29:32Z amassari $
+00019  */
+00020 
+00021 
+00022 #if !defined(XMEMORY_HPP)
+00023 #define XMEMORY_HPP
+00024 
+00025 #include <xercesc/util/XercesDefs.hpp>
+00026 #include <stdlib.h>
+00027 
+00028 XERCES_CPP_NAMESPACE_BEGIN
+00029 
+00030 class MemoryManager;
+00031 
+00040 class XMLUTIL_EXPORT XMemory
+00041 {
+00042 public :
+00043     // -----------------------------------------------------------------------
+00044     //  The C++ memory management
+00045     // -----------------------------------------------------------------------
+00048 
+00054     void* operator new(size_t size);
+00055 
+00056 #if defined(XML_VISUALCPP)
+00057 
+00064     void* operator new(size_t size, const char* file, int line);
+00072     void operator delete(void* p, const char* file, int line);
+00073 #endif
+00074 
+00082     void* operator new(size_t size, MemoryManager* memMgr);
+00083 
+00090     void* operator new(size_t size, void* ptr);
+00091 
+00097     void operator delete(void* p);
+00098 
+00099      //The Borland compiler is complaining about duplicate overloading of delete
+00100 #if !defined(XML_BORLAND)
+00101 
+00107     void operator delete(void* p, MemoryManager* memMgr);
+00108 
+00115     void operator delete(void* p, void* ptr);
+00116 #endif
+00117 
+00119 
+00120 protected :
+00121     // -----------------------------------------------------------------------
+00122     //  Hidden Constructors
+00123     // -----------------------------------------------------------------------
+00126 
+00130     XMemory()
+00131     {
+00132     }
+00134 
+00135 #if defined(XML_BORLAND)
+00136     virtual ~XMemory()
+00137     {
+00138     }
+00139 #endif
+00140 
+00141 };
+00142 
+00143 XERCES_CPP_NAMESPACE_END
+00144 
+00145 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/XMemory_8hpp.html b/docs/simple-api/XMemory_8hpp.html new file mode 100644 index 00000000..f2354049 --- /dev/null +++ b/docs/simple-api/XMemory_8hpp.html @@ -0,0 +1,86 @@ + + +XQilla Simple API: XMemory.hpp File Reference + + + + + + +

XMemory.hpp File Reference

#include <xercesc/util/XercesDefs.hpp>
+#include <stdlib.h>
+ +

+Include dependency graph for XMemory.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + + + + + + + + + + + + + +

+Go to the source code of this file. + + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  xercesc::XMemory
 This class makes it possible to override the C++ memory management by adding new/delete operators to this base class. More...

Defines

#define XMEMORY_HPP
+


Define Documentation

+

+ + + + +
+ + + + +
#define XMEMORY_HPP
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/XMemory_8hpp__dep__incl.map b/docs/simple-api/XMemory_8hpp__dep__incl.map new file mode 100644 index 00000000..a2509098 --- /dev/null +++ b/docs/simple-api/XMemory_8hpp__dep__incl.map @@ -0,0 +1,14 @@ +base referer +rect $XQilla_8hpp.html 202,8 285,32 +rect $XQQuery_8hpp.html 413,70 517,94 +rect $Sequence_8hpp.html 190,106 297,130 +rect $StaticContext_8hpp.html 181,154 306,178 +rect $ItemFactory_8hpp.html 185,202 302,226 +rect $Scope_8hpp.html 201,250 286,274 +rect $VarHashEntry_8hpp.html 178,298 309,322 +rect $VariableStore_8hpp.html 180,346 308,370 +rect $VariableTypeStore_8hpp.html 166,394 321,418 +rect $XMLEntityResolver_8hpp.html 164,442 324,466 +rect $DynamicContext_8hpp.html 393,142 537,166 +rect $XQScopedNamespace_8hpp.html 373,190 557,214 +rect $ContextHelpers_8hpp.html 605,142 744,166 diff --git a/docs/simple-api/XMemory_8hpp__dep__incl.md5 b/docs/simple-api/XMemory_8hpp__dep__incl.md5 new file mode 100644 index 00000000..afc15603 --- /dev/null +++ b/docs/simple-api/XMemory_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +ae9e8be70196bbfa0ec67dcc957390d8 \ No newline at end of file diff --git a/docs/simple-api/XMemory_8hpp__dep__incl.png b/docs/simple-api/XMemory_8hpp__dep__incl.png new file mode 100644 index 00000000..3f2ebde0 Binary files /dev/null and b/docs/simple-api/XMemory_8hpp__dep__incl.png differ diff --git a/docs/simple-api/XMemory_8hpp__incl.map b/docs/simple-api/XMemory_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/simple-api/XMemory_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/simple-api/XMemory_8hpp__incl.md5 b/docs/simple-api/XMemory_8hpp__incl.md5 new file mode 100644 index 00000000..8d6c488f --- /dev/null +++ b/docs/simple-api/XMemory_8hpp__incl.md5 @@ -0,0 +1 @@ +09b68f857237c81c8d438cb2ec92c599 \ No newline at end of file diff --git a/docs/simple-api/XMemory_8hpp__incl.png b/docs/simple-api/XMemory_8hpp__incl.png new file mode 100644 index 00000000..66cc06de Binary files /dev/null and b/docs/simple-api/XMemory_8hpp__incl.png differ diff --git a/docs/simple-api/XPath2MemoryManager_8hpp-source.html b/docs/simple-api/XPath2MemoryManager_8hpp-source.html new file mode 100644 index 00000000..0e3004c1 --- /dev/null +++ b/docs/simple-api/XPath2MemoryManager_8hpp-source.html @@ -0,0 +1,388 @@ + + +XQilla Simple API: XPath2MemoryManager.hpp Source File + + + + + + +

XPath2MemoryManager.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: XPath2MemoryManager.hpp,v 1.13 2006/11/22 16:37:10 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef __XPATH2MEMORYMANAGER_HPP
+00015 #define __XPATH2MEMORYMANAGER_HPP
+00016 
+00017 #include <algorithm>
+00018 #include <assert.h>
+00019 
+00020 #include <xqilla/framework/XQillaExport.hpp>
+00021 
+00022 #include <xercesc/framework/MemoryManager.hpp>
+00023 
+00024 XERCES_CPP_NAMESPACE_BEGIN
+00025 class DOMNode;
+00026 class XMLGrammarPool;
+00027 XERCES_CPP_NAMESPACE_END
+00028 
+00029 class VariableStore;
+00030 class VariableTypeStore;
+00031 class FunctionLookup;
+00032 class DynamicContext;
+00033 class Collation;
+00034 class CollationHelper;
+00035 class XQillaNSResolver;
+00036 class ATDecimalOrDerived;
+00037 class StringPool;
+00038 
+00039 class XQILLA_API XPath2MemoryManager : public XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager
+00040 {
+00041 public:
+00042   virtual ~XPath2MemoryManager() {}
+00043 
+00045   virtual void reset() = 0;
+00046   
+00048   virtual const XMLCh* getPooledString(const XMLCh *src) = 0;
+00049   virtual const XMLCh* getPooledString(const char *src) = 0;
+00050 
+00051   // from MemoryManager
+00052   virtual void* allocate(size_t numElements) = 0;
+00053   virtual void deallocate(void* p) = 0;
+00054   
+00056   virtual Collation* createCollation(CollationHelper* helper) = 0;
+00057 
+00059   virtual XQillaNSResolver* createNSResolver(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *resolverNode) = 0;
+00060   
+00062   virtual VariableStore* createVariableStore() = 0;
+00063 
+00065   virtual VariableTypeStore* createVariableTypeStore() = 0;
+00066 
+00068   virtual FunctionLookup* createFunctionTable() = 0;
+00069 
+00071   virtual ATDecimalOrDerived* createInteger(int value) = 0;
+00072 
+00073   virtual void dumpStatistics() const = 0;
+00074   virtual unsigned long getAllocatedObjectCount() const = 0;
+00075   virtual unsigned long getTotalAllocatedMemory() const = 0;
+00076   virtual const StringPool *getStringPool() const = 0;
+00077 };//XPath2MemoryManager
+00078 
+00079 template <class _Tp>
+00080 class XQillaAllocator
+00081 {
+00082 public:
+00083   typedef size_t size_type;
+00084   typedef ptrdiff_t difference_type;
+00085   typedef _Tp* pointer;
+00086   typedef const _Tp* const_pointer;
+00087   typedef _Tp& reference;
+00088   typedef const _Tp& const_reference;
+00089   typedef _Tp value_type;
+00090 
+00091   template <class _Tp1> struct rebind {
+00092     typedef XQillaAllocator<_Tp1> other;
+00093   };
+00094 
+00095   // Should never be used - for compiling on AIX only
+00096   XQillaAllocator()
+00097   {
+00098     assert(false);
+00099   }
+00100 
+00101   XQillaAllocator(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr)
+00102   {
+00103     _memMgr=memMgr;
+00104   }
+00105 
+00106   // define a copy constructor, because we don't want to copy the singleton object
+00107   XQillaAllocator(const XQillaAllocator<_Tp>& o)
+00108   {
+00109     _memMgr=o._memMgr;
+00110   }
+00111 
+00112   pointer allocate(size_t _n, const void* = 0)
+00113   {
+00114     if(_n==1)
+00115       return (pointer)_singleton;
+00116     //std::cout << "XQillaAllocator::allocate(" << _n << ")" << std::endl;
+00117     if(_memMgr)
+00118       return _n != 0 ? static_cast<pointer>(_memMgr->allocate(_n*sizeof(_Tp))) : 0;
+00119     else
+00120       return _n != 0 ? static_cast<pointer>(malloc(_n*sizeof(_Tp))) : 0;        
+00121   }
+00122 
+00123   void deallocate(void* _p, size_t _n)
+00124   {
+00125     //std::cout << "XQillaAllocator::deallocate(" << _n << ")" << std::endl;
+00126     if(_p) {
+00127       if(_p!=_singleton) {
+00128         if(_memMgr)
+00129           _memMgr->deallocate(_p);
+00130         else
+00131           free(_p);
+00132       }
+00133   }
+00134   }
+00135 
+00136   void construct(pointer _p, const_reference _v)
+00137   {
+00138     new ((void *)_p) _Tp(_v); 
+00139   }
+00140 
+00141   void destroy(pointer _p)
+00142   {
+00143     _p->~_Tp();
+00144   }
+00145 
+00146   size_type max_size() const
+00147   {
+00148     return 0xFFFFFFFF;
+00149   }
+00150     
+00151   size_type max_size(size_type) const
+00152   {
+00153     return 0xFFFFFFFF;
+00154   }
+00155     
+00156 protected:
+00157   char _singleton[sizeof(_Tp)];
+00158   XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* _memMgr;
+00159 };
+00160 
+00161 // ---------------------------------------------------------------------------
+00162 //
+00163 //  Operator new.  Global overloaded version, lets any object be allocated on
+00164 //                 the heap owned by a MemoryManager.
+00165 //
+00166 // ---------------------------------------------------------------------------
+00167 inline void * operator new(size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr)
+00168 {
+00169     void *p = memMgr->allocate(amt);
+00170     return p;
+00171 }
+00172 
+00173 inline void operator delete(void* ptr, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr)
+00174 {
+00175   memMgr->deallocate(ptr);
+00176 }
+00177 
+00178 template<class TYPE>
+00179 class AutoRelease
+00180 {
+00181 public:
+00182   AutoRelease(TYPE *p)
+00183     : p_(p) {}
+00184   ~AutoRelease()
+00185   {
+00186     if(p_ != 0)
+00187       p_->release();
+00188   }
+00189 
+00190   TYPE &operator*() const
+00191   {
+00192     return *p_;
+00193   }
+00194   TYPE *operator->() const
+00195   {
+00196     return p_;
+00197   }
+00198   operator TYPE*() const
+00199   {
+00200     return p_;
+00201   }
+00202   TYPE *get() const
+00203   {
+00204     return p_;
+00205   }
+00206   TYPE *adopt()
+00207   {
+00208     TYPE *tmp = p_;
+00209     p_ = 0;
+00210     return tmp;
+00211   }
+00212   void set(TYPE *p)
+00213   {
+00214     if(p_ != 0)
+00215       p_->release();
+00216     p_ = p;
+00217   }
+00218 
+00219 private:
+00220   AutoRelease(const AutoRelease<TYPE> &);
+00221   AutoRelease<TYPE> &operator=(const AutoRelease<TYPE> &);
+00222 
+00223   TYPE *p_;
+00224 };
+00225 
+00226 template<class TYPE>
+00227 class AutoDelete
+00228 {
+00229 public:
+00230   AutoDelete(TYPE *p)
+00231     : p_(p) {}
+00232   ~AutoDelete()
+00233   {
+00234     delete p_;
+00235   }
+00236 
+00237   TYPE &operator*() const
+00238   {
+00239     return *p_;
+00240   }
+00241   TYPE *operator->() const
+00242   {
+00243     return p_;
+00244   }
+00245   operator TYPE*() const
+00246   {
+00247     return p_;
+00248   }
+00249   TYPE *get() const
+00250   {
+00251     return p_;
+00252   }
+00253   TYPE *adopt()
+00254   {
+00255     TYPE *tmp = p_;
+00256     p_ = 0;
+00257     return tmp;
+00258   }
+00259   void set(TYPE *p)
+00260   {
+00261     delete p_;
+00262     p_ = p;
+00263   }
+00264 
+00265 private:
+00266   AutoDelete(const AutoDelete<TYPE> &);
+00267   AutoDelete<TYPE> &operator=(const AutoDelete<TYPE> &);
+00268 
+00269   TYPE *p_;
+00270 };
+00271 
+00272 template<class TYPE>
+00273 class AutoDeleteArray
+00274 {
+00275 public:
+00276   AutoDeleteArray(TYPE *p)
+00277     : p_(p) {}
+00278   ~AutoDeleteArray()
+00279   {
+00280     delete [] p_;
+00281   }
+00282 
+00283   TYPE &operator*() const
+00284   {
+00285     return *p_;
+00286   }
+00287   TYPE *operator->() const
+00288   {
+00289     return p_;
+00290   }
+00291   operator TYPE*() const
+00292   {
+00293     return p_;
+00294   }
+00295   TYPE *get() const
+00296   {
+00297     return p_;
+00298   }
+00299   TYPE *adopt()
+00300   {
+00301     TYPE *tmp = p_;
+00302     p_ = 0;
+00303     return tmp;
+00304   }
+00305   void set(TYPE *p)
+00306   {
+00307     delete [] p_;
+00308     p_ = p;
+00309   }
+00310 
+00311 private:
+00312   AutoDeleteArray(const AutoDeleteArray<TYPE> &);
+00313   AutoDeleteArray<TYPE> &operator=(const AutoDeleteArray<TYPE> &);
+00314 
+00315   TYPE *p_;
+00316 };
+00317 
+00318 template<class TYPE>
+00319 class AutoDeallocate
+00320 {
+00321 public:
+00322   AutoDeallocate(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mmgr, size_t size = sizeof(TYPE))
+00323     : p_(0), mmgr_(mmgr) {
+00324     p_ = (TYPE*)mmgr_->allocate(size);
+00325   }
+00326   AutoDeallocate(TYPE *p, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mmgr)
+00327     : p_(p), mmgr_(mmgr) {}
+00328   ~AutoDeallocate()
+00329   {
+00330     if(p_ != 0)
+00331       mmgr_->deallocate((void*)p_);
+00332   }
+00333 
+00334   TYPE &operator*() const
+00335   {
+00336     return *p_;
+00337   }
+00338   TYPE *operator->() const
+00339   {
+00340     return p_;
+00341   }
+00342   operator TYPE*() const
+00343   {
+00344     return p_;
+00345   }
+00346   TYPE *get() const
+00347   {
+00348     return p_;
+00349   }
+00350   TYPE *adopt()
+00351   {
+00352     TYPE *tmp = p_;
+00353     p_ = 0;
+00354     return tmp;
+00355   }
+00356   void set(TYPE *p)
+00357   {
+00358     if(p_ != 0)
+00359       mmgr_->deallocate((void*)p_);
+00360     p_ = p;
+00361   }
+00362 
+00363 private:
+00364   AutoDeallocate(const AutoDeallocate<TYPE> &);
+00365   AutoDeallocate<TYPE> &operator=(const AutoDeallocate<TYPE> &);
+00366 
+00367   TYPE *p_;
+00368   XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mmgr_;
+00369 };
+00370 
+00371 #endif //__XPATH2MEMORYMANAGER_HPP
+00372 
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/XPath2MemoryManager_8hpp.html b/docs/simple-api/XPath2MemoryManager_8hpp.html new file mode 100644 index 00000000..e4c8a6cb --- /dev/null +++ b/docs/simple-api/XPath2MemoryManager_8hpp.html @@ -0,0 +1,143 @@ + + +XQilla Simple API: XPath2MemoryManager.hpp File Reference + + + + + + +

XPath2MemoryManager.hpp File Reference

#include <algorithm>
+#include <assert.h>
+#include <xqilla/framework/XQillaExport.hpp>
+#include <xercesc/framework/MemoryManager.hpp>
+ +

+Include dependency graph for XPath2MemoryManager.hpp:

+ + + + +

+This graph shows which files directly or indirectly include this file:

+ + + + +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  XPath2MemoryManager
class  XQillaAllocator< _Tp >
struct  XQillaAllocator< _Tp >::rebind< _Tp1 >
class  AutoRelease< TYPE >
class  AutoDelete< TYPE >
class  AutoDeleteArray< TYPE >
class  AutoDeallocate< TYPE >

Functions

void * operator new (size_t amt, xercesc::MemoryManager *memMgr)
void operator delete (void *ptr, xercesc::MemoryManager *memMgr)
+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void operator delete void *  ptr,
xercesc::MemoryManager memMgr
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void* operator new size_t  amt,
xercesc::MemoryManager memMgr
[inline]
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/XPath2MemoryManager_8hpp__dep__incl.map b/docs/simple-api/XPath2MemoryManager_8hpp__dep__incl.map new file mode 100644 index 00000000..c540fcd1 --- /dev/null +++ b/docs/simple-api/XPath2MemoryManager_8hpp__dep__incl.map @@ -0,0 +1,2 @@ +base referer +rect $Sequence_8hpp.html 252,8 358,32 diff --git a/docs/simple-api/XPath2MemoryManager_8hpp__dep__incl.md5 b/docs/simple-api/XPath2MemoryManager_8hpp__dep__incl.md5 new file mode 100644 index 00000000..e025de95 --- /dev/null +++ b/docs/simple-api/XPath2MemoryManager_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +b28a8491a3c9afa62ce9db5b59ad7aae \ No newline at end of file diff --git a/docs/simple-api/XPath2MemoryManager_8hpp__dep__incl.png b/docs/simple-api/XPath2MemoryManager_8hpp__dep__incl.png new file mode 100644 index 00000000..9d5cf62d Binary files /dev/null and b/docs/simple-api/XPath2MemoryManager_8hpp__dep__incl.png differ diff --git a/docs/simple-api/XPath2MemoryManager_8hpp__incl.map b/docs/simple-api/XPath2MemoryManager_8hpp__incl.map new file mode 100644 index 00000000..6377ba64 --- /dev/null +++ b/docs/simple-api/XPath2MemoryManager_8hpp__incl.map @@ -0,0 +1,2 @@ +base referer +rect $MemoryManager_8hpp.html 252,152 516,176 diff --git a/docs/simple-api/XPath2MemoryManager_8hpp__incl.md5 b/docs/simple-api/XPath2MemoryManager_8hpp__incl.md5 new file mode 100644 index 00000000..ae9a0812 --- /dev/null +++ b/docs/simple-api/XPath2MemoryManager_8hpp__incl.md5 @@ -0,0 +1 @@ +f8971fc1c223551bd0287e766e673204 \ No newline at end of file diff --git a/docs/simple-api/XPath2MemoryManager_8hpp__incl.png b/docs/simple-api/XPath2MemoryManager_8hpp__incl.png new file mode 100644 index 00000000..932a2d07 Binary files /dev/null and b/docs/simple-api/XPath2MemoryManager_8hpp__incl.png differ diff --git a/docs/simple-api/XQDebugCallback_8hpp-source.html b/docs/simple-api/XQDebugCallback_8hpp-source.html new file mode 100644 index 00000000..c62dfc65 --- /dev/null +++ b/docs/simple-api/XQDebugCallback_8hpp-source.html @@ -0,0 +1,69 @@ + + +XQilla Simple API: XQDebugCallback.hpp Source File + + + + + + +

XQDebugCallback.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: XQDebugCallback.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $
+00012  */
+00013 
+00015 // XQDebugCallback.h: interface for debugging
+00017 
+00018 #if !defined(AFXQ_XQDEBUGCALLBACK_H__446AD191_E9D0_4658_BD8C_032D29DA125F__INCLUDED_)
+00019 #define AFXQ_XQDEBUGCALLBACK_H__446AD191_E9D0_4658_BD8C_032D29DA125F__INCLUDED_
+00020 
+00021 #include <xqilla/framework/XQillaExport.hpp>
+00022 #include <xercesc/util/XercesDefs.hpp>
+00023 
+00024 class Sequence;
+00025 class DynamicContext;
+00026 
+00027 XERCES_CPP_NAMESPACE_BEGIN
+00028     class DOMNode;
+00029 XERCES_CPP_NAMESPACE_END
+00030 
+00031 class XQILLA_API XQDebugCallback
+00032 {
+00033 public:
+00034   virtual ~XQDebugCallback() {}
+00035 
+00036   virtual void IsBreakPointHit(DynamicContext* context, const XMLCh* file, unsigned int nLine) = 0;
+00037   virtual void EnterFunction(DynamicContext* context, const XMLCh* file, const XMLCh* fnName, unsigned int nLine, unsigned int nColumn) = 0;
+00038   virtual void ExitFunction(DynamicContext* context, const XMLCh* fnName) = 0;
+00039   virtual void ReportClonedNode(DynamicContext* context, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* original, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* clone) = 0;
+00040   virtual void ReportResult(DynamicContext* context, const XMLCh* file, unsigned int nLine, unsigned int nColumn, Sequence& result) = 0;
+00041   virtual void ReportFirstError(DynamicContext* context, const XMLCh* error, const XMLCh* file, unsigned int nLine) = 0;
+00042 
+00043   virtual void NotifyQueryBegin(DynamicContext* context, const XMLCh* query) = 0;
+00044   virtual void NotifyQueryEnd(DynamicContext* context, Sequence& result) = 0;
+00045 };
+00046 
+00047 #endif // !defined(AFXQ_XQDEBUGCALLBACK_H__446AD191_E9D0_4658_BD8C_032D29DA125F__INCLUDED_)
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/XQDebugCallback_8hpp.html b/docs/simple-api/XQDebugCallback_8hpp.html new file mode 100644 index 00000000..49ae57ef --- /dev/null +++ b/docs/simple-api/XQDebugCallback_8hpp.html @@ -0,0 +1,74 @@ + + +XQilla Simple API: XQDebugCallback.hpp File Reference + + + + + + +

XQDebugCallback.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <xercesc/util/XercesDefs.hpp>
+ +

+Include dependency graph for XQDebugCallback.hpp:

+ +

+This graph shows which files directly or indirectly include this file:

+ + + + + +

+Go to the source code of this file. + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  XQDebugCallback

Defines

#define AFXQ_XQDEBUGCALLBACK_H__446AD191_E9D0_4658_BD8C_032D29DA125F__INCLUDED_
+


Define Documentation

+

+ + + + +
+ + + + +
#define AFXQ_XQDEBUGCALLBACK_H__446AD191_E9D0_4658_BD8C_032D29DA125F__INCLUDED_
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/XQDebugCallback_8hpp__dep__incl.map b/docs/simple-api/XQDebugCallback_8hpp__dep__incl.map new file mode 100644 index 00000000..c5cbfebf --- /dev/null +++ b/docs/simple-api/XQDebugCallback_8hpp__dep__incl.map @@ -0,0 +1,3 @@ +base referer +rect $DynamicContext_8hpp.html 214,8 358,32 +rect $ContextHelpers_8hpp.html 408,8 546,32 diff --git a/docs/simple-api/XQDebugCallback_8hpp__dep__incl.md5 b/docs/simple-api/XQDebugCallback_8hpp__dep__incl.md5 new file mode 100644 index 00000000..b8e4a298 --- /dev/null +++ b/docs/simple-api/XQDebugCallback_8hpp__dep__incl.md5 @@ -0,0 +1 @@ +5535f322d05eeb119bc902a6c428789f \ No newline at end of file diff --git a/docs/simple-api/XQDebugCallback_8hpp__dep__incl.png b/docs/simple-api/XQDebugCallback_8hpp__dep__incl.png new file mode 100644 index 00000000..c410a565 Binary files /dev/null and b/docs/simple-api/XQDebugCallback_8hpp__dep__incl.png differ diff --git a/docs/simple-api/XQDebugCallback_8hpp__incl.map b/docs/simple-api/XQDebugCallback_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/simple-api/XQDebugCallback_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/simple-api/XQDebugCallback_8hpp__incl.md5 b/docs/simple-api/XQDebugCallback_8hpp__incl.md5 new file mode 100644 index 00000000..d9375c1b --- /dev/null +++ b/docs/simple-api/XQDebugCallback_8hpp__incl.md5 @@ -0,0 +1 @@ +925bbdb35aac99b6c2550f7ee5597c87 \ No newline at end of file diff --git a/docs/simple-api/XQDebugCallback_8hpp__incl.png b/docs/simple-api/XQDebugCallback_8hpp__incl.png new file mode 100644 index 00000000..fb5a1728 Binary files /dev/null and b/docs/simple-api/XQDebugCallback_8hpp__incl.png differ diff --git a/docs/simple-api/XQException_8hpp-source.html b/docs/simple-api/XQException_8hpp-source.html new file mode 100644 index 00000000..bff38201 --- /dev/null +++ b/docs/simple-api/XQException_8hpp-source.html @@ -0,0 +1,99 @@ + + +XQilla Simple API: XQException.hpp Source File + + + + + + +

XQException.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: XQException.hpp,v 1.10 2006/11/01 16:37:12 jpcs Exp $
+00012  */
+00013 
+00015 // XQException.h: interface for the XQException class.
+00017 
+00018 #if !defined(AFXQ_XQEXCEPTION_H__446AD191_E9D0_4658_BD8C_032D29DA123E__INCLUDED_)
+00019 #define AFXQ_XQEXCEPTION_H__446AD191_E9D0_4658_BD8C_032D29DA123E__INCLUDED_
+00020 
+00021 #include <xqilla/framework/XQillaExport.hpp>
+00022 #include <xqilla/utils/XStr.hpp>
+00023 
+00024 #define XQThrow(type, function, reason) throw type(function, reason, this, __FILE__, __LINE__)
+00025 #define XQThrow2(type, function, reason) throw type(function, reason, 0, __FILE__, __LINE__)
+00026 #define XQThrow3(type, function, reason, location) throw type(function, reason, location, __FILE__, __LINE__)
+00027 #define XQSimpleThrow(reason, xqfile, xqline, xqcolumn) throw XQException(reason, xqfile, xqline, (unsigned int)xqcolumn, __FILE__, __LINE__)
+00028 
+00029 class LocationInfo;
+00030 
+00031 class XQILLA_API XQException
+00032 {
+00033 public:
+00034   XQException(const XMLCh *reason, const XMLCh* file, unsigned int line, unsigned int column, const char *cppFile, unsigned int cppLine);
+00035   XQException(const XQException &);
+00036   virtual ~XQException();
+00037 
+00038   const XMLCh *getType() const { return m_type; }
+00039   const XMLCh *getError() const { return m_error; }
+00040 
+00041   const XMLCh *getXQueryFile() const { return m_xqFile; }
+00042   unsigned int getXQueryLine() const { return m_xqLine; }
+00043   unsigned int getXQueryColumn() const { return m_xqColumn; }
+00044 
+00045   void setXQueryPosition(const XMLCh *file, unsigned int line, unsigned int column);
+00046   void setXQueryPosition(const LocationInfo *info);
+00047 
+00048   const XMLCh *getCppFunction() const { return m_cppFunction; }
+00049   const char *getCppFile() const { return m_cppFile; }
+00050   unsigned int getCppLine() const { return m_cppLine; }
+00051 
+00053   bool isErrorReported() const { return m_errorReported; }
+00054   void setErrorReported(bool value = true) { m_errorReported = value; }
+00055 
+00056   void printDebug(const XMLCh* const context) const;
+00057 
+00058 protected:
+00059   XQException(const XMLCh* const type, const XMLCh* const functionName, const XMLCh* const reason, const LocationInfo *info, const char *cppFile, unsigned int cppLine);
+00060 
+00061 private:
+00062   XQException &operator=(const XQException &);
+00063   
+00064   XMLCh* m_type;
+00065   XMLCh* m_error;
+00066 
+00067   XMLCh* m_cppFunction;
+00068   const char *m_cppFile;
+00069   unsigned int m_cppLine;
+00070 
+00071   unsigned int m_xqLine, m_xqColumn;
+00072   XMLCh* m_xqFile;
+00073 
+00074   bool m_errorReported;
+00075 };
+00076 
+00077 #endif // !defined(AFXQ_XQEXCEPTION_H__446AD191_E9D0_4658_BD8C_032D29DA123E__INCLUDED_)
+00078 
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/XQException_8hpp.html b/docs/simple-api/XQException_8hpp.html new file mode 100644 index 00000000..0cb51f4b --- /dev/null +++ b/docs/simple-api/XQException_8hpp.html @@ -0,0 +1,214 @@ + + +XQilla Simple API: XQException.hpp File Reference + + + + + + +

XQException.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/utils/XStr.hpp>
+ +

+Include dependency graph for XQException.hpp:

+ +

+Go to the source code of this file. + + + + + + + + + + + + + + + +

Classes

class  XQException

Defines

#define AFXQ_XQEXCEPTION_H__446AD191_E9D0_4658_BD8C_032D29DA123E__INCLUDED_
#define XQThrow(type, function, reason)   throw type(function, reason, this, __FILE__, __LINE__)
#define XQThrow2(type, function, reason)   throw type(function, reason, 0, __FILE__, __LINE__)
#define XQThrow3(type, function, reason, location)   throw type(function, reason, location, __FILE__, __LINE__)
#define XQSimpleThrow(reason, xqfile, xqline, xqcolumn)   throw XQException(reason, xqfile, xqline, (unsigned int)xqcolumn, __FILE__, __LINE__)
+


Define Documentation

+

+ + + + +
+ + + + +
#define AFXQ_XQEXCEPTION_H__446AD191_E9D0_4658_BD8C_032D29DA123E__INCLUDED_
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
#define XQSimpleThrow reason,
xqfile,
xqline,
xqcolumn   )    throw XQException(reason, xqfile, xqline, (unsigned int)xqcolumn, __FILE__, __LINE__)
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + +
#define XQThrow type,
function,
reason   )    throw type(function, reason, this, __FILE__, __LINE__)
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + +
#define XQThrow2 type,
function,
reason   )    throw type(function, reason, 0, __FILE__, __LINE__)
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
#define XQThrow3 type,
function,
reason,
location   )    throw type(function, reason, location, __FILE__, __LINE__)
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/XQException_8hpp__incl.map b/docs/simple-api/XQException_8hpp__incl.map new file mode 100644 index 00000000..5a14779e --- /dev/null +++ b/docs/simple-api/XQException_8hpp__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/simple-api/XQException_8hpp__incl.md5 b/docs/simple-api/XQException_8hpp__incl.md5 new file mode 100644 index 00000000..46ed655f --- /dev/null +++ b/docs/simple-api/XQException_8hpp__incl.md5 @@ -0,0 +1 @@ +4cabeabfe57c1eb77f699a43f3474f39 \ No newline at end of file diff --git a/docs/simple-api/XQException_8hpp__incl.png b/docs/simple-api/XQException_8hpp__incl.png new file mode 100644 index 00000000..420abc37 Binary files /dev/null and b/docs/simple-api/XQException_8hpp__incl.png differ diff --git a/docs/simple-api/XQQuery_8hpp-source.html b/docs/simple-api/XQQuery_8hpp-source.html new file mode 100644 index 00000000..e50ef8cf --- /dev/null +++ b/docs/simple-api/XQQuery_8hpp-source.html @@ -0,0 +1,172 @@ + + +XQilla Simple API: XQQuery.hpp Source File + + + + + + +

XQQuery.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: XQQuery.hpp,v 1.16 2006/11/01 16:37:17 jpcs Exp $
+00012  */
+00013 
+00015 // XQQuery.h: interface for the XQQuery class.
+00017 
+00018 #if !defined(AFXQ_XQUERY_H__FAA9933A_2F10_49A4_93A2_857E2A8C48E3__INCLUDED_)
+00019 #define AFXQ_XQUERY_H__FAA9933A_2F10_49A4_93A2_857E2A8C48E3__INCLUDED_
+00020 
+00021 #include <xqilla/framework/XQillaExport.hpp>
+00022 #include <vector>
+00023 #include <string>
+00024 #include <xercesc/util/XMemory.hpp>
+00025 #include <xercesc/sax/InputSource.hpp>
+00026 #include <xqilla/runtime/ResultImpl.hpp>
+00027 #include <xqilla/runtime/LazySequenceResult.hpp>
+00028 #include <xqilla/context/StaticContext.hpp>
+00029 
+00030 class DynamicContext;
+00031 class XQUserFunction;
+00032 class XQGlobalVariable;
+00033 class XQQuery;
+00034 
+00035 typedef std::vector<XQUserFunction*, XQillaAllocator<XQUserFunction*> > UserFunctions;
+00036 typedef std::vector<XQGlobalVariable*, XQillaAllocator<XQGlobalVariable*> > GlobalVariables;
+00037 typedef std::vector<XQQuery*, XQillaAllocator<XQQuery*> > ImportedModules;
+00038 
+00053 class XQILLA_API XQQuery : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory
+00054 {
+00055 public:
+00057   ~XQQuery();
+00058 
+00060         // @{
+00061 
+00070   DynamicContext *createDynamicContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
+00071                                        XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager) const;
+00072 
+00085   Result execute(DynamicContext* context) const;
+00086 
+00106   void staticResolution(StaticContext *context = 0);
+00107 
+00120   void staticTyping(StaticContext *context = 0);
+00121 
+00123 
+00125         // @{
+00126 
+00128   const XMLCh* getQueryText() const;
+00129 
+00131   std::string getQueryPlan() const;
+00132 
+00134 
+00136         // @{
+00137 
+00139   ASTNode* getQueryBody() const;
+00141   void setQueryBody(ASTNode* query);
+00142 
+00144   void addFunction(XQUserFunction* fnDef);
+00146   const UserFunctions &getFunctions() const { return m_userDefFns; }
+00147 
+00149   void addVariable(XQGlobalVariable* varDef);
+00151   const GlobalVariables &getVariables() const { return m_userDefVars; }
+00152 
+00154   const ImportedModules &getImportedModules() const { return m_importedModules; }
+00155 
+00157   const XMLCh* getFile() const;
+00159   void setFile(const XMLCh* file);
+00160 
+00161   const DynamicContext *getStaticContext() const { return m_context; }
+00162 
+00164 
+00166         // @{
+00167 
+00169   void setIsLibraryModule(bool bIsModule=true);
+00171   bool getIsLibraryModule() const;
+00173   void setModuleTargetNamespace(const XMLCh* uri);
+00175   const XMLCh* getModuleTargetNamespace() const;
+00177   void importModule(const XMLCh* szUri, VectorOfStrings* locations, StaticContext* context);
+00178 
+00180 
+00181 private:
+00182   void importModuleImpl(const XMLCh* szUri, XERCES_CPP_NAMESPACE_QUALIFIER InputSource* location, StaticContext* context);
+00183 
+00185   class QueryResult : public ResultImpl
+00186   {
+00187   public:
+00188     QueryResult(const XQQuery *query);
+00189 
+00190     Item::Ptr next(DynamicContext *context);
+00191     std::string asString(DynamicContext *context, int indent) const;
+00192 
+00193   private:
+00194     const XQQuery *_query;
+00195     Result _parent;
+00196     bool _toDo;
+00197   };
+00198 
+00200   class DebugResult : public LazySequenceResult
+00201   {
+00202   public:
+00203     DebugResult(const XQQuery *query, DynamicContext *context);
+00204 
+00205     void getResult(Sequence &toFill, DynamicContext *context) const;
+00206     std::string asString(DynamicContext *context, int indent) const;
+00207 
+00208   private:
+00209     const XQQuery *_query;
+00210   };
+00211 
+00212 private:
+00214   XQQuery(const XMLCh* queryText, DynamicContext *context, bool contextOwned = false,
+00215           XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
+00216           XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager);
+00217 
+00218   XQQuery(const XQQuery &);
+00219   XQQuery &operator=(const XQQuery &);
+00220 
+00221 private:
+00223   XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* m_memMgr;
+00224 
+00226   DynamicContext *m_context;
+00227   bool m_contextOwned;
+00228 
+00229   ASTNode* m_query;
+00230 
+00231   bool m_bIsLibraryModule;
+00232   const XMLCh* m_szTargetNamespace;
+00233   const XMLCh* m_szQueryText;
+00234   const XMLCh* m_szCurrentFile;
+00235 
+00236   UserFunctions m_userDefFns;
+00237   GlobalVariables m_userDefVars;
+00238   ImportedModules m_importedModules;
+00239 
+00240   friend class QueryResult;
+00241   friend class DebugResult;
+00242   friend class XQilla;
+00243 };
+00244 
+00245 #endif // !defined(AFXQ_XQUERY_H__FAA9933A_2F10_49A4_93A2_857E2A8C48E3__INCLUDED_)
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/XQQuery_8hpp.html b/docs/simple-api/XQQuery_8hpp.html new file mode 100644 index 00000000..0b83c02a --- /dev/null +++ b/docs/simple-api/XQQuery_8hpp.html @@ -0,0 +1,163 @@ + + +XQilla Simple API: XQQuery.hpp File Reference + + + + + + +

XQQuery.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <vector>
+#include <string>
+#include <xercesc/util/XMemory.hpp>
+#include <xercesc/sax/InputSource.hpp>
+#include <xqilla/runtime/ResultImpl.hpp>
+#include <xqilla/runtime/LazySequenceResult.hpp>
+#include <xqilla/context/StaticContext.hpp>
+ +

+Include dependency graph for XQQuery.hpp:

+ + + + + + + +

+Go to the source code of this file. + + + + + + + + + + + + + + + + + + + + + +

Classes

class  XQQuery
 Encapsulates a query expression. More...
class  XQQuery::QueryResult
 Top level lazy result iterator.
class  XQQuery::DebugResult
 Top level debug lazy result iterator.

Defines

#define AFXQ_XQUERY_H__FAA9933A_2F10_49A4_93A2_857E2A8C48E3__INCLUDED_

Typedefs

typedef std::vector< XQUserFunction *,
+ XQillaAllocator< XQUserFunction * > > 
UserFunctions
typedef std::vector< XQGlobalVariable *,
+ XQillaAllocator< XQGlobalVariable * > > 
GlobalVariables
typedef std::vector< XQQuery *,
+ XQillaAllocator< XQQuery * > > 
ImportedModules
+


Define Documentation

+

+ + + + +
+ + + + +
#define AFXQ_XQUERY_H__FAA9933A_2F10_49A4_93A2_857E2A8C48E3__INCLUDED_
+
+ + + + + +
+   + + +

+

+


Typedef Documentation

+

+ + + + +
+ + + + +
typedef std::vector<XQGlobalVariable*, XQillaAllocator<XQGlobalVariable*> > GlobalVariables
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
typedef std::vector<XQQuery*, XQillaAllocator<XQQuery*> > ImportedModules
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
typedef std::vector<XQUserFunction*, XQillaAllocator<XQUserFunction*> > UserFunctions
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/XQQuery_8hpp__incl.map b/docs/simple-api/XQQuery_8hpp__incl.map new file mode 100644 index 00000000..aa18474e --- /dev/null +++ b/docs/simple-api/XQQuery_8hpp__incl.map @@ -0,0 +1,5 @@ +base referer +rect $XMemory_8hpp.html 496,59 672,83 +rect $InputSource_8hpp.html 192,157 386,181 +rect $StaticContext_8hpp.html 185,109 393,133 +rect $PlatformUtils_8hpp.html 486,203 681,227 diff --git a/docs/simple-api/XQQuery_8hpp__incl.md5 b/docs/simple-api/XQQuery_8hpp__incl.md5 new file mode 100644 index 00000000..1240c55b --- /dev/null +++ b/docs/simple-api/XQQuery_8hpp__incl.md5 @@ -0,0 +1 @@ +31568f5314bcc4e758e7bba6956bb808 \ No newline at end of file diff --git a/docs/simple-api/XQQuery_8hpp__incl.png b/docs/simple-api/XQQuery_8hpp__incl.png new file mode 100644 index 00000000..be9c549e Binary files /dev/null and b/docs/simple-api/XQQuery_8hpp__incl.png differ diff --git a/docs/simple-api/XQScopedNamespace_8hpp-source.html b/docs/simple-api/XQScopedNamespace_8hpp-source.html new file mode 100644 index 00000000..19ccd704 --- /dev/null +++ b/docs/simple-api/XQScopedNamespace_8hpp-source.html @@ -0,0 +1,91 @@ + + +XQilla Simple API: XQScopedNamespace.hpp Source File + + + + + + +

XQScopedNamespace.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: XQScopedNamespace.hpp,v 1.6 2006/11/01 16:37:12 jpcs Exp $
+00012  */
+00013 
+00015 // XQScopedNamespace.hpp: interface for the XQScopedNamespace class.
+00017 
+00018 #if !defined(AFXQ_XQSCOPEDNAMESPACE_H__D6A320F5_21F1_421D_9E46_E4373B375E1A__INCLUDED_)
+00019 #define AFXQ_XQSCOPEDNAMESPACE_H__D6A320F5_21F1_421D_9E46_E4373B375E1A__INCLUDED_
+00020 
+00021 #include <xqilla/framework/XQillaExport.hpp>
+00022 #include <xqilla/dom-api/impl/XQillaNSResolverImpl.hpp>
+00023 #include <xqilla/context/StaticContext.hpp>
+00024 
+00025 XERCES_CPP_NAMESPACE_BEGIN
+00026 class DOMXPathNSResolver;
+00027 class DOMNode;
+00028 XERCES_CPP_NAMESPACE_END
+00029 
+00030 class XQILLA_API XQScopedNamespace : public XQillaNSResolverImpl
+00031 {
+00032 public:
+00033   XQScopedNamespace(XPath2MemoryManager* memMgr, const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* prevScope);
+00034   virtual ~XQScopedNamespace();
+00035 
+00036   virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const;
+00037   virtual const XMLCh* lookupPrefix(const XMLCh* uri) const;
+00038 
+00039   void setNodeContext(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* node);
+00040 protected:
+00041   const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* _prevScope;
+00042   const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* _ctxNode;
+00043 };
+00044 
+00045 class XQILLA_API AutoNsScopeReset
+00046 {
+00047 public:
+00048   AutoNsScopeReset(StaticContext* context, XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* newResolver)
+00049   {
+00050     _context=context;
+00051     _oldNSResolver=_context->getNSResolver();
+00052     _defaultElementAndTypeNS=context->getDefaultElementAndTypeNS();
+00053     _context->setNSResolver(newResolver);
+00054   }
+00055 
+00056   ~AutoNsScopeReset()
+00057   {
+00058     _context->setNSResolver(_oldNSResolver);
+00059     _context->setDefaultElementAndTypeNS(_defaultElementAndTypeNS);
+00060   }
+00061 
+00062 protected:
+00063   StaticContext* _context;
+00064   const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* _oldNSResolver;
+00065   const XMLCh *_defaultElementAndTypeNS;
+00066   
+00067 };
+00068 
+00069 #endif // !defined(AFXQ_XQSCOPEDNAMESPACE_H__D6A320F5_21F1_421D_9E46_E4373B375E1A__INCLUDED_)
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/XQScopedNamespace_8hpp.html b/docs/simple-api/XQScopedNamespace_8hpp.html new file mode 100644 index 00000000..6625ce3e --- /dev/null +++ b/docs/simple-api/XQScopedNamespace_8hpp.html @@ -0,0 +1,75 @@ + + +XQilla Simple API: XQScopedNamespace.hpp File Reference + + + + + + +

XQScopedNamespace.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <xqilla/dom-api/impl/XQillaNSResolverImpl.hpp>
+#include <xqilla/context/StaticContext.hpp>
+ +

+Include dependency graph for XQScopedNamespace.hpp:

+ + + + + + +

+Go to the source code of this file. + + + + + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  XQScopedNamespace
class  AutoNsScopeReset

Defines

#define AFXQ_XQSCOPEDNAMESPACE_H__D6A320F5_21F1_421D_9E46_E4373B375E1A__INCLUDED_
+


Define Documentation

+

+ + + + +
+ + + + +
#define AFXQ_XQSCOPEDNAMESPACE_H__D6A320F5_21F1_421D_9E46_E4373B375E1A__INCLUDED_
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/XQScopedNamespace_8hpp__incl.map b/docs/simple-api/XQScopedNamespace_8hpp__incl.map new file mode 100644 index 00000000..cd3e1b2a --- /dev/null +++ b/docs/simple-api/XQScopedNamespace_8hpp__incl.map @@ -0,0 +1,4 @@ +base referer +rect $StaticContext_8hpp.html 282,106 490,130 +rect $PlatformUtils_8hpp.html 601,153 796,177 +rect $XMemory_8hpp.html 610,201 786,225 diff --git a/docs/simple-api/XQScopedNamespace_8hpp__incl.md5 b/docs/simple-api/XQScopedNamespace_8hpp__incl.md5 new file mode 100644 index 00000000..bb6688b9 --- /dev/null +++ b/docs/simple-api/XQScopedNamespace_8hpp__incl.md5 @@ -0,0 +1 @@ +ccef0aa4c31e51402cfdc316a0e6d81a \ No newline at end of file diff --git a/docs/simple-api/XQScopedNamespace_8hpp__incl.png b/docs/simple-api/XQScopedNamespace_8hpp__incl.png new file mode 100644 index 00000000..578e8c8b Binary files /dev/null and b/docs/simple-api/XQScopedNamespace_8hpp__incl.png differ diff --git a/docs/simple-api/XQilla_8hpp-source.html b/docs/simple-api/XQilla_8hpp-source.html new file mode 100644 index 00000000..639530ac --- /dev/null +++ b/docs/simple-api/XQilla_8hpp-source.html @@ -0,0 +1,115 @@ + + +XQilla Simple API: XQilla.hpp Source File + + + + + + +

XQilla.hpp

Go to the documentation of this file.
00001 /*
+00002  * Copyright (c) 2001-2006
+00003  *     DecisionSoft Limited. All rights reserved.
+00004  * Copyright (c) 2004-2006
+00005  *     Progress Software Corporation. All rights reserved.
+00006  * Copyright (c) 2004-2006
+00007  *     Oracle. All rights reserved.
+00008  *
+00009  * See the file LICENSE for redistribution information.
+00010  *
+00011  * $Id: XQilla.hpp,v 1.8.2.1 2006/12/08 15:19:12 jpcs Exp $
+00012  */
+00013 
+00014 #ifndef _XQILLA_07637_HPP
+00015 #define _XQILLA_07637_HPP
+00016 
+00017 #include <xqilla/framework/XQillaExport.hpp>
+00018 
+00019 #include <xercesc/framework/MemoryManager.hpp>
+00020 #include <xercesc/util/PlatformUtils.hpp>
+00021 #include <xercesc/util/XMemory.hpp>
+00022 
+00023 class DynamicContext;
+00024 class XQQuery;
+00025 class XPath2MemoryManager;
+00026 
+00027 XERCES_CPP_NAMESPACE_BEGIN
+00028 class InputSource;
+00029 class XMLBuffer;
+00030 XERCES_CPP_NAMESPACE_END
+00031 
+00039 class XQILLA_API XQilla : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory
+00040 {
+00041 public:
+00043   enum Flags {
+00044     NO_STATIC_RESOLUTION = 0x1, 
+00045     NO_ADOPT_CONTEXT = 0x2 
+00046   };
+00047 
+00049   enum Language {
+00050     XQUERY,          
+00051     XPATH2,          
+00052     XQUERY_FULLTEXT, 
+00053     XPATH2_FULLTEXT  
+00054   };
+00055                                                                                                                                                               
+00062   XQilla(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr = 0);
+00063 
+00068   ~XQilla();
+00069 
+00071   // @{
+00072 
+00090   static XQQuery* parse(const XMLCh* query,
+00091                         Language language = XQUERY,
+00092                         DynamicContext* context = 0,
+00093                         const XMLCh* queryFile = NULL,
+00094                         unsigned int flags = 0,
+00095                         XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
+00096                         XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager);
+00097 
+00113   static XQQuery* parse(const XERCES_CPP_NAMESPACE_QUALIFIER InputSource& querySrc,
+00114                         Language language = XQUERY,
+00115                         DynamicContext* context = 0,
+00116                         unsigned int flags = 0,
+00117                         XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
+00118                         XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager);
+00119 
+00135   static XQQuery* parseFromURI(const XMLCh* queryFile,
+00136                                Language language = XQUERY,
+00137                                DynamicContext* context = 0,
+00138                                unsigned int flags = 0,
+00139                                XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
+00140                                XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager);
+00141 
+00143 
+00145   // @{
+00146 
+00152   static DynamicContext *createContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
+00153                                        XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager);
+00154 
+00156 
+00157 private:
+00158   static bool readQuery(const XMLCh* queryFile, 
+00159                         XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr, 
+00160                         XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer& queryText);
+00161   static bool readQuery(const XERCES_CPP_NAMESPACE_QUALIFIER InputSource& querySrc, 
+00162                         XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr, 
+00163                         XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer& queryText);
+00164 };
+00165 
+00166 #endif
+

Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/XQilla_8hpp.html b/docs/simple-api/XQilla_8hpp.html new file mode 100644 index 00000000..00df207e --- /dev/null +++ b/docs/simple-api/XQilla_8hpp.html @@ -0,0 +1,48 @@ + + +XQilla Simple API: XQilla.hpp File Reference + + + + + + +

XQilla.hpp File Reference

#include <xqilla/framework/XQillaExport.hpp>
+#include <xercesc/framework/MemoryManager.hpp>
+#include <xercesc/util/PlatformUtils.hpp>
+#include <xercesc/util/XMemory.hpp>
+ +

+Include dependency graph for XQilla.hpp:

+ + + + + + +

+Go to the source code of this file. + + + + + + + + +

Namespaces

namespace  xercesc

Classes

class  XQilla
 Provides factory methods for creating XQQuery and DynamicContext objects. More...
+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/XQilla_8hpp__incl.map b/docs/simple-api/XQilla_8hpp__incl.map new file mode 100644 index 00000000..4286da60 --- /dev/null +++ b/docs/simple-api/XQilla_8hpp__incl.map @@ -0,0 +1,4 @@ +base referer +rect $MemoryManager_8hpp.html 142,56 406,80 +rect $PlatformUtils_8hpp.html 177,152 371,176 +rect $XMemory_8hpp.html 186,104 362,128 diff --git a/docs/simple-api/XQilla_8hpp__incl.md5 b/docs/simple-api/XQilla_8hpp__incl.md5 new file mode 100644 index 00000000..828625bb --- /dev/null +++ b/docs/simple-api/XQilla_8hpp__incl.md5 @@ -0,0 +1 @@ +2dc1f68be89cc0112b0eb6af07359a12 \ No newline at end of file diff --git a/docs/simple-api/XQilla_8hpp__incl.png b/docs/simple-api/XQilla_8hpp__incl.png new file mode 100644 index 00000000..32c901ae Binary files /dev/null and b/docs/simple-api/XQilla_8hpp__incl.png differ diff --git a/docs/simple-api/annotated.html b/docs/simple-api/annotated.html new file mode 100644 index 00000000..eedb17a8 --- /dev/null +++ b/docs/simple-api/annotated.html @@ -0,0 +1,102 @@ + + +XQilla Simple API: Class List + + + + + + +

XQilla Simple API Class List

Here are the classes, structs, unions and interfaces with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AnyAtomicType
ATAnySimpleTypeThis class represents the atomic types (ie, the simple types which are not list or union types) with type annotation xs:anySimpleType
ATAnyURIOrDerived
ATBase64BinaryOrDerived
ATBooleanOrDerived
ATDateOrDerived
ATDateTimeOrDerived
ATDecimalOrDerived
ATDoubleOrDerived
ATDurationOrDerived
ATFloatOrDerived
ATGDayOrDerived
ATGMonthDayOrDerived
ATGMonthOrDerived
ATGYearMonthOrDerived
ATGYearOrDerived
ATHexBinaryOrDerived
ATNotationOrDerived
ATQNameOrDerived
ATStringOrDerived
ATTimeOrDerived
ATUntypedAtomic
AutoContextInfoReset
AutoContextItemTypeReset
AutoDeallocate< TYPE >
AutoDelete< TYPE >
AutoDeleteArray< TYPE >
AutoNodeSetOrderingReset
AutoNsScopeReset
AutoRelease< TYPE >
Collation
DateOrTimeType
xercesc::DOMDocumentThe DOMDocument interface represents the entire XML document
xercesc::DOMNodeThe DOMNode interface is the primary datatype for the entire Document Object Model
xercesc::DOMXPathNSResolverThe DOMXPathNSResolver interface permit prefix strings in the expression to be properly bound to namespaceURI strings
DynamicContextThe execution time dynamic context interface
xercesc::InputSourceA single input source for an XML entity
Item
ItemFactory
ItemFactory::ElementChild
xercesc::LocalFileInputSourceThis class is a derivative of the standard InputSource class
xercesc::MemBufInputSourceThis class is a derivative of the standard InputSource class
xercesc::MemoryManagerConfigurable memory manager
ModuleResolver
Node
Numeric
NumericTypeConstructor
RefCountPointer< T >Super class of all the reference counted wrappers for Items
ReferenceCountedSuper class for reference counted classes
ResultA reference counting wrapper for the lazily evaluated query result
Scope< TYPE >Used inside VariableStore to implement variable scoping
SequenceAn eagerly evaluated result of a query execution
StaticContextThe parse time static context interface
StaticResolutionContextRecords access to various parts of the context during static resolution
xercesc::StdInInputSourceThis class is a derivative of the standard InputSource class
StringPool
Timezone
URIResolverThis is an abstract class used to resolve URIs in different ways
xercesc::URLInputSourceThis class is a derivative of the standard InputSource class
VarHashEntry< TYPE >The class that stores the values of the variables
VariableStoreThis is the wrapper class for the variable store, which implements the lookup and scoping of simple variables
VariableTypeStoreThis is the wrapper class for the variable store, which implements the lookup and scoping of simple variables
xercesc::XMemoryThis class makes it possible to override the C++ memory management by adding new/delete operators to this base class
xercesc::XMLDeleter
xercesc::XMLEntityResolverRevised interface for resolving entities
xercesc::XMLPlatformUtilsUtilities that must be implemented in a platform-specific way
XPath2MemoryManager
XQDebugCallback
XQException
XQillaProvides factory methods for creating XQQuery and DynamicContext objects
XQillaAllocator< _Tp >
XQillaAllocator< _Tp >::rebind< _Tp1 >
XQQueryEncapsulates a query expression
XQScopedNamespace
+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATAnySimpleType-members.html b/docs/simple-api/classATAnySimpleType-members.html new file mode 100644 index 00000000..07641803 --- /dev/null +++ b/docs/simple-api/classATAnySimpleType-members.html @@ -0,0 +1,80 @@ + + +XQilla Simple API: Member List + + + + + + +

ATAnySimpleType Member List

This is the complete list of members for ATAnySimpleType, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asString(const DynamicContext *context) const =0ATAnySimpleType [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0ATAnySimpleType [pure virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getInterface(const XMLCh *name) const =0Item [pure virtual]
getPrimitiveTypeIndex() const =0ATAnySimpleType [pure virtual]
getPrimitiveTypeName() const =0ATAnySimpleType [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getTypeName() const =0ATAnySimpleType [pure virtual]
getTypeURI() const =0ATAnySimpleType [pure virtual]
gXQillaItem [static]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const AnyAtomicType [virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const AnyAtomicType [virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
Item()Item [inline, protected]
NOTATION enum valueAnyAtomicType
NumAtomicObjectTypes enum valueAnyAtomicType
Ptr typedefAnyAtomicType
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
STRING enum valueAnyAtomicType
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATAnySimpleType.html b/docs/simple-api/classATAnySimpleType.html new file mode 100644 index 00000000..667db16e --- /dev/null +++ b/docs/simple-api/classATAnySimpleType.html @@ -0,0 +1,244 @@ + + +XQilla Simple API: ATAnySimpleType Class Reference + + + + + + +

ATAnySimpleType Class Reference

This class represents the atomic types (ie, the simple types which are not list or union types) with type annotation xs:anySimpleType. +More... +

+#include <ATAnySimpleType.hpp> +

+Inheritance diagram for ATAnySimpleType:

Inheritance graph
+ + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + +

Public Member Functions

virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual bool equals (const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0
+

Detailed Description

+This class represents the atomic types (ie, the simple types which are not list or union types) with type annotation xs:anySimpleType. +

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* ATAnySimpleType::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ATAnySimpleType::equals const AnyAtomicType::Ptr target,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ATAnySimpleType::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATAnySimpleType::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATAnySimpleType::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATAnySimpleType::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATAnySimpleType__inherit__graph.map b/docs/simple-api/classATAnySimpleType__inherit__graph.map new file mode 100644 index 00000000..71ead6a4 --- /dev/null +++ b/docs/simple-api/classATAnySimpleType__inherit__graph.map @@ -0,0 +1,4 @@ +base referer +rect $classAnyAtomicType.html 17,158 131,182 +rect $classItem.html 50,84 98,108 +rect $classReferenceCounted.html 7,9 141,33 diff --git a/docs/simple-api/classATAnySimpleType__inherit__graph.md5 b/docs/simple-api/classATAnySimpleType__inherit__graph.md5 new file mode 100644 index 00000000..97cf1956 --- /dev/null +++ b/docs/simple-api/classATAnySimpleType__inherit__graph.md5 @@ -0,0 +1 @@ +9c42a964836dc1ec46415f92e0afb097 \ No newline at end of file diff --git a/docs/simple-api/classATAnySimpleType__inherit__graph.png b/docs/simple-api/classATAnySimpleType__inherit__graph.png new file mode 100644 index 00000000..bd500b7b Binary files /dev/null and b/docs/simple-api/classATAnySimpleType__inherit__graph.png differ diff --git a/docs/simple-api/classATAnyURIOrDerived-members.html b/docs/simple-api/classATAnyURIOrDerived-members.html new file mode 100644 index 00000000..62cb8b35 --- /dev/null +++ b/docs/simple-api/classATAnyURIOrDerived-members.html @@ -0,0 +1,80 @@ + + +XQilla Simple API: Member List + + + + + + +

ATAnyURIOrDerived Member List

This is the complete list of members for ATAnyURIOrDerived, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asString(const DynamicContext *context) const =0ATAnyURIOrDerived [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0ATAnyURIOrDerived [pure virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getInterface(const XMLCh *name) const =0Item [pure virtual]
getPrimitiveTypeIndex() const =0ATAnyURIOrDerived [pure virtual]
getPrimitiveTypeName() const =0ATAnyURIOrDerived [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getTypeName() const =0ATAnyURIOrDerived [pure virtual]
getTypeURI() const =0ATAnyURIOrDerived [pure virtual]
gXQillaItem [static]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const AnyAtomicType [virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const AnyAtomicType [virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
Item()Item [inline, protected]
NOTATION enum valueAnyAtomicType
NumAtomicObjectTypes enum valueAnyAtomicType
Ptr typedefAnyAtomicType
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
STRING enum valueAnyAtomicType
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATAnyURIOrDerived.html b/docs/simple-api/classATAnyURIOrDerived.html new file mode 100644 index 00000000..0621a742 --- /dev/null +++ b/docs/simple-api/classATAnyURIOrDerived.html @@ -0,0 +1,238 @@ + + +XQilla Simple API: ATAnyURIOrDerived Class Reference + + + + + + +

ATAnyURIOrDerived Class Reference

#include <ATAnyURIOrDerived.hpp> +

+Inheritance diagram for ATAnyURIOrDerived:

Inheritance graph
+ + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + +

Public Member Functions

virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual bool equals (const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0
+

Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* ATAnyURIOrDerived::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ATAnyURIOrDerived::equals const AnyAtomicType::Ptr target,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ATAnyURIOrDerived::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATAnyURIOrDerived::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATAnyURIOrDerived::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATAnyURIOrDerived::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATAnyURIOrDerived__inherit__graph.map b/docs/simple-api/classATAnyURIOrDerived__inherit__graph.map new file mode 100644 index 00000000..8ffeef7c --- /dev/null +++ b/docs/simple-api/classATAnyURIOrDerived__inherit__graph.map @@ -0,0 +1,4 @@ +base referer +rect $classAnyAtomicType.html 22,158 137,182 +rect $classItem.html 56,84 104,108 +rect $classReferenceCounted.html 13,9 146,33 diff --git a/docs/simple-api/classATAnyURIOrDerived__inherit__graph.md5 b/docs/simple-api/classATAnyURIOrDerived__inherit__graph.md5 new file mode 100644 index 00000000..9be21fbf --- /dev/null +++ b/docs/simple-api/classATAnyURIOrDerived__inherit__graph.md5 @@ -0,0 +1 @@ +c9fbf35a45f75307a34a3f7aab4b18b4 \ No newline at end of file diff --git a/docs/simple-api/classATAnyURIOrDerived__inherit__graph.png b/docs/simple-api/classATAnyURIOrDerived__inherit__graph.png new file mode 100644 index 00000000..3b3c28a8 Binary files /dev/null and b/docs/simple-api/classATAnyURIOrDerived__inherit__graph.png differ diff --git a/docs/simple-api/classATBase64BinaryOrDerived-members.html b/docs/simple-api/classATBase64BinaryOrDerived-members.html new file mode 100644 index 00000000..b95d01b6 --- /dev/null +++ b/docs/simple-api/classATBase64BinaryOrDerived-members.html @@ -0,0 +1,81 @@ + + +XQilla Simple API: Member List + + + + + + +

ATBase64BinaryOrDerived Member List

This is the complete list of members for ATBase64BinaryOrDerived, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asString(const DynamicContext *context) const =0ATBase64BinaryOrDerived [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
compare(const ATBase64BinaryOrDerived::Ptr &other, const DynamicContext *context) const =0ATBase64BinaryOrDerived [pure virtual]
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0ATBase64BinaryOrDerived [pure virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getInterface(const XMLCh *name) const =0Item [pure virtual]
getPrimitiveTypeIndex() const =0ATBase64BinaryOrDerived [protected, pure virtual]
getPrimitiveTypeName() const =0ATBase64BinaryOrDerived [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getTypeName() const =0ATBase64BinaryOrDerived [pure virtual]
getTypeURI() const =0ATBase64BinaryOrDerived [pure virtual]
gXQillaItem [static]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const AnyAtomicType [virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const AnyAtomicType [virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
Item()Item [inline, protected]
NOTATION enum valueAnyAtomicType
NumAtomicObjectTypes enum valueAnyAtomicType
Ptr typedefAnyAtomicType
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
STRING enum valueAnyAtomicType
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATBase64BinaryOrDerived.html b/docs/simple-api/classATBase64BinaryOrDerived.html new file mode 100644 index 00000000..3720ad78 --- /dev/null +++ b/docs/simple-api/classATBase64BinaryOrDerived.html @@ -0,0 +1,281 @@ + + +XQilla Simple API: ATBase64BinaryOrDerived Class Reference + + + + + + +

ATBase64BinaryOrDerived Class Reference

#include <ATBase64BinaryOrDerived.hpp> +

+Inheritance diagram for ATBase64BinaryOrDerived:

Inheritance graph
+ + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual bool equals (const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0
virtual int compare (const ATBase64BinaryOrDerived::Ptr &other, const DynamicContext *context) const =0
 Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise.

Protected Member Functions

virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0
+

Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* ATBase64BinaryOrDerived::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual int ATBase64BinaryOrDerived::compare const ATBase64BinaryOrDerived::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ATBase64BinaryOrDerived::equals const AnyAtomicType::Ptr target,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ATBase64BinaryOrDerived::getPrimitiveTypeIndex  )  const [protected, pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATBase64BinaryOrDerived::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATBase64BinaryOrDerived::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATBase64BinaryOrDerived::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATBase64BinaryOrDerived__inherit__graph.map b/docs/simple-api/classATBase64BinaryOrDerived__inherit__graph.map new file mode 100644 index 00000000..e646e290 --- /dev/null +++ b/docs/simple-api/classATBase64BinaryOrDerived__inherit__graph.map @@ -0,0 +1,4 @@ +base referer +rect $classAnyAtomicType.html 41,158 155,182 +rect $classItem.html 74,84 122,108 +rect $classReferenceCounted.html 31,9 165,33 diff --git a/docs/simple-api/classATBase64BinaryOrDerived__inherit__graph.md5 b/docs/simple-api/classATBase64BinaryOrDerived__inherit__graph.md5 new file mode 100644 index 00000000..4f2fd206 --- /dev/null +++ b/docs/simple-api/classATBase64BinaryOrDerived__inherit__graph.md5 @@ -0,0 +1 @@ +249f15677a4297f99baebb9236d6e220 \ No newline at end of file diff --git a/docs/simple-api/classATBase64BinaryOrDerived__inherit__graph.png b/docs/simple-api/classATBase64BinaryOrDerived__inherit__graph.png new file mode 100644 index 00000000..e8f6b761 Binary files /dev/null and b/docs/simple-api/classATBase64BinaryOrDerived__inherit__graph.png differ diff --git a/docs/simple-api/classATBooleanOrDerived-members.html b/docs/simple-api/classATBooleanOrDerived-members.html new file mode 100644 index 00000000..eda0a9c7 --- /dev/null +++ b/docs/simple-api/classATBooleanOrDerived-members.html @@ -0,0 +1,83 @@ + + +XQilla Simple API: Member List + + + + + + +

ATBooleanOrDerived Member List

This is the complete list of members for ATBooleanOrDerived, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asString(const DynamicContext *context) const =0ATBooleanOrDerived [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
compare(const ATBooleanOrDerived::Ptr &other, const DynamicContext *context) const =0ATBooleanOrDerived [pure virtual]
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0ATBooleanOrDerived [pure virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getInterface(const XMLCh *name) const =0Item [pure virtual]
getPrimitiveTypeIndex() const =0ATBooleanOrDerived [pure virtual]
getPrimitiveTypeName() const =0ATBooleanOrDerived [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getTypeName() const =0ATBooleanOrDerived [pure virtual]
getTypeURI() const =0ATBooleanOrDerived [pure virtual]
gXQillaItem [static]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const AnyAtomicType [virtual]
isFalse() const =0ATBooleanOrDerived [pure virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const AnyAtomicType [virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
isTrue() const =0ATBooleanOrDerived [pure virtual]
Item()Item [inline, protected]
NOTATION enum valueAnyAtomicType
NumAtomicObjectTypes enum valueAnyAtomicType
Ptr typedefATBooleanOrDerived
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
STRING enum valueAnyAtomicType
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATBooleanOrDerived.html b/docs/simple-api/classATBooleanOrDerived.html new file mode 100644 index 00000000..49bfcda0 --- /dev/null +++ b/docs/simple-api/classATBooleanOrDerived.html @@ -0,0 +1,368 @@ + + +XQilla Simple API: ATBooleanOrDerived Class Reference + + + + + + +

ATBooleanOrDerived Class Reference

#include <ATBooleanOrDerived.hpp> +

+Inheritance diagram for ATBooleanOrDerived:

Inheritance graph
+ + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef RefCountPointer< const
+ATBooleanOrDerived
Ptr

Public Member Functions

virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual bool equals (const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0
virtual int compare (const ATBooleanOrDerived::Ptr &other, const DynamicContext *context) const =0
 Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise.
virtual bool isTrue () const =0
virtual bool isFalse () const =0
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0
+

Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef RefCountPointer<const ATBooleanOrDerived> ATBooleanOrDerived::Ptr
+
+ + + + + +
+   + + +

+ +

+Reimplemented from AnyAtomicType.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* ATBooleanOrDerived::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual int ATBooleanOrDerived::compare const ATBooleanOrDerived::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ATBooleanOrDerived::equals const AnyAtomicType::Ptr target,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ATBooleanOrDerived::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATBooleanOrDerived::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATBooleanOrDerived::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATBooleanOrDerived::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual bool ATBooleanOrDerived::isFalse  )  const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual bool ATBooleanOrDerived::isTrue  )  const [pure virtual]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATBooleanOrDerived__inherit__graph.map b/docs/simple-api/classATBooleanOrDerived__inherit__graph.map new file mode 100644 index 00000000..bd3de72c --- /dev/null +++ b/docs/simple-api/classATBooleanOrDerived__inherit__graph.map @@ -0,0 +1,4 @@ +base referer +rect $classAnyAtomicType.html 24,158 138,182 +rect $classItem.html 57,84 105,108 +rect $classReferenceCounted.html 14,9 148,33 diff --git a/docs/simple-api/classATBooleanOrDerived__inherit__graph.md5 b/docs/simple-api/classATBooleanOrDerived__inherit__graph.md5 new file mode 100644 index 00000000..9eb90563 --- /dev/null +++ b/docs/simple-api/classATBooleanOrDerived__inherit__graph.md5 @@ -0,0 +1 @@ +df6d1d8de681e5c8c8455a7c5b392039 \ No newline at end of file diff --git a/docs/simple-api/classATBooleanOrDerived__inherit__graph.png b/docs/simple-api/classATBooleanOrDerived__inherit__graph.png new file mode 100644 index 00000000..80fb6eb1 Binary files /dev/null and b/docs/simple-api/classATBooleanOrDerived__inherit__graph.png differ diff --git a/docs/simple-api/classATDateOrDerived-members.html b/docs/simple-api/classATDateOrDerived-members.html new file mode 100644 index 00000000..d4a753d0 --- /dev/null +++ b/docs/simple-api/classATDateOrDerived-members.html @@ -0,0 +1,93 @@ + + +XQilla Simple API: Member List + + + + + + +

ATDateOrDerived Member List

This is the complete list of members for ATDateOrDerived, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
addDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, const DynamicContext *context) const =0ATDateOrDerived [pure virtual]
addTimezone(const ATDurationOrDerived::Ptr &timezone, const DynamicContext *context) const =0ATDateOrDerived [pure virtual]
addYearMonthDuration(const ATDurationOrDerived::Ptr &yearMonth, const DynamicContext *context) const =0ATDateOrDerived [pure virtual]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asString(const DynamicContext *context) const =0ATDateOrDerived [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
compare(const ATDateOrDerived::Ptr &other, const DynamicContext *context) const =0ATDateOrDerived [pure virtual]
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0ATDateOrDerived [pure virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getDays(const DynamicContext *context) const =0ATDateOrDerived [pure virtual]
getInterface(const XMLCh *name) const =0Item [pure virtual]
getMonths(const DynamicContext *context) const =0ATDateOrDerived [pure virtual]
getPrimitiveTypeIndex() const =0ATDateOrDerived [pure virtual]
getPrimitiveTypeName() const =0ATDateOrDerived [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getTimezone() const =0ATDateOrDerived [pure virtual]
getTypeName() const =0ATDateOrDerived [pure virtual]
getTypeURI() const =0ATDateOrDerived [pure virtual]
getYears(const DynamicContext *context) const =0ATDateOrDerived [pure virtual]
gXQillaItem [static]
hasTimezone() const =0ATDateOrDerived [pure virtual]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const DateOrTimeType [virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const AnyAtomicType [virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
Item()Item [inline, protected]
NOTATION enum valueAnyAtomicType
NumAtomicObjectTypes enum valueAnyAtomicType
Ptr typedefATDateOrDerived
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
setTimezone(const Timezone::Ptr &timezone, const DynamicContext *context) const =0ATDateOrDerived [pure virtual]
STRING enum valueAnyAtomicType
subtractDate(const ATDateOrDerived::Ptr &date, const DynamicContext *context) const =0ATDateOrDerived [pure virtual]
subtractDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, const DynamicContext *context) const =0ATDateOrDerived [pure virtual]
subtractYearMonthDuration(const ATDurationOrDerived::Ptr &yearMonth, const DynamicContext *context) const =0ATDateOrDerived [pure virtual]
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATDateOrDerived.html b/docs/simple-api/classATDateOrDerived.html new file mode 100644 index 00000000..70b8ae90 --- /dev/null +++ b/docs/simple-api/classATDateOrDerived.html @@ -0,0 +1,770 @@ + + +XQilla Simple API: ATDateOrDerived Class Reference + + + + + + +

ATDateOrDerived Class Reference

#include <ATDateOrDerived.hpp> +

+Inheritance diagram for ATDateOrDerived:

Inheritance graph
+ + + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef RefCountPointer< const
+ATDateOrDerived
Ptr

Public Member Functions

virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual bool equals (const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0
virtual int compare (const ATDateOrDerived::Ptr &other, const DynamicContext *context) const =0
 Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise.
virtual ATDecimalOrDerived::Ptr getYears (const DynamicContext *context) const =0
 Returns an integer representing the year component of this object.
virtual ATDecimalOrDerived::Ptr getMonths (const DynamicContext *context) const =0
 Returns an integer representing the month component of this object.
virtual ATDecimalOrDerived::Ptr getDays (const DynamicContext *context) const =0
 Returns an integer representing the day component of this object.
virtual const Timezone::PtrgetTimezone () const =0
 Returns a timezone object representing the timezone component of this object.
virtual bool hasTimezone () const =0
 Returns true if the timezone is defined for this object, false otherwise.
virtual ATDateOrDerived::Ptr setTimezone (const Timezone::Ptr &timezone, const DynamicContext *context) const =0
 Setter for timezone.
virtual ATDateOrDerived::Ptr addTimezone (const ATDurationOrDerived::Ptr &timezone, const DynamicContext *context) const =0
 Returns an ATDateOrDerived with a timezone added to it.
virtual ATDateOrDerived::Ptr addYearMonthDuration (const ATDurationOrDerived::Ptr &yearMonth, const DynamicContext *context) const =0
 Returns a date with the given yearMonthDuration added to it.
virtual ATDateOrDerived::Ptr addDayTimeDuration (const ATDurationOrDerived::Ptr &dayTime, const DynamicContext *context) const =0
 Returns a date with the given dayTimeDuration added to it.
virtual ATDateOrDerived::Ptr subtractYearMonthDuration (const ATDurationOrDerived::Ptr &yearMonth, const DynamicContext *context) const =0
 Returns a date with the given yearMonthDuration subtracted from it.
virtual ATDateOrDerived::Ptr subtractDayTimeDuration (const ATDurationOrDerived::Ptr &dayTime, const DynamicContext *context) const =0
 Returns a date with the given dayTimeDuration subtracted from it.
virtual ATDurationOrDerived::Ptr subtractDate (const ATDateOrDerived::Ptr &date, const DynamicContext *context) const =0
 Returns a dayTimeDuration corresponding to the difference between this and the given ATDateOrDerived*.
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0
+

Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef RefCountPointer<const ATDateOrDerived> ATDateOrDerived::Ptr
+
+ + + + + +
+   + + +

+ +

+Reimplemented from DateOrTimeType.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDateOrDerived::Ptr ATDateOrDerived::addDayTimeDuration const ATDurationOrDerived::Ptr dayTime,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a date with the given dayTimeDuration added to it. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDateOrDerived::Ptr ATDateOrDerived::addTimezone const ATDurationOrDerived::Ptr timezone,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns an ATDateOrDerived with a timezone added to it. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDateOrDerived::Ptr ATDateOrDerived::addYearMonthDuration const ATDurationOrDerived::Ptr yearMonth,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a date with the given yearMonthDuration added to it. +

+

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* ATDateOrDerived::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual int ATDateOrDerived::compare const ATDateOrDerived::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ATDateOrDerived::equals const AnyAtomicType::Ptr target,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ATDateOrDerived::getDays const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns an integer representing the day component of this object. +

+

+

+ + + + +
+ + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ATDateOrDerived::getMonths const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns an integer representing the month component of this object. +

+

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ATDateOrDerived::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATDateOrDerived::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const Timezone::Ptr& ATDateOrDerived::getTimezone  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a timezone object representing the timezone component of this object. +

+

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATDateOrDerived::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATDateOrDerived::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ATDateOrDerived::getYears const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns an integer representing the year component of this object. +

+

+

+ + + + +
+ + + + + + + + +
virtual bool ATDateOrDerived::hasTimezone  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns true if the timezone is defined for this object, false otherwise. +

+ +

+Implements DateOrTimeType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDateOrDerived::Ptr ATDateOrDerived::setTimezone const Timezone::Ptr timezone,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Setter for timezone. +

+Overrides the current timezone. (Not to be confused with addTimezone().

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDurationOrDerived::Ptr ATDateOrDerived::subtractDate const ATDateOrDerived::Ptr date,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a dayTimeDuration corresponding to the difference between this and the given ATDateOrDerived*. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDateOrDerived::Ptr ATDateOrDerived::subtractDayTimeDuration const ATDurationOrDerived::Ptr dayTime,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a date with the given dayTimeDuration subtracted from it. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDateOrDerived::Ptr ATDateOrDerived::subtractYearMonthDuration const ATDurationOrDerived::Ptr yearMonth,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a date with the given yearMonthDuration subtracted from it. +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATDateOrDerived__inherit__graph.map b/docs/simple-api/classATDateOrDerived__inherit__graph.map new file mode 100644 index 00000000..e559864f --- /dev/null +++ b/docs/simple-api/classATDateOrDerived__inherit__graph.map @@ -0,0 +1,5 @@ +base referer +rect $classDateOrTimeType.html 13,233 135,257 +rect $classAnyAtomicType.html 17,158 131,182 +rect $classItem.html 50,83 98,107 +rect $classReferenceCounted.html 7,9 141,33 diff --git a/docs/simple-api/classATDateOrDerived__inherit__graph.md5 b/docs/simple-api/classATDateOrDerived__inherit__graph.md5 new file mode 100644 index 00000000..31566f48 --- /dev/null +++ b/docs/simple-api/classATDateOrDerived__inherit__graph.md5 @@ -0,0 +1 @@ +783a56419bc504d7d0cdb023ed844846 \ No newline at end of file diff --git a/docs/simple-api/classATDateOrDerived__inherit__graph.png b/docs/simple-api/classATDateOrDerived__inherit__graph.png new file mode 100644 index 00000000..67ba2818 Binary files /dev/null and b/docs/simple-api/classATDateOrDerived__inherit__graph.png differ diff --git a/docs/simple-api/classATDateTimeOrDerived-members.html b/docs/simple-api/classATDateTimeOrDerived-members.html new file mode 100644 index 00000000..a555af7e --- /dev/null +++ b/docs/simple-api/classATDateTimeOrDerived-members.html @@ -0,0 +1,97 @@ + + +XQilla Simple API: Member List + + + + + + +

ATDateTimeOrDerived Member List

This is the complete list of members for ATDateTimeOrDerived, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
addDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, const DynamicContext *context) const =0ATDateTimeOrDerived [pure virtual]
addTimezone(const ATDurationOrDerived::Ptr &timezone, const DynamicContext *context) const =0ATDateTimeOrDerived [pure virtual]
addYearMonthDuration(const ATDurationOrDerived::Ptr &yearMonth, const DynamicContext *context) const =0ATDateTimeOrDerived [pure virtual]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asString(const DynamicContext *context) const =0ATDateTimeOrDerived [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
compare(const ATDateTimeOrDerived::Ptr &other, const DynamicContext *context) const =0ATDateTimeOrDerived [pure virtual]
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0ATDateTimeOrDerived [pure virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getDays(const DynamicContext *context) const =0ATDateTimeOrDerived [pure virtual]
getHours(const DynamicContext *context) const =0ATDateTimeOrDerived [pure virtual]
getInterface(const XMLCh *name) const =0Item [pure virtual]
getMinutes(const DynamicContext *context) const =0ATDateTimeOrDerived [pure virtual]
getMonths(const DynamicContext *context) const =0ATDateTimeOrDerived [pure virtual]
getPrimitiveTypeIndex() const =0ATDateTimeOrDerived [pure virtual]
getPrimitiveTypeName() const =0ATDateTimeOrDerived [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getSeconds(const DynamicContext *context) const =0ATDateTimeOrDerived [pure virtual]
getTimezone() const =0ATDateTimeOrDerived [pure virtual]
getTypeName() const =0ATDateTimeOrDerived [pure virtual]
getTypeURI() const =0ATDateTimeOrDerived [pure virtual]
getYears(const DynamicContext *context) const =0ATDateTimeOrDerived [pure virtual]
gXQillaItem [static]
hasTimezone() const =0ATDateTimeOrDerived [pure virtual]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const DateOrTimeType [virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const AnyAtomicType [virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
Item()Item [inline, protected]
NOTATION enum valueAnyAtomicType
NumAtomicObjectTypes enum valueAnyAtomicType
Ptr typedefATDateTimeOrDerived
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
setTimezone(const Timezone::Ptr &timezone, const DynamicContext *context) const =0ATDateTimeOrDerived [pure virtual]
STRING enum valueAnyAtomicType
subtractDateTimeAsDayTimeDuration(const ATDateTimeOrDerived::Ptr &date, const DynamicContext *context) const =0ATDateTimeOrDerived [pure virtual]
subtractDateTimeAsYearMonthDuration(const ATDateTimeOrDerived::Ptr &date, const DynamicContext *context) const =0ATDateTimeOrDerived [pure virtual]
subtractDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, const DynamicContext *context) const =0ATDateTimeOrDerived [pure virtual]
subtractYearMonthDuration(const ATDurationOrDerived::Ptr &yearMonth, const DynamicContext *context) const =0ATDateTimeOrDerived [pure virtual]
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATDateTimeOrDerived.html b/docs/simple-api/classATDateTimeOrDerived.html new file mode 100644 index 00000000..8228bc38 --- /dev/null +++ b/docs/simple-api/classATDateTimeOrDerived.html @@ -0,0 +1,911 @@ + + +XQilla Simple API: ATDateTimeOrDerived Class Reference + + + + + + +

ATDateTimeOrDerived Class Reference

#include <ATDateTimeOrDerived.hpp> +

+Inheritance diagram for ATDateTimeOrDerived:

Inheritance graph
+ + + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef RefCountPointer< const
+ATDateTimeOrDerived
Ptr

Public Member Functions

virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual bool equals (const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0
virtual int compare (const ATDateTimeOrDerived::Ptr &other, const DynamicContext *context) const =0
 Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise.
virtual ATDecimalOrDerived::Ptr getYears (const DynamicContext *context) const =0
 Returns an integer representing the year component of this object.
virtual ATDecimalOrDerived::Ptr getMonths (const DynamicContext *context) const =0
 Returns an integer representing the month component of this object.
virtual ATDecimalOrDerived::Ptr getDays (const DynamicContext *context) const =0
 Returns an integer representing the day component of this object.
virtual ATDecimalOrDerived::Ptr getHours (const DynamicContext *context) const =0
 Returns an integer representing the hour component of this object.
virtual ATDecimalOrDerived::Ptr getMinutes (const DynamicContext *context) const =0
 Returns an integer representing the minute component of this object.
virtual ATDecimalOrDerived::Ptr getSeconds (const DynamicContext *context) const =0
 Returns a decimal representing the second component of this object.
virtual const Timezone::PtrgetTimezone () const =0
 Returns a timezone object representing the timezone component of this object.
virtual bool hasTimezone () const =0
 Returns true if the timezone is defined for this object, false otherwise.
virtual ATDateTimeOrDerived::Ptr setTimezone (const Timezone::Ptr &timezone, const DynamicContext *context) const =0
 Setter for timezone.
virtual ATDateTimeOrDerived::Ptr addTimezone (const ATDurationOrDerived::Ptr &timezone, const DynamicContext *context) const =0
 Returns an ATDateTimeOrDerived with a timezone added to it.
virtual ATDateTimeOrDerived::Ptr addYearMonthDuration (const ATDurationOrDerived::Ptr &yearMonth, const DynamicContext *context) const =0
 Returns a date with the given yearMonthDuration added to it.
virtual ATDateTimeOrDerived::Ptr addDayTimeDuration (const ATDurationOrDerived::Ptr &dayTime, const DynamicContext *context) const =0
 Returns a date with the given dayTimeDuration added to it.
virtual ATDateTimeOrDerived::Ptr subtractYearMonthDuration (const ATDurationOrDerived::Ptr &yearMonth, const DynamicContext *context) const =0
 Returns a date with the given yearMonthDuration subtracted from it.
virtual ATDateTimeOrDerived::Ptr subtractDayTimeDuration (const ATDurationOrDerived::Ptr &dayTime, const DynamicContext *context) const =0
 Returns a date with the given dayTimeDuration subtracted from it.
virtual ATDurationOrDerived::Ptr subtractDateTimeAsDayTimeDuration (const ATDateTimeOrDerived::Ptr &date, const DynamicContext *context) const =0
 Returns a dayTimeDuration corresponding to the difference between this and the given ATDateTimeOrDerived*.
virtual ATDurationOrDerived::Ptr subtractDateTimeAsYearMonthDuration (const ATDateTimeOrDerived::Ptr &date, const DynamicContext *context) const =0
 Returns a dayTimeDuration corresponding to the difference between this and the given ATDateTimeOrDerived*.
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0
+

Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef RefCountPointer<const ATDateTimeOrDerived> ATDateTimeOrDerived::Ptr
+
+ + + + + +
+   + + +

+ +

+Reimplemented from DateOrTimeType.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDateTimeOrDerived::Ptr ATDateTimeOrDerived::addDayTimeDuration const ATDurationOrDerived::Ptr dayTime,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a date with the given dayTimeDuration added to it. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDateTimeOrDerived::Ptr ATDateTimeOrDerived::addTimezone const ATDurationOrDerived::Ptr timezone,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns an ATDateTimeOrDerived with a timezone added to it. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDateTimeOrDerived::Ptr ATDateTimeOrDerived::addYearMonthDuration const ATDurationOrDerived::Ptr yearMonth,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a date with the given yearMonthDuration added to it. +

+

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* ATDateTimeOrDerived::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual int ATDateTimeOrDerived::compare const ATDateTimeOrDerived::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ATDateTimeOrDerived::equals const AnyAtomicType::Ptr target,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ATDateTimeOrDerived::getDays const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns an integer representing the day component of this object. +

+

+

+ + + + +
+ + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ATDateTimeOrDerived::getHours const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns an integer representing the hour component of this object. +

+

+

+ + + + +
+ + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ATDateTimeOrDerived::getMinutes const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns an integer representing the minute component of this object. +

+

+

+ + + + +
+ + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ATDateTimeOrDerived::getMonths const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns an integer representing the month component of this object. +

+

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ATDateTimeOrDerived::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATDateTimeOrDerived::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ATDateTimeOrDerived::getSeconds const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a decimal representing the second component of this object. +

+

+

+ + + + +
+ + + + + + + + +
virtual const Timezone::Ptr& ATDateTimeOrDerived::getTimezone  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a timezone object representing the timezone component of this object. +

+

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATDateTimeOrDerived::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATDateTimeOrDerived::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ATDateTimeOrDerived::getYears const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns an integer representing the year component of this object. +

+

+

+ + + + +
+ + + + + + + + +
virtual bool ATDateTimeOrDerived::hasTimezone  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns true if the timezone is defined for this object, false otherwise. +

+ +

+Implements DateOrTimeType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDateTimeOrDerived::Ptr ATDateTimeOrDerived::setTimezone const Timezone::Ptr timezone,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Setter for timezone. +

+Overrides the current timezone. (Not to be confused with addTimezone().

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDurationOrDerived::Ptr ATDateTimeOrDerived::subtractDateTimeAsDayTimeDuration const ATDateTimeOrDerived::Ptr date,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a dayTimeDuration corresponding to the difference between this and the given ATDateTimeOrDerived*. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDurationOrDerived::Ptr ATDateTimeOrDerived::subtractDateTimeAsYearMonthDuration const ATDateTimeOrDerived::Ptr date,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a dayTimeDuration corresponding to the difference between this and the given ATDateTimeOrDerived*. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDateTimeOrDerived::Ptr ATDateTimeOrDerived::subtractDayTimeDuration const ATDurationOrDerived::Ptr dayTime,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a date with the given dayTimeDuration subtracted from it. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDateTimeOrDerived::Ptr ATDateTimeOrDerived::subtractYearMonthDuration const ATDurationOrDerived::Ptr yearMonth,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a date with the given yearMonthDuration subtracted from it. +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATDateTimeOrDerived__inherit__graph.map b/docs/simple-api/classATDateTimeOrDerived__inherit__graph.map new file mode 100644 index 00000000..7bc53db8 --- /dev/null +++ b/docs/simple-api/classATDateTimeOrDerived__inherit__graph.map @@ -0,0 +1,5 @@ +base referer +rect $classDateOrTimeType.html 24,233 146,257 +rect $classAnyAtomicType.html 28,158 142,182 +rect $classItem.html 61,83 109,107 +rect $classReferenceCounted.html 18,9 152,33 diff --git a/docs/simple-api/classATDateTimeOrDerived__inherit__graph.md5 b/docs/simple-api/classATDateTimeOrDerived__inherit__graph.md5 new file mode 100644 index 00000000..c73730a3 --- /dev/null +++ b/docs/simple-api/classATDateTimeOrDerived__inherit__graph.md5 @@ -0,0 +1 @@ +ff7df788aecdfd326ebe3b25e117ed53 \ No newline at end of file diff --git a/docs/simple-api/classATDateTimeOrDerived__inherit__graph.png b/docs/simple-api/classATDateTimeOrDerived__inherit__graph.png new file mode 100644 index 00000000..e3b51cc3 Binary files /dev/null and b/docs/simple-api/classATDateTimeOrDerived__inherit__graph.png differ diff --git a/docs/simple-api/classATDecimalOrDerived-members.html b/docs/simple-api/classATDecimalOrDerived-members.html new file mode 100644 index 00000000..bae6383c --- /dev/null +++ b/docs/simple-api/classATDecimalOrDerived-members.html @@ -0,0 +1,122 @@ + + +XQilla Simple API: Member List + + + + + + +

ATDecimalOrDerived Member List

This is the complete list of members for ATDecimalOrDerived, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
abs(const DynamicContext *context) const =0ATDecimalOrDerived [pure virtual]
add(const Numeric::Ptr &other, const DynamicContext *context) const =0ATDecimalOrDerived [pure virtual]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asDecimalString(const MAPM &value, int significantDigits, const StaticContext *context)Numeric [static]
asDecimalString(int significantDigits, const StaticContext *context) const Numeric [protected]
asDoubleString(State state, const MAPM &value, int significantDigits, const StaticContext *context)Numeric [static]
asDoubleString(int significantDigits, const StaticContext *context) const Numeric [protected]
asMAPM() const =0ATDecimalOrDerived [pure virtual]
asString(const DynamicContext *context) const =0ATDecimalOrDerived [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const Numeric [protected, virtual]
AnyAtomicType::castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
ceiling(const DynamicContext *context) const =0ATDecimalOrDerived [pure virtual]
checkDoubleLimits(Numeric::State &state, MAPM &value)Numeric [static]
checkFloatLimits(Numeric::State &state, MAPM &value)Numeric [static]
compare(const Numeric::Ptr &other, const DynamicContext *context) const Numeric [virtual]
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
divide(const Numeric::Ptr &other, const DynamicContext *context) const =0ATDecimalOrDerived [pure virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const Numeric [virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
floor(const DynamicContext *context) const =0ATDecimalOrDerived [pure virtual]
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getInterface(const XMLCh *name) const =0Item [pure virtual]
getPrimitiveTypeIndex() const =0ATDecimalOrDerived [pure virtual]
getPrimitiveTypeName() const =0ATDecimalOrDerived [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getState() const =0ATDecimalOrDerived [pure virtual]
getTypeName() const =0ATDecimalOrDerived [pure virtual]
getTypeURI() const =0ATDecimalOrDerived [pure virtual]
greaterThan(const Numeric::Ptr &other, const DynamicContext *context) const Numeric [virtual]
gXQillaItem [static]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
INF enum valueNumeric
INF_stringNumeric [static]
invert(const DynamicContext *context) const =0ATDecimalOrDerived [pure virtual]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const AnyAtomicType [virtual]
isInfinite() const ATDecimalOrDerived [inline, virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNaN() const ATDecimalOrDerived [inline, virtual]
isNegative() const =0ATDecimalOrDerived [pure virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const Numeric [inline, virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
isPositive() const =0ATDecimalOrDerived [pure virtual]
isZero() const =0ATDecimalOrDerived [pure virtual]
Item()Item [inline, protected]
lessThan(const Numeric::Ptr &other, const DynamicContext *context) const Numeric [virtual]
mod(const Numeric::Ptr &other, const DynamicContext *context) const =0ATDecimalOrDerived [pure virtual]
multiply(const Numeric::Ptr &other, const DynamicContext *context) const =0ATDecimalOrDerived [pure virtual]
NaN enum valueNumeric
NAN_stringNumeric [static]
NaN_stringNumeric [static]
NEG_INF enum valueNumeric
NEG_NUM enum valueNumeric
NegINF_stringNumeric [static]
NegZero_stringNumeric [static]
NOTATION enum valueAnyAtomicType
NUM enum valueNumeric
NumAtomicObjectTypes enum valueAnyAtomicType
PosZero_stringNumeric [static]
promoteTypeIfApplicable(const XMLCh *typeURI, const XMLCh *typeName, const DynamicContext *context) const =0ATDecimalOrDerived [pure virtual]
Ptr typedefATDecimalOrDerived
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
round(const DynamicContext *context) const =0ATDecimalOrDerived [pure virtual]
roundHalfToEven(const Numeric::Ptr &precision, const DynamicContext *context) const =0ATDecimalOrDerived [pure virtual]
State enum nameNumeric
STRING enum valueAnyAtomicType
subtract(const Numeric::Ptr &other, const DynamicContext *context) const =0ATDecimalOrDerived [pure virtual]
TIME enum valueAnyAtomicType
treatAsCodepoint(const DynamicContext *context) const =0ATDecimalOrDerived [pure virtual]
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATDecimalOrDerived.html b/docs/simple-api/classATDecimalOrDerived.html new file mode 100644 index 00000000..3cefab8c --- /dev/null +++ b/docs/simple-api/classATDecimalOrDerived.html @@ -0,0 +1,971 @@ + + +XQilla Simple API: ATDecimalOrDerived Class Reference + + + + + + +

ATDecimalOrDerived Class Reference

#include <ATDecimalOrDerived.hpp> +

+Inheritance diagram for ATDecimalOrDerived:

Inheritance graph
+ + + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef RefCountPointer< const
+ATDecimalOrDerived
Ptr

Public Member Functions

virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual Numeric::Ptr promoteTypeIfApplicable (const XMLCh *typeURI, const XMLCh *typeName, const DynamicContext *context) const =0
virtual Numeric::Ptr add (const Numeric::Ptr &other, const DynamicContext *context) const =0
 Returns a Numeric object which is the sum of this and other.
virtual Numeric::Ptr subtract (const Numeric::Ptr &other, const DynamicContext *context) const =0
 Returns a Numeric object which is the difference of this and other.
virtual Numeric::Ptr multiply (const Numeric::Ptr &other, const DynamicContext *context) const =0
 Returns a Numeric object which is the product of this and other.
virtual Numeric::Ptr divide (const Numeric::Ptr &other, const DynamicContext *context) const =0
 Returns a Numeric object which is the quotient of this and other.
virtual Numeric::Ptr mod (const Numeric::Ptr &other, const DynamicContext *context) const =0
 Returns the arithmetic product of its operands as a Numeric.
virtual Numeric::Ptr floor (const DynamicContext *context) const =0
 Returns the floor of this Numeric.
virtual Numeric::Ptr ceiling (const DynamicContext *context) const =0
 Returns the ceiling of this Numeric.
virtual Numeric::Ptr round (const DynamicContext *context) const =0
 Rounds this Numeric.
virtual Numeric::Ptr roundHalfToEven (const Numeric::Ptr &precision, const DynamicContext *context) const =0
 Rounds this Numeric to the given precision, and rounds a half to even.
virtual Numeric::Ptr invert (const DynamicContext *context) const =0
 Returns the Additive inverse of this Numeric.
virtual Numeric::Ptr abs (const DynamicContext *context) const =0
 Returns the absolute value of this Numeric.
virtual bool isZero () const =0
 Does this Numeric have value 0?
virtual bool isNegative () const =0
 Is this Numeric negative?
virtual bool isPositive () const =0
 Is this Numeric positive?
virtual bool isNaN () const
virtual bool isInfinite () const
virtual XMLInt32 treatAsCodepoint (const DynamicContext *context) const =0
 Treat this decimal (must be integer) as a codepoint.
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0
virtual const MAPM & asMAPM () const =0
virtual State getState () const =0
+

Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef RefCountPointer<const ATDecimalOrDerived> ATDecimalOrDerived::Ptr
+
+ + + + + +
+   + + +

+ +

+Reimplemented from Numeric.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual Numeric::Ptr ATDecimalOrDerived::abs const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the absolute value of this Numeric. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr ATDecimalOrDerived::add const Numeric::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a Numeric object which is the sum of this and other. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual const MAPM& ATDecimalOrDerived::asMAPM  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* ATDecimalOrDerived::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + +
virtual Numeric::Ptr ATDecimalOrDerived::ceiling const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the ceiling of this Numeric. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr ATDecimalOrDerived::divide const Numeric::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a Numeric object which is the quotient of this and other. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + +
virtual Numeric::Ptr ATDecimalOrDerived::floor const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the floor of this Numeric. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ATDecimalOrDerived::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATDecimalOrDerived::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual State ATDecimalOrDerived::getState  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATDecimalOrDerived::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATDecimalOrDerived::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + +
virtual Numeric::Ptr ATDecimalOrDerived::invert const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the Additive inverse of this Numeric. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual bool ATDecimalOrDerived::isInfinite  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual bool ATDecimalOrDerived::isNaN  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual bool ATDecimalOrDerived::isNegative  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Is this Numeric negative? +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual bool ATDecimalOrDerived::isPositive  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Is this Numeric positive? +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual bool ATDecimalOrDerived::isZero  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Does this Numeric have value 0? +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr ATDecimalOrDerived::mod const Numeric::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the arithmetic product of its operands as a Numeric. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr ATDecimalOrDerived::multiply const Numeric::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a Numeric object which is the product of this and other. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr ATDecimalOrDerived::promoteTypeIfApplicable const XMLCh *  typeURI,
const XMLCh *  typeName,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + +
virtual Numeric::Ptr ATDecimalOrDerived::round const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Rounds this Numeric. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr ATDecimalOrDerived::roundHalfToEven const Numeric::Ptr precision,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Rounds this Numeric to the given precision, and rounds a half to even. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr ATDecimalOrDerived::subtract const Numeric::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a Numeric object which is the difference of this and other. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + +
virtual XMLInt32 ATDecimalOrDerived::treatAsCodepoint const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Treat this decimal (must be integer) as a codepoint. +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATDecimalOrDerived__inherit__graph.map b/docs/simple-api/classATDecimalOrDerived__inherit__graph.map new file mode 100644 index 00000000..80adccc3 --- /dev/null +++ b/docs/simple-api/classATDecimalOrDerived__inherit__graph.map @@ -0,0 +1,5 @@ +base referer +rect $classNumeric.html 45,233 117,257 +rect $classAnyAtomicType.html 24,158 138,182 +rect $classItem.html 57,83 105,107 +rect $classReferenceCounted.html 14,9 148,33 diff --git a/docs/simple-api/classATDecimalOrDerived__inherit__graph.md5 b/docs/simple-api/classATDecimalOrDerived__inherit__graph.md5 new file mode 100644 index 00000000..5cad7d02 --- /dev/null +++ b/docs/simple-api/classATDecimalOrDerived__inherit__graph.md5 @@ -0,0 +1 @@ +1ce96cad8c0eed4b86525ed3ecc305db \ No newline at end of file diff --git a/docs/simple-api/classATDecimalOrDerived__inherit__graph.png b/docs/simple-api/classATDecimalOrDerived__inherit__graph.png new file mode 100644 index 00000000..646ec4e8 Binary files /dev/null and b/docs/simple-api/classATDecimalOrDerived__inherit__graph.png differ diff --git a/docs/simple-api/classATDoubleOrDerived-members.html b/docs/simple-api/classATDoubleOrDerived-members.html new file mode 100644 index 00000000..8c3ba146 --- /dev/null +++ b/docs/simple-api/classATDoubleOrDerived-members.html @@ -0,0 +1,121 @@ + + +XQilla Simple API: Member List + + + + + + +

ATDoubleOrDerived Member List

This is the complete list of members for ATDoubleOrDerived, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
abs(const DynamicContext *context) const =0ATDoubleOrDerived [pure virtual]
add(const Numeric::Ptr &other, const DynamicContext *context) const =0ATDoubleOrDerived [pure virtual]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asDecimalString(const MAPM &value, int significantDigits, const StaticContext *context)Numeric [static]
asDecimalString(int significantDigits, const StaticContext *context) const Numeric [protected]
asDoubleString(State state, const MAPM &value, int significantDigits, const StaticContext *context)Numeric [static]
asDoubleString(int significantDigits, const StaticContext *context) const Numeric [protected]
asMAPM() const =0ATDoubleOrDerived [pure virtual]
asString(const DynamicContext *context) const =0ATDoubleOrDerived [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const Numeric [protected, virtual]
AnyAtomicType::castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
ceiling(const DynamicContext *context) const =0ATDoubleOrDerived [pure virtual]
checkDoubleLimits(Numeric::State &state, MAPM &value)Numeric [static]
checkFloatLimits(Numeric::State &state, MAPM &value)Numeric [static]
compare(const Numeric::Ptr &other, const DynamicContext *context) const Numeric [virtual]
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
divide(const Numeric::Ptr &other, const DynamicContext *context) const =0ATDoubleOrDerived [pure virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const Numeric [virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
floor(const DynamicContext *context) const =0ATDoubleOrDerived [pure virtual]
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getInterface(const XMLCh *name) const =0Item [pure virtual]
getPrimitiveTypeIndex() const =0ATDoubleOrDerived [pure virtual]
getPrimitiveTypeName() const =0ATDoubleOrDerived [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getState() const =0ATDoubleOrDerived [pure virtual]
getTypeName() const =0ATDoubleOrDerived [pure virtual]
getTypeURI() const =0ATDoubleOrDerived [pure virtual]
greaterThan(const Numeric::Ptr &other, const DynamicContext *context) const Numeric [virtual]
gXQillaItem [static]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
INF enum valueNumeric
INF_stringNumeric [static]
invert(const DynamicContext *context) const =0ATDoubleOrDerived [pure virtual]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const AnyAtomicType [virtual]
isInfinite() const =0ATDoubleOrDerived [pure virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNaN() const =0ATDoubleOrDerived [pure virtual]
isNegative() const =0Numeric [pure virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const Numeric [inline, virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
isPositive() const =0ATDoubleOrDerived [pure virtual]
isZero() const =0ATDoubleOrDerived [pure virtual]
Item()Item [inline, protected]
lessThan(const Numeric::Ptr &other, const DynamicContext *context) const Numeric [virtual]
mod(const Numeric::Ptr &other, const DynamicContext *context) const =0ATDoubleOrDerived [pure virtual]
multiply(const Numeric::Ptr &other, const DynamicContext *context) const =0ATDoubleOrDerived [pure virtual]
NaN enum valueNumeric
NaN_stringNumeric [static]
NAN_stringNumeric [static]
NEG_INF enum valueNumeric
NEG_NUM enum valueNumeric
NegINF_stringNumeric [static]
NegZero_stringNumeric [static]
NOTATION enum valueAnyAtomicType
NUM enum valueNumeric
NumAtomicObjectTypes enum valueAnyAtomicType
PosZero_stringNumeric [static]
promoteTypeIfApplicable(const XMLCh *typeURI, const XMLCh *typeName, const DynamicContext *context) const =0ATDoubleOrDerived [pure virtual]
Ptr typedefATDoubleOrDerived
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
round(const DynamicContext *context) const =0ATDoubleOrDerived [pure virtual]
roundHalfToEven(const Numeric::Ptr &precision, const DynamicContext *context) const =0ATDoubleOrDerived [pure virtual]
State enum nameNumeric
STRING enum valueAnyAtomicType
subtract(const Numeric::Ptr &other, const DynamicContext *context) const =0ATDoubleOrDerived [pure virtual]
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATDoubleOrDerived.html b/docs/simple-api/classATDoubleOrDerived.html new file mode 100644 index 00000000..6fcea1ea --- /dev/null +++ b/docs/simple-api/classATDoubleOrDerived.html @@ -0,0 +1,904 @@ + + +XQilla Simple API: ATDoubleOrDerived Class Reference + + + + + + +

ATDoubleOrDerived Class Reference

#include <ATDoubleOrDerived.hpp> +

+Inheritance diagram for ATDoubleOrDerived:

Inheritance graph
+ + + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef RefCountPointer< const
+ATDoubleOrDerived
Ptr

Public Member Functions

virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual Numeric::Ptr promoteTypeIfApplicable (const XMLCh *typeURI, const XMLCh *typeName, const DynamicContext *context) const =0
virtual Numeric::Ptr add (const Numeric::Ptr &other, const DynamicContext *context) const =0
 Returns a Numeric object which is the sum of this and other.
virtual Numeric::Ptr subtract (const Numeric::Ptr &other, const DynamicContext *context) const =0
 Returns a Numeric object which is the difference of this and other.
virtual Numeric::Ptr multiply (const Numeric::Ptr &other, const DynamicContext *context) const =0
 Returns a Numeric object which is the product of this and other.
virtual Numeric::Ptr divide (const Numeric::Ptr &other, const DynamicContext *context) const =0
 Returns a Numeric object which is the quotient of this and other.
virtual Numeric::Ptr mod (const Numeric::Ptr &other, const DynamicContext *context) const =0
 Returns the arithmetic product of its operands as a Numeric.
virtual Numeric::Ptr floor (const DynamicContext *context) const =0
 Returns the floor of this Numeric.
virtual Numeric::Ptr ceiling (const DynamicContext *context) const =0
 Returns the ceiling of this Numeric.
virtual Numeric::Ptr round (const DynamicContext *context) const =0
 Rounds this Numeric.
virtual Numeric::Ptr roundHalfToEven (const Numeric::Ptr &precision, const DynamicContext *context) const =0
 Rounds this Numeric to the given precision, and rounds a half to even.
virtual Numeric::Ptr invert (const DynamicContext *context) const =0
 Returns the Additive inverse of this Numeric.
virtual Numeric::Ptr abs (const DynamicContext *context) const =0
 Returns the absolute value of this Numeric.
virtual bool isNaN () const =0
virtual bool isInfinite () const =0
virtual bool isZero () const =0
 Does this Numeric have value 0?
virtual bool isPositive () const =0
 Is this Numeric positive?
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0
virtual const MAPM & asMAPM () const =0
virtual State getState () const =0
+

Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef RefCountPointer<const ATDoubleOrDerived> ATDoubleOrDerived::Ptr
+
+ + + + + +
+   + + +

+ +

+Reimplemented from Numeric.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual Numeric::Ptr ATDoubleOrDerived::abs const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the absolute value of this Numeric. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr ATDoubleOrDerived::add const Numeric::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a Numeric object which is the sum of this and other. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual const MAPM& ATDoubleOrDerived::asMAPM  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* ATDoubleOrDerived::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + +
virtual Numeric::Ptr ATDoubleOrDerived::ceiling const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the ceiling of this Numeric. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr ATDoubleOrDerived::divide const Numeric::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a Numeric object which is the quotient of this and other. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + +
virtual Numeric::Ptr ATDoubleOrDerived::floor const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the floor of this Numeric. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ATDoubleOrDerived::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATDoubleOrDerived::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual State ATDoubleOrDerived::getState  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATDoubleOrDerived::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATDoubleOrDerived::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + +
virtual Numeric::Ptr ATDoubleOrDerived::invert const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the Additive inverse of this Numeric. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual bool ATDoubleOrDerived::isInfinite  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual bool ATDoubleOrDerived::isNaN  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual bool ATDoubleOrDerived::isPositive  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Is this Numeric positive? +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual bool ATDoubleOrDerived::isZero  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Does this Numeric have value 0? +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr ATDoubleOrDerived::mod const Numeric::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the arithmetic product of its operands as a Numeric. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr ATDoubleOrDerived::multiply const Numeric::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a Numeric object which is the product of this and other. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr ATDoubleOrDerived::promoteTypeIfApplicable const XMLCh *  typeURI,
const XMLCh *  typeName,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + +
virtual Numeric::Ptr ATDoubleOrDerived::round const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Rounds this Numeric. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr ATDoubleOrDerived::roundHalfToEven const Numeric::Ptr precision,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Rounds this Numeric to the given precision, and rounds a half to even. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr ATDoubleOrDerived::subtract const Numeric::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a Numeric object which is the difference of this and other. +

+ +

+Implements Numeric.

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATDoubleOrDerived__inherit__graph.map b/docs/simple-api/classATDoubleOrDerived__inherit__graph.map new file mode 100644 index 00000000..6e1835e6 --- /dev/null +++ b/docs/simple-api/classATDoubleOrDerived__inherit__graph.map @@ -0,0 +1,5 @@ +base referer +rect $classNumeric.html 42,233 114,257 +rect $classAnyAtomicType.html 21,158 135,182 +rect $classItem.html 54,83 102,107 +rect $classReferenceCounted.html 11,9 145,33 diff --git a/docs/simple-api/classATDoubleOrDerived__inherit__graph.md5 b/docs/simple-api/classATDoubleOrDerived__inherit__graph.md5 new file mode 100644 index 00000000..21806a86 --- /dev/null +++ b/docs/simple-api/classATDoubleOrDerived__inherit__graph.md5 @@ -0,0 +1 @@ +4631fdc2485edd6fa01e89ad8dbd7702 \ No newline at end of file diff --git a/docs/simple-api/classATDoubleOrDerived__inherit__graph.png b/docs/simple-api/classATDoubleOrDerived__inherit__graph.png new file mode 100644 index 00000000..9173cb88 Binary files /dev/null and b/docs/simple-api/classATDoubleOrDerived__inherit__graph.png differ diff --git a/docs/simple-api/classATDurationOrDerived-members.html b/docs/simple-api/classATDurationOrDerived-members.html new file mode 100644 index 00000000..0c19fffa --- /dev/null +++ b/docs/simple-api/classATDurationOrDerived-members.html @@ -0,0 +1,103 @@ + + +XQilla Simple API: Member List + + + + + + +

ATDurationOrDerived Member List

This is the complete list of members for ATDurationOrDerived, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
add(const ATDurationOrDerived::Ptr &other, const DynamicContext *context) const =0ATDurationOrDerived [pure virtual]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asMonths(const DynamicContext *context) const =0ATDurationOrDerived [pure virtual]
asSeconds(const DynamicContext *context) const =0ATDurationOrDerived [pure virtual]
asString(const DynamicContext *context) const =0ATDurationOrDerived [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
compare(const ATDurationOrDerived::Ptr &other, const DynamicContext *context) const =0ATDurationOrDerived [pure virtual]
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
divide(const Numeric::Ptr &divisor, const DynamicContext *context) const =0ATDurationOrDerived [pure virtual]
divide(const ATDurationOrDerived::Ptr &divisor, const DynamicContext *context) const =0ATDurationOrDerived [pure virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0ATDurationOrDerived [pure virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
fgDT_DAYTIMEDURATIONATDurationOrDerived [static]
fgDT_DAYTIMEDURATION_XERCESHASHATDurationOrDerived [static]
fgDT_YEARMONTHDURATIONATDurationOrDerived [static]
fgDT_YEARMONTHDURATION_XERCESHASHATDurationOrDerived [static]
FLOAT enum valueAnyAtomicType
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getDays(const DynamicContext *context) const =0ATDurationOrDerived [pure virtual]
getHours(const DynamicContext *context) const =0ATDurationOrDerived [pure virtual]
getInterface(const XMLCh *name) const =0Item [pure virtual]
getMinutes(const DynamicContext *context) const =0ATDurationOrDerived [pure virtual]
getMonths(const DynamicContext *context) const =0ATDurationOrDerived [pure virtual]
getPrimitiveTypeIndex() const =0ATDurationOrDerived [pure virtual]
getPrimitiveTypeName() const =0ATDurationOrDerived [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getSeconds(const DynamicContext *context) const =0ATDurationOrDerived [pure virtual]
getTypeName() const =0ATDurationOrDerived [pure virtual]
getTypeURI() const =0ATDurationOrDerived [pure virtual]
getYears(const DynamicContext *context) const =0ATDurationOrDerived [pure virtual]
gXQillaItem [static]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const AnyAtomicType [virtual]
isDayTimeDuration() const =0ATDurationOrDerived [pure virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNegative() const =0ATDurationOrDerived [pure virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const AnyAtomicType [virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
isYearMonthDuration() const =0ATDurationOrDerived [pure virtual]
Item()Item [inline, protected]
multiply(const Numeric::Ptr &divisor, const DynamicContext *context) const =0ATDurationOrDerived [pure virtual]
NOTATION enum valueAnyAtomicType
NumAtomicObjectTypes enum valueAnyAtomicType
pattern_DT_DAYTIMEDURATIONATDurationOrDerived [static]
pattern_DT_YEARMONTHDURATIONATDurationOrDerived [static]
Ptr typedefATDurationOrDerived
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
STRING enum valueAnyAtomicType
subtract(const ATDurationOrDerived::Ptr &other, const DynamicContext *context) const =0ATDurationOrDerived [pure virtual]
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATDurationOrDerived.html b/docs/simple-api/classATDurationOrDerived.html new file mode 100644 index 00000000..e5aefd88 --- /dev/null +++ b/docs/simple-api/classATDurationOrDerived.html @@ -0,0 +1,1020 @@ + + +XQilla Simple API: ATDurationOrDerived Class Reference + + + + + + +

ATDurationOrDerived Class Reference

#include <ATDurationOrDerived.hpp> +

+Inheritance diagram for ATDurationOrDerived:

Inheritance graph
+ + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef RefCountPointer< const
+ATDurationOrDerived
Ptr

Public Member Functions

virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual bool isDayTimeDuration () const =0
virtual bool isYearMonthDuration () const =0
virtual bool equals (const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0
virtual int compare (const ATDurationOrDerived::Ptr &other, const DynamicContext *context) const =0
 Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise.
virtual ATDurationOrDerived::Ptr divide (const Numeric::Ptr &divisor, const DynamicContext *context) const =0
 Divide this duration by a number -- only available for xdt:dayTimeDuration and xdt:yearMonthDuration.
virtual ATDecimalOrDerived::Ptr divide (const ATDurationOrDerived::Ptr &divisor, const DynamicContext *context) const =0
 Divide this duration by a duration -- only available for xdt:dayTimeDuration and xdt:yearMonthDuration.
virtual ATDurationOrDerived::Ptr multiply (const Numeric::Ptr &divisor, const DynamicContext *context) const =0
 Multiply this duration by a number -- only available for xdt:dayTimeDuration and xdt:yearMonthDuration.
virtual ATDurationOrDerived::Ptr add (const ATDurationOrDerived::Ptr &other, const DynamicContext *context) const =0
 Add a duration to this duration -- only available for xdt:dayTimeDuration and xdt:yearMonthDuration.
virtual ATDurationOrDerived::Ptr subtract (const ATDurationOrDerived::Ptr &other, const DynamicContext *context) const =0
 Subtract a duration from this duration -- only available for xdt:dayTimeDuration and xdt:yearMonthDuration.
virtual ATDecimalOrDerived::Ptr getYears (const DynamicContext *context) const =0
 Returns the year portion of this duration.
virtual ATDecimalOrDerived::Ptr getMonths (const DynamicContext *context) const =0
 Returns the month portion of this duration.
virtual ATDecimalOrDerived::Ptr getDays (const DynamicContext *context) const =0
 Returns the days portion of this duration.
virtual ATDecimalOrDerived::Ptr getHours (const DynamicContext *context) const =0
 Returns the hours portion of this duration.
virtual ATDecimalOrDerived::Ptr getMinutes (const DynamicContext *context) const =0
 Returns the minutes portion of this duration.
virtual ATDecimalOrDerived::Ptr getSeconds (const DynamicContext *context) const =0
 Returns the seconds portion of this duration.
virtual ATDecimalOrDerived::Ptr asSeconds (const DynamicContext *context) const =0
virtual ATDecimalOrDerived::Ptr asMonths (const DynamicContext *context) const =0
virtual bool isNegative () const =0
 Returns true if this Duration is negative, false otherwise.
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0

Static Public Attributes

static const XMLCh fgDT_DAYTIMEDURATION []
static const XMLCh fgDT_DAYTIMEDURATION_XERCESHASH []
static const XMLCh pattern_DT_DAYTIMEDURATION []
static const XMLCh fgDT_YEARMONTHDURATION []
static const XMLCh fgDT_YEARMONTHDURATION_XERCESHASH []
static const XMLCh pattern_DT_YEARMONTHDURATION []
+

Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef RefCountPointer<const ATDurationOrDerived> ATDurationOrDerived::Ptr
+
+ + + + + +
+   + + +

+ +

+Reimplemented from AnyAtomicType.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDurationOrDerived::Ptr ATDurationOrDerived::add const ATDurationOrDerived::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Add a duration to this duration -- only available for xdt:dayTimeDuration and xdt:yearMonthDuration. +

+

+

+ + + + +
+ + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ATDurationOrDerived::asMonths const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ATDurationOrDerived::asSeconds const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* ATDurationOrDerived::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual int ATDurationOrDerived::compare const ATDurationOrDerived::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ATDurationOrDerived::divide const ATDurationOrDerived::Ptr divisor,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Divide this duration by a duration -- only available for xdt:dayTimeDuration and xdt:yearMonthDuration. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDurationOrDerived::Ptr ATDurationOrDerived::divide const Numeric::Ptr divisor,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Divide this duration by a number -- only available for xdt:dayTimeDuration and xdt:yearMonthDuration. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ATDurationOrDerived::equals const AnyAtomicType::Ptr target,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ATDurationOrDerived::getDays const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the days portion of this duration. +

+

+

+ + + + +
+ + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ATDurationOrDerived::getHours const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the hours portion of this duration. +

+

+

+ + + + +
+ + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ATDurationOrDerived::getMinutes const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the minutes portion of this duration. +

+

+

+ + + + +
+ + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ATDurationOrDerived::getMonths const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the month portion of this duration. +

+

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ATDurationOrDerived::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATDurationOrDerived::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ATDurationOrDerived::getSeconds const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the seconds portion of this duration. +

+

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATDurationOrDerived::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATDurationOrDerived::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ATDurationOrDerived::getYears const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the year portion of this duration. +

+

+

+ + + + +
+ + + + + + + + +
virtual bool ATDurationOrDerived::isDayTimeDuration  )  const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual bool ATDurationOrDerived::isNegative  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns true if this Duration is negative, false otherwise. +

+

+

+ + + + +
+ + + + + + + + +
virtual bool ATDurationOrDerived::isYearMonthDuration  )  const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDurationOrDerived::Ptr ATDurationOrDerived::multiply const Numeric::Ptr divisor,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Multiply this duration by a number -- only available for xdt:dayTimeDuration and xdt:yearMonthDuration. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDurationOrDerived::Ptr ATDurationOrDerived::subtract const ATDurationOrDerived::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Subtract a duration from this duration -- only available for xdt:dayTimeDuration and xdt:yearMonthDuration. +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
const XMLCh ATDurationOrDerived::fgDT_DAYTIMEDURATION[] [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const XMLCh ATDurationOrDerived::fgDT_DAYTIMEDURATION_XERCESHASH[] [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const XMLCh ATDurationOrDerived::fgDT_YEARMONTHDURATION[] [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const XMLCh ATDurationOrDerived::fgDT_YEARMONTHDURATION_XERCESHASH[] [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const XMLCh ATDurationOrDerived::pattern_DT_DAYTIMEDURATION[] [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const XMLCh ATDurationOrDerived::pattern_DT_YEARMONTHDURATION[] [static]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATDurationOrDerived__inherit__graph.map b/docs/simple-api/classATDurationOrDerived__inherit__graph.map new file mode 100644 index 00000000..fcb9c8d5 --- /dev/null +++ b/docs/simple-api/classATDurationOrDerived__inherit__graph.map @@ -0,0 +1,4 @@ +base referer +rect $classAnyAtomicType.html 25,158 139,182 +rect $classItem.html 58,84 106,108 +rect $classReferenceCounted.html 15,9 149,33 diff --git a/docs/simple-api/classATDurationOrDerived__inherit__graph.md5 b/docs/simple-api/classATDurationOrDerived__inherit__graph.md5 new file mode 100644 index 00000000..381edf4b --- /dev/null +++ b/docs/simple-api/classATDurationOrDerived__inherit__graph.md5 @@ -0,0 +1 @@ +ada1b0edebde2e51ec927bc46181827f \ No newline at end of file diff --git a/docs/simple-api/classATDurationOrDerived__inherit__graph.png b/docs/simple-api/classATDurationOrDerived__inherit__graph.png new file mode 100644 index 00000000..51fd9a50 Binary files /dev/null and b/docs/simple-api/classATDurationOrDerived__inherit__graph.png differ diff --git a/docs/simple-api/classATFloatOrDerived-members.html b/docs/simple-api/classATFloatOrDerived-members.html new file mode 100644 index 00000000..6a954851 --- /dev/null +++ b/docs/simple-api/classATFloatOrDerived-members.html @@ -0,0 +1,120 @@ + + +XQilla Simple API: Member List + + + + + + +

ATFloatOrDerived Member List

This is the complete list of members for ATFloatOrDerived, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
add(const Numeric::Ptr &other, const DynamicContext *context) const =0ATFloatOrDerived [pure virtual]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asDecimalString(const MAPM &value, int significantDigits, const StaticContext *context)Numeric [static]
asDecimalString(int significantDigits, const StaticContext *context) const Numeric [protected]
asDoubleString(State state, const MAPM &value, int significantDigits, const StaticContext *context)Numeric [static]
asDoubleString(int significantDigits, const StaticContext *context) const Numeric [protected]
asMAPM() const =0ATFloatOrDerived [pure virtual]
asString(const DynamicContext *context) const =0ATFloatOrDerived [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const Numeric [protected, virtual]
AnyAtomicType::castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
ceiling(const DynamicContext *context) const =0ATFloatOrDerived [pure virtual]
checkDoubleLimits(Numeric::State &state, MAPM &value)Numeric [static]
checkFloatLimits(Numeric::State &state, MAPM &value)Numeric [static]
compare(const Numeric::Ptr &other, const DynamicContext *context) const Numeric [virtual]
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
divide(const Numeric::Ptr &other, const DynamicContext *context) const =0ATFloatOrDerived [pure virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const Numeric [virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
floor(const DynamicContext *context) const =0ATFloatOrDerived [pure virtual]
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getInterface(const XMLCh *name) const =0Item [pure virtual]
getPrimitiveTypeIndex() const =0ATFloatOrDerived [pure virtual]
getPrimitiveTypeName() const =0ATFloatOrDerived [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getState() const =0ATFloatOrDerived [pure virtual]
getTypeName() const =0ATFloatOrDerived [pure virtual]
getTypeURI() const =0ATFloatOrDerived [pure virtual]
greaterThan(const Numeric::Ptr &other, const DynamicContext *context) const Numeric [virtual]
gXQillaItem [static]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
INF enum valueNumeric
INF_stringNumeric [static]
invert(const DynamicContext *context) const =0ATFloatOrDerived [pure virtual]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const AnyAtomicType [virtual]
isInfinite() const =0ATFloatOrDerived [pure virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNaN() const =0ATFloatOrDerived [pure virtual]
isNegative() const =0ATFloatOrDerived [pure virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const Numeric [inline, virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
isPositive() const =0ATFloatOrDerived [pure virtual]
isZero() const =0ATFloatOrDerived [pure virtual]
Item()Item [inline, protected]
lessThan(const Numeric::Ptr &other, const DynamicContext *context) const Numeric [virtual]
mod(const Numeric::Ptr &other, const DynamicContext *context) const =0ATFloatOrDerived [pure virtual]
multiply(const Numeric::Ptr &other, const DynamicContext *context) const =0ATFloatOrDerived [pure virtual]
NaN enum valueNumeric
NaN_stringNumeric [static]
NAN_stringNumeric [static]
NEG_INF enum valueNumeric
NEG_NUM enum valueNumeric
NegINF_stringNumeric [static]
NegZero_stringNumeric [static]
NOTATION enum valueAnyAtomicType
NUM enum valueNumeric
NumAtomicObjectTypes enum valueAnyAtomicType
PosZero_stringNumeric [static]
promoteTypeIfApplicable(const XMLCh *typeURI, const XMLCh *typeName, const DynamicContext *context) const =0ATFloatOrDerived [pure virtual]
Ptr typedefATFloatOrDerived
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
round(const DynamicContext *context) const =0ATFloatOrDerived [pure virtual]
roundHalfToEven(const Numeric::Ptr &precision, const DynamicContext *context) const =0ATFloatOrDerived [pure virtual]
State enum nameNumeric
STRING enum valueAnyAtomicType
subtract(const Numeric::Ptr &other, const DynamicContext *context) const =0ATFloatOrDerived [pure virtual]
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATFloatOrDerived.html b/docs/simple-api/classATFloatOrDerived.html new file mode 100644 index 00000000..8dc26175 --- /dev/null +++ b/docs/simple-api/classATFloatOrDerived.html @@ -0,0 +1,905 @@ + + +XQilla Simple API: ATFloatOrDerived Class Reference + + + + + + +

ATFloatOrDerived Class Reference

#include <ATFloatOrDerived.hpp> +

+Inheritance diagram for ATFloatOrDerived:

Inheritance graph
+ + + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef RefCountPointer< const
+ATFloatOrDerived
Ptr

Public Member Functions

virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual Numeric::Ptr promoteTypeIfApplicable (const XMLCh *typeURI, const XMLCh *typeName, const DynamicContext *context) const =0
virtual Numeric::Ptr add (const Numeric::Ptr &other, const DynamicContext *context) const =0
 Returns a Numeric object which is the sum of this and other.
virtual Numeric::Ptr subtract (const Numeric::Ptr &other, const DynamicContext *context) const =0
 Returns a Numeric object which is the difference of this and other.
virtual Numeric::Ptr multiply (const Numeric::Ptr &other, const DynamicContext *context) const =0
 Returns a Numeric object which is the product of this and other.
virtual Numeric::Ptr divide (const Numeric::Ptr &other, const DynamicContext *context) const =0
 Returns a Numeric object which is the quotient of this and other.
virtual Numeric::Ptr mod (const Numeric::Ptr &other, const DynamicContext *context) const =0
 Returns the arithmetic product of its operands as a Numeric.
virtual Numeric::Ptr floor (const DynamicContext *context) const =0
 Returns the floor of this Numeric.
virtual Numeric::Ptr ceiling (const DynamicContext *context) const =0
 Returns the ceiling of this Numeric.
virtual Numeric::Ptr round (const DynamicContext *context) const =0
 Rounds this Numeric.
virtual Numeric::Ptr roundHalfToEven (const Numeric::Ptr &precision, const DynamicContext *context) const =0
 Rounds this Numeric to the given precision, and rounds a half to even.
virtual Numeric::Ptr invert (const DynamicContext *context) const =0
 Returns the Additive inverse of this Numeric.
virtual bool isNaN () const =0
virtual bool isInfinite () const =0
virtual bool isZero () const =0
 Does this Numeric have value 0?
virtual bool isPositive () const =0
 Is this Numeric positive?
virtual bool isNegative () const =0
 Is this Numeric negative?
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0
virtual const MAPM & asMAPM () const =0
virtual State getState () const =0
+

Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef RefCountPointer<const ATFloatOrDerived> ATFloatOrDerived::Ptr
+
+ + + + + +
+   + + +

+ +

+Reimplemented from Numeric.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr ATFloatOrDerived::add const Numeric::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a Numeric object which is the sum of this and other. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual const MAPM& ATFloatOrDerived::asMAPM  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* ATFloatOrDerived::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + +
virtual Numeric::Ptr ATFloatOrDerived::ceiling const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the ceiling of this Numeric. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr ATFloatOrDerived::divide const Numeric::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a Numeric object which is the quotient of this and other. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + +
virtual Numeric::Ptr ATFloatOrDerived::floor const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the floor of this Numeric. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ATFloatOrDerived::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATFloatOrDerived::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual State ATFloatOrDerived::getState  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATFloatOrDerived::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATFloatOrDerived::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + +
virtual Numeric::Ptr ATFloatOrDerived::invert const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the Additive inverse of this Numeric. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual bool ATFloatOrDerived::isInfinite  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual bool ATFloatOrDerived::isNaN  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual bool ATFloatOrDerived::isNegative  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Is this Numeric negative? +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual bool ATFloatOrDerived::isPositive  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Is this Numeric positive? +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + +
virtual bool ATFloatOrDerived::isZero  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Does this Numeric have value 0? +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr ATFloatOrDerived::mod const Numeric::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the arithmetic product of its operands as a Numeric. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr ATFloatOrDerived::multiply const Numeric::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a Numeric object which is the product of this and other. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr ATFloatOrDerived::promoteTypeIfApplicable const XMLCh *  typeURI,
const XMLCh *  typeName,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + +
virtual Numeric::Ptr ATFloatOrDerived::round const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Rounds this Numeric. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr ATFloatOrDerived::roundHalfToEven const Numeric::Ptr precision,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Rounds this Numeric to the given precision, and rounds a half to even. +

+ +

+Implements Numeric.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr ATFloatOrDerived::subtract const Numeric::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a Numeric object which is the difference of this and other. +

+ +

+Implements Numeric.

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATFloatOrDerived__inherit__graph.map b/docs/simple-api/classATFloatOrDerived__inherit__graph.map new file mode 100644 index 00000000..9f9ce891 --- /dev/null +++ b/docs/simple-api/classATFloatOrDerived__inherit__graph.map @@ -0,0 +1,5 @@ +base referer +rect $classNumeric.html 38,233 110,257 +rect $classAnyAtomicType.html 17,158 131,182 +rect $classItem.html 50,83 98,107 +rect $classReferenceCounted.html 7,9 141,33 diff --git a/docs/simple-api/classATFloatOrDerived__inherit__graph.md5 b/docs/simple-api/classATFloatOrDerived__inherit__graph.md5 new file mode 100644 index 00000000..678c191b --- /dev/null +++ b/docs/simple-api/classATFloatOrDerived__inherit__graph.md5 @@ -0,0 +1 @@ +cee102eb64dfe8324a4e3586e0523cb1 \ No newline at end of file diff --git a/docs/simple-api/classATFloatOrDerived__inherit__graph.png b/docs/simple-api/classATFloatOrDerived__inherit__graph.png new file mode 100644 index 00000000..e9406360 Binary files /dev/null and b/docs/simple-api/classATFloatOrDerived__inherit__graph.png differ diff --git a/docs/simple-api/classATGDayOrDerived-members.html b/docs/simple-api/classATGDayOrDerived-members.html new file mode 100644 index 00000000..7d22835b --- /dev/null +++ b/docs/simple-api/classATGDayOrDerived-members.html @@ -0,0 +1,83 @@ + + +XQilla Simple API: Member List + + + + + + +

ATGDayOrDerived Member List

This is the complete list of members for ATGDayOrDerived, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asString(const DynamicContext *context) const =0ATGDayOrDerived [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
compare(const ATGDayOrDerived::Ptr &other, const DynamicContext *context) const =0ATGDayOrDerived [pure virtual]
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0ATGDayOrDerived [pure virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getInterface(const XMLCh *name) const =0Item [pure virtual]
getPrimitiveTypeIndex() const =0ATGDayOrDerived [pure virtual]
getPrimitiveTypeName() const =0ATGDayOrDerived [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getTypeName() const =0ATGDayOrDerived [pure virtual]
getTypeURI() const =0ATGDayOrDerived [pure virtual]
gXQillaItem [static]
hasTimezone() const =0ATGDayOrDerived [pure virtual]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const DateOrTimeType [virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const AnyAtomicType [virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
Item()Item [inline, protected]
NOTATION enum valueAnyAtomicType
NumAtomicObjectTypes enum valueAnyAtomicType
Ptr typedefATGDayOrDerived
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
setTimezone(const Timezone::Ptr &timezone, const DynamicContext *context) const =0ATGDayOrDerived [pure virtual]
STRING enum valueAnyAtomicType
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATGDayOrDerived.html b/docs/simple-api/classATGDayOrDerived.html new file mode 100644 index 00000000..8ac0f7af --- /dev/null +++ b/docs/simple-api/classATGDayOrDerived.html @@ -0,0 +1,387 @@ + + +XQilla Simple API: ATGDayOrDerived Class Reference + + + + + + +

ATGDayOrDerived Class Reference

#include <ATGDayOrDerived.hpp> +

+Inheritance diagram for ATGDayOrDerived:

Inheritance graph
+ + + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef RefCountPointer< const
+ATGDayOrDerived
Ptr

Public Member Functions

virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual bool equals (const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0
virtual int compare (const ATGDayOrDerived::Ptr &other, const DynamicContext *context) const =0
 Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise.
virtual bool hasTimezone () const =0
 Returns true if a timezone is defined for this.
virtual ATGDayOrDerived::Ptr setTimezone (const Timezone::Ptr &timezone, const DynamicContext *context) const =0
 Sets the timezone to the given timezone.
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0
+

Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef RefCountPointer<const ATGDayOrDerived> ATGDayOrDerived::Ptr
+
+ + + + + +
+   + + +

+ +

+Reimplemented from DateOrTimeType.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* ATGDayOrDerived::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual int ATGDayOrDerived::compare const ATGDayOrDerived::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ATGDayOrDerived::equals const AnyAtomicType::Ptr target,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ATGDayOrDerived::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATGDayOrDerived::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATGDayOrDerived::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATGDayOrDerived::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual bool ATGDayOrDerived::hasTimezone  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns true if a timezone is defined for this. +

+False otherwise. +

+Implements DateOrTimeType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATGDayOrDerived::Ptr ATGDayOrDerived::setTimezone const Timezone::Ptr timezone,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Sets the timezone to the given timezone. +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATGDayOrDerived__inherit__graph.map b/docs/simple-api/classATGDayOrDerived__inherit__graph.map new file mode 100644 index 00000000..e559864f --- /dev/null +++ b/docs/simple-api/classATGDayOrDerived__inherit__graph.map @@ -0,0 +1,5 @@ +base referer +rect $classDateOrTimeType.html 13,233 135,257 +rect $classAnyAtomicType.html 17,158 131,182 +rect $classItem.html 50,83 98,107 +rect $classReferenceCounted.html 7,9 141,33 diff --git a/docs/simple-api/classATGDayOrDerived__inherit__graph.md5 b/docs/simple-api/classATGDayOrDerived__inherit__graph.md5 new file mode 100644 index 00000000..b04c0a01 --- /dev/null +++ b/docs/simple-api/classATGDayOrDerived__inherit__graph.md5 @@ -0,0 +1 @@ +09ef71666dc74902290d059dcd4a24ef \ No newline at end of file diff --git a/docs/simple-api/classATGDayOrDerived__inherit__graph.png b/docs/simple-api/classATGDayOrDerived__inherit__graph.png new file mode 100644 index 00000000..da3a0d55 Binary files /dev/null and b/docs/simple-api/classATGDayOrDerived__inherit__graph.png differ diff --git a/docs/simple-api/classATGMonthDayOrDerived-members.html b/docs/simple-api/classATGMonthDayOrDerived-members.html new file mode 100644 index 00000000..3ddbce11 --- /dev/null +++ b/docs/simple-api/classATGMonthDayOrDerived-members.html @@ -0,0 +1,83 @@ + + +XQilla Simple API: Member List + + + + + + +

ATGMonthDayOrDerived Member List

This is the complete list of members for ATGMonthDayOrDerived, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asString(const DynamicContext *context) const =0ATGMonthDayOrDerived [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
compare(const ATGMonthDayOrDerived::Ptr &other, const DynamicContext *context) const =0ATGMonthDayOrDerived [pure virtual]
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0ATGMonthDayOrDerived [pure virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getInterface(const XMLCh *name) const =0Item [pure virtual]
getPrimitiveTypeIndex() const =0ATGMonthDayOrDerived [pure virtual]
getPrimitiveTypeName() const =0ATGMonthDayOrDerived [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getTypeName() const =0ATGMonthDayOrDerived [pure virtual]
getTypeURI() const =0ATGMonthDayOrDerived [pure virtual]
gXQillaItem [static]
hasTimezone() const =0ATGMonthDayOrDerived [pure virtual]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const DateOrTimeType [virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const AnyAtomicType [virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
Item()Item [inline, protected]
NOTATION enum valueAnyAtomicType
NumAtomicObjectTypes enum valueAnyAtomicType
Ptr typedefATGMonthDayOrDerived
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
setTimezone(const Timezone::Ptr &timezone, const DynamicContext *context) const =0ATGMonthDayOrDerived [pure virtual]
STRING enum valueAnyAtomicType
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATGMonthDayOrDerived.html b/docs/simple-api/classATGMonthDayOrDerived.html new file mode 100644 index 00000000..b9427676 --- /dev/null +++ b/docs/simple-api/classATGMonthDayOrDerived.html @@ -0,0 +1,387 @@ + + +XQilla Simple API: ATGMonthDayOrDerived Class Reference + + + + + + +

ATGMonthDayOrDerived Class Reference

#include <ATGMonthDayOrDerived.hpp> +

+Inheritance diagram for ATGMonthDayOrDerived:

Inheritance graph
+ + + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef RefCountPointer< const
+ATGMonthDayOrDerived
Ptr

Public Member Functions

virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual bool equals (const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0
virtual int compare (const ATGMonthDayOrDerived::Ptr &other, const DynamicContext *context) const =0
 Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise.
virtual bool hasTimezone () const =0
 Returns true if a timezone is defined for this.
virtual ATGMonthDayOrDerived::Ptr setTimezone (const Timezone::Ptr &timezone, const DynamicContext *context) const =0
 Sets the timezone to the given timezone.
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0
+

Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef RefCountPointer<const ATGMonthDayOrDerived> ATGMonthDayOrDerived::Ptr
+
+ + + + + +
+   + + +

+ +

+Reimplemented from DateOrTimeType.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* ATGMonthDayOrDerived::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual int ATGMonthDayOrDerived::compare const ATGMonthDayOrDerived::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ATGMonthDayOrDerived::equals const AnyAtomicType::Ptr target,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ATGMonthDayOrDerived::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATGMonthDayOrDerived::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATGMonthDayOrDerived::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATGMonthDayOrDerived::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual bool ATGMonthDayOrDerived::hasTimezone  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns true if a timezone is defined for this. +

+False otherwise. +

+Implements DateOrTimeType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATGMonthDayOrDerived::Ptr ATGMonthDayOrDerived::setTimezone const Timezone::Ptr timezone,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Sets the timezone to the given timezone. +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATGMonthDayOrDerived__inherit__graph.map b/docs/simple-api/classATGMonthDayOrDerived__inherit__graph.map new file mode 100644 index 00000000..1ae4b29f --- /dev/null +++ b/docs/simple-api/classATGMonthDayOrDerived__inherit__graph.map @@ -0,0 +1,5 @@ +base referer +rect $classDateOrTimeType.html 30,233 153,257 +rect $classAnyAtomicType.html 34,158 149,182 +rect $classItem.html 68,83 116,107 +rect $classReferenceCounted.html 25,9 158,33 diff --git a/docs/simple-api/classATGMonthDayOrDerived__inherit__graph.md5 b/docs/simple-api/classATGMonthDayOrDerived__inherit__graph.md5 new file mode 100644 index 00000000..fb5ba3ad --- /dev/null +++ b/docs/simple-api/classATGMonthDayOrDerived__inherit__graph.md5 @@ -0,0 +1 @@ +54a2301741db4f443905621a8c3e2cd1 \ No newline at end of file diff --git a/docs/simple-api/classATGMonthDayOrDerived__inherit__graph.png b/docs/simple-api/classATGMonthDayOrDerived__inherit__graph.png new file mode 100644 index 00000000..ffabff74 Binary files /dev/null and b/docs/simple-api/classATGMonthDayOrDerived__inherit__graph.png differ diff --git a/docs/simple-api/classATGMonthOrDerived-members.html b/docs/simple-api/classATGMonthOrDerived-members.html new file mode 100644 index 00000000..c570fcd1 --- /dev/null +++ b/docs/simple-api/classATGMonthOrDerived-members.html @@ -0,0 +1,83 @@ + + +XQilla Simple API: Member List + + + + + + +

ATGMonthOrDerived Member List

This is the complete list of members for ATGMonthOrDerived, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asString(const DynamicContext *context) const =0ATGMonthOrDerived [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
compare(const ATGMonthOrDerived::Ptr &other, const DynamicContext *context) const =0ATGMonthOrDerived [pure virtual]
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0ATGMonthOrDerived [pure virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getInterface(const XMLCh *name) const =0Item [pure virtual]
getPrimitiveTypeIndex() const =0ATGMonthOrDerived [pure virtual]
getPrimitiveTypeName() const =0ATGMonthOrDerived [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getTypeName() const =0ATGMonthOrDerived [pure virtual]
getTypeURI() const =0ATGMonthOrDerived [pure virtual]
gXQillaItem [static]
hasTimezone() const =0ATGMonthOrDerived [pure virtual]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const DateOrTimeType [virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const AnyAtomicType [virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
Item()Item [inline, protected]
NOTATION enum valueAnyAtomicType
NumAtomicObjectTypes enum valueAnyAtomicType
Ptr typedefATGMonthOrDerived
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
setTimezone(const Timezone::Ptr &timezone, const DynamicContext *context) const =0ATGMonthOrDerived [pure virtual]
STRING enum valueAnyAtomicType
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATGMonthOrDerived.html b/docs/simple-api/classATGMonthOrDerived.html new file mode 100644 index 00000000..fb3dd8d0 --- /dev/null +++ b/docs/simple-api/classATGMonthOrDerived.html @@ -0,0 +1,387 @@ + + +XQilla Simple API: ATGMonthOrDerived Class Reference + + + + + + +

ATGMonthOrDerived Class Reference

#include <ATGMonthOrDerived.hpp> +

+Inheritance diagram for ATGMonthOrDerived:

Inheritance graph
+ + + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef RefCountPointer< const
+ATGMonthOrDerived
Ptr

Public Member Functions

virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual bool equals (const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0
virtual int compare (const ATGMonthOrDerived::Ptr &other, const DynamicContext *context) const =0
 Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise.
virtual bool hasTimezone () const =0
 Returns true if a timezone is defined for this.
virtual ATGMonthOrDerived::Ptr setTimezone (const Timezone::Ptr &timezone, const DynamicContext *context) const =0
 Sets the timezone to the given timezone.
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0
+

Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef RefCountPointer<const ATGMonthOrDerived> ATGMonthOrDerived::Ptr
+
+ + + + + +
+   + + +

+ +

+Reimplemented from DateOrTimeType.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* ATGMonthOrDerived::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual int ATGMonthOrDerived::compare const ATGMonthOrDerived::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ATGMonthOrDerived::equals const AnyAtomicType::Ptr target,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ATGMonthOrDerived::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATGMonthOrDerived::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATGMonthOrDerived::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATGMonthOrDerived::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual bool ATGMonthOrDerived::hasTimezone  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns true if a timezone is defined for this. +

+False otherwise. +

+Implements DateOrTimeType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATGMonthOrDerived::Ptr ATGMonthOrDerived::setTimezone const Timezone::Ptr timezone,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Sets the timezone to the given timezone. +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATGMonthOrDerived__inherit__graph.map b/docs/simple-api/classATGMonthOrDerived__inherit__graph.map new file mode 100644 index 00000000..a080cf99 --- /dev/null +++ b/docs/simple-api/classATGMonthOrDerived__inherit__graph.map @@ -0,0 +1,5 @@ +base referer +rect $classDateOrTimeType.html 20,233 142,257 +rect $classAnyAtomicType.html 24,158 138,182 +rect $classItem.html 57,83 105,107 +rect $classReferenceCounted.html 14,9 148,33 diff --git a/docs/simple-api/classATGMonthOrDerived__inherit__graph.md5 b/docs/simple-api/classATGMonthOrDerived__inherit__graph.md5 new file mode 100644 index 00000000..5722fda6 --- /dev/null +++ b/docs/simple-api/classATGMonthOrDerived__inherit__graph.md5 @@ -0,0 +1 @@ +8072f4a66a7631f19ef398fa2c6267f4 \ No newline at end of file diff --git a/docs/simple-api/classATGMonthOrDerived__inherit__graph.png b/docs/simple-api/classATGMonthOrDerived__inherit__graph.png new file mode 100644 index 00000000..2514680f Binary files /dev/null and b/docs/simple-api/classATGMonthOrDerived__inherit__graph.png differ diff --git a/docs/simple-api/classATGYearMonthOrDerived-members.html b/docs/simple-api/classATGYearMonthOrDerived-members.html new file mode 100644 index 00000000..5c073803 --- /dev/null +++ b/docs/simple-api/classATGYearMonthOrDerived-members.html @@ -0,0 +1,83 @@ + + +XQilla Simple API: Member List + + + + + + +

ATGYearMonthOrDerived Member List

This is the complete list of members for ATGYearMonthOrDerived, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asString(const DynamicContext *context) const =0ATGYearMonthOrDerived [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
compare(const ATGYearMonthOrDerived::Ptr &other, const DynamicContext *context) const =0ATGYearMonthOrDerived [pure virtual]
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0ATGYearMonthOrDerived [pure virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getInterface(const XMLCh *name) const =0Item [pure virtual]
getPrimitiveTypeIndex() const =0ATGYearMonthOrDerived [pure virtual]
getPrimitiveTypeName() const =0ATGYearMonthOrDerived [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getTypeName() const =0ATGYearMonthOrDerived [pure virtual]
getTypeURI() const =0ATGYearMonthOrDerived [pure virtual]
gXQillaItem [static]
hasTimezone() const =0ATGYearMonthOrDerived [pure virtual]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const DateOrTimeType [virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const AnyAtomicType [virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
Item()Item [inline, protected]
NOTATION enum valueAnyAtomicType
NumAtomicObjectTypes enum valueAnyAtomicType
Ptr typedefATGYearMonthOrDerived
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
setTimezone(const Timezone::Ptr &timezone, const DynamicContext *context) const =0ATGYearMonthOrDerived [pure virtual]
STRING enum valueAnyAtomicType
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATGYearMonthOrDerived.html b/docs/simple-api/classATGYearMonthOrDerived.html new file mode 100644 index 00000000..4b927830 --- /dev/null +++ b/docs/simple-api/classATGYearMonthOrDerived.html @@ -0,0 +1,387 @@ + + +XQilla Simple API: ATGYearMonthOrDerived Class Reference + + + + + + +

ATGYearMonthOrDerived Class Reference

#include <ATGYearMonthOrDerived.hpp> +

+Inheritance diagram for ATGYearMonthOrDerived:

Inheritance graph
+ + + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef RefCountPointer< const
+ATGYearMonthOrDerived
Ptr

Public Member Functions

virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual bool equals (const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0
virtual int compare (const ATGYearMonthOrDerived::Ptr &other, const DynamicContext *context) const =0
 Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise.
virtual bool hasTimezone () const =0
 Returns true if a timezone is defined for this.
virtual ATGYearMonthOrDerived::Ptr setTimezone (const Timezone::Ptr &timezone, const DynamicContext *context) const =0
 Sets the timezone to the given timezone.
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0
+

Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef RefCountPointer<const ATGYearMonthOrDerived> ATGYearMonthOrDerived::Ptr
+
+ + + + + +
+   + + +

+ +

+Reimplemented from DateOrTimeType.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* ATGYearMonthOrDerived::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual int ATGYearMonthOrDerived::compare const ATGYearMonthOrDerived::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ATGYearMonthOrDerived::equals const AnyAtomicType::Ptr target,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ATGYearMonthOrDerived::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATGYearMonthOrDerived::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATGYearMonthOrDerived::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATGYearMonthOrDerived::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual bool ATGYearMonthOrDerived::hasTimezone  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns true if a timezone is defined for this. +

+False otherwise. +

+Implements DateOrTimeType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATGYearMonthOrDerived::Ptr ATGYearMonthOrDerived::setTimezone const Timezone::Ptr timezone,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Sets the timezone to the given timezone. +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATGYearMonthOrDerived__inherit__graph.map b/docs/simple-api/classATGYearMonthOrDerived__inherit__graph.map new file mode 100644 index 00000000..8de3a845 --- /dev/null +++ b/docs/simple-api/classATGYearMonthOrDerived__inherit__graph.map @@ -0,0 +1,5 @@ +base referer +rect $classDateOrTimeType.html 32,233 154,257 +rect $classAnyAtomicType.html 36,158 150,182 +rect $classItem.html 69,83 117,107 +rect $classReferenceCounted.html 26,9 160,33 diff --git a/docs/simple-api/classATGYearMonthOrDerived__inherit__graph.md5 b/docs/simple-api/classATGYearMonthOrDerived__inherit__graph.md5 new file mode 100644 index 00000000..580fcd69 --- /dev/null +++ b/docs/simple-api/classATGYearMonthOrDerived__inherit__graph.md5 @@ -0,0 +1 @@ +3a63572144f751c789644052d191ba3d \ No newline at end of file diff --git a/docs/simple-api/classATGYearMonthOrDerived__inherit__graph.png b/docs/simple-api/classATGYearMonthOrDerived__inherit__graph.png new file mode 100644 index 00000000..320c6d00 Binary files /dev/null and b/docs/simple-api/classATGYearMonthOrDerived__inherit__graph.png differ diff --git a/docs/simple-api/classATGYearOrDerived-members.html b/docs/simple-api/classATGYearOrDerived-members.html new file mode 100644 index 00000000..9ccc69fa --- /dev/null +++ b/docs/simple-api/classATGYearOrDerived-members.html @@ -0,0 +1,83 @@ + + +XQilla Simple API: Member List + + + + + + +

ATGYearOrDerived Member List

This is the complete list of members for ATGYearOrDerived, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asString(const DynamicContext *context) const =0ATGYearOrDerived [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
compare(const ATGYearOrDerived::Ptr &other, const DynamicContext *context) const =0ATGYearOrDerived [pure virtual]
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0ATGYearOrDerived [pure virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getInterface(const XMLCh *name) const =0Item [pure virtual]
getPrimitiveTypeIndex() const =0ATGYearOrDerived [pure virtual]
getPrimitiveTypeName() const =0ATGYearOrDerived [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getTypeName() const =0ATGYearOrDerived [pure virtual]
getTypeURI() const =0ATGYearOrDerived [pure virtual]
gXQillaItem [static]
hasTimezone() const =0ATGYearOrDerived [pure virtual]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const DateOrTimeType [virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const AnyAtomicType [virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
Item()Item [inline, protected]
NOTATION enum valueAnyAtomicType
NumAtomicObjectTypes enum valueAnyAtomicType
Ptr typedefATGYearOrDerived
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
setTimezone(const Timezone::Ptr &timezone, const DynamicContext *context) const =0ATGYearOrDerived [pure virtual]
STRING enum valueAnyAtomicType
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATGYearOrDerived.html b/docs/simple-api/classATGYearOrDerived.html new file mode 100644 index 00000000..5c10ee97 --- /dev/null +++ b/docs/simple-api/classATGYearOrDerived.html @@ -0,0 +1,387 @@ + + +XQilla Simple API: ATGYearOrDerived Class Reference + + + + + + +

ATGYearOrDerived Class Reference

#include <ATGYearOrDerived.hpp> +

+Inheritance diagram for ATGYearOrDerived:

Inheritance graph
+ + + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef RefCountPointer< const
+ATGYearOrDerived
Ptr

Public Member Functions

virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual bool equals (const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0
virtual int compare (const ATGYearOrDerived::Ptr &other, const DynamicContext *context) const =0
 Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise.
virtual bool hasTimezone () const =0
 Returns true if a timezone is defined for this.
virtual ATGYearOrDerived::Ptr setTimezone (const Timezone::Ptr &timezone, const DynamicContext *context) const =0
 Sets the timezone to the given timezone.
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0
+

Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef RefCountPointer<const ATGYearOrDerived> ATGYearOrDerived::Ptr
+
+ + + + + +
+   + + +

+ +

+Reimplemented from DateOrTimeType.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* ATGYearOrDerived::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual int ATGYearOrDerived::compare const ATGYearOrDerived::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ATGYearOrDerived::equals const AnyAtomicType::Ptr target,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ATGYearOrDerived::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATGYearOrDerived::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATGYearOrDerived::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATGYearOrDerived::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual bool ATGYearOrDerived::hasTimezone  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns true if a timezone is defined for this. +

+False otherwise. +

+Implements DateOrTimeType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATGYearOrDerived::Ptr ATGYearOrDerived::setTimezone const Timezone::Ptr timezone,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Sets the timezone to the given timezone. +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATGYearOrDerived__inherit__graph.map b/docs/simple-api/classATGYearOrDerived__inherit__graph.map new file mode 100644 index 00000000..e559864f --- /dev/null +++ b/docs/simple-api/classATGYearOrDerived__inherit__graph.map @@ -0,0 +1,5 @@ +base referer +rect $classDateOrTimeType.html 13,233 135,257 +rect $classAnyAtomicType.html 17,158 131,182 +rect $classItem.html 50,83 98,107 +rect $classReferenceCounted.html 7,9 141,33 diff --git a/docs/simple-api/classATGYearOrDerived__inherit__graph.md5 b/docs/simple-api/classATGYearOrDerived__inherit__graph.md5 new file mode 100644 index 00000000..c35240fb --- /dev/null +++ b/docs/simple-api/classATGYearOrDerived__inherit__graph.md5 @@ -0,0 +1 @@ +5f585e4c7431d84fbb76788d6cd909d2 \ No newline at end of file diff --git a/docs/simple-api/classATGYearOrDerived__inherit__graph.png b/docs/simple-api/classATGYearOrDerived__inherit__graph.png new file mode 100644 index 00000000..3ad52aa1 Binary files /dev/null and b/docs/simple-api/classATGYearOrDerived__inherit__graph.png differ diff --git a/docs/simple-api/classATHexBinaryOrDerived-members.html b/docs/simple-api/classATHexBinaryOrDerived-members.html new file mode 100644 index 00000000..4536dc5c --- /dev/null +++ b/docs/simple-api/classATHexBinaryOrDerived-members.html @@ -0,0 +1,81 @@ + + +XQilla Simple API: Member List + + + + + + +

ATHexBinaryOrDerived Member List

This is the complete list of members for ATHexBinaryOrDerived, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asString(const DynamicContext *context) const =0ATHexBinaryOrDerived [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
compare(const ATHexBinaryOrDerived::Ptr &other, const DynamicContext *context) const =0ATHexBinaryOrDerived [pure virtual]
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0ATHexBinaryOrDerived [pure virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getInterface(const XMLCh *name) const =0Item [pure virtual]
getPrimitiveTypeIndex() const =0ATHexBinaryOrDerived [pure virtual]
getPrimitiveTypeName() const =0ATHexBinaryOrDerived [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getTypeName() const =0ATHexBinaryOrDerived [pure virtual]
getTypeURI() const =0ATHexBinaryOrDerived [pure virtual]
gXQillaItem [static]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const AnyAtomicType [virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const AnyAtomicType [virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
Item()Item [inline, protected]
NOTATION enum valueAnyAtomicType
NumAtomicObjectTypes enum valueAnyAtomicType
Ptr typedefAnyAtomicType
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
STRING enum valueAnyAtomicType
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATHexBinaryOrDerived.html b/docs/simple-api/classATHexBinaryOrDerived.html new file mode 100644 index 00000000..b40e6212 --- /dev/null +++ b/docs/simple-api/classATHexBinaryOrDerived.html @@ -0,0 +1,280 @@ + + +XQilla Simple API: ATHexBinaryOrDerived Class Reference + + + + + + +

ATHexBinaryOrDerived Class Reference

#include <ATHexBinaryOrDerived.hpp> +

+Inheritance diagram for ATHexBinaryOrDerived:

Inheritance graph
+ + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual bool equals (const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0
virtual int compare (const ATHexBinaryOrDerived::Ptr &other, const DynamicContext *context) const =0
 Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise.
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0
+

Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* ATHexBinaryOrDerived::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual int ATHexBinaryOrDerived::compare const ATHexBinaryOrDerived::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ATHexBinaryOrDerived::equals const AnyAtomicType::Ptr target,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ATHexBinaryOrDerived::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATHexBinaryOrDerived::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATHexBinaryOrDerived::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATHexBinaryOrDerived::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATHexBinaryOrDerived__inherit__graph.map b/docs/simple-api/classATHexBinaryOrDerived__inherit__graph.map new file mode 100644 index 00000000..d31e190c --- /dev/null +++ b/docs/simple-api/classATHexBinaryOrDerived__inherit__graph.map @@ -0,0 +1,4 @@ +base referer +rect $classAnyAtomicType.html 30,158 145,182 +rect $classItem.html 64,84 112,108 +rect $classReferenceCounted.html 21,9 154,33 diff --git a/docs/simple-api/classATHexBinaryOrDerived__inherit__graph.md5 b/docs/simple-api/classATHexBinaryOrDerived__inherit__graph.md5 new file mode 100644 index 00000000..20a49b3f --- /dev/null +++ b/docs/simple-api/classATHexBinaryOrDerived__inherit__graph.md5 @@ -0,0 +1 @@ +7cadac86e12689c4a446254dba22fb05 \ No newline at end of file diff --git a/docs/simple-api/classATHexBinaryOrDerived__inherit__graph.png b/docs/simple-api/classATHexBinaryOrDerived__inherit__graph.png new file mode 100644 index 00000000..0791fd18 Binary files /dev/null and b/docs/simple-api/classATHexBinaryOrDerived__inherit__graph.png differ diff --git a/docs/simple-api/classATNotationOrDerived-members.html b/docs/simple-api/classATNotationOrDerived-members.html new file mode 100644 index 00000000..ec81323b --- /dev/null +++ b/docs/simple-api/classATNotationOrDerived-members.html @@ -0,0 +1,81 @@ + + +XQilla Simple API: Member List + + + + + + +

ATNotationOrDerived Member List

This is the complete list of members for ATNotationOrDerived, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asString(const DynamicContext *context) const =0ATNotationOrDerived [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
compare(const ATNotationOrDerived::Ptr &other, const DynamicContext *context) const =0ATNotationOrDerived [pure virtual]
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0ATNotationOrDerived [pure virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getInterface(const XMLCh *name) const =0Item [pure virtual]
getPrimitiveTypeIndex() const =0ATNotationOrDerived [pure virtual]
getPrimitiveTypeName() const =0ATNotationOrDerived [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getTypeName() const =0ATNotationOrDerived [pure virtual]
getTypeURI() const =0ATNotationOrDerived [pure virtual]
gXQillaItem [static]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const AnyAtomicType [virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const AnyAtomicType [virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
Item()Item [inline, protected]
NOTATION enum valueAnyAtomicType
NumAtomicObjectTypes enum valueAnyAtomicType
Ptr typedefAnyAtomicType
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
STRING enum valueAnyAtomicType
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATNotationOrDerived.html b/docs/simple-api/classATNotationOrDerived.html new file mode 100644 index 00000000..ec97f783 --- /dev/null +++ b/docs/simple-api/classATNotationOrDerived.html @@ -0,0 +1,280 @@ + + +XQilla Simple API: ATNotationOrDerived Class Reference + + + + + + +

ATNotationOrDerived Class Reference

#include <ATNotationOrDerived.hpp> +

+Inheritance diagram for ATNotationOrDerived:

Inheritance graph
+ + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual bool equals (const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0
virtual int compare (const ATNotationOrDerived::Ptr &other, const DynamicContext *context) const =0
 Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise.
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0
+

Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* ATNotationOrDerived::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual int ATNotationOrDerived::compare const ATNotationOrDerived::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ATNotationOrDerived::equals const AnyAtomicType::Ptr target,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ATNotationOrDerived::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATNotationOrDerived::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATNotationOrDerived::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATNotationOrDerived::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATNotationOrDerived__inherit__graph.map b/docs/simple-api/classATNotationOrDerived__inherit__graph.map new file mode 100644 index 00000000..fcb9c8d5 --- /dev/null +++ b/docs/simple-api/classATNotationOrDerived__inherit__graph.map @@ -0,0 +1,4 @@ +base referer +rect $classAnyAtomicType.html 25,158 139,182 +rect $classItem.html 58,84 106,108 +rect $classReferenceCounted.html 15,9 149,33 diff --git a/docs/simple-api/classATNotationOrDerived__inherit__graph.md5 b/docs/simple-api/classATNotationOrDerived__inherit__graph.md5 new file mode 100644 index 00000000..f5b12449 --- /dev/null +++ b/docs/simple-api/classATNotationOrDerived__inherit__graph.md5 @@ -0,0 +1 @@ +b537c3cce7481b65f7565063d08afc56 \ No newline at end of file diff --git a/docs/simple-api/classATNotationOrDerived__inherit__graph.png b/docs/simple-api/classATNotationOrDerived__inherit__graph.png new file mode 100644 index 00000000..2950a1f1 Binary files /dev/null and b/docs/simple-api/classATNotationOrDerived__inherit__graph.png differ diff --git a/docs/simple-api/classATQNameOrDerived-members.html b/docs/simple-api/classATQNameOrDerived-members.html new file mode 100644 index 00000000..9ef54022 --- /dev/null +++ b/docs/simple-api/classATQNameOrDerived-members.html @@ -0,0 +1,84 @@ + + +XQilla Simple API: Member List + + + + + + +

ATQNameOrDerived Member List

This is the complete list of members for ATQNameOrDerived, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asString(const DynamicContext *context) const =0ATQNameOrDerived [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
compare(const ATQNameOrDerived::Ptr &other, const DynamicContext *context) const =0ATQNameOrDerived [pure virtual]
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0ATQNameOrDerived [pure virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getInterface(const XMLCh *name) const =0Item [pure virtual]
getName() const =0ATQNameOrDerived [pure virtual]
getPrefix() const =0ATQNameOrDerived [pure virtual]
getPrimitiveTypeIndex() const =0ATQNameOrDerived [pure virtual]
getPrimitiveTypeName() const =0ATQNameOrDerived [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getTypeName() const =0ATQNameOrDerived [pure virtual]
getTypeURI() const =0ATQNameOrDerived [pure virtual]
getURI() const =0ATQNameOrDerived [pure virtual]
gXQillaItem [static]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const AnyAtomicType [virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const AnyAtomicType [virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
Item()Item [inline, protected]
NOTATION enum valueAnyAtomicType
NumAtomicObjectTypes enum valueAnyAtomicType
Ptr typedefATQNameOrDerived
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
STRING enum valueAnyAtomicType
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATQNameOrDerived.html b/docs/simple-api/classATQNameOrDerived.html new file mode 100644 index 00000000..1a6b822b --- /dev/null +++ b/docs/simple-api/classATQNameOrDerived.html @@ -0,0 +1,397 @@ + + +XQilla Simple API: ATQNameOrDerived Class Reference + + + + + + +

ATQNameOrDerived Class Reference

#include <ATQNameOrDerived.hpp> +

+Inheritance diagram for ATQNameOrDerived:

Inheritance graph
+ + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef RefCountPointer< const
+ATQNameOrDerived
Ptr

Public Member Functions

virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * getURI () const =0
virtual const XMLCh * getPrefix () const =0
virtual const XMLCh * getName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual bool equals (const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0
virtual int compare (const ATQNameOrDerived::Ptr &other, const DynamicContext *context) const =0
 Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise.
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0
+

Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef RefCountPointer<const ATQNameOrDerived> ATQNameOrDerived::Ptr
+
+ + + + + +
+   + + +

+ +

+Reimplemented from AnyAtomicType.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* ATQNameOrDerived::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual int ATQNameOrDerived::compare const ATQNameOrDerived::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ATQNameOrDerived::equals const AnyAtomicType::Ptr target,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATQNameOrDerived::getName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATQNameOrDerived::getPrefix  )  const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ATQNameOrDerived::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATQNameOrDerived::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATQNameOrDerived::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATQNameOrDerived::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATQNameOrDerived::getURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATQNameOrDerived__inherit__graph.map b/docs/simple-api/classATQNameOrDerived__inherit__graph.map new file mode 100644 index 00000000..8ffeef7c --- /dev/null +++ b/docs/simple-api/classATQNameOrDerived__inherit__graph.map @@ -0,0 +1,4 @@ +base referer +rect $classAnyAtomicType.html 22,158 137,182 +rect $classItem.html 56,84 104,108 +rect $classReferenceCounted.html 13,9 146,33 diff --git a/docs/simple-api/classATQNameOrDerived__inherit__graph.md5 b/docs/simple-api/classATQNameOrDerived__inherit__graph.md5 new file mode 100644 index 00000000..e51aa38e --- /dev/null +++ b/docs/simple-api/classATQNameOrDerived__inherit__graph.md5 @@ -0,0 +1 @@ +a2f13d8970b9cacd69e8e75ec0cfcabf \ No newline at end of file diff --git a/docs/simple-api/classATQNameOrDerived__inherit__graph.png b/docs/simple-api/classATQNameOrDerived__inherit__graph.png new file mode 100644 index 00000000..fe3cb132 Binary files /dev/null and b/docs/simple-api/classATQNameOrDerived__inherit__graph.png differ diff --git a/docs/simple-api/classATStringOrDerived-members.html b/docs/simple-api/classATStringOrDerived-members.html new file mode 100644 index 00000000..32447738 --- /dev/null +++ b/docs/simple-api/classATStringOrDerived-members.html @@ -0,0 +1,85 @@ + + +XQilla Simple API: Member List + + + + + + +

ATStringOrDerived Member List

This is the complete list of members for ATStringOrDerived, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asCodepoints(const DynamicContext *context) const =0ATStringOrDerived [pure virtual]
asString(const DynamicContext *context) const =0ATStringOrDerived [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0ATStringOrDerived [pure virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getInterface(const XMLCh *name) const =0Item [pure virtual]
getLength() const =0ATStringOrDerived [pure virtual]
getPrimitiveTypeIndex() const =0ATStringOrDerived [pure virtual]
getPrimitiveTypeName() const =0ATStringOrDerived [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getTypeName() const =0ATStringOrDerived [pure virtual]
getTypeURI() const =0ATStringOrDerived [pure virtual]
gXQillaItem [static]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const AnyAtomicType [virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const AnyAtomicType [virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
Item()Item [inline, protected]
NOTATION enum valueAnyAtomicType
NumAtomicObjectTypes enum valueAnyAtomicType
Ptr typedefATStringOrDerived
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
STRING enum valueAnyAtomicType
substring(const Numeric::Ptr &startingLoc, const Numeric::Ptr &length, const DynamicContext *context) const =0ATStringOrDerived [pure virtual]
substringAfter(const ATStringOrDerived::Ptr &pattern, Collation *collation, const DynamicContext *context) const =0ATStringOrDerived [pure virtual]
substringBefore(const ATStringOrDerived::Ptr &pattern, Collation *collation, const DynamicContext *context) const =0ATStringOrDerived [pure virtual]
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATStringOrDerived.html b/docs/simple-api/classATStringOrDerived.html new file mode 100644 index 00000000..8cc32845 --- /dev/null +++ b/docs/simple-api/classATStringOrDerived.html @@ -0,0 +1,462 @@ + + +XQilla Simple API: ATStringOrDerived Class Reference + + + + + + +

ATStringOrDerived Class Reference

#include <ATStringOrDerived.hpp> +

+Inheritance diagram for ATStringOrDerived:

Inheritance graph
+ + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef RefCountPointer< const
+ATStringOrDerived
Ptr

Public Member Functions

virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual Result asCodepoints (const DynamicContext *context) const =0
virtual unsigned int getLength () const =0
virtual ATStringOrDerived::Ptr substring (const Numeric::Ptr &startingLoc, const Numeric::Ptr &length, const DynamicContext *context) const =0
virtual ATStringOrDerived::Ptr substringAfter (const ATStringOrDerived::Ptr &pattern, Collation *collation, const DynamicContext *context) const =0
virtual ATStringOrDerived::Ptr substringBefore (const ATStringOrDerived::Ptr &pattern, Collation *collation, const DynamicContext *context) const =0
virtual bool equals (const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0
+

Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef RefCountPointer<const ATStringOrDerived> ATStringOrDerived::Ptr
+
+ + + + + +
+   + + +

+ +

+Reimplemented from AnyAtomicType.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual Result ATStringOrDerived::asCodepoints const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* ATStringOrDerived::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ATStringOrDerived::equals const AnyAtomicType::Ptr target,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual unsigned int ATStringOrDerived::getLength  )  const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ATStringOrDerived::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATStringOrDerived::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATStringOrDerived::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATStringOrDerived::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATStringOrDerived::Ptr ATStringOrDerived::substring const Numeric::Ptr startingLoc,
const Numeric::Ptr length,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATStringOrDerived::Ptr ATStringOrDerived::substringAfter const ATStringOrDerived::Ptr pattern,
Collation collation,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATStringOrDerived::Ptr ATStringOrDerived::substringBefore const ATStringOrDerived::Ptr pattern,
Collation collation,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATStringOrDerived__inherit__graph.map b/docs/simple-api/classATStringOrDerived__inherit__graph.map new file mode 100644 index 00000000..71ead6a4 --- /dev/null +++ b/docs/simple-api/classATStringOrDerived__inherit__graph.map @@ -0,0 +1,4 @@ +base referer +rect $classAnyAtomicType.html 17,158 131,182 +rect $classItem.html 50,84 98,108 +rect $classReferenceCounted.html 7,9 141,33 diff --git a/docs/simple-api/classATStringOrDerived__inherit__graph.md5 b/docs/simple-api/classATStringOrDerived__inherit__graph.md5 new file mode 100644 index 00000000..daa871cb --- /dev/null +++ b/docs/simple-api/classATStringOrDerived__inherit__graph.md5 @@ -0,0 +1 @@ +21edd4dcc26299c0d1da3685f85be7b4 \ No newline at end of file diff --git a/docs/simple-api/classATStringOrDerived__inherit__graph.png b/docs/simple-api/classATStringOrDerived__inherit__graph.png new file mode 100644 index 00000000..bebfdba7 Binary files /dev/null and b/docs/simple-api/classATStringOrDerived__inherit__graph.png differ diff --git a/docs/simple-api/classATTimeOrDerived-members.html b/docs/simple-api/classATTimeOrDerived-members.html new file mode 100644 index 00000000..c210f6f4 --- /dev/null +++ b/docs/simple-api/classATTimeOrDerived-members.html @@ -0,0 +1,91 @@ + + +XQilla Simple API: Member List + + + + + + +

ATTimeOrDerived Member List

This is the complete list of members for ATTimeOrDerived, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
addDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, const DynamicContext *context) const =0ATTimeOrDerived [pure virtual]
addTimezone(const ATDurationOrDerived::Ptr &timezone, const DynamicContext *context) const =0ATTimeOrDerived [pure virtual]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asString(const DynamicContext *context) const =0ATTimeOrDerived [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
compare(const ATTimeOrDerived::Ptr &other, const DynamicContext *context) const =0ATTimeOrDerived [pure virtual]
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0ATTimeOrDerived [pure virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getHours(const DynamicContext *context) const =0ATTimeOrDerived [pure virtual]
getInterface(const XMLCh *name) const =0Item [pure virtual]
getMinutes(const DynamicContext *context) const =0ATTimeOrDerived [pure virtual]
getPrimitiveTypeIndex() const =0ATTimeOrDerived [pure virtual]
getPrimitiveTypeName() const =0ATTimeOrDerived [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getSeconds(const DynamicContext *context) const =0ATTimeOrDerived [pure virtual]
getTimezone() const =0ATTimeOrDerived [pure virtual]
getTypeName() const =0ATTimeOrDerived [pure virtual]
getTypeURI() const =0ATTimeOrDerived [pure virtual]
gXQillaItem [static]
hasTimezone() const =0ATTimeOrDerived [pure virtual]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const DateOrTimeType [virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const AnyAtomicType [virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
Item()Item [inline, protected]
NOTATION enum valueAnyAtomicType
NumAtomicObjectTypes enum valueAnyAtomicType
Ptr typedefATTimeOrDerived
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
setTimezone(const Timezone::Ptr &timezone, const DynamicContext *context) const =0ATTimeOrDerived [pure virtual]
STRING enum valueAnyAtomicType
subtractDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, const DynamicContext *context) const =0ATTimeOrDerived [pure virtual]
subtractTime(const ATTimeOrDerived::Ptr &time, const DynamicContext *context) const =0ATTimeOrDerived [pure virtual]
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATTimeOrDerived.html b/docs/simple-api/classATTimeOrDerived.html new file mode 100644 index 00000000..8b647a03 --- /dev/null +++ b/docs/simple-api/classATTimeOrDerived.html @@ -0,0 +1,686 @@ + + +XQilla Simple API: ATTimeOrDerived Class Reference + + + + + + +

ATTimeOrDerived Class Reference

#include <ATTimeOrDerived.hpp> +

+Inheritance diagram for ATTimeOrDerived:

Inheritance graph
+ + + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef RefCountPointer< const
+ATTimeOrDerived
Ptr

Public Member Functions

virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual bool equals (const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0
virtual int compare (const ATTimeOrDerived::Ptr &other, const DynamicContext *context) const =0
 Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise.
virtual ATDecimalOrDerived::Ptr getHours (const DynamicContext *context) const =0
 Returns an integer representing the hour component of this object.
virtual ATDecimalOrDerived::Ptr getMinutes (const DynamicContext *context) const =0
 Returns an integer representing the minute component of this object.
virtual ATDecimalOrDerived::Ptr getSeconds (const DynamicContext *context) const =0
 Returns an decimal representing the second component of this object.
virtual const Timezone::PtrgetTimezone () const =0
 Returns a timezone object representing the timezone component of this object.
virtual bool hasTimezone () const =0
 Returns true if the timezone is defined for this object, false otherwise.
virtual ATTimeOrDerived::Ptr setTimezone (const Timezone::Ptr &timezone, const DynamicContext *context) const =0
 Setter for timezone.
virtual ATTimeOrDerived::Ptr addTimezone (const ATDurationOrDerived::Ptr &timezone, const DynamicContext *context) const =0
 Returns an ATTimeOrDerived with a timezone added to it.
virtual ATTimeOrDerived::Ptr addDayTimeDuration (const ATDurationOrDerived::Ptr &dayTime, const DynamicContext *context) const =0
 Returns a time with the given dayTimeDuration added to it.
virtual ATTimeOrDerived::Ptr subtractDayTimeDuration (const ATDurationOrDerived::Ptr &dayTime, const DynamicContext *context) const =0
 Returns a time with the given dayTimeDuration subtracted from it.
virtual ATDurationOrDerived::Ptr subtractTime (const ATTimeOrDerived::Ptr &time, const DynamicContext *context) const =0
 Returns a dayTimeDuration corresponding to the difference between this and the given ATTimeOrDerived*.
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0
+

Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef RefCountPointer<const ATTimeOrDerived> ATTimeOrDerived::Ptr
+
+ + + + + +
+   + + +

+ +

+Reimplemented from DateOrTimeType.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATTimeOrDerived::Ptr ATTimeOrDerived::addDayTimeDuration const ATDurationOrDerived::Ptr dayTime,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a time with the given dayTimeDuration added to it. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATTimeOrDerived::Ptr ATTimeOrDerived::addTimezone const ATDurationOrDerived::Ptr timezone,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns an ATTimeOrDerived with a timezone added to it. +

+

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* ATTimeOrDerived::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual int ATTimeOrDerived::compare const ATTimeOrDerived::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ATTimeOrDerived::equals const AnyAtomicType::Ptr target,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ATTimeOrDerived::getHours const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns an integer representing the hour component of this object. +

+

+

+ + + + +
+ + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ATTimeOrDerived::getMinutes const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns an integer representing the minute component of this object. +

+

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ATTimeOrDerived::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATTimeOrDerived::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ATTimeOrDerived::getSeconds const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns an decimal representing the second component of this object. +

+

+

+ + + + +
+ + + + + + + + +
virtual const Timezone::Ptr& ATTimeOrDerived::getTimezone  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a timezone object representing the timezone component of this object. +

+

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATTimeOrDerived::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATTimeOrDerived::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual bool ATTimeOrDerived::hasTimezone  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns true if the timezone is defined for this object, false otherwise. +

+ +

+Implements DateOrTimeType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATTimeOrDerived::Ptr ATTimeOrDerived::setTimezone const Timezone::Ptr timezone,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Setter for timezone. +

+Overrides the current timezone. (Not to be confused with addTimezone().

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATTimeOrDerived::Ptr ATTimeOrDerived::subtractDayTimeDuration const ATDurationOrDerived::Ptr dayTime,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a time with the given dayTimeDuration subtracted from it. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDurationOrDerived::Ptr ATTimeOrDerived::subtractTime const ATTimeOrDerived::Ptr time,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a dayTimeDuration corresponding to the difference between this and the given ATTimeOrDerived*. +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATTimeOrDerived__inherit__graph.map b/docs/simple-api/classATTimeOrDerived__inherit__graph.map new file mode 100644 index 00000000..e559864f --- /dev/null +++ b/docs/simple-api/classATTimeOrDerived__inherit__graph.map @@ -0,0 +1,5 @@ +base referer +rect $classDateOrTimeType.html 13,233 135,257 +rect $classAnyAtomicType.html 17,158 131,182 +rect $classItem.html 50,83 98,107 +rect $classReferenceCounted.html 7,9 141,33 diff --git a/docs/simple-api/classATTimeOrDerived__inherit__graph.md5 b/docs/simple-api/classATTimeOrDerived__inherit__graph.md5 new file mode 100644 index 00000000..63609240 --- /dev/null +++ b/docs/simple-api/classATTimeOrDerived__inherit__graph.md5 @@ -0,0 +1 @@ +296ac48941677f6f5e603f2e95cb0600 \ No newline at end of file diff --git a/docs/simple-api/classATTimeOrDerived__inherit__graph.png b/docs/simple-api/classATTimeOrDerived__inherit__graph.png new file mode 100644 index 00000000..a7304718 Binary files /dev/null and b/docs/simple-api/classATTimeOrDerived__inherit__graph.png differ diff --git a/docs/simple-api/classATUntypedAtomic-members.html b/docs/simple-api/classATUntypedAtomic-members.html new file mode 100644 index 00000000..02100697 --- /dev/null +++ b/docs/simple-api/classATUntypedAtomic-members.html @@ -0,0 +1,81 @@ + + +XQilla Simple API: Member List + + + + + + +

ATUntypedAtomic Member List

This is the complete list of members for ATUntypedAtomic, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asString(const DynamicContext *context) const =0ATUntypedAtomic [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0ATUntypedAtomic [pure virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
fgDT_UNTYPEDATOMICATUntypedAtomic [static]
FLOAT enum valueAnyAtomicType
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getInterface(const XMLCh *name) const =0Item [pure virtual]
getPrimitiveTypeIndex() const =0ATUntypedAtomic [pure virtual]
getPrimitiveTypeName() const =0ATUntypedAtomic [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getTypeName() const =0ATUntypedAtomic [pure virtual]
getTypeURI() const =0ATUntypedAtomic [pure virtual]
gXQillaItem [static]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const AnyAtomicType [virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const AnyAtomicType [virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
Item()Item [inline, protected]
NOTATION enum valueAnyAtomicType
NumAtomicObjectTypes enum valueAnyAtomicType
Ptr typedefAnyAtomicType
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
STRING enum valueAnyAtomicType
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATUntypedAtomic.html b/docs/simple-api/classATUntypedAtomic.html new file mode 100644 index 00000000..e282e0ce --- /dev/null +++ b/docs/simple-api/classATUntypedAtomic.html @@ -0,0 +1,265 @@ + + +XQilla Simple API: ATUntypedAtomic Class Reference + + + + + + +

ATUntypedAtomic Class Reference

#include <ATUntypedAtomic.hpp> +

+Inheritance diagram for ATUntypedAtomic:

Inheritance graph
+ + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual bool equals (const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0

Static Public Attributes

static const XMLCh fgDT_UNTYPEDATOMIC []
+

Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* ATUntypedAtomic::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ATUntypedAtomic::equals const AnyAtomicType::Ptr target,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ATUntypedAtomic::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATUntypedAtomic::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATUntypedAtomic::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* ATUntypedAtomic::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+


Member Data Documentation

+

+ + + + +
+ + + + +
const XMLCh ATUntypedAtomic::fgDT_UNTYPEDATOMIC[] [static]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classATUntypedAtomic__inherit__graph.map b/docs/simple-api/classATUntypedAtomic__inherit__graph.map new file mode 100644 index 00000000..71ead6a4 --- /dev/null +++ b/docs/simple-api/classATUntypedAtomic__inherit__graph.map @@ -0,0 +1,4 @@ +base referer +rect $classAnyAtomicType.html 17,158 131,182 +rect $classItem.html 50,84 98,108 +rect $classReferenceCounted.html 7,9 141,33 diff --git a/docs/simple-api/classATUntypedAtomic__inherit__graph.md5 b/docs/simple-api/classATUntypedAtomic__inherit__graph.md5 new file mode 100644 index 00000000..b441f9b6 --- /dev/null +++ b/docs/simple-api/classATUntypedAtomic__inherit__graph.md5 @@ -0,0 +1 @@ +a28ea223ac6be19b519ce92c9ed38b33 \ No newline at end of file diff --git a/docs/simple-api/classATUntypedAtomic__inherit__graph.png b/docs/simple-api/classATUntypedAtomic__inherit__graph.png new file mode 100644 index 00000000..9c6a8c2e Binary files /dev/null and b/docs/simple-api/classATUntypedAtomic__inherit__graph.png differ diff --git a/docs/simple-api/classAnyAtomicType-members.html b/docs/simple-api/classAnyAtomicType-members.html new file mode 100644 index 00000000..99db36e8 --- /dev/null +++ b/docs/simple-api/classAnyAtomicType-members.html @@ -0,0 +1,80 @@ + + +XQilla Simple API: Member List + + + + + + +

AnyAtomicType Member List

This is the complete list of members for AnyAtomicType, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asString(const DynamicContext *context) const =0AnyAtomicType [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0AnyAtomicType [pure virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getInterface(const XMLCh *name) const =0Item [pure virtual]
getPrimitiveTypeIndex() const =0AnyAtomicType [pure virtual]
getPrimitiveTypeName() const =0AnyAtomicType [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getTypeName() const =0AnyAtomicType [pure virtual]
getTypeURI() const =0AnyAtomicType [pure virtual]
gXQillaItem [static]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const AnyAtomicType [virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const AnyAtomicType [virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
Item()Item [inline, protected]
NOTATION enum valueAnyAtomicType
NumAtomicObjectTypes enum valueAnyAtomicType
Ptr typedefAnyAtomicType
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
STRING enum valueAnyAtomicType
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classAnyAtomicType.html b/docs/simple-api/classAnyAtomicType.html new file mode 100644 index 00000000..37098e0f --- /dev/null +++ b/docs/simple-api/classAnyAtomicType.html @@ -0,0 +1,877 @@ + + +XQilla Simple API: AnyAtomicType Class Reference + + + + + + +

AnyAtomicType Class Reference

#include <AnyAtomicType.hpp> +

+Inheritance diagram for AnyAtomicType:

Inheritance graph
+ + + + + + + + + + + + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef RefCountPointer< const
+AnyAtomicType
Ptr
enum  AtomicObjectType {
+  ANY_SIMPLE_TYPE = 0, +ANY_URI = 1, +BASE_64_BINARY = 2, +BOOLEAN = 3, +
+  DATE = 4, +DATE_TIME = 5, +DAY_TIME_DURATION = 6, +DECIMAL = 7, +
+  DOUBLE = 8, +DURATION = 9, +FLOAT = 10, +G_DAY = 11, +
+  G_MONTH = 12, +G_MONTH_DAY = 13, +G_YEAR = 14, +G_YEAR_MONTH = 15, +
+  HEX_BINARY = 16, +NOTATION = 17, +QNAME = 18, +STRING = 19, +
+  TIME = 20, +UNTYPED_ATOMIC = 21, +YEAR_MONTH_DURATION = 22, +NumAtomicObjectTypes = 23 +
+ }

Public Member Functions

virtual bool isAtomicValue () const
virtual bool isNode () const
virtual bool isNumericValue () const
virtual bool isDateOrTimeTypeValue () const
virtual const XMLCh * getPrimitiveTypeURI () const
virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
AnyAtomicType::Ptr castAs (const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const
virtual bool castable (const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual bool equals (const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0
virtual bool isOfType (const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const
virtual bool isInstanceOfType (const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const
bool castIsSupported (AtomicObjectType targetIndex, const DynamicContext *context) const
 Returns true if (a) both the input type and the target type are built-in schema types and cast is supported for the combination.
virtual AtomicObjectType getPrimitiveTypeIndex () const =0

Static Public Attributes

static const XMLCh fgDT_ANYATOMICTYPE []
static const XMLCh fgDT_ANYATOMICTYPE_XERCESHASH []

Protected Member Functions

virtual AnyAtomicType::Ptr castAsInternal (AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const

Classes

class  CastTable
+

Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef RefCountPointer<const AnyAtomicType> AnyAtomicType::Ptr
+
+ + + + + +
+   + + +

+ +

+Reimplemented from Item. +

+Reimplemented in ATBooleanOrDerived, ATDateOrDerived, ATDateTimeOrDerived, ATDecimalOrDerived, ATDoubleOrDerived, ATDurationOrDerived, ATFloatOrDerived, ATGDayOrDerived, ATGMonthDayOrDerived, ATGMonthOrDerived, ATGYearMonthOrDerived, ATGYearOrDerived, ATQNameOrDerived, ATStringOrDerived, ATTimeOrDerived, DateOrTimeType, and Numeric.

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
enum AnyAtomicType::AtomicObjectType
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + + + + + + + + + + + + + + + + + + + + + + + +
ANY_SIMPLE_TYPE  +
ANY_URI  +
BASE_64_BINARY  +
BOOLEAN  +
DATE  +
DATE_TIME  +
DAY_TIME_DURATION  +
DECIMAL  +
DOUBLE  +
DURATION  +
FLOAT  +
G_DAY  +
G_MONTH  +
G_MONTH_DAY  +
G_YEAR  +
G_YEAR_MONTH  +
HEX_BINARY  +
NOTATION  +
QNAME  +
STRING  +
TIME  +
UNTYPED_ATOMIC  +
YEAR_MONTH_DURATION  +
NumAtomicObjectTypes  +
+
+
+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* AnyAtomicType::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Item. +

+Implemented in ATAnySimpleType, ATAnyURIOrDerived, ATBase64BinaryOrDerived, ATBooleanOrDerived, ATDateOrDerived, ATDateTimeOrDerived, ATDecimalOrDerived, ATDoubleOrDerived, ATDurationOrDerived, ATFloatOrDerived, ATGDayOrDerived, ATGMonthDayOrDerived, ATGMonthOrDerived, ATGYearMonthOrDerived, ATGYearOrDerived, ATHexBinaryOrDerived, ATNotationOrDerived, ATQNameOrDerived, ATStringOrDerived, ATTimeOrDerived, ATUntypedAtomic, and Numeric.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool AnyAtomicType::castable const XMLCh *  targetURI,
const XMLCh *  targetType,
const DynamicContext context
const [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
AnyAtomicType::Ptr AnyAtomicType::castAs const XMLCh *  targetURI,
const XMLCh *  targetType,
const DynamicContext context
const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual AnyAtomicType::Ptr AnyAtomicType::castAsInternal AtomicObjectType  targetIndex,
const XMLCh *  targetURI,
const XMLCh *  targetType,
const DynamicContext context
const [protected, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool AnyAtomicType::castIsSupported AtomicObjectType  targetIndex,
const DynamicContext context
const
+
+ + + + + +
+   + + +

+Returns true if (a) both the input type and the target type are built-in schema types and cast is supported for the combination. +

+(b) the input type is a derived atomic type and the target type is a supertype of the input type (c) the target type is a derived atomic type and the input type is xs:string, xs:anySimpleType, or a supertype of the target type. (d) If a primitive type P1 can be cast into a primitive type P2, then any subtype of P1 can be cast into any subtype of P2

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool AnyAtomicType::equals const AnyAtomicType::Ptr target,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implemented in ATAnySimpleType, ATAnyURIOrDerived, ATBase64BinaryOrDerived, ATBooleanOrDerived, ATDateOrDerived, ATDateTimeOrDerived, ATDurationOrDerived, ATGDayOrDerived, ATGMonthDayOrDerived, ATGMonthOrDerived, ATGYearMonthOrDerived, ATGYearOrDerived, ATHexBinaryOrDerived, ATNotationOrDerived, ATQNameOrDerived, ATStringOrDerived, ATTimeOrDerived, ATUntypedAtomic, and Numeric.

+

+ + + + +
+ + + + + + + + +
virtual AtomicObjectType AnyAtomicType::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implemented in ATAnySimpleType, ATAnyURIOrDerived, ATBase64BinaryOrDerived, ATBooleanOrDerived, ATDateOrDerived, ATDateTimeOrDerived, ATDecimalOrDerived, ATDoubleOrDerived, ATDurationOrDerived, ATFloatOrDerived, ATGDayOrDerived, ATGMonthDayOrDerived, ATGMonthOrDerived, ATGYearMonthOrDerived, ATGYearOrDerived, ATHexBinaryOrDerived, ATNotationOrDerived, ATQNameOrDerived, ATStringOrDerived, ATTimeOrDerived, ATUntypedAtomic, and Numeric.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* AnyAtomicType::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implemented in ATAnySimpleType, ATAnyURIOrDerived, ATBase64BinaryOrDerived, ATBooleanOrDerived, ATDateOrDerived, ATDateTimeOrDerived, ATDecimalOrDerived, ATDoubleOrDerived, ATDurationOrDerived, ATFloatOrDerived, ATGDayOrDerived, ATGMonthDayOrDerived, ATGMonthOrDerived, ATGYearMonthOrDerived, ATGYearOrDerived, ATHexBinaryOrDerived, ATNotationOrDerived, ATQNameOrDerived, ATStringOrDerived, ATTimeOrDerived, ATUntypedAtomic, and Numeric.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* AnyAtomicType::getPrimitiveTypeURI  )  const [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* AnyAtomicType::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Item. +

+Implemented in ATAnySimpleType, ATAnyURIOrDerived, ATBase64BinaryOrDerived, ATBooleanOrDerived, ATDateOrDerived, ATDateTimeOrDerived, ATDecimalOrDerived, ATDoubleOrDerived, ATDurationOrDerived, ATFloatOrDerived, ATGDayOrDerived, ATGMonthDayOrDerived, ATGMonthOrDerived, ATGYearMonthOrDerived, ATGYearOrDerived, ATHexBinaryOrDerived, ATNotationOrDerived, ATQNameOrDerived, ATStringOrDerived, ATTimeOrDerived, ATUntypedAtomic, and Numeric.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* AnyAtomicType::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Item. +

+Implemented in ATAnySimpleType, ATAnyURIOrDerived, ATBase64BinaryOrDerived, ATBooleanOrDerived, ATDateOrDerived, ATDateTimeOrDerived, ATDecimalOrDerived, ATDoubleOrDerived, ATDurationOrDerived, ATFloatOrDerived, ATGDayOrDerived, ATGMonthDayOrDerived, ATGMonthOrDerived, ATGYearMonthOrDerived, ATGYearOrDerived, ATHexBinaryOrDerived, ATNotationOrDerived, ATQNameOrDerived, ATStringOrDerived, ATTimeOrDerived, ATUntypedAtomic, and Numeric.

+

+ + + + +
+ + + + + + + + +
virtual bool AnyAtomicType::isAtomicValue  )  const [virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Item.

+

+ + + + +
+ + + + + + + + +
virtual bool AnyAtomicType::isDateOrTimeTypeValue  )  const [virtual]
+
+ + + + + +
+   + + +

+ +

+Reimplemented in DateOrTimeType.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool AnyAtomicType::isInstanceOfType const XMLCh *  targetURI,
const XMLCh *  targetType,
const StaticContext context
const [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual bool AnyAtomicType::isNode  )  const [virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Item.

+

+ + + + +
+ + + + + + + + +
virtual bool AnyAtomicType::isNumericValue  )  const [virtual]
+
+ + + + + +
+   + + +

+ +

+Reimplemented in Numeric.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool AnyAtomicType::isOfType const XMLCh *  targetURI,
const XMLCh *  targetType,
const DynamicContext context
const [virtual]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
const XMLCh AnyAtomicType::fgDT_ANYATOMICTYPE[] [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const XMLCh AnyAtomicType::fgDT_ANYATOMICTYPE_XERCESHASH[] [static]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classAnyAtomicType__inherit__graph.map b/docs/simple-api/classAnyAtomicType__inherit__graph.map new file mode 100644 index 00000000..e9629f6e --- /dev/null +++ b/docs/simple-api/classAnyAtomicType__inherit__graph.map @@ -0,0 +1,14 @@ +base referer +rect $classATAnySimpleType.html 294,8 422,32 +rect $classATAnyURIOrDerived.html 286,56 430,80 +rect $classATBase64BinaryOrDerived.html 268,104 449,128 +rect $classATBooleanOrDerived.html 285,152 432,176 +rect $classATDurationOrDerived.html 284,200 433,224 +rect $classATHexBinaryOrDerived.html 278,248 438,272 +rect $classATNotationOrDerived.html 284,296 433,320 +rect $classATQNameOrDerived.html 286,344 430,368 +rect $classATStringOrDerived.html 292,392 425,416 +rect $classATUntypedAtomic.html 294,440 422,464 +rect $classDateOrTimeType.html 297,488 420,512 +rect $classNumeric.html 322,536 394,560 +rect $classItem.html 8,272 56,296 diff --git a/docs/simple-api/classAnyAtomicType__inherit__graph.md5 b/docs/simple-api/classAnyAtomicType__inherit__graph.md5 new file mode 100644 index 00000000..bc5c52fd --- /dev/null +++ b/docs/simple-api/classAnyAtomicType__inherit__graph.md5 @@ -0,0 +1 @@ +505322d50d9dde41426eb0f15ff8c5b4 \ No newline at end of file diff --git a/docs/simple-api/classAnyAtomicType__inherit__graph.png b/docs/simple-api/classAnyAtomicType__inherit__graph.png new file mode 100644 index 00000000..2e49bc2c Binary files /dev/null and b/docs/simple-api/classAnyAtomicType__inherit__graph.png differ diff --git a/docs/simple-api/classAutoContextInfoReset-members.html b/docs/simple-api/classAutoContextInfoReset-members.html new file mode 100644 index 00000000..850ee384 --- /dev/null +++ b/docs/simple-api/classAutoContextInfoReset-members.html @@ -0,0 +1,33 @@ + + +XQilla Simple API: Member List + + + + + + +

AutoContextInfoReset Member List

This is the complete list of members for AutoContextInfoReset, including all inherited members.

+ + + + + + +
AutoContextInfoReset(DynamicContext *context)AutoContextInfoReset [inline]
oldContextItemAutoContextInfoReset
oldContextPositionAutoContextInfoReset
oldContextSizeAutoContextInfoReset
resetContextInfo()AutoContextInfoReset [inline]
~AutoContextInfoReset()AutoContextInfoReset [inline]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classAutoContextInfoReset.html b/docs/simple-api/classAutoContextInfoReset.html new file mode 100644 index 00000000..ed5df56c --- /dev/null +++ b/docs/simple-api/classAutoContextInfoReset.html @@ -0,0 +1,201 @@ + + +XQilla Simple API: AutoContextInfoReset Class Reference + + + + + + +

AutoContextInfoReset Class Reference

#include <ContextHelpers.hpp> +

+List of all members. + + + + + + + + + + + + + + + +

Public Member Functions

 AutoContextInfoReset (DynamicContext *context)
 ~AutoContextInfoReset ()
void resetContextInfo ()

Public Attributes

Item::Ptr oldContextItem
unsigned int oldContextPosition
unsigned int oldContextSize
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
AutoContextInfoReset::AutoContextInfoReset DynamicContext context  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
AutoContextInfoReset::~AutoContextInfoReset  )  [inline]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
void AutoContextInfoReset::resetContextInfo  )  [inline]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
Item::Ptr AutoContextInfoReset::oldContextItem
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
unsigned int AutoContextInfoReset::oldContextPosition
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
unsigned int AutoContextInfoReset::oldContextSize
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classAutoContextItemTypeReset-members.html b/docs/simple-api/classAutoContextItemTypeReset-members.html new file mode 100644 index 00000000..aed9f1c3 --- /dev/null +++ b/docs/simple-api/classAutoContextItemTypeReset-members.html @@ -0,0 +1,31 @@ + + +XQilla Simple API: Member List + + + + + + +

AutoContextItemTypeReset Member List

This is the complete list of members for AutoContextItemTypeReset, including all inherited members.

+ + + + +
AutoContextItemTypeReset(StaticContext *context, const StaticType &sType)AutoContextItemTypeReset [inline]
context_AutoContextItemTypeReset [protected]
sType_AutoContextItemTypeReset [protected]
~AutoContextItemTypeReset()AutoContextItemTypeReset [inline]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classAutoContextItemTypeReset.html b/docs/simple-api/classAutoContextItemTypeReset.html new file mode 100644 index 00000000..59d8d371 --- /dev/null +++ b/docs/simple-api/classAutoContextItemTypeReset.html @@ -0,0 +1,155 @@ + + +XQilla Simple API: AutoContextItemTypeReset Class Reference + + + + + + +

AutoContextItemTypeReset Class Reference

#include <ContextHelpers.hpp> +

+List of all members. + + + + + + + + + + + +

Public Member Functions

 AutoContextItemTypeReset (StaticContext *context, const StaticType &sType)
 ~AutoContextItemTypeReset ()

Protected Attributes

StaticContextcontext_
StaticType sType_
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
AutoContextItemTypeReset::AutoContextItemTypeReset StaticContext context,
const StaticType &  sType
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
AutoContextItemTypeReset::~AutoContextItemTypeReset  )  [inline]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
StaticContext* AutoContextItemTypeReset::context_ [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
StaticType AutoContextItemTypeReset::sType_ [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classAutoDeallocate-members.html b/docs/simple-api/classAutoDeallocate-members.html new file mode 100644 index 00000000..c1ecf331 --- /dev/null +++ b/docs/simple-api/classAutoDeallocate-members.html @@ -0,0 +1,36 @@ + + +XQilla Simple API: Member List + + + + + + +

AutoDeallocate< TYPE > Member List

This is the complete list of members for AutoDeallocate< TYPE >, including all inherited members.

+ + + + + + + + + +
adopt()AutoDeallocate< TYPE > [inline]
AutoDeallocate(xercesc::MemoryManager *mmgr, size_t size=sizeof(TYPE))AutoDeallocate< TYPE > [inline]
AutoDeallocate(TYPE *p, xercesc::MemoryManager *mmgr)AutoDeallocate< TYPE > [inline]
get() const AutoDeallocate< TYPE > [inline]
operator *() const AutoDeallocate< TYPE > [inline]
operator TYPE *() const AutoDeallocate< TYPE > [inline]
operator->() const AutoDeallocate< TYPE > [inline]
set(TYPE *p)AutoDeallocate< TYPE > [inline]
~AutoDeallocate()AutoDeallocate< TYPE > [inline]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classAutoDeallocate.html b/docs/simple-api/classAutoDeallocate.html new file mode 100644 index 00000000..b4daa028 --- /dev/null +++ b/docs/simple-api/classAutoDeallocate.html @@ -0,0 +1,357 @@ + + +XQilla Simple API: AutoDeallocate< TYPE > Class Template Reference + + + + + + +

AutoDeallocate< TYPE > Class Template Reference

#include <XPath2MemoryManager.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 AutoDeallocate (xercesc::MemoryManager *mmgr, size_t size=sizeof(TYPE))
 AutoDeallocate (TYPE *p, xercesc::MemoryManager *mmgr)
 ~AutoDeallocate ()
TYPE & operator * () const
TYPE * operator-> () const
 operator TYPE * () const
TYPE * get () const
TYPE * adopt ()
void set (TYPE *p)
+

template<class TYPE>
+ class AutoDeallocate< TYPE >

+ +

Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<class TYPE>
AutoDeallocate< TYPE >::AutoDeallocate xercesc::MemoryManager mmgr,
size_t  size = sizeof(TYPE)
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<class TYPE>
AutoDeallocate< TYPE >::AutoDeallocate TYPE *  p,
xercesc::MemoryManager mmgr
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
AutoDeallocate< TYPE >::~AutoDeallocate  )  [inline]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
TYPE* AutoDeallocate< TYPE >::adopt  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
TYPE* AutoDeallocate< TYPE >::get  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
TYPE& AutoDeallocate< TYPE >::operator *  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
AutoDeallocate< TYPE >::operator TYPE *  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
TYPE* AutoDeallocate< TYPE >::operator->  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + +
+template<class TYPE>
void AutoDeallocate< TYPE >::set TYPE *  p  )  [inline]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classAutoDelete-members.html b/docs/simple-api/classAutoDelete-members.html new file mode 100644 index 00000000..58913d75 --- /dev/null +++ b/docs/simple-api/classAutoDelete-members.html @@ -0,0 +1,35 @@ + + +XQilla Simple API: Member List + + + + + + +

AutoDelete< TYPE > Member List

This is the complete list of members for AutoDelete< TYPE >, including all inherited members.

+ + + + + + + + +
adopt()AutoDelete< TYPE > [inline]
AutoDelete(TYPE *p)AutoDelete< TYPE > [inline]
get() const AutoDelete< TYPE > [inline]
operator *() const AutoDelete< TYPE > [inline]
operator TYPE *() const AutoDelete< TYPE > [inline]
operator->() const AutoDelete< TYPE > [inline]
set(TYPE *p)AutoDelete< TYPE > [inline]
~AutoDelete()AutoDelete< TYPE > [inline]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classAutoDelete.html b/docs/simple-api/classAutoDelete.html new file mode 100644 index 00000000..79553cd5 --- /dev/null +++ b/docs/simple-api/classAutoDelete.html @@ -0,0 +1,305 @@ + + +XQilla Simple API: AutoDelete< TYPE > Class Template Reference + + + + + + +

AutoDelete< TYPE > Class Template Reference

#include <XPath2MemoryManager.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + +

Public Member Functions

 AutoDelete (TYPE *p)
 ~AutoDelete ()
TYPE & operator * () const
TYPE * operator-> () const
 operator TYPE * () const
TYPE * get () const
TYPE * adopt ()
void set (TYPE *p)
+

template<class TYPE>
+ class AutoDelete< TYPE >

+ +

Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + +
+template<class TYPE>
AutoDelete< TYPE >::AutoDelete TYPE *  p  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
AutoDelete< TYPE >::~AutoDelete  )  [inline]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
TYPE* AutoDelete< TYPE >::adopt  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
TYPE* AutoDelete< TYPE >::get  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
TYPE& AutoDelete< TYPE >::operator *  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
AutoDelete< TYPE >::operator TYPE *  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
TYPE* AutoDelete< TYPE >::operator->  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + +
+template<class TYPE>
void AutoDelete< TYPE >::set TYPE *  p  )  [inline]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classAutoDeleteArray-members.html b/docs/simple-api/classAutoDeleteArray-members.html new file mode 100644 index 00000000..c76305f5 --- /dev/null +++ b/docs/simple-api/classAutoDeleteArray-members.html @@ -0,0 +1,35 @@ + + +XQilla Simple API: Member List + + + + + + +

AutoDeleteArray< TYPE > Member List

This is the complete list of members for AutoDeleteArray< TYPE >, including all inherited members.

+ + + + + + + + +
adopt()AutoDeleteArray< TYPE > [inline]
AutoDeleteArray(TYPE *p)AutoDeleteArray< TYPE > [inline]
get() const AutoDeleteArray< TYPE > [inline]
operator *() const AutoDeleteArray< TYPE > [inline]
operator TYPE *() const AutoDeleteArray< TYPE > [inline]
operator->() const AutoDeleteArray< TYPE > [inline]
set(TYPE *p)AutoDeleteArray< TYPE > [inline]
~AutoDeleteArray()AutoDeleteArray< TYPE > [inline]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classAutoDeleteArray.html b/docs/simple-api/classAutoDeleteArray.html new file mode 100644 index 00000000..fe387120 --- /dev/null +++ b/docs/simple-api/classAutoDeleteArray.html @@ -0,0 +1,305 @@ + + +XQilla Simple API: AutoDeleteArray< TYPE > Class Template Reference + + + + + + +

AutoDeleteArray< TYPE > Class Template Reference

#include <XPath2MemoryManager.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + +

Public Member Functions

 AutoDeleteArray (TYPE *p)
 ~AutoDeleteArray ()
TYPE & operator * () const
TYPE * operator-> () const
 operator TYPE * () const
TYPE * get () const
TYPE * adopt ()
void set (TYPE *p)
+

template<class TYPE>
+ class AutoDeleteArray< TYPE >

+ +

Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + +
+template<class TYPE>
AutoDeleteArray< TYPE >::AutoDeleteArray TYPE *  p  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
AutoDeleteArray< TYPE >::~AutoDeleteArray  )  [inline]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
TYPE* AutoDeleteArray< TYPE >::adopt  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
TYPE* AutoDeleteArray< TYPE >::get  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
TYPE& AutoDeleteArray< TYPE >::operator *  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
AutoDeleteArray< TYPE >::operator TYPE *  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
TYPE* AutoDeleteArray< TYPE >::operator->  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + +
+template<class TYPE>
void AutoDeleteArray< TYPE >::set TYPE *  p  )  [inline]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classAutoNodeSetOrderingReset-members.html b/docs/simple-api/classAutoNodeSetOrderingReset-members.html new file mode 100644 index 00000000..91b8b5a1 --- /dev/null +++ b/docs/simple-api/classAutoNodeSetOrderingReset-members.html @@ -0,0 +1,31 @@ + + +XQilla Simple API: Member List + + + + + + +

AutoNodeSetOrderingReset Member List

This is the complete list of members for AutoNodeSetOrderingReset, including all inherited members.

+ + + + +
AutoNodeSetOrderingReset(StaticContext *context, StaticContext::NodeSetOrdering ordering=StaticContext::ORDERING_UNORDERED)AutoNodeSetOrderingReset [inline]
context_AutoNodeSetOrderingReset [protected]
ordering_AutoNodeSetOrderingReset [protected]
~AutoNodeSetOrderingReset()AutoNodeSetOrderingReset [inline]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classAutoNodeSetOrderingReset.html b/docs/simple-api/classAutoNodeSetOrderingReset.html new file mode 100644 index 00000000..e5ed0325 --- /dev/null +++ b/docs/simple-api/classAutoNodeSetOrderingReset.html @@ -0,0 +1,155 @@ + + +XQilla Simple API: AutoNodeSetOrderingReset Class Reference + + + + + + +

AutoNodeSetOrderingReset Class Reference

#include <ContextHelpers.hpp> +

+List of all members. + + + + + + + + + + + +

Public Member Functions

 AutoNodeSetOrderingReset (StaticContext *context, StaticContext::NodeSetOrdering ordering=StaticContext::ORDERING_UNORDERED)
 ~AutoNodeSetOrderingReset ()

Protected Attributes

StaticContextcontext_
StaticContext::NodeSetOrdering ordering_
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
AutoNodeSetOrderingReset::AutoNodeSetOrderingReset StaticContext context,
StaticContext::NodeSetOrdering  ordering = StaticContext::ORDERING_UNORDERED
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
AutoNodeSetOrderingReset::~AutoNodeSetOrderingReset  )  [inline]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
StaticContext* AutoNodeSetOrderingReset::context_ [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
StaticContext::NodeSetOrdering AutoNodeSetOrderingReset::ordering_ [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classAutoNsScopeReset-members.html b/docs/simple-api/classAutoNsScopeReset-members.html new file mode 100644 index 00000000..2f54d10c --- /dev/null +++ b/docs/simple-api/classAutoNsScopeReset-members.html @@ -0,0 +1,32 @@ + + +XQilla Simple API: Member List + + + + + + +

AutoNsScopeReset Member List

This is the complete list of members for AutoNsScopeReset, including all inherited members.

+ + + + + +
_contextAutoNsScopeReset [protected]
_defaultElementAndTypeNSAutoNsScopeReset [protected]
_oldNSResolverAutoNsScopeReset [protected]
AutoNsScopeReset(StaticContext *context, xercesc::DOMXPathNSResolver *newResolver)AutoNsScopeReset [inline]
~AutoNsScopeReset()AutoNsScopeReset [inline]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classAutoNsScopeReset.html b/docs/simple-api/classAutoNsScopeReset.html new file mode 100644 index 00000000..a48ca564 --- /dev/null +++ b/docs/simple-api/classAutoNsScopeReset.html @@ -0,0 +1,180 @@ + + +XQilla Simple API: AutoNsScopeReset Class Reference + + + + + + +

AutoNsScopeReset Class Reference

#include <XQScopedNamespace.hpp> +

+List of all members. + + + + + + + + + + + + + +

Public Member Functions

 AutoNsScopeReset (StaticContext *context, xercesc::DOMXPathNSResolver *newResolver)
 ~AutoNsScopeReset ()

Protected Attributes

StaticContext_context
const xercesc::DOMXPathNSResolver_oldNSResolver
const XMLCh * _defaultElementAndTypeNS
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
AutoNsScopeReset::AutoNsScopeReset StaticContext context,
xercesc::DOMXPathNSResolver newResolver
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
AutoNsScopeReset::~AutoNsScopeReset  )  [inline]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
StaticContext* AutoNsScopeReset::_context [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const XMLCh* AutoNsScopeReset::_defaultElementAndTypeNS [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const xercesc:: DOMXPathNSResolver* AutoNsScopeReset::_oldNSResolver [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classAutoRelease-members.html b/docs/simple-api/classAutoRelease-members.html new file mode 100644 index 00000000..f9daa893 --- /dev/null +++ b/docs/simple-api/classAutoRelease-members.html @@ -0,0 +1,35 @@ + + +XQilla Simple API: Member List + + + + + + +

AutoRelease< TYPE > Member List

This is the complete list of members for AutoRelease< TYPE >, including all inherited members.

+ + + + + + + + +
adopt()AutoRelease< TYPE > [inline]
AutoRelease(TYPE *p)AutoRelease< TYPE > [inline]
get() const AutoRelease< TYPE > [inline]
operator *() const AutoRelease< TYPE > [inline]
operator TYPE *() const AutoRelease< TYPE > [inline]
operator->() const AutoRelease< TYPE > [inline]
set(TYPE *p)AutoRelease< TYPE > [inline]
~AutoRelease()AutoRelease< TYPE > [inline]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classAutoRelease.html b/docs/simple-api/classAutoRelease.html new file mode 100644 index 00000000..e116e803 --- /dev/null +++ b/docs/simple-api/classAutoRelease.html @@ -0,0 +1,305 @@ + + +XQilla Simple API: AutoRelease< TYPE > Class Template Reference + + + + + + +

AutoRelease< TYPE > Class Template Reference

#include <XPath2MemoryManager.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + +

Public Member Functions

 AutoRelease (TYPE *p)
 ~AutoRelease ()
TYPE & operator * () const
TYPE * operator-> () const
 operator TYPE * () const
TYPE * get () const
TYPE * adopt ()
void set (TYPE *p)
+

template<class TYPE>
+ class AutoRelease< TYPE >

+ +

Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + +
+template<class TYPE>
AutoRelease< TYPE >::AutoRelease TYPE *  p  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
AutoRelease< TYPE >::~AutoRelease  )  [inline]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
TYPE* AutoRelease< TYPE >::adopt  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
TYPE* AutoRelease< TYPE >::get  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
TYPE& AutoRelease< TYPE >::operator *  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
AutoRelease< TYPE >::operator TYPE *  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
TYPE* AutoRelease< TYPE >::operator->  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + +
+template<class TYPE>
void AutoRelease< TYPE >::set TYPE *  p  )  [inline]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classCollation-members.html b/docs/simple-api/classCollation-members.html new file mode 100644 index 00000000..22757682 --- /dev/null +++ b/docs/simple-api/classCollation-members.html @@ -0,0 +1,32 @@ + + +XQilla Simple API: Member List + + + + + + +

Collation Member List

This is the complete list of members for Collation, including all inherited members.

+ + + + + +
Collation()Collation [inline, protected]
compare(const XMLCh *const string1, const XMLCh *const string2) const =0Collation [pure virtual]
getCollationName() const =0Collation [pure virtual]
sort(Sequence data, const DynamicContext *context) const =0Collation [pure virtual]
~Collation()Collation [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classCollation.html b/docs/simple-api/classCollation.html new file mode 100644 index 00000000..b4104e7e --- /dev/null +++ b/docs/simple-api/classCollation.html @@ -0,0 +1,202 @@ + + +XQilla Simple API: Collation Class Reference + + + + + + +

Collation Class Reference

#include <Collation.hpp> +

+List of all members. + + + + + + + + + + + + + +

Public Member Functions

virtual ~Collation ()
virtual const XMLCh * getCollationName () const =0
virtual Sequence sort (Sequence data, const DynamicContext *context) const =0
virtual int compare (const XMLCh *const string1, const XMLCh *const string2) const =0

Protected Member Functions

 Collation ()
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
virtual Collation::~Collation  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
Collation::Collation  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual int Collation::compare const XMLCh *const   string1,
const XMLCh *const   string2
const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* Collation::getCollationName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Sequence Collation::sort Sequence  data,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classDateOrTimeType-members.html b/docs/simple-api/classDateOrTimeType-members.html new file mode 100644 index 00000000..7f531583 --- /dev/null +++ b/docs/simple-api/classDateOrTimeType-members.html @@ -0,0 +1,81 @@ + + +XQilla Simple API: Member List + + + + + + +

DateOrTimeType Member List

This is the complete list of members for DateOrTimeType, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asString(const DynamicContext *context) const =0AnyAtomicType [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const =0AnyAtomicType [pure virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getInterface(const XMLCh *name) const =0Item [pure virtual]
getPrimitiveTypeIndex() const =0AnyAtomicType [pure virtual]
getPrimitiveTypeName() const =0AnyAtomicType [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getTypeName() const =0AnyAtomicType [pure virtual]
getTypeURI() const =0AnyAtomicType [pure virtual]
gXQillaItem [static]
hasTimezone() const =0DateOrTimeType [pure virtual]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const DateOrTimeType [virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const AnyAtomicType [virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
Item()Item [inline, protected]
NOTATION enum valueAnyAtomicType
NumAtomicObjectTypes enum valueAnyAtomicType
Ptr typedefDateOrTimeType
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
STRING enum valueAnyAtomicType
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classDateOrTimeType.html b/docs/simple-api/classDateOrTimeType.html new file mode 100644 index 00000000..3afe8db0 --- /dev/null +++ b/docs/simple-api/classDateOrTimeType.html @@ -0,0 +1,144 @@ + + +XQilla Simple API: DateOrTimeType Class Reference + + + + + + +

DateOrTimeType Class Reference

#include <DateOrTimeType.hpp> +

+Inheritance diagram for DateOrTimeType:

Inheritance graph
+ + + + + + + + + + + +
[legend]
List of all members. + + + + + + + + + + +

Public Types

typedef RefCountPointer< const
+DateOrTimeType
Ptr

Public Member Functions

virtual bool isDateOrTimeTypeValue () const
virtual bool hasTimezone () const =0
 Returns true if the timezone is defined for this object, false otherwise.
+

Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef RefCountPointer<const DateOrTimeType> DateOrTimeType::Ptr
+
+ + + + + +
+   + + +

+ +

+Reimplemented from AnyAtomicType. +

+Reimplemented in ATDateOrDerived, ATDateTimeOrDerived, ATGDayOrDerived, ATGMonthDayOrDerived, ATGMonthOrDerived, ATGYearMonthOrDerived, ATGYearOrDerived, and ATTimeOrDerived.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual bool DateOrTimeType::hasTimezone  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns true if the timezone is defined for this object, false otherwise. +

+ +

+Implemented in ATDateOrDerived, ATDateTimeOrDerived, ATGDayOrDerived, ATGMonthDayOrDerived, ATGMonthOrDerived, ATGYearMonthOrDerived, ATGYearOrDerived, and ATTimeOrDerived.

+

+ + + + +
+ + + + + + + + +
virtual bool DateOrTimeType::isDateOrTimeTypeValue  )  const [virtual]
+
+ + + + + +
+   + + +

+ +

+Reimplemented from AnyAtomicType.

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classDateOrTimeType__inherit__graph.map b/docs/simple-api/classDateOrTimeType__inherit__graph.map new file mode 100644 index 00000000..701caf46 --- /dev/null +++ b/docs/simple-api/classDateOrTimeType__inherit__graph.map @@ -0,0 +1,10 @@ +base referer +rect $classATDateOrDerived.html 365,8 490,32 +rect $classATDateTimeOrDerived.html 350,56 505,80 +rect $classATGDayOrDerived.html 362,104 493,128 +rect $classATGMonthDayOrDerived.html 344,152 512,176 +rect $classATGMonthOrDerived.html 354,200 501,224 +rect $classATGYearMonthOrDerived.html 342,248 513,272 +rect $classATGYearOrDerived.html 361,296 494,320 +rect $classATTimeOrDerived.html 364,344 492,368 +rect $classAnyAtomicType.html 8,176 122,200 diff --git a/docs/simple-api/classDateOrTimeType__inherit__graph.md5 b/docs/simple-api/classDateOrTimeType__inherit__graph.md5 new file mode 100644 index 00000000..5f88a9bf --- /dev/null +++ b/docs/simple-api/classDateOrTimeType__inherit__graph.md5 @@ -0,0 +1 @@ +38687693a43032cf0725beec0018d51f \ No newline at end of file diff --git a/docs/simple-api/classDateOrTimeType__inherit__graph.png b/docs/simple-api/classDateOrTimeType__inherit__graph.png new file mode 100644 index 00000000..c62917f0 Binary files /dev/null and b/docs/simple-api/classDateOrTimeType__inherit__graph.png differ diff --git a/docs/simple-api/classDynamicContext-members.html b/docs/simple-api/classDynamicContext-members.html new file mode 100644 index 00000000..880962d2 --- /dev/null +++ b/docs/simple-api/classDynamicContext-members.html @@ -0,0 +1,122 @@ + + +XQilla Simple API: Member List + + + + + + +

DynamicContext Member List

This is the complete list of members for DynamicContext, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addCollation(Collation *collation)=0StaticContext [pure virtual]
addCustomFunction(FuncFactory *func)=0StaticContext [pure virtual]
addSchemaLocation(const XMLCh *uri, VectorOfStrings *locations)=0StaticContext [pure virtual]
clearDynamicContext()=0DynamicContext [pure virtual]
CONSTRUCTION_MODE_PRESERVE enum valueStaticContext
CONSTRUCTION_MODE_STRIP enum valueStaticContext
ConstructionMode enum nameStaticContext
createDynamicContext(xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager) const =0StaticContext [pure virtual]
createModuleContext(xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager) const =0StaticContext [pure virtual]
createNewDocument() const =0StaticContext [pure virtual]
decrementDocumentRefCount(const xercesc::DOMDocument *document) const =0DynamicContext [pure virtual]
enableDebugging(bool enable=true)=0StaticContext [pure virtual]
FLWOR_ORDER_EMPTY_GREATEST enum valueStaticContext
FLWOR_ORDER_EMPTY_LEAST enum valueStaticContext
FLWOROrderingMode enum nameStaticContext
getBaseURI() const =0StaticContext [pure virtual]
getCollation(const XMLCh *const URI, const LocationInfo *location) const =0StaticContext [pure virtual]
getConstructionMode() const =0StaticContext [pure virtual]
getContextItem() const =0DynamicContext [pure virtual]
getContextItemType() const =0StaticContext [pure virtual]
getContextPosition() const =0DynamicContext [pure virtual]
getContextSize() const =0DynamicContext [pure virtual]
getCurrentTime() const =0DynamicContext [pure virtual]
getDebugCallback() const =0DynamicContext [pure virtual]
getDefaultCollation(const LocationInfo *location) const =0StaticContext [pure virtual]
getDefaultElementAndTypeNS() const =0StaticContext [pure virtual]
getDefaultFLWOROrderingMode() const =0StaticContext [pure virtual]
getDefaultFuncNS() const =0StaticContext [pure virtual]
getDocumentCache() const =0StaticContext [pure virtual]
getImplicitTimezone() const =0DynamicContext [pure virtual]
getInheritNamespaces() const =0StaticContext [pure virtual]
getItemFactory() const =0StaticContext [pure virtual]
getMemoryManager() const =0StaticContext [pure virtual]
getModuleResolver() const =0StaticContext [pure virtual]
getNodeSetOrdering() const =0StaticContext [pure virtual]
getNSResolver() const =0StaticContext [pure virtual]
getPrefixBoundToUri(const XMLCh *uri) const =0StaticContext [pure virtual]
getPreserveBoundarySpace() const =0StaticContext [pure virtual]
getPreserveNamespaces() const =0StaticContext [pure virtual]
getUriBoundToPrefix(const XMLCh *prefix, const LocationInfo *location) const =0StaticContext [pure virtual]
getVariableStore()=0DynamicContext [pure virtual]
getVariableTypeStore()=0StaticContext [pure virtual]
getXMLEntityResolver() const =0StaticContext [pure virtual]
getXPath1CompatibilityMode() const =0StaticContext [pure virtual]
incrementDocumentRefCount(const xercesc::DOMDocument *document) const =0DynamicContext [pure virtual]
isDebuggingEnabled() const =0StaticContext [pure virtual]
isTypeOrDerivedFromType(const XMLCh *const uri, const XMLCh *const typeName, const XMLCh *const uriToCheck, const XMLCh *const typeNameToCheck) const =0StaticContext [pure virtual]
lookUpFunction(const XMLCh *prefix, const XMLCh *name, VectorOfASTNodes &v, const LocationInfo *location) const =0StaticContext [pure virtual]
NodeSetOrdering enum nameStaticContext
operator delete(void *p)xercesc::XMemory
operator delete(void *p, MemoryManager *memMgr)xercesc::XMemory
operator delete(void *p, void *ptr)xercesc::XMemory
operator new(size_t size)xercesc::XMemory
operator new(size_t size, MemoryManager *memMgr)xercesc::XMemory
operator new(size_t size, void *ptr)xercesc::XMemory
ORDERING_ORDERED enum valueStaticContext
ORDERING_UNORDERED enum valueStaticContext
registerURIResolver(URIResolver *resolver)=0DynamicContext [pure virtual]
releaseDocument(xercesc::DOMDocument *doc) const =0StaticContext [pure virtual]
resolveCollection(const XMLCh *uri, const LocationInfo *location)=0DynamicContext [pure virtual]
resolveDefaultCollection()=0DynamicContext [pure virtual]
resolveDocument(const XMLCh *uri, const LocationInfo *location)=0DynamicContext [pure virtual]
resolveModuleURI(const XMLCh *uri) const =0StaticContext [pure virtual]
setBaseURI(const XMLCh *newURI)=0StaticContext [pure virtual]
setConstructionMode(ConstructionMode newMode)=0StaticContext [pure virtual]
setContextItem(const Item::Ptr &item)=0DynamicContext [pure virtual]
setContextItemType(const StaticType &st)=0StaticContext [pure virtual]
setContextPosition(unsigned int pos)=0DynamicContext [pure virtual]
setContextSize(unsigned int size)=0DynamicContext [pure virtual]
setCurrentTime(time_t newTime)=0DynamicContext [pure virtual]
setDebugCallback(XQDebugCallback *callback)=0DynamicContext [pure virtual]
setDefaultCollation(const XMLCh *const URI)=0StaticContext [pure virtual]
setDefaultElementAndTypeNS(const XMLCh *newNS)=0StaticContext [pure virtual]
setDefaultFLWOROrderingMode(FLWOROrderingMode newMode)=0StaticContext [pure virtual]
setDefaultFuncNS(const XMLCh *newNS)=0StaticContext [pure virtual]
setDocumentCache(DocumentCache *docCache)=0StaticContext [pure virtual]
setExternalContextNode(const xercesc::DOMNode *node)=0DynamicContext [pure virtual]
setImplicitTimezone(const ATDurationOrDerived::Ptr &timezoneAsDuration)=0DynamicContext [pure virtual]
setInheritNamespaces(bool value)=0StaticContext [pure virtual]
setItemFactory(ItemFactory *factory)=0StaticContext [pure virtual]
setMemoryManager(XPath2MemoryManager *memMgr)=0StaticContext [pure virtual]
setModuleResolver(ModuleResolver *resolver)=0StaticContext [pure virtual]
setNamespaceBinding(const XMLCh *prefix, const XMLCh *uri)=0StaticContext [pure virtual]
setNodeSetOrdering(NodeSetOrdering newOrder)=0StaticContext [pure virtual]
setNSResolver(const xercesc::DOMXPathNSResolver *resolver)=0StaticContext [pure virtual]
setPreserveBoundarySpace(bool value)=0StaticContext [pure virtual]
setPreserveNamespaces(bool value)=0StaticContext [pure virtual]
setXMLEntityResolver(xercesc::XMLEntityResolver *const handler)=0StaticContext [pure virtual]
setXPath1CompatibilityMode(bool newMode)=0StaticContext [pure virtual]
testInterrupt() const DynamicContext [inline, virtual]
trace(const XMLCh *message1, const XMLCh *message2)=0DynamicContext [pure virtual]
validate(const Node::Ptr &node, DocumentCache::ValidationMode valMode)=0DynamicContext [pure virtual]
XMemory()xercesc::XMemory [inline, protected]
~DynamicContext()DynamicContext [inline, virtual]
~StaticContext()StaticContext [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classDynamicContext.html b/docs/simple-api/classDynamicContext.html new file mode 100644 index 00000000..cc783315 --- /dev/null +++ b/docs/simple-api/classDynamicContext.html @@ -0,0 +1,886 @@ + + +XQilla Simple API: DynamicContext Class Reference + + + + + + +

DynamicContext Class Reference

The execution time dynamic context interface. +More... +

+#include <DynamicContext.hpp> +

+Inheritance diagram for DynamicContext:

Inheritance graph
+ + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual ~DynamicContext ()
virtual void incrementDocumentRefCount (const xercesc::DOMDocument *document) const =0
 Register a new reference to the document.
virtual void decrementDocumentRefCount (const xercesc::DOMDocument *document) const =0
 Register a closed reference to the document.
virtual void clearDynamicContext ()=0
 Resets the dynamic context, as if it had never been used.
virtual Item::Ptr getContextItem () const =0
 Get the context Item.
virtual void setContextItem (const Item::Ptr &item)=0
 Set the context item to item.
virtual void setExternalContextNode (const xercesc::DOMNode *node)=0
 Sets the context item to an external document.
virtual unsigned int getContextPosition () const =0
 Get the context position.
virtual void setContextPosition (unsigned int pos)=0
 Set the context position.
virtual unsigned int getContextSize () const =0
 Get the context size.
virtual void setContextSize (unsigned int size)=0
 Set the context size.
virtual VariableStoregetVariableStore ()=0
 get the variable store
virtual time_t getCurrentTime () const =0
 Return the current time.
virtual void setCurrentTime (time_t newTime)=0
 Set the current time.
virtual ATDurationOrDerived::Ptr getImplicitTimezone () const =0
 Return the implicit timezone for this system.
virtual void setImplicitTimezone (const ATDurationOrDerived::Ptr &timezoneAsDuration)=0
 Set the implicit timezone.
virtual void registerURIResolver (URIResolver *resolver)=0
 Register a callback object for resolving URIs.
virtual Sequence resolveDocument (const XMLCh *uri, const LocationInfo *location)=0
virtual Sequence resolveCollection (const XMLCh *uri, const LocationInfo *location)=0
virtual Sequence resolveDefaultCollection ()=0
virtual Node::Ptr validate (const Node::Ptr &node, DocumentCache::ValidationMode valMode)=0
 returns the validated node
virtual void trace (const XMLCh *message1, const XMLCh *message2)=0
 send a pair of strings to the "trace" data set
virtual void setDebugCallback (XQDebugCallback *callback)=0
 Set the object to be used for debugging callbacks.
virtual XQDebugCallbackgetDebugCallback () const =0
 Get the object to be used for debugging callbacks.
virtual void testInterrupt () const
 Test if the query should be interrupted, and throw if so.
+

Detailed Description

+The execution time dynamic context interface. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
virtual DynamicContext::~DynamicContext  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual void DynamicContext::clearDynamicContext  )  [pure virtual]
+
+ + + + + +
+   + + +

+Resets the dynamic context, as if it had never been used. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void DynamicContext::decrementDocumentRefCount const xercesc::DOMDocument document  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Register a closed reference to the document. +

+

+

+ + + + +
+ + + + + + + + +
virtual Item::Ptr DynamicContext::getContextItem  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the context Item. +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned int DynamicContext::getContextPosition  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the context position. +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned int DynamicContext::getContextSize  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the context size. +

+

+

+ + + + +
+ + + + + + + + +
virtual time_t DynamicContext::getCurrentTime  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Return the current time. +

+

+

+ + + + +
+ + + + + + + + +
virtual XQDebugCallback* DynamicContext::getDebugCallback  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the object to be used for debugging callbacks. +

+

+

+ + + + +
+ + + + + + + + +
virtual ATDurationOrDerived::Ptr DynamicContext::getImplicitTimezone  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Return the implicit timezone for this system. +

+

+

+ + + + +
+ + + + + + + + +
virtual VariableStore* DynamicContext::getVariableStore  )  [pure virtual]
+
+ + + + + +
+   + + +

+get the variable store +

+

+

+ + + + +
+ + + + + + + + + +
virtual void DynamicContext::incrementDocumentRefCount const xercesc::DOMDocument document  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Register a new reference to the document. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void DynamicContext::registerURIResolver URIResolver resolver  )  [pure virtual]
+
+ + + + + +
+   + + +

+Register a callback object for resolving URIs. +

+Multiple URIResolver objects can be registered with the DynamicContext at the same time. The most recently added URIResolver will be called first, and if it returns NULL, subsequent ones will be called - ending in a call to the fallback routines.

+The DynamicContext will not adopt this object, making the user responsible for making sure that the URIResolver object's lifespan matches or exceeds the life of the DynamicContext.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Sequence DynamicContext::resolveCollection const XMLCh *  uri,
const LocationInfo *  location
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual Sequence DynamicContext::resolveDefaultCollection  )  [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Sequence DynamicContext::resolveDocument const XMLCh *  uri,
const LocationInfo *  location
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual void DynamicContext::setContextItem const Item::Ptr item  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the context item to item. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void DynamicContext::setContextPosition unsigned int  pos  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the context position. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void DynamicContext::setContextSize unsigned int  size  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the context size. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void DynamicContext::setCurrentTime time_t  newTime  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the current time. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void DynamicContext::setDebugCallback XQDebugCallback callback  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the object to be used for debugging callbacks. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void DynamicContext::setExternalContextNode const xercesc::DOMNode node  )  [pure virtual]
+
+ + + + + +
+   + + +

+Sets the context item to an external document. +

+This is needed so that the DOMDocument reference counting does not release the document that the node comes from.

+

+ + + + +
+ + + + + + + + + +
virtual void DynamicContext::setImplicitTimezone const ATDurationOrDerived::Ptr timezoneAsDuration  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the implicit timezone. +

+

+

+ + + + +
+ + + + + + + + +
virtual void DynamicContext::testInterrupt  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+Test if the query should be interrupted, and throw if so. +

+This method has a default implementation of no-op.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void DynamicContext::trace const XMLCh *  message1,
const XMLCh *  message2
[pure virtual]
+
+ + + + + +
+   + + +

+send a pair of strings to the "trace" data set +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Node::Ptr DynamicContext::validate const Node::Ptr node,
DocumentCache::ValidationMode  valMode
[pure virtual]
+
+ + + + + +
+   + + +

+returns the validated node +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classDynamicContext__inherit__graph.map b/docs/simple-api/classDynamicContext__inherit__graph.map new file mode 100644 index 00000000..c64e3efb --- /dev/null +++ b/docs/simple-api/classDynamicContext__inherit__graph.map @@ -0,0 +1,3 @@ +base referer +rect $classStaticContext.html 23,84 125,108 +rect $classxercesc_1_1XMemory.html 7,9 141,33 diff --git a/docs/simple-api/classDynamicContext__inherit__graph.md5 b/docs/simple-api/classDynamicContext__inherit__graph.md5 new file mode 100644 index 00000000..d272dcf7 --- /dev/null +++ b/docs/simple-api/classDynamicContext__inherit__graph.md5 @@ -0,0 +1 @@ +44ba4b19e365eedeac7370628fa3b259 \ No newline at end of file diff --git a/docs/simple-api/classDynamicContext__inherit__graph.png b/docs/simple-api/classDynamicContext__inherit__graph.png new file mode 100644 index 00000000..3e74e903 Binary files /dev/null and b/docs/simple-api/classDynamicContext__inherit__graph.png differ diff --git a/docs/simple-api/classItem-members.html b/docs/simple-api/classItem-members.html new file mode 100644 index 00000000..a21bde1c --- /dev/null +++ b/docs/simple-api/classItem-members.html @@ -0,0 +1,41 @@ + + +XQilla Simple API: Member List + + + + + + +

Item Member List

This is the complete list of members for Item, including all inherited members.

+ + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
asString(const DynamicContext *context) const =0Item [pure virtual]
decrementRefCount() const ReferenceCounted [inline, virtual]
getInterface(const XMLCh *name) const =0Item [pure virtual]
getTypeName() const =0Item [pure virtual]
getTypeURI() const =0Item [pure virtual]
gXQillaItem [static]
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const =0Item [pure virtual]
isNode() const =0Item [pure virtual]
Item()Item [inline, protected]
Ptr typedefItem
ReferenceCounted()ReferenceCounted [inline]
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classItem.html b/docs/simple-api/classItem.html new file mode 100644 index 00000000..403fe571 --- /dev/null +++ b/docs/simple-api/classItem.html @@ -0,0 +1,321 @@ + + +XQilla Simple API: Item Class Reference + + + + + + +

Item Class Reference

#include <Item.hpp> +

+Inheritance diagram for Item:

Inheritance graph
+ + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef RefCountPointer< const
+Item
Ptr

Public Member Functions

virtual bool isNode () const =0
virtual bool isAtomicValue () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual void * getInterface (const XMLCh *name) const =0
 Method for returning arbitrary interfaces from the implementations.

Static Public Attributes

static const XMLCh gXQilla []
 The "XQilla" item interface.

Protected Member Functions

 Item ()
+

Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef RefCountPointer<const Item> Item::Ptr
+
+ + + + + +
+   + + +

+ +

+Reimplemented in AnyAtomicType, ATBooleanOrDerived, ATDateOrDerived, ATDateTimeOrDerived, ATDecimalOrDerived, ATDoubleOrDerived, ATDurationOrDerived, ATFloatOrDerived, ATGDayOrDerived, ATGMonthDayOrDerived, ATGMonthOrDerived, ATGYearMonthOrDerived, ATGYearOrDerived, ATQNameOrDerived, ATStringOrDerived, ATTimeOrDerived, DateOrTimeType, Node, and Numeric.

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
Item::Item  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* Item::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implemented in AnyAtomicType, ATAnySimpleType, ATAnyURIOrDerived, ATBase64BinaryOrDerived, ATBooleanOrDerived, ATDateOrDerived, ATDateTimeOrDerived, ATDecimalOrDerived, ATDoubleOrDerived, ATDurationOrDerived, ATFloatOrDerived, ATGDayOrDerived, ATGMonthDayOrDerived, ATGMonthOrDerived, ATGYearMonthOrDerived, ATGYearOrDerived, ATHexBinaryOrDerived, ATNotationOrDerived, ATQNameOrDerived, ATStringOrDerived, ATTimeOrDerived, ATUntypedAtomic, Node, and Numeric.

+

+ + + + +
+ + + + + + + + + +
virtual void* Item::getInterface const XMLCh *  name  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Method for returning arbitrary interfaces from the implementations. +

+

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* Item::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implemented in AnyAtomicType, ATAnySimpleType, ATAnyURIOrDerived, ATBase64BinaryOrDerived, ATBooleanOrDerived, ATDateOrDerived, ATDateTimeOrDerived, ATDecimalOrDerived, ATDoubleOrDerived, ATDurationOrDerived, ATFloatOrDerived, ATGDayOrDerived, ATGMonthDayOrDerived, ATGMonthOrDerived, ATGYearMonthOrDerived, ATGYearOrDerived, ATHexBinaryOrDerived, ATNotationOrDerived, ATQNameOrDerived, ATStringOrDerived, ATTimeOrDerived, ATUntypedAtomic, Node, and Numeric.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* Item::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implemented in AnyAtomicType, ATAnySimpleType, ATAnyURIOrDerived, ATBase64BinaryOrDerived, ATBooleanOrDerived, ATDateOrDerived, ATDateTimeOrDerived, ATDecimalOrDerived, ATDoubleOrDerived, ATDurationOrDerived, ATFloatOrDerived, ATGDayOrDerived, ATGMonthDayOrDerived, ATGMonthOrDerived, ATGYearMonthOrDerived, ATGYearOrDerived, ATHexBinaryOrDerived, ATNotationOrDerived, ATQNameOrDerived, ATStringOrDerived, ATTimeOrDerived, ATUntypedAtomic, Node, and Numeric.

+

+ + + + +
+ + + + + + + + +
virtual bool Item::isAtomicValue  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implemented in AnyAtomicType, and Node.

+

+ + + + +
+ + + + + + + + +
virtual bool Item::isNode  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implemented in AnyAtomicType, and Node.

+


Member Data Documentation

+

+ + + + +
+ + + + +
const XMLCh Item::gXQilla[] [static]
+
+ + + + + +
+   + + +

+The "XQilla" item interface. +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classItemFactory-members.html b/docs/simple-api/classItemFactory-members.html new file mode 100644 index 00000000..2d0bf3d6 --- /dev/null +++ b/docs/simple-api/classItemFactory-members.html @@ -0,0 +1,89 @@ + + +XQilla Simple API: Member List + + + + + + +

ItemFactory Member List

This is the complete list of members for ItemFactory, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cloneNode(const Node::Ptr node, const DynamicContext *context) const =0ItemFactory [pure virtual]
createAnyURI(const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createAttributeNode(const XMLCh *uri, const XMLCh *prefix, const XMLCh *name, const XMLCh *value, const DynamicContext *context) const =0ItemFactory [pure virtual]
createBoolean(bool value, const DynamicContext *context)=0ItemFactory [pure virtual]
createBoolean(const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createBooleanOrDerived(const XMLCh *typeURI, const XMLCh *typeName, bool value, const DynamicContext *context)=0ItemFactory [pure virtual]
createBooleanOrDerived(const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createCommentNode(const XMLCh *value, const DynamicContext *context) const =0ItemFactory [pure virtual]
createDate(const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createDateOrDerived(const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createDateTime(const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createDateTimeOrDerived(const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createDayTimeDuration(const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createDayTimeDuration(const MAPM &seconds, const DynamicContext *context)=0ItemFactory [pure virtual]
createDecimal(const MAPM value, const DynamicContext *context)=0ItemFactory [pure virtual]
createDecimal(const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createDecimalOrDerived(const XMLCh *typeURI, const XMLCh *typeName, const MAPM value, const DynamicContext *context)=0ItemFactory [pure virtual]
createDecimalOrDerived(const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createDerivedFromAtomicType(AnyAtomicType::AtomicObjectType typeIndex, const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createDerivedFromAtomicType(AnyAtomicType::AtomicObjectType typeIndex, const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createDerivedFromAtomicType(const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createDocumentNode(const std::vector< Node::Ptr > &childList, const DynamicContext *context) const =0ItemFactory [pure virtual]
createDouble(const MAPM value, const DynamicContext *context)=0ItemFactory [pure virtual]
createDouble(const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createDoubleOrDerived(const XMLCh *typeURI, const XMLCh *typeName, const MAPM value, const DynamicContext *context)=0ItemFactory [pure virtual]
createDoubleOrDerived(const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createDurationOrDerived(const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createElementNode(const XMLCh *uri, const XMLCh *prefix, const XMLCh *name, const std::vector< Node::Ptr > &attrList, const std::vector< ElementChild > &childList, const DynamicContext *context) const =0ItemFactory [pure virtual]
createFloat(const MAPM value, const DynamicContext *context)=0ItemFactory [pure virtual]
createFloat(const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createFloatOrDerived(const XMLCh *typeURI, const XMLCh *typeName, const MAPM value, const DynamicContext *context)=0ItemFactory [pure virtual]
createFloatOrDerived(const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createGDayOrDerived(const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createGMonthDayOrDerived(const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createGMonthOrDerived(const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createGYearMonthOrDerived(const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createGYearOrDerived(const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createInteger(const int value, const DynamicContext *context)=0ItemFactory [pure virtual]
createInteger(const MAPM value, const DynamicContext *context)=0ItemFactory [pure virtual]
createInteger(const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createNamespaceNode(const XMLCh *prefix, const XMLCh *uri, const xercesc::DOMNode *parentNode, const DynamicContext *context) const =0ItemFactory [pure virtual]
createNonNegativeInteger(const MAPM value, const DynamicContext *context)=0ItemFactory [pure virtual]
createPINode(const XMLCh *name, const XMLCh *value, const DynamicContext *context) const =0ItemFactory [pure virtual]
createQName(const XMLCh *uri, const XMLCh *prefix, const XMLCh *name, const DynamicContext *context)=0ItemFactory [pure virtual]
createQNameOrDerived(const XMLCh *typeURI, const XMLCh *prefix, const XMLCh *typeName, const XMLCh *uri, const XMLCh *name, const DynamicContext *context)=0ItemFactory [pure virtual]
createString(const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createStringOrDerived(const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createTextNode(const XMLCh *value, const DynamicContext *context) const =0ItemFactory [pure virtual]
createTime(const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createTimeOrDerived(const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createUntypedAtomic(const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createYearMonthDuration(const XMLCh *value, const DynamicContext *context)=0ItemFactory [pure virtual]
createYearMonthDuration(const MAPM &months, const DynamicContext *context)=0ItemFactory [pure virtual]
getPrimitiveTypeIndex(const XMLCh *typeURI, const XMLCh *typeName, bool &isPrimitive) const =0ItemFactory [pure virtual]
operator delete(void *p)xercesc::XMemory
operator delete(void *p, MemoryManager *memMgr)xercesc::XMemory
operator delete(void *p, void *ptr)xercesc::XMemory
operator new(size_t size)xercesc::XMemory
operator new(size_t size, MemoryManager *memMgr)xercesc::XMemory
operator new(size_t size, void *ptr)xercesc::XMemory
XMemory()xercesc::XMemory [inline, protected]
~ItemFactory()ItemFactory [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classItemFactory.html b/docs/simple-api/classItemFactory.html new file mode 100644 index 00000000..11ae04c1 --- /dev/null +++ b/docs/simple-api/classItemFactory.html @@ -0,0 +1,2532 @@ + + +XQilla Simple API: ItemFactory Class Reference + + + + + + +

ItemFactory Class Reference

#include <ItemFactory.hpp> +

+Inheritance diagram for ItemFactory:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual ~ItemFactory ()
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex (const XMLCh *typeURI, const XMLCh *typeName, bool &isPrimitive) const =0
virtual AnyAtomicType::Ptr createDerivedFromAtomicType (AnyAtomicType::AtomicObjectType typeIndex, const XMLCh *value, const DynamicContext *context)=0
virtual AnyAtomicType::Ptr createDerivedFromAtomicType (AnyAtomicType::AtomicObjectType typeIndex, const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0
virtual AnyAtomicType::Ptr createDerivedFromAtomicType (const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0
virtual Node::Ptr cloneNode (const Node::Ptr node, const DynamicContext *context) const =0
virtual Node::Ptr createTextNode (const XMLCh *value, const DynamicContext *context) const =0
virtual Node::Ptr createCommentNode (const XMLCh *value, const DynamicContext *context) const =0
virtual Node::Ptr createPINode (const XMLCh *name, const XMLCh *value, const DynamicContext *context) const =0
virtual Node::Ptr createAttributeNode (const XMLCh *uri, const XMLCh *prefix, const XMLCh *name, const XMLCh *value, const DynamicContext *context) const =0
virtual Node::Ptr createElementNode (const XMLCh *uri, const XMLCh *prefix, const XMLCh *name, const std::vector< Node::Ptr > &attrList, const std::vector< ElementChild > &childList, const DynamicContext *context) const =0
virtual Node::Ptr createDocumentNode (const std::vector< Node::Ptr > &childList, const DynamicContext *context) const =0
virtual const xercesc::DOMNodecreateNamespaceNode (const XMLCh *prefix, const XMLCh *uri, const xercesc::DOMNode *parentNode, const DynamicContext *context) const =0
virtual ATDoubleOrDerived::Ptr createDouble (const MAPM value, const DynamicContext *context)=0
virtual ATDoubleOrDerived::Ptr createDouble (const XMLCh *value, const DynamicContext *context)=0
virtual ATDoubleOrDerived::Ptr createDoubleOrDerived (const XMLCh *typeURI, const XMLCh *typeName, const MAPM value, const DynamicContext *context)=0
virtual ATDoubleOrDerived::Ptr createDoubleOrDerived (const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0
virtual ATFloatOrDerived::Ptr createFloat (const MAPM value, const DynamicContext *context)=0
virtual ATFloatOrDerived::Ptr createFloat (const XMLCh *value, const DynamicContext *context)=0
virtual ATFloatOrDerived::Ptr createFloatOrDerived (const XMLCh *typeURI, const XMLCh *typeName, const MAPM value, const DynamicContext *context)=0
virtual ATFloatOrDerived::Ptr createFloatOrDerived (const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0
virtual ATDecimalOrDerived::Ptr createInteger (const int value, const DynamicContext *context)=0
virtual ATDecimalOrDerived::Ptr createInteger (const MAPM value, const DynamicContext *context)=0
virtual ATDecimalOrDerived::Ptr createInteger (const XMLCh *value, const DynamicContext *context)=0
virtual ATDecimalOrDerived::Ptr createNonNegativeInteger (const MAPM value, const DynamicContext *context)=0
virtual ATDecimalOrDerived::Ptr createDecimal (const MAPM value, const DynamicContext *context)=0
virtual ATDecimalOrDerived::Ptr createDecimal (const XMLCh *value, const DynamicContext *context)=0
virtual ATDecimalOrDerived::Ptr createDecimalOrDerived (const XMLCh *typeURI, const XMLCh *typeName, const MAPM value, const DynamicContext *context)=0
virtual ATDecimalOrDerived::Ptr createDecimalOrDerived (const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0
virtual ATDateOrDerived::Ptr createDate (const XMLCh *value, const DynamicContext *context)=0
virtual ATDateOrDerived::Ptr createDateOrDerived (const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0
virtual ATDateTimeOrDerived::Ptr createDateTime (const XMLCh *value, const DynamicContext *context)=0
virtual ATDateTimeOrDerived::Ptr createDateTimeOrDerived (const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0
virtual ATTimeOrDerived::Ptr createTime (const XMLCh *value, const DynamicContext *context)=0
virtual ATTimeOrDerived::Ptr createTimeOrDerived (const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0
virtual ATGDayOrDerived::Ptr createGDayOrDerived (const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0
virtual ATGMonthDayOrDerived::Ptr createGMonthDayOrDerived (const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0
virtual ATGMonthOrDerived::Ptr createGMonthOrDerived (const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0
virtual ATGYearMonthOrDerived::Ptr createGYearMonthOrDerived (const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0
virtual ATGYearOrDerived::Ptr createGYearOrDerived (const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0
virtual ATDurationOrDerived::Ptr createDayTimeDuration (const XMLCh *value, const DynamicContext *context)=0
virtual ATDurationOrDerived::Ptr createDayTimeDuration (const MAPM &seconds, const DynamicContext *context)=0
virtual ATDurationOrDerived::Ptr createYearMonthDuration (const XMLCh *value, const DynamicContext *context)=0
virtual ATDurationOrDerived::Ptr createYearMonthDuration (const MAPM &months, const DynamicContext *context)=0
virtual ATDurationOrDerived::Ptr createDurationOrDerived (const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0
virtual ATStringOrDerived::Ptr createString (const XMLCh *value, const DynamicContext *context)=0
virtual ATStringOrDerived::Ptr createStringOrDerived (const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0
virtual ATUntypedAtomic::Ptr createUntypedAtomic (const XMLCh *value, const DynamicContext *context)=0
virtual ATBooleanOrDerived::Ptr createBoolean (bool value, const DynamicContext *context)=0
virtual ATBooleanOrDerived::Ptr createBoolean (const XMLCh *value, const DynamicContext *context)=0
virtual ATBooleanOrDerived::Ptr createBooleanOrDerived (const XMLCh *typeURI, const XMLCh *typeName, bool value, const DynamicContext *context)=0
virtual ATBooleanOrDerived::Ptr createBooleanOrDerived (const XMLCh *typeURI, const XMLCh *typeName, const XMLCh *value, const DynamicContext *context)=0
virtual ATAnyURIOrDerived::Ptr createAnyURI (const XMLCh *value, const DynamicContext *context)=0
virtual ATQNameOrDerived::Ptr createQName (const XMLCh *uri, const XMLCh *prefix, const XMLCh *name, const DynamicContext *context)=0
virtual ATQNameOrDerived::Ptr createQNameOrDerived (const XMLCh *typeURI, const XMLCh *prefix, const XMLCh *typeName, const XMLCh *uri, const XMLCh *name, const DynamicContext *context)=0

Classes

class  ElementChild
+

Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
virtual ItemFactory::~ItemFactory  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Node::Ptr ItemFactory::cloneNode const Node::Ptr  node,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATAnyURIOrDerived::Ptr ItemFactory::createAnyURI const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual Node::Ptr ItemFactory::createAttributeNode const XMLCh *  uri,
const XMLCh *  prefix,
const XMLCh *  name,
const XMLCh *  value,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATBooleanOrDerived::Ptr ItemFactory::createBoolean const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATBooleanOrDerived::Ptr ItemFactory::createBoolean bool  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATBooleanOrDerived::Ptr ItemFactory::createBooleanOrDerived const XMLCh *  typeURI,
const XMLCh *  typeName,
const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATBooleanOrDerived::Ptr ItemFactory::createBooleanOrDerived const XMLCh *  typeURI,
const XMLCh *  typeName,
bool  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Node::Ptr ItemFactory::createCommentNode const XMLCh *  value,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDateOrDerived::Ptr ItemFactory::createDate const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATDateOrDerived::Ptr ItemFactory::createDateOrDerived const XMLCh *  typeURI,
const XMLCh *  typeName,
const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDateTimeOrDerived::Ptr ItemFactory::createDateTime const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATDateTimeOrDerived::Ptr ItemFactory::createDateTimeOrDerived const XMLCh *  typeURI,
const XMLCh *  typeName,
const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDurationOrDerived::Ptr ItemFactory::createDayTimeDuration const MAPM &  seconds,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDurationOrDerived::Ptr ItemFactory::createDayTimeDuration const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ItemFactory::createDecimal const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ItemFactory::createDecimal const MAPM  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ItemFactory::createDecimalOrDerived const XMLCh *  typeURI,
const XMLCh *  typeName,
const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ItemFactory::createDecimalOrDerived const XMLCh *  typeURI,
const XMLCh *  typeName,
const MAPM  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual AnyAtomicType::Ptr ItemFactory::createDerivedFromAtomicType const XMLCh *  typeURI,
const XMLCh *  typeName,
const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual AnyAtomicType::Ptr ItemFactory::createDerivedFromAtomicType AnyAtomicType::AtomicObjectType  typeIndex,
const XMLCh *  typeURI,
const XMLCh *  typeName,
const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual AnyAtomicType::Ptr ItemFactory::createDerivedFromAtomicType AnyAtomicType::AtomicObjectType  typeIndex,
const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Node::Ptr ItemFactory::createDocumentNode const std::vector< Node::Ptr > &  childList,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDoubleOrDerived::Ptr ItemFactory::createDouble const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDoubleOrDerived::Ptr ItemFactory::createDouble const MAPM  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATDoubleOrDerived::Ptr ItemFactory::createDoubleOrDerived const XMLCh *  typeURI,
const XMLCh *  typeName,
const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATDoubleOrDerived::Ptr ItemFactory::createDoubleOrDerived const XMLCh *  typeURI,
const XMLCh *  typeName,
const MAPM  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATDurationOrDerived::Ptr ItemFactory::createDurationOrDerived const XMLCh *  typeURI,
const XMLCh *  typeName,
const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual Node::Ptr ItemFactory::createElementNode const XMLCh *  uri,
const XMLCh *  prefix,
const XMLCh *  name,
const std::vector< Node::Ptr > &  attrList,
const std::vector< ElementChild > &  childList,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATFloatOrDerived::Ptr ItemFactory::createFloat const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATFloatOrDerived::Ptr ItemFactory::createFloat const MAPM  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATFloatOrDerived::Ptr ItemFactory::createFloatOrDerived const XMLCh *  typeURI,
const XMLCh *  typeName,
const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATFloatOrDerived::Ptr ItemFactory::createFloatOrDerived const XMLCh *  typeURI,
const XMLCh *  typeName,
const MAPM  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATGDayOrDerived::Ptr ItemFactory::createGDayOrDerived const XMLCh *  typeURI,
const XMLCh *  typeName,
const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATGMonthDayOrDerived::Ptr ItemFactory::createGMonthDayOrDerived const XMLCh *  typeURI,
const XMLCh *  typeName,
const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATGMonthOrDerived::Ptr ItemFactory::createGMonthOrDerived const XMLCh *  typeURI,
const XMLCh *  typeName,
const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATGYearMonthOrDerived::Ptr ItemFactory::createGYearMonthOrDerived const XMLCh *  typeURI,
const XMLCh *  typeName,
const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATGYearOrDerived::Ptr ItemFactory::createGYearOrDerived const XMLCh *  typeURI,
const XMLCh *  typeName,
const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ItemFactory::createInteger const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ItemFactory::createInteger const MAPM  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ItemFactory::createInteger const int  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual const xercesc:: DOMNode* ItemFactory::createNamespaceNode const XMLCh *  prefix,
const XMLCh *  uri,
const xercesc::DOMNode parentNode,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDecimalOrDerived::Ptr ItemFactory::createNonNegativeInteger const MAPM  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual Node::Ptr ItemFactory::createPINode const XMLCh *  name,
const XMLCh *  value,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATQNameOrDerived::Ptr ItemFactory::createQName const XMLCh *  uri,
const XMLCh *  prefix,
const XMLCh *  name,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATQNameOrDerived::Ptr ItemFactory::createQNameOrDerived const XMLCh *  typeURI,
const XMLCh *  prefix,
const XMLCh *  typeName,
const XMLCh *  uri,
const XMLCh *  name,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATStringOrDerived::Ptr ItemFactory::createString const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATStringOrDerived::Ptr ItemFactory::createStringOrDerived const XMLCh *  typeURI,
const XMLCh *  typeName,
const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Node::Ptr ItemFactory::createTextNode const XMLCh *  value,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATTimeOrDerived::Ptr ItemFactory::createTime const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ATTimeOrDerived::Ptr ItemFactory::createTimeOrDerived const XMLCh *  typeURI,
const XMLCh *  typeName,
const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATUntypedAtomic::Ptr ItemFactory::createUntypedAtomic const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDurationOrDerived::Ptr ItemFactory::createYearMonthDuration const MAPM &  months,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual ATDurationOrDerived::Ptr ItemFactory::createYearMonthDuration const XMLCh *  value,
const DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual AnyAtomicType::AtomicObjectType ItemFactory::getPrimitiveTypeIndex const XMLCh *  typeURI,
const XMLCh *  typeName,
bool &  isPrimitive
const [pure virtual]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classItemFactory_1_1ElementChild-members.html b/docs/simple-api/classItemFactory_1_1ElementChild-members.html new file mode 100644 index 00000000..c9794d02 --- /dev/null +++ b/docs/simple-api/classItemFactory_1_1ElementChild-members.html @@ -0,0 +1,33 @@ + + +XQilla Simple API: Member List + + + + + + +

ItemFactory::ElementChild Member List

This is the complete list of members for ItemFactory::ElementChild, including all inherited members.

+ + + + + + +
cloneItemFactory::ElementChild
ElementChild(const Node::Ptr &n)ItemFactory::ElementChild [inline]
ElementChild(const Node::Ptr &n, bool c)ItemFactory::ElementChild [inline]
nodeItemFactory::ElementChild
operator const Node::Ptr &()ItemFactory::ElementChild [inline]
operator->() const ItemFactory::ElementChild [inline]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classItemFactory_1_1ElementChild.html b/docs/simple-api/classItemFactory_1_1ElementChild.html new file mode 100644 index 00000000..f6e95698 --- /dev/null +++ b/docs/simple-api/classItemFactory_1_1ElementChild.html @@ -0,0 +1,217 @@ + + +XQilla Simple API: ItemFactory::ElementChild Class Reference + + + + + + + +

ItemFactory::ElementChild Class Reference

#include <ItemFactory.hpp> +

+List of all members. + + + + + + + + + + + + + + + +

Public Member Functions

 ElementChild (const Node::Ptr &n)
 ElementChild (const Node::Ptr &n, bool c)
 operator const Node::Ptr & ()
const Nodeoperator-> () const

Public Attributes

Node::Ptr node
bool clone
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
ItemFactory::ElementChild::ElementChild const Node::Ptr n  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
ItemFactory::ElementChild::ElementChild const Node::Ptr n,
bool  c
[inline]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
ItemFactory::ElementChild::operator const Node::Ptr &  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
const Node* ItemFactory::ElementChild::operator->  )  const [inline]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
bool ItemFactory::ElementChild::clone
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
Node::Ptr ItemFactory::ElementChild::node
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classItemFactory__inherit__graph.map b/docs/simple-api/classItemFactory__inherit__graph.map new file mode 100644 index 00000000..e955adb5 --- /dev/null +++ b/docs/simple-api/classItemFactory__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1XMemory.html 7,9 141,33 diff --git a/docs/simple-api/classItemFactory__inherit__graph.md5 b/docs/simple-api/classItemFactory__inherit__graph.md5 new file mode 100644 index 00000000..0abc049c --- /dev/null +++ b/docs/simple-api/classItemFactory__inherit__graph.md5 @@ -0,0 +1 @@ +f3b63b9964c30b575276d0ad4f3bf80e \ No newline at end of file diff --git a/docs/simple-api/classItemFactory__inherit__graph.png b/docs/simple-api/classItemFactory__inherit__graph.png new file mode 100644 index 00000000..0cd812d4 Binary files /dev/null and b/docs/simple-api/classItemFactory__inherit__graph.png differ diff --git a/docs/simple-api/classItem__inherit__graph.map b/docs/simple-api/classItem__inherit__graph.map new file mode 100644 index 00000000..cfe3b2b8 --- /dev/null +++ b/docs/simple-api/classItem__inherit__graph.map @@ -0,0 +1,4 @@ +base referer +rect $classAnyAtomicType.html 8,158 122,182 +rect $classNode.html 146,158 200,182 +rect $classReferenceCounted.html 52,9 185,33 diff --git a/docs/simple-api/classItem__inherit__graph.md5 b/docs/simple-api/classItem__inherit__graph.md5 new file mode 100644 index 00000000..f27f73c0 --- /dev/null +++ b/docs/simple-api/classItem__inherit__graph.md5 @@ -0,0 +1 @@ +df4b7a4e9616b35ed7604a420db578e0 \ No newline at end of file diff --git a/docs/simple-api/classItem__inherit__graph.png b/docs/simple-api/classItem__inherit__graph.png new file mode 100644 index 00000000..52833ba4 Binary files /dev/null and b/docs/simple-api/classItem__inherit__graph.png differ diff --git a/docs/simple-api/classModuleResolver-members.html b/docs/simple-api/classModuleResolver-members.html new file mode 100644 index 00000000..0aebf5d0 --- /dev/null +++ b/docs/simple-api/classModuleResolver-members.html @@ -0,0 +1,29 @@ + + +XQilla Simple API: Member List + + + + + + +

ModuleResolver Member List

This is the complete list of members for ModuleResolver, including all inherited members.

+ + +
resolveModuleLocation(VectorOfStrings *result, const XMLCh *nsUri, const StaticContext *context)=0ModuleResolver [pure virtual]
~ModuleResolver()ModuleResolver [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classModuleResolver.html b/docs/simple-api/classModuleResolver.html new file mode 100644 index 00000000..b0e711c5 --- /dev/null +++ b/docs/simple-api/classModuleResolver.html @@ -0,0 +1,110 @@ + + +XQilla Simple API: ModuleResolver Class Reference + + + + + + +

ModuleResolver Class Reference

#include <ModuleResolver.hpp> +

+List of all members. + + + + + + +

Public Member Functions

virtual ~ModuleResolver ()
virtual bool resolveModuleLocation (VectorOfStrings *result, const XMLCh *nsUri, const StaticContext *context)=0
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
virtual ModuleResolver::~ModuleResolver  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool ModuleResolver::resolveModuleLocation VectorOfStrings *  result,
const XMLCh *  nsUri,
const StaticContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classNode-members.html b/docs/simple-api/classNode-members.html new file mode 100644 index 00000000..3acd119e --- /dev/null +++ b/docs/simple-api/classNode-members.html @@ -0,0 +1,69 @@ + + +XQilla Simple API: Member List + + + + + + +

Node Member List

This is the complete list of members for Node, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
asString(const DynamicContext *context) const =0Node [pure virtual]
attribute_stringNode [static]
cdata_stringNode [static]
comment_stringNode [static]
decrementRefCount() const ReferenceCounted [inline, virtual]
dmAttributes(const DynamicContext *context, const LocationInfo *info) const =0Node [pure virtual]
dmBaseURI(const DynamicContext *context) const =0Node [pure virtual]
dmChildren(const DynamicContext *context, const LocationInfo *info) const =0Node [pure virtual]
dmDocumentURI(const DynamicContext *context) const =0Node [pure virtual]
dmIsId(const DynamicContext *context) const =0Node [pure virtual]
dmIsIdRefs(const DynamicContext *context) const =0Node [pure virtual]
dmNamespaceNodes(const DynamicContext *context, const LocationInfo *info) const =0Node [pure virtual]
dmNilled(const DynamicContext *context) const =0Node [pure virtual]
dmNodeKind() const =0Node [pure virtual]
dmNodeName(const DynamicContext *context) const =0Node [pure virtual]
dmParent(const DynamicContext *context) const =0Node [pure virtual]
dmStringValue(const DynamicContext *context) const =0Node [pure virtual]
dmTypedValue(DynamicContext *context) const =0Node [pure virtual]
dmTypeName(const DynamicContext *context) const =0Node [pure virtual]
document_stringNode [static]
element_stringNode [static]
equals(const Node::Ptr &other) const =0Node [pure virtual]
getAxisResult(XQStep::Axis axis, const NodeTest *nodeTest, const DynamicContext *context, const LocationInfo *info) const =0Node [pure virtual]
getInterface(const XMLCh *name) const =0Item [pure virtual]
getTypeName() const =0Node [pure virtual]
getTypeURI() const =0Node [pure virtual]
gXercesNode [static]
gXQillaItem [static]
hasInstanceOfType(const XMLCh *typeURI, const XMLCh *typeName, const DynamicContext *context) const =0Node [pure virtual]
incrementRefCount() const ReferenceCounted [inline]
isAtomicValue() const =0Node [pure virtual]
isNode() const =0Node [pure virtual]
Item()Item [inline, protected]
lessThan(const Node::Ptr &other, const DynamicContext *context) const =0Node [pure virtual]
namespace_stringNode [static]
processing_instruction_stringNode [static]
Ptr typedefNode
ReferenceCounted()ReferenceCounted [inline]
text_stringNode [static]
uniqueLessThan(const Node::Ptr &other, const DynamicContext *context) const =0Node [pure virtual]
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classNode.html b/docs/simple-api/classNode.html new file mode 100644 index 00000000..6258ba53 --- /dev/null +++ b/docs/simple-api/classNode.html @@ -0,0 +1,1172 @@ + + +XQilla Simple API: Node Class Reference + + + + + + +

Node Class Reference

#include <Node.hpp> +

+Inheritance diagram for Node:

Inheritance graph
+ + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef RefCountPointer< const
+Node
Ptr

Public Member Functions

virtual bool isNode () const =0
 Returns true, since this Item is a Node.
virtual bool isAtomicValue () const =0
 Returns false, since this Item is a Node.
virtual const XMLCh * asString (const DynamicContext *context) const =0
 Serialize this node.
virtual bool hasInstanceOfType (const XMLCh *typeURI, const XMLCh *typeName, const DynamicContext *context) const =0
 check if the underlying type of this node is instance of a certain type
virtual Sequence dmBaseURI (const DynamicContext *context) const =0
 Accessor: returns the base-uri of this node as a xs:anyURI, if one exists.
virtual const XMLCh * dmNodeKind () const =0
 Accessor: returns the kind of node as a string.
virtual ATQNameOrDerived::Ptr dmNodeName (const DynamicContext *context) const =0
 Accessor: returns the name of this node.
virtual const XMLCh * dmStringValue (const DynamicContext *context) const =0
 Accessor: returns the string value of this node.
virtual Sequence dmTypedValue (DynamicContext *context) const =0
 Accessor: returns the typed value of this node, which is a sequence of zero or more atomic values derived from the string-value of the node and its type in such a way as to be consistent with validation.
virtual Sequence dmDocumentURI (const DynamicContext *context) const =0
 Accessor: returns the absolute URI of the resource from which the document node was constructed, if the absolute URI is available.
virtual ATQNameOrDerived::Ptr dmTypeName (const DynamicContext *context) const =0
 Accessor: returns the name of the type of a node.
virtual ATBooleanOrDerived::Ptr dmNilled (const DynamicContext *context) const =0
 Accessor: returns the setting of the nilled property of an element node.
virtual bool lessThan (const Node::Ptr &other, const DynamicContext *context) const =0
 Returns true if 'this' is before 'other' in document order, false otherwise.
virtual bool equals (const Node::Ptr &other) const =0
 Returns true if 'other' is equal (identity equal) to 'this'.
virtual bool uniqueLessThan (const Node::Ptr &other, const DynamicContext *context) const =0
 Specifies a sorting order for uniqueness removal.
virtual Node::Ptr dmParent (const DynamicContext *context) const =0
 Returns the parent of this node.
virtual Result dmAttributes (const DynamicContext *context, const LocationInfo *info) const =0
 Returns the attributes of this node.
virtual Result dmNamespaceNodes (const DynamicContext *context, const LocationInfo *info) const =0
 Returns the namespace nodes of this node.
virtual Result dmChildren (const DynamicContext *context, const LocationInfo *info) const =0
 Returns the children of this node.
virtual Result getAxisResult (XQStep::Axis axis, const NodeTest *nodeTest, const DynamicContext *context, const LocationInfo *info) const =0
 Returns a Result containing the nodes in the axis given, relative to this node.
virtual ATBooleanOrDerived::Ptr dmIsId (const DynamicContext *context) const =0
 Returns if the node is an id node or not.
virtual ATBooleanOrDerived::Ptr dmIsIdRefs (const DynamicContext *context) const =0
 Returns if the node is an idref node or not.
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0

Static Public Attributes

static const XMLCh gXerces []
 The "Xerces" DOMNode node interface.
static const XMLCh document_string []
static const XMLCh element_string []
static const XMLCh attribute_string []
static const XMLCh text_string []
static const XMLCh processing_instruction_string []
static const XMLCh comment_string []
static const XMLCh namespace_string []
static const XMLCh cdata_string []
+

Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef RefCountPointer<const Node> Node::Ptr
+
+ + + + + +
+   + + +

+ +

+Reimplemented from Item.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* Node::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Serialize this node. +

+ +

+Implements Item.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Result Node::dmAttributes const DynamicContext context,
const LocationInfo *  info
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the attributes of this node. +

+

+

+ + + + +
+ + + + + + + + + +
virtual Sequence Node::dmBaseURI const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Accessor: returns the base-uri of this node as a xs:anyURI, if one exists. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Result Node::dmChildren const DynamicContext context,
const LocationInfo *  info
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the children of this node. +

+

+

+ + + + +
+ + + + + + + + + +
virtual Sequence Node::dmDocumentURI const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Accessor: returns the absolute URI of the resource from which the document node was constructed, if the absolute URI is available. +

+

+

+ + + + +
+ + + + + + + + + +
virtual ATBooleanOrDerived::Ptr Node::dmIsId const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns if the node is an id node or not. +

+

+

+ + + + +
+ + + + + + + + + +
virtual ATBooleanOrDerived::Ptr Node::dmIsIdRefs const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns if the node is an idref node or not. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Result Node::dmNamespaceNodes const DynamicContext context,
const LocationInfo *  info
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the namespace nodes of this node. +

+

+

+ + + + +
+ + + + + + + + + +
virtual ATBooleanOrDerived::Ptr Node::dmNilled const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Accessor: returns the setting of the nilled property of an element node. +

+

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* Node::dmNodeKind  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Accessor: returns the kind of node as a string. +

+

+

+ + + + +
+ + + + + + + + + +
virtual ATQNameOrDerived::Ptr Node::dmNodeName const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Accessor: returns the name of this node. +

+

+

+ + + + +
+ + + + + + + + + +
virtual Node::Ptr Node::dmParent const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the parent of this node. +

+

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* Node::dmStringValue const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Accessor: returns the string value of this node. +

+

+

+ + + + +
+ + + + + + + + + +
virtual Sequence Node::dmTypedValue DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Accessor: returns the typed value of this node, which is a sequence of zero or more atomic values derived from the string-value of the node and its type in such a way as to be consistent with validation. +

+

+

+ + + + +
+ + + + + + + + + +
virtual ATQNameOrDerived::Ptr Node::dmTypeName const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Accessor: returns the name of the type of a node. +

+

+

+ + + + +
+ + + + + + + + + +
virtual bool Node::equals const Node::Ptr other  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns true if 'other' is equal (identity equal) to 'this'. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual Result Node::getAxisResult XQStep::Axis  axis,
const NodeTest *  nodeTest,
const DynamicContext context,
const LocationInfo *  info
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a Result containing the nodes in the axis given, relative to this node. +

+Forward axis results should be in document order. Reverse axis results should be in reverse document order.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* Node::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Item.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* Node::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements Item.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool Node::hasInstanceOfType const XMLCh *  typeURI,
const XMLCh *  typeName,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+check if the underlying type of this node is instance of a certain type +

+

+

+ + + + +
+ + + + + + + + +
virtual bool Node::isAtomicValue  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns false, since this Item is a Node. +

+ +

+Implements Item.

+

+ + + + +
+ + + + + + + + +
virtual bool Node::isNode  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns true, since this Item is a Node. +

+ +

+Implements Item.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool Node::lessThan const Node::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns true if 'this' is before 'other' in document order, false otherwise. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool Node::uniqueLessThan const Node::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Specifies a sorting order for uniqueness removal. +

+This may or may not return the same as lessThan.

+


Member Data Documentation

+

+ + + + +
+ + + + +
const XMLCh Node::attribute_string[] [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const XMLCh Node::cdata_string[] [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const XMLCh Node::comment_string[] [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const XMLCh Node::document_string[] [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const XMLCh Node::element_string[] [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const XMLCh Node::gXerces[] [static]
+
+ + + + + +
+   + + +

+The "Xerces" DOMNode node interface. +

+Use this as the parameter when you call Item::getInterface() to have a xerces DOMNode returned, if the Node is of the correct type. If it is not of the correct type, the method will return 0.

+

+ + + + +
+ + + + +
const XMLCh Node::namespace_string[] [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const XMLCh Node::processing_instruction_string[] [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const XMLCh Node::text_string[] [static]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classNode__inherit__graph.map b/docs/simple-api/classNode__inherit__graph.map new file mode 100644 index 00000000..71b257aa --- /dev/null +++ b/docs/simple-api/classNode__inherit__graph.map @@ -0,0 +1,3 @@ +base referer +rect $classItem.html 50,84 98,108 +rect $classReferenceCounted.html 7,9 141,33 diff --git a/docs/simple-api/classNode__inherit__graph.md5 b/docs/simple-api/classNode__inherit__graph.md5 new file mode 100644 index 00000000..18992a0a --- /dev/null +++ b/docs/simple-api/classNode__inherit__graph.md5 @@ -0,0 +1 @@ +b48f7df136fec486cc0e31f3ab054472 \ No newline at end of file diff --git a/docs/simple-api/classNode__inherit__graph.png b/docs/simple-api/classNode__inherit__graph.png new file mode 100644 index 00000000..3a095032 Binary files /dev/null and b/docs/simple-api/classNode__inherit__graph.png differ diff --git a/docs/simple-api/classNumeric-members.html b/docs/simple-api/classNumeric-members.html new file mode 100644 index 00000000..f3380ce0 --- /dev/null +++ b/docs/simple-api/classNumeric-members.html @@ -0,0 +1,120 @@ + + +XQilla Simple API: Member List + + + + + + +

Numeric Member List

This is the complete list of members for Numeric, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
add(const Numeric::Ptr &other, const DynamicContext *context) const =0Numeric [pure virtual]
ANY_SIMPLE_TYPE enum valueAnyAtomicType
ANY_URI enum valueAnyAtomicType
asDecimalString(const MAPM &value, int significantDigits, const StaticContext *context)Numeric [static]
asDecimalString(int significantDigits, const StaticContext *context) const Numeric [protected]
asDoubleString(State state, const MAPM &value, int significantDigits, const StaticContext *context)Numeric [static]
asDoubleString(int significantDigits, const StaticContext *context) const Numeric [protected]
asMAPM() const =0Numeric [pure virtual]
asString(const DynamicContext *context) const =0Numeric [pure virtual]
AtomicObjectType enum nameAnyAtomicType
BASE_64_BINARY enum valueAnyAtomicType
BOOLEAN enum valueAnyAtomicType
castable(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
castAs(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType
castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const Numeric [protected, virtual]
AnyAtomicType::castAsInternal(AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [protected, virtual]
castIsSupported(AtomicObjectType targetIndex, const DynamicContext *context) const AnyAtomicType
ceiling(const DynamicContext *context) const =0Numeric [pure virtual]
checkDoubleLimits(Numeric::State &state, MAPM &value)Numeric [static]
checkFloatLimits(Numeric::State &state, MAPM &value)Numeric [static]
compare(const Numeric::Ptr &other, const DynamicContext *context) const Numeric [virtual]
DATE enum valueAnyAtomicType
DATE_TIME enum valueAnyAtomicType
DAY_TIME_DURATION enum valueAnyAtomicType
DECIMAL enum valueAnyAtomicType
decrementRefCount() const ReferenceCounted [inline, virtual]
divide(const Numeric::Ptr &other, const DynamicContext *context) const =0Numeric [pure virtual]
DOUBLE enum valueAnyAtomicType
DURATION enum valueAnyAtomicType
equals(const AnyAtomicType::Ptr &target, const DynamicContext *context) const Numeric [virtual]
fgDT_ANYATOMICTYPEAnyAtomicType [static]
fgDT_ANYATOMICTYPE_XERCESHASHAnyAtomicType [static]
FLOAT enum valueAnyAtomicType
floor(const DynamicContext *context) const =0Numeric [pure virtual]
G_DAY enum valueAnyAtomicType
G_MONTH enum valueAnyAtomicType
G_MONTH_DAY enum valueAnyAtomicType
G_YEAR enum valueAnyAtomicType
G_YEAR_MONTH enum valueAnyAtomicType
getInterface(const XMLCh *name) const =0Item [pure virtual]
getPrimitiveTypeIndex() const =0Numeric [pure virtual]
getPrimitiveTypeName() const =0Numeric [pure virtual]
getPrimitiveTypeURI() const AnyAtomicType [virtual]
getState() const =0Numeric [pure virtual]
getTypeName() const =0Numeric [pure virtual]
getTypeURI() const =0Numeric [pure virtual]
greaterThan(const Numeric::Ptr &other, const DynamicContext *context) const Numeric [virtual]
gXQillaItem [static]
HEX_BINARY enum valueAnyAtomicType
incrementRefCount() const ReferenceCounted [inline]
INF enum valueNumeric
INF_stringNumeric [static]
invert(const DynamicContext *context) const =0Numeric [pure virtual]
isAtomicValue() const AnyAtomicType [virtual]
isDateOrTimeTypeValue() const AnyAtomicType [virtual]
isInfinite() const =0Numeric [pure virtual]
isInstanceOfType(const XMLCh *targetURI, const XMLCh *targetType, const StaticContext *context) const AnyAtomicType [virtual]
isNaN() const =0Numeric [pure virtual]
isNegative() const =0Numeric [pure virtual]
isNode() const AnyAtomicType [virtual]
isNumericValue() const Numeric [inline, virtual]
isOfType(const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const AnyAtomicType [virtual]
isPositive() const =0Numeric [pure virtual]
isZero() const =0Numeric [pure virtual]
Item()Item [inline, protected]
lessThan(const Numeric::Ptr &other, const DynamicContext *context) const Numeric [virtual]
mod(const Numeric::Ptr &other, const DynamicContext *context) const =0Numeric [pure virtual]
multiply(const Numeric::Ptr &other, const DynamicContext *context) const =0Numeric [pure virtual]
NaN enum valueNumeric
NAN_stringNumeric [static]
NaN_stringNumeric [static]
NEG_INF enum valueNumeric
NEG_NUM enum valueNumeric
NegINF_stringNumeric [static]
NegZero_stringNumeric [static]
NOTATION enum valueAnyAtomicType
NUM enum valueNumeric
NumAtomicObjectTypes enum valueAnyAtomicType
PosZero_stringNumeric [static]
promoteTypeIfApplicable(const XMLCh *typeURI, const XMLCh *typeName, const DynamicContext *context) const =0Numeric [pure virtual]
Ptr typedefNumeric
QNAME enum valueAnyAtomicType
ReferenceCounted()ReferenceCounted [inline]
round(const DynamicContext *context) const =0Numeric [pure virtual]
roundHalfToEven(const Numeric::Ptr &precision, const DynamicContext *context) const =0Numeric [pure virtual]
State enum nameNumeric
STRING enum valueAnyAtomicType
subtract(const Numeric::Ptr &other, const DynamicContext *context) const =0Numeric [pure virtual]
TIME enum valueAnyAtomicType
UNTYPED_ATOMIC enum valueAnyAtomicType
YEAR_MONTH_DURATION enum valueAnyAtomicType
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classNumeric.html b/docs/simple-api/classNumeric.html new file mode 100644 index 00000000..351ae3e6 --- /dev/null +++ b/docs/simple-api/classNumeric.html @@ -0,0 +1,1622 @@ + + +XQilla Simple API: Numeric Class Reference + + + + + + +

Numeric Class Reference

#include <Numeric.hpp> +

+Inheritance diagram for Numeric:

Inheritance graph
+ + + + + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef RefCountPointer< const
+Numeric
Ptr
enum  State {
+  NEG_INF = 0, +NEG_NUM = 1, +NUM = 2, +INF = 3, +
+  NaN = 4 +
+ }

Public Member Functions

virtual bool isNumericValue () const
virtual const XMLCh * getPrimitiveTypeName () const =0
virtual const XMLCh * getTypeURI () const =0
virtual const XMLCh * getTypeName () const =0
virtual const XMLCh * asString (const DynamicContext *context) const =0
virtual Numeric::Ptr promoteTypeIfApplicable (const XMLCh *typeURI, const XMLCh *typeName, const DynamicContext *context) const =0
virtual bool equals (const AnyAtomicType::Ptr &target, const DynamicContext *context) const
virtual bool lessThan (const Numeric::Ptr &other, const DynamicContext *context) const
 Returns true if this is less than other, false otherwise.
virtual bool greaterThan (const Numeric::Ptr &other, const DynamicContext *context) const
 Returns true if this is greater than other, false otherwise.
virtual int compare (const Numeric::Ptr &other, const DynamicContext *context) const
 Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise.
virtual Numeric::Ptr add (const Numeric::Ptr &other, const DynamicContext *context) const =0
 Returns a Numeric object which is the sum of this and other.
virtual Numeric::Ptr subtract (const Numeric::Ptr &other, const DynamicContext *context) const =0
 Returns a Numeric object which is the difference of this and other.
virtual Numeric::Ptr multiply (const Numeric::Ptr &other, const DynamicContext *context) const =0
 Returns a Numeric object which is the product of this and other.
virtual Numeric::Ptr divide (const Numeric::Ptr &other, const DynamicContext *context) const =0
 Returns a Numeric object which is the quotient of this and other.
virtual Numeric::Ptr mod (const Numeric::Ptr &other, const DynamicContext *context) const =0
 Returns the arithmetic product of its operands as a Numeric.
virtual Numeric::Ptr floor (const DynamicContext *context) const =0
 Returns the floor of this Numeric.
virtual Numeric::Ptr ceiling (const DynamicContext *context) const =0
 Returns the ceiling of this Numeric.
virtual Numeric::Ptr round (const DynamicContext *context) const =0
 Rounds this Numeric.
virtual Numeric::Ptr roundHalfToEven (const Numeric::Ptr &precision, const DynamicContext *context) const =0
 Rounds this Numeric to the given precision, and rounds a half to even.
virtual Numeric::Ptr invert (const DynamicContext *context) const =0
 Returns the Additive inverse of this Numeric.
virtual bool isZero () const =0
 Does this Numeric have value 0?
virtual bool isPositive () const =0
 Is this Numeric positive?
virtual bool isNegative () const =0
 Is this Numeric negative?
virtual bool isNaN () const =0
virtual bool isInfinite () const =0
virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex () const =0
virtual const MAPM & asMAPM () const =0
virtual State getState () const =0

Static Public Member Functions

static void checkFloatLimits (Numeric::State &state, MAPM &value)
static void checkDoubleLimits (Numeric::State &state, MAPM &value)
static const XMLCh * asDecimalString (const MAPM &value, int significantDigits, const StaticContext *context)
static const XMLCh * asDoubleString (State state, const MAPM &value, int significantDigits, const StaticContext *context)

Static Public Attributes

static const XMLCh NaN_string []
static const XMLCh NAN_string []
static const XMLCh INF_string []
static const XMLCh NegINF_string []
static const XMLCh NegZero_string []
static const XMLCh PosZero_string []

Protected Member Functions

virtual AnyAtomicType::Ptr castAsInternal (AtomicObjectType targetIndex, const XMLCh *targetURI, const XMLCh *targetType, const DynamicContext *context) const
const XMLCh * asDecimalString (int significantDigits, const StaticContext *context) const
const XMLCh * asDoubleString (int significantDigits, const StaticContext *context) const
+

Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef RefCountPointer<const Numeric> Numeric::Ptr
+
+ + + + + +
+   + + +

+ +

+Reimplemented from AnyAtomicType. +

+Reimplemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
enum Numeric::State
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + + + + +
NEG_INF  +
NEG_NUM  +
NUM  +
INF  +
NaN  +
+
+
+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr Numeric::add const Numeric::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a Numeric object which is the sum of this and other. +

+ +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
const XMLCh* Numeric::asDecimalString int  significantDigits,
const StaticContext context
const [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static const XMLCh* Numeric::asDecimalString const MAPM &  value,
int  significantDigits,
const StaticContext context
[static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
const XMLCh* Numeric::asDoubleString int  significantDigits,
const StaticContext context
const [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static const XMLCh* Numeric::asDoubleString State  state,
const MAPM &  value,
int  significantDigits,
const StaticContext context
[static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual const MAPM& Numeric::asMAPM  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* Numeric::asString const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType. +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual AnyAtomicType::Ptr Numeric::castAsInternal AtomicObjectType  targetIndex,
const XMLCh *  targetURI,
const XMLCh *  targetType,
const DynamicContext context
const [protected, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual Numeric::Ptr Numeric::ceiling const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the ceiling of this Numeric. +

+ +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static void Numeric::checkDoubleLimits Numeric::State state,
MAPM &  value
[static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static void Numeric::checkFloatLimits Numeric::State state,
MAPM &  value
[static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual int Numeric::compare const Numeric::Ptr other,
const DynamicContext context
const [virtual]
+
+ + + + + +
+   + + +

+Returns less than 0 if this is less that other, 0 if they are the same, and greater than 0 otherwise. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr Numeric::divide const Numeric::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a Numeric object which is the quotient of this and other. +

+ +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool Numeric::equals const AnyAtomicType::Ptr target,
const DynamicContext context
const [virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType.

+

+ + + + +
+ + + + + + + + + +
virtual Numeric::Ptr Numeric::floor const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the floor of this Numeric. +

+ +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + +
virtual AnyAtomicType::AtomicObjectType Numeric::getPrimitiveTypeIndex  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType. +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* Numeric::getPrimitiveTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType. +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + +
virtual State Numeric::getState  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* Numeric::getTypeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType. +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* Numeric::getTypeURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implements AnyAtomicType. +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool Numeric::greaterThan const Numeric::Ptr other,
const DynamicContext context
const [virtual]
+
+ + + + + +
+   + + +

+Returns true if this is greater than other, false otherwise. +

+

+

+ + + + +
+ + + + + + + + + +
virtual Numeric::Ptr Numeric::invert const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the Additive inverse of this Numeric. +

+ +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + +
virtual bool Numeric::isInfinite  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + +
virtual bool Numeric::isNaN  )  const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + +
virtual bool Numeric::isNegative  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Is this Numeric negative? +

+ +

+Implemented in ATDecimalOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + +
virtual bool Numeric::isNumericValue  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+ +

+Reimplemented from AnyAtomicType.

+

+ + + + +
+ + + + + + + + +
virtual bool Numeric::isPositive  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Is this Numeric positive? +

+ +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + +
virtual bool Numeric::isZero  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Does this Numeric have value 0? +

+ +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool Numeric::lessThan const Numeric::Ptr other,
const DynamicContext context
const [virtual]
+
+ + + + + +
+   + + +

+Returns true if this is less than other, false otherwise. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr Numeric::mod const Numeric::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the arithmetic product of its operands as a Numeric. +

+ +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr Numeric::multiply const Numeric::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a Numeric object which is the product of this and other. +

+ +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr Numeric::promoteTypeIfApplicable const XMLCh *  typeURI,
const XMLCh *  typeName,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+ +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + + +
virtual Numeric::Ptr Numeric::round const DynamicContext context  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Rounds this Numeric. +

+ +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr Numeric::roundHalfToEven const Numeric::Ptr precision,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Rounds this Numeric to the given precision, and rounds a half to even. +

+ +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Numeric::Ptr Numeric::subtract const Numeric::Ptr other,
const DynamicContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a Numeric object which is the difference of this and other. +

+ +

+Implemented in ATDecimalOrDerived, ATDoubleOrDerived, and ATFloatOrDerived.

+


Member Data Documentation

+

+ + + + +
+ + + + +
const XMLCh Numeric::INF_string[] [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const XMLCh Numeric::NAN_string[] [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const XMLCh Numeric::NaN_string[] [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const XMLCh Numeric::NegINF_string[] [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const XMLCh Numeric::NegZero_string[] [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const XMLCh Numeric::PosZero_string[] [static]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classNumericTypeConstructor-members.html b/docs/simple-api/classNumericTypeConstructor-members.html new file mode 100644 index 00000000..b00c5456 --- /dev/null +++ b/docs/simple-api/classNumericTypeConstructor-members.html @@ -0,0 +1,34 @@ + + +XQilla Simple API: Member List + + + + + + +

NumericTypeConstructor Member List

This is the complete list of members for NumericTypeConstructor, including all inherited members.

+ + + + + + + +
asString(const DynamicContext *context) const NumericTypeConstructor [virtual]
createItem(const DynamicContext *context) const NumericTypeConstructor [virtual]
getStaticType() const NumericTypeConstructor [inline, virtual]
getTypeName() const NumericTypeConstructor [inline, virtual]
getTypeURI() const NumericTypeConstructor [inline, virtual]
NumericTypeConstructor(const XMLCh *typeURI, const XMLCh *typeName, const MAPM &value, AnyAtomicType::AtomicObjectType primitiveType, xercesc::MemoryManager *mm)NumericTypeConstructor
~NumericTypeConstructor()NumericTypeConstructor [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classNumericTypeConstructor.html b/docs/simple-api/classNumericTypeConstructor.html new file mode 100644 index 00000000..598e5a8a --- /dev/null +++ b/docs/simple-api/classNumericTypeConstructor.html @@ -0,0 +1,269 @@ + + +XQilla Simple API: NumericTypeConstructor Class Reference + + + + + + +

NumericTypeConstructor Class Reference

#include <NumericTypeConstructor.hpp> +

+List of all members. + + + + + + + + + + + + + + + + +

Public Member Functions

 NumericTypeConstructor (const XMLCh *typeURI, const XMLCh *typeName, const MAPM &value, AnyAtomicType::AtomicObjectType primitiveType, xercesc::MemoryManager *mm)
virtual ~NumericTypeConstructor ()
virtual const StaticType & getStaticType () const
virtual Item::Ptr createItem (const DynamicContext *context) const
virtual std::string asString (const DynamicContext *context) const
virtual const XMLCh * getTypeURI () const
virtual const XMLCh * getTypeName () const
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NumericTypeConstructor::NumericTypeConstructor const XMLCh *  typeURI,
const XMLCh *  typeName,
const MAPM &  value,
AnyAtomicType::AtomicObjectType  primitiveType,
xercesc::MemoryManager mm
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual NumericTypeConstructor::~NumericTypeConstructor  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual std::string NumericTypeConstructor::asString const DynamicContext context  )  const [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual Item::Ptr NumericTypeConstructor::createItem const DynamicContext context  )  const [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual const StaticType& NumericTypeConstructor::getStaticType  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* NumericTypeConstructor::getTypeName  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* NumericTypeConstructor::getTypeURI  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classNumeric__inherit__graph.map b/docs/simple-api/classNumeric__inherit__graph.map new file mode 100644 index 00000000..dd390852 --- /dev/null +++ b/docs/simple-api/classNumeric__inherit__graph.map @@ -0,0 +1,7 @@ +base referer +rect $classATDecimalOrDerived.html 8,307 154,331 +rect $classATDoubleOrDerived.html 178,307 320,331 +rect $classATFloatOrDerived.html 344,307 472,331 +rect $classAnyAtomicType.html 192,158 306,182 +rect $classItem.html 225,83 273,107 +rect $classReferenceCounted.html 182,9 316,33 diff --git a/docs/simple-api/classNumeric__inherit__graph.md5 b/docs/simple-api/classNumeric__inherit__graph.md5 new file mode 100644 index 00000000..b6b45b3a --- /dev/null +++ b/docs/simple-api/classNumeric__inherit__graph.md5 @@ -0,0 +1 @@ +e09e53b678a6531b4c3ee49e020af477 \ No newline at end of file diff --git a/docs/simple-api/classNumeric__inherit__graph.png b/docs/simple-api/classNumeric__inherit__graph.png new file mode 100644 index 00000000..85be0d6a Binary files /dev/null and b/docs/simple-api/classNumeric__inherit__graph.png differ diff --git a/docs/simple-api/classRefCountPointer-members.html b/docs/simple-api/classRefCountPointer-members.html new file mode 100644 index 00000000..bc1a7352 --- /dev/null +++ b/docs/simple-api/classRefCountPointer-members.html @@ -0,0 +1,38 @@ + + +XQilla Simple API: Member List + + + + + + +

RefCountPointer< T > Member List

This is the complete list of members for RefCountPointer< T >, including all inherited members.

+ + + + + + + + + + + +
_pRefCountPointer< T > [protected]
get() const RefCountPointer< T > [inline]
isNull() const RefCountPointer< T > [inline]
notNull() const RefCountPointer< T > [inline]
operator T *() const RefCountPointer< T > [inline]
operator->() const RefCountPointer< T > [inline]
operator=(const RefCountPointer< T > &o)RefCountPointer< T > [inline]
RefCountPointer(T *p=0)RefCountPointer< T > [inline]
RefCountPointer(const RefCountPointer< T2 > &o)RefCountPointer< T > [inline]
RefCountPointer(const RefCountPointer< T > &o)RefCountPointer< T > [inline]
~RefCountPointer()RefCountPointer< T > [inline]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classRefCountPointer.html b/docs/simple-api/classRefCountPointer.html new file mode 100644 index 00000000..7f99615b --- /dev/null +++ b/docs/simple-api/classRefCountPointer.html @@ -0,0 +1,415 @@ + + +XQilla Simple API: RefCountPointer< T > Class Template Reference + + + + + + +

RefCountPointer< T > Class Template Reference

Super class of all the reference counted wrappers for Items. +More... +

+#include <ReferenceCounted.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 RefCountPointer (T *p=0)
template<class T2>
 RefCountPointer (const RefCountPointer< T2 > &o)
 RefCountPointer (const RefCountPointer< T > &o)
RefCountPointeroperator= (const RefCountPointer< T > &o)
 ~RefCountPointer ()
T * operator-> () const
 operator T * () const
T * get () const
bool isNull () const
bool notNull () const

Protected Attributes

T * _p
+


Detailed Description

+

template<class T>
+ class RefCountPointer< T >

+ +Super class of all the reference counted wrappers for Items. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + +
+template<class T>
RefCountPointer< T >::RefCountPointer T *  p = 0  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + +
+template<class T>
+template<class T2>
RefCountPointer< T >::RefCountPointer const RefCountPointer< T2 > &  o  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + +
+template<class T>
RefCountPointer< T >::RefCountPointer const RefCountPointer< T > &  o  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class T>
RefCountPointer< T >::~RefCountPointer  )  [inline]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + +
+template<class T>
T* RefCountPointer< T >::get  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class T>
bool RefCountPointer< T >::isNull  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class T>
bool RefCountPointer< T >::notNull  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class T>
RefCountPointer< T >::operator T *  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class T>
T* RefCountPointer< T >::operator->  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + +
+template<class T>
RefCountPointer& RefCountPointer< T >::operator= const RefCountPointer< T > &  o  )  [inline]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + + + + +
+template<class T>
T* RefCountPointer< T >::_p [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classRefCountPointer__inherit__graph.png b/docs/simple-api/classRefCountPointer__inherit__graph.png new file mode 100644 index 00000000..61ccdf3a Binary files /dev/null and b/docs/simple-api/classRefCountPointer__inherit__graph.png differ diff --git a/docs/simple-api/classReferenceCounted-members.html b/docs/simple-api/classReferenceCounted-members.html new file mode 100644 index 00000000..0c80565b --- /dev/null +++ b/docs/simple-api/classReferenceCounted-members.html @@ -0,0 +1,32 @@ + + +XQilla Simple API: Member List + + + + + + +

ReferenceCounted Member List

This is the complete list of members for ReferenceCounted, including all inherited members.

+ + + + + +
_ref_countReferenceCounted [protected]
decrementRefCount() const ReferenceCounted [inline, virtual]
incrementRefCount() const ReferenceCounted [inline]
ReferenceCounted()ReferenceCounted [inline]
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classReferenceCounted.html b/docs/simple-api/classReferenceCounted.html new file mode 100644 index 00000000..d1650371 --- /dev/null +++ b/docs/simple-api/classReferenceCounted.html @@ -0,0 +1,198 @@ + + +XQilla Simple API: ReferenceCounted Class Reference + + + + + + +

ReferenceCounted Class Reference

Super class for reference counted classes. +More... +

+#include <ReferenceCounted.hpp> +

+Inheritance diagram for ReferenceCounted:

Inheritance graph
+ + + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + +

Public Member Functions

 ReferenceCounted ()
virtual ~ReferenceCounted ()
void incrementRefCount () const
 Increment the reference count.
virtual void decrementRefCount () const
 Decrement the reference count, deleting if it becomes zero.

Protected Attributes

unsigned int _ref_count
+

Detailed Description

+Super class for reference counted classes. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
ReferenceCounted::ReferenceCounted  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual ReferenceCounted::~ReferenceCounted  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual void ReferenceCounted::decrementRefCount  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+Decrement the reference count, deleting if it becomes zero. +

+

+

+ + + + +
+ + + + + + + + +
void ReferenceCounted::incrementRefCount  )  const [inline]
+
+ + + + + +
+   + + +

+Increment the reference count. +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
unsigned int ReferenceCounted::_ref_count [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classReferenceCounted__inherit__graph.map b/docs/simple-api/classReferenceCounted__inherit__graph.map new file mode 100644 index 00000000..0e68aea2 --- /dev/null +++ b/docs/simple-api/classReferenceCounted__inherit__graph.map @@ -0,0 +1,5 @@ +base referer +rect $classItem.html 94,84 142,108 +rect $classTimezone.html 166,84 246,108 +rect $classAnyAtomicType.html 8,158 122,182 +rect $classNode.html 146,158 200,182 diff --git a/docs/simple-api/classReferenceCounted__inherit__graph.md5 b/docs/simple-api/classReferenceCounted__inherit__graph.md5 new file mode 100644 index 00000000..8adda0fe --- /dev/null +++ b/docs/simple-api/classReferenceCounted__inherit__graph.md5 @@ -0,0 +1 @@ +7c25ce284507c4ce376d6b4b9eb83206 \ No newline at end of file diff --git a/docs/simple-api/classReferenceCounted__inherit__graph.png b/docs/simple-api/classReferenceCounted__inherit__graph.png new file mode 100644 index 00000000..21f3eccd Binary files /dev/null and b/docs/simple-api/classReferenceCounted__inherit__graph.png differ diff --git a/docs/simple-api/classResult-members.html b/docs/simple-api/classResult-members.html new file mode 100644 index 00000000..b15c90fe --- /dev/null +++ b/docs/simple-api/classResult-members.html @@ -0,0 +1,38 @@ + + +XQilla Simple API: Member List + + + + + + +

Result Member List

This is the complete list of members for Result, including all inherited members.

+ + + + + + + + + + + +
get()Result [inline]
get() const Result [inline]
getEmpty() const Result
isNull() const Result [inline]
operator->()Result [inline]
operator->() const Result [inline]
operator=(const Result &o)Result [inline]
Result(const Sequence &seq)Result
Result(ResultImpl *impl)Result
Result(const Result &o)Result
~Result()Result


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classResult.html b/docs/simple-api/classResult.html new file mode 100644 index 00000000..4b5d0c2a --- /dev/null +++ b/docs/simple-api/classResult.html @@ -0,0 +1,380 @@ + + +XQilla Simple API: Result Class Reference + + + + + + +

Result Class Reference

A reference counting wrapper for the lazily evaluated query result. +More... +

+#include <Result.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 Result (const Sequence &seq)
 Result (ResultImpl *impl)
 Result (const Result &o)
Resultoperator= (const Result &o)
 ~Result ()
ResultImpl * operator-> ()
 Returns the underlying ResultImpl object.
const ResultImpl * operator-> () const
 Returns the underlying ResultImpl object.
ResultImpl * get ()
 Returns the underlying ResultImpl object.
const ResultImpl * get () const
 Returns the underlying ResultImpl object.
bool isNull () const
 Returns true if the underlying pointer is null.
EmptyResult * getEmpty () const
+


Detailed Description

+A reference counting wrapper for the lazily evaluated query result. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
Result::Result const Sequence seq  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
Result::Result ResultImpl *  impl  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
Result::Result const Result o  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
Result::~Result  ) 
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
const ResultImpl * Result::get  )  const [inline]
+
+ + + + + +
+   + + +

+Returns the underlying ResultImpl object. +

+

+

+ + + + +
+ + + + + + + + +
ResultImpl * Result::get  )  [inline]
+
+ + + + + +
+   + + +

+Returns the underlying ResultImpl object. +

+

+

+ + + + +
+ + + + + + + + +
EmptyResult* Result::getEmpty  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
bool Result::isNull  )  const [inline]
+
+ + + + + +
+   + + +

+Returns true if the underlying pointer is null. +

+

+

+ + + + +
+ + + + + + + + +
const ResultImpl * Result::operator->  )  const [inline]
+
+ + + + + +
+   + + +

+Returns the underlying ResultImpl object. +

+

+

+ + + + +
+ + + + + + + + +
ResultImpl * Result::operator->  )  [inline]
+
+ + + + + +
+   + + +

+Returns the underlying ResultImpl object. +

+

+

+ + + + +
+ + + + + + + + + +
Result & Result::operator= const Result o  )  [inline]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classScope-members.html b/docs/simple-api/classScope-members.html new file mode 100644 index 00000000..dc3e10d2 --- /dev/null +++ b/docs/simple-api/classScope-members.html @@ -0,0 +1,49 @@ + + +XQilla Simple API: Member List + + + + + + +

Scope< TYPE > Member List

This is the complete list of members for Scope< TYPE >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
clear()Scope< TYPE >
get(unsigned int nsID, const XMLCh *name)Scope< TYPE >
getNext()Scope< TYPE >
getType() const Scope< TYPE >
getVars() const Scope< TYPE >
GLOBAL_SCOPE enum valueScope< TYPE >
LOCAL_SCOPE enum valueScope< TYPE >
LOGICAL_BLOCK_SCOPE enum valueScope< TYPE >
operator delete(void *p)xercesc::XMemory
operator delete(void *p, MemoryManager *memMgr)xercesc::XMemory
operator delete(void *p, void *ptr)xercesc::XMemory
operator new(size_t size)xercesc::XMemory
operator new(size_t size, MemoryManager *memMgr)xercesc::XMemory
operator new(size_t size, void *ptr)xercesc::XMemory
put(unsigned int nsID, const XMLCh *name, VarHashEntry< TYPE > *value)Scope< TYPE >
remove(unsigned int nsID, const XMLCh *name)Scope< TYPE >
Scope(XPath2MemoryManager *memMgr, Type type)Scope< TYPE >
setNext(Scope *next)Scope< TYPE >
Type enum nameScope< TYPE >
VarHash typedefScope< TYPE >
XMemory()xercesc::XMemory [inline, protected]
~Scope()Scope< TYPE >


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classScope.html b/docs/simple-api/classScope.html new file mode 100644 index 00000000..637f24e0 --- /dev/null +++ b/docs/simple-api/classScope.html @@ -0,0 +1,508 @@ + + +XQilla Simple API: Scope< TYPE > Class Template Reference + + + + + + +

Scope< TYPE > Class Template Reference

used inside VariableStore to implement variable scoping +More... +

+#include <Scope.hpp> +

+Inheritance diagram for Scope< TYPE >:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef xercesc::RefHash2KeysTableOf<
+ VarHashEntry< TYPE > > 
VarHash
enum  Type { GLOBAL_SCOPE, +LOCAL_SCOPE, +LOGICAL_BLOCK_SCOPE + }
 enum for classifying type of scope More...

Public Member Functions

 Scope (XPath2MemoryManager *memMgr, Type type)
 constructor.
 ~Scope ()
void clear ()
Type getType () const
VarHashEntry< TYPE > * get (unsigned int nsID, const XMLCh *name)
void put (unsigned int nsID, const XMLCh *name, VarHashEntry< TYPE > *value)
void remove (unsigned int nsID, const XMLCh *name)
std::vector< std::pair< unsigned
+int, const XMLCh * > > 
getVars () const
ScopegetNext ()
void setNext (Scope *next)
+

Detailed Description

+

template<class TYPE>
+ class Scope< TYPE >

+ +used inside VariableStore to implement variable scoping +

+


Member Typedef Documentation

+

+ + + + +
+ + + + + + + +
+template<class TYPE>
typedef xercesc:: RefHash2KeysTableOf< VarHashEntry<TYPE> > Scope< TYPE >::VarHash
+
+ + + + + +
+   + + +

+

+


Member Enumeration Documentation

+

+ + + + +
+ + + + + + + +
+template<class TYPE>
enum Scope::Type
+
+ + + + + +
+   + + +

+enum for classifying type of scope +

+

Enumerator:
+ + + + +
GLOBAL_SCOPE  +
LOCAL_SCOPE  +
LOGICAL_BLOCK_SCOPE  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<class TYPE>
Scope< TYPE >::Scope XPath2MemoryManager memMgr,
Type  type
+
+ + + + + +
+   + + +

+constructor. +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
Scope< TYPE >::~Scope  ) 
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
void Scope< TYPE >::clear  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<class TYPE>
VarHashEntry< TYPE > * Scope< TYPE >::get unsigned int  nsID,
const XMLCh *  name
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
Scope< TYPE > * Scope< TYPE >::getNext  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
Scope< TYPE >::Type Scope< TYPE >::getType  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
std::vector< std::pair< unsigned int, const XMLCh * > > Scope< TYPE >::getVars  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+template<class TYPE>
void Scope< TYPE >::put unsigned int  nsID,
const XMLCh *  name,
VarHashEntry< TYPE > *  value
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<class TYPE>
void Scope< TYPE >::remove unsigned int  nsID,
const XMLCh *  name
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + +
+template<class TYPE>
void Scope< TYPE >::setNext Scope< TYPE > *  next  ) 
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classScope__inherit__graph.map b/docs/simple-api/classScope__inherit__graph.map new file mode 100644 index 00000000..e955adb5 --- /dev/null +++ b/docs/simple-api/classScope__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1XMemory.html 7,9 141,33 diff --git a/docs/simple-api/classScope__inherit__graph.md5 b/docs/simple-api/classScope__inherit__graph.md5 new file mode 100644 index 00000000..bf079757 --- /dev/null +++ b/docs/simple-api/classScope__inherit__graph.md5 @@ -0,0 +1 @@ +5a02ad863cada4d87343f3e2cb216db0 \ No newline at end of file diff --git a/docs/simple-api/classScope__inherit__graph.png b/docs/simple-api/classScope__inherit__graph.png new file mode 100644 index 00000000..6b7dbdea Binary files /dev/null and b/docs/simple-api/classScope__inherit__graph.png differ diff --git a/docs/simple-api/classSequence-members.html b/docs/simple-api/classSequence-members.html new file mode 100644 index 00000000..751ac1c1 --- /dev/null +++ b/docs/simple-api/classSequence-members.html @@ -0,0 +1,65 @@ + + +XQilla Simple API: Member List + + + + + + +

Sequence Member List

This is the complete list of members for Sequence, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addItem(const Item::Ptr &item)Sequence
addItemFront(const Item::Ptr &item)Sequence
begin(void)Sequence
begin(void) const Sequence
clear()Sequence
const_iterator typedefSequence
const_reverse_iterator typedefSequence
end(void)Sequence
end(void) const Sequence
first() const Sequence
getLength(void) const Sequence
isEmpty() const Sequence
item(unsigned int index) const Sequence
item(const ATDecimalOrDerived::Ptr &index) const Sequence
iterator typedefSequence
joinSequence(const Sequence &s)Sequence
operator delete(void *p)xercesc::XMemory
operator delete(void *p, MemoryManager *memMgr)xercesc::XMemory
operator delete(void *p, void *ptr)xercesc::XMemory
operator new(size_t size)xercesc::XMemory
operator new(size_t size, MemoryManager *memMgr)xercesc::XMemory
operator new(size_t size, void *ptr)xercesc::XMemory
operator=(const Sequence &)Sequence
rbegin(void)Sequence
rbegin(void) const Sequence
rend(void)Sequence
rend(void) const Sequence
reverse_iterator typedefSequence
second() const Sequence
Sequence(const Item::Ptr &item, xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager)Sequence
Sequence(xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager)Sequence
Sequence(unsigned int n, xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager)Sequence
Sequence(const Sequence &, xercesc::MemoryManager *memMgr)Sequence
Sequence(const Sequence &)Sequence
sortIntoDocumentOrder(const DynamicContext *context)Sequence
sortWithCollation(const Collation *collation, const DynamicContext *context)Sequence
XMemory()xercesc::XMemory [inline, protected]
~Sequence()Sequence


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classSequence.html b/docs/simple-api/classSequence.html new file mode 100644 index 00000000..4bdbb00c --- /dev/null +++ b/docs/simple-api/classSequence.html @@ -0,0 +1,1028 @@ + + +XQilla Simple API: Sequence Class Reference + + + + + + +

Sequence Class Reference

An eagerly evaluated result of a query execution. +More... +

+#include <Sequence.hpp> +

+Inheritance diagram for Sequence:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef VectorOfItems::iterator iterator
typedef VectorOfItems::const_iterator const_iterator
typedef VectorOfItems::reverse_iterator reverse_iterator
typedef VectorOfItems::const_reverse_iterator const_reverse_iterator

Public Member Functions

 Sequence (const Item::Ptr &item, xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager)
 Sequence (xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager)
 Sequence (unsigned int n, xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager)
 construct and reserve space for n elements
 Sequence (const Sequence &, xercesc::MemoryManager *memMgr)
 Sequence (const Sequence &)
Sequenceoperator= (const Sequence &)
 ~Sequence ()
void clear ()
const Item::Ptrfirst () const
const Item::Ptrsecond () const
Sequence::iterator begin (void)
 Begin an iterator.
Sequence::const_iterator begin (void) const
Sequence::iterator end (void)
 Find the end of the iterator.
Sequence::const_iterator end (void) const
Sequence::reverse_iterator rbegin (void)
 Reverse iterator methods.
Sequence::const_reverse_iterator rbegin (void) const
Sequence::reverse_iterator rend (void)
Sequence::const_reverse_iterator rend (void) const
unsigned int getLength (void) const
 Returns the number of nodes in the list.
const Item::Ptritem (unsigned int index) const
 Return the indexth item in the collection.
const Item::Ptritem (const ATDecimalOrDerived::Ptr &index) const
 Return the indexth item in the collection - takes ATDecimalOrDerived.
void addItem (const Item::Ptr &item)
 add an item to this sequence
void addItemFront (const Item::Ptr &item)
 add an item to this sequence
void joinSequence (const Sequence &s)
 combine another sequence onto this sequence
bool isEmpty () const
 Returns true if the list is empty.
void sortIntoDocumentOrder (const DynamicContext *context)
 sort into document order (only works for Sequences containing only Nodes)
void sortWithCollation (const Collation *collation, const DynamicContext *context)
 sort as strings, using the given collation
+

Detailed Description

+An eagerly evaluated result of a query execution. +

+


Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef VectorOfItems::const_iterator Sequence::const_iterator
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
typedef VectorOfItems::const_reverse_iterator Sequence::const_reverse_iterator
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
typedef VectorOfItems::iterator Sequence::iterator
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
typedef VectorOfItems::reverse_iterator Sequence::reverse_iterator
+
+ + + + + +
+   + + +

+

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
Sequence::Sequence const Item::Ptr item,
xercesc::MemoryManager memMgr = xercesc::XMLPlatformUtils::fgMemoryManager
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
Sequence::Sequence xercesc::MemoryManager memMgr = xercesc::XMLPlatformUtils::fgMemoryManager  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
Sequence::Sequence unsigned int  n,
xercesc::MemoryManager memMgr = xercesc::XMLPlatformUtils::fgMemoryManager
+
+ + + + + +
+   + + +

+construct and reserve space for n elements +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
Sequence::Sequence const Sequence,
xercesc::MemoryManager memMgr
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
Sequence::Sequence const Sequence  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
Sequence::~Sequence  ) 
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
void Sequence::addItem const Item::Ptr item  ) 
+
+ + + + + +
+   + + +

+add an item to this sequence +

+

+

+ + + + +
+ + + + + + + + + +
void Sequence::addItemFront const Item::Ptr item  ) 
+
+ + + + + +
+   + + +

+add an item to this sequence +

+

+

+ + + + +
+ + + + + + + + + +
Sequence::const_iterator Sequence::begin void   )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
Sequence::iterator Sequence::begin void   ) 
+
+ + + + + +
+   + + +

+Begin an iterator. +

+

+

+ + + + +
+ + + + + + + + +
void Sequence::clear  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
Sequence::const_iterator Sequence::end void   )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
Sequence::iterator Sequence::end void   ) 
+
+ + + + + +
+   + + +

+Find the end of the iterator. +

+

+

+ + + + +
+ + + + + + + + +
const Item::Ptr& Sequence::first  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
unsigned int Sequence::getLength void   )  const
+
+ + + + + +
+   + + +

+Returns the number of nodes in the list. +

+

+

+ + + + +
+ + + + + + + + +
bool Sequence::isEmpty  )  const
+
+ + + + + +
+   + + +

+Returns true if the list is empty. +

+

+

+ + + + +
+ + + + + + + + + +
const Item::Ptr& Sequence::item const ATDecimalOrDerived::Ptr index  )  const
+
+ + + + + +
+   + + +

+Return the indexth item in the collection - takes ATDecimalOrDerived. +

+

+

+ + + + +
+ + + + + + + + + +
const Item::Ptr& Sequence::item unsigned int  index  )  const
+
+ + + + + +
+   + + +

+Return the indexth item in the collection. +

+

+

+ + + + +
+ + + + + + + + + +
void Sequence::joinSequence const Sequence s  ) 
+
+ + + + + +
+   + + +

+combine another sequence onto this sequence +

+

+

+ + + + +
+ + + + + + + + + +
Sequence& Sequence::operator= const Sequence  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
Sequence::const_reverse_iterator Sequence::rbegin void   )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
Sequence::reverse_iterator Sequence::rbegin void   ) 
+
+ + + + + +
+   + + +

+Reverse iterator methods. +

+

+

+ + + + +
+ + + + + + + + + +
Sequence::const_reverse_iterator Sequence::rend void   )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
Sequence::reverse_iterator Sequence::rend void   ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
const Item::Ptr& Sequence::second  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void Sequence::sortIntoDocumentOrder const DynamicContext context  ) 
+
+ + + + + +
+   + + +

+sort into document order (only works for Sequences containing only Nodes) +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void Sequence::sortWithCollation const Collation collation,
const DynamicContext context
+
+ + + + + +
+   + + +

+sort as strings, using the given collation +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classSequence__inherit__graph.map b/docs/simple-api/classSequence__inherit__graph.map new file mode 100644 index 00000000..e955adb5 --- /dev/null +++ b/docs/simple-api/classSequence__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1XMemory.html 7,9 141,33 diff --git a/docs/simple-api/classSequence__inherit__graph.md5 b/docs/simple-api/classSequence__inherit__graph.md5 new file mode 100644 index 00000000..042c1fd0 --- /dev/null +++ b/docs/simple-api/classSequence__inherit__graph.md5 @@ -0,0 +1 @@ +23f19615a9ab2a82ee3c18a5c60a6735 \ No newline at end of file diff --git a/docs/simple-api/classSequence__inherit__graph.png b/docs/simple-api/classSequence__inherit__graph.png new file mode 100644 index 00000000..00eb1639 Binary files /dev/null and b/docs/simple-api/classSequence__inherit__graph.png differ diff --git a/docs/simple-api/classStaticContext-members.html b/docs/simple-api/classStaticContext-members.html new file mode 100644 index 00000000..fb4a3094 --- /dev/null +++ b/docs/simple-api/classStaticContext-members.html @@ -0,0 +1,97 @@ + + +XQilla Simple API: Member List + + + + + + +

StaticContext Member List

This is the complete list of members for StaticContext, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addCollation(Collation *collation)=0StaticContext [pure virtual]
addCustomFunction(FuncFactory *func)=0StaticContext [pure virtual]
addSchemaLocation(const XMLCh *uri, VectorOfStrings *locations)=0StaticContext [pure virtual]
CONSTRUCTION_MODE_PRESERVE enum valueStaticContext
CONSTRUCTION_MODE_STRIP enum valueStaticContext
ConstructionMode enum nameStaticContext
createDynamicContext(xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager) const =0StaticContext [pure virtual]
createModuleContext(xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager) const =0StaticContext [pure virtual]
createNewDocument() const =0StaticContext [pure virtual]
enableDebugging(bool enable=true)=0StaticContext [pure virtual]
FLWOR_ORDER_EMPTY_GREATEST enum valueStaticContext
FLWOR_ORDER_EMPTY_LEAST enum valueStaticContext
FLWOROrderingMode enum nameStaticContext
getBaseURI() const =0StaticContext [pure virtual]
getCollation(const XMLCh *const URI, const LocationInfo *location) const =0StaticContext [pure virtual]
getConstructionMode() const =0StaticContext [pure virtual]
getContextItemType() const =0StaticContext [pure virtual]
getDefaultCollation(const LocationInfo *location) const =0StaticContext [pure virtual]
getDefaultElementAndTypeNS() const =0StaticContext [pure virtual]
getDefaultFLWOROrderingMode() const =0StaticContext [pure virtual]
getDefaultFuncNS() const =0StaticContext [pure virtual]
getDocumentCache() const =0StaticContext [pure virtual]
getInheritNamespaces() const =0StaticContext [pure virtual]
getItemFactory() const =0StaticContext [pure virtual]
getMemoryManager() const =0StaticContext [pure virtual]
getModuleResolver() const =0StaticContext [pure virtual]
getNodeSetOrdering() const =0StaticContext [pure virtual]
getNSResolver() const =0StaticContext [pure virtual]
getPrefixBoundToUri(const XMLCh *uri) const =0StaticContext [pure virtual]
getPreserveBoundarySpace() const =0StaticContext [pure virtual]
getPreserveNamespaces() const =0StaticContext [pure virtual]
getUriBoundToPrefix(const XMLCh *prefix, const LocationInfo *location) const =0StaticContext [pure virtual]
getVariableTypeStore()=0StaticContext [pure virtual]
getXMLEntityResolver() const =0StaticContext [pure virtual]
getXPath1CompatibilityMode() const =0StaticContext [pure virtual]
isDebuggingEnabled() const =0StaticContext [pure virtual]
isTypeOrDerivedFromType(const XMLCh *const uri, const XMLCh *const typeName, const XMLCh *const uriToCheck, const XMLCh *const typeNameToCheck) const =0StaticContext [pure virtual]
lookUpFunction(const XMLCh *prefix, const XMLCh *name, VectorOfASTNodes &v, const LocationInfo *location) const =0StaticContext [pure virtual]
NodeSetOrdering enum nameStaticContext
operator delete(void *p)xercesc::XMemory
operator delete(void *p, MemoryManager *memMgr)xercesc::XMemory
operator delete(void *p, void *ptr)xercesc::XMemory
operator new(size_t size)xercesc::XMemory
operator new(size_t size, MemoryManager *memMgr)xercesc::XMemory
operator new(size_t size, void *ptr)xercesc::XMemory
ORDERING_ORDERED enum valueStaticContext
ORDERING_UNORDERED enum valueStaticContext
releaseDocument(xercesc::DOMDocument *doc) const =0StaticContext [pure virtual]
resolveModuleURI(const XMLCh *uri) const =0StaticContext [pure virtual]
setBaseURI(const XMLCh *newURI)=0StaticContext [pure virtual]
setConstructionMode(ConstructionMode newMode)=0StaticContext [pure virtual]
setContextItemType(const StaticType &st)=0StaticContext [pure virtual]
setDefaultCollation(const XMLCh *const URI)=0StaticContext [pure virtual]
setDefaultElementAndTypeNS(const XMLCh *newNS)=0StaticContext [pure virtual]
setDefaultFLWOROrderingMode(FLWOROrderingMode newMode)=0StaticContext [pure virtual]
setDefaultFuncNS(const XMLCh *newNS)=0StaticContext [pure virtual]
setDocumentCache(DocumentCache *docCache)=0StaticContext [pure virtual]
setInheritNamespaces(bool value)=0StaticContext [pure virtual]
setItemFactory(ItemFactory *factory)=0StaticContext [pure virtual]
setMemoryManager(XPath2MemoryManager *memMgr)=0StaticContext [pure virtual]
setModuleResolver(ModuleResolver *resolver)=0StaticContext [pure virtual]
setNamespaceBinding(const XMLCh *prefix, const XMLCh *uri)=0StaticContext [pure virtual]
setNodeSetOrdering(NodeSetOrdering newOrder)=0StaticContext [pure virtual]
setNSResolver(const xercesc::DOMXPathNSResolver *resolver)=0StaticContext [pure virtual]
setPreserveBoundarySpace(bool value)=0StaticContext [pure virtual]
setPreserveNamespaces(bool value)=0StaticContext [pure virtual]
setXMLEntityResolver(xercesc::XMLEntityResolver *const handler)=0StaticContext [pure virtual]
setXPath1CompatibilityMode(bool newMode)=0StaticContext [pure virtual]
XMemory()xercesc::XMemory [inline, protected]
~StaticContext()StaticContext [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classStaticContext.html b/docs/simple-api/classStaticContext.html new file mode 100644 index 00000000..d9c4a34a --- /dev/null +++ b/docs/simple-api/classStaticContext.html @@ -0,0 +1,1981 @@ + + +XQilla Simple API: StaticContext Class Reference + + + + + + +

StaticContext Class Reference

The parse time static context interface. +More... +

+#include <StaticContext.hpp> +

+Inheritance diagram for StaticContext:

Inheritance graph
+ + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

enum  NodeSetOrdering { ORDERING_ORDERED, +ORDERING_UNORDERED + }
enum  ConstructionMode { CONSTRUCTION_MODE_PRESERVE, +CONSTRUCTION_MODE_STRIP + }
enum  FLWOROrderingMode { FLWOR_ORDER_EMPTY_GREATEST, +FLWOR_ORDER_EMPTY_LEAST + }

Public Member Functions

virtual ~StaticContext ()
virtual DynamicContextcreateModuleContext (xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager) const =0
virtual DynamicContextcreateDynamicContext (xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager) const =0
virtual ItemFactorygetItemFactory () const =0
 Returns the ItemFactory for this context, which is used to create XQilla items and other objects.
virtual void setItemFactory (ItemFactory *factory)=0
 Sets the ItemFactory for this context.
virtual const StaticType & getContextItemType () const =0
 Get the static type of the context item.
virtual void setContextItemType (const StaticType &st)=0
 Set the static type of the context item.
virtual bool getXPath1CompatibilityMode () const =0
 Get the current XPath 1.0 compatibility mode.
virtual void setXPath1CompatibilityMode (bool newMode)=0
 Set the current XPath 1.0 compatibility mode.
virtual const xercesc::DOMXPathNSResolvergetNSResolver () const =0
 Get the NS resolver.
virtual const XMLCh * getUriBoundToPrefix (const XMLCh *prefix, const LocationInfo *location) const =0
 returns the URI that is bound in prefix in the current scope or zero length string otherwise
virtual const XMLCh * getPrefixBoundToUri (const XMLCh *uri) const =0
 returns the prefix that is bound in uri in the current scope or zero length string otherwise
virtual void setNSResolver (const xercesc::DOMXPathNSResolver *resolver)=0
 Set the NS resolver.
virtual void setNamespaceBinding (const XMLCh *prefix, const XMLCh *uri)=0
 Binds a prefix to a namespace URI.
virtual const XMLCh * getDefaultElementAndTypeNS () const =0
 get the value of the default namespace for elements and types
virtual void setDefaultElementAndTypeNS (const XMLCh *newNS)=0
 set the value of the default namespace for elements and types
virtual const XMLCh * getDefaultFuncNS () const =0
 Return the default namespace for functions.
virtual void setDefaultFuncNS (const XMLCh *newNS)=0
 Set the default namespace for functions.
virtual const DocumentCache * getDocumentCache () const =0
 retrieve the repository for the grammars
virtual void setDocumentCache (DocumentCache *docCache)=0
 sets the repository for the grammars
virtual bool isTypeOrDerivedFromType (const XMLCh *const uri, const XMLCh *const typeName, const XMLCh *const uriToCheck, const XMLCh *const typeNameToCheck) const =0
 returns true if the type represented by uri:typename is an instance of uriToCheck:typeNameToCheck
virtual void setXMLEntityResolver (xercesc::XMLEntityResolver *const handler)=0
 Sets the XMLEntityResolver that is used by Xerces when it is used to parse documents.
virtual xercesc::XMLEntityResolvergetXMLEntityResolver () const =0
 Returns the entity resolver currently set.
virtual void setModuleResolver (ModuleResolver *resolver)=0
 Register a callback object for resolving module URIs.
virtual ModuleResolvergetModuleResolver () const =0
 Returns the module resolver currently set.
virtual VectorOfStrings * resolveModuleURI (const XMLCh *uri) const =0
virtual void addSchemaLocation (const XMLCh *uri, VectorOfStrings *locations)=0
 add the location for the grammar of a specific namespace
virtual VariableTypeStoregetVariableTypeStore ()=0
 get the variable type store
virtual void addCustomFunction (FuncFactory *func)=0
 adds a custom function to the function table
virtual ASTNode * lookUpFunction (const XMLCh *prefix, const XMLCh *name, VectorOfASTNodes &v, const LocationInfo *location) const =0
 returns a function with name name in the namespace represented by prefix
virtual CollationgetCollation (const XMLCh *const URI, const LocationInfo *location) const =0
 Get the implementation for the specified collation.
virtual void addCollation (Collation *collation)=0
 Add a collation.
virtual CollationgetDefaultCollation (const LocationInfo *location) const =0
 Get the default collation.
virtual void setDefaultCollation (const XMLCh *const URI)=0
 Specify which collation is the default one.
virtual const XMLCh * getBaseURI () const =0
 Return the base URI.
virtual void setBaseURI (const XMLCh *newURI)=0
 Set the base URI.
virtual NodeSetOrdering getNodeSetOrdering () const =0
 Return the ordering method for node sets.
virtual void setNodeSetOrdering (NodeSetOrdering newOrder)=0
 Set the ordering method for node sets.
virtual ConstructionMode getConstructionMode () const =0
 Return the construction mode.
virtual void setConstructionMode (ConstructionMode newMode)=0
 Set the construction mode.
virtual void setPreserveBoundarySpace (bool value)=0
 Set the policy for boundary space.
virtual bool getPreserveBoundarySpace () const =0
 Get the policy for boundary space.
virtual FLWOROrderingMode getDefaultFLWOROrderingMode () const =0
 Return the default ordering mode for FLWOR blocks.
virtual void setDefaultFLWOROrderingMode (FLWOROrderingMode newMode)=0
 Set the default ordering mode for FLWOR blocks.
virtual void setInheritNamespaces (bool value)=0
 Set the policy for namespace inheritance.
virtual bool getInheritNamespaces () const =0
 Get the policy for namespace inheritance.
virtual void setPreserveNamespaces (bool value)=0
 Set the policy for namespace copy.
virtual bool getPreserveNamespaces () const =0
 Get the policy for namespace copy.
virtual void enableDebugging (bool enable=true)=0
 The enableDebuging flag is considered to be in both the static and dynamic contexts.
virtual bool isDebuggingEnabled () const =0
 The enableDebuging flag is considered to be in both the static and dynamic contexts.
virtual xercesc::DOMDocumentcreateNewDocument () const =0
 Used whenever we need to create a new document (including parsing in documents).
virtual void releaseDocument (xercesc::DOMDocument *doc) const =0
 Used to release a document allocated through createNewDocument().
virtual XPath2MemoryManagergetMemoryManager () const =0
 Get the memory manager.
virtual void setMemoryManager (XPath2MemoryManager *memMgr)=0
 Set the memory manager to the one given.
+

Detailed Description

+The parse time static context interface. +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
enum StaticContext::ConstructionMode
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + +
CONSTRUCTION_MODE_PRESERVE  +
CONSTRUCTION_MODE_STRIP  +
+
+
+

+ + + + +
+ + + + +
enum StaticContext::FLWOROrderingMode
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + +
FLWOR_ORDER_EMPTY_GREATEST  +
FLWOR_ORDER_EMPTY_LEAST  +
+
+
+

+ + + + +
+ + + + +
enum StaticContext::NodeSetOrdering
+
+ + + + + +
+   + + +

+

Enumerator:
+ + + +
ORDERING_ORDERED  +
ORDERING_UNORDERED  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
virtual StaticContext::~StaticContext  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::addCollation Collation collation  )  [pure virtual]
+
+ + + + + +
+   + + +

+Add a collation. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::addCustomFunction FuncFactory *  func  )  [pure virtual]
+
+ + + + + +
+   + + +

+adds a custom function to the function table +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void StaticContext::addSchemaLocation const XMLCh *  uri,
VectorOfStrings *  locations
[pure virtual]
+
+ + + + + +
+   + + +

+add the location for the grammar of a specific namespace +

+

+

+ + + + +
+ + + + + + + + + +
virtual DynamicContext* StaticContext::createDynamicContext xercesc::MemoryManager memMgr = xercesc::XMLPlatformUtils::fgMemoryManager  )  const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual DynamicContext* StaticContext::createModuleContext xercesc::MemoryManager memMgr = xercesc::XMLPlatformUtils::fgMemoryManager  )  const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc:: DOMDocument* StaticContext::createNewDocument  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Used whenever we need to create a new document (including parsing in documents). +

+

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::enableDebugging bool  enable = true  )  [pure virtual]
+
+ + + + + +
+   + + +

+The enableDebuging flag is considered to be in both the static and dynamic contexts. +

+

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* StaticContext::getBaseURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Return the base URI. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Collation* StaticContext::getCollation const XMLCh *const   URI,
const LocationInfo *  location
const [pure virtual]
+
+ + + + + +
+   + + +

+Get the implementation for the specified collation. +

+

+

+ + + + +
+ + + + + + + + +
virtual ConstructionMode StaticContext::getConstructionMode  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Return the construction mode. +

+

+

+ + + + +
+ + + + + + + + +
virtual const StaticType& StaticContext::getContextItemType  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the static type of the context item. +

+

+

+ + + + +
+ + + + + + + + + +
virtual Collation* StaticContext::getDefaultCollation const LocationInfo *  location  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the default collation. +

+

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* StaticContext::getDefaultElementAndTypeNS  )  const [pure virtual]
+
+ + + + + +
+   + + +

+get the value of the default namespace for elements and types +

+

+

+ + + + +
+ + + + + + + + +
virtual FLWOROrderingMode StaticContext::getDefaultFLWOROrderingMode  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Return the default ordering mode for FLWOR blocks. +

+

+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* StaticContext::getDefaultFuncNS  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Return the default namespace for functions. +

+

+

+ + + + +
+ + + + + + + + +
virtual const DocumentCache* StaticContext::getDocumentCache  )  const [pure virtual]
+
+ + + + + +
+   + + +

+retrieve the repository for the grammars +

+

+

+ + + + +
+ + + + + + + + +
virtual bool StaticContext::getInheritNamespaces  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the policy for namespace inheritance. +

+

+

+ + + + +
+ + + + + + + + +
virtual ItemFactory* StaticContext::getItemFactory  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the ItemFactory for this context, which is used to create XQilla items and other objects. +

+

+

+ + + + +
+ + + + + + + + +
virtual XPath2MemoryManager* StaticContext::getMemoryManager  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the memory manager. +

+

+

+ + + + +
+ + + + + + + + +
virtual ModuleResolver* StaticContext::getModuleResolver  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the module resolver currently set. +

+

+

+ + + + +
+ + + + + + + + +
virtual NodeSetOrdering StaticContext::getNodeSetOrdering  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Return the ordering method for node sets. +

+

+

+ + + + +
+ + + + + + + + +
virtual const xercesc:: DOMXPathNSResolver* StaticContext::getNSResolver  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the NS resolver. +

+

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* StaticContext::getPrefixBoundToUri const XMLCh *  uri  )  const [pure virtual]
+
+ + + + + +
+   + + +

+returns the prefix that is bound in uri in the current scope or zero length string otherwise +

+

+

+ + + + +
+ + + + + + + + +
virtual bool StaticContext::getPreserveBoundarySpace  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the policy for boundary space. +

+

+

+ + + + +
+ + + + + + + + +
virtual bool StaticContext::getPreserveNamespaces  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the policy for namespace copy. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual const XMLCh* StaticContext::getUriBoundToPrefix const XMLCh *  prefix,
const LocationInfo *  location
const [pure virtual]
+
+ + + + + +
+   + + +

+returns the URI that is bound in prefix in the current scope or zero length string otherwise +

+

+

+ + + + +
+ + + + + + + + +
virtual VariableTypeStore* StaticContext::getVariableTypeStore  )  [pure virtual]
+
+ + + + + +
+   + + +

+get the variable type store +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc:: XMLEntityResolver* StaticContext::getXMLEntityResolver  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the entity resolver currently set. +

+

+

+ + + + +
+ + + + + + + + +
virtual bool StaticContext::getXPath1CompatibilityMode  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the current XPath 1.0 compatibility mode. +

+

+

+ + + + +
+ + + + + + + + +
virtual bool StaticContext::isDebuggingEnabled  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The enableDebuging flag is considered to be in both the static and dynamic contexts. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool StaticContext::isTypeOrDerivedFromType const XMLCh *const   uri,
const XMLCh *const   typeName,
const XMLCh *const   uriToCheck,
const XMLCh *const   typeNameToCheck
const [pure virtual]
+
+ + + + + +
+   + + +

+returns true if the type represented by uri:typename is an instance of uriToCheck:typeNameToCheck +

+ie: to check xs:integer instance of xs:decimal, call isTypeOrDerivedFromType("xs", "integer", "xs", "decimal") (except of course, call with URIs, not prefixes!)

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ASTNode* StaticContext::lookUpFunction const XMLCh *  prefix,
const XMLCh *  name,
VectorOfASTNodes v,
const LocationInfo *  location
const [pure virtual]
+
+ + + + + +
+   + + +

+returns a function with name name in the namespace represented by prefix +

+

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::releaseDocument xercesc::DOMDocument doc  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Used to release a document allocated through createNewDocument(). +

+

+

+ + + + +
+ + + + + + + + + +
virtual VectorOfStrings* StaticContext::resolveModuleURI const XMLCh *  uri  )  const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::setBaseURI const XMLCh *  newURI  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the base URI. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::setConstructionMode ConstructionMode  newMode  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the construction mode. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::setContextItemType const StaticType &  st  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the static type of the context item. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::setDefaultCollation const XMLCh *const   URI  )  [pure virtual]
+
+ + + + + +
+   + + +

+Specify which collation is the default one. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::setDefaultElementAndTypeNS const XMLCh *  newNS  )  [pure virtual]
+
+ + + + + +
+   + + +

+set the value of the default namespace for elements and types +

+

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::setDefaultFLWOROrderingMode FLWOROrderingMode  newMode  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the default ordering mode for FLWOR blocks. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::setDefaultFuncNS const XMLCh *  newNS  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the default namespace for functions. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::setDocumentCache DocumentCache *  docCache  )  [pure virtual]
+
+ + + + + +
+   + + +

+sets the repository for the grammars +

+

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::setInheritNamespaces bool  value  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the policy for namespace inheritance. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::setItemFactory ItemFactory factory  )  [pure virtual]
+
+ + + + + +
+   + + +

+Sets the ItemFactory for this context. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::setMemoryManager XPath2MemoryManager memMgr  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the memory manager to the one given. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::setModuleResolver ModuleResolver resolver  )  [pure virtual]
+
+ + + + + +
+   + + +

+Register a callback object for resolving module URIs. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void StaticContext::setNamespaceBinding const XMLCh *  prefix,
const XMLCh *  uri
[pure virtual]
+
+ + + + + +
+   + + +

+Binds a prefix to a namespace URI. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::setNodeSetOrdering NodeSetOrdering  newOrder  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the ordering method for node sets. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::setNSResolver const xercesc::DOMXPathNSResolver resolver  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the NS resolver. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::setPreserveBoundarySpace bool  value  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the policy for boundary space. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::setPreserveNamespaces bool  value  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the policy for namespace copy. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::setXMLEntityResolver xercesc::XMLEntityResolver *const   handler  )  [pure virtual]
+
+ + + + + +
+   + + +

+Sets the XMLEntityResolver that is used by Xerces when it is used to parse documents. +

+This affects the behaviour of XQilla whenever it retrieves a DTD or XML Schema grammar.

+

+ + + + +
+ + + + + + + + + +
virtual void StaticContext::setXPath1CompatibilityMode bool  newMode  )  [pure virtual]
+
+ + + + + +
+   + + +

+Set the current XPath 1.0 compatibility mode. +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classStaticContext__inherit__graph.map b/docs/simple-api/classStaticContext__inherit__graph.map new file mode 100644 index 00000000..bbc702a8 --- /dev/null +++ b/docs/simple-api/classStaticContext__inherit__graph.map @@ -0,0 +1,3 @@ +base referer +rect $classDynamicContext.html 14,158 134,182 +rect $classxercesc_1_1XMemory.html 7,9 141,33 diff --git a/docs/simple-api/classStaticContext__inherit__graph.md5 b/docs/simple-api/classStaticContext__inherit__graph.md5 new file mode 100644 index 00000000..f7f388a2 --- /dev/null +++ b/docs/simple-api/classStaticContext__inherit__graph.md5 @@ -0,0 +1 @@ +f0578132fb3b47cd43586653b3c4eafc \ No newline at end of file diff --git a/docs/simple-api/classStaticContext__inherit__graph.png b/docs/simple-api/classStaticContext__inherit__graph.png new file mode 100644 index 00000000..2334f754 Binary files /dev/null and b/docs/simple-api/classStaticContext__inherit__graph.png differ diff --git a/docs/simple-api/classStaticResolutionContext-members.html b/docs/simple-api/classStaticResolutionContext-members.html new file mode 100644 index 00000000..aeca2b2e --- /dev/null +++ b/docs/simple-api/classStaticResolutionContext-members.html @@ -0,0 +1,71 @@ + + +XQilla Simple API: Member List + + + + + + +

StaticResolutionContext Member List

This is the complete list of members for StaticResolutionContext, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
add(const StaticResolutionContext &o)StaticResolutionContext
addExceptContextFlags(const StaticResolutionContext &o)StaticResolutionContext
areContextFlagsUsed() const StaticResolutionContext
areContextTimeUsed() const StaticResolutionContext
areDocsOrCollectionsUsed() const StaticResolutionContext
availableCollectionsUsed(bool value)StaticResolutionContext
availableDocumentsUsed(bool value)StaticResolutionContext
clear()StaticResolutionContext
contextItemUsed(bool value)StaticResolutionContext
contextPositionUsed(bool value)StaticResolutionContext
contextSizeUsed(bool value)StaticResolutionContext
copy(const StaticResolutionContext &o)StaticResolutionContext
creative(bool value)StaticResolutionContext
currentTimeUsed(bool value)StaticResolutionContext
DOCORDER enum valueStaticResolutionContext
forceNoFolding(bool value)StaticResolutionContext
FORWARDREF enum valueStaticResolutionContext
getProperties() const StaticResolutionContext
getStaticType() const StaticResolutionContext
getStaticType()StaticResolutionContext
GROUPED enum valueStaticResolutionContext
implicitTimezoneUsed(bool value)StaticResolutionContext
isContextItemUsed() const StaticResolutionContext
isContextPositionUsed() const StaticResolutionContext
isContextSizeUsed() const StaticResolutionContext
isCreative() const StaticResolutionContext
isNoFoldingForced() const StaticResolutionContext
isUsed() const StaticResolutionContext
isUsedExceptContextFlags() const StaticResolutionContext
isVariableUsed(const XMLCh *namespaceURI, const XMLCh *name) const StaticResolutionContext
ONENODE enum valueStaticResolutionContext
PEER enum valueStaticResolutionContext
Properties enum nameStaticResolutionContext
removeVariable(const XMLCh *namespaceURI, const XMLCh *name)StaticResolutionContext
SAMEDOC enum valueStaticResolutionContext
SELF enum valueStaticResolutionContext
setProperties(unsigned int props)StaticResolutionContext
StaticResolutionContext(XPath2MemoryManager *memMgr)StaticResolutionContext
StaticResolutionContext(const StaticResolutionContext &o, XPath2MemoryManager *memMgr)StaticResolutionContext
SUBTREE enum valueStaticResolutionContext
toString() const StaticResolutionContext
UNDEFINEDVAR enum valueStaticResolutionContext
variablesUsed() const StaticResolutionContext
variableUsed(const XMLCh *namespaceURI, const XMLCh *name)StaticResolutionContext


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classStaticResolutionContext.html b/docs/simple-api/classStaticResolutionContext.html new file mode 100644 index 00000000..3b5139eb --- /dev/null +++ b/docs/simple-api/classStaticResolutionContext.html @@ -0,0 +1,1163 @@ + + +XQilla Simple API: StaticResolutionContext Class Reference + + + + + + +

StaticResolutionContext Class Reference

Records access to various parts of the context during static resolution. +More... +

+#include <StaticResolutionContext.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

enum  Properties {
+  DOCORDER = 0x001, +PEER = 0x002, +SUBTREE = 0x004, +GROUPED = 0x008, +
+  SAMEDOC = 0x010, +ONENODE = 0x020, +SELF = 0x040, +FORWARDREF = 0x080, +
+  UNDEFINEDVAR = 0x100 +
+ }
 Properties that allow optimisation regarding sorting or not. More...

Public Member Functions

 StaticResolutionContext (XPath2MemoryManager *memMgr)
 StaticResolutionContext (const StaticResolutionContext &o, XPath2MemoryManager *memMgr)
void copy (const StaticResolutionContext &o)
void clear ()
 Clears all the information in this StaticResolutionContext.
void forceNoFolding (bool value)
 Overrides all the other flags, and never allows this sub-expression to be constant folded.
bool isNoFoldingForced () const
void contextItemUsed (bool value)
void contextPositionUsed (bool value)
void contextSizeUsed (bool value)
bool isContextItemUsed () const
bool isContextPositionUsed () const
bool isContextSizeUsed () const
bool areContextFlagsUsed () const
 Returns true if any of the context item flags have been used.
void currentTimeUsed (bool value)
void implicitTimezoneUsed (bool value)
bool areContextTimeUsed () const
void availableDocumentsUsed (bool value)
void availableCollectionsUsed (bool value)
bool areDocsOrCollectionsUsed () const
void variableUsed (const XMLCh *namespaceURI, const XMLCh *name)
bool removeVariable (const XMLCh *namespaceURI, const XMLCh *name)
bool isVariableUsed (const XMLCh *namespaceURI, const XMLCh *name) const
std::vector< std::pair< const
+XMLCh *, const XMLCh * > > 
variablesUsed () const
void add (const StaticResolutionContext &o)
 Sets the members of this StaticResolutionContext from the given StaticResolutionContext.
void addExceptContextFlags (const StaticResolutionContext &o)
bool isUsed () const
 Returns true if flags are set, or variables have been used.
bool isUsedExceptContextFlags () const
void creative (bool value)
bool isCreative () const
unsigned int getProperties () const
void setProperties (unsigned int props)
const StaticType & getStaticType () const
StaticType & getStaticType ()
std::string toString () const
+


Detailed Description

+Records access to various parts of the context during static resolution. +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
enum StaticResolutionContext::Properties
+
+ + + + + +
+   + + +

+Properties that allow optimisation regarding sorting or not. +

+The values are OR'd as flags, so they must be distinct bits

Enumerator:
+ + + + + + + + + + +
DOCORDER  +Results are returned in document order.
PEER  +Results do not appear in the descendants of other results.
SUBTREE  +Results are members of the set of descendants of the context node.
GROUPED  +Results are grouped by the document they come from.
SAMEDOC  +Results are from the same document as the context node.
ONENODE  +Only ever returns one node.
SELF  +Only ever returns the context node.
FORWARDREF  +This is a forward reference for a global variable that is declared later.
UNDEFINEDVAR  +This is a variable that has been undefined.
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
StaticResolutionContext::StaticResolutionContext XPath2MemoryManager memMgr  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
StaticResolutionContext::StaticResolutionContext const StaticResolutionContext o,
XPath2MemoryManager memMgr
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
void StaticResolutionContext::add const StaticResolutionContext o  ) 
+
+ + + + + +
+   + + +

+Sets the members of this StaticResolutionContext from the given StaticResolutionContext. +

+

+

+ + + + +
+ + + + + + + + + +
void StaticResolutionContext::addExceptContextFlags const StaticResolutionContext o  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
bool StaticResolutionContext::areContextFlagsUsed  )  const
+
+ + + + + +
+   + + +

+Returns true if any of the context item flags have been used. +

+

+

+ + + + +
+ + + + + + + + +
bool StaticResolutionContext::areContextTimeUsed  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
bool StaticResolutionContext::areDocsOrCollectionsUsed  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void StaticResolutionContext::availableCollectionsUsed bool  value  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void StaticResolutionContext::availableDocumentsUsed bool  value  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
void StaticResolutionContext::clear  ) 
+
+ + + + + +
+   + + +

+Clears all the information in this StaticResolutionContext. +

+

+

+ + + + +
+ + + + + + + + + +
void StaticResolutionContext::contextItemUsed bool  value  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void StaticResolutionContext::contextPositionUsed bool  value  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void StaticResolutionContext::contextSizeUsed bool  value  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void StaticResolutionContext::copy const StaticResolutionContext o  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void StaticResolutionContext::creative bool  value  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void StaticResolutionContext::currentTimeUsed bool  value  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void StaticResolutionContext::forceNoFolding bool  value  ) 
+
+ + + + + +
+   + + +

+Overrides all the other flags, and never allows this sub-expression to be constant folded. +

+

+

+ + + + +
+ + + + + + + + +
unsigned int StaticResolutionContext::getProperties  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
StaticType& StaticResolutionContext::getStaticType  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
const StaticType& StaticResolutionContext::getStaticType  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void StaticResolutionContext::implicitTimezoneUsed bool  value  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
bool StaticResolutionContext::isContextItemUsed  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
bool StaticResolutionContext::isContextPositionUsed  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
bool StaticResolutionContext::isContextSizeUsed  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
bool StaticResolutionContext::isCreative  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
bool StaticResolutionContext::isNoFoldingForced  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
bool StaticResolutionContext::isUsed  )  const
+
+ + + + + +
+   + + +

+Returns true if flags are set, or variables have been used. +

+

+

+ + + + +
+ + + + + + + + +
bool StaticResolutionContext::isUsedExceptContextFlags  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool StaticResolutionContext::isVariableUsed const XMLCh *  namespaceURI,
const XMLCh *  name
const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool StaticResolutionContext::removeVariable const XMLCh *  namespaceURI,
const XMLCh *  name
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void StaticResolutionContext::setProperties unsigned int  props  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
std::string StaticResolutionContext::toString  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
std::vector<std::pair<const XMLCh*, const XMLCh*> > StaticResolutionContext::variablesUsed  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void StaticResolutionContext::variableUsed const XMLCh *  namespaceURI,
const XMLCh *  name
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classStaticType-members.html b/docs/simple-api/classStaticType-members.html new file mode 100644 index 00000000..39e96c22 --- /dev/null +++ b/docs/simple-api/classStaticType-members.html @@ -0,0 +1,22 @@ + + +Member List + + + +
+Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  
+

StaticType Member List

This is the complete list of members for StaticType, including all inherited members. + + + + + + + +
flagsStaticType
isNodesOnly() constStaticType
NODE_TYPE enum valueStaticType
NUMERIC_TYPE enum valueStaticType
OTHER_TYPE enum valueStaticType
StaticTypeFlags enum nameStaticType
typeUnion(const StaticType &st)StaticType

Generated on Wed Jan 11 12:27:53 2006 for XQilla Simple API by + +doxygen1.2.18
+ + diff --git a/docs/simple-api/classStaticType.html b/docs/simple-api/classStaticType.html new file mode 100644 index 00000000..e4579dd4 --- /dev/null +++ b/docs/simple-api/classStaticType.html @@ -0,0 +1,154 @@ + + +StaticType class Reference + + + +
+Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  
+

StaticType Class Reference

Class that represents the static type of a sub-expression. +More... +

+#include <StaticResolutionContext.hpp> +

+List of all members. + + + + + + + + + +

Public Types

enum  StaticTypeFlags { NODE_TYPE = 0x01, +NUMERIC_TYPE = 0x02, +OTHER_TYPE = 0x04 + }
 Flags that determine what item types are returned from a sub-expression. More...


Public Methods

void typeUnion (const StaticType &st)
bool isNodesOnly () const

Public Attributes

unsigned int flags
+


Detailed Description

+Class that represents the static type of a sub-expression. +

+


Member Enumeration Documentation

+

+ + + + +
+ + +
enum StaticType::StaticTypeFlags +
+
+ + + + + +
+   + + +

+Flags that determine what item types are returned from a sub-expression. +

+

Enumeration values:
+ + + + +
NODE_TYPE  +Results can contain nodes.
NUMERIC_TYPE  +Results can contain numeric items.
OTHER_TYPE  +Results can contain other items.
+
+
+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
bool StaticType::isNodesOnly  
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + +
void StaticType::typeUnion const StaticType &   st
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + +
unsigned int StaticType::flags +
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Wed Jan 11 12:27:53 2006 for XQilla Simple API by + +doxygen1.2.18
+ + diff --git a/docs/simple-api/classStringPool-members.html b/docs/simple-api/classStringPool-members.html new file mode 100644 index 00000000..5e8550da --- /dev/null +++ b/docs/simple-api/classStringPool-members.html @@ -0,0 +1,36 @@ + + +XQilla Simple API: Member List + + + + + + +

StringPool Member List

This is the complete list of members for StringPool, including all inherited members.

+ + + + + + + + + +
dumpStatistics() const StringPool
getCount() const StringPool [inline]
getHits() const StringPool [inline]
getMisses() const StringPool [inline]
getPooledString(const XMLCh *src)StringPool
getPooledString(const char *src)StringPool
getTooBig() const StringPool [inline]
StringPool(xercesc::MemoryManager *mm)StringPool
~StringPool()StringPool


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classStringPool.html b/docs/simple-api/classStringPool.html new file mode 100644 index 00000000..870f67db --- /dev/null +++ b/docs/simple-api/classStringPool.html @@ -0,0 +1,309 @@ + + +XQilla Simple API: StringPool Class Reference + + + + + + +

StringPool Class Reference

#include <StringPool.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 StringPool (xercesc::MemoryManager *mm)
 ~StringPool ()
const XMLCh * getPooledString (const XMLCh *src)
 Returns a copy of the given string.
const XMLCh * getPooledString (const char *src)
 Returns a copy of the transcoding of the given string.
unsigned int getCount () const
unsigned int getHits () const
unsigned int getMisses () const
unsigned int getTooBig () const
void dumpStatistics () const

Classes

class  Bucket
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
StringPool::StringPool xercesc::MemoryManager mm  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
StringPool::~StringPool  ) 
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
void StringPool::dumpStatistics  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
unsigned int StringPool::getCount  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
unsigned int StringPool::getHits  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
unsigned int StringPool::getMisses  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
const XMLCh* StringPool::getPooledString const char *  src  ) 
+
+ + + + + +
+   + + +

+Returns a copy of the transcoding of the given string. +

+

+

+ + + + +
+ + + + + + + + + +
const XMLCh* StringPool::getPooledString const XMLCh *  src  ) 
+
+ + + + + +
+   + + +

+Returns a copy of the given string. +

+

+

+ + + + +
+ + + + + + + + +
unsigned int StringPool::getTooBig  )  const [inline]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classTimezone-members.html b/docs/simple-api/classTimezone-members.html new file mode 100644 index 00000000..eb90d577 --- /dev/null +++ b/docs/simple-api/classTimezone-members.html @@ -0,0 +1,41 @@ + + +XQilla Simple API: Member List + + + + + + +

Timezone Member List

This is the complete list of members for Timezone, including all inherited members.

+ + + + + + + + + + + + + + +
_ref_countReferenceCounted [protected]
asDayTimeDuration(const DynamicContext *context) const Timezone
asSeconds() const Timezone [inline]
asString(const DynamicContext *context) const Timezone
convert(bool positive, int hour, int minute)Timezone [static]
decrementRefCount() const ReferenceCounted [inline, virtual]
equals(const Timezone::Ptr &other) const Timezone
incrementRefCount() const ReferenceCounted [inline]
Ptr typedefTimezone
ReferenceCounted()ReferenceCounted [inline]
Timezone(const MAPM &seconds)Timezone
Timezone(const ATDurationOrDerived::Ptr &duration, const DynamicContext *context)Timezone
validate(const MAPM &tz)Timezone [static]
~ReferenceCounted()ReferenceCounted [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classTimezone.html b/docs/simple-api/classTimezone.html new file mode 100644 index 00000000..067a9141 --- /dev/null +++ b/docs/simple-api/classTimezone.html @@ -0,0 +1,347 @@ + + +XQilla Simple API: Timezone Class Reference + + + + + + +

Timezone Class Reference

#include <Timezone.hpp> +

+Inheritance diagram for Timezone:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef RefCountPointer< const
+Timezone
Ptr

Public Member Functions

 Timezone (const MAPM &seconds)
 Constructor.
 Timezone (const ATDurationOrDerived::Ptr &duration, const DynamicContext *context)
 Constructor.
bool equals (const Timezone::Ptr &other) const
 Returns true if other is equal to this, false otherwise.
ATDurationOrDerived::Ptr asDayTimeDuration (const DynamicContext *context) const
const XMLCh * asString (const DynamicContext *context) const
 Returns a string representation of this Timezone.
const MAPM & asSeconds () const
 Returns the whole timezone expressed in seconds.

Static Public Member Functions

static MAPM convert (bool positive, int hour, int minute)
static void validate (const MAPM &tz)
+

Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef RefCountPointer<const Timezone> Timezone::Ptr
+
+ + + + + +
+   + + +

+

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
Timezone::Timezone const MAPM &  seconds  ) 
+
+ + + + + +
+   + + +

+Constructor. +

+Creates a Timezone representing the given number of seconds.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
Timezone::Timezone const ATDurationOrDerived::Ptr duration,
const DynamicContext context
+
+ + + + + +
+   + + +

+Constructor. +

+Creates a Timezone representing the given duration.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
ATDurationOrDerived::Ptr Timezone::asDayTimeDuration const DynamicContext context  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
const MAPM& Timezone::asSeconds  )  const [inline]
+
+ + + + + +
+   + + +

+Returns the whole timezone expressed in seconds. +

+

+

+ + + + +
+ + + + + + + + + +
const XMLCh* Timezone::asString const DynamicContext context  )  const
+
+ + + + + +
+   + + +

+Returns a string representation of this Timezone. +

+If positive, does print leading '+' sign, and if UTC returns "Z".

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static MAPM Timezone::convert bool  positive,
int  hour,
int  minute
[static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
bool Timezone::equals const Timezone::Ptr other  )  const
+
+ + + + + +
+   + + +

+Returns true if other is equal to this, false otherwise. +

+

+

+ + + + +
+ + + + + + + + + +
static void Timezone::validate const MAPM &  tz  )  [static]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classTimezone__inherit__graph.map b/docs/simple-api/classTimezone__inherit__graph.map new file mode 100644 index 00000000..e6366e5e --- /dev/null +++ b/docs/simple-api/classTimezone__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classReferenceCounted.html 7,9 141,33 diff --git a/docs/simple-api/classTimezone__inherit__graph.md5 b/docs/simple-api/classTimezone__inherit__graph.md5 new file mode 100644 index 00000000..d3873b80 --- /dev/null +++ b/docs/simple-api/classTimezone__inherit__graph.md5 @@ -0,0 +1 @@ +9c46c171c92c78a74df276bb4e89787f \ No newline at end of file diff --git a/docs/simple-api/classTimezone__inherit__graph.png b/docs/simple-api/classTimezone__inherit__graph.png new file mode 100644 index 00000000..615ba62a Binary files /dev/null and b/docs/simple-api/classTimezone__inherit__graph.png differ diff --git a/docs/simple-api/classURIResolver-members.html b/docs/simple-api/classURIResolver-members.html new file mode 100644 index 00000000..ddd68ba4 --- /dev/null +++ b/docs/simple-api/classURIResolver-members.html @@ -0,0 +1,31 @@ + + +XQilla Simple API: Member List + + + + + + +

URIResolver Member List

This is the complete list of members for URIResolver, including all inherited members.

+ + + + +
resolveCollection(Sequence &result, const XMLCh *uri, DynamicContext *context)=0URIResolver [pure virtual]
resolveDefaultCollection(Sequence &result, DynamicContext *context)=0URIResolver [pure virtual]
resolveDocument(Sequence &result, const XMLCh *uri, DynamicContext *context)=0URIResolver [pure virtual]
~URIResolver()URIResolver [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classURIResolver.html b/docs/simple-api/classURIResolver.html new file mode 100644 index 00000000..0bfc6802 --- /dev/null +++ b/docs/simple-api/classURIResolver.html @@ -0,0 +1,200 @@ + + +XQilla Simple API: URIResolver Class Reference + + + + + + +

URIResolver Class Reference

This is an abstract class used to resolve URIs in different ways. +More... +

+#include <URIResolver.hpp> +

+List of all members. + + + + + + + + + + +

Public Member Functions

virtual ~URIResolver ()
virtual bool resolveDocument (Sequence &result, const XMLCh *uri, DynamicContext *context)=0
virtual bool resolveCollection (Sequence &result, const XMLCh *uri, DynamicContext *context)=0
virtual bool resolveDefaultCollection (Sequence &result, DynamicContext *context)=0
+


Detailed Description

+This is an abstract class used to resolve URIs in different ways. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
virtual URIResolver::~URIResolver  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool URIResolver::resolveCollection Sequence result,
const XMLCh *  uri,
DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool URIResolver::resolveDefaultCollection Sequence result,
DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool URIResolver::resolveDocument Sequence result,
const XMLCh *  uri,
DynamicContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classVarHashEntry-members.html b/docs/simple-api/classVarHashEntry-members.html new file mode 100644 index 00000000..47776e1d --- /dev/null +++ b/docs/simple-api/classVarHashEntry-members.html @@ -0,0 +1,37 @@ + + +XQilla Simple API: Member List + + + + + + +

VarHashEntry< TYPE > Member List

This is the complete list of members for VarHashEntry< TYPE >, including all inherited members.

+ + + + + + + + + + +
getValue() const =0VarHashEntry< TYPE > [pure virtual]
operator delete(void *p)xercesc::XMemory
operator delete(void *p, MemoryManager *memMgr)xercesc::XMemory
operator delete(void *p, void *ptr)xercesc::XMemory
operator new(size_t size)xercesc::XMemory
operator new(size_t size, MemoryManager *memMgr)xercesc::XMemory
operator new(size_t size, void *ptr)xercesc::XMemory
setValue(const TYPE &value)=0VarHashEntry< TYPE > [pure virtual]
XMemory()xercesc::XMemory [inline, protected]
~VarHashEntry()VarHashEntry< TYPE > [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classVarHashEntry.html b/docs/simple-api/classVarHashEntry.html new file mode 100644 index 00000000..3eb470b6 --- /dev/null +++ b/docs/simple-api/classVarHashEntry.html @@ -0,0 +1,155 @@ + + +XQilla Simple API: VarHashEntry< TYPE > Class Template Reference + + + + + + +

VarHashEntry< TYPE > Class Template Reference

The class that stores the values of the variables. +More... +

+#include <VarHashEntry.hpp> +

+Inheritance diagram for VarHashEntry< TYPE >:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + +

Public Member Functions

virtual ~VarHashEntry ()
virtual const TYPE & getValue () const =0
 Gets the value of the variable (overload in derived classes for special behaviour).
virtual void setValue (const TYPE &value)=0
 Sets the value of the variable (overload in derived classes for special behaviour).
+

Detailed Description

+

template<class TYPE>
+ class VarHashEntry< TYPE >

+ +The class that stores the values of the variables. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
virtual VarHashEntry< TYPE >::~VarHashEntry  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + +
+template<class TYPE>
virtual const TYPE& VarHashEntry< TYPE >::getValue  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Gets the value of the variable (overload in derived classes for special behaviour). +

+

+

+ + + + +
+ + + + + + + + + + + + +
+template<class TYPE>
virtual void VarHashEntry< TYPE >::setValue const TYPE &  value  )  [pure virtual]
+
+ + + + + +
+   + + +

+Sets the value of the variable (overload in derived classes for special behaviour). +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classVarHashEntry__inherit__graph.map b/docs/simple-api/classVarHashEntry__inherit__graph.map new file mode 100644 index 00000000..b4fe6639 --- /dev/null +++ b/docs/simple-api/classVarHashEntry__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1XMemory.html 22,9 156,33 diff --git a/docs/simple-api/classVarHashEntry__inherit__graph.md5 b/docs/simple-api/classVarHashEntry__inherit__graph.md5 new file mode 100644 index 00000000..ad386ef0 --- /dev/null +++ b/docs/simple-api/classVarHashEntry__inherit__graph.md5 @@ -0,0 +1 @@ +24625b645d47c49f5ee0ba6a36b2de2e \ No newline at end of file diff --git a/docs/simple-api/classVarHashEntry__inherit__graph.png b/docs/simple-api/classVarHashEntry__inherit__graph.png new file mode 100644 index 00000000..a2fb1ade Binary files /dev/null and b/docs/simple-api/classVarHashEntry__inherit__graph.png differ diff --git a/docs/simple-api/classVariableStore-members.html b/docs/simple-api/classVariableStore-members.html new file mode 100644 index 00000000..b0bbccb1 --- /dev/null +++ b/docs/simple-api/classVariableStore-members.html @@ -0,0 +1,60 @@ + + +XQilla Simple API: Member List + + + + + + +

VariableStore Member List

This is the complete list of members for VariableStore, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addLocalScope()=0VariableStore [pure virtual]
addLogicalBlockScope()=0VariableStore [pure virtual]
clear()=0VariableStore [pure virtual]
declareVar(const XMLCh *ident, const Sequence &value, const StaticContext *context, const LocationInfo *location)=0VariableStore [pure virtual]
declareVar(const XMLCh *namespaceURI, const XMLCh *name, const Sequence &value, const StaticContext *context)=0VariableStore [pure virtual]
delGlobalVar(const XMLCh *ident, const StaticContext *context, const LocationInfo *location)=0VariableStore [pure virtual]
delVar(const XMLCh *ident, const StaticContext *context, const LocationInfo *location)=0VariableStore [pure virtual]
delVar(const XMLCh *namespaceURI, const XMLCh *name, const StaticContext *context)=0VariableStore [pure virtual]
Entry typedefVariableStore
getGlobalVar(const XMLCh *ident, const StaticContext *context, const LocationInfo *location) const =0VariableStore [pure virtual]
getGlobalVar(const XMLCh *namespaceURI, const XMLCh *name, const StaticContext *context) const =0VariableStore [pure virtual]
getReferenceVar(const XMLCh *ident, const StaticContext *context, const LocationInfo *location) const =0VariableStore [pure virtual]
getReferenceVar(const XMLCh *namespaceURI, const XMLCh *name, const StaticContext *context) const =0VariableStore [pure virtual]
getScopeState()=0VariableStore [pure virtual]
getVar(const XMLCh *ident, const StaticContext *context, const LocationInfo *location) const =0VariableStore [pure virtual]
getVar(const XMLCh *namespaceURI, const XMLCh *name, const StaticContext *context) const =0VariableStore [pure virtual]
getVars() const =0VariableStore [pure virtual]
MyScope typedefVariableStore
operator delete(void *p)xercesc::XMemory
operator delete(void *p, MemoryManager *memMgr)xercesc::XMemory
operator delete(void *p, void *ptr)xercesc::XMemory
operator new(size_t size)xercesc::XMemory
operator new(size_t size, MemoryManager *memMgr)xercesc::XMemory
operator new(size_t size, void *ptr)xercesc::XMemory
print(xercesc::MemoryManager *memMgr) const =0VariableStore [pure virtual]
removeScope()=0VariableStore [pure virtual]
setGlobalVar(const XMLCh *ident, const Sequence &value, const StaticContext *context, const LocationInfo *location)=0VariableStore [pure virtual]
setGlobalVar(const XMLCh *namespaceURI, const XMLCh *name, const Sequence &value, const StaticContext *context)=0VariableStore [pure virtual]
setScopeState(MyScope *state)=0VariableStore [pure virtual]
setVar(const XMLCh *ident, const Sequence &value, const StaticContext *context, const LocationInfo *location)=0VariableStore [pure virtual]
setVar(const XMLCh *namespaceURI, const XMLCh *name, const Sequence &value, const StaticContext *context)=0VariableStore [pure virtual]
XMemory()xercesc::XMemory [inline, protected]
~VariableStore()VariableStore [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classVariableStore.html b/docs/simple-api/classVariableStore.html new file mode 100644 index 00000000..42ef06b7 --- /dev/null +++ b/docs/simple-api/classVariableStore.html @@ -0,0 +1,1128 @@ + + +XQilla Simple API: VariableStore Class Reference + + + + + + +

VariableStore Class Reference

This is the wrapper class for the variable store, which implements the lookup and scoping of simple variables. +More... +

+#include <VariableStore.hpp> +

+Inheritance diagram for VariableStore:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef Scope< SequenceMyScope
typedef VarHashEntry< SequenceEntry

Public Member Functions

virtual ~VariableStore ()
 default destructor
virtual void clear ()=0
 Clears all variable values and added scopes from the store.
virtual void addLocalScope ()=0
 Adds a new local scope to the store.
virtual void addLogicalBlockScope ()=0
 Adds a new logical block scope to the store.
virtual void removeScope ()=0
 Removes the top level scope from the store.
virtual MyScopegetScopeState ()=0
 Returns an encapsulation of the state of the variable store.
virtual void setScopeState (MyScope *state)=0
 Sets the variable store to a previous state.
virtual void setGlobalVar (const XMLCh *ident, const Sequence &value, const StaticContext *context, const LocationInfo *location)=0
 Declares and/or sets a variable in the global scope.
virtual void setGlobalVar (const XMLCh *namespaceURI, const XMLCh *name, const Sequence &value, const StaticContext *context)=0
virtual void setVar (const XMLCh *ident, const Sequence &value, const StaticContext *context, const LocationInfo *location)=0
 Declares and/or sets a variable in the top level scope.
virtual void setVar (const XMLCh *namespaceURI, const XMLCh *name, const Sequence &value, const StaticContext *context)=0
virtual void declareVar (const XMLCh *ident, const Sequence &value, const StaticContext *context, const LocationInfo *location)=0
 Declare a var in the top level scope (A full set of these namespaceURI/name pair methods should be made).
virtual void declareVar (const XMLCh *namespaceURI, const XMLCh *name, const Sequence &value, const StaticContext *context)=0
virtual const std::pair< bool,
+ Sequence
getVar (const XMLCh *ident, const StaticContext *context, const LocationInfo *location) const =0
 Looks up the value of a variable in the current scope, using ident as an qname.
virtual const std::pair< bool,
+ Sequence
getVar (const XMLCh *namespaceURI, const XMLCh *name, const StaticContext *context) const =0
virtual EntrygetReferenceVar (const XMLCh *ident, const StaticContext *context, const LocationInfo *location) const =0
 Looks up the value of a variable in the current scope, using ident as an qname.
virtual EntrygetReferenceVar (const XMLCh *namespaceURI, const XMLCh *name, const StaticContext *context) const =0
virtual const std::pair< bool,
+ Sequence
getGlobalVar (const XMLCh *ident, const StaticContext *context, const LocationInfo *location) const =0
 Gets a variable from the global scope.
virtual const std::pair< bool,
+ Sequence
getGlobalVar (const XMLCh *namespaceURI, const XMLCh *name, const StaticContext *context) const =0
virtual void delVar (const XMLCh *ident, const StaticContext *context, const LocationInfo *location)=0
 Deletes a variable from the current scope.
virtual void delVar (const XMLCh *namespaceURI, const XMLCh *name, const StaticContext *context)=0
virtual void delGlobalVar (const XMLCh *ident, const StaticContext *context, const LocationInfo *location)=0
 Deletes a variable from the global scope.
virtual XMLCh * print (xercesc::MemoryManager *memMgr) const =0
 Gives human readable representation of the variable store.
virtual std::vector< std::pair<
+ const XMLCh *, const XMLCh * > > 
getVars () const =0
 Returns a vector with the names of the variable currently in scope.
+

Detailed Description

+This is the wrapper class for the variable store, which implements the lookup and scoping of simple variables. +

+


Member Typedef Documentation

+

+ + + + +
+ + + + +
typedef VarHashEntry<Sequence> VariableStore::Entry
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
typedef Scope<Sequence> VariableStore::MyScope
+
+ + + + + +
+   + + +

+

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
virtual VariableStore::~VariableStore  )  [inline, virtual]
+
+ + + + + +
+   + + +

+default destructor +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual void VariableStore::addLocalScope  )  [pure virtual]
+
+ + + + + +
+   + + +

+Adds a new local scope to the store. +

+

+

+ + + + +
+ + + + + + + + +
virtual void VariableStore::addLogicalBlockScope  )  [pure virtual]
+
+ + + + + +
+   + + +

+Adds a new logical block scope to the store. +

+

+

+ + + + +
+ + + + + + + + +
virtual void VariableStore::clear  )  [pure virtual]
+
+ + + + + +
+   + + +

+Clears all variable values and added scopes from the store. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void VariableStore::declareVar const XMLCh *  namespaceURI,
const XMLCh *  name,
const Sequence value,
const StaticContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void VariableStore::declareVar const XMLCh *  ident,
const Sequence value,
const StaticContext context,
const LocationInfo *  location
[pure virtual]
+
+ + + + + +
+   + + +

+Declare a var in the top level scope (A full set of these namespaceURI/name pair methods should be made). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void VariableStore::delGlobalVar const XMLCh *  ident,
const StaticContext context,
const LocationInfo *  location
[pure virtual]
+
+ + + + + +
+   + + +

+Deletes a variable from the global scope. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void VariableStore::delVar const XMLCh *  namespaceURI,
const XMLCh *  name,
const StaticContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void VariableStore::delVar const XMLCh *  ident,
const StaticContext context,
const LocationInfo *  location
[pure virtual]
+
+ + + + + +
+   + + +

+Deletes a variable from the current scope. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual const std::pair<bool, Sequence> VariableStore::getGlobalVar const XMLCh *  namespaceURI,
const XMLCh *  name,
const StaticContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual const std::pair<bool, Sequence> VariableStore::getGlobalVar const XMLCh *  ident,
const StaticContext context,
const LocationInfo *  location
const [pure virtual]
+
+ + + + + +
+   + + +

+Gets a variable from the global scope. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual Entry* VariableStore::getReferenceVar const XMLCh *  namespaceURI,
const XMLCh *  name,
const StaticContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual Entry* VariableStore::getReferenceVar const XMLCh *  ident,
const StaticContext context,
const LocationInfo *  location
const [pure virtual]
+
+ + + + + +
+   + + +

+Looks up the value of a variable in the current scope, using ident as an qname. +

+Returns the VariableStore::Entry for the variable, or null if it doesn't exist

+

+ + + + +
+ + + + + + + + +
virtual MyScope* VariableStore::getScopeState  )  [pure virtual]
+
+ + + + + +
+   + + +

+Returns an encapsulation of the state of the variable store. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual const std::pair<bool, Sequence> VariableStore::getVar const XMLCh *  namespaceURI,
const XMLCh *  name,
const StaticContext context
const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual const std::pair<bool, Sequence> VariableStore::getVar const XMLCh *  ident,
const StaticContext context,
const LocationInfo *  location
const [pure virtual]
+
+ + + + + +
+   + + +

+Looks up the value of a variable in the current scope, using ident as an qname. +

+Returns a boolean (true if successful), and the Sequence value of the variable

+

+ + + + +
+ + + + + + + + +
virtual std::vector< std::pair<const XMLCh*, const XMLCh*> > VariableStore::getVars  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a vector with the names of the variable currently in scope. +

+

+

+ + + + +
+ + + + + + + + + +
virtual XMLCh* VariableStore::print xercesc::MemoryManager memMgr  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Gives human readable representation of the variable store. +

+

+

+ + + + +
+ + + + + + + + +
virtual void VariableStore::removeScope  )  [pure virtual]
+
+ + + + + +
+   + + +

+Removes the top level scope from the store. +

+To be called at the end of methods to implement scoping.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void VariableStore::setGlobalVar const XMLCh *  namespaceURI,
const XMLCh *  name,
const Sequence value,
const StaticContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void VariableStore::setGlobalVar const XMLCh *  ident,
const Sequence value,
const StaticContext context,
const LocationInfo *  location
[pure virtual]
+
+ + + + + +
+   + + +

+Declares and/or sets a variable in the global scope. +

+

+

+ + + + +
+ + + + + + + + + +
virtual void VariableStore::setScopeState MyScope state  )  [pure virtual]
+
+ + + + + +
+   + + +

+Sets the variable store to a previous state. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void VariableStore::setVar const XMLCh *  namespaceURI,
const XMLCh *  name,
const Sequence value,
const StaticContext context
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void VariableStore::setVar const XMLCh *  ident,
const Sequence value,
const StaticContext context,
const LocationInfo *  location
[pure virtual]
+
+ + + + + +
+   + + +

+Declares and/or sets a variable in the top level scope. +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classVariableStore__inherit__graph.map b/docs/simple-api/classVariableStore__inherit__graph.map new file mode 100644 index 00000000..e955adb5 --- /dev/null +++ b/docs/simple-api/classVariableStore__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1XMemory.html 7,9 141,33 diff --git a/docs/simple-api/classVariableStore__inherit__graph.md5 b/docs/simple-api/classVariableStore__inherit__graph.md5 new file mode 100644 index 00000000..36e33a8a --- /dev/null +++ b/docs/simple-api/classVariableStore__inherit__graph.md5 @@ -0,0 +1 @@ +ddfc1e3a3d67117961f82fe65248f1a4 \ No newline at end of file diff --git a/docs/simple-api/classVariableStore__inherit__graph.png b/docs/simple-api/classVariableStore__inherit__graph.png new file mode 100644 index 00000000..001c0127 Binary files /dev/null and b/docs/simple-api/classVariableStore__inherit__graph.png differ diff --git a/docs/simple-api/classVariableTypeStore-members.html b/docs/simple-api/classVariableTypeStore-members.html new file mode 100644 index 00000000..c985c82b --- /dev/null +++ b/docs/simple-api/classVariableTypeStore-members.html @@ -0,0 +1,43 @@ + + +XQilla Simple API: Member List + + + + + + +

VariableTypeStore Member List

This is the complete list of members for VariableTypeStore, including all inherited members.

+ + + + + + + + + + + + + + + + +
addLocalScope()=0VariableTypeStore [pure virtual]
addLogicalBlockScope()=0VariableTypeStore [pure virtual]
clear()=0VariableTypeStore [pure virtual]
declareGlobalVar(const XMLCh *namespaceURI, const XMLCh *name, const StaticResolutionContext &src)=0VariableTypeStore [pure virtual]
declareVar(const XMLCh *namespaceURI, const XMLCh *name, const StaticResolutionContext &src)=0VariableTypeStore [pure virtual]
getGlobalVar(const XMLCh *namespaceURI, const XMLCh *name) const =0VariableTypeStore [pure virtual]
getVar(const XMLCh *namespaceURI, const XMLCh *name) const =0VariableTypeStore [pure virtual]
operator delete(void *p)xercesc::XMemory
operator delete(void *p, MemoryManager *memMgr)xercesc::XMemory
operator delete(void *p, void *ptr)xercesc::XMemory
operator new(size_t size)xercesc::XMemory
operator new(size_t size, MemoryManager *memMgr)xercesc::XMemory
operator new(size_t size, void *ptr)xercesc::XMemory
removeScope()=0VariableTypeStore [pure virtual]
XMemory()xercesc::XMemory [inline, protected]
~VariableTypeStore()VariableTypeStore [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classVariableTypeStore.html b/docs/simple-api/classVariableTypeStore.html new file mode 100644 index 00000000..34b2cf74 --- /dev/null +++ b/docs/simple-api/classVariableTypeStore.html @@ -0,0 +1,386 @@ + + +XQilla Simple API: VariableTypeStore Class Reference + + + + + + +

VariableTypeStore Class Reference

This is the wrapper class for the variable store, which implements the lookup and scoping of simple variables. +More... +

+#include <VariableTypeStore.hpp> +

+Inheritance diagram for VariableTypeStore:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual ~VariableTypeStore ()
 default destructor
virtual void clear ()=0
 Clears all variable values and added scopes from the store.
virtual void addLocalScope ()=0
 Adds a new local scope to the store.
virtual void addLogicalBlockScope ()=0
 Adds a new logical block scope to the store.
virtual void removeScope ()=0
 Removes the top level scope from the store.
virtual void declareGlobalVar (const XMLCh *namespaceURI, const XMLCh *name, const StaticResolutionContext &src)=0
 Declares and/or sets a variable in the global scope.
virtual const StaticResolutionContextgetGlobalVar (const XMLCh *namespaceURI, const XMLCh *name) const =0
 Gets a variable from the global scope.
virtual void declareVar (const XMLCh *namespaceURI, const XMLCh *name, const StaticResolutionContext &src)=0
 Declare a var in the top level scope (A full set of these namespaceURI/name pair methods should be made).
virtual const StaticResolutionContextgetVar (const XMLCh *namespaceURI, const XMLCh *name) const =0
 Looks up the value of a variable in the current scope, using ident as an qname.
+

Detailed Description

+This is the wrapper class for the variable store, which implements the lookup and scoping of simple variables. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
virtual VariableTypeStore::~VariableTypeStore  )  [inline, virtual]
+
+ + + + + +
+   + + +

+default destructor +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual void VariableTypeStore::addLocalScope  )  [pure virtual]
+
+ + + + + +
+   + + +

+Adds a new local scope to the store. +

+

+

+ + + + +
+ + + + + + + + +
virtual void VariableTypeStore::addLogicalBlockScope  )  [pure virtual]
+
+ + + + + +
+   + + +

+Adds a new logical block scope to the store. +

+

+

+ + + + +
+ + + + + + + + +
virtual void VariableTypeStore::clear  )  [pure virtual]
+
+ + + + + +
+   + + +

+Clears all variable values and added scopes from the store. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void VariableTypeStore::declareGlobalVar const XMLCh *  namespaceURI,
const XMLCh *  name,
const StaticResolutionContext src
[pure virtual]
+
+ + + + + +
+   + + +

+Declares and/or sets a variable in the global scope. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void VariableTypeStore::declareVar const XMLCh *  namespaceURI,
const XMLCh *  name,
const StaticResolutionContext src
[pure virtual]
+
+ + + + + +
+   + + +

+Declare a var in the top level scope (A full set of these namespaceURI/name pair methods should be made). +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual const StaticResolutionContext* VariableTypeStore::getGlobalVar const XMLCh *  namespaceURI,
const XMLCh *  name
const [pure virtual]
+
+ + + + + +
+   + + +

+Gets a variable from the global scope. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual const StaticResolutionContext* VariableTypeStore::getVar const XMLCh *  namespaceURI,
const XMLCh *  name
const [pure virtual]
+
+ + + + + +
+   + + +

+Looks up the value of a variable in the current scope, using ident as an qname. +

+Returns a boolean (true if successful), and the SequenceType value of the variable

+

+ + + + +
+ + + + + + + + +
virtual void VariableTypeStore::removeScope  )  [pure virtual]
+
+ + + + + +
+   + + +

+Removes the top level scope from the store. +

+To be called at the end of methods to implement scoping.

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classVariableTypeStore__inherit__graph.map b/docs/simple-api/classVariableTypeStore__inherit__graph.map new file mode 100644 index 00000000..e955adb5 --- /dev/null +++ b/docs/simple-api/classVariableTypeStore__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1XMemory.html 7,9 141,33 diff --git a/docs/simple-api/classVariableTypeStore__inherit__graph.md5 b/docs/simple-api/classVariableTypeStore__inherit__graph.md5 new file mode 100644 index 00000000..e7813530 --- /dev/null +++ b/docs/simple-api/classVariableTypeStore__inherit__graph.md5 @@ -0,0 +1 @@ +249f90625dda85868a125e8afb2c4a8f \ No newline at end of file diff --git a/docs/simple-api/classVariableTypeStore__inherit__graph.png b/docs/simple-api/classVariableTypeStore__inherit__graph.png new file mode 100644 index 00000000..aa8f5427 Binary files /dev/null and b/docs/simple-api/classVariableTypeStore__inherit__graph.png differ diff --git a/docs/simple-api/classXPath2MemoryManager-members.html b/docs/simple-api/classXPath2MemoryManager-members.html new file mode 100644 index 00000000..7bfe95e3 --- /dev/null +++ b/docs/simple-api/classXPath2MemoryManager-members.html @@ -0,0 +1,45 @@ + + +XQilla Simple API: Member List + + + + + + +

XPath2MemoryManager Member List

This is the complete list of members for XPath2MemoryManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
allocate(size_t numElements)=0XPath2MemoryManager [pure virtual]
createCollation(CollationHelper *helper)=0XPath2MemoryManager [pure virtual]
createFunctionTable()=0XPath2MemoryManager [pure virtual]
createInteger(int value)=0XPath2MemoryManager [pure virtual]
createNSResolver(xercesc::DOMNode *resolverNode)=0XPath2MemoryManager [pure virtual]
createVariableStore()=0XPath2MemoryManager [pure virtual]
createVariableTypeStore()=0XPath2MemoryManager [pure virtual]
deallocate(void *p)=0XPath2MemoryManager [pure virtual]
dumpStatistics() const =0XPath2MemoryManager [pure virtual]
getAllocatedObjectCount() const =0XPath2MemoryManager [pure virtual]
getPooledString(const XMLCh *src)=0XPath2MemoryManager [pure virtual]
getPooledString(const char *src)=0XPath2MemoryManager [pure virtual]
getStringPool() const =0XPath2MemoryManager [pure virtual]
getTotalAllocatedMemory() const =0XPath2MemoryManager [pure virtual]
MemoryManager()xercesc::MemoryManager [inline, protected]
reset()=0XPath2MemoryManager [pure virtual]
~MemoryManager()xercesc::MemoryManager [inline, virtual]
~XPath2MemoryManager()XPath2MemoryManager [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classXPath2MemoryManager.html b/docs/simple-api/classXPath2MemoryManager.html new file mode 100644 index 00000000..e74d79f8 --- /dev/null +++ b/docs/simple-api/classXPath2MemoryManager.html @@ -0,0 +1,556 @@ + + +XQilla Simple API: XPath2MemoryManager Class Reference + + + + + + +

XPath2MemoryManager Class Reference

#include <XPath2MemoryManager.hpp> +

+Inheritance diagram for XPath2MemoryManager:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual ~XPath2MemoryManager ()
virtual void reset ()=0
 Use with extreme caution!
virtual const XMLCh * getPooledString (const XMLCh *src)=0
 Returns a copy of the given string.
virtual const XMLCh * getPooledString (const char *src)=0
virtual void * allocate (size_t numElements)=0
 This method allocates requested memory.
virtual void deallocate (void *p)=0
 This method deallocates memory.
virtual CollationcreateCollation (CollationHelper *helper)=0
 create a collation
virtual XQillaNSResolver * createNSResolver (xercesc::DOMNode *resolverNode)=0
 create a resolver
virtual VariableStorecreateVariableStore ()=0
 create a store for variables
virtual VariableTypeStorecreateVariableTypeStore ()=0
 create a store for variables
virtual FunctionLookup * createFunctionTable ()=0
 create a function table
virtual ATDecimalOrDerivedcreateInteger (int value)=0
 create a ATDecimalOrDerived for the given integer
virtual void dumpStatistics () const =0
virtual unsigned long getAllocatedObjectCount () const =0
virtual unsigned long getTotalAllocatedMemory () const =0
virtual const StringPoolgetStringPool () const =0
+

Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
virtual XPath2MemoryManager::~XPath2MemoryManager  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual void* XPath2MemoryManager::allocate size_t  numElements  )  [pure virtual]
+
+ + + + + +
+   + + +

+This method allocates requested memory. +

+

Parameters:
+ + +
size The requested memory size
+
+
Returns:
A pointer to the allocated memory
+ +

+Implements xercesc::MemoryManager.

+

+ + + + +
+ + + + + + + + + +
virtual Collation* XPath2MemoryManager::createCollation CollationHelper *  helper  )  [pure virtual]
+
+ + + + + +
+   + + +

+create a collation +

+

+

+ + + + +
+ + + + + + + + +
virtual FunctionLookup* XPath2MemoryManager::createFunctionTable  )  [pure virtual]
+
+ + + + + +
+   + + +

+create a function table +

+

+

+ + + + +
+ + + + + + + + + +
virtual ATDecimalOrDerived* XPath2MemoryManager::createInteger int  value  )  [pure virtual]
+
+ + + + + +
+   + + +

+create a ATDecimalOrDerived for the given integer +

+

+

+ + + + +
+ + + + + + + + + +
virtual XQillaNSResolver* XPath2MemoryManager::createNSResolver xercesc::DOMNode resolverNode  )  [pure virtual]
+
+ + + + + +
+   + + +

+create a resolver +

+

+

+ + + + +
+ + + + + + + + +
virtual VariableStore* XPath2MemoryManager::createVariableStore  )  [pure virtual]
+
+ + + + + +
+   + + +

+create a store for variables +

+

+

+ + + + +
+ + + + + + + + +
virtual VariableTypeStore* XPath2MemoryManager::createVariableTypeStore  )  [pure virtual]
+
+ + + + + +
+   + + +

+create a store for variables +

+

+

+ + + + +
+ + + + + + + + + +
virtual void XPath2MemoryManager::deallocate void *  p  )  [pure virtual]
+
+ + + + + +
+   + + +

+This method deallocates memory. +

+

Parameters:
+ + +
p The pointer to the allocated memory to be deleted
+
+ +

+Implements xercesc::MemoryManager.

+

+ + + + +
+ + + + + + + + +
virtual void XPath2MemoryManager::dumpStatistics  )  const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned long XPath2MemoryManager::getAllocatedObjectCount  )  const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* XPath2MemoryManager::getPooledString const char *  src  )  [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* XPath2MemoryManager::getPooledString const XMLCh *  src  )  [pure virtual]
+
+ + + + + +
+   + + +

+Returns a copy of the given string. +

+

+

+ + + + +
+ + + + + + + + +
virtual const StringPool* XPath2MemoryManager::getStringPool  )  const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual unsigned long XPath2MemoryManager::getTotalAllocatedMemory  )  const [pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual void XPath2MemoryManager::reset  )  [pure virtual]
+
+ + + + + +
+   + + +

+Use with extreme caution! +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classXPath2MemoryManager__inherit__graph.map b/docs/simple-api/classXPath2MemoryManager__inherit__graph.map new file mode 100644 index 00000000..32483f93 --- /dev/null +++ b/docs/simple-api/classXPath2MemoryManager__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1MemoryManager.html 8,9 186,33 diff --git a/docs/simple-api/classXPath2MemoryManager__inherit__graph.md5 b/docs/simple-api/classXPath2MemoryManager__inherit__graph.md5 new file mode 100644 index 00000000..b88cda3a --- /dev/null +++ b/docs/simple-api/classXPath2MemoryManager__inherit__graph.md5 @@ -0,0 +1 @@ +76473fa23b3f138c611859491a3b99c0 \ No newline at end of file diff --git a/docs/simple-api/classXPath2MemoryManager__inherit__graph.png b/docs/simple-api/classXPath2MemoryManager__inherit__graph.png new file mode 100644 index 00000000..d89552ed Binary files /dev/null and b/docs/simple-api/classXPath2MemoryManager__inherit__graph.png differ diff --git a/docs/simple-api/classXQDebugCallback-members.html b/docs/simple-api/classXQDebugCallback-members.html new file mode 100644 index 00000000..181da263 --- /dev/null +++ b/docs/simple-api/classXQDebugCallback-members.html @@ -0,0 +1,36 @@ + + +XQilla Simple API: Member List + + + + + + +

XQDebugCallback Member List

This is the complete list of members for XQDebugCallback, including all inherited members.

+ + + + + + + + + +
EnterFunction(DynamicContext *context, const XMLCh *file, const XMLCh *fnName, unsigned int nLine, unsigned int nColumn)=0XQDebugCallback [pure virtual]
ExitFunction(DynamicContext *context, const XMLCh *fnName)=0XQDebugCallback [pure virtual]
IsBreakPointHit(DynamicContext *context, const XMLCh *file, unsigned int nLine)=0XQDebugCallback [pure virtual]
NotifyQueryBegin(DynamicContext *context, const XMLCh *query)=0XQDebugCallback [pure virtual]
NotifyQueryEnd(DynamicContext *context, Sequence &result)=0XQDebugCallback [pure virtual]
ReportClonedNode(DynamicContext *context, const xercesc::DOMNode *original, const xercesc::DOMNode *clone)=0XQDebugCallback [pure virtual]
ReportFirstError(DynamicContext *context, const XMLCh *error, const XMLCh *file, unsigned int nLine)=0XQDebugCallback [pure virtual]
ReportResult(DynamicContext *context, const XMLCh *file, unsigned int nLine, unsigned int nColumn, Sequence &result)=0XQDebugCallback [pure virtual]
~XQDebugCallback()XQDebugCallback [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classXQDebugCallback.html b/docs/simple-api/classXQDebugCallback.html new file mode 100644 index 00000000..0c078873 --- /dev/null +++ b/docs/simple-api/classXQDebugCallback.html @@ -0,0 +1,437 @@ + + +XQilla Simple API: XQDebugCallback Class Reference + + + + + + +

XQDebugCallback Class Reference

#include <XQDebugCallback.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

virtual ~XQDebugCallback ()
virtual void IsBreakPointHit (DynamicContext *context, const XMLCh *file, unsigned int nLine)=0
virtual void EnterFunction (DynamicContext *context, const XMLCh *file, const XMLCh *fnName, unsigned int nLine, unsigned int nColumn)=0
virtual void ExitFunction (DynamicContext *context, const XMLCh *fnName)=0
virtual void ReportClonedNode (DynamicContext *context, const xercesc::DOMNode *original, const xercesc::DOMNode *clone)=0
virtual void ReportResult (DynamicContext *context, const XMLCh *file, unsigned int nLine, unsigned int nColumn, Sequence &result)=0
virtual void ReportFirstError (DynamicContext *context, const XMLCh *error, const XMLCh *file, unsigned int nLine)=0
virtual void NotifyQueryBegin (DynamicContext *context, const XMLCh *query)=0
virtual void NotifyQueryEnd (DynamicContext *context, Sequence &result)=0
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
virtual XQDebugCallback::~XQDebugCallback  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void XQDebugCallback::EnterFunction DynamicContext context,
const XMLCh *  file,
const XMLCh *  fnName,
unsigned int  nLine,
unsigned int  nColumn
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void XQDebugCallback::ExitFunction DynamicContext context,
const XMLCh *  fnName
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void XQDebugCallback::IsBreakPointHit DynamicContext context,
const XMLCh *  file,
unsigned int  nLine
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void XQDebugCallback::NotifyQueryBegin DynamicContext context,
const XMLCh *  query
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void XQDebugCallback::NotifyQueryEnd DynamicContext context,
Sequence result
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void XQDebugCallback::ReportClonedNode DynamicContext context,
const xercesc::DOMNode original,
const xercesc::DOMNode clone
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void XQDebugCallback::ReportFirstError DynamicContext context,
const XMLCh *  error,
const XMLCh *  file,
unsigned int  nLine
[pure virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void XQDebugCallback::ReportResult DynamicContext context,
const XMLCh *  file,
unsigned int  nLine,
unsigned int  nColumn,
Sequence result
[pure virtual]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classXQException-members.html b/docs/simple-api/classXQException-members.html new file mode 100644 index 00000000..badc7563 --- /dev/null +++ b/docs/simple-api/classXQException-members.html @@ -0,0 +1,44 @@ + + +XQilla Simple API: Member List + + + + + + +

XQException Member List

This is the complete list of members for XQException, including all inherited members.

+ + + + + + + + + + + + + + + + + +
getCppFile() const XQException [inline]
getCppFunction() const XQException [inline]
getCppLine() const XQException [inline]
getError() const XQException [inline]
getType() const XQException [inline]
getXQueryColumn() const XQException [inline]
getXQueryFile() const XQException [inline]
getXQueryLine() const XQException [inline]
isErrorReported() const XQException [inline]
printDebug(const XMLCh *const context) const XQException
setErrorReported(bool value=true)XQException [inline]
setXQueryPosition(const XMLCh *file, unsigned int line, unsigned int column)XQException
setXQueryPosition(const LocationInfo *info)XQException
XQException(const XMLCh *reason, const XMLCh *file, unsigned int line, unsigned int column, const char *cppFile, unsigned int cppLine)XQException
XQException(const XQException &)XQException
XQException(const XMLCh *const type, const XMLCh *const functionName, const XMLCh *const reason, const LocationInfo *info, const char *cppFile, unsigned int cppLine)XQException [protected]
~XQException()XQException [virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classXQException.html b/docs/simple-api/classXQException.html new file mode 100644 index 00000000..07156785 --- /dev/null +++ b/docs/simple-api/classXQException.html @@ -0,0 +1,621 @@ + + +XQilla Simple API: XQException Class Reference + + + + + + +

XQException Class Reference

#include <XQException.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 XQException (const XMLCh *reason, const XMLCh *file, unsigned int line, unsigned int column, const char *cppFile, unsigned int cppLine)
 XQException (const XQException &)
virtual ~XQException ()
const XMLCh * getType () const
const XMLCh * getError () const
const XMLCh * getXQueryFile () const
unsigned int getXQueryLine () const
unsigned int getXQueryColumn () const
void setXQueryPosition (const XMLCh *file, unsigned int line, unsigned int column)
void setXQueryPosition (const LocationInfo *info)
const XMLCh * getCppFunction () const
const char * getCppFile () const
unsigned int getCppLine () const
bool isErrorReported () const
 For debugger.
void setErrorReported (bool value=true)
void printDebug (const XMLCh *const context) const

Protected Member Functions

 XQException (const XMLCh *const type, const XMLCh *const functionName, const XMLCh *const reason, const LocationInfo *info, const char *cppFile, unsigned int cppLine)
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
XQException::XQException const XMLCh *  reason,
const XMLCh *  file,
unsigned int  line,
unsigned int  column,
const char *  cppFile,
unsigned int  cppLine
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
XQException::XQException const XQException  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual XQException::~XQException  )  [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
XQException::XQException const XMLCh *const   type,
const XMLCh *const   functionName,
const XMLCh *const   reason,
const LocationInfo *  info,
const char *  cppFile,
unsigned int  cppLine
[protected]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
const char* XQException::getCppFile  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
const XMLCh* XQException::getCppFunction  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
unsigned int XQException::getCppLine  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
const XMLCh* XQException::getError  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
const XMLCh* XQException::getType  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
unsigned int XQException::getXQueryColumn  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
const XMLCh* XQException::getXQueryFile  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
unsigned int XQException::getXQueryLine  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
bool XQException::isErrorReported  )  const [inline]
+
+ + + + + +
+   + + +

+For debugger. +

+

+

+ + + + +
+ + + + + + + + + +
void XQException::printDebug const XMLCh *const   context  )  const
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void XQException::setErrorReported bool  value = true  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void XQException::setXQueryPosition const LocationInfo *  info  ) 
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void XQException::setXQueryPosition const XMLCh *  file,
unsigned int  line,
unsigned int  column
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classXQQuery-members.html b/docs/simple-api/classXQQuery-members.html new file mode 100644 index 00000000..cfcd3166 --- /dev/null +++ b/docs/simple-api/classXQQuery-members.html @@ -0,0 +1,56 @@ + + +XQilla Simple API: Member List + + + + + + +

XQQuery Member List

This is the complete list of members for XQQuery, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addFunction(XQUserFunction *fnDef)XQQuery
addVariable(XQGlobalVariable *varDef)XQQuery
createDynamicContext(xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager) const XQQuery
execute(DynamicContext *context) const XQQuery
getFile() const XQQuery
getFunctions() const XQQuery [inline]
getImportedModules() const XQQuery [inline]
getIsLibraryModule() const XQQuery
getModuleTargetNamespace() const XQQuery
getQueryBody() const XQQuery
getQueryPlan() const XQQuery
getQueryText() const XQQuery
getStaticContext() const XQQuery [inline]
getVariables() const XQQuery [inline]
importModule(const XMLCh *szUri, VectorOfStrings *locations, StaticContext *context)XQQuery
operator delete(void *p)xercesc::XMemory
operator delete(void *p, MemoryManager *memMgr)xercesc::XMemory
operator delete(void *p, void *ptr)xercesc::XMemory
operator new(size_t size)xercesc::XMemory
operator new(size_t size, MemoryManager *memMgr)xercesc::XMemory
operator new(size_t size, void *ptr)xercesc::XMemory
setFile(const XMLCh *file)XQQuery
setIsLibraryModule(bool bIsModule=true)XQQuery
setModuleTargetNamespace(const XMLCh *uri)XQQuery
setQueryBody(ASTNode *query)XQQuery
staticResolution(StaticContext *context=0)XQQuery
staticTyping(StaticContext *context=0)XQQuery
XMemory()xercesc::XMemory [inline, protected]
~XQQuery()XQQuery


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classXQQuery.html b/docs/simple-api/classXQQuery.html new file mode 100644 index 00000000..f72a7e30 --- /dev/null +++ b/docs/simple-api/classXQQuery.html @@ -0,0 +1,831 @@ + + +XQilla Simple API: XQQuery Class Reference + + + + + + +

XQQuery Class Reference

Encapsulates a query expression. +More... +

+#include <XQQuery.hpp> +

+Inheritance diagram for XQQuery:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

 ~XQQuery ()
 Destructor.
Runtime Methods
DynamicContextcreateDynamicContext (xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager) const
 Creates a DynamicContext based on the static context used to parse this query.
Result execute (DynamicContext *context) const
 Executes the query using the given DynamicContext.
void staticResolution (StaticContext *context=0)
 Perform static resolution on the query.
void staticTyping (StaticContext *context=0)
 Perform type calculation and related optimizations.
Query Information
const XMLCh * getQueryText () const
 Returns the expression that was parsed to create this XQQuery object.
std::string getQueryPlan () const
 Returns the query plan as XML. This is designed for debug and informative purposes only.
Getters and Setters
ASTNode * getQueryBody () const
 Get the query body as an ASTNode.
void setQueryBody (ASTNode *query)
 Set the query body to an ASTNode.
void addFunction (XQUserFunction *fnDef)
 Adds an XQUserFunction to the query.
const UserFunctionsgetFunctions () const
 Returns a vector of all XQUserFunction objects from the query.
void addVariable (XQGlobalVariable *varDef)
 Adds a XQGlobalVariable to the query.
const GlobalVariablesgetVariables () const
 Returns a vector of all XQGlobalVariable objects from the query.
const ImportedModulesgetImportedModules () const
 Returns a vector of all XQGlobalVariable objects from the query.
const XMLCh * getFile () const
 Returns the name of the file that this query was parsed from.
void setFile (const XMLCh *file)
 Sets the name of the file that this query was parsed from.
const DynamicContextgetStaticContext () const
Module Methods
void setIsLibraryModule (bool bIsModule=true)
 Sets whether this query is a module or not.
bool getIsLibraryModule () const
 Returns whether this query is a module or not.
void setModuleTargetNamespace (const XMLCh *uri)
 Sets the module target namespace for this query.
const XMLCh * getModuleTargetNamespace () const
 Gets the module taget namespace for this query.
void importModule (const XMLCh *szUri, VectorOfStrings *locations, StaticContext *context)
 Performs a module import from the given target namespace and locations.

Classes

class  DebugResult
 Top level debug lazy result iterator.
class  QueryResult
 Top level lazy result iterator.
+

Detailed Description

+Encapsulates a query expression. +

+XQQuery objects are thread safe, and can be executed from multiple threads at the same time - provided a DynamicContext is used per thread.

+Instances of this class can be created by using the parsing methods on the XQilla object.

+This class is dependant on the DynamicContext that was used to create it. This context must not be deleted before the XQQuery object. Normally this is acheived by the XQQuery adopting the DynamicContext and deleting it when it is deleted. However, this behaviour can be disabled by using the XQilla::NO_ADOPT_CONTEXT flag when creating the XQQuery. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
XQQuery::~XQQuery  ) 
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
void XQQuery::addFunction XQUserFunction *  fnDef  ) 
+
+ + + + + +
+   + + +

+Adds an XQUserFunction to the query. +

+

+

+ + + + +
+ + + + + + + + + +
void XQQuery::addVariable XQGlobalVariable *  varDef  ) 
+
+ + + + + +
+   + + +

+Adds a XQGlobalVariable to the query. +

+

+

+ + + + +
+ + + + + + + + + +
DynamicContext* XQQuery::createDynamicContext xercesc::MemoryManager memMgr = xercesc::XMLPlatformUtils::fgMemoryManager  )  const
+
+ + + + + +
+   + + +

+Creates a DynamicContext based on the static context used to parse this query. +

+This DynamicContext will be suitable for using to call execute().

+

Parameters:
+ + +
memMgr The memory manager used to create the DynamicContext.
+
+
Returns:
An implementation of DynamicContext
+
+

+ + + + +
+ + + + + + + + + +
Result XQQuery::execute DynamicContext context  )  const
+
+ + + + + +
+   + + +

+Executes the query using the given DynamicContext. +

+

Parameters:
+ + +
context The DynamicContext to use to execute the query. This contains runtime values for variables, the value of the context item, and other relevent information.
+
+
Returns:
The Result object - a lazy iterator over the query results.
+
Exceptions:
+ + +
XQException If a runtime error occurs
+
+
+

+ + + + +
+ + + + + + + + +
const XMLCh* XQQuery::getFile  )  const
+
+ + + + + +
+   + + +

+Returns the name of the file that this query was parsed from. +

+

+

+ + + + +
+ + + + + + + + +
const UserFunctions& XQQuery::getFunctions  )  const [inline]
+
+ + + + + +
+   + + +

+Returns a vector of all XQUserFunction objects from the query. +

+

+

+ + + + +
+ + + + + + + + +
const ImportedModules& XQQuery::getImportedModules  )  const [inline]
+
+ + + + + +
+   + + +

+Returns a vector of all XQGlobalVariable objects from the query. +

+

+

+ + + + +
+ + + + + + + + +
bool XQQuery::getIsLibraryModule  )  const
+
+ + + + + +
+   + + +

+Returns whether this query is a module or not. +

+

+

+ + + + +
+ + + + + + + + +
const XMLCh* XQQuery::getModuleTargetNamespace  )  const
+
+ + + + + +
+   + + +

+Gets the module taget namespace for this query. +

+

+

+ + + + +
+ + + + + + + + +
ASTNode* XQQuery::getQueryBody  )  const
+
+ + + + + +
+   + + +

+Get the query body as an ASTNode. +

+

+

+ + + + +
+ + + + + + + + +
std::string XQQuery::getQueryPlan  )  const
+
+ + + + + +
+   + + +

+Returns the query plan as XML. This is designed for debug and informative purposes only. +

+

+

+ + + + +
+ + + + + + + + +
const XMLCh* XQQuery::getQueryText  )  const
+
+ + + + + +
+   + + +

+Returns the expression that was parsed to create this XQQuery object. +

+

+

+ + + + +
+ + + + + + + + +
const DynamicContext* XQQuery::getStaticContext  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
const GlobalVariables& XQQuery::getVariables  )  const [inline]
+
+ + + + + +
+   + + +

+Returns a vector of all XQGlobalVariable objects from the query. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void XQQuery::importModule const XMLCh *  szUri,
VectorOfStrings *  locations,
StaticContext context
+
+ + + + + +
+   + + +

+Performs a module import from the given target namespace and locations. +

+

+

+ + + + +
+ + + + + + + + + +
void XQQuery::setFile const XMLCh *  file  ) 
+
+ + + + + +
+   + + +

+Sets the name of the file that this query was parsed from. +

+

+

+ + + + +
+ + + + + + + + + +
void XQQuery::setIsLibraryModule bool  bIsModule = true  ) 
+
+ + + + + +
+   + + +

+Sets whether this query is a module or not. +

+

+

+ + + + +
+ + + + + + + + + +
void XQQuery::setModuleTargetNamespace const XMLCh *  uri  ) 
+
+ + + + + +
+   + + +

+Sets the module target namespace for this query. +

+

+

+ + + + +
+ + + + + + + + + +
void XQQuery::setQueryBody ASTNode *  query  ) 
+
+ + + + + +
+   + + +

+Set the query body to an ASTNode. +

+

+

+ + + + +
+ + + + + + + + + +
void XQQuery::staticResolution StaticContext context = 0  ) 
+
+ + + + + +
+   + + +

+Perform static resolution on the query. +

+This operation is not thread safe, and should only be performed once.

+Static reolution resolves prefixes to namespace URIs, variable names to variables, function names to functions, and performs some basic query optimisation.

+Normally this is done as part of parsing the query expression. However, if the XQilla::NO_STATIC_RESOLUTION flag was specified when the query was parsed, this method will have to be called to perform this step manually.

+

Parameters:
+ + +
context If specified, the StaticContext to use to statically resolve this object. By default, the context used to parse the query is used. This should not need to be changed under normal usage.
+
+
Exceptions:
+ + +
XQException If a static resolution time error occurs
+
+
+

+ + + + +
+ + + + + + + + + +
void XQQuery::staticTyping StaticContext context = 0  ) 
+
+ + + + + +
+   + + +

+Perform type calculation and related optimizations. +

+This operation is safe to call multiple times.

+Normally this step is done as part of static resolution.

+

Parameters:
+ + +
context If specified, the StaticContext to use to statically resolve this object. By default, the context used to parse the query is used. This should not need to be changed under normal usage.
+
+
Exceptions:
+ + +
XQException If a static resolution time error occurs
+
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classXQQuery__inherit__graph.map b/docs/simple-api/classXQQuery__inherit__graph.map new file mode 100644 index 00000000..e955adb5 --- /dev/null +++ b/docs/simple-api/classXQQuery__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1XMemory.html 7,9 141,33 diff --git a/docs/simple-api/classXQQuery__inherit__graph.md5 b/docs/simple-api/classXQQuery__inherit__graph.md5 new file mode 100644 index 00000000..a291fc43 --- /dev/null +++ b/docs/simple-api/classXQQuery__inherit__graph.md5 @@ -0,0 +1 @@ +0121bdc8a5dcc5bb35005e89e056f44e \ No newline at end of file diff --git a/docs/simple-api/classXQQuery__inherit__graph.png b/docs/simple-api/classXQQuery__inherit__graph.png new file mode 100644 index 00000000..6b31104e Binary files /dev/null and b/docs/simple-api/classXQQuery__inherit__graph.png differ diff --git a/docs/simple-api/classXQScopedNamespace-members.html b/docs/simple-api/classXQScopedNamespace-members.html new file mode 100644 index 00000000..719c127e --- /dev/null +++ b/docs/simple-api/classXQScopedNamespace-members.html @@ -0,0 +1,34 @@ + + +XQilla Simple API: Member List + + + + + + +

XQScopedNamespace Member List

This is the complete list of members for XQScopedNamespace, including all inherited members.

+ + + + + + + +
_ctxNodeXQScopedNamespace [protected]
_prevScopeXQScopedNamespace [protected]
lookupNamespaceURI(const XMLCh *prefix) const XQScopedNamespace [virtual]
lookupPrefix(const XMLCh *uri) const XQScopedNamespace [virtual]
setNodeContext(const xercesc::DOMNode *node)XQScopedNamespace
XQScopedNamespace(XPath2MemoryManager *memMgr, const xercesc::DOMXPathNSResolver *prevScope)XQScopedNamespace
~XQScopedNamespace()XQScopedNamespace [virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classXQScopedNamespace.html b/docs/simple-api/classXQScopedNamespace.html new file mode 100644 index 00000000..428a0749 --- /dev/null +++ b/docs/simple-api/classXQScopedNamespace.html @@ -0,0 +1,246 @@ + + +XQilla Simple API: XQScopedNamespace Class Reference + + + + + + +

XQScopedNamespace Class Reference

#include <XQScopedNamespace.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + +

Public Member Functions

 XQScopedNamespace (XPath2MemoryManager *memMgr, const xercesc::DOMXPathNSResolver *prevScope)
virtual ~XQScopedNamespace ()
virtual const XMLCh * lookupNamespaceURI (const XMLCh *prefix) const
virtual const XMLCh * lookupPrefix (const XMLCh *uri) const
void setNodeContext (const xercesc::DOMNode *node)

Protected Attributes

const xercesc::DOMXPathNSResolver_prevScope
const xercesc::DOMNode_ctxNode
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
XQScopedNamespace::XQScopedNamespace XPath2MemoryManager memMgr,
const xercesc::DOMXPathNSResolver prevScope
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual XQScopedNamespace::~XQScopedNamespace  )  [virtual]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* XQScopedNamespace::lookupNamespaceURI const XMLCh *  prefix  )  const [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* XQScopedNamespace::lookupPrefix const XMLCh *  uri  )  const [virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
void XQScopedNamespace::setNodeContext const xercesc::DOMNode node  ) 
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + +
const xercesc:: DOMNode* XQScopedNamespace::_ctxNode [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
const xercesc:: DOMXPathNSResolver* XQScopedNamespace::_prevScope [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classXQilla-members.html b/docs/simple-api/classXQilla-members.html new file mode 100644 index 00000000..5259cada --- /dev/null +++ b/docs/simple-api/classXQilla-members.html @@ -0,0 +1,48 @@ + + +XQilla Simple API: Member List + + + + + + +

XQilla Member List

This is the complete list of members for XQilla, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
createContext(xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager)XQilla [static]
Flags enum nameXQilla
Language enum nameXQilla
NO_ADOPT_CONTEXT enum valueXQilla
NO_STATIC_RESOLUTION enum valueXQilla
operator delete(void *p)xercesc::XMemory
operator delete(void *p, MemoryManager *memMgr)xercesc::XMemory
operator delete(void *p, void *ptr)xercesc::XMemory
operator new(size_t size)xercesc::XMemory
operator new(size_t size, MemoryManager *memMgr)xercesc::XMemory
operator new(size_t size, void *ptr)xercesc::XMemory
parse(const XMLCh *query, Language language=XQUERY, DynamicContext *context=0, const XMLCh *queryFile=NULL, unsigned int flags=0, xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager)XQilla [static]
parse(const xercesc::InputSource &querySrc, Language language=XQUERY, DynamicContext *context=0, unsigned int flags=0, xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager)XQilla [static]
parseFromURI(const XMLCh *queryFile, Language language=XQUERY, DynamicContext *context=0, unsigned int flags=0, xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager)XQilla [static]
XMemory()xercesc::XMemory [inline, protected]
XPATH2 enum valueXQilla
XPATH2_FULLTEXT enum valueXQilla
XQilla(xercesc::MemoryManager *memMgr=0)XQilla
XQUERY enum valueXQilla
XQUERY_FULLTEXT enum valueXQilla
~XQilla()XQilla


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classXQilla.html b/docs/simple-api/classXQilla.html new file mode 100644 index 00000000..f0bf6e11 --- /dev/null +++ b/docs/simple-api/classXQilla.html @@ -0,0 +1,477 @@ + + +XQilla Simple API: XQilla Class Reference + + + + + + +

XQilla Class Reference

Provides factory methods for creating XQQuery and DynamicContext objects. +More... +

+#include <XQilla.hpp> +

+Inheritance diagram for XQilla:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

enum  Flags { NO_STATIC_RESOLUTION = 0x1, +NO_ADOPT_CONTEXT = 0x2 + }
 Flags used by the XQilla methods. These are used by bitwise OR-ing (|) their values together. More...
enum  Language { XQUERY, +XPATH2, +XQUERY_FULLTEXT, +XPATH2_FULLTEXT + }
 Enumeration used to select a language to parse. More...

Public Member Functions

 XQilla (xercesc::MemoryManager *memMgr=0)
 Constructs the object.
 ~XQilla ()
 Destructs the object.

Static Public Member Functions

Parsing Methods
static XQQueryparse (const XMLCh *query, Language language=XQUERY, DynamicContext *context=0, const XMLCh *queryFile=NULL, unsigned int flags=0, xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager)
 Parse the expression contained in the given query string.
static XQQueryparse (const xercesc::InputSource &querySrc, Language language=XQUERY, DynamicContext *context=0, unsigned int flags=0, xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager)
 Parse the expression from the given InputSource.
static XQQueryparseFromURI (const XMLCh *queryFile, Language language=XQUERY, DynamicContext *context=0, unsigned int flags=0, xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager)
 Parse the expression residing at the given URL.
Factory Methods
static DynamicContextcreateContext (xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager)
 Creates a context suitable for parsing an expression with.
+

Detailed Description

+Provides factory methods for creating XQQuery and DynamicContext objects. +

+This class calls XQillaPlatformUtils::initialize() when it is constructed, and XQillaPlatformUtils::terminate() when it destructs, so there is no need to seperately initialize or terminate either Xerces or XQilla. +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
enum XQilla::Flags
+
+ + + + + +
+   + + +

+Flags used by the XQilla methods. These are used by bitwise OR-ing (|) their values together. +

+

Enumerator:
+ + + +
NO_STATIC_RESOLUTION  +Don't perform static resolution.
NO_ADOPT_CONTEXT  +Don't adopt the context and delete it when the XQQuery is deleted.
+
+
+

+ + + + +
+ + + + +
enum XQilla::Language
+
+ + + + + +
+   + + +

+Enumeration used to select a language to parse. +

+

Enumerator:
+ + + + + +
XQUERY  +Parse an XQuery expression.
XPATH2  +Parse an XPath 2.0 expression.
XQUERY_FULLTEXT  +Parse an XQuery Full-Text expression.
XPATH2_FULLTEXT  +Parse an XPath 2.0 Full-Text expression.
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
XQilla::XQilla xercesc::MemoryManager memMgr = 0  ) 
+
+ + + + + +
+   + + +

+Constructs the object. +

+In the process, XQillaPlatformUtils::initialize() is called to initialize XQilla and Xerces.

+

Parameters:
+ + +
memMgr If provided, this is the MemoryManager used to initialize Xerces.
+
+
+

+ + + + +
+ + + + + + + + +
XQilla::~XQilla  ) 
+
+ + + + + +
+   + + +

+Destructs the object. +

+In the process, XQillaPlatformUtils::terminate() is called to terminate XQilla and Xerces.

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
static DynamicContext* XQilla::createContext xercesc::MemoryManager memMgr = xercesc::XMLPlatformUtils::fgMemoryManager  )  [static]
+
+ + + + + +
+   + + +

+Creates a context suitable for parsing an expression with. +

+

Parameters:
+ + +
memMgr The memory manager used to create the DynamicContext.
+
+
Returns:
An implementation of DynamicContext
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static XQQuery* XQilla::parse const xercesc::InputSource querySrc,
Language  language = XQUERY,
DynamicContext context = 0,
unsigned int  flags = 0,
xercesc::MemoryManager memMgr = xercesc::XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Parse the expression from the given InputSource. +

+

Parameters:
+ + + + + + +
querySrc An InputSource which the expression will be parsed from.
language The language to parse the string as. Defaults to XQUERY.
context If specified, the context to use for parsing this expression. A default context is used if this parameter is 0.
flags A bitwise OR of the Flags constants, that control aspects of how the XQQuery object is created.
memMgr If specified, the memory manager used to create the XQQuery object.
+
+
Returns:
The object that represents the parsed expression.
+
Exceptions:
+ + +
XQException If a parse error occurs.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static XQQuery* XQilla::parse const XMLCh *  query,
Language  language = XQUERY,
DynamicContext context = 0,
const XMLCh *  queryFile = NULL,
unsigned int  flags = 0,
xercesc::MemoryManager memMgr = xercesc::XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Parse the expression contained in the given query string. +

+

Parameters:
+ + + + + + + +
query A string containing the expression to parse.
language The language to parse the string as. Defaults to XQUERY.
context If specified, the context to use for parsing this expression. A default context is used if this parameter is 0.
queryFile The name of the file that query originates in. This is passed back to the user in an XQException if an error occurs.
flags A bitwise OR of the Flags constants, that control aspects of how the XQQuery object is created.
memMgr If specified, the memory manager used to create the XQQuery object.
+
+
Returns:
The object that represents the parsed expression.
+
Exceptions:
+ + +
XQException If a parse error occurs.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static XQQuery* XQilla::parseFromURI const XMLCh *  queryFile,
Language  language = XQUERY,
DynamicContext context = 0,
unsigned int  flags = 0,
xercesc::MemoryManager memMgr = xercesc::XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Parse the expression residing at the given URL. +

+

Parameters:
+ + + + + + +
queryFile The URL of the expression to parse.
language The language to parse the string as. Defaults to XQUERY.
context If specified, the context to use for parsing this expression. A default context is used if this parameter is 0.
flags A bitwise OR of the Flags constants, that control aspects of how the XQQuery object is created.
memMgr If specified, the memory manager used to create the XQQuery object.
+
+
Returns:
The object that represents the parsed expression.
+
Exceptions:
+ + +
XQException If a parse error occurs.
+
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classXQillaAllocator-members.html b/docs/simple-api/classXQillaAllocator-members.html new file mode 100644 index 00000000..cad54c47 --- /dev/null +++ b/docs/simple-api/classXQillaAllocator-members.html @@ -0,0 +1,45 @@ + + +XQilla Simple API: Member List + + + + + + +

XQillaAllocator< _Tp > Member List

This is the complete list of members for XQillaAllocator< _Tp >, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
_memMgrXQillaAllocator< _Tp > [protected]
_singletonXQillaAllocator< _Tp > [protected]
allocate(size_t _n, const void *=0)XQillaAllocator< _Tp > [inline]
const_pointer typedefXQillaAllocator< _Tp >
const_reference typedefXQillaAllocator< _Tp >
construct(pointer _p, const_reference _v)XQillaAllocator< _Tp > [inline]
deallocate(void *_p, size_t _n)XQillaAllocator< _Tp > [inline]
destroy(pointer _p)XQillaAllocator< _Tp > [inline]
difference_type typedefXQillaAllocator< _Tp >
max_size() const XQillaAllocator< _Tp > [inline]
max_size(size_type) const XQillaAllocator< _Tp > [inline]
pointer typedefXQillaAllocator< _Tp >
reference typedefXQillaAllocator< _Tp >
size_type typedefXQillaAllocator< _Tp >
value_type typedefXQillaAllocator< _Tp >
XQillaAllocator()XQillaAllocator< _Tp > [inline]
XQillaAllocator(xercesc::MemoryManager *memMgr)XQillaAllocator< _Tp > [inline]
XQillaAllocator(const XQillaAllocator< _Tp > &o)XQillaAllocator< _Tp > [inline]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classXQillaAllocator.html b/docs/simple-api/classXQillaAllocator.html new file mode 100644 index 00000000..38527023 --- /dev/null +++ b/docs/simple-api/classXQillaAllocator.html @@ -0,0 +1,638 @@ + + +XQilla Simple API: XQillaAllocator< _Tp > Class Template Reference + + + + + + +

XQillaAllocator< _Tp > Class Template Reference

#include <XPath2MemoryManager.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

typedef size_t size_type
typedef ptrdiff_t difference_type
typedef _Tp * pointer
typedef const _Tp * const_pointer
typedef _Tp & reference
typedef const _Tp & const_reference
typedef _Tp value_type

Public Member Functions

 XQillaAllocator ()
 XQillaAllocator (xercesc::MemoryManager *memMgr)
 XQillaAllocator (const XQillaAllocator< _Tp > &o)
pointer allocate (size_t _n, const void *=0)
void deallocate (void *_p, size_t _n)
void construct (pointer _p, const_reference _v)
void destroy (pointer _p)
size_type max_size () const
size_type max_size (size_type) const

Protected Attributes

char _singleton [sizeof(_Tp)]
xercesc::MemoryManager_memMgr

Classes

struct  rebind
+

template<class _Tp>
+ class XQillaAllocator< _Tp >

+ +

Member Typedef Documentation

+

+ + + + +
+ + + + + + + +
+template<class _Tp>
typedef const _Tp* XQillaAllocator< _Tp >::const_pointer
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + +
+template<class _Tp>
typedef const _Tp& XQillaAllocator< _Tp >::const_reference
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + +
+template<class _Tp>
typedef ptrdiff_t XQillaAllocator< _Tp >::difference_type
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + +
+template<class _Tp>
typedef _Tp* XQillaAllocator< _Tp >::pointer
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + +
+template<class _Tp>
typedef _Tp& XQillaAllocator< _Tp >::reference
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + +
+template<class _Tp>
typedef size_t XQillaAllocator< _Tp >::size_type
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + +
+template<class _Tp>
typedef _Tp XQillaAllocator< _Tp >::value_type
+
+ + + + + +
+   + + +

+

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + +
+template<class _Tp>
XQillaAllocator< _Tp >::XQillaAllocator  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + +
+template<class _Tp>
XQillaAllocator< _Tp >::XQillaAllocator xercesc::MemoryManager memMgr  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + +
+template<class _Tp>
XQillaAllocator< _Tp >::XQillaAllocator const XQillaAllocator< _Tp > &  o  )  [inline]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<class _Tp>
pointer XQillaAllocator< _Tp >::allocate size_t  _n,
const void *  = 0
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<class _Tp>
void XQillaAllocator< _Tp >::construct pointer  _p,
const_reference  _v
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+template<class _Tp>
void XQillaAllocator< _Tp >::deallocate void *  _p,
size_t  _n
[inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + +
+template<class _Tp>
void XQillaAllocator< _Tp >::destroy pointer  _p  )  [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + + +
+template<class _Tp>
size_type XQillaAllocator< _Tp >::max_size size_type   )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + + + +
+template<class _Tp>
size_type XQillaAllocator< _Tp >::max_size  )  const [inline]
+
+ + + + + +
+   + + +

+

+


Member Data Documentation

+

+ + + + +
+ + + + + + + +
+template<class _Tp>
xercesc:: MemoryManager* XQillaAllocator< _Tp >::_memMgr [protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + +
+template<class _Tp>
char XQillaAllocator< _Tp >::_singleton[sizeof(_Tp)] [protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classXQilla__inherit__graph.map b/docs/simple-api/classXQilla__inherit__graph.map new file mode 100644 index 00000000..e955adb5 --- /dev/null +++ b/docs/simple-api/classXQilla__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1XMemory.html 7,9 141,33 diff --git a/docs/simple-api/classXQilla__inherit__graph.md5 b/docs/simple-api/classXQilla__inherit__graph.md5 new file mode 100644 index 00000000..3b60ef84 --- /dev/null +++ b/docs/simple-api/classXQilla__inherit__graph.md5 @@ -0,0 +1 @@ +9e4629b619beb3fa440f55c2c0992a99 \ No newline at end of file diff --git a/docs/simple-api/classXQilla__inherit__graph.png b/docs/simple-api/classXQilla__inherit__graph.png new file mode 100644 index 00000000..520d399a Binary files /dev/null and b/docs/simple-api/classXQilla__inherit__graph.png differ diff --git a/docs/simple-api/classes.html b/docs/simple-api/classes.html new file mode 100644 index 00000000..778ef959 --- /dev/null +++ b/docs/simple-api/classes.html @@ -0,0 +1,42 @@ + + +XQilla Simple API: Alphabetical List + + + + + + +

XQilla Simple API Class Index

A | C | D | I | L | M | N | R | S | T | U | V | X

+ +
  A  
+
AutoNsScopeReset   
  S  
+
AnyAtomicType   AutoRelease   Scope   
ATAnySimpleType   
  C  
+
Sequence   
ATAnyURIOrDerived   Collation   StaticContext   
ATBase64BinaryOrDerived   
  D  
+
StaticResolutionContext   
ATBooleanOrDerived   DateOrTimeType   StdInInputSource (xercesc)   
ATDateOrDerived   DOMDocument (xercesc)   StringPool   
ATDateTimeOrDerived   DOMNode (xercesc)   
  T  
+
ATDecimalOrDerived   DOMXPathNSResolver (xercesc)   Timezone   
ATDoubleOrDerived   DynamicContext   
  U  
+
ATDurationOrDerived   
  I  
+
URIResolver   
ATFloatOrDerived   InputSource (xercesc)   URLInputSource (xercesc)   
ATGDayOrDerived   Item   
  V  
+
ATGMonthDayOrDerived   ItemFactory   VarHashEntry   
ATGMonthOrDerived   ItemFactory::ElementChild   VariableStore   
ATGYearMonthOrDerived   
  L  
+
VariableTypeStore   
ATGYearOrDerived   LocalFileInputSource (xercesc)   
  X  
+
ATHexBinaryOrDerived   
  M  
+
XMemory (xercesc)   
ATNotationOrDerived   MemBufInputSource (xercesc)   XMLDeleter (xercesc)   
ATQNameOrDerived   MemoryManager (xercesc)   XMLEntityResolver (xercesc)   
ATStringOrDerived   ModuleResolver   XMLPlatformUtils (xercesc)   
ATTimeOrDerived   
  N  
+
XPath2MemoryManager   
ATUntypedAtomic   Node   XQDebugCallback   
AutoContextInfoReset   Numeric   XQException   
AutoContextItemTypeReset   NumericTypeConstructor   XQilla   
AutoDeallocate   
  R  
+
XQillaAllocator   
AutoDelete   RefCountPointer   XQillaAllocator::rebind   
AutoDeleteArray   ReferenceCounted   XQQuery   
AutoNodeSetOrderingReset   Result   XQScopedNamespace   

A | C | D | I | L | M | N | R | S | T | U | V | X

+


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1DOMDocument-members.html b/docs/simple-api/classxercesc_1_1DOMDocument-members.html new file mode 100644 index 00000000..b5b3efc4 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1DOMDocument-members.html @@ -0,0 +1,129 @@ + + +XQilla Simple API: Member List + + + + + + +

xercesc::DOMDocument Member List

This is the complete list of members for xercesc::DOMDocument, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
adoptNode(DOMNode *source)=0xercesc::DOMDocument [pure virtual]
appendChild(DOMNode *newChild)=0xercesc::DOMNode [pure virtual]
ATTRIBUTE_NODE enum valuexercesc::DOMNode
CDATA_SECTION_NODE enum valuexercesc::DOMNode
cloneNode(bool deep) const =0xercesc::DOMNode [pure virtual]
COMMENT_NODE enum valuexercesc::DOMNode
compareTreePosition(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
createAttribute(const XMLCh *name)=0xercesc::DOMDocument [pure virtual]
createAttributeNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName)=0xercesc::DOMDocument [pure virtual]
createCDATASection(const XMLCh *data)=0xercesc::DOMDocument [pure virtual]
createComment(const XMLCh *data)=0xercesc::DOMDocument [pure virtual]
createDocumentFragment()=0xercesc::DOMDocument [pure virtual]
createDocumentType(const XMLCh *name)=0xercesc::DOMDocument [pure virtual]
createDocumentType(const XMLCh *qName, const XMLCh *, const XMLCh *)xercesc::DOMDocument [inline, virtual]
createElement(const XMLCh *tagName)=0xercesc::DOMDocument [pure virtual]
createElementNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName)=0xercesc::DOMDocument [pure virtual]
createElementNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName, const XMLSSize_t lineNum, const XMLSSize_t columnNum)=0xercesc::DOMDocument [pure virtual]
createEntity(const XMLCh *name)=0xercesc::DOMDocument [pure virtual]
createEntityReference(const XMLCh *name)=0xercesc::DOMDocument [pure virtual]
createNotation(const XMLCh *name)=0xercesc::DOMDocument [pure virtual]
createProcessingInstruction(const XMLCh *target, const XMLCh *data)=0xercesc::DOMDocument [pure virtual]
createTextNode(const XMLCh *data)=0xercesc::DOMDocument [pure virtual]
DOCUMENT_FRAGMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_TYPE_NODE enum valuexercesc::DOMNode
DOMDocument()xercesc::DOMDocument [inline, protected]
DOMNode()xercesc::DOMNode [inline, protected]
DOMNode(const DOMNode &)xercesc::DOMNode [inline, protected]
DOMTreePosition enum namexercesc::DOMNode
ELEMENT_NODE enum valuexercesc::DOMNode
ENTITY_NODE enum valuexercesc::DOMNode
ENTITY_REFERENCE_NODE enum valuexercesc::DOMNode
getActualEncoding() const =0xercesc::DOMDocument [pure virtual]
getAttributes() const =0xercesc::DOMNode [pure virtual]
getBaseURI() const =0xercesc::DOMNode [pure virtual]
getChildNodes() const =0xercesc::DOMNode [pure virtual]
getDoctype() const =0xercesc::DOMDocument [pure virtual]
getDocumentElement() const =0xercesc::DOMDocument [pure virtual]
getDocumentURI() const =0xercesc::DOMDocument [pure virtual]
getDOMConfiguration() const =0xercesc::DOMDocument [pure virtual]
getElementById(const XMLCh *elementId) const =0xercesc::DOMDocument [pure virtual]
getElementsByTagName(const XMLCh *tagname) const =0xercesc::DOMDocument [pure virtual]
getElementsByTagNameNS(const XMLCh *namespaceURI, const XMLCh *localName) const =0xercesc::DOMDocument [pure virtual]
getEncoding() const =0xercesc::DOMDocument [pure virtual]
getFirstChild() const =0xercesc::DOMNode [pure virtual]
getImplementation() const =0xercesc::DOMDocument [pure virtual]
getInterface(const XMLCh *feature)=0xercesc::DOMNode [pure virtual]
getLastChild() const =0xercesc::DOMNode [pure virtual]
getLocalName() const =0xercesc::DOMNode [pure virtual]
getNamespaceURI() const =0xercesc::DOMNode [pure virtual]
getNextSibling() const =0xercesc::DOMNode [pure virtual]
getNodeName() const =0xercesc::DOMNode [pure virtual]
getNodeType() const =0xercesc::DOMNode [pure virtual]
getNodeValue() const =0xercesc::DOMNode [pure virtual]
getOwnerDocument() const =0xercesc::DOMNode [pure virtual]
getParentNode() const =0xercesc::DOMNode [pure virtual]
getPrefix() const =0xercesc::DOMNode [pure virtual]
getPreviousSibling() const =0xercesc::DOMNode [pure virtual]
getStandalone() const =0xercesc::DOMDocument [pure virtual]
getStrictErrorChecking() const =0xercesc::DOMDocument [pure virtual]
getTextContent() const =0xercesc::DOMNode [pure virtual]
getUserData(const XMLCh *key) const =0xercesc::DOMNode [pure virtual]
getVersion() const =0xercesc::DOMDocument [pure virtual]
hasAttributes() const =0xercesc::DOMNode [pure virtual]
hasChildNodes() const =0xercesc::DOMNode [pure virtual]
importNode(DOMNode *importedNode, bool deep)=0xercesc::DOMDocument [pure virtual]
insertBefore(DOMNode *newChild, DOMNode *refChild)=0xercesc::DOMNode [pure virtual]
isDefaultNamespace(const XMLCh *namespaceURI) const =0xercesc::DOMNode [pure virtual]
isEqualNode(const DOMNode *arg) const =0xercesc::DOMNode [pure virtual]
isSameNode(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
isSupported(const XMLCh *feature, const XMLCh *version) const =0xercesc::DOMNode [pure virtual]
lookupNamespacePrefix(const XMLCh *namespaceURI, bool useDefault) const =0xercesc::DOMNode [pure virtual]
lookupNamespaceURI(const XMLCh *prefix) const =0xercesc::DOMNode [pure virtual]
NodeType enum namexercesc::DOMNode
normalize()=0xercesc::DOMNode [pure virtual]
normalizeDocument()=0xercesc::DOMDocument [pure virtual]
NOTATION_NODE enum valuexercesc::DOMNode
PROCESSING_INSTRUCTION_NODE enum valuexercesc::DOMNode
release()=0xercesc::DOMNode [pure virtual]
removeChild(DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
renameNode(DOMNode *n, const XMLCh *namespaceURI, const XMLCh *name)=0xercesc::DOMDocument [pure virtual]
replaceChild(DOMNode *newChild, DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
setActualEncoding(const XMLCh *actualEncoding)=0xercesc::DOMDocument [pure virtual]
setDocumentURI(const XMLCh *documentURI)=0xercesc::DOMDocument [pure virtual]
setEncoding(const XMLCh *encoding)=0xercesc::DOMDocument [pure virtual]
setNodeValue(const XMLCh *nodeValue)=0xercesc::DOMNode [pure virtual]
setPrefix(const XMLCh *prefix)=0xercesc::DOMNode [pure virtual]
setStandalone(bool standalone)=0xercesc::DOMDocument [pure virtual]
setStrictErrorChecking(bool strictErrorChecking)=0xercesc::DOMDocument [pure virtual]
setTextContent(const XMLCh *textContent)=0xercesc::DOMNode [pure virtual]
setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0xercesc::DOMNode [pure virtual]
setVersion(const XMLCh *version)=0xercesc::DOMDocument [pure virtual]
TEXT_NODE enum valuexercesc::DOMNode
TREE_POSITION_ANCESTOR enum valuexercesc::DOMNode
TREE_POSITION_DESCENDANT enum valuexercesc::DOMNode
TREE_POSITION_DISCONNECTED enum valuexercesc::DOMNode
TREE_POSITION_EQUIVALENT enum valuexercesc::DOMNode
TREE_POSITION_FOLLOWING enum valuexercesc::DOMNode
TREE_POSITION_PRECEDING enum valuexercesc::DOMNode
TREE_POSITION_SAME_NODE enum valuexercesc::DOMNode
~DOMDocument()xercesc::DOMDocument [inline, virtual]
~DOMNode()xercesc::DOMNode [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1DOMDocument.html b/docs/simple-api/classxercesc_1_1DOMDocument.html new file mode 100644 index 00000000..cb366195 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1DOMDocument.html @@ -0,0 +1,1773 @@ + + +XQilla Simple API: xercesc::DOMDocument Class Reference + + + + + + + +

xercesc::DOMDocument Class Reference

The DOMDocument interface represents the entire XML document. +More... +

+#include <DOMDocument.hpp> +

+Inheritance diagram for xercesc::DOMDocument:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMDocument ()
 Destructor.
Functions introduced in DOM Level 1
virtual DOMElement * createElement (const XMLCh *tagName)=0
 Creates an element of the type specified.
virtual DOMDocumentFragment * createDocumentFragment ()=0
 Creates an empty DOMDocumentFragment object.
virtual DOMText * createTextNode (const XMLCh *data)=0
 Creates a DOMText node given the specified string.
virtual DOMComment * createComment (const XMLCh *data)=0
 Creates a DOMComment node given the specified string.
virtual DOMCDATASection * createCDATASection (const XMLCh *data)=0
 Creates a DOMCDATASection node whose value is the specified string.
virtual DOMProcessingInstruction * createProcessingInstruction (const XMLCh *target, const XMLCh *data)=0
 Creates a DOMProcessingInstruction node given the specified name and data strings.
virtual DOMAttr * createAttribute (const XMLCh *name)=0
 Creates an DOMAttr of the given name.
virtual DOMEntityReference * createEntityReference (const XMLCh *name)=0
 Creates an DOMEntityReference object.
virtual DOMDocumentType * getDoctype () const =0
 The Document Type Declaration (see DOMDocumentType) associated with this document.
virtual DOMImplementation * getImplementation () const =0
 The DOMImplementation object that handles this document.
virtual DOMElement * getDocumentElement () const =0
 This is a convenience attribute that allows direct access to the child node that is the root element of the document.
virtual DOMNodeList * getElementsByTagName (const XMLCh *tagname) const =0
 Returns a DOMNodeList of all the DOMElement(s) with a given tag name in the order in which they are encountered in a preorder traversal of the DOMDocument tree.
Functions introduced in DOM Level 2.
virtual DOMNodeimportNode (DOMNode *importedNode, bool deep)=0
 Imports a node from another document to this document.
virtual DOMElement * createElementNS (const XMLCh *namespaceURI, const XMLCh *qualifiedName)=0
 Creates an element of the given qualified name and namespace URI.
virtual DOMAttr * createAttributeNS (const XMLCh *namespaceURI, const XMLCh *qualifiedName)=0
 Creates an attribute of the given qualified name and namespace URI.
virtual DOMNodeList * getElementsByTagNameNS (const XMLCh *namespaceURI, const XMLCh *localName) const =0
 Returns a DOMNodeList of all the DOMElement(s) with a given local name and namespace URI in the order in which they are encountered in a preorder traversal of the DOMDocument tree.
virtual DOMElement * getElementById (const XMLCh *elementId) const =0
 Returns the DOMElement whose ID is given by elementId.
Functions introduced in DOM Level 3.
virtual const XMLCh * getActualEncoding () const =0
 An attribute specifying the actual encoding of this document.
virtual void setActualEncoding (const XMLCh *actualEncoding)=0
 An attribute specifying the actual encoding of this document.
virtual const XMLCh * getEncoding () const =0
 An attribute specifying, as part of the XML declaration, the encoding of this document.
virtual void setEncoding (const XMLCh *encoding)=0
 An attribute specifying, as part of the XML declaration, the encoding of this document.
virtual bool getStandalone () const =0
 An attribute specifying, as part of the XML declaration, whether this document is standalone.
virtual void setStandalone (bool standalone)=0
 An attribute specifying, as part of the XML declaration, whether this document is standalone.
virtual const XMLCh * getVersion () const =0
 An attribute specifying, as part of the XML declaration, the version number of this document.
virtual void setVersion (const XMLCh *version)=0
 An attribute specifying, as part of the XML declaration, the version number of this document.
virtual const XMLCh * getDocumentURI () const =0
 The location of the document or null if undefined.
virtual void setDocumentURI (const XMLCh *documentURI)=0
 The location of the document or null if undefined.
virtual bool getStrictErrorChecking () const =0
 An attribute specifying whether errors checking is enforced or not.
virtual void setStrictErrorChecking (bool strictErrorChecking)=0
 An attribute specifying whether errors checking is enforced or not.
virtual DOMNoderenameNode (DOMNode *n, const XMLCh *namespaceURI, const XMLCh *name)=0
 Rename an existing node.
virtual DOMNodeadoptNode (DOMNode *source)=0
 Changes the ownerDocument of a node, its children, as well as the attached attribute nodes if there are any.
virtual void normalizeDocument ()=0
 This method acts as if the document was going through a save and load cycle, putting the document in a "normal" form.
virtual DOMConfiguration * getDOMConfiguration () const =0
 The configuration used when Document.normalizeDocument is invoked.
Non-standard extension
virtual DOMEntity * createEntity (const XMLCh *name)=0
 Non-standard extension.
virtual DOMDocumentType * createDocumentType (const XMLCh *name)=0
 Non-standard extension.
virtual DOMDocumentType * createDocumentType (const XMLCh *qName, const XMLCh *, const XMLCh *)
virtual DOMNotation * createNotation (const XMLCh *name)=0
 Non-standard extension.
virtual DOMElement * createElementNS (const XMLCh *namespaceURI, const XMLCh *qualifiedName, const XMLSSize_t lineNum, const XMLSSize_t columnNum)=0
 Non-standard extension.

Protected Member Functions

Hidden constructors
 DOMDocument ()
+

Detailed Description

+The DOMDocument interface represents the entire XML document. +

+Conceptually, it is the root of the document tree, and provides the primary access to the document's data.

+Since elements, text nodes, comments, processing instructions, etc. cannot exist outside the context of a DOMDocument, the DOMDocument interface also contains the factory methods needed to create these objects. The DOMNode objects created have a ownerDocument attribute which associates them with the DOMDocument within whose context they were created.

+See also the Document Object Model (DOM) Level 2 Core Specification. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMDocument::DOMDocument  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMDocument::~DOMDocument  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual DOMNode* xercesc::DOMDocument::adoptNode DOMNode source  )  [pure virtual]
+
+ + + + + +
+   + + +

+Changes the ownerDocument of a node, its children, as well as the attached attribute nodes if there are any. +

+If the node has a parent it is first removed from its parent child list. This effectively allows moving a subtree from one document to another. The following list describes the specifics for each type of node.

+"Experimental - subject to change"

+

+
ATTRIBUTE_NODE
+
The ownerElement attribute is set to null and the specified flag is set to true on the adopted DOMAttr. The descendants of the source DOMAttr are recursively adopted.
+
DOCUMENT_FRAGMENT_NODE
+
The descendants of the source node are recursively adopted.
+
DOCUMENT_NODE
+
DOMDocument nodes cannot be adopted.
+
DOCUMENT_TYPE_NODE
+
DOMDocumentType nodes cannot be adopted.
+
ELEMENT_NODE
+
Specified attribute nodes of the source element are adopted, and the generated DOMAttr nodes. Default attributes are discarded, though if the document being adopted into defines default attributes for this element name, those are assigned. The descendants of the source element are recursively adopted.
+
ENTITY_NODE
+
DOMEntity nodes cannot be adopted.
+
ENTITY_REFERENCE_NODE
+
Only the DOMEntityReference node itself is adopted, the descendants are discarded, since the source and destination documents might have defined the entity differently. If the document being imported into provides a definition for this entity name, its value is assigned.
+
NOTATION_NODE
+
DOMNotation nodes cannot be adopted.
+
PROCESSING_INSTRUCTION_NODE, TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE
+
These nodes can all be adopted. No specifics.
+
+
Parameters:
+ + +
source The node to move into this document.
+
+
Returns:
The adopted node, or null if this operation fails, such as when the source node comes from a different implementation.
+
Exceptions:
+ + +
DOMException NOT_SUPPORTED_ERR: Raised if the source node is of type DOCUMENT, DOCUMENT_TYPE.
+NO_MODIFICATION_ALLOWED_ERR: Raised when the source node is readonly.
+
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMAttr* xercesc::DOMDocument::createAttribute const XMLCh *  name  )  [pure virtual]
+
+ + + + + +
+   + + +

+Creates an DOMAttr of the given name. +

+Note that the DOMAttr instance can then be set on an DOMElement using the setAttributeNode method.
+To create an attribute with a qualified name and namespace URI, use the createAttributeNS method.

Parameters:
+ + +
name The name of the attribute.
+
+
Returns:
A new DOMAttr object with the nodeName attribute set to name, and localName, prefix, and namespaceURI set to null. The value of the attribute is the empty string.
+
Exceptions:
+ + +
DOMException INVALID_CHARACTER_ERR: Raised if the specified name contains an illegal character.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual DOMAttr* xercesc::DOMDocument::createAttributeNS const XMLCh *  namespaceURI,
const XMLCh *  qualifiedName
[pure virtual]
+
+ + + + + +
+   + + +

+Creates an attribute of the given qualified name and namespace URI. +

+

Parameters:
+ + + +
namespaceURI The namespace URI of the attribute to create.
qualifiedName The qualified name of the attribute to instantiate.
+
+
Returns:
A new DOMAttr object with the following attributes: + + + + + + + + + + + + + + +
Attribute Value
DOMNode.nodeName qualifiedName
DOMNode.namespaceURI namespaceURI
DOMNode.prefix prefix, extracted from qualifiedName, or null if there is no prefix
DOMNode.localName local name, extracted from qualifiedName
DOMAttr.name qualifiedName
DOMNode.nodeValue the empty string
+
+
Exceptions:
+ + +
DOMException INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an illegal character, per the XML 1.0 specification .
+NAMESPACE_ERR: Raised if the qualifiedName is malformed per the Namespaces in XML specification, if the qualifiedName has a prefix and the namespaceURI is null, if the qualifiedName has a prefix that is "xml" and the namespaceURI is different from " http://www.w3.org/XML/1998/namespace", or if the qualifiedName, or its prefix, is "xmlns" and the namespaceURI is different from " http://www.w3.org/2000/xmlns/".
+NOT_SUPPORTED_ERR: Always thrown if the current document does not support the "XML" feature, since namespaces were defined by XML.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMCDATASection* xercesc::DOMDocument::createCDATASection const XMLCh *  data  )  [pure virtual]
+
+ + + + + +
+   + + +

+Creates a DOMCDATASection node whose value is the specified string. +

+

Parameters:
+ + +
data The data for the DOMCDATASection contents.
+
+
Returns:
The new DOMCDATASection object.
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMComment* xercesc::DOMDocument::createComment const XMLCh *  data  )  [pure virtual]
+
+ + + + + +
+   + + +

+Creates a DOMComment node given the specified string. +

+

Parameters:
+ + +
data The data for the node.
+
+
Returns:
The new DOMComment object.
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual DOMDocumentFragment* xercesc::DOMDocument::createDocumentFragment  )  [pure virtual]
+
+ + + + + +
+   + + +

+Creates an empty DOMDocumentFragment object. +

+

Returns:
A new DOMDocumentFragment.
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual DOMDocumentType* xercesc::DOMDocument::createDocumentType const XMLCh *  qName,
const XMLCh * ,
const XMLCh * 
[inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
virtual DOMDocumentType* xercesc::DOMDocument::createDocumentType const XMLCh *  name  )  [pure virtual]
+
+ + + + + +
+   + + +

+Non-standard extension. +

+Create a DOMDocumentType node.

Returns:
A DOMDocumentType that references the newly created DOMDocumentType node.
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMElement* xercesc::DOMDocument::createElement const XMLCh *  tagName  )  [pure virtual]
+
+ + + + + +
+   + + +

+Creates an element of the type specified. +

+Note that the instance returned implements the DOMElement interface, so attributes can be specified directly on the returned object.
+In addition, if there are known attributes with default values, DOMAttr nodes representing them are automatically created and attached to the element.
+To create an element with a qualified name and namespace URI, use the createElementNS method.

Parameters:
+ + +
tagName The name of the element type to instantiate. For XML, this is case-sensitive.
+
+
Returns:
A new DOMElement object with the nodeName attribute set to tagName, and localName, prefix, and namespaceURI set to null.
+
Exceptions:
+ + +
DOMException INVALID_CHARACTER_ERR: Raised if the specified name contains an illegal character.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual DOMElement* xercesc::DOMDocument::createElementNS const XMLCh *  namespaceURI,
const XMLCh *  qualifiedName,
const XMLSSize_t  lineNum,
const XMLSSize_t  columnNum
[pure virtual]
+
+ + + + + +
+   + + +

+Non-standard extension. +

+Creates an element of the given qualified name and namespace URI, and also stores line/column number info. Used by internally XSDXercesDOMParser during schema traversal.

+

See also:
createElementNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName)
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual DOMElement* xercesc::DOMDocument::createElementNS const XMLCh *  namespaceURI,
const XMLCh *  qualifiedName
[pure virtual]
+
+ + + + + +
+   + + +

+Creates an element of the given qualified name and namespace URI. +

+

Parameters:
+ + + +
namespaceURI The namespace URI of the element to create.
qualifiedName The qualified name of the element type to instantiate.
+
+
Returns:
A new DOMElement object with the following attributes: + + + + + + + + + + + + +
Attribute Value
DOMNode.nodeName qualifiedName
DOMNode.namespaceURI namespaceURI
DOMNode.prefix prefix, extracted from qualifiedName, or null if there is no prefix
DOMNode.localName local name, extracted from qualifiedName
DOMElement.tagName qualifiedName
+
+
Exceptions:
+ + +
DOMException INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an illegal character, per the XML 1.0 specification .
+NAMESPACE_ERR: Raised if the qualifiedName is malformed per the Namespaces in XML specification, if the qualifiedName has a prefix and the namespaceURI is null, or if the qualifiedName has a prefix that is "xml" and the namespaceURI is different from " http://www.w3.org/XML/1998/namespace" .
+NOT_SUPPORTED_ERR: Always thrown if the current document does not support the "XML" feature, since namespaces were defined by XML.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMEntity* xercesc::DOMDocument::createEntity const XMLCh *  name  )  [pure virtual]
+
+ + + + + +
+   + + +

+Non-standard extension. +

+Create a new entity.

Parameters:
+ + +
name The name of the entity to instantiate
+
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMEntityReference* xercesc::DOMDocument::createEntityReference const XMLCh *  name  )  [pure virtual]
+
+ + + + + +
+   + + +

+Creates an DOMEntityReference object. +

+In addition, if the referenced entity is known, the child list of the DOMEntityReference node is made the same as that of the corresponding DOMEntity node.If any descendant of the DOMEntity node has an unbound namespace prefix, the corresponding descendant of the created DOMEntityReference node is also unbound; (its namespaceURI is null). The DOM Level 2 does not support any mechanism to resolve namespace prefixes.

Parameters:
+ + +
name The name of the entity to reference.
+
+
Returns:
The new DOMEntityReference object.
+
Exceptions:
+ + +
DOMException INVALID_CHARACTER_ERR: Raised if the specified name contains an illegal character.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMNotation* xercesc::DOMDocument::createNotation const XMLCh *  name  )  [pure virtual]
+
+ + + + + +
+   + + +

+Non-standard extension. +

+Create a Notation.

Parameters:
+ + +
name The name of the notation to instantiate
+
+
Returns:
A DOMNotation that references the newly created DOMNotation node.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual DOMProcessingInstruction* xercesc::DOMDocument::createProcessingInstruction const XMLCh *  target,
const XMLCh *  data
[pure virtual]
+
+ + + + + +
+   + + +

+Creates a DOMProcessingInstruction node given the specified name and data strings. +

+

Parameters:
+ + + +
target The target part of the processing instruction.
data The data for the node.
+
+
Returns:
The new DOMProcessingInstruction object.
+
Exceptions:
+ + +
DOMException INVALID_CHARACTER_ERR: Raised if the specified target contains an illegal character.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMText* xercesc::DOMDocument::createTextNode const XMLCh *  data  )  [pure virtual]
+
+ + + + + +
+   + + +

+Creates a DOMText node given the specified string. +

+

Parameters:
+ + +
data The data for the node.
+
+
Returns:
The new DOMText object.
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMDocument::getActualEncoding  )  const [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying the actual encoding of this document. +

+This is null otherwise.
+ This attribute represents the property [character encoding scheme] defined in.

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual DOMDocumentType* xercesc::DOMDocument::getDoctype  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The Document Type Declaration (see DOMDocumentType) associated with this document. +

+For XML documents without a document type declaration this returns null. The DOM Level 2 does not support editing the Document Type Declaration. docType cannot be altered in any way, including through the use of methods inherited from the DOMNode interface, such as insertNode or removeNode.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual DOMElement* xercesc::DOMDocument::getDocumentElement  )  const [pure virtual]
+
+ + + + + +
+   + + +

+This is a convenience attribute that allows direct access to the child node that is the root element of the document. +

+

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMDocument::getDocumentURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The location of the document or null if undefined. +

+
+Beware that when the DOMDocument supports the feature "HTML" , the href attribute of the HTML BASE element takes precedence over this attribute.

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual DOMConfiguration* xercesc::DOMDocument::getDOMConfiguration  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The configuration used when Document.normalizeDocument is invoked. +

+

Returns:
The DOMConfiguration from this DOMDocument
+Note that this is a partial implementation. Not all the required features are implemented and this is only used by normalizeDocument. Currently DOMAttr and DOMText nodes are normalized. Features to remove DOMComment and DOMCDATASection work. The feature to normalize namespaces is implemented. This feature is called "namespaces" and is incorectly documented in the current WD.

+"Experimental - subject to change"

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMElement* xercesc::DOMDocument::getElementById const XMLCh *  elementId  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns the DOMElement 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. 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.

Parameters:
+ + +
elementId The unique id value for an element.
+
+
Returns:
The matching element.
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMNodeList* xercesc::DOMDocument::getElementsByTagName const XMLCh *  tagname  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a DOMNodeList of all the DOMElement(s) with a given tag name in the order in which they are encountered in a preorder traversal of the DOMDocument tree. +

+The returned node list is "live", in that changes to the document tree made after a nodelist was initially returned will be immediately reflected in the node list.

Parameters:
+ + +
tagname The name of the tag to match on. The special value "*" matches all tags.
+
+
Returns:
A new DOMNodeList object containing all the matched DOMElement(s).
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual DOMNodeList* xercesc::DOMDocument::getElementsByTagNameNS const XMLCh *  namespaceURI,
const XMLCh *  localName
const [pure virtual]
+
+ + + + + +
+   + + +

+Returns a DOMNodeList of all the DOMElement(s) with a given local name and namespace URI in the order in which they are encountered in a preorder traversal of the DOMDocument tree. +

+

Parameters:
+ + + +
namespaceURI The namespace URI of the elements to match on. The special value "*" matches all namespaces.
localName The local name of the elements to match on. The special value "*" matches all local names.
+
+
Returns:
A new DOMNodeList object containing all the matched DOMElement(s).
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMDocument::getEncoding  )  const [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying, as part of the XML declaration, the encoding of this document. +

+This is null when unspecified.

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual DOMImplementation* xercesc::DOMDocument::getImplementation  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The DOMImplementation object that handles this document. +

+A DOM application may use objects from multiple implementations.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual bool xercesc::DOMDocument::getStandalone  )  const [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying, as part of the XML declaration, whether this document is standalone. +

+
+ This attribute represents the property [standalone] defined in .

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual bool xercesc::DOMDocument::getStrictErrorChecking  )  const [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying whether errors checking is enforced or not. +

+When set to false, the implementation is free to not test every possible error case normally defined on DOM operations, and not raise any DOMException. In case of error, the behavior is undefined. This attribute is true by defaults.

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMDocument::getVersion  )  const [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying, as part of the XML declaration, the version number of this document. +

+This is null when unspecified.
+ This attribute represents the property [version] defined in .

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual DOMNode* xercesc::DOMDocument::importNode DOMNode importedNode,
bool  deep
[pure virtual]
+
+ + + + + +
+   + + +

+Imports a node from another document to this document. +

+The returned node has no parent; (parentNode is null). The source node is not altered or removed from the original document; this method creates a new copy of the source node.
+For all nodes, importing a node creates a node object owned by the importing document, with attribute values identical to the source node's nodeName and nodeType, plus the attributes related to namespaces (prefix, localName, and namespaceURI). As in the cloneNode operation on a DOMNode, the source node is not altered.
+Additional information is copied as appropriate to the nodeType, attempting to mirror the behavior expected if a fragment of XML source was copied from one document to another, recognizing that the two documents may have different DTDs in the XML case. The following list describes the specifics for each type of node.

+
ATTRIBUTE_NODE
+
The ownerElement attribute is set to null and the specified flag is set to true on the generated DOMAttr. The descendants of the source DOMAttr are recursively imported and the resulting nodes reassembled to form the corresponding subtree. Note that the deep parameter has no effect on DOMAttr nodes; they always carry their children with them when imported.
+
DOCUMENT_FRAGMENT_NODE
+
If the deep option was set to true, the descendants of the source element are recursively imported and the resulting nodes reassembled to form the corresponding subtree. Otherwise, this simply generates an empty DOMDocumentFragment.
+
DOCUMENT_NODE
+
DOMDocument nodes cannot be imported.
+
DOCUMENT_TYPE_NODE
+
DOMDocumentType nodes cannot be imported.
+
ELEMENT_NODE
+
Specified attribute nodes of the source element are imported, and the generated DOMAttr nodes are attached to the generated DOMElement. Default attributes are not copied, though if the document being imported into defines default attributes for this element name, those are assigned. If the importNode deep parameter was set to true, the descendants of the source element are recursively imported and the resulting nodes reassembled to form the corresponding subtree.
+
ENTITY_NODE
+
DOMEntity nodes can be imported, however in the current release of the DOM the DOMDocumentType is readonly. Ability to add these imported nodes to a DOMDocumentType will be considered for addition to a future release of the DOM.On import, the publicId, systemId, and notationName attributes are copied. If a deep import is requested, the descendants of the the source DOMEntity are recursively imported and the resulting nodes reassembled to form the corresponding subtree.
+
ENTITY_REFERENCE_NODE
+
Only the DOMEntityReference itself is copied, even if a deep import is requested, since the source and destination documents might have defined the entity differently. If the document being imported into provides a definition for this entity name, its value is assigned.
+
NOTATION_NODE
+
DOMNotation nodes can be imported, however in the current release of the DOM the DOMDocumentType is readonly. Ability to add these imported nodes to a DOMDocumentType will be considered for addition to a future release of the DOM.On import, the publicId and systemId attributes are copied. Note that the deep parameter has no effect on DOMNotation nodes since they never have any children.
+
PROCESSING_INSTRUCTION_NODE
+
The imported node copies its target and data values from those of the source node.
+
TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE
+
These three types of nodes inheriting from DOMCharacterData copy their data and length attributes from those of the source node.
+
+
Parameters:
+ + + +
importedNode The node to import.
deep If true, recursively import the subtree under the specified node; if false, import only the node itself, as explained above. This has no effect on DOMAttr , DOMEntityReference, and DOMNotation nodes.
+
+
Returns:
The imported node that belongs to this DOMDocument.
+
Exceptions:
+ + +
DOMException NOT_SUPPORTED_ERR: Raised if the type of node being imported is not supported.
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual void xercesc::DOMDocument::normalizeDocument  )  [pure virtual]
+
+ + + + + +
+   + + +

+This method acts as if the document was going through a save and load cycle, putting the document in a "normal" form. +

+The actual result depends on the features being set. See DOMConfiguration for details.

+"Experimental - subject to change"

+
+Noticeably this method normalizes DOMText nodes, makes the document "namespace wellformed", according to the algorithm described below in pseudo code, by adding missing namespace declaration attributes and adding or changing namespace prefixes, updates the replacement tree of DOMEntityReference nodes, normalizes attribute values, etc.
+Mutation events, when supported, are generated to reflect the changes occuring on the document. Note that this is a partial implementation. Not all the required features are implemented. Currently DOMAttr and DOMText nodes are normalized. Features to remove DOMComment and DOMCDATASection work. The feature to normalize namespaces is implemented. This feature is called "namespaces" and is incorectly documented in the current WD.

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual DOMNode* xercesc::DOMDocument::renameNode DOMNode n,
const XMLCh *  namespaceURI,
const XMLCh *  name
[pure virtual]
+
+ + + + + +
+   + + +

+Rename an existing node. +

+When possible this simply changes the name of the given node, otherwise this creates a new node with the specified name and replaces the existing node with the new node as described below. This only applies to nodes of type ELEMENT_NODE and ATTRIBUTE_NODE.
+When a new node is created, the following operations are performed: the new node is created, any registered event listener is registered on the new node, any user data attached to the old node is removed from that node, the old node is removed from its parent if it has one, the children are moved to the new node, if the renamed node is an DOMElement its attributes are moved to the new node, the new node is inserted at the position the old node used to have in its parent's child nodes list if it has one, the user data that was attached to the old node is attach to the new node, the user data event NODE_RENAMED is fired.
+When the node being renamed is an DOMAttr that is attached to an DOMElement, the node is first removed from the DOMElement attributes map. Then, once renamed, either by modifying the existing node or creating a new one as described above, it is put back.

+"Experimental - subject to change"

+

Parameters:
+ + + + +
n The node to rename.
namespaceURI The new namespaceURI.
name The new qualified name.
+
+
Returns:
The renamed node. This is either the specified node or the new node that was created to replace the specified node.
+
Exceptions:
+ + +
DOMException NOT_SUPPORTED_ERR: Raised when the type of the specified node is neither ELEMENT_NODE nor ATTRIBUTE_NODE.
+WRONG_DOCUMENT_ERR: Raised when the specified node was created from a different document than this document.
+NAMESPACE_ERR: Raised if the qualifiedName is malformed per the Namespaces in XML specification, if the qualifiedName has a prefix and the namespaceURI is null, or if the qualifiedName has a prefix that is "xml" and the namespaceURI is different from " http://www.w3.org/XML/1998/namespace" . Also raised, when the node being renamed is an attribute, if the qualifiedName, or its prefix, is "xmlns" and the namespaceURI is different from "http://www.w3.org/2000/xmlns/".
+
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMDocument::setActualEncoding const XMLCh *  actualEncoding  )  [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying the actual encoding of this document. +

+This is null otherwise.
+ This attribute represents the property [character encoding scheme] defined in .

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMDocument::setDocumentURI const XMLCh *  documentURI  )  [pure virtual]
+
+ + + + + +
+   + + +

+The location of the document or null if undefined. +

+
+Beware that when the DOMDocument supports the feature "HTML" , the href attribute of the HTML BASE element takes precedence over this attribute.

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMDocument::setEncoding const XMLCh *  encoding  )  [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying, as part of the XML declaration, the encoding of this document. +

+This is null when unspecified.

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMDocument::setStandalone bool  standalone  )  [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying, as part of the XML declaration, whether this document is standalone. +

+
+ This attribute represents the property [standalone] defined in .

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMDocument::setStrictErrorChecking bool  strictErrorChecking  )  [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying whether errors checking is enforced or not. +

+When set to false, the implementation is free to not test every possible error case normally defined on DOM operations, and not raise any DOMException. In case of error, the behavior is undefined. This attribute is true by defaults.

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMDocument::setVersion const XMLCh *  version  )  [pure virtual]
+
+ + + + + +
+   + + +

+An attribute specifying, as part of the XML declaration, the version number of this document. +

+This is null when unspecified.
+ This attribute represents the property [version] defined in .

+"Experimental - subject to change"

+

Since:
DOM Level 3
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1DOMDocument__inherit__graph.map b/docs/simple-api/classxercesc_1_1DOMDocument__inherit__graph.map new file mode 100644 index 00000000..99c58d09 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1DOMDocument__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMNode.html 22,9 161,33 diff --git a/docs/simple-api/classxercesc_1_1DOMDocument__inherit__graph.md5 b/docs/simple-api/classxercesc_1_1DOMDocument__inherit__graph.md5 new file mode 100644 index 00000000..2abd9f65 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1DOMDocument__inherit__graph.md5 @@ -0,0 +1 @@ +2c142278613483e48a238e94a5b7ad07 \ No newline at end of file diff --git a/docs/simple-api/classxercesc_1_1DOMDocument__inherit__graph.png b/docs/simple-api/classxercesc_1_1DOMDocument__inherit__graph.png new file mode 100644 index 00000000..a5414576 Binary files /dev/null and b/docs/simple-api/classxercesc_1_1DOMDocument__inherit__graph.png differ diff --git a/docs/simple-api/classxercesc_1_1DOMNode-members.html b/docs/simple-api/classxercesc_1_1DOMNode-members.html new file mode 100644 index 00000000..9df338f8 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1DOMNode-members.html @@ -0,0 +1,89 @@ + + +XQilla Simple API: Member List + + + + + + +

xercesc::DOMNode Member List

This is the complete list of members for xercesc::DOMNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
appendChild(DOMNode *newChild)=0xercesc::DOMNode [pure virtual]
ATTRIBUTE_NODE enum valuexercesc::DOMNode
CDATA_SECTION_NODE enum valuexercesc::DOMNode
cloneNode(bool deep) const =0xercesc::DOMNode [pure virtual]
COMMENT_NODE enum valuexercesc::DOMNode
compareTreePosition(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
DOCUMENT_FRAGMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_NODE enum valuexercesc::DOMNode
DOCUMENT_TYPE_NODE enum valuexercesc::DOMNode
DOMNode()xercesc::DOMNode [inline, protected]
DOMNode(const DOMNode &)xercesc::DOMNode [inline, protected]
DOMTreePosition enum namexercesc::DOMNode
ELEMENT_NODE enum valuexercesc::DOMNode
ENTITY_NODE enum valuexercesc::DOMNode
ENTITY_REFERENCE_NODE enum valuexercesc::DOMNode
getAttributes() const =0xercesc::DOMNode [pure virtual]
getBaseURI() const =0xercesc::DOMNode [pure virtual]
getChildNodes() const =0xercesc::DOMNode [pure virtual]
getFirstChild() const =0xercesc::DOMNode [pure virtual]
getInterface(const XMLCh *feature)=0xercesc::DOMNode [pure virtual]
getLastChild() const =0xercesc::DOMNode [pure virtual]
getLocalName() const =0xercesc::DOMNode [pure virtual]
getNamespaceURI() const =0xercesc::DOMNode [pure virtual]
getNextSibling() const =0xercesc::DOMNode [pure virtual]
getNodeName() const =0xercesc::DOMNode [pure virtual]
getNodeType() const =0xercesc::DOMNode [pure virtual]
getNodeValue() const =0xercesc::DOMNode [pure virtual]
getOwnerDocument() const =0xercesc::DOMNode [pure virtual]
getParentNode() const =0xercesc::DOMNode [pure virtual]
getPrefix() const =0xercesc::DOMNode [pure virtual]
getPreviousSibling() const =0xercesc::DOMNode [pure virtual]
getTextContent() const =0xercesc::DOMNode [pure virtual]
getUserData(const XMLCh *key) const =0xercesc::DOMNode [pure virtual]
hasAttributes() const =0xercesc::DOMNode [pure virtual]
hasChildNodes() const =0xercesc::DOMNode [pure virtual]
insertBefore(DOMNode *newChild, DOMNode *refChild)=0xercesc::DOMNode [pure virtual]
isDefaultNamespace(const XMLCh *namespaceURI) const =0xercesc::DOMNode [pure virtual]
isEqualNode(const DOMNode *arg) const =0xercesc::DOMNode [pure virtual]
isSameNode(const DOMNode *other) const =0xercesc::DOMNode [pure virtual]
isSupported(const XMLCh *feature, const XMLCh *version) const =0xercesc::DOMNode [pure virtual]
lookupNamespacePrefix(const XMLCh *namespaceURI, bool useDefault) const =0xercesc::DOMNode [pure virtual]
lookupNamespaceURI(const XMLCh *prefix) const =0xercesc::DOMNode [pure virtual]
NodeType enum namexercesc::DOMNode
normalize()=0xercesc::DOMNode [pure virtual]
NOTATION_NODE enum valuexercesc::DOMNode
PROCESSING_INSTRUCTION_NODE enum valuexercesc::DOMNode
release()=0xercesc::DOMNode [pure virtual]
removeChild(DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
replaceChild(DOMNode *newChild, DOMNode *oldChild)=0xercesc::DOMNode [pure virtual]
setNodeValue(const XMLCh *nodeValue)=0xercesc::DOMNode [pure virtual]
setPrefix(const XMLCh *prefix)=0xercesc::DOMNode [pure virtual]
setTextContent(const XMLCh *textContent)=0xercesc::DOMNode [pure virtual]
setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0xercesc::DOMNode [pure virtual]
TEXT_NODE enum valuexercesc::DOMNode
TREE_POSITION_ANCESTOR enum valuexercesc::DOMNode
TREE_POSITION_DESCENDANT enum valuexercesc::DOMNode
TREE_POSITION_DISCONNECTED enum valuexercesc::DOMNode
TREE_POSITION_EQUIVALENT enum valuexercesc::DOMNode
TREE_POSITION_FOLLOWING enum valuexercesc::DOMNode
TREE_POSITION_PRECEDING enum valuexercesc::DOMNode
TREE_POSITION_SAME_NODE enum valuexercesc::DOMNode
~DOMNode()xercesc::DOMNode [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1DOMNode.html b/docs/simple-api/classxercesc_1_1DOMNode.html new file mode 100644 index 00000000..3fe559a2 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1DOMNode.html @@ -0,0 +1,1862 @@ + + +XQilla Simple API: xercesc::DOMNode Class Reference + + + + + + + +

xercesc::DOMNode Class Reference

The DOMNode interface is the primary datatype for the entire Document Object Model. +More... +

+#include <DOMNode.hpp> +

+Inheritance diagram for xercesc::DOMNode:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Types

Public Contants
enum  NodeType {
+  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 +
+ }
 NodeType. More...
enum  DOMTreePosition {
+  TREE_POSITION_PRECEDING = 0x01, +TREE_POSITION_FOLLOWING = 0x02, +TREE_POSITION_ANCESTOR = 0x04, +TREE_POSITION_DESCENDANT = 0x08, +
+  TREE_POSITION_EQUIVALENT = 0x10, +TREE_POSITION_SAME_NODE = 0x20, +TREE_POSITION_DISCONNECTED = 0x00 +
+ }
 TreePosition:. More...

Public Member Functions

Destructor
virtual ~DOMNode ()
 Destructor.
Functions introduced in DOM Level 1
virtual const XMLCh * getNodeName () const =0
 The name of this node, depending on its type; see the table above.
virtual const XMLCh * getNodeValue () const =0
 Gets the value of this node, depending on its type.
virtual short getNodeType () const =0
 An enum value representing the type of the underlying object.
virtual DOMNodegetParentNode () const =0
 Gets the parent of this node.
virtual DOMNodeList * getChildNodes () const =0
 Gets a DOMNodeList that contains all children of this node.
virtual DOMNodegetFirstChild () const =0
 Gets the first child of this node.
virtual DOMNodegetLastChild () const =0
 Gets the last child of this node.
virtual DOMNodegetPreviousSibling () const =0
 Gets the node immediately preceding this node.
virtual DOMNodegetNextSibling () const =0
 Gets the node immediately following this node.
virtual DOMNamedNodeMap * getAttributes () const =0
 Gets a DOMNamedNodeMap containing the attributes of this node (if it is an DOMElement) or null otherwise.
virtual DOMDocumentgetOwnerDocument () const =0
 Gets the DOMDocument object associated with this node.
virtual DOMNodecloneNode (bool deep) const =0
 Returns a duplicate of this node.
virtual DOMNodeinsertBefore (DOMNode *newChild, DOMNode *refChild)=0
 Inserts the node newChild before the existing child node refChild.
virtual DOMNodereplaceChild (DOMNode *newChild, DOMNode *oldChild)=0
 Replaces the child node oldChild with newChild in the list of children, and returns the oldChild node.
virtual DOMNoderemoveChild (DOMNode *oldChild)=0
 Removes the child node indicated by oldChild from the list of children, and returns it.
virtual DOMNodeappendChild (DOMNode *newChild)=0
 Adds the node newChild to the end of the list of children of this node.
virtual bool hasChildNodes () const =0
 This is a convenience method to allow easy determination of whether a node has any children.
virtual void setNodeValue (const XMLCh *nodeValue)=0
 Sets the value of the node.
Functions introduced in DOM Level 2.
virtual void normalize ()=0
 Puts all DOMText nodes in the full depth of the sub-tree underneath this DOMNode, including attribute nodes, into a "normal" form where only markup (e.g., tags, comments, processing instructions, CDATA sections, and entity references) separates DOMText nodes, i.e., there are neither adjacent DOMText nodes nor empty DOMText nodes.
virtual bool isSupported (const XMLCh *feature, const XMLCh *version) const =0
 Tests whether the DOM implementation implements a specific feature and that feature is supported by this node.
virtual const XMLCh * getNamespaceURI () const =0
 Get the namespace URI of this node, or null if it is unspecified.
virtual const XMLCh * getPrefix () const =0
 Get the namespace prefix of this node, or null if it is unspecified.
virtual const XMLCh * getLocalName () const =0
 Returns the local part of the qualified name of this node.
virtual void setPrefix (const XMLCh *prefix)=0
 Set the namespace prefix of this node.
virtual bool hasAttributes () const =0
 Returns whether this node (if it is an element) has any attributes.
Functions introduced in DOM Level 3.
virtual bool isSameNode (const DOMNode *other) const =0
 Returns whether this node is the same node as the given one.
virtual bool isEqualNode (const DOMNode *arg) const =0
 Tests whether two nodes are equal.
virtual void * setUserData (const XMLCh *key, void *data, DOMUserDataHandler *handler)=0
 Associate an object to a key on this node.
virtual void * getUserData (const XMLCh *key) const =0
 Retrieves the object associated to a key on a this node.
virtual const XMLCh * getBaseURI () const =0
 The absolute base URI of this node or null if undefined.
virtual short compareTreePosition (const DOMNode *other) const =0
 Compares a node with this node with regard to their position in the tree and according to the document order.
virtual const XMLCh * getTextContent () const =0
 This attribute returns the text content of this node and its descendants.
virtual void setTextContent (const XMLCh *textContent)=0
 This attribute removes any possible children this node may have and, if the new string is not empty or null, replaced by a single DOMText node containing the string this attribute is set to.
virtual const XMLCh * lookupNamespacePrefix (const XMLCh *namespaceURI, bool useDefault) const =0
 Look up the prefix associated to the given namespace URI, starting from this node.
virtual bool isDefaultNamespace (const XMLCh *namespaceURI) const =0
 This method checks if the specified namespaceURI is the default namespace or not.
virtual const XMLCh * lookupNamespaceURI (const XMLCh *prefix) const =0
 Look up the namespace URI associated to the given prefix, starting from this node.
virtual DOMNodegetInterface (const XMLCh *feature)=0
 This method makes available a DOMNode's specialized interface.
Non-standard Extension
virtual void release ()=0
 Called to indicate that this Node (and its associated children) is no longer in use and that the implementation may relinquish any resources associated with it and its associated children.

Protected Member Functions

Hidden constructors
 DOMNode ()
 DOMNode (const DOMNode &)
+

Detailed Description

+The DOMNode interface is the primary datatype for the entire Document Object Model. +

+It represents a single node in the document tree. While all objects implementing the DOMNode interface expose methods for dealing with children, not all objects implementing the DOMNode interface may have children. For example, DOMText nodes may not have children, and adding children to such nodes results in a DOMException being raised.

+The attributes nodeName, nodeValue and attributes are included as a mechanism to get at node information without casting down to the specific derived interface. In cases where there is no obvious mapping of these attributes for a specific nodeType (e.g., nodeValue for an DOMElement or attributes for a DOMComment ), this returns null. Note that the specialized interfaces may contain additional and more convenient mechanisms to get and set the relevant information.

+The values of nodeName, nodeValue, and attributes vary according to the node type as follows: + + + + + + + + + + + + + + + + + + + + + + + + + + +
Interface nodeName nodeValue attributes
DOMAttr name of attribute value of attribute null
DOMCDATASection "cdata-section" content of the CDATA Section null
DOMComment "comment" content of the comment null
DOMDocument "document" null null
DOMDocumentFragment "document-fragment" null null
DOMDocumentType document type name null null
DOMElement tag name null NamedNodeMap
DOMEntity entity name null null
DOMEntityReference name of entity referenced null null
DOMNotation notation name null null
DOMProcessingInstruction target entire content excluding the target null
DOMText "text" content of the text node null
+

+See also the Document Object Model (DOM) Level 2 Core Specification.

+

Since:
DOM Level 1
+ +

+


Member Enumeration Documentation

+

+ + + + +
+ + + + +
enum xercesc::DOMNode::DOMTreePosition
+
+ + + + + +
+   + + +

+TreePosition:. +

+"Experimental - subject to change"

+TREE_POSITION_PRECEDING: The node precedes the reference node.

+TREE_POSITION_FOLLOWING: The node follows the reference node.

+TREE_POSITION_ANCESTOR: The node is an ancestor of the reference node.

+TREE_POSITION_DESCENDANT: The node is a descendant of the reference node.

+TREE_POSITION_EQUIVALENT: The two nodes have an equivalent position. This is the case of two attributes that have the same ownerElement, and two nodes that are the same.

+TREE_POSITION_SAME_NODE: The two nodes are the same. Two nodes that are the same have an equivalent position, though the reverse may not be true.

+TREE_POSITION_DISCONNECTED: The two nodes are disconnected, they do not have any common ancestor. This is the case of two nodes that are not in the same document.

+

Since:
DOM Level 3
+
Enumerator:
+ + + + + + + + +
TREE_POSITION_PRECEDING  +
TREE_POSITION_FOLLOWING  +
TREE_POSITION_ANCESTOR  +
TREE_POSITION_DESCENDANT  +
TREE_POSITION_EQUIVALENT  +
TREE_POSITION_SAME_NODE  +
TREE_POSITION_DISCONNECTED  +
+
+
+

+ + + + +
+ + + + +
enum xercesc::DOMNode::NodeType
+
+ + + + + +
+   + + +

+NodeType. +

+

Since:
DOM Level 1
+
Enumerator:
+ + + + + + + + + + + + + +
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  +
+
+
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMNode::DOMNode  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + + +
xercesc::DOMNode::DOMNode const DOMNode  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMNode::~DOMNode  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual DOMNode* xercesc::DOMNode::appendChild DOMNode newChild  )  [pure virtual]
+
+ + + + + +
+   + + +

+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.

Parameters:
+ + +
newChild The node to add.If it is a DOMDocumentFragment object, the entire contents of the document fragment are moved into the child list of this node
+
+
Returns:
The node added.
+
Exceptions:
+ + +
DOMException HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not allow children of the type of the newChild node, or if the node to append is one of this node's ancestors.
+WRONG_DOCUMENT_ERR: Raised if newChild was created from a different document than the one that created this node.
+NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the node being appended is readonly.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMNode* xercesc::DOMNode::cloneNode bool  deep  )  const [pure virtual]
+
+ + + + + +
+   + + +

+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 DOMElement 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 DOMText node. Cloning any other type of node simply returns a copy of this node.

Parameters:
+ + +
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 DOMElement).
+
+
Returns:
The duplicate node.
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual short xercesc::DOMNode::compareTreePosition const DOMNode other  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Compares a node with this node with regard to their position in the tree and according to the document order. +

+This order can be extended by module that define additional types of nodes.

+"Experimental - subject to change"

+

Parameters:
+ + +
other The node to compare against this node.
+
+
Returns:
Returns how the given node is positioned relatively to this node.
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNamedNodeMap* xercesc::DOMNode::getAttributes  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Gets a DOMNamedNodeMap containing the attributes of this node (if it is an DOMElement) or null otherwise. +

+

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMNode::getBaseURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The absolute base URI of this node or null if undefined. +

+This value is computed according to . However, when the DOMDocument supports the feature "HTML" , the base URI is computed using first the value of the href attribute of the HTML BASE element if any, and the value of the documentURI attribute from the DOMDocument interface otherwise.

+"Experimental - subject to change"

+
+ When the node is an DOMElement, a DOMDocument or a a DOMProcessingInstruction, this attribute represents the properties [base URI] defined in . When the node is a DOMNotation, an DOMEntity, or an DOMEntityReference, this attribute represents the properties [declaration base URI].

Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNodeList* xercesc::DOMNode::getChildNodes  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Gets a DOMNodeList that contains all children of this node. +

+If there are no children, this is a DOMNodeList containing no nodes. The content of the returned DOMNodeList 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 DOMNodeList accessors; it is not a static snapshot of the content of the node. This is true for every DOMNodeList, including the ones returned by the getElementsByTagName method.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMNode::getFirstChild  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Gets the first child of this node. +

+If there is no such node, this returns null.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMNode* xercesc::DOMNode::getInterface const XMLCh *  feature  )  [pure virtual]
+
+ + + + + +
+   + + +

+This method makes available a DOMNode's specialized interface. +

+"Experimental - subject to change"

+

Parameters:
+ + +
feature The name of the feature requested (case-insensitive).
+
+
Returns:
Returns an alternate DOMNode which implements the specialized APIs of the specified feature, if any, or null if there is no alternate DOMNode which implements interfaces associated with that feature. Any alternate DOMNode returned by this method must delegate to the primary core DOMNode and not return results inconsistent with the primary core DOMNode such as key, attributes, childNodes, etc.
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMNode::getLastChild  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Gets the last child of this node. +

+If there is no such node, this returns null.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMNode::getLocalName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+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 DOMDocument interface, it is null.

+

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMNode::getNamespaceURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+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 DOMDocument interface, this is always null.

+

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMNode::getNextSibling  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Gets the node immediately following this node. +

+If there is no such node, this returns null.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMNode::getNodeName  )  const [pure virtual]
+
+ + + + + +
+   + + +

+The name of this node, depending on its type; see the table above. +

+

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual short xercesc::DOMNode::getNodeType  )  const [pure virtual]
+
+ + + + + +
+   + + +

+An enum value representing the type of the underlying object. +

+

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMNode::getNodeValue  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Gets the value of this node, depending on its type. +

+

Exceptions:
+ + +
DOMException NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual DOMDocument* xercesc::DOMNode::getOwnerDocument  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Gets the DOMDocument object associated with this node. +

+This is also the DOMDocument object used to create new nodes. When this node is a DOMDocument or a DOMDocumentType which is not used with any DOMDocument yet, this is null.

+

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMNode::getParentNode  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Gets the parent of this node. +

+All nodes, except DOMDocument, DOMDocumentFragment, and DOMAttr 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 DOMNode is returned.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMNode::getPrefix  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Get the namespace prefix of this node, or null if it is unspecified. +

+

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual DOMNode* xercesc::DOMNode::getPreviousSibling  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Gets the node immediately preceding this node. +

+If there is no such node, this returns null.

Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + +
virtual const XMLCh* xercesc::DOMNode::getTextContent  )  const [pure virtual]
+
+ + + + + +
+   + + +

+This attribute returns the text content of this node and its descendants. +

+No serialization is performed, the returned string does not contain any markup. No whitespace normalization is performed and the returned string does not contain the white spaces in element content.

+"Experimental - subject to change"

+
+The string returned is made of the text content of this node depending on its type, as defined below: + + + + + + + + +
Node type Content
ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, DOCUMENT_FRAGMENT_NODE concatenation of the textContent attribute value of every child node, excluding COMMENT_NODE and PROCESSING_INSTRUCTION_NODE nodes
ATTRIBUTE_NODE, TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE, PROCESSING_INSTRUCTION_NODE nodeValue
DOCUMENT_NODE, DOCUMENT_TYPE_NODE, NOTATION_NODE null
+

Exceptions:
+ + +
DOMException DOMSTRING_SIZE_ERR: Raised when it would return more characters than fit in a DOMString variable on the implementation platform.
+
+
See also:
setTextContext
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual void* xercesc::DOMNode::getUserData const XMLCh *  key  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Retrieves the object associated to a key on a this node. +

+The object must first have been set to this node by calling setUserData with the same key.

+"Experimental - subject to change"

+

Parameters:
+ + +
key The key the object is associated to.
+
+
Returns:
Returns the void* associated to the given key on this node, or null if there was none.
+
See also:
setUserData
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual bool xercesc::DOMNode::hasAttributes  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns whether this node (if it is an element) has any attributes. +

+

Returns:
true if this node has any attributes, false otherwise.
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual bool xercesc::DOMNode::hasChildNodes  )  const [pure virtual]
+
+ + + + + +
+   + + +

+This is a convenience method to allow easy determination of whether a node has any children. +

+

Returns:
true if the node has any children, false if the node has no children.
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual DOMNode* xercesc::DOMNode::insertBefore DOMNode newChild,
DOMNode refChild
[pure virtual]
+
+ + + + + +
+   + + +

+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 DOMDocumentFragment 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 DOMNode that has never been assigned to refer to an actual node is == null.

Parameters:
+ + + +
newChild The node to insert.
refChild The reference node, i.e., the node before which the new node must be inserted.
+
+
Returns:
The node being inserted.
+
Exceptions:
+ + +
DOMException HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not allow children of the type of the newChild node, or if the node to insert is one of this node's ancestors.
+WRONG_DOCUMENT_ERR: Raised if newChild was created from a different document than the one that created this node.
+NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the node being inserted is readonly.
+NOT_FOUND_ERR: Raised if refChild is not a child of this node.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual bool xercesc::DOMNode::isDefaultNamespace const XMLCh *  namespaceURI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+This method checks if the specified namespaceURI is the default namespace or not. +

+"Experimental - subject to change"

+

Parameters:
+ + +
namespaceURI The namespace URI to look for.
+
+
Returns:
true if the specified namespaceURI is the default namespace, false otherwise.
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual bool xercesc::DOMNode::isEqualNode const DOMNode arg  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Tests whether two nodes are equal. +

+
+This method tests for equality of nodes, not sameness (i.e., whether the two nodes are pointers to the same object) which can be tested with DOMNode::isSameNode. All nodes that are the same will also be equal, though the reverse may not be true.
+Two nodes are equal if and only if the following conditions are satisfied: The two nodes are of the same type.The following string attributes are equal: nodeName, localName, namespaceURI, prefix, nodeValue , baseURI. This is: they are both null, or they have the same length and are character for character identical. The attributes DOMNamedNodeMaps are equal. This is: they are both null, or they have the same length and for each node that exists in one map there is a node that exists in the other map and is equal, although not necessarily at the same index.The childNodes DOMNodeLists are equal. This is: they are both null, or they have the same length and contain equal nodes at the same index. This is true for DOMAttr nodes as for any other type of node. Note that normalization can affect equality; to avoid this, nodes should be normalized before being compared.
+For two DOMDocumentType nodes to be equal, the following conditions must also be satisfied: The following string attributes are equal: publicId, systemId, internalSubset.The entities DOMNamedNodeMaps are equal.The notations DOMNamedNodeMaps are equal.
+On the other hand, the following do not affect equality: the ownerDocument attribute, the specified attribute for DOMAttr nodes, the isWhitespaceInElementContent attribute for DOMText nodes, as well as any user data or event listeners registered on the nodes.

+"Experimental - subject to change"

+

Parameters:
+ + +
arg The node to compare equality with.
+
+
Returns:
If the nodes, and possibly subtrees are equal, true otherwise false.
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual bool xercesc::DOMNode::isSameNode const DOMNode other  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Returns whether this node is the same node as the given one. +

+
+This method provides a way to determine whether two DOMNode references returned by the implementation reference the same object. When two DOMNode references are references to the same object, even if through a proxy, the references may be used completely interchangeably, such that all attributes have the same values and calling the same DOM method on either reference always has exactly the same effect.

+"Experimental - subject to change"

+

Parameters:
+ + +
other The node to test against.
+
+
Returns:
Returns true if the nodes are the same, false otherwise.
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool xercesc::DOMNode::isSupported const XMLCh *  feature,
const XMLCh *  version
const [pure virtual]
+
+ + + + + +
+   + + +

+Tests whether the DOM implementation implements a specific feature and that feature is supported by this node. +

+

Parameters:
+ + + +
feature The string of the feature to test. This is the same name as what can be passed to the method hasFeature on DOMImplementation.
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.
+
+
Returns:
Returns true if the specified feature is supported on this node, false otherwise.
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual const XMLCh* xercesc::DOMNode::lookupNamespacePrefix const XMLCh *  namespaceURI,
bool  useDefault
const [pure virtual]
+
+ + + + + +
+   + + +

+Look up the prefix associated to the given namespace URI, starting from this node. +

+"Experimental - subject to change"

+

Parameters:
+ + + +
namespaceURI The namespace URI to look for.
useDefault Indicates if the lookup mechanism should take into account the default namespace or not.
+
+
Returns:
Returns an associated namespace prefix if found, null if none is found and useDefault is false, or null if not found or it is the default namespace and useDefault is true. If more than one prefix are associated to the namespace prefix, the returned namespace prefix is implementation dependent.
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* xercesc::DOMNode::lookupNamespaceURI const XMLCh *  prefix  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Look up the namespace URI associated to the given prefix, starting from this node. +

+"Experimental - subject to change"

+

Parameters:
+ + +
prefix The prefix to look for. If this parameter is null, the method will return the default namespace URI if any.
+
+
Returns:
Returns the associated namespace URI or null if none is found.
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + +
virtual void xercesc::DOMNode::normalize  )  [pure virtual]
+
+ + + + + +
+   + + +

+Puts all DOMText nodes in the full depth of the sub-tree underneath this DOMNode, including attribute nodes, into a "normal" form where only markup (e.g., tags, comments, processing instructions, CDATA sections, and entity references) separates DOMText nodes, i.e., there are neither adjacent DOMText nodes nor empty DOMText 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 DOMCDATASections, the normalize operation alone may not be sufficient, since XPointers do not differentiate between DOMText nodes and DOMCDATASection nodes.

+

Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + +
virtual void xercesc::DOMNode::release  )  [pure virtual]
+
+ + + + + +
+   + + +

+Called to indicate that this Node (and its associated children) is no longer in use and that the implementation may relinquish any resources associated with it and its associated children. +

+If this is a document, any nodes it owns (created by DOMDocument::createXXXX()) are also released.

+Access to a released object will lead to unexpected result.

+

Exceptions:
+ + +
DOMException INVALID_ACCESS_ERR: Raised if this Node has a parent and thus should not be released yet.
+
+
+

+ + + + +
+ + + + + + + + + +
virtual DOMNode* xercesc::DOMNode::removeChild DOMNode oldChild  )  [pure virtual]
+
+ + + + + +
+   + + +

+Removes the child node indicated by oldChild from the list of children, and returns it. +

+

Parameters:
+ + +
oldChild The node being removed.
+
+
Returns:
The node removed.
+
Exceptions:
+ + +
DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
+NOT_FOUND_ERR: Raised if oldChild is not a child of this node.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
virtual DOMNode* xercesc::DOMNode::replaceChild DOMNode newChild,
DOMNode oldChild
[pure virtual]
+
+ + + + + +
+   + + +

+Replaces the child node oldChild with newChild in the list of children, and returns the oldChild node. +

+If newChild is a DOMDocumentFragment object, oldChild is replaced by all of the DOMDocumentFragment children, which are inserted in the same order.

+If the newChild is already in the tree, it is first removed.

Parameters:
+ + + +
newChild The new node to put in the child list.
oldChild The node being replaced in the list.
+
+
Returns:
The node replaced.
+
Exceptions:
+ + +
DOMException HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not allow children of the type of the newChild node, or it the node to put in is one of this node's ancestors.
+WRONG_DOCUMENT_ERR: Raised if newChild was created from a different document than the one that created this node.
+NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the new node is readonly.
+NOT_FOUND_ERR: Raised if oldChild is not a child of this node.
+
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMNode::setNodeValue const XMLCh *  nodeValue  )  [pure virtual]
+
+ + + + + +
+   + + +

+Sets the value of the node. +

+Any node which can have a nodeValue 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.

See also:
getNodeValue
+
Since:
DOM Level 1
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMNode::setPrefix const XMLCh *  prefix  )  [pure virtual]
+
+ + + + + +
+   + + +

+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 DOMElement and DOMAttr 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.

+

Parameters:
+ + +
prefix The prefix of this node.
+
+
Exceptions:
+ + +
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 namespaceURI of this node is null, if the specified prefix is "xml" and the namespaceURI of this node is different from "http://www.w3.org/XML/1998/namespace", if this node is an attribute and the specified prefix is "xmlns" and the namespaceURI of this node is different from "http://www.w3.org/2000/xmlns/", or if this node is an attribute and the qualifiedName of this node is "xmlns".
+
+
Since:
DOM Level 2
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::DOMNode::setTextContent const XMLCh *  textContent  )  [pure virtual]
+
+ + + + + +
+   + + +

+This attribute removes any possible children this node may have and, if the new string is not empty or null, replaced by a single DOMText node containing the string this attribute is set to. +

+No parsing is performed, the input string is taken as pure textual content.

+"Experimental - subject to change"

+

Exceptions:
+ + +
DOMException NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
+
+
See also:
getTextContext
+
Since:
DOM Level 3
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void* xercesc::DOMNode::setUserData const XMLCh *  key,
void *  data,
DOMUserDataHandler *  handler
[pure virtual]
+
+ + + + + +
+   + + +

+Associate an object to a key on this node. +

+The object can later be retrieved from this node by calling getUserData with the same key.

+Deletion of the user data remains the responsibility of the application program; it will not be automatically deleted when the nodes themselves are reclaimed.

+Both the parameter data and the returned object are void pointer, it is applications' responsibility to keep track of their original type. Casting them to the wrong type may result unexpected behavior.

+"Experimental - subject to change"

+

Parameters:
+ + + + +
key The key to associate the object to.
data The object to associate to the given key, or null to remove any existing association to that key.
handler The handler to associate to that key, or null.
+
+
Returns:
Returns the void* object previously associated to the given key on this node, or null if there was none.
+
See also:
getUserData
+
Since:
DOM Level 3
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1DOMNode__inherit__graph.map b/docs/simple-api/classxercesc_1_1DOMNode__inherit__graph.map new file mode 100644 index 00000000..7d1899d4 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1DOMNode__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMDocument.html 8,83 176,107 diff --git a/docs/simple-api/classxercesc_1_1DOMNode__inherit__graph.md5 b/docs/simple-api/classxercesc_1_1DOMNode__inherit__graph.md5 new file mode 100644 index 00000000..6668109d --- /dev/null +++ b/docs/simple-api/classxercesc_1_1DOMNode__inherit__graph.md5 @@ -0,0 +1 @@ +a82b39fd36c82e4a7b45eca070fc8614 \ No newline at end of file diff --git a/docs/simple-api/classxercesc_1_1DOMNode__inherit__graph.png b/docs/simple-api/classxercesc_1_1DOMNode__inherit__graph.png new file mode 100644 index 00000000..51a0989c Binary files /dev/null and b/docs/simple-api/classxercesc_1_1DOMNode__inherit__graph.png differ diff --git a/docs/simple-api/classxercesc_1_1DOMXPathNSResolver-members.html b/docs/simple-api/classxercesc_1_1DOMXPathNSResolver-members.html new file mode 100644 index 00000000..3e0fbbd4 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1DOMXPathNSResolver-members.html @@ -0,0 +1,31 @@ + + +XQilla Simple API: Member List + + + + + + +

xercesc::DOMXPathNSResolver Member List

This is the complete list of members for xercesc::DOMXPathNSResolver, including all inherited members.

+ + + + +
DOMXPathNSResolver()xercesc::DOMXPathNSResolver [inline, protected]
lookupNamespaceURI(const XMLCh *prefix) const =0xercesc::DOMXPathNSResolver [pure virtual]
lookupPrefix(const XMLCh *URI) const =0xercesc::DOMXPathNSResolver [pure virtual]
~DOMXPathNSResolver()xercesc::DOMXPathNSResolver [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1DOMXPathNSResolver.html b/docs/simple-api/classxercesc_1_1DOMXPathNSResolver.html new file mode 100644 index 00000000..f94a61c4 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1DOMXPathNSResolver.html @@ -0,0 +1,191 @@ + + +XQilla Simple API: xercesc::DOMXPathNSResolver Class Reference + + + + + + + +

xercesc::DOMXPathNSResolver Class Reference

The DOMXPathNSResolver interface permit prefix strings in the expression to be properly bound to namespaceURI strings. +More... +

+#include <DOMXPathNSResolver.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~DOMXPathNSResolver ()
 Destructor.
Functions introduced in DOM Level 3
virtual const XMLCh * lookupNamespaceURI (const XMLCh *prefix) const =0
 Look up the namespace URI associated to the given namespace prefix.
Non-standard extension
virtual const XMLCh * lookupPrefix (const XMLCh *URI) const =0
 Non-standard extension.

Protected Member Functions

Hidden constructors
 DOMXPathNSResolver ()
+


Detailed Description

+The DOMXPathNSResolver interface permit prefix strings in the expression to be properly bound to namespaceURI strings. +

+DOMXPathEvaluator can construct an implementation of DOMXPathNSResolver from a node, or the interface may be implemented by any application.

Since:
DOM Level 3
+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::DOMXPathNSResolver::DOMXPathNSResolver  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
virtual xercesc::DOMXPathNSResolver::~DOMXPathNSResolver  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* xercesc::DOMXPathNSResolver::lookupNamespaceURI const XMLCh *  prefix  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Look up the namespace URI associated to the given namespace prefix. +

+The XPath evaluator must never call this with a null or empty argument, because the result of doing this is undefined.

Parameters:
+ + +
prefix of type XMLCh - The prefix to look for.
+
+
Returns:
the associated namespace URI or null if none is found.
+
+

+ + + + +
+ + + + + + + + + +
virtual const XMLCh* xercesc::DOMXPathNSResolver::lookupPrefix const XMLCh *  URI  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Non-standard extension. +

+XPath2 implementations require a reverse lookup in the static context. Look up the prefix associated with the namespace URI The XPath evaluator must never call this with a null or empty argument, because the result of doing this is undefined.

Parameters:
+ + +
URI of type XMLCh - The namespace to look for.
+
+
Returns:
the associated prefix or null if none is found.
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1InputSource-members.html b/docs/simple-api/classxercesc_1_1InputSource-members.html new file mode 100644 index 00000000..56065fc6 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1InputSource-members.html @@ -0,0 +1,50 @@ + + +XQilla Simple API: Member List + + + + + + +

xercesc::InputSource Member List

This is the complete list of members for xercesc::InputSource, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
getEncoding() const xercesc::InputSource [inline, virtual]
getIssueFatalErrorIfNotFound() const xercesc::InputSource [inline, virtual]
getMemoryManager() const xercesc::InputSource [inline]
getPublicId() const xercesc::InputSource [inline, virtual]
getSystemId() const xercesc::InputSource [inline, virtual]
InputSource(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
InputSource(const XMLCh *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
InputSource(const XMLCh *const systemId, const XMLCh *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
InputSource(const char *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
InputSource(const char *const systemId, const char *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
makeStream() const =0xercesc::InputSource [pure virtual]
operator delete(void *p)xercesc::XMemory
operator delete(void *p, MemoryManager *memMgr)xercesc::XMemory
operator delete(void *p, void *ptr)xercesc::XMemory
operator new(size_t size)xercesc::XMemory
operator new(size_t size, MemoryManager *memMgr)xercesc::XMemory
operator new(size_t size, void *ptr)xercesc::XMemory
setEncoding(const XMLCh *const encodingStr)xercesc::InputSource [virtual]
setIssueFatalErrorIfNotFound(const bool flag)xercesc::InputSource [inline, virtual]
setPublicId(const XMLCh *const publicId)xercesc::InputSource [virtual]
setSystemId(const XMLCh *const systemId)xercesc::InputSource [virtual]
XMemory()xercesc::XMemory [inline, protected]
~InputSource()xercesc::InputSource [virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1InputSource.html b/docs/simple-api/classxercesc_1_1InputSource.html new file mode 100644 index 00000000..efecf1af --- /dev/null +++ b/docs/simple-api/classxercesc_1_1InputSource.html @@ -0,0 +1,706 @@ + + +XQilla Simple API: xercesc::InputSource Class Reference + + + + + + + +

xercesc::InputSource Class Reference

A single input source for an XML entity. +More... +

+#include <InputSource.hpp> +

+Inheritance diagram for xercesc::InputSource:

Inheritance graph
+ + + + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~InputSource ()
 Destructor.
Virtual input source interface
virtual BinInputStream * makeStream () const =0
 Makes the byte stream for this input source.
Getter methods
virtual const XMLCh * getEncoding () const
 An input source can be set to force the parser to assume a particular encoding for the data that input source reprsents, via the setEncoding() method.
virtual const XMLCh * getPublicId () const
 Get the public identifier for this input source.
virtual const XMLCh * getSystemId () const
 Get the system identifier for this input source.
virtual bool getIssueFatalErrorIfNotFound () const
 Get the flag that indicates if the parser should issue fatal error if this input source is not found.
MemoryManagergetMemoryManager () const
Setter methods
virtual void setEncoding (const XMLCh *const encodingStr)
 Set the encoding which will be required for use with the XML text read via a stream opened by this input source.
virtual void setPublicId (const XMLCh *const publicId)
 Set the public identifier for this input source.
virtual void setSystemId (const XMLCh *const systemId)
 Set the system identifier for this input source.
virtual void setIssueFatalErrorIfNotFound (const bool flag)
 Indicates if the parser should issue fatal error if this input source is not found.

Protected Member Functions

Constructors and Destructor
 InputSource (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Default constructor.
 InputSource (const XMLCh *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Constructor with a system identifier as XMLCh type.
 InputSource (const XMLCh *const systemId, const XMLCh *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Constructor with a system and public identifiers.
 InputSource (const char *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Constructor witha system identifier as string.
 InputSource (const char *const systemId, const char *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Constructor witha system and public identifiers.
+

Detailed Description

+A single input source for an XML entity. +

+This class encapsulates information about an input source in a single object, which may include a public identifier or a system identifier

+There are two places that the application will deliver this input source to the parser: as the argument to the Parser::parse method, or as the return value of the EntityResolver::resolveEntity method.

+InputSource is never used directly, but is the base class for a number of derived classes for particular types of input sources. Derivatives are provided (in the framework/ directory) for URL input sources, memory buffer input sources, and so on.

+When it is time to parse the input described by an input source, it will be asked to create a binary stream for that source. That stream will be used to input the data of the source. The derived class provides the implementation of the makeStream() method, and provides a type of stream of the correct type for the input source it represents.

+An InputSource object belongs to the application: the parser never modifies them in any way. They are always passed by const reference so the parser will make a copy of any input sources that it must keep around beyond the call.

+

See also:
Parser::parse

+EntityResolver::resolveEntity

+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
virtual xercesc::InputSource::~InputSource  )  [virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+

+ + + + +
+ + + + + + + + + +
xercesc::InputSource::InputSource MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  )  [protected]
+
+ + + + + +
+   + + +

+Default constructor. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
xercesc::InputSource::InputSource const XMLCh *const   systemId,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[protected]
+
+ + + + + +
+   + + +

+Constructor with a system identifier as XMLCh type. +

+

Parameters:
+ + + +
systemId The system identifier (URI).
manager Pointer to the memory manager to be used to allocate objects.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xercesc::InputSource::InputSource const XMLCh *const   systemId,
const XMLCh *const   publicId,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[protected]
+
+ + + + + +
+   + + +

+Constructor with a system and public identifiers. +

+

Parameters:
+ + + + +
systemId The system identifier (URI).
publicId The public identifier as in the entity definition.
manager Pointer to the memory manager to be used to allocate objects.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
xercesc::InputSource::InputSource const char *const   systemId,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[protected]
+
+ + + + + +
+   + + +

+Constructor witha system identifier as string. +

+

Parameters:
+ + + +
systemId The system identifier (URI).
manager Pointer to the memory manager to be used to allocate objects.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xercesc::InputSource::InputSource const char *const   systemId,
const char *const   publicId,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[protected]
+
+ + + + + +
+   + + +

+Constructor witha system and public identifiers. +

+Both as string

Parameters:
+ + + + +
systemId The system identifier (URI).
publicId The public identifier as in the entity definition.
manager Pointer to the memory manager to be used to allocate objects.
+
+
+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
const XMLCh * xercesc::InputSource::getEncoding  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+An input source can be set to force the parser to assume a particular encoding for the data that input source reprsents, via the setEncoding() method. +

+This method returns name of the encoding that is to be forced. If the encoding has never been forced, it returns a null pointer.

+

Returns:
The forced encoding, or null if none was supplied.
+
See also:
setEncoding
+
+

+ + + + +
+ + + + + + + + +
bool xercesc::InputSource::getIssueFatalErrorIfNotFound  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+Get the flag that indicates if the parser should issue fatal error if this input source is not found. +

+

Returns:
True if the parser should issue fatal error if this input source is not found. False if the parser issue warning message instead.
+
See also:
setIssueFatalErrorIfNotFound
+
+

+ + + + +
+ + + + + + + + +
MemoryManager * xercesc::InputSource::getMemoryManager  )  const [inline]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
const XMLCh * xercesc::InputSource::getPublicId  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+Get the public identifier for this input source. +

+

Returns:
The public identifier, or null if none was supplied.
+
See also:
setPublicId
+
+

+ + + + +
+ + + + + + + + +
const XMLCh * xercesc::InputSource::getSystemId  )  const [inline, virtual]
+
+ + + + + +
+   + + +

+Get the system identifier for this input source. +

+If the system ID is a URL, it will be fully resolved.

+

Returns:
The system identifier.
+
See also:
setSystemId
+
+

+ + + + +
+ + + + + + + + +
virtual BinInputStream* xercesc::InputSource::makeStream  )  const [pure virtual]
+
+ + + + + +
+   + + +

+Makes the byte stream for this input source. +

+The derived class must create and return a binary input stream of an appropriate type for its kind of data source. The returned stream must be dynamically allocated and becomes the parser's property.

+

See also:
BinInputStream
+ +

+Implemented in xercesc::LocalFileInputSource, xercesc::MemBufInputSource, xercesc::StdInInputSource, and xercesc::URLInputSource.

+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::InputSource::setEncoding const XMLCh *const   encodingStr  )  [virtual]
+
+ + + + + +
+   + + +

+Set the encoding which will be required for use with the XML text read via a stream opened by this input source. +

+This is usually not set, allowing the encoding to be sensed in the usual XML way. However, in some cases, the encoding in the file is known to be incorrect because of intermediate transcoding, for instance encapsulation within a MIME document.

+

Parameters:
+ + +
encodingStr The name of the encoding to force.
+
+
+

+ + + + +
+ + + + + + + + + +
void xercesc::InputSource::setIssueFatalErrorIfNotFound const bool  flag  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Indicates if the parser should issue fatal error if this input source is not found. +

+If set to false, the parser issue warning message instead.

+

Parameters:
+ + +
flag True if the parser should issue fatal error if this input source is not found. If set to false, the parser issue warning message instead. (Default: true)
+
+
See also:
getIssueFatalErrorIfNotFound
+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::InputSource::setPublicId const XMLCh *const   publicId  )  [virtual]
+
+ + + + + +
+   + + +

+Set the public identifier for this input source. +

+The public identifier is always optional: if the application writer includes one, it will be provided as part of the location information.

+

Parameters:
+ + +
publicId The public identifier as a string.
+
+
See also:
Locator::getPublicId

+SAXParseException::getPublicId

+getPublicId

+
+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::InputSource::setSystemId const XMLCh *const   systemId  )  [virtual]
+
+ + + + + +
+   + + +

+Set the system identifier for this input source. +

+Set the system identifier for this input source.

+The system id is always required. The public id may be used to map to another system id, but the system id must always be present as a fall back.

+If the system ID is a URL, it must be fully resolved.

+

Parameters:
+ + +
systemId The system identifier as a string.
+
+
See also:
getSystemId

+Locator::getSystemId

+SAXParseException::getSystemId

+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1InputSource__inherit__graph.map b/docs/simple-api/classxercesc_1_1InputSource__inherit__graph.map new file mode 100644 index 00000000..4841310f --- /dev/null +++ b/docs/simple-api/classxercesc_1_1InputSource__inherit__graph.map @@ -0,0 +1,6 @@ +base referer +rect $classxercesc_1_1LocalFileInputSource.html 8,158 208,182 +rect $classxercesc_1_1MemBufInputSource.html 232,158 429,182 +rect $classxercesc_1_1StdInInputSource.html 453,158 632,182 +rect $classxercesc_1_1URLInputSource.html 656,158 832,182 +rect $classxercesc_1_1XMemory.html 369,9 502,33 diff --git a/docs/simple-api/classxercesc_1_1InputSource__inherit__graph.md5 b/docs/simple-api/classxercesc_1_1InputSource__inherit__graph.md5 new file mode 100644 index 00000000..e4f3cf2a --- /dev/null +++ b/docs/simple-api/classxercesc_1_1InputSource__inherit__graph.md5 @@ -0,0 +1 @@ +c2f429da1261af00dfc67d541f8f0467 \ No newline at end of file diff --git a/docs/simple-api/classxercesc_1_1InputSource__inherit__graph.png b/docs/simple-api/classxercesc_1_1InputSource__inherit__graph.png new file mode 100644 index 00000000..4980b21e Binary files /dev/null and b/docs/simple-api/classxercesc_1_1InputSource__inherit__graph.png differ diff --git a/docs/simple-api/classxercesc_1_1LocalFileInputSource-members.html b/docs/simple-api/classxercesc_1_1LocalFileInputSource-members.html new file mode 100644 index 00000000..b18b5e7c --- /dev/null +++ b/docs/simple-api/classxercesc_1_1LocalFileInputSource-members.html @@ -0,0 +1,53 @@ + + +XQilla Simple API: Member List + + + + + + +

xercesc::LocalFileInputSource Member List

This is the complete list of members for xercesc::LocalFileInputSource, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
getEncoding() const xercesc::InputSource [inline, virtual]
getIssueFatalErrorIfNotFound() const xercesc::InputSource [inline, virtual]
getMemoryManager() const xercesc::InputSource [inline]
getPublicId() const xercesc::InputSource [inline, virtual]
getSystemId() const xercesc::InputSource [inline, virtual]
InputSource(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
InputSource(const XMLCh *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
InputSource(const XMLCh *const systemId, const XMLCh *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
InputSource(const char *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
InputSource(const char *const systemId, const char *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
LocalFileInputSource(const XMLCh *const basePath, const XMLCh *const relativePath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::LocalFileInputSource
LocalFileInputSource(const XMLCh *const filePath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::LocalFileInputSource
makeStream() const xercesc::LocalFileInputSource [virtual]
operator delete(void *p)xercesc::XMemory
operator delete(void *p, MemoryManager *memMgr)xercesc::XMemory
operator delete(void *p, void *ptr)xercesc::XMemory
operator new(size_t size)xercesc::XMemory
operator new(size_t size, MemoryManager *memMgr)xercesc::XMemory
operator new(size_t size, void *ptr)xercesc::XMemory
setEncoding(const XMLCh *const encodingStr)xercesc::InputSource [virtual]
setIssueFatalErrorIfNotFound(const bool flag)xercesc::InputSource [inline, virtual]
setPublicId(const XMLCh *const publicId)xercesc::InputSource [virtual]
setSystemId(const XMLCh *const systemId)xercesc::InputSource [virtual]
XMemory()xercesc::XMemory [inline, protected]
~InputSource()xercesc::InputSource [virtual]
~LocalFileInputSource()xercesc::LocalFileInputSource


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1LocalFileInputSource.html b/docs/simple-api/classxercesc_1_1LocalFileInputSource.html new file mode 100644 index 00000000..71e7e3f4 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1LocalFileInputSource.html @@ -0,0 +1,238 @@ + + +XQilla Simple API: xercesc::LocalFileInputSource Class Reference + + + + + + + +

xercesc::LocalFileInputSource Class Reference

This class is a derivative of the standard InputSource class. +More... +

+#include <LocalFileInputSource.hpp> +

+Inheritance diagram for xercesc::LocalFileInputSource:

Inheritance graph
+ + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + +

Public Member Functions

Constructors
 LocalFileInputSource (const XMLCh *const basePath, const XMLCh *const relativePath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 A local file input source requires a path to the file to load.
 LocalFileInputSource (const XMLCh *const filePath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 This constructor takes a single parameter which is the fully qualified or relative path.
Destructor
 ~LocalFileInputSource ()
Virtual methods
virtual BinInputStream * makeStream () const
 This method will return a binary input stream derivative that will parse from the local file indicatedby the system id.
+

Detailed Description

+This class is a derivative of the standard InputSource class. +

+It provides for the parser access to data which is referenced via a local file path, as apposed to remote file or URL. This is the most efficacious mechanism by which local files can be parsed, since the parse knows that it refers to a local file and will make no other attempts to interpret the passed path.

+The path provided can either be a fully qualified path or a relative path. If relative, it will be completed either relative to a passed base path or relative to the current working directory of the process.

+As with all InputSource derivatives. The primary objective of an input source is to create an input stream via which the parser can spool in data from the referenced source. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xercesc::LocalFileInputSource::LocalFileInputSource const XMLCh *const   basePath,
const XMLCh *const   relativePath,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
+
+ + + + + +
+   + + +

+A local file input source requires a path to the file to load. +

+This can be provided either as a fully qualified path, a path relative to the current working directly, or a path relative to a provided base path.

+The completed path will become the system id of this input source. The constructors don't take any public id for local files, but you still set them via the parent class' setPublicId() method of course.

+This constructor takes an explicit base path and a possibly relative path. If the relative path is seen to be fully qualified, it is used as is. Otherwise, it is made relative to the passed base path.

+

Parameters:
+ + + + +
basePath The base path from which the passed relative path will be based, if the relative part is indeed relative.
relativePath The relative part of the path. It can actually be fully qualified, in which case it is taken as is.
manager Pointer to the memory manager to be used to allocate objects.
+
+
Exceptions:
+ + +
XMLException If the path is relative and doesn't properly resolve to a file.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
xercesc::LocalFileInputSource::LocalFileInputSource const XMLCh *const   filePath,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
+
+ + + + + +
+   + + +

+This constructor takes a single parameter which is the fully qualified or relative path. +

+If it is fully qualified, it is taken as is. If it is relative, then it is completed relative to the current working directory (or the equivalent on the local host machine.)

+The completed path will become the system id of this input source. The constructors don't take any public id for local files, but you still set them via the parent class' setPublicId() method of course.

+

Parameters:
+ + + +
filePath The relative or fully qualified path.
manager Pointer to the memory manager to be used to allocate objects.
+
+
Exceptions:
+ + +
XMLException If the path is relative and doesn't properly resolve to a file.
+
+
+

+ + + + +
+ + + + + + + + +
xercesc::LocalFileInputSource::~LocalFileInputSource  ) 
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
virtual BinInputStream* xercesc::LocalFileInputSource::makeStream  )  const [virtual]
+
+ + + + + +
+   + + +

+This method will return a binary input stream derivative that will parse from the local file indicatedby the system id. +

+

Returns:
A dynamically allocated binary input stream derivative that can parse from the file indicated by the system id.
+ +

+Implements xercesc::InputSource.

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1LocalFileInputSource__inherit__graph.map b/docs/simple-api/classxercesc_1_1LocalFileInputSource__inherit__graph.map new file mode 100644 index 00000000..5444bd77 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1LocalFileInputSource__inherit__graph.map @@ -0,0 +1,3 @@ +base referer +rect $classxercesc_1_1InputSource.html 33,84 182,108 +rect $classxercesc_1_1XMemory.html 41,9 174,33 diff --git a/docs/simple-api/classxercesc_1_1LocalFileInputSource__inherit__graph.md5 b/docs/simple-api/classxercesc_1_1LocalFileInputSource__inherit__graph.md5 new file mode 100644 index 00000000..8e60dcbd --- /dev/null +++ b/docs/simple-api/classxercesc_1_1LocalFileInputSource__inherit__graph.md5 @@ -0,0 +1 @@ +0acc66514b2ad4d18973e6463b382ca0 \ No newline at end of file diff --git a/docs/simple-api/classxercesc_1_1LocalFileInputSource__inherit__graph.png b/docs/simple-api/classxercesc_1_1LocalFileInputSource__inherit__graph.png new file mode 100644 index 00000000..a4edadbd Binary files /dev/null and b/docs/simple-api/classxercesc_1_1LocalFileInputSource__inherit__graph.png differ diff --git a/docs/simple-api/classxercesc_1_1MemBufInputSource-members.html b/docs/simple-api/classxercesc_1_1MemBufInputSource-members.html new file mode 100644 index 00000000..289e86f7 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1MemBufInputSource-members.html @@ -0,0 +1,55 @@ + + +XQilla Simple API: Member List + + + + + + +

xercesc::MemBufInputSource Member List

This is the complete list of members for xercesc::MemBufInputSource, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
getEncoding() const xercesc::InputSource [inline, virtual]
getIssueFatalErrorIfNotFound() const xercesc::InputSource [inline, virtual]
getMemoryManager() const xercesc::InputSource [inline]
getPublicId() const xercesc::InputSource [inline, virtual]
getSystemId() const xercesc::InputSource [inline, virtual]
InputSource(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
InputSource(const XMLCh *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
InputSource(const XMLCh *const systemId, const XMLCh *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
InputSource(const char *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
InputSource(const char *const systemId, const char *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
makeStream() const xercesc::MemBufInputSource [virtual]
MemBufInputSource(const XMLByte *const srcDocBytes, const unsigned int byteCount, const XMLCh *const bufId, const bool adoptBuffer=false, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::MemBufInputSource
MemBufInputSource(const XMLByte *const srcDocBytes, const unsigned int byteCount, const char *const bufId, const bool adoptBuffer=false, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::MemBufInputSource
operator delete(void *p)xercesc::XMemory
operator delete(void *p, MemoryManager *memMgr)xercesc::XMemory
operator delete(void *p, void *ptr)xercesc::XMemory
operator new(size_t size)xercesc::XMemory
operator new(size_t size, MemoryManager *memMgr)xercesc::XMemory
operator new(size_t size, void *ptr)xercesc::XMemory
resetMemBufInputSource(const XMLByte *const srcDocBytes, const unsigned int byteCount)xercesc::MemBufInputSource
setCopyBufToStream(const bool newState)xercesc::MemBufInputSource [inline]
setEncoding(const XMLCh *const encodingStr)xercesc::InputSource [virtual]
setIssueFatalErrorIfNotFound(const bool flag)xercesc::InputSource [inline, virtual]
setPublicId(const XMLCh *const publicId)xercesc::InputSource [virtual]
setSystemId(const XMLCh *const systemId)xercesc::InputSource [virtual]
XMemory()xercesc::XMemory [inline, protected]
~InputSource()xercesc::InputSource [virtual]
~MemBufInputSource()xercesc::MemBufInputSource


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1MemBufInputSource.html b/docs/simple-api/classxercesc_1_1MemBufInputSource.html new file mode 100644 index 00000000..6e742913 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1MemBufInputSource.html @@ -0,0 +1,346 @@ + + +XQilla Simple API: xercesc::MemBufInputSource Class Reference + + + + + + + +

xercesc::MemBufInputSource Class Reference

This class is a derivative of the standard InputSource class. +More... +

+#include <MemBufInputSource.hpp> +

+Inheritance diagram for xercesc::MemBufInputSource:

Inheritance graph
+ + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Constructors
 MemBufInputSource (const XMLByte *const srcDocBytes, const unsigned int byteCount, const XMLCh *const bufId, const bool adoptBuffer=false, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 A memory buffer input source is constructed from a buffer of byte data, and the count of bytes in that buffer.
 MemBufInputSource (const XMLByte *const srcDocBytes, const unsigned int byteCount, const char *const bufId, const bool adoptBuffer=false, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 This constructor is identical to the previous one, except that it takes the fake system id in local code page form and transcodes it internally.
Destructor
 ~MemBufInputSource ()
 If the buffer was adopted, the copy made during construction is deleted at this point.
Virtual methods
BinInputStream * makeStream () const
 This method will return a binary input stream derivative that will parse from the memory buffer.
Setter methods
void setCopyBufToStream (const bool newState)
 By default, for safety's sake, each newly created stream from this input source will make its own copy of the buffer to stream from.
void resetMemBufInputSource (const XMLByte *const srcDocBytes, const unsigned int byteCount)
 This methods allows the MemBufInputSource to be used for more than one input source, instead of destructing/constructing another MemBufInputSource.
+

Detailed Description

+This class is a derivative of the standard InputSource class. +

+It provides for the parser access to data stored in a memory buffer. The type of buffer and its host specific attributes are of little concern here. The only real requirement is that the memory be readable by the current process.

+Note that the memory buffer size is expressed in bytes, not in characters. If you pass it text data, you must account for the bytes per character when indicating the buffer size.

+As with all InputSource derivatives. The primary objective of an input source is to create an input stream via which the parser can spool in data from the referenced source. In this case, there are two options available.

+The passed buffer can be adopted or merely referenced. If it is adopted, then it must be dynamically allocated and will be destroyed when the input source is destroyed (no reference counting!.) If not adopted, the caller must insure that it remains valid until the input source object is destroyed.

+The other option indicates whether each stream created for this input source should get its own copy of the data, or whether it should just stream the data directly from this object's copy of the data. The same rules apply here, in that the buffer must either be copied by the stream or it must remain valid until the stream is destroyed. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
xercesc::MemBufInputSource::MemBufInputSource const XMLByte *const   srcDocBytes,
const unsigned int  byteCount,
const XMLCh *const   bufId,
const bool  adoptBuffer = false,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
+
+ + + + + +
+   + + +

+A memory buffer input source is constructed from a buffer of byte data, and the count of bytes in that buffer. +

+The parser will parse from this memory buffer until it has eaten the indicated number of bytes.

+Note that the system id provided serves two purposes. Firstly it is going to be displayed in error messages as the source of the error. And secondly, any entities which are refered to from this entity via relative paths/URLs will be relative to this fake system id.

+

Parameters:
+ + + + + + +
srcDocBytes The actual data buffer to be parsed from.
byteCount The count of bytes (not characters, bytes!) in the buffer.
bufId A fake system id for the buffer.
adoptBuffer Indicates whether this object should adopt the buffer (i.e. become responsible for deletion) or just use it in place.
manager Pointer to the memory manager to be used to allocate objects.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
xercesc::MemBufInputSource::MemBufInputSource const XMLByte *const   srcDocBytes,
const unsigned int  byteCount,
const char *const   bufId,
const bool  adoptBuffer = false,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
+
+ + + + + +
+   + + +

+This constructor is identical to the previous one, except that it takes the fake system id in local code page form and transcodes it internally. +

+

+

+ + + + +
+ + + + + + + + +
xercesc::MemBufInputSource::~MemBufInputSource  ) 
+
+ + + + + +
+   + + +

+If the buffer was adopted, the copy made during construction is deleted at this point. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
BinInputStream* xercesc::MemBufInputSource::makeStream  )  const [virtual]
+
+ + + + + +
+   + + +

+This method will return a binary input stream derivative that will parse from the memory buffer. +

+If setCopyBufToStream() has been set, then the stream will make its own copy. Otherwise, it will use the buffer as is (in which case it must remain valid until the stream is no longer in use, i.e. the parse completes.)

+

Returns:
A dynamically allocated binary input stream derivative that can parse from the memory buffer.
+ +

+Implements xercesc::InputSource.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void xercesc::MemBufInputSource::resetMemBufInputSource const XMLByte *const   srcDocBytes,
const unsigned int  byteCount
+
+ + + + + +
+   + + +

+This methods allows the MemBufInputSource to be used for more than one input source, instead of destructing/constructing another MemBufInputSource. +

+

Parameters:
+ + + +
srcDocBytes The actual data buffer to be parsed from.
byteCount The count of bytes (not characters, bytes!) in the buffer.
+
+
+

+ + + + +
+ + + + + + + + + +
void xercesc::MemBufInputSource::setCopyBufToStream const bool  newState  )  [inline]
+
+ + + + + +
+   + + +

+By default, for safety's sake, each newly created stream from this input source will make its own copy of the buffer to stream from. +

+This avoids having to deal with aliasing of the buffer for simple work. But, for higher performance applications or for large buffers, this is obviously not optimal.

+In such cases, you can call this method to turn off that default action. Once turned off, the streams will just get a pointer to the buffer and parse directly from that. In this case, you must insure that the buffer remains valid for as long as any parse events are still using it.

+

Parameters:
+ + +
newState The new boolean flag state to set.
+
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1MemBufInputSource__inherit__graph.map b/docs/simple-api/classxercesc_1_1MemBufInputSource__inherit__graph.map new file mode 100644 index 00000000..4fe1f8e8 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1MemBufInputSource__inherit__graph.map @@ -0,0 +1,3 @@ +base referer +rect $classxercesc_1_1InputSource.html 31,84 181,108 +rect $classxercesc_1_1XMemory.html 39,9 173,33 diff --git a/docs/simple-api/classxercesc_1_1MemBufInputSource__inherit__graph.md5 b/docs/simple-api/classxercesc_1_1MemBufInputSource__inherit__graph.md5 new file mode 100644 index 00000000..ebcb0e00 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1MemBufInputSource__inherit__graph.md5 @@ -0,0 +1 @@ +4a93dcb070741fbf1782f663a73ae6a4 \ No newline at end of file diff --git a/docs/simple-api/classxercesc_1_1MemBufInputSource__inherit__graph.png b/docs/simple-api/classxercesc_1_1MemBufInputSource__inherit__graph.png new file mode 100644 index 00000000..2b5c4ce8 Binary files /dev/null and b/docs/simple-api/classxercesc_1_1MemBufInputSource__inherit__graph.png differ diff --git a/docs/simple-api/classxercesc_1_1MemoryManager-members.html b/docs/simple-api/classxercesc_1_1MemoryManager-members.html new file mode 100644 index 00000000..9520d686 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1MemoryManager-members.html @@ -0,0 +1,31 @@ + + +XQilla Simple API: Member List + + + + + + +

xercesc::MemoryManager Member List

This is the complete list of members for xercesc::MemoryManager, including all inherited members.

+ + + + +
allocate(size_t size)=0xercesc::MemoryManager [pure virtual]
deallocate(void *p)=0xercesc::MemoryManager [pure virtual]
MemoryManager()xercesc::MemoryManager [inline, protected]
~MemoryManager()xercesc::MemoryManager [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1MemoryManager.html b/docs/simple-api/classxercesc_1_1MemoryManager.html new file mode 100644 index 00000000..a5bc49ad --- /dev/null +++ b/docs/simple-api/classxercesc_1_1MemoryManager.html @@ -0,0 +1,199 @@ + + +XQilla Simple API: xercesc::MemoryManager Class Reference + + + + + + + +

xercesc::MemoryManager Class Reference

Configurable memory manager. +More... +

+#include <MemoryManager.hpp> +

+Inheritance diagram for xercesc::MemoryManager:

Inheritance graph
+ + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + +

Public Member Functions

Destructor
virtual ~MemoryManager ()
 Default destructor.
The pure virtual methods in this interface.
virtual void * allocate (size_t size)=0
 This method allocates requested memory.
virtual void deallocate (void *p)=0
 This method deallocates memory.

Protected Member Functions

Constructor
 MemoryManager ()
 Protected default constructor.
+

Detailed Description

+Configurable memory manager. +

+This interface allows outside applications to plug in their own memory manager to be used by Xerces for memory allocation/deallocation. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
virtual xercesc::MemoryManager::~MemoryManager  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Default destructor. +

+

+

+ + + + +
+ + + + + + + + +
xercesc::MemoryManager::MemoryManager  )  [inline, protected]
+
+ + + + + +
+   + + +

+Protected default constructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual void* xercesc::MemoryManager::allocate size_t  size  )  [pure virtual]
+
+ + + + + +
+   + + +

+This method allocates requested memory. +

+

Parameters:
+ + +
size The requested memory size
+
+
Returns:
A pointer to the allocated memory
+ +

+Implemented in XPath2MemoryManager.

+

+ + + + +
+ + + + + + + + + +
virtual void xercesc::MemoryManager::deallocate void *  p  )  [pure virtual]
+
+ + + + + +
+   + + +

+This method deallocates memory. +

+

Parameters:
+ + +
p The pointer to the allocated memory to be deleted
+
+ +

+Implemented in XPath2MemoryManager.

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1MemoryManager__inherit__graph.map b/docs/simple-api/classxercesc_1_1MemoryManager__inherit__graph.map new file mode 100644 index 00000000..18ebf358 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1MemoryManager__inherit__graph.map @@ -0,0 +1,2 @@ +base referer +rect $classXPath2MemoryManager.html 13,83 181,107 diff --git a/docs/simple-api/classxercesc_1_1MemoryManager__inherit__graph.md5 b/docs/simple-api/classxercesc_1_1MemoryManager__inherit__graph.md5 new file mode 100644 index 00000000..cc9a16f4 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1MemoryManager__inherit__graph.md5 @@ -0,0 +1 @@ +ab5dc717cbb2233b39ed147bd1eb1c2c \ No newline at end of file diff --git a/docs/simple-api/classxercesc_1_1MemoryManager__inherit__graph.png b/docs/simple-api/classxercesc_1_1MemoryManager__inherit__graph.png new file mode 100644 index 00000000..24f44f67 Binary files /dev/null and b/docs/simple-api/classxercesc_1_1MemoryManager__inherit__graph.png differ diff --git a/docs/simple-api/classxercesc_1_1StdInInputSource-members.html b/docs/simple-api/classxercesc_1_1StdInInputSource-members.html new file mode 100644 index 00000000..85ce30b7 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1StdInInputSource-members.html @@ -0,0 +1,52 @@ + + +XQilla Simple API: Member List + + + + + + +

xercesc::StdInInputSource Member List

This is the complete list of members for xercesc::StdInInputSource, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
getEncoding() const xercesc::InputSource [inline, virtual]
getIssueFatalErrorIfNotFound() const xercesc::InputSource [inline, virtual]
getMemoryManager() const xercesc::InputSource [inline]
getPublicId() const xercesc::InputSource [inline, virtual]
getSystemId() const xercesc::InputSource [inline, virtual]
InputSource(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
InputSource(const XMLCh *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
InputSource(const XMLCh *const systemId, const XMLCh *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
InputSource(const char *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
InputSource(const char *const systemId, const char *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
makeStream() const xercesc::StdInInputSource [virtual]
operator delete(void *p)xercesc::XMemory
operator delete(void *p, MemoryManager *memMgr)xercesc::XMemory
operator delete(void *p, void *ptr)xercesc::XMemory
operator new(size_t size)xercesc::XMemory
operator new(size_t size, MemoryManager *memMgr)xercesc::XMemory
operator new(size_t size, void *ptr)xercesc::XMemory
setEncoding(const XMLCh *const encodingStr)xercesc::InputSource [virtual]
setIssueFatalErrorIfNotFound(const bool flag)xercesc::InputSource [inline, virtual]
setPublicId(const XMLCh *const publicId)xercesc::InputSource [virtual]
setSystemId(const XMLCh *const systemId)xercesc::InputSource [virtual]
StdInInputSource(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::StdInInputSource [inline]
XMemory()xercesc::XMemory [inline, protected]
~InputSource()xercesc::InputSource [virtual]
~StdInInputSource()xercesc::StdInInputSource [inline]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1StdInInputSource.html b/docs/simple-api/classxercesc_1_1StdInInputSource.html new file mode 100644 index 00000000..dc543f77 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1StdInInputSource.html @@ -0,0 +1,152 @@ + + +XQilla Simple API: xercesc::StdInInputSource Class Reference + + + + + + + +

xercesc::StdInInputSource Class Reference

This class is a derivative of the standard InputSource class. +More... +

+#include <StdInInputSource.hpp> +

+Inheritance diagram for xercesc::StdInInputSource:

Inheritance graph
+ + + + +
[legend]
List of all members. + + + + + + + + + + + + + +

Public Member Functions

Constructor
 StdInInputSource (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Since the standard input is a canned source, the constructor is very simple.
Destructor
 ~StdInInputSource ()
Virtual methods
BinInputStream * makeStream () const
 This method will return a binary input stream derivative that will parse from the standard input of the local host.
+

Detailed Description

+This class is a derivative of the standard InputSource class. +

+It provides for the parser access to data via the standard input. This input source is not commonly used, but can be useful when implementing such things as pipe based tools which exchange XML data.

+As with all InputSource derivatives. The primary objective of an input source is to create an input stream via which the parser can spool in data from the referenced source. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + +
xercesc::StdInInputSource::StdInInputSource MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  )  [inline]
+
+ + + + + +
+   + + +

+Since the standard input is a canned source, the constructor is very simple. +

+It just uses local platform services to open up the standard input source as file, a new handleof which it gives to each new stream it creates.

+

+ + + + +
+ + + + + + + + +
xercesc::StdInInputSource::~StdInInputSource  )  [inline]
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
BinInputStream* xercesc::StdInInputSource::makeStream  )  const [virtual]
+
+ + + + + +
+   + + +

+This method will return a binary input stream derivative that will parse from the standard input of the local host. +

+

Returns:
A dynamically allocated binary input stream derivative that can parse from the standardinput.
+ +

+Implements xercesc::InputSource.

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1StdInInputSource__inherit__graph.map b/docs/simple-api/classxercesc_1_1StdInInputSource__inherit__graph.map new file mode 100644 index 00000000..051c0c62 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1StdInInputSource__inherit__graph.map @@ -0,0 +1,3 @@ +base referer +rect $classxercesc_1_1InputSource.html 22,84 172,108 +rect $classxercesc_1_1XMemory.html 30,9 164,33 diff --git a/docs/simple-api/classxercesc_1_1StdInInputSource__inherit__graph.md5 b/docs/simple-api/classxercesc_1_1StdInInputSource__inherit__graph.md5 new file mode 100644 index 00000000..8b25c2c6 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1StdInInputSource__inherit__graph.md5 @@ -0,0 +1 @@ +cc04acab7b9a73f97845d17f40563a2f \ No newline at end of file diff --git a/docs/simple-api/classxercesc_1_1StdInInputSource__inherit__graph.png b/docs/simple-api/classxercesc_1_1StdInInputSource__inherit__graph.png new file mode 100644 index 00000000..a92b09ea Binary files /dev/null and b/docs/simple-api/classxercesc_1_1StdInInputSource__inherit__graph.png differ diff --git a/docs/simple-api/classxercesc_1_1URLInputSource-members.html b/docs/simple-api/classxercesc_1_1URLInputSource-members.html new file mode 100644 index 00000000..90a75c63 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1URLInputSource-members.html @@ -0,0 +1,57 @@ + + +XQilla Simple API: Member List + + + + + + +

xercesc::URLInputSource Member List

This is the complete list of members for xercesc::URLInputSource, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
getEncoding() const xercesc::InputSource [inline, virtual]
getIssueFatalErrorIfNotFound() const xercesc::InputSource [inline, virtual]
getMemoryManager() const xercesc::InputSource [inline]
getPublicId() const xercesc::InputSource [inline, virtual]
getSystemId() const xercesc::InputSource [inline, virtual]
InputSource(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
InputSource(const XMLCh *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
InputSource(const XMLCh *const systemId, const XMLCh *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
InputSource(const char *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
InputSource(const char *const systemId, const char *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::InputSource [protected]
makeStream() const xercesc::URLInputSource [virtual]
operator delete(void *p)xercesc::XMemory
operator delete(void *p, MemoryManager *memMgr)xercesc::XMemory
operator delete(void *p, void *ptr)xercesc::XMemory
operator new(size_t size)xercesc::XMemory
operator new(size_t size, MemoryManager *memMgr)xercesc::XMemory
operator new(size_t size, void *ptr)xercesc::XMemory
setEncoding(const XMLCh *const encodingStr)xercesc::InputSource [virtual]
setIssueFatalErrorIfNotFound(const bool flag)xercesc::InputSource [inline, virtual]
setPublicId(const XMLCh *const publicId)xercesc::InputSource [virtual]
setSystemId(const XMLCh *const systemId)xercesc::InputSource [virtual]
URLInputSource(const XMLURL &urlId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::URLInputSource
URLInputSource(const XMLCh *const baseId, const XMLCh *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::URLInputSource
URLInputSource(const XMLCh *const baseId, const XMLCh *const systemId, const XMLCh *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::URLInputSource
URLInputSource(const XMLCh *const baseId, const char *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::URLInputSource
URLInputSource(const XMLCh *const baseId, const char *const systemId, const char *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::URLInputSource
urlSrc() const xercesc::URLInputSource [inline]
XMemory()xercesc::XMemory [inline, protected]
~InputSource()xercesc::InputSource [virtual]
~URLInputSource()xercesc::URLInputSource


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1URLInputSource.html b/docs/simple-api/classxercesc_1_1URLInputSource.html new file mode 100644 index 00000000..3b4602b5 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1URLInputSource.html @@ -0,0 +1,438 @@ + + +XQilla Simple API: xercesc::URLInputSource Class Reference + + + + + + + +

xercesc::URLInputSource Class Reference

This class is a derivative of the standard InputSource class. +More... +

+#include <URLInputSource.hpp> +

+Inheritance diagram for xercesc::URLInputSource:

Inheritance graph
+ + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

Constructors
 URLInputSource (const XMLURL &urlId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 This constructor accepts an already built URL.
 URLInputSource (const XMLCh *const baseId, const XMLCh *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 This constructor takes a base system id URL and a possibly relative system id.
 URLInputSource (const XMLCh *const baseId, const XMLCh *const systemId, const XMLCh *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 This constructor is indentical to the previous one, except that it also allows you to set a public id if you want to.
 URLInputSource (const XMLCh *const baseId, const char *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 This constructor is identical to the second constructor above, except that it accepts the relative system id part as a local code page string and just transcodes it internally, as a convenience.
 URLInputSource (const XMLCh *const baseId, const char *const systemId, const char *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 This constructor is identical to the third constructor above, except that it accepts the relative and public ids as local code page strings and just transcodes them internally, as a convenience.
Destructor
 ~URLInputSource ()
Virtual methods
BinInputStream * makeStream () const
 This method will return a binary input stream derivative that will parse from the source refered to by the URL system id.
Getter methods
const XMLURL & urlSrc () const
 This method will return a const reference to the URL member which contains the system id in pre-parsed URL form.
+

Detailed Description

+This class is a derivative of the standard InputSource class. +

+It provides for the parser access to data which is referenced via a URL, as apposed to a local file name. The URL can be provided via an XMLURL class, as a fully qualified system id, or a base system id and a system id which may be fully qualified or may be relative to the base.

+As with all InputSource derivatives. The primary objective of an input source is to create an input stream via which the parser can spool in data from the referenced source.

+Note that the parse system does not necessarily support URL based XML entities out of the box. Support for socket based access is optional and controlled by the per-platform support. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
xercesc::URLInputSource::URLInputSource const XMLURL &  urlId,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
+
+ + + + + +
+   + + +

+This constructor accepts an already built URL. +

+It is assumed that it is correct and it will be used as is. In this case, no public id accepted, but it can still be set via the parent class' setPublicId() method.

+

Parameters:
+ + + +
urlId The URL which holds the system id of the entity to parse.
manager Pointer to the memory manager to be used to allocate objects.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xercesc::URLInputSource::URLInputSource const XMLCh *const   baseId,
const XMLCh *const   systemId,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
+
+ + + + + +
+   + + +

+This constructor takes a base system id URL and a possibly relative system id. +

+The relative part is parsed and, if it is indeed relative, it will be made relative to the passed base id. Otherwise, it will be taken as is.

+

Parameters:
+ + + + +
baseId The base system id URL which provides the base for any relative id part.
systemId The possibly relative system id URL. If its relative its based on baseId, else its taken as is.
manager Pointer to the memory manager to be used to allocate objects.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
xercesc::URLInputSource::URLInputSource const XMLCh *const   baseId,
const XMLCh *const   systemId,
const XMLCh *const   publicId,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
+
+ + + + + +
+   + + +

+This constructor is indentical to the previous one, except that it also allows you to set a public id if you want to. +

+

Parameters:
+ + + + + +
baseId The base system id URL which provides the base for any relative id part.
systemId The possibly relative system id URL. If its relative its based on baseId, else its taken as is.
publicId The optional public id to set. This is just passed on to the parent class for storage.
manager Pointer to the memory manager to be used to allocate objects.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
xercesc::URLInputSource::URLInputSource const XMLCh *const   baseId,
const char *const   systemId,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
+
+ + + + + +
+   + + +

+This constructor is identical to the second constructor above, except that it accepts the relative system id part as a local code page string and just transcodes it internally, as a convenience. +

+

Parameters:
+ + + + +
baseId The base system id URL which provides the base for any relative id part.
systemId The possibly relative system id URL. If its relative its based on baseId, else its taken as is.
manager Pointer to the memory manager to be used to allocate objects.
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
xercesc::URLInputSource::URLInputSource const XMLCh *const   baseId,
const char *const   systemId,
const char *const   publicId,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
+
+ + + + + +
+   + + +

+This constructor is identical to the third constructor above, except that it accepts the relative and public ids as local code page strings and just transcodes them internally, as a convenience. +

+

Parameters:
+ + + + + +
baseId The base system id URL which provides the base for any relative id part.
systemId The possibly relative system id URL. If its relative its based on baseId, else its taken as is.
publicId The optional public id to set. This is just passed on to the parent class for storage. on to the parent class for storage.
manager Pointer to the memory manager to be used to allocate objects.
+
+
+

+ + + + +
+ + + + + + + + +
xercesc::URLInputSource::~URLInputSource  ) 
+
+ + + + + +
+   + + +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + +
BinInputStream* xercesc::URLInputSource::makeStream  )  const [virtual]
+
+ + + + + +
+   + + +

+This method will return a binary input stream derivative that will parse from the source refered to by the URL system id. +

+ +

+Implements xercesc::InputSource.

+

+ + + + +
+ + + + + + + + +
const XMLURL & xercesc::URLInputSource::urlSrc  )  const [inline]
+
+ + + + + +
+   + + +

+This method will return a const reference to the URL member which contains the system id in pre-parsed URL form. +

+If you just want the string format, call getSystemId() on the parent class.

+

Returns:
A const reference to a URL object that contains the current system id set for this input source.
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1URLInputSource__inherit__graph.map b/docs/simple-api/classxercesc_1_1URLInputSource__inherit__graph.map new file mode 100644 index 00000000..5df572e8 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1URLInputSource__inherit__graph.map @@ -0,0 +1,3 @@ +base referer +rect $classxercesc_1_1InputSource.html 21,84 170,108 +rect $classxercesc_1_1XMemory.html 29,9 162,33 diff --git a/docs/simple-api/classxercesc_1_1URLInputSource__inherit__graph.md5 b/docs/simple-api/classxercesc_1_1URLInputSource__inherit__graph.md5 new file mode 100644 index 00000000..b55360e9 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1URLInputSource__inherit__graph.md5 @@ -0,0 +1 @@ +ca5cee6469a7fc92192561173e5d5351 \ No newline at end of file diff --git a/docs/simple-api/classxercesc_1_1URLInputSource__inherit__graph.png b/docs/simple-api/classxercesc_1_1URLInputSource__inherit__graph.png new file mode 100644 index 00000000..a37edd9c Binary files /dev/null and b/docs/simple-api/classxercesc_1_1URLInputSource__inherit__graph.png differ diff --git a/docs/simple-api/classxercesc_1_1XMLDeleter-members.html b/docs/simple-api/classxercesc_1_1XMLDeleter-members.html new file mode 100644 index 00000000..0ff135de --- /dev/null +++ b/docs/simple-api/classxercesc_1_1XMLDeleter-members.html @@ -0,0 +1,29 @@ + + +XQilla Simple API: Member List + + + + + + +

xercesc::XMLDeleter Member List

This is the complete list of members for xercesc::XMLDeleter, including all inherited members.

+ + +
XMLDeleter()xercesc::XMLDeleter [inline, protected]
~XMLDeleter()xercesc::XMLDeleter [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1XMLDeleter.html b/docs/simple-api/classxercesc_1_1XMLDeleter.html new file mode 100644 index 00000000..9f982a6c --- /dev/null +++ b/docs/simple-api/classxercesc_1_1XMLDeleter.html @@ -0,0 +1,96 @@ + + +XQilla Simple API: xercesc::XMLDeleter Class Reference + + + + + + + +

xercesc::XMLDeleter Class Reference

#include <PlatformUtils.hpp> +

+List of all members. + + + + + + + +

Public Member Functions

virtual ~XMLDeleter ()

Protected Member Functions

 XMLDeleter ()
+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::XMLDeleter::~XMLDeleter  )  [inline, virtual]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + + + + + +
xercesc::XMLDeleter::XMLDeleter  )  [inline, protected]
+
+ + + + + +
+   + + +

+

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1XMLEntityResolver-members.html b/docs/simple-api/classxercesc_1_1XMLEntityResolver-members.html new file mode 100644 index 00000000..8030e2c5 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1XMLEntityResolver-members.html @@ -0,0 +1,30 @@ + + +XQilla Simple API: Member List + + + + + + +

xercesc::XMLEntityResolver Member List

This is the complete list of members for xercesc::XMLEntityResolver, including all inherited members.

+ + + +
resolveEntity(XMLResourceIdentifier *resourceIdentifier)=0xercesc::XMLEntityResolver [pure virtual]
XMLEntityResolver()xercesc::XMLEntityResolver [inline, protected]
~XMLEntityResolver()xercesc::XMLEntityResolver [inline, virtual]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1XMLEntityResolver.html b/docs/simple-api/classxercesc_1_1XMLEntityResolver.html new file mode 100644 index 00000000..b2b808ec --- /dev/null +++ b/docs/simple-api/classxercesc_1_1XMLEntityResolver.html @@ -0,0 +1,196 @@ + + +XQilla Simple API: xercesc::XMLEntityResolver Class Reference + + + + + + + +

xercesc::XMLEntityResolver Class Reference

Revised interface for resolving entities. +More... +

+#include <XMLEntityResolver.hpp> +

+List of all members. + + + + + + + + + + + + + + +

Public Member Functions

Constructors and Destructor
virtual ~XMLEntityResolver ()
 Destructor.
The XMLEntityResolver interface
virtual InputSourceresolveEntity (XMLResourceIdentifier *resourceIdentifier)=0
 Allow the application to resolve external entities.

Protected Member Functions

 XMLEntityResolver ()
 Default Constructor.
+


Detailed Description

+Revised interface for resolving entities. +

+If an application needs to implement customized handling for external entities, it can implement this interface and register an instance with the parser using the parser's setXMLEntityResolver method or it can use the basic SAX interface (EntityResolver). The difference between the two interfaces is the arguments to the resolveEntity() method. With the SAX EntityResolve the arguments are systemId and publicId. With this interface the argument is a XMLResourceIdentifier object. Only one EntityResolver can be set using setEntityResolver() or setXMLEntityResolver, if both are set the last one set is used.

+The parser will then allow the application to intercept any external entities (including the external DTD subset and external parameter entities, if any) before including them.

+Many applications will not need to implement this interface, but it will be especially useful for applications that build XML documents from databases or other specialised input sources, or for applications that use URI types other than URLs.

+The following resolver would provide the application with a special character stream for the entity with the system identifier "http://www.myhost.com/today":

+ include <xercesc/util/XMLEntityResolver.hpp>
+ include <xercesc/sax/InputSource.hpp>
+
+  class MyResolver : public XMLEntityResolver {
+   public:
+    InputSource resolveEntity (XMLResourceIdentifier* xmlri);
+    ...
+   };
+
+  MyResolver::resolveEntity(XMLResourceIdentifier* xmlri) {
+   switch(xmlri->getResourceIdentifierType()) {
+    case XMLResourceIdentifier::SystemId:
+     if (XMLString::compareString(xmlri->getSystemId(), "http://www.myhost.com/today")) {
+      MyReader* reader = new MyReader();
+      return new InputSource(reader);
+     } else {
+      return null;
+     }
+     break;
+    default:
+     return null;
+   }
+  }

+The application can also use this interface to redirect system identifiers to local URIs or to look up replacements in a catalog (possibly by using the public identifier).

+The HandlerBase class implements the default behaviour for this interface, which is simply always to return null (to request that the parser use the default system identifier).

+

See also:
XMLResourceIdentifier

+Parser::setXMLEntityResolver

+InputSource::InputSource

+HandlerBase::HandlerBase

+ +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
virtual xercesc::XMLEntityResolver::~XMLEntityResolver  )  [inline, virtual]
+
+ + + + + +
+   + + +

+Destructor. +

+

+

+ + + + +
+ + + + + + + + +
xercesc::XMLEntityResolver::XMLEntityResolver  )  [inline, protected]
+
+ + + + + +
+   + + +

+Default Constructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
virtual InputSource* xercesc::XMLEntityResolver::resolveEntity XMLResourceIdentifier *  resourceIdentifier  )  [pure virtual]
+
+ + + + + +
+   + + +

+Allow the application to resolve external entities. +

+The Parser will call this method before opening any external entity except the top-level document entity (including the external DTD subset, external entities referenced within the DTD, and external entities referenced within the document element): the application may request that the parser resolve the entity itself, that it use an alternative URI, or that it use an entirely different input source.

+Application writers can use this method to redirect external system identifiers to secure and/or local URIs, to look up public identifiers in a catalogue, or to read an entity from a database or other input source (including, for example, a dialog box).

+If the system identifier is a URL, the SAX parser must resolve it fully before reporting it to the application.

+

Parameters:
+ + +
resourceIdentifier An object containing the type of resource to be resolved and the associated data members corresponding to this type.
+
+
Returns:
An InputSource object describing the new input source, or null to request that the parser open a regular URI connection to the system identifier. The returned InputSource is owned by the parser which is responsible to clean up the memory.
+
Exceptions:
+ + + +
SAXException Any SAX exception, possibly wrapping another exception.
IOException An IO exception, possibly the result of creating a new InputStream or Reader for the InputSource.
+
+
See also:
InputSource::InputSource

+XMLResourceIdentifier

+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1XMLPlatformUtils-members.html b/docs/simple-api/classxercesc_1_1XMLPlatformUtils-members.html new file mode 100644 index 00000000..18650805 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1XMLPlatformUtils-members.html @@ -0,0 +1,69 @@ + + +XQilla Simple API: Member List + + + + + + +

xercesc::XMLPlatformUtils Member List

This is the complete list of members for xercesc::XMLPlatformUtils, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
alignPointerForNewBlockAllocation(size_t ptrSize)xercesc::XMLPlatformUtils [inline, static]
atomicDecrement(int &location)xercesc::XMLPlatformUtils [static]
atomicIncrement(int &location)xercesc::XMLPlatformUtils [static]
closeFile(FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
closeMutex(void *const mtxHandle)xercesc::XMLPlatformUtils [static]
compareAndSwap(void **toFill, const void *const newValue, const void *const toCompare)xercesc::XMLPlatformUtils [static]
curFilePos(FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
fgArrayMemoryManagerxercesc::XMLPlatformUtils [static]
fgAtomicMutexxercesc::XMLPlatformUtils [static]
fgDefaultPanicHandlerxercesc::XMLPlatformUtils [static]
fgMemoryManagerxercesc::XMLPlatformUtils [static]
fgNetAccessorxercesc::XMLPlatformUtils [static]
fgTransServicexercesc::XMLPlatformUtils [static]
fgUserPanicHandlerxercesc::XMLPlatformUtils [static]
fileSize(FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
getCurrentDirectory(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
getCurrentMillis()xercesc::XMLPlatformUtils [static]
getFullPath(const XMLCh *const srcPath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
Initialize(const char *const locale=XMLUni::fgXercescDefaultLocale, const char *const nlsHome=0, PanicHandler *const panicHandler=0, MemoryManager *const memoryManager=0, bool toInitStatics=false)xercesc::XMLPlatformUtils [static]
isAnySlash(XMLCh c)xercesc::XMLPlatformUtils [inline, static]
isNELRecognized()xercesc::XMLPlatformUtils [static]
isRelative(const XMLCh *const toCheck, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
isStrictIANAEncoding()xercesc::XMLPlatformUtils [static]
loadMsgSet(const XMLCh *const msgDomain)xercesc::XMLPlatformUtils [static]
lockMutex(void *const mtxHandle)xercesc::XMLPlatformUtils [static]
makeMutex(MemoryManager *manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
openFile(const char *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
openFile(const XMLCh *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
openFileToWrite(const char *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
openFileToWrite(const XMLCh *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
openStdInHandle(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
panic(const PanicHandler::PanicReasons reason)xercesc::XMLPlatformUtils [static]
readFileBuffer(FileHandle theFile, const unsigned int toRead, XMLByte *const toFill, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
recognizeNEL(bool state, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
removeDotDotSlash(XMLCh *const srcPath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
removeDotSlash(XMLCh *const srcPath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
resetFile(FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
strictIANAEncoding(const bool state)xercesc::XMLPlatformUtils [static]
Terminate()xercesc::XMLPlatformUtils [static]
unlockMutex(void *const mtxHandle)xercesc::XMLPlatformUtils [static]
weavePaths(const XMLCh *const basePath, const XMLCh *const relativePath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]
writeBufferToFile(FileHandle const theFile, long toWrite, const XMLByte *const toFlush, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)xercesc::XMLPlatformUtils [static]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1XMLPlatformUtils.html b/docs/simple-api/classxercesc_1_1XMLPlatformUtils.html new file mode 100644 index 00000000..bbc8c73c --- /dev/null +++ b/docs/simple-api/classxercesc_1_1XMLPlatformUtils.html @@ -0,0 +1,1843 @@ + + +XQilla Simple API: xercesc::XMLPlatformUtils Class Reference + + + + + + + +

xercesc::XMLPlatformUtils Class Reference

Utilities that must be implemented in a platform-specific way. +More... +

+#include <PlatformUtils.hpp> +

+List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Static Public Member Functions

static size_t alignPointerForNewBlockAllocation (size_t ptrSize)
 Aligns the specified pointer per platform block allocation requirements.
Initialization amd Panic methods
static void Initialize (const char *const locale=XMLUni::fgXercescDefaultLocale, const char *const nlsHome=0, PanicHandler *const panicHandler=0, MemoryManager *const memoryManager=0, bool toInitStatics=false)
 Perform per-process parser initialization.
static void Terminate ()
 Perform per-process parser termination.
static void panic (const PanicHandler::PanicReasons reason)
 The panic mechanism.
File Methods
static unsigned int curFilePos (FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Get the current file position.
static void closeFile (FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Closes the file handle.
static unsigned int fileSize (FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Returns the file size.
static FileHandle openFile (const char *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Opens the file.
static FileHandle openFile (const XMLCh *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Opens a named file.
static FileHandle openFileToWrite (const char *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Open a named file to write.
static FileHandle openFileToWrite (const XMLCh *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Open a named file to write.
static FileHandle openStdInHandle (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Opens the standard input as a file.
static unsigned int readFileBuffer (FileHandle theFile, const unsigned int toRead, XMLByte *const toFill, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Reads the file buffer.
static void writeBufferToFile (FileHandle const theFile, long toWrite, const XMLByte *const toFlush, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Writes the buffer to the file.
static void resetFile (FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Resets the file handle.
File System Methods
static XMLCh * getFullPath (const XMLCh *const srcPath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Gets the full path from a relative path.
static XMLCh * getCurrentDirectory (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Gets the current working directory.
static bool isAnySlash (XMLCh c)
 Check if a charater is a slash.
static void removeDotSlash (XMLCh *const srcPath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Remove occurences of the pair of dot slash.
static void removeDotDotSlash (XMLCh *const srcPath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Remove occurences of the dot dot slash.
static bool isRelative (const XMLCh *const toCheck, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Determines if a path is relative or absolute.
static XMLCh * weavePaths (const XMLCh *const basePath, const XMLCh *const relativePath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 Utility to join two paths.
Timing Methods
static unsigned long getCurrentMillis ()
 Gets the system time in milliseconds.
Mutex Methods
static void closeMutex (void *const mtxHandle)
 Closes a mutex handle.
static void lockMutex (void *const mtxHandle)
 Locks a mutex handle.
static void * makeMutex (MemoryManager *manager=XMLPlatformUtils::fgMemoryManager)
 Make a new mutex.
static void unlockMutex (void *const mtxHandle)
 Unlocks a mutex.
External Message Support
static XMLMsgLoader * loadMsgSet (const XMLCh *const msgDomain)
 Loads the message set from among the available domains.
Miscellaneous synchronization methods
static void * compareAndSwap (void **toFill, const void *const newValue, const void *const toCompare)
 Conditionally updates or returns a single word variable atomically.
Atomic Increment and Decrement
static int atomicIncrement (int &location)
 Increments a single word variable atomically.
static int atomicDecrement (int &location)
 Decrements a single word variable atomically.
NEL Character Handling
static void recognizeNEL (bool state, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
 This function enables the recognition of NEL(0x85) char and LSEP (0x2028) as newline chars which is disabled by default.
static bool isNELRecognized ()
 Return the value of fgNEL flag.
Strict IANA Encoding Checking
static void strictIANAEncoding (const bool state)
 This function enables/disables strict IANA encoding names checking.
static bool isStrictIANAEncoding ()
 Returns whether a strict IANA encoding name check is enabled or disabled.

Static Public Attributes

Public Static Data
static XMLNetAccessor * fgNetAccessor
 The network accessor.
static XMLTransService * fgTransService
 The transcoding service.
static PanicHandler * fgUserPanicHandler
 The Panic Handler.
static PanicHandler * fgDefaultPanicHandler
 The Panic Handler.
static MemoryManagerfgMemoryManager
 The configurable memory manager.
static MemoryManagerfgArrayMemoryManager
 The array-allocating memory manager.
static XMLMutex * fgAtomicMutex
+


Detailed Description

+Utilities that must be implemented in a platform-specific way. +

+This class contains methods that must be implemented in a platform specific manner. The actual implementations of these methods are available in the per-platform files indide src/util/Platforms . +

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + +
static size_t xercesc::XMLPlatformUtils::alignPointerForNewBlockAllocation size_t  ptrSize  )  [inline, static]
+
+ + + + + +
+   + + +

+Aligns the specified pointer per platform block allocation requirements. +

+The results of this function may be altered by defining XML_PLATFORM_NEW_BLOCK_ALIGNMENT.

+

+ + + + +
+ + + + + + + + + +
static int xercesc::XMLPlatformUtils::atomicDecrement int &  location  )  [static]
+
+ + + + + +
+   + + +

+Decrements a single word variable atomically. +

+This must be implemented by the per-platform driver. The atomicDecrement subroutine increments one word in a single atomic operation. This operation is useful when a counter variable is shared between several threads or processes. When updating such a counter variable, it is important to make sure that the fetch, update, and store operations occur atomically (are not interruptible).

+

Parameters:
+ + +
location Specifies the address of the word variable to be decremented.
+
+
Returns:
The function return value is positive if the result of the operation was positive. Zero if the result of the operation was zero. Negative if the result of the operation was negative. Except for the zero case, the value returned may differ from the actual result of the operation - only the sign and zero/nonzero state is guaranteed to be correct.
+
+

+ + + + +
+ + + + + + + + + +
static int xercesc::XMLPlatformUtils::atomicIncrement int &  location  )  [static]
+
+ + + + + +
+   + + +

+Increments a single word variable atomically. +

+This must be implemented by the per-platform driver. The atomicIncrement subroutine increments one word in a single atomic operation. This operation is useful when a counter variable is shared between several threads or processes. When updating such a counter variable, it is important to make sure that the fetch, update, and store operations occur atomically (are not interruptible).

+

Parameters:
+ + +
location Specifies the address of the word variable to be incremented.
+
+
Returns:
The function return value is positive if the result of the operation was positive. Zero if the result of the operation was zero. Negative if the result of the operation was negative. Except for the zero case, the value returned may differ from the actual result of the operation - only the sign and zero/nonzero state is guaranteed to be correct.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static void xercesc::XMLPlatformUtils::closeFile FileHandle  theFile,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Closes the file handle. +

+This must be implemented by the per-platform driver, which should use local file services to close the passed file handle, and to destroy the passed file handle and any allocated data or system resources it contains.

+

Parameters:
+ + + +
theFile The file handle to close
manager The MemoryManager to use to allocate objects
+
+
+

+ + + + +
+ + + + + + + + + +
static void xercesc::XMLPlatformUtils::closeMutex void *const   mtxHandle  )  [static]
+
+ + + + + +
+   + + +

+Closes a mutex handle. +

+Each per-platform driver must implement this. Only it knows what the actual content of the passed mutex handle is.

+

Parameters:
+ + +
mtxHandle The mutex handle that you want to close
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void* xercesc::XMLPlatformUtils::compareAndSwap void **  toFill,
const void *const   newValue,
const void *const   toCompare
[static]
+
+ + + + + +
+   + + +

+Conditionally updates or returns a single word variable atomically. +

+This must be implemented by the per-platform driver. The compareAndSwap subroutine performs an atomic operation which compares the contents of a single word variable with a stored old value. If the values are equal, a new value is stored in the single word variable and TRUE is returned; otherwise, the old value is set to the current value of the single word variable and FALSE is returned.

+The compareAndSwap subroutine is useful when a word value must be updated only if it has not been changed since it was last read.

+Note: The word containing the single word variable must be aligned on a full word boundary.

+

Parameters:
+ + + + +
toFill Specifies the address of the single word variable
newValue Specifies the new value to be conditionally assigned to the single word variable.
toCompare Specifies the address of the old value to be checked against (and conditionally updated with) the value of the single word variable.
+
+
Returns:
Returns the new value assigned to the single word variable
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static unsigned int xercesc::XMLPlatformUtils::curFilePos FileHandle  theFile,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Get the current file position. +

+This must be implemented by the per-platform driver, which should use local file services to deterine the current position within the passed file.

+Since the file API provided here only reads, if the host platform supports separate read/write positions, only the read position is of any interest, and hence should be the one returned.

+

Parameters:
+ + + +
theFile The file handle
manager The MemoryManager to use to allocate objects
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static unsigned int xercesc::XMLPlatformUtils::fileSize FileHandle  theFile,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Returns the file size. +

+This must be implemented by the per-platform driver, which should use local file services to determine the current size of the file represented by the passed handle.

+

Parameters:
+ + + +
theFile The file handle whose size you want
manager The MemoryManager to use to allocate objects
+
+
Returns:
Returns the size of the file in bytes
+
+

+ + + + +
+ + + + + + + + + +
static XMLCh* xercesc::XMLPlatformUtils::getCurrentDirectory MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  )  [static]
+
+ + + + + +
+   + + +

+Gets the current working directory. +

+This must be implemented by the per-platform driver. It returns the current working directory is.

Parameters:
+ + +
manager The MemoryManager to use to allocate objects
+
+
Returns:
Returns the current working directory. This is dyanmically allocated and must be deleted by the caller when its no longer needed! The memory returned will be allocated using the static memory manager, if users do not supply a memory manager. Users then need to make sure to use either the default or user specific memory manager to deallocate the memory.
+
+

+ + + + +
+ + + + + + + + +
static unsigned long xercesc::XMLPlatformUtils::getCurrentMillis  )  [static]
+
+ + + + + +
+   + + +

+Gets the system time in milliseconds. +

+This must be implemented by the per-platform driver, which should use local services to return the current value of a running millisecond timer. Note that the value returned is only as accurate as the millisecond time of the underyling host system.

+

Returns:
Returns the system time as an unsigned long
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static XMLCh* xercesc::XMLPlatformUtils::getFullPath const XMLCh *const   srcPath,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Gets the full path from a relative path. +

+This must be implemented by the per-platform driver. It should complete a relative path using the 'current directory', or whatever the local equivalent of a current directory is. If the passed source path is actually fully qualified, then a straight copy of it will be returned.

+

Parameters:
+ + + +
srcPath The path of the file for which you want the full path
manager Pointer to the memory manager to be used to allocate objects.
+
+
Returns:
Returns the fully qualified path of the file name including the file name. This is dyanmically allocated and must be deleted by the caller when its no longer needed! The memory returned will beallocated using the static memory manager, if user do not supply a memory manager. Users then need to make sure to use either the default or user specific memory manager to deallocate the memory.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void xercesc::XMLPlatformUtils::Initialize const char *const   locale = XMLUni::fgXercescDefaultLocale,
const char *const   nlsHome = 0,
PanicHandler *const   panicHandler = 0,
MemoryManager *const   memoryManager = 0,
bool  toInitStatics = false
[static]
+
+ + + + + +
+   + + +

+Perform per-process parser initialization. +

+Initialization must be called first in any client code.

+The locale is set iff the Initialize() is invoked for the very first time, to ensure that each and every message loaders, in the process space, share the same locale.

+All subsequent invocations of Initialize(), with a different locale, have no effect on the message loaders, either instantiated, or to be instantiated.

+To set to a different locale, client application needs to Terminate() (or multiple Terminate() in the case where multiple Initialize() have been invoked before), followed by Initialize(new_locale).

+The default locale is "en_US".

+nlsHome: user specified location where MsgLoader retrieves error message files. the discussion above with regard to locale, applies to this nlsHome as well.

+panicHandler: application's panic handler, application owns this handler. Application shall make sure that the plugged panic handler persists through the call to XMLPlatformUtils::terminate().

+memoryManager: plugged-in memory manager which is owned by user applications. Applications must make sure that the plugged-in memory manager persist through the call to XMLPlatformUtils::terminate()

+

+ + + + +
+ + + + + + + + + +
static bool xercesc::XMLPlatformUtils::isAnySlash XMLCh  c  )  [inline, static]
+
+ + + + + +
+   + + +

+Check if a charater is a slash. +

+This must be implemented by the per-platform driver.

+

Parameters:
+ + +
c the character to be examined
+
+
Returns:
true if the character examined is a slash false otherwise
+
+

+ + + + +
+ + + + + + + + +
static bool xercesc::XMLPlatformUtils::isNELRecognized  )  [static]
+
+ + + + + +
+   + + +

+Return the value of fgNEL flag. +

+

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static bool xercesc::XMLPlatformUtils::isRelative const XMLCh *const   toCheck,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Determines if a path is relative or absolute. +

+This must be implemented by the per-platform driver, which should determine whether the passed path is relative or not. The concept of relative and absolute might be... well relative on different platforms. But, as long as the determination is made consistently and in coordination with the weavePaths() method, it should work for any platform.

+

Parameters:
+ + + +
toCheck The file name which you want to check
manager The MemoryManager to use to allocate objects
+
+
Returns:
Returns true if the filename appears to be relative
+
+

+ + + + +
+ + + + + + + + +
static bool xercesc::XMLPlatformUtils::isStrictIANAEncoding  )  [static]
+
+ + + + + +
+   + + +

+Returns whether a strict IANA encoding name check is enabled or disabled. +

+

+

+ + + + +
+ + + + + + + + + +
static XMLMsgLoader* xercesc::XMLPlatformUtils::loadMsgSet const XMLCh *const   msgDomain  )  [static]
+
+ + + + + +
+   + + +

+Loads the message set from among the available domains. +

+The returned object must be dynamically allocated and the caller becomes responsible for cleaning it up.

+

Parameters:
+ + +
msgDomain The message domain which you want to load
+
+
+

+ + + + +
+ + + + + + + + + +
static void xercesc::XMLPlatformUtils::lockMutex void *const   mtxHandle  )  [static]
+
+ + + + + +
+   + + +

+Locks a mutex handle. +

+Each per-platform driver must implement this. Only it knows what the actual content of the passed mutex handle is.

+

Parameters:
+ + +
mtxHandle The mutex handle that you want to lock
+
+
+

+ + + + +
+ + + + + + + + + +
static void* xercesc::XMLPlatformUtils::makeMutex MemoryManager manager = XMLPlatformUtils::fgMemoryManager  )  [static]
+
+ + + + + +
+   + + +

+Make a new mutex. +

+Each per-platform driver must implement this. Only it knows what the actual content of the passed mutex handle is. The returned handle pointer will be eventually passed to closeMutex() which is also implemented by the platform driver.

+

Parameters:
+ + +
manager The MemoryManager to use to allocate objects
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static FileHandle xercesc::XMLPlatformUtils::openFile const XMLCh *const   fileName,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Opens a named file. +

+This must be implemented by the per-platform driver, which should use local file services to open the passed file. If it fails, a null handle pointer should be returned.

+

Parameters:
+ + + +
fileName The string containing the name of the file
manager The MemoryManager to use to allocate objects
+
+
Returns:
The file handle of the opened file
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static FileHandle xercesc::XMLPlatformUtils::openFile const char *const   fileName,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Opens the file. +

+This must be implemented by the per-platform driver, which should use local file services to open passed file. If it fails, a null handle pointer should be returned.

+

Parameters:
+ + + +
fileName The string containing the name of the file
manager The MemoryManager to use to allocate objects
+
+
Returns:
The file handle of the opened file
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static FileHandle xercesc::XMLPlatformUtils::openFileToWrite const XMLCh *const   fileName,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Open a named file to write. +

+This must be implemented by the per-platform driver, which should use local file services to open the passed file. If it fails, a null handle pointer should be returned.

+

Parameters:
+ + + +
fileName The string containing the name of the file
manager The MemoryManager to use to allocate objects
+
+
Returns:
The file handle of the opened file
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static FileHandle xercesc::XMLPlatformUtils::openFileToWrite const char *const   fileName,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Open a named file to write. +

+This must be implemented by the per-platform driver, which should use local file services to open passed file. If it fails, a null handle pointer should be returned.

+

Parameters:
+ + + +
fileName The string containing the name of the file
manager The MemoryManager to use to allocate objects
+
+
Returns:
The file handle of the opened file
+
+

+ + + + +
+ + + + + + + + + +
static FileHandle xercesc::XMLPlatformUtils::openStdInHandle MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  )  [static]
+
+ + + + + +
+   + + +

+Opens the standard input as a file. +

+This must be implemented by the per-platform driver, which should use local file services to open a handle to the standard input. It should be a copy of the standard input handle, since it will be closed later!

+

Parameters:
+ + +
manager The MemoryManager to use to allocate objects
+
+
Returns:
The file handle of the standard input stream
+
+

+ + + + +
+ + + + + + + + + +
static void xercesc::XMLPlatformUtils::panic const PanicHandler::PanicReasons  reason  )  [static]
+
+ + + + + +
+   + + +

+The panic mechanism. +

+If, during initialization, we cannot even get far enough along to get transcoding up or get message loading working, we call this method.

+Each platform can implement it however they want. This method will delegate the panic handling to a user specified panic handler or in the absence of it, the default panic handler.

+In case the default panic handler does not support a particular platform, the platform specific panic hanlding shall be implemented here .

+

Parameters:
+ + +
reason The enumeration that defines the cause of the failure
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static unsigned int xercesc::XMLPlatformUtils::readFileBuffer FileHandle  theFile,
const unsigned int  toRead,
XMLByte *const   toFill,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Reads the file buffer. +

+This must be implemented by the per-platform driver, which should use local file services to read up to 'toRead' bytes of data from the passed file, and return those bytes in the 'toFill' buffer. It is not an error not to read the requested number of bytes. When the end of file is reached, zero should be returned.

+

Parameters:
+ + + + + +
theFile The file handle to be read from.
toRead The maximum number of byte to read from the current position
toFill The byte buffer to fill
manager The MemoryManager to use to allocate objects
+
+
Returns:
Returns the number of bytes read from the stream or file
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static void xercesc::XMLPlatformUtils::recognizeNEL bool  state,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+This function enables the recognition of NEL(0x85) char and LSEP (0x2028) as newline chars which is disabled by default. +

+It is only called once per process. Once it is set, any subsequent calls will result in exception being thrown.

+Note: 1. Turning this option on will make the parser non compliant to XML 1.0. 2. This option has no effect to document conforming to XML 1.1 compliant, which always recognize these two chars (0x85 and 0x2028) as newline characters.

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static void xercesc::XMLPlatformUtils::removeDotDotSlash XMLCh *const   srcPath,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Remove occurences of the dot dot slash. +

+To remove the sequence, slash dot dot slash and its preceding path segment if and only if the preceding path segment is not slash dot dot slash.

+

Parameters:
+ + + +
srcPath The path for which you want to remove the slash dot dot slash sequence and its preceding path segment.
manager The MemoryManager to use to allocate objects
+
+
Returns:
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static void xercesc::XMLPlatformUtils::removeDotSlash XMLCh *const   srcPath,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Remove occurences of the pair of dot slash. +

+To remove the sequence, dot slash if it is part of the sequence, slash dot slash.

+

Parameters:
+ + + +
srcPath The path for which you want to remove the dot slash sequence.
manager The MemoryManager to use to allocate objects
+
+
Returns:
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
static void xercesc::XMLPlatformUtils::resetFile FileHandle  theFile,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Resets the file handle. +

+This must be implemented by the per-platform driver which will use local file services to reset the file position to the start of the the file.

+

Parameters:
+ + + +
theFile The file handle that you want to reset
manager The MemoryManager to use to allocate objects
+
+
+

+ + + + +
+ + + + + + + + + +
static void xercesc::XMLPlatformUtils::strictIANAEncoding const bool  state  )  [static]
+
+ + + + + +
+   + + +

+This function enables/disables strict IANA encoding names checking. +

+The strict checking is disabled by default.

+

Parameters:
+ + +
state If true, a strict IANA encoding name check is performed, otherwise, no checking.
+
+
+

+ + + + +
+ + + + + + + + +
static void xercesc::XMLPlatformUtils::Terminate  )  [static]
+
+ + + + + +
+   + + +

+Perform per-process parser termination. +

+The termination call is currently optional, to aid those dynamically loading the parser to clean up before exit, or to avoid spurious reports from leak detectors.

+

+ + + + +
+ + + + + + + + + +
static void xercesc::XMLPlatformUtils::unlockMutex void *const   mtxHandle  )  [static]
+
+ + + + + +
+   + + +

+Unlocks a mutex. +

+Each per-platform driver must implement this. Only it knows what the actual content of the passed mutex handle is.

+Note that, since the underlying system synchronization services are used, Xerces cannot guarantee that lock/unlock operations are correctly enforced on a per-thread basis or that incorrect nesting of lock/unlock operations will be caught.

+

Parameters:
+ + +
mtxHandle The mutex handle that you want to unlock
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static XMLCh* xercesc::XMLPlatformUtils::weavePaths const XMLCh *const   basePath,
const XMLCh *const   relativePath,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Utility to join two paths. +

+This must be implemented by the per-platform driver, and should weave the relative path part together with the base part and return a new path that represents this combination.

+If the relative part turns out to be fully qualified, it will be returned as is. If it is not, then it will be woven onto the passed base path, by removing one path component for each leading "../" (or whatever is the equivalent in the local system) in the relative path.

+

Parameters:
+ + + + +
basePath The string containing the base path
relativePath The string containing the relative path
manager The MemoryManager to use to allocate objects
+
+
Returns:
Returns a string containing the 'woven' path. It should be dynamically allocated and becomes the responsibility of the caller to delete.
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void xercesc::XMLPlatformUtils::writeBufferToFile FileHandle const   theFile,
long  toWrite,
const XMLByte *const   toFlush,
MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager
[static]
+
+ + + + + +
+   + + +

+Writes the buffer to the file. +

+This must be implemented by the per-platform driver, which should use local file services to write up to 'toWrite' bytes of data to the passed file. Unless exception raised by local file services, 'toWrite' bytes of data is to be written to the passed file.

+

Parameters:
+ + + + + +
theFile The file handle to be written to.
toWrite The maximum number of byte to write from the current position
toFlush The byte buffer to flush
manager The MemoryManager to use to allocate objects
+
+
Returns:
void
+
+


Member Data Documentation

+

+ + + + +
+ + + + +
MemoryManager* xercesc::XMLPlatformUtils::fgArrayMemoryManager [static]
+
+ + + + + +
+   + + +

+The array-allocating memory manager. +

+This memory manager always allocates memory by calling the global new[] operator. It may be used to allocate memory where such memory needs to be deletable by calling delete []. Since this allocator is always guaranteed to do the same thing there is no reason, nor facility, to override it.

+

+ + + + +
+ + + + +
XMLMutex* xercesc::XMLPlatformUtils::fgAtomicMutex [static]
+
+ + + + + +
+   + + +

+

+

+ + + + +
+ + + + +
PanicHandler* xercesc::XMLPlatformUtils::fgDefaultPanicHandler [static]
+
+ + + + + +
+   + + +

+The Panic Handler. +

+This is the default panic handler.

+

+ + + + +
+ + + + +
MemoryManager* xercesc::XMLPlatformUtils::fgMemoryManager [static]
+
+ + + + + +
+   + + +

+The configurable memory manager. +

+This is the pluggable memory manager. If it is not provided by an application, a default implementation is used.

+

+ + + + +
+ + + + +
XMLNetAccessor* xercesc::XMLPlatformUtils::fgNetAccessor [static]
+
+ + + + + +
+   + + +

+The network accessor. +

+This is provided by the per-platform driver, so each platform can choose what actual implementation it wants to use. The object must be dynamically allocated.

+Note that you may optionally, if your platform driver does not install a network accessor, set it manually from your client code after calling Initialize(). This works because this object is not required during initialization, and only comes into play during actual XML parsing.

+

+ + + + +
+ + + + +
XMLTransService* xercesc::XMLPlatformUtils::fgTransService [static]
+
+ + + + + +
+   + + +

+The transcoding service. +

+This is provided by the per platform driver, so each platform can choose what implemenation it wants to use. When the platform independent initialization code needs to get a transcoding service object, it will call makeTransService() to ask the per-platform code to create one. Only one transcoding service object is reqeusted per-process, so it is shared and synchronized among parser instances within that process.

+

+ + + + +
+ + + + +
PanicHandler* xercesc::XMLPlatformUtils::fgUserPanicHandler [static]
+
+ + + + + +
+   + + +

+The Panic Handler. +

+This is the application provided panic handler.

+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1XMemory-members.html b/docs/simple-api/classxercesc_1_1XMemory-members.html new file mode 100644 index 00000000..0bde238b --- /dev/null +++ b/docs/simple-api/classxercesc_1_1XMemory-members.html @@ -0,0 +1,34 @@ + + +XQilla Simple API: Member List + + + + + + +

xercesc::XMemory Member List

This is the complete list of members for xercesc::XMemory, including all inherited members.

+ + + + + + + +
operator delete(void *p)xercesc::XMemory
operator delete(void *p, MemoryManager *memMgr)xercesc::XMemory
operator delete(void *p, void *ptr)xercesc::XMemory
operator new(size_t size)xercesc::XMemory
operator new(size_t size, MemoryManager *memMgr)xercesc::XMemory
operator new(size_t size, void *ptr)xercesc::XMemory
XMemory()xercesc::XMemory [inline, protected]


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1XMemory.html b/docs/simple-api/classxercesc_1_1XMemory.html new file mode 100644 index 00000000..8caa7424 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1XMemory.html @@ -0,0 +1,362 @@ + + +XQilla Simple API: xercesc::XMemory Class Reference + + + + + + + +

xercesc::XMemory Class Reference

This class makes it possible to override the C++ memory management by adding new/delete operators to this base class. +More... +

+#include <XMemory.hpp> +

+Inheritance diagram for xercesc::XMemory:

Inheritance graph
+ + + + + + + + + + + + +
[legend]
List of all members. + + + + + + + + + + + + + + + + + + + + + + + + + + +

Public Member Functions

The C++ memory management
void * operator new (size_t size)
 This method overrides operator new.
void * operator new (size_t size, MemoryManager *memMgr)
 This method defines a custom operator new, that will use the provided memory manager to perform the allocation.
void * operator new (size_t size, void *ptr)
 This method overrides placement operator new.
void operator delete (void *p)
 This method overrides operator delete.
void operator delete (void *p, MemoryManager *memMgr)
 This method provides a matching delete for the custom operator new.
void operator delete (void *p, void *ptr)
 This method provides a matching delete for the placement new.

Protected Member Functions

Constructor
 XMemory ()
 Protected default constructor.
+

Detailed Description

+This class makes it possible to override the C++ memory management by adding new/delete operators to this base class. +

+This class is used in conjuction with the pluggable memory manager. It allows applications to control Xerces memory management. +

+


Constructor & Destructor Documentation

+

+ + + + +
+ + + + + + + + +
xercesc::XMemory::XMemory  )  [inline, protected]
+
+ + + + + +
+   + + +

+Protected default constructor. +

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void xercesc::XMemory::operator delete void *  p,
void *  ptr
+
+ + + + + +
+   + + +

+This method provides a matching delete for the placement new. +

+

Parameters:
+ + + +
p The pointer to the allocated memory
ptr The memory location where the object had to be allocated
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void xercesc::XMemory::operator delete void *  p,
MemoryManager memMgr
+
+ + + + + +
+   + + +

+This method provides a matching delete for the custom operator new. +

+

Parameters:
+ + + +
p The pointer to the allocated memory
memMgr An application's memory manager
+
+
+

+ + + + +
+ + + + + + + + + +
void xercesc::XMemory::operator delete void *  p  ) 
+
+ + + + + +
+   + + +

+This method overrides operator delete. +

+

Parameters:
+ + +
p The pointer to the allocated memory
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void* xercesc::XMemory::operator new size_t  size,
void *  ptr
+
+ + + + + +
+   + + +

+This method overrides placement operator new. +

+

Parameters:
+ + + +
size The requested memory size
ptr The memory location where the object should be allocated
+
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
void* xercesc::XMemory::operator new size_t  size,
MemoryManager memMgr
+
+ + + + + +
+   + + +

+This method defines a custom operator new, that will use the provided memory manager to perform the allocation. +

+

Parameters:
+ + + +
size The requested memory size
memMgr An application's memory manager
+
+
+

+ + + + +
+ + + + + + + + + +
void* xercesc::XMemory::operator new size_t  size  ) 
+
+ + + + + +
+   + + +

+This method overrides operator new. +

+

Parameters:
+ + +
size The requested memory size
+
+
+


The documentation for this class was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/classxercesc_1_1XMemory__inherit__graph.map b/docs/simple-api/classxercesc_1_1XMemory__inherit__graph.map new file mode 100644 index 00000000..cf32e7d6 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1XMemory__inherit__graph.map @@ -0,0 +1,11 @@ +base referer +rect $classItemFactory.html 228,8 318,32 +rect $classScope.html 214,56 332,80 +rect $classSequence.html 232,104 314,128 +rect $classStaticContext.html 222,152 324,176 +rect $classVarHashEntry.html 192,200 354,224 +rect $classVariableStore.html 222,248 324,272 +rect $classVariableTypeStore.html 208,296 338,320 +rect $classxercesc_1_1InputSource.html 198,344 348,368 +rect $classXQilla.html 244,392 302,416 +rect $classXQQuery.html 234,440 312,464 diff --git a/docs/simple-api/classxercesc_1_1XMemory__inherit__graph.md5 b/docs/simple-api/classxercesc_1_1XMemory__inherit__graph.md5 new file mode 100644 index 00000000..7d8ddf30 --- /dev/null +++ b/docs/simple-api/classxercesc_1_1XMemory__inherit__graph.md5 @@ -0,0 +1 @@ +5962b5fd497845d0cf9f81cbca84f37e \ No newline at end of file diff --git a/docs/simple-api/classxercesc_1_1XMemory__inherit__graph.png b/docs/simple-api/classxercesc_1_1XMemory__inherit__graph.png new file mode 100644 index 00000000..1a408b92 Binary files /dev/null and b/docs/simple-api/classxercesc_1_1XMemory__inherit__graph.png differ diff --git a/docs/simple-api/doxygen.css b/docs/simple-api/doxygen.css new file mode 100644 index 00000000..05615b2e --- /dev/null +++ b/docs/simple-api/doxygen.css @@ -0,0 +1,310 @@ +BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { + font-family: Geneva, Arial, Helvetica, sans-serif; +} +BODY,TD { + font-size: 90%; +} +H1 { + text-align: center; + font-size: 160%; +} +H2 { + font-size: 120%; +} +H3 { + font-size: 100%; +} +CAPTION { font-weight: bold } +DIV.qindex { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.nav { + width: 100%; + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + padding: 2px; + line-height: 140%; +} +DIV.navtab { + background-color: #e8eef2; + border: 1px solid #84b0c7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} +TD.navtab { + font-size: 70%; +} +A.qindex { + text-decoration: none; + font-weight: bold; + color: #1A419D; +} +A.qindex:visited { + text-decoration: none; + font-weight: bold; + color: #1A419D +} +A.qindex:hover { + text-decoration: none; + background-color: #ddddff; +} +A.qindexHL { + text-decoration: none; + font-weight: bold; + background-color: #6666cc; + color: #ffffff; + border: 1px double #9295C2; +} +A.qindexHL:hover { + text-decoration: none; + background-color: #6666cc; + color: #ffffff; +} +A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} +A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} +A.codeRef:link { font-weight: normal; color: #0000FF} +A.codeRef:visited { font-weight: normal; color: #0000FF} +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +.fragment { + font-family: Fixed, monospace; + font-size: 95%; +} +PRE.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + margin-top: 4px; + margin-bottom: 4px; + margin-left: 2px; + margin-right: 8px; + padding-left: 6px; + padding-right: 6px; + padding-top: 4px; + padding-bottom: 4px; +} +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } +TD.md { background-color: #F4F4FB; font-weight: bold; } +TD.mdPrefix { + background-color: #F4F4FB; + color: #606060; + font-size: 80%; +} +TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; } +TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; } +DIV.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} +DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } +BODY { + background: white; + color: black; + margin-right: 20px; + margin-left: 20px; +} +TD.indexkey { + background-color: #e8eef2; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TD.indexvalue { + background-color: #e8eef2; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px; + border: 1px solid #CCCCCC; +} +TR.memlist { + background-color: #f0f0f0; +} +P.formulaDsp { text-align: center; } +IMG.formulaDsp { } +IMG.formulaInl { vertical-align: middle; } +SPAN.keyword { color: #008000 } +SPAN.keywordtype { color: #604020 } +SPAN.keywordflow { color: #e08000 } +SPAN.comment { color: #800000 } +SPAN.preprocessor { color: #806020 } +SPAN.stringliteral { color: #002080 } +SPAN.charliteral { color: #008080 } +.mdTable { + border: 1px solid #868686; + background-color: #F4F4FB; +} +.mdRow { + padding: 8px 10px; +} +.mdescLeft { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.mdescRight { + padding: 0px 8px 4px 8px; + font-size: 80%; + font-style: italic; + background-color: #FAFAFA; + border-top: 1px none #E0E0E0; + border-right: 1px none #E0E0E0; + border-bottom: 1px none #E0E0E0; + border-left: 1px none #E0E0E0; + margin: 0px; +} +.memItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemLeft { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplItemRight { + padding: 1px 8px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: none; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + background-color: #FAFAFA; + font-size: 80%; +} +.memTemplParams { + padding: 1px 0px 0px 8px; + margin: 4px; + border-top-width: 1px; + border-right-width: 1px; + border-bottom-width: 1px; + border-left-width: 1px; + border-top-color: #E0E0E0; + border-right-color: #E0E0E0; + border-bottom-color: #E0E0E0; + border-left-color: #E0E0E0; + border-top-style: solid; + border-right-style: none; + border-bottom-style: none; + border-left-style: none; + color: #606060; + background-color: #FAFAFA; + font-size: 80%; +} +.search { color: #003399; + font-weight: bold; +} +FORM.search { + margin-bottom: 0px; + margin-top: 0px; +} +INPUT.search { font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +TD.tiny { font-size: 75%; +} +a { + color: #1A41A8; +} +a:visited { + color: #2A3798; +} +.dirtab { padding: 4px; + border-collapse: collapse; + border: 1px solid #84b0c7; +} +TH.dirtab { background: #e8eef2; + font-weight: bold; +} +HR { height: 1px; + border: none; + border-top: 1px solid black; +} + diff --git a/docs/simple-api/doxygen.png b/docs/simple-api/doxygen.png new file mode 100644 index 00000000..f0a274bb Binary files /dev/null and b/docs/simple-api/doxygen.png differ diff --git a/docs/simple-api/files.html b/docs/simple-api/files.html new file mode 100644 index 00000000..27c9acc3 --- /dev/null +++ b/docs/simple-api/files.html @@ -0,0 +1,88 @@ + + +XQilla Simple API: File Index + + + + + + +

XQilla Simple API File List

Here is a list of all files with brief descriptions: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AnyAtomicType.hpp [code]
ATAnySimpleType.hpp [code]
ATAnyURIOrDerived.hpp [code]
ATBase64BinaryOrDerived.hpp [code]
ATBooleanOrDerived.hpp [code]
ATDateOrDerived.hpp [code]
ATDateTimeOrDerived.hpp [code]
ATDecimalOrDerived.hpp [code]
ATDoubleOrDerived.hpp [code]
ATDurationOrDerived.hpp [code]
ATFloatOrDerived.hpp [code]
ATGDayOrDerived.hpp [code]
ATGMonthDayOrDerived.hpp [code]
ATGMonthOrDerived.hpp [code]
ATGYearMonthOrDerived.hpp [code]
ATGYearOrDerived.hpp [code]
ATHexBinaryOrDerived.hpp [code]
ATNotationOrDerived.hpp [code]
ATQNameOrDerived.hpp [code]
ATStringOrDerived.hpp [code]
ATTimeOrDerived.hpp [code]
ATUntypedAtomic.hpp [code]
Collation.hpp [code]
ContextHelpers.hpp [code]
DateOrTimeType.hpp [code]
DOMDocument.hpp [code]
DOMNode.hpp [code]
DOMXPathNSResolver.hpp [code]
DynamicContext.hpp [code]
InputSource.hpp [code]
Item.hpp [code]
ItemFactory.hpp [code]
LocalFileInputSource.hpp [code]
MemBufInputSource.hpp [code]
MemoryManager.hpp [code]
ModuleResolver.hpp [code]
Node.hpp [code]
Numeric.hpp [code]
NumericTypeConstructor.hpp [code]
PlatformUtils.hpp [code]
ReferenceCounted.hpp [code]
Result.hpp [code]
Scope.hpp [code]
Sequence.hpp [code]
StaticContext.hpp [code]
StaticResolutionContext.hpp [code]
StdInInputSource.hpp [code]
StringPool.hpp [code]
Timezone.hpp [code]
URIResolver.hpp [code]
URLInputSource.hpp [code]
VarHashEntry.hpp [code]
VariableStore.hpp [code]
VariableTypeStore.hpp [code]
XMemory.hpp [code]
XMLEntityResolver.hpp [code]
XPath2MemoryManager.hpp [code]
XQDebugCallback.hpp [code]
XQException.hpp [code]
XQilla.hpp [code]
XQQuery.hpp [code]
XQScopedNamespace.hpp [code]
+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions.html b/docs/simple-api/functions.html new file mode 100644 index 00000000..7590b757 --- /dev/null +++ b/docs/simple-api/functions.html @@ -0,0 +1,81 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- _ -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x61.html b/docs/simple-api/functions_0x61.html new file mode 100644 index 00000000..c37bfd9b --- /dev/null +++ b/docs/simple-api/functions_0x61.html @@ -0,0 +1,120 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- a -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x62.html b/docs/simple-api/functions_0x62.html new file mode 100644 index 00000000..ad229652 --- /dev/null +++ b/docs/simple-api/functions_0x62.html @@ -0,0 +1,75 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- b -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x63.html b/docs/simple-api/functions_0x63.html new file mode 100644 index 00000000..8de6f25b --- /dev/null +++ b/docs/simple-api/functions_0x63.html @@ -0,0 +1,170 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- c -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x64.html b/docs/simple-api/functions_0x64.html new file mode 100644 index 00000000..8fe47edf --- /dev/null +++ b/docs/simple-api/functions_0x64.html @@ -0,0 +1,112 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- d -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x65.html b/docs/simple-api/functions_0x65.html new file mode 100644 index 00000000..13fbcc19 --- /dev/null +++ b/docs/simple-api/functions_0x65.html @@ -0,0 +1,84 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- e -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x66.html b/docs/simple-api/functions_0x66.html new file mode 100644 index 00000000..ab8dfaac --- /dev/null +++ b/docs/simple-api/functions_0x66.html @@ -0,0 +1,96 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- f -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x67.html b/docs/simple-api/functions_0x67.html new file mode 100644 index 00000000..9a44c327 --- /dev/null +++ b/docs/simple-api/functions_0x67.html @@ -0,0 +1,202 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- g -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x68.html b/docs/simple-api/functions_0x68.html new file mode 100644 index 00000000..e623d43d --- /dev/null +++ b/docs/simple-api/functions_0x68.html @@ -0,0 +1,77 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- h -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x69.html b/docs/simple-api/functions_0x69.html new file mode 100644 index 00000000..4d11cef8 --- /dev/null +++ b/docs/simple-api/functions_0x69.html @@ -0,0 +1,123 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- i -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x6a.html b/docs/simple-api/functions_0x6a.html new file mode 100644 index 00000000..112905ed --- /dev/null +++ b/docs/simple-api/functions_0x6a.html @@ -0,0 +1,73 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- j -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x6c.html b/docs/simple-api/functions_0x6c.html new file mode 100644 index 00000000..350958f2 --- /dev/null +++ b/docs/simple-api/functions_0x6c.html @@ -0,0 +1,83 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- l -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x6d.html b/docs/simple-api/functions_0x6d.html new file mode 100644 index 00000000..9e6b653d --- /dev/null +++ b/docs/simple-api/functions_0x6d.html @@ -0,0 +1,80 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- m -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x6e.html b/docs/simple-api/functions_0x6e.html new file mode 100644 index 00000000..14222e42 --- /dev/null +++ b/docs/simple-api/functions_0x6e.html @@ -0,0 +1,95 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- n -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x6f.html b/docs/simple-api/functions_0x6f.html new file mode 100644 index 00000000..2dacd5f8 --- /dev/null +++ b/docs/simple-api/functions_0x6f.html @@ -0,0 +1,91 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- o -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x70.html b/docs/simple-api/functions_0x70.html new file mode 100644 index 00000000..57807f89 --- /dev/null +++ b/docs/simple-api/functions_0x70.html @@ -0,0 +1,88 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- p -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x71.html b/docs/simple-api/functions_0x71.html new file mode 100644 index 00000000..a7a13c12 --- /dev/null +++ b/docs/simple-api/functions_0x71.html @@ -0,0 +1,73 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- q -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x72.html b/docs/simple-api/functions_0x72.html new file mode 100644 index 00000000..a7e455b0 --- /dev/null +++ b/docs/simple-api/functions_0x72.html @@ -0,0 +1,107 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- r -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x73.html b/docs/simple-api/functions_0x73.html new file mode 100644 index 00000000..b2b82360 --- /dev/null +++ b/docs/simple-api/functions_0x73.html @@ -0,0 +1,156 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- s -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x74.html b/docs/simple-api/functions_0x74.html new file mode 100644 index 00000000..6af17cd8 --- /dev/null +++ b/docs/simple-api/functions_0x74.html @@ -0,0 +1,89 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- t -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x75.html b/docs/simple-api/functions_0x75.html new file mode 100644 index 00000000..900fa3fb --- /dev/null +++ b/docs/simple-api/functions_0x75.html @@ -0,0 +1,78 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- u -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x76.html b/docs/simple-api/functions_0x76.html new file mode 100644 index 00000000..83ff712c --- /dev/null +++ b/docs/simple-api/functions_0x76.html @@ -0,0 +1,77 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- v -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x77.html b/docs/simple-api/functions_0x77.html new file mode 100644 index 00000000..87e0b2d5 --- /dev/null +++ b/docs/simple-api/functions_0x77.html @@ -0,0 +1,74 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- w -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x78.html b/docs/simple-api/functions_0x78.html new file mode 100644 index 00000000..a24a682a --- /dev/null +++ b/docs/simple-api/functions_0x78.html @@ -0,0 +1,83 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- x -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x79.html b/docs/simple-api/functions_0x79.html new file mode 100644 index 00000000..d7d57829 --- /dev/null +++ b/docs/simple-api/functions_0x79.html @@ -0,0 +1,73 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- y -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_0x7e.html b/docs/simple-api/functions_0x7e.html new file mode 100644 index 00000000..f1960376 --- /dev/null +++ b/docs/simple-api/functions_0x7e.html @@ -0,0 +1,113 @@ + + +XQilla Simple API: Class Members + + + + + + + +
+ +
+ +

+Here is a list of all class members with links to the classes they belong to: +

+

- ~ -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_enum.html b/docs/simple-api/functions_enum.html new file mode 100644 index 00000000..6e54188d --- /dev/null +++ b/docs/simple-api/functions_enum.html @@ -0,0 +1,51 @@ + + +XQilla Simple API: Class Members - Enumerations + + + + + + + +  +

+

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_eval.html b/docs/simple-api/functions_eval.html new file mode 100644 index 00000000..4d6240a2 --- /dev/null +++ b/docs/simple-api/functions_eval.html @@ -0,0 +1,173 @@ + + +XQilla Simple API: Class Members - Enumerator + + + + + + + +
+ +
+ +

+  +

+

- a -

+

- b -

+

- c -

+

- d -

+

- e -

+

- f -

+

- g -

+

- h -

+

- i -

+

- l -

+

- n -

+

- o -

+

- p -

+

- q -

+

- s -

+

- t -

+

- u -

+

- x -

+

- y -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func.html b/docs/simple-api/functions_func.html new file mode 100644 index 00000000..92cf5ebb --- /dev/null +++ b/docs/simple-api/functions_func.html @@ -0,0 +1,112 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- a -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x62.html b/docs/simple-api/functions_func_0x62.html new file mode 100644 index 00000000..9ed4035b --- /dev/null +++ b/docs/simple-api/functions_func_0x62.html @@ -0,0 +1,70 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- b -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x63.html b/docs/simple-api/functions_func_0x63.html new file mode 100644 index 00000000..14aa8bb5 --- /dev/null +++ b/docs/simple-api/functions_func_0x63.html @@ -0,0 +1,154 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- c -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x64.html b/docs/simple-api/functions_func_0x64.html new file mode 100644 index 00000000..7060a027 --- /dev/null +++ b/docs/simple-api/functions_func_0x64.html @@ -0,0 +1,96 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- d -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x65.html b/docs/simple-api/functions_func_0x65.html new file mode 100644 index 00000000..a5bfac54 --- /dev/null +++ b/docs/simple-api/functions_func_0x65.html @@ -0,0 +1,76 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- e -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x66.html b/docs/simple-api/functions_func_0x66.html new file mode 100644 index 00000000..4ad055f1 --- /dev/null +++ b/docs/simple-api/functions_func_0x66.html @@ -0,0 +1,73 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- f -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x67.html b/docs/simple-api/functions_func_0x67.html new file mode 100644 index 00000000..d95fa928 --- /dev/null +++ b/docs/simple-api/functions_func_0x67.html @@ -0,0 +1,190 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- g -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x68.html b/docs/simple-api/functions_func_0x68.html new file mode 100644 index 00000000..be4e03c9 --- /dev/null +++ b/docs/simple-api/functions_func_0x68.html @@ -0,0 +1,73 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- h -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x69.html b/docs/simple-api/functions_func_0x69.html new file mode 100644 index 00000000..95da47f2 --- /dev/null +++ b/docs/simple-api/functions_func_0x69.html @@ -0,0 +1,117 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- i -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x6a.html b/docs/simple-api/functions_func_0x6a.html new file mode 100644 index 00000000..d30b2d91 --- /dev/null +++ b/docs/simple-api/functions_func_0x6a.html @@ -0,0 +1,70 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- j -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x6c.html b/docs/simple-api/functions_func_0x6c.html new file mode 100644 index 00000000..9969681b --- /dev/null +++ b/docs/simple-api/functions_func_0x6c.html @@ -0,0 +1,77 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- l -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x6d.html b/docs/simple-api/functions_func_0x6d.html new file mode 100644 index 00000000..82d39cec --- /dev/null +++ b/docs/simple-api/functions_func_0x6d.html @@ -0,0 +1,76 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- m -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x6e.html b/docs/simple-api/functions_func_0x6e.html new file mode 100644 index 00000000..117b0a56 --- /dev/null +++ b/docs/simple-api/functions_func_0x6e.html @@ -0,0 +1,75 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- n -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x6f.html b/docs/simple-api/functions_func_0x6f.html new file mode 100644 index 00000000..cdf76413 --- /dev/null +++ b/docs/simple-api/functions_func_0x6f.html @@ -0,0 +1,80 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- o -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x70.html b/docs/simple-api/functions_func_0x70.html new file mode 100644 index 00000000..5f271064 --- /dev/null +++ b/docs/simple-api/functions_func_0x70.html @@ -0,0 +1,76 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- p -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x72.html b/docs/simple-api/functions_func_0x72.html new file mode 100644 index 00000000..f87379b5 --- /dev/null +++ b/docs/simple-api/functions_func_0x72.html @@ -0,0 +1,102 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- r -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x73.html b/docs/simple-api/functions_func_0x73.html new file mode 100644 index 00000000..aecfc8fc --- /dev/null +++ b/docs/simple-api/functions_func_0x73.html @@ -0,0 +1,146 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- s -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x74.html b/docs/simple-api/functions_func_0x74.html new file mode 100644 index 00000000..f1484444 --- /dev/null +++ b/docs/simple-api/functions_func_0x74.html @@ -0,0 +1,75 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- t -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x75.html b/docs/simple-api/functions_func_0x75.html new file mode 100644 index 00000000..cd155df7 --- /dev/null +++ b/docs/simple-api/functions_func_0x75.html @@ -0,0 +1,73 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- u -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x76.html b/docs/simple-api/functions_func_0x76.html new file mode 100644 index 00000000..97d017fb --- /dev/null +++ b/docs/simple-api/functions_func_0x76.html @@ -0,0 +1,72 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- v -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x77.html b/docs/simple-api/functions_func_0x77.html new file mode 100644 index 00000000..6bc9c679 --- /dev/null +++ b/docs/simple-api/functions_func_0x77.html @@ -0,0 +1,71 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- w -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x78.html b/docs/simple-api/functions_func_0x78.html new file mode 100644 index 00000000..46e72231 --- /dev/null +++ b/docs/simple-api/functions_func_0x78.html @@ -0,0 +1,76 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- x -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_func_0x7e.html b/docs/simple-api/functions_func_0x7e.html new file mode 100644 index 00000000..1330cd55 --- /dev/null +++ b/docs/simple-api/functions_func_0x7e.html @@ -0,0 +1,110 @@ + + +XQilla Simple API: Class Members - Functions + + + + + + + +
+ +
+ +

+  +

+

- ~ -

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_type.html b/docs/simple-api/functions_type.html new file mode 100644 index 00000000..2de9215c --- /dev/null +++ b/docs/simple-api/functions_type.html @@ -0,0 +1,56 @@ + + +XQilla Simple API: Class Members - Typedefs + + + + + + + +  +

+

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/functions_vars.html b/docs/simple-api/functions_vars.html new file mode 100644 index 00000000..b73e23a0 --- /dev/null +++ b/docs/simple-api/functions_vars.html @@ -0,0 +1,132 @@ + + +XQilla Simple API: Class Members - Variables + + + + + + + +
+ +
+ +

+  +

+

- _ -

+

- a -

    +
  • attribute_string +: Node
+

- c -

+

- d -

    +
  • document_string +: Node
+

- e -

    +
  • element_string +: Node
+

- f -

+

- g -

+

- i -

+

- n -

+

- o -

+

- p -

+

- s -

+

- t -

    +
  • text_string +: Node
+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/globals.html b/docs/simple-api/globals.html new file mode 100644 index 00000000..736d8509 --- /dev/null +++ b/docs/simple-api/globals.html @@ -0,0 +1,110 @@ + + +XQilla Simple API: Class Members + + + + + + +
+ +
+
+ +
+ +

+Here is a list of all file members with links to the files they belong to: +

+

- a -

    +
  • AFXQ_COLLATION_H__6BA76C4A_0A5B_480B_9870_86A89A118100__INCLUDED_ +: Collation.hpp
  • AFXQ_CONTEXTHELPERS_H__D6A320F5_21F1_421D_9E46_E4373B375E1A__INCLUDED_ +: ContextHelpers.hpp
  • AFXQ_XQDEBUGCALLBACK_H__446AD191_E9D0_4658_BD8C_032D29DA125F__INCLUDED_ +: XQDebugCallback.hpp
  • AFXQ_XQEXCEPTION_H__446AD191_E9D0_4658_BD8C_032D29DA123E__INCLUDED_ +: XQException.hpp
  • AFXQ_XQSCOPEDNAMESPACE_H__D6A320F5_21F1_421D_9E46_E4373B375E1A__INCLUDED_ +: XQScopedNamespace.hpp
  • AFXQ_XQUERY_H__FAA9933A_2F10_49A4_93A2_857E2A8C48E3__INCLUDED_ +: XQQuery.hpp
+

- g -

+

- i -

+

- l -

+

- m -

+

- n -

+

- o -

+

- p -

+

- s -

+

- u -

+

- v -

+

- x -

+
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/globals_defs.html b/docs/simple-api/globals_defs.html new file mode 100644 index 00000000..30d86870 --- /dev/null +++ b/docs/simple-api/globals_defs.html @@ -0,0 +1,58 @@ + + +XQilla Simple API: Class Members + + + + + + +
+ +
+  +

+

+
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/globals_func.html b/docs/simple-api/globals_func.html new file mode 100644 index 00000000..2a60ea36 --- /dev/null +++ b/docs/simple-api/globals_func.html @@ -0,0 +1,41 @@ + + +XQilla Simple API: Class Members + + + + + + +
+ +
+  +

+

+
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/globals_type.html b/docs/simple-api/globals_type.html new file mode 100644 index 00000000..a6e45e7b --- /dev/null +++ b/docs/simple-api/globals_type.html @@ -0,0 +1,43 @@ + + +XQilla Simple API: Class Members + + + + + + +
+ +
+  +

+

+
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/graph_legend.dot b/docs/simple-api/graph_legend.dot new file mode 100644 index 00000000..5420927d --- /dev/null +++ b/docs/simple-api/graph_legend.dot @@ -0,0 +1,22 @@ +digraph G +{ + edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10]; + node [fontname="Helvetica",fontsize=10,shape=record]; + Node9 [shape="box",label="Inherited",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",style="filled" fontcolor="white"]; + Node10 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"]; + Node10 [shape="box",label="PublicBase",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classPublicBase.html"]; + Node11 -> Node10 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"]; + Node11 [shape="box",label="Truncated",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="red",URL="$classTruncated.html"]; + Node13 -> Node9 [dir=back,color="darkgreen",fontsize=10,style="solid",fontname="Helvetica"]; + Node13 [shape="box",label="ProtectedBase",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classProtectedBase.html"]; + Node14 -> Node9 [dir=back,color="firebrick4",fontsize=10,style="solid",fontname="Helvetica"]; + Node14 [shape="box",label="PrivateBase",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classPrivateBase.html"]; + Node15 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"]; + Node15 [shape="box",label="Undocumented",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="grey75"]; + Node16 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"]; + Node16 [shape="box",label="Templ< int >",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classTempl.html"]; + Node17 -> Node16 [dir=back,color="orange",fontsize=10,style="dashed",label="< int >",fontname="Helvetica"]; + Node17 [shape="box",label="Templ< T >",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classTempl.html"]; + Node18 -> Node9 [dir=back,color="darkorchid3",fontsize=10,style="dashed",label="m_usedClass",fontname="Helvetica"]; + Node18 [shape="box",label="Used",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classUsed.html"]; +} diff --git a/docs/simple-api/graph_legend.html b/docs/simple-api/graph_legend.html new file mode 100644 index 00000000..aad4138c --- /dev/null +++ b/docs/simple-api/graph_legend.html @@ -0,0 +1,81 @@ + + +XQilla Simple API: Graph Legend + + + + + +

Graph Legend

This page explains how to interpret the graphs that are generated by doxygen.

+Consider the following example:

/*! Invisible class because of truncation */
+class Invisible { };
+
+/*! Truncated class, inheritance relation is hidden */
+class Truncated : public Invisible { };
+
+/* Class not documented with doxygen comments */
+class Undocumented { };
+
+/*! Class that is inherited using public inheritance */
+class PublicBase : public Truncated { };
+
+/*! A template class */
+template<class T> class Templ { };
+
+/*! Class that is inherited using protected inheritance */
+class ProtectedBase { };
+
+/*! Class that is inherited using private inheritance */
+class PrivateBase { };
+
+/*! Class that is used by the Inherited class */
+class Used { };
+
+/*! Super class that inherits a number of other classes */
+class Inherited : public PublicBase,
+                  protected ProtectedBase,
+                  private PrivateBase,
+                  public Undocumented
+                  public Templ<int>
+{
+  private:
+    Used *m_usedClass;
+};
+
If the MAX_DOT_GRAPH_HEIGHT tag in the configuration file is set to 240 this will result in the following graph:

+

+graph_legend.png +
+

+The boxes in the above graph have the following meaning:

    +
  • +A filled black box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a grey border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+The arrows have the following meaning:
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance.
  • +
+
Generated on Tue Dec 12 00:18:58 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/graph_legend.png b/docs/simple-api/graph_legend.png new file mode 100644 index 00000000..d9ad2c05 Binary files /dev/null and b/docs/simple-api/graph_legend.png differ diff --git a/docs/simple-api/hierarchy.html b/docs/simple-api/hierarchy.html new file mode 100644 index 00000000..c3091f36 --- /dev/null +++ b/docs/simple-api/hierarchy.html @@ -0,0 +1,124 @@ + + +XQilla Simple API: Hierarchical Index + + + + + + +

XQilla Simple API Class Hierarchy

Go to the graphical class hierarchy +

+This inheritance list is sorted roughly, but not completely, alphabetically:

+
Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/index.html b/docs/simple-api/index.html new file mode 100644 index 00000000..9369eefe --- /dev/null +++ b/docs/simple-api/index.html @@ -0,0 +1,21 @@ + + +XQilla Simple API: Main Page + + + + + +

XQilla Simple API Documentation

+

+

1.0


Generated on Tue Dec 12 00:18:56 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/inherit__graph__0.map b/docs/simple-api/inherit__graph__0.map new file mode 100644 index 00000000..0831cce3 --- /dev/null +++ b/docs/simple-api/inherit__graph__0.map @@ -0,0 +1,2 @@ +base referer +rect $classAutoContextInfoReset.html 9,8 161,32 diff --git a/docs/simple-api/inherit__graph__0.md5 b/docs/simple-api/inherit__graph__0.md5 new file mode 100644 index 00000000..22e5118a --- /dev/null +++ b/docs/simple-api/inherit__graph__0.md5 @@ -0,0 +1 @@ +bf5b2d4c8929e84ab6e504b4b6354144 \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__0.png b/docs/simple-api/inherit__graph__0.png new file mode 100644 index 00000000..262f6404 Binary files /dev/null and b/docs/simple-api/inherit__graph__0.png differ diff --git a/docs/simple-api/inherit__graph__1.map b/docs/simple-api/inherit__graph__1.map new file mode 100644 index 00000000..416bd21e --- /dev/null +++ b/docs/simple-api/inherit__graph__1.map @@ -0,0 +1,2 @@ +base referer +rect $classAutoContextItemTypeReset.html 9,8 193,32 diff --git a/docs/simple-api/inherit__graph__1.md5 b/docs/simple-api/inherit__graph__1.md5 new file mode 100644 index 00000000..f3a26c54 --- /dev/null +++ b/docs/simple-api/inherit__graph__1.md5 @@ -0,0 +1 @@ +eb3db0c156ed480e5ac5e8c245350c82 \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__1.png b/docs/simple-api/inherit__graph__1.png new file mode 100644 index 00000000..6c2afc4e Binary files /dev/null and b/docs/simple-api/inherit__graph__1.png differ diff --git a/docs/simple-api/inherit__graph__10.map b/docs/simple-api/inherit__graph__10.map new file mode 100644 index 00000000..d53ebe65 --- /dev/null +++ b/docs/simple-api/inherit__graph__10.map @@ -0,0 +1,2 @@ +base referer +rect $classModuleResolver.html 7,8 125,32 diff --git a/docs/simple-api/inherit__graph__10.md5 b/docs/simple-api/inherit__graph__10.md5 new file mode 100644 index 00000000..3f5be1bb --- /dev/null +++ b/docs/simple-api/inherit__graph__10.md5 @@ -0,0 +1 @@ +65d3729bcb63fc0dfe73bd8416d0f0b1 \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__10.png b/docs/simple-api/inherit__graph__10.png new file mode 100644 index 00000000..38117f6a Binary files /dev/null and b/docs/simple-api/inherit__graph__10.png differ diff --git a/docs/simple-api/inherit__graph__11.map b/docs/simple-api/inherit__graph__11.map new file mode 100644 index 00000000..bb6fc195 --- /dev/null +++ b/docs/simple-api/inherit__graph__11.map @@ -0,0 +1,2 @@ +base referer +rect $classNumericTypeConstructor.html 9,8 177,32 diff --git a/docs/simple-api/inherit__graph__11.md5 b/docs/simple-api/inherit__graph__11.md5 new file mode 100644 index 00000000..1a76788a --- /dev/null +++ b/docs/simple-api/inherit__graph__11.md5 @@ -0,0 +1 @@ +4b11182e7a4aa516682a7f5687d80dca \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__11.png b/docs/simple-api/inherit__graph__11.png new file mode 100644 index 00000000..af8c2dc1 Binary files /dev/null and b/docs/simple-api/inherit__graph__11.png differ diff --git a/docs/simple-api/inherit__graph__12.map b/docs/simple-api/inherit__graph__12.map new file mode 100644 index 00000000..9bfc0aa5 --- /dev/null +++ b/docs/simple-api/inherit__graph__12.map @@ -0,0 +1,2 @@ +base referer +rect $classRefCountPointer.html 9,8 158,32 diff --git a/docs/simple-api/inherit__graph__12.md5 b/docs/simple-api/inherit__graph__12.md5 new file mode 100644 index 00000000..d6eb7788 --- /dev/null +++ b/docs/simple-api/inherit__graph__12.md5 @@ -0,0 +1 @@ +3333af69181558c15cfd927f57d2652c \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__12.png b/docs/simple-api/inherit__graph__12.png new file mode 100644 index 00000000..ca98d303 Binary files /dev/null and b/docs/simple-api/inherit__graph__12.png differ diff --git a/docs/simple-api/inherit__graph__13.map b/docs/simple-api/inherit__graph__13.map new file mode 100644 index 00000000..6b43c343 --- /dev/null +++ b/docs/simple-api/inherit__graph__13.map @@ -0,0 +1,29 @@ +base referer +rect $classReferenceCounted.html 7,320 141,344 +rect $classItem.html 205,296 253,320 +rect $classTimezone.html 189,344 269,368 +rect $classAnyAtomicType.html 317,272 431,296 +rect $classNode.html 347,320 401,344 +rect $classATAnySimpleType.html 507,8 635,32 +rect $classATAnyURIOrDerived.html 499,56 643,80 +rect $classATBase64BinaryOrDerived.html 481,104 662,128 +rect $classATBooleanOrDerived.html 498,152 645,176 +rect $classATDurationOrDerived.html 497,200 646,224 +rect $classATHexBinaryOrDerived.html 491,248 651,272 +rect $classATNotationOrDerived.html 497,296 646,320 +rect $classATQNameOrDerived.html 499,344 643,368 +rect $classATStringOrDerived.html 505,392 638,416 +rect $classATUntypedAtomic.html 507,440 635,464 +rect $classDateOrTimeType.html 510,488 633,512 +rect $classNumeric.html 535,704 607,728 +rect $classATDateOrDerived.html 735,296 861,320 +rect $classATDateTimeOrDerived.html 721,344 875,368 +rect $classATGDayOrDerived.html 733,392 863,416 +rect $classATGMonthDayOrDerived.html 714,440 882,464 +rect $classATGMonthOrDerived.html 725,488 871,512 +rect $classATGYearMonthOrDerived.html 713,536 883,560 +rect $classATGYearOrDerived.html 731,584 865,608 +rect $classATTimeOrDerived.html 734,632 862,656 +rect $classATDecimalOrDerived.html 725,680 871,704 +rect $classATDoubleOrDerived.html 727,728 869,752 +rect $classATFloatOrDerived.html 734,776 862,800 diff --git a/docs/simple-api/inherit__graph__13.md5 b/docs/simple-api/inherit__graph__13.md5 new file mode 100644 index 00000000..e100c843 --- /dev/null +++ b/docs/simple-api/inherit__graph__13.md5 @@ -0,0 +1 @@ +e303392db84f7abc39fcfc0e067baf70 \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__13.png b/docs/simple-api/inherit__graph__13.png new file mode 100644 index 00000000..f8ace182 Binary files /dev/null and b/docs/simple-api/inherit__graph__13.png differ diff --git a/docs/simple-api/inherit__graph__14.map b/docs/simple-api/inherit__graph__14.map new file mode 100644 index 00000000..c67ddd07 --- /dev/null +++ b/docs/simple-api/inherit__graph__14.map @@ -0,0 +1,2 @@ +base referer +rect $classResult.html 9,8 67,32 diff --git a/docs/simple-api/inherit__graph__14.md5 b/docs/simple-api/inherit__graph__14.md5 new file mode 100644 index 00000000..1791a589 --- /dev/null +++ b/docs/simple-api/inherit__graph__14.md5 @@ -0,0 +1 @@ +92bd846ceb3ccca538ade5b841cf2bfc \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__14.png b/docs/simple-api/inherit__graph__14.png new file mode 100644 index 00000000..7b188546 Binary files /dev/null and b/docs/simple-api/inherit__graph__14.png differ diff --git a/docs/simple-api/inherit__graph__15.map b/docs/simple-api/inherit__graph__15.map new file mode 100644 index 00000000..15ec2a4f --- /dev/null +++ b/docs/simple-api/inherit__graph__15.map @@ -0,0 +1,2 @@ +base referer +rect $classStaticResolutionContext.html 9,8 171,32 diff --git a/docs/simple-api/inherit__graph__15.md5 b/docs/simple-api/inherit__graph__15.md5 new file mode 100644 index 00000000..2a9cc6ec --- /dev/null +++ b/docs/simple-api/inherit__graph__15.md5 @@ -0,0 +1 @@ +be0c44f91222031e9fa2f7e120590a6f \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__15.png b/docs/simple-api/inherit__graph__15.png new file mode 100644 index 00000000..4ab2d55e Binary files /dev/null and b/docs/simple-api/inherit__graph__15.png differ diff --git a/docs/simple-api/inherit__graph__16.map b/docs/simple-api/inherit__graph__16.map new file mode 100644 index 00000000..235c2d2a --- /dev/null +++ b/docs/simple-api/inherit__graph__16.map @@ -0,0 +1,2 @@ +base referer +rect $classStringPool.html 8,8 90,32 diff --git a/docs/simple-api/inherit__graph__16.md5 b/docs/simple-api/inherit__graph__16.md5 new file mode 100644 index 00000000..5ac9e2d7 --- /dev/null +++ b/docs/simple-api/inherit__graph__16.md5 @@ -0,0 +1 @@ +a1603d69e977bf136a8882417427889d \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__16.png b/docs/simple-api/inherit__graph__16.png new file mode 100644 index 00000000..76102443 Binary files /dev/null and b/docs/simple-api/inherit__graph__16.png differ diff --git a/docs/simple-api/inherit__graph__17.map b/docs/simple-api/inherit__graph__17.map new file mode 100644 index 00000000..5966c047 --- /dev/null +++ b/docs/simple-api/inherit__graph__17.map @@ -0,0 +1,2 @@ +base referer +rect $classURIResolver.html 9,8 105,32 diff --git a/docs/simple-api/inherit__graph__17.md5 b/docs/simple-api/inherit__graph__17.md5 new file mode 100644 index 00000000..cad55a2e --- /dev/null +++ b/docs/simple-api/inherit__graph__17.md5 @@ -0,0 +1 @@ +0a3af387e9e39dac8f5b1215f103a5b9 \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__17.png b/docs/simple-api/inherit__graph__17.png new file mode 100644 index 00000000..10e10d7b Binary files /dev/null and b/docs/simple-api/inherit__graph__17.png differ diff --git a/docs/simple-api/inherit__graph__18.map b/docs/simple-api/inherit__graph__18.map new file mode 100644 index 00000000..d732d97f --- /dev/null +++ b/docs/simple-api/inherit__graph__18.map @@ -0,0 +1,3 @@ +base referer +rect $classxercesc_1_1DOMNode.html 9,8 148,32 +rect $classxercesc_1_1DOMDocument.html 198,8 366,32 diff --git a/docs/simple-api/inherit__graph__18.md5 b/docs/simple-api/inherit__graph__18.md5 new file mode 100644 index 00000000..9c3dc15b --- /dev/null +++ b/docs/simple-api/inherit__graph__18.md5 @@ -0,0 +1 @@ +81796cc3b164704268b6afad62ec9062 \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__18.png b/docs/simple-api/inherit__graph__18.png new file mode 100644 index 00000000..891ce458 Binary files /dev/null and b/docs/simple-api/inherit__graph__18.png differ diff --git a/docs/simple-api/inherit__graph__19.map b/docs/simple-api/inherit__graph__19.map new file mode 100644 index 00000000..6494fae2 --- /dev/null +++ b/docs/simple-api/inherit__graph__19.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1DOMXPathNSResolver.html 9,8 222,32 diff --git a/docs/simple-api/inherit__graph__19.md5 b/docs/simple-api/inherit__graph__19.md5 new file mode 100644 index 00000000..419d343d --- /dev/null +++ b/docs/simple-api/inherit__graph__19.md5 @@ -0,0 +1 @@ +69cf994319299157409f8d5da17fafac \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__19.png b/docs/simple-api/inherit__graph__19.png new file mode 100644 index 00000000..11f04f10 Binary files /dev/null and b/docs/simple-api/inherit__graph__19.png differ diff --git a/docs/simple-api/inherit__graph__2.map b/docs/simple-api/inherit__graph__2.map new file mode 100644 index 00000000..b90f408c --- /dev/null +++ b/docs/simple-api/inherit__graph__2.map @@ -0,0 +1,2 @@ +base referer +rect $classAutoDeallocate.html 9,8 179,32 diff --git a/docs/simple-api/inherit__graph__2.md5 b/docs/simple-api/inherit__graph__2.md5 new file mode 100644 index 00000000..bb9be917 --- /dev/null +++ b/docs/simple-api/inherit__graph__2.md5 @@ -0,0 +1 @@ +73e2d729351f7c9d212e026cc8a978b6 \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__2.png b/docs/simple-api/inherit__graph__2.png new file mode 100644 index 00000000..64fd21e8 Binary files /dev/null and b/docs/simple-api/inherit__graph__2.png differ diff --git a/docs/simple-api/inherit__graph__20.map b/docs/simple-api/inherit__graph__20.map new file mode 100644 index 00000000..16250664 --- /dev/null +++ b/docs/simple-api/inherit__graph__20.map @@ -0,0 +1,3 @@ +base referer +rect $classxercesc_1_1MemoryManager.html 8,8 186,32 +rect $classXPath2MemoryManager.html 234,8 402,32 diff --git a/docs/simple-api/inherit__graph__20.md5 b/docs/simple-api/inherit__graph__20.md5 new file mode 100644 index 00000000..3e51766f --- /dev/null +++ b/docs/simple-api/inherit__graph__20.md5 @@ -0,0 +1 @@ +bfe83025a589619c7c6e3a77bf9ec5f6 \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__20.png b/docs/simple-api/inherit__graph__20.png new file mode 100644 index 00000000..89d9c886 Binary files /dev/null and b/docs/simple-api/inherit__graph__20.png differ diff --git a/docs/simple-api/inherit__graph__21.map b/docs/simple-api/inherit__graph__21.map new file mode 100644 index 00000000..255d7a31 --- /dev/null +++ b/docs/simple-api/inherit__graph__21.map @@ -0,0 +1,17 @@ +base referer +rect $classxercesc_1_1XMemory.html 9,224 142,248 +rect $classItemFactory.html 227,8 318,32 +rect $classScope.html 214,56 331,80 +rect $classSequence.html 231,104 314,128 +rect $classStaticContext.html 222,152 323,176 +rect $classVarHashEntry.html 191,200 354,224 +rect $classVariableStore.html 222,248 323,272 +rect $classVariableTypeStore.html 207,296 338,320 +rect $classxercesc_1_1InputSource.html 198,344 347,368 +rect $classXQilla.html 243,392 302,416 +rect $classXQQuery.html 234,440 311,464 +rect $classDynamicContext.html 443,152 563,176 +rect $classxercesc_1_1LocalFileInputSource.html 403,272 603,296 +rect $classxercesc_1_1MemBufInputSource.html 405,320 602,344 +rect $classxercesc_1_1StdInInputSource.html 414,368 593,392 +rect $classxercesc_1_1URLInputSource.html 415,416 591,440 diff --git a/docs/simple-api/inherit__graph__21.md5 b/docs/simple-api/inherit__graph__21.md5 new file mode 100644 index 00000000..0a0d3e33 --- /dev/null +++ b/docs/simple-api/inherit__graph__21.md5 @@ -0,0 +1 @@ +d69e5182f26eca33859cdbc8a52e5742 \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__21.png b/docs/simple-api/inherit__graph__21.png new file mode 100644 index 00000000..dd25e3df Binary files /dev/null and b/docs/simple-api/inherit__graph__21.png differ diff --git a/docs/simple-api/inherit__graph__22.map b/docs/simple-api/inherit__graph__22.map new file mode 100644 index 00000000..a3a78fcb --- /dev/null +++ b/docs/simple-api/inherit__graph__22.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1XMLDeleter.html 8,8 154,32 diff --git a/docs/simple-api/inherit__graph__22.md5 b/docs/simple-api/inherit__graph__22.md5 new file mode 100644 index 00000000..8f601bab --- /dev/null +++ b/docs/simple-api/inherit__graph__22.md5 @@ -0,0 +1 @@ +1e8c00e4086e8ac04962b86dc5c277d3 \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__22.png b/docs/simple-api/inherit__graph__22.png new file mode 100644 index 00000000..ff534a33 Binary files /dev/null and b/docs/simple-api/inherit__graph__22.png differ diff --git a/docs/simple-api/inherit__graph__23.map b/docs/simple-api/inherit__graph__23.map new file mode 100644 index 00000000..2d427d7f --- /dev/null +++ b/docs/simple-api/inherit__graph__23.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1XMLEntityResolver.html 9,8 198,32 diff --git a/docs/simple-api/inherit__graph__23.md5 b/docs/simple-api/inherit__graph__23.md5 new file mode 100644 index 00000000..82f6cda8 --- /dev/null +++ b/docs/simple-api/inherit__graph__23.md5 @@ -0,0 +1 @@ +0bf33ad010ed722bc4d36d9b0ca44507 \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__23.png b/docs/simple-api/inherit__graph__23.png new file mode 100644 index 00000000..1e3492cc Binary files /dev/null and b/docs/simple-api/inherit__graph__23.png differ diff --git a/docs/simple-api/inherit__graph__24.map b/docs/simple-api/inherit__graph__24.map new file mode 100644 index 00000000..447b71f2 --- /dev/null +++ b/docs/simple-api/inherit__graph__24.map @@ -0,0 +1,2 @@ +base referer +rect $classxercesc_1_1XMLPlatformUtils.html 9,8 187,32 diff --git a/docs/simple-api/inherit__graph__24.md5 b/docs/simple-api/inherit__graph__24.md5 new file mode 100644 index 00000000..d56e3b64 --- /dev/null +++ b/docs/simple-api/inherit__graph__24.md5 @@ -0,0 +1 @@ +8e467adf9e37a74aff188c7e8f32033d \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__24.png b/docs/simple-api/inherit__graph__24.png new file mode 100644 index 00000000..d460d939 Binary files /dev/null and b/docs/simple-api/inherit__graph__24.png differ diff --git a/docs/simple-api/inherit__graph__25.map b/docs/simple-api/inherit__graph__25.map new file mode 100644 index 00000000..02ff82a5 --- /dev/null +++ b/docs/simple-api/inherit__graph__25.map @@ -0,0 +1,2 @@ +base referer +rect $classXQDebugCallback.html 9,8 139,32 diff --git a/docs/simple-api/inherit__graph__25.md5 b/docs/simple-api/inherit__graph__25.md5 new file mode 100644 index 00000000..aabca69b --- /dev/null +++ b/docs/simple-api/inherit__graph__25.md5 @@ -0,0 +1 @@ +f0fb23134f5664b28addf154790e75a6 \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__25.png b/docs/simple-api/inherit__graph__25.png new file mode 100644 index 00000000..6c83df75 Binary files /dev/null and b/docs/simple-api/inherit__graph__25.png differ diff --git a/docs/simple-api/inherit__graph__26.map b/docs/simple-api/inherit__graph__26.map new file mode 100644 index 00000000..4eae138a --- /dev/null +++ b/docs/simple-api/inherit__graph__26.map @@ -0,0 +1,2 @@ +base referer +rect $classXQException.html 9,8 107,32 diff --git a/docs/simple-api/inherit__graph__26.md5 b/docs/simple-api/inherit__graph__26.md5 new file mode 100644 index 00000000..791b2b4a --- /dev/null +++ b/docs/simple-api/inherit__graph__26.md5 @@ -0,0 +1 @@ +b383c6f2dfe920d5930a94033fe27245 \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__26.png b/docs/simple-api/inherit__graph__26.png new file mode 100644 index 00000000..22f942aa Binary files /dev/null and b/docs/simple-api/inherit__graph__26.png differ diff --git a/docs/simple-api/inherit__graph__27.map b/docs/simple-api/inherit__graph__27.map new file mode 100644 index 00000000..d4b4b6e0 --- /dev/null +++ b/docs/simple-api/inherit__graph__27.map @@ -0,0 +1,2 @@ +base referer +rect $classXQillaAllocator.html 9,8 163,32 diff --git a/docs/simple-api/inherit__graph__27.md5 b/docs/simple-api/inherit__graph__27.md5 new file mode 100644 index 00000000..dbe9cdac --- /dev/null +++ b/docs/simple-api/inherit__graph__27.md5 @@ -0,0 +1 @@ +562b21820ca6b7eafa5889c8aa007c99 \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__27.png b/docs/simple-api/inherit__graph__27.png new file mode 100644 index 00000000..f13835e5 Binary files /dev/null and b/docs/simple-api/inherit__graph__27.png differ diff --git a/docs/simple-api/inherit__graph__28.map b/docs/simple-api/inherit__graph__28.map new file mode 100644 index 00000000..d8f1584e --- /dev/null +++ b/docs/simple-api/inherit__graph__28.map @@ -0,0 +1,2 @@ +base referer +rect $structXQillaAllocator_1_1rebind.html 7,8 261,32 diff --git a/docs/simple-api/inherit__graph__28.md5 b/docs/simple-api/inherit__graph__28.md5 new file mode 100644 index 00000000..17ea727e --- /dev/null +++ b/docs/simple-api/inherit__graph__28.md5 @@ -0,0 +1 @@ +0df3a1bb3e6c13414bd3dcb321b818df \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__28.png b/docs/simple-api/inherit__graph__28.png new file mode 100644 index 00000000..819c6fa5 Binary files /dev/null and b/docs/simple-api/inherit__graph__28.png differ diff --git a/docs/simple-api/inherit__graph__29.map b/docs/simple-api/inherit__graph__29.map new file mode 100644 index 00000000..e6c5091d --- /dev/null +++ b/docs/simple-api/inherit__graph__29.map @@ -0,0 +1,2 @@ +base referer +rect $classXQScopedNamespace.html 9,8 166,32 diff --git a/docs/simple-api/inherit__graph__29.md5 b/docs/simple-api/inherit__graph__29.md5 new file mode 100644 index 00000000..60c1c5f8 --- /dev/null +++ b/docs/simple-api/inherit__graph__29.md5 @@ -0,0 +1 @@ +02519aa001cbed95870a555c63c5e01a \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__29.png b/docs/simple-api/inherit__graph__29.png new file mode 100644 index 00000000..ed09da0f Binary files /dev/null and b/docs/simple-api/inherit__graph__29.png differ diff --git a/docs/simple-api/inherit__graph__3.map b/docs/simple-api/inherit__graph__3.map new file mode 100644 index 00000000..5b2346d4 --- /dev/null +++ b/docs/simple-api/inherit__graph__3.map @@ -0,0 +1,2 @@ +base referer +rect $classAutoDelete.html 9,8 155,32 diff --git a/docs/simple-api/inherit__graph__3.md5 b/docs/simple-api/inherit__graph__3.md5 new file mode 100644 index 00000000..5174b194 --- /dev/null +++ b/docs/simple-api/inherit__graph__3.md5 @@ -0,0 +1 @@ +d30a38740ad8e247cffad159323d3438 \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__3.png b/docs/simple-api/inherit__graph__3.png new file mode 100644 index 00000000..4fd6fa57 Binary files /dev/null and b/docs/simple-api/inherit__graph__3.png differ diff --git a/docs/simple-api/inherit__graph__4.map b/docs/simple-api/inherit__graph__4.map new file mode 100644 index 00000000..d73d8b34 --- /dev/null +++ b/docs/simple-api/inherit__graph__4.map @@ -0,0 +1,2 @@ +base referer +rect $classAutoDeleteArray.html 8,8 186,32 diff --git a/docs/simple-api/inherit__graph__4.md5 b/docs/simple-api/inherit__graph__4.md5 new file mode 100644 index 00000000..f30ac53a --- /dev/null +++ b/docs/simple-api/inherit__graph__4.md5 @@ -0,0 +1 @@ +a6101a18517b3d7f11d67b9265330664 \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__4.png b/docs/simple-api/inherit__graph__4.png new file mode 100644 index 00000000..f2501cc1 Binary files /dev/null and b/docs/simple-api/inherit__graph__4.png differ diff --git a/docs/simple-api/inherit__graph__5.map b/docs/simple-api/inherit__graph__5.map new file mode 100644 index 00000000..f0e6c65e --- /dev/null +++ b/docs/simple-api/inherit__graph__5.map @@ -0,0 +1,2 @@ +base referer +rect $classAutoNodeSetOrderingReset.html 7,8 197,32 diff --git a/docs/simple-api/inherit__graph__5.md5 b/docs/simple-api/inherit__graph__5.md5 new file mode 100644 index 00000000..b6f954b3 --- /dev/null +++ b/docs/simple-api/inherit__graph__5.md5 @@ -0,0 +1 @@ +01d4ad76a93abad00813747637f1833e \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__5.png b/docs/simple-api/inherit__graph__5.png new file mode 100644 index 00000000..d80f86a9 Binary files /dev/null and b/docs/simple-api/inherit__graph__5.png differ diff --git a/docs/simple-api/inherit__graph__6.map b/docs/simple-api/inherit__graph__6.map new file mode 100644 index 00000000..3894ed9f --- /dev/null +++ b/docs/simple-api/inherit__graph__6.map @@ -0,0 +1,2 @@ +base referer +rect $classAutoNsScopeReset.html 9,8 147,32 diff --git a/docs/simple-api/inherit__graph__6.md5 b/docs/simple-api/inherit__graph__6.md5 new file mode 100644 index 00000000..c5985b0a --- /dev/null +++ b/docs/simple-api/inherit__graph__6.md5 @@ -0,0 +1 @@ +5f32d803ca67b2b443de2766acac53da \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__6.png b/docs/simple-api/inherit__graph__6.png new file mode 100644 index 00000000..df9a4fa8 Binary files /dev/null and b/docs/simple-api/inherit__graph__6.png differ diff --git a/docs/simple-api/inherit__graph__7.map b/docs/simple-api/inherit__graph__7.map new file mode 100644 index 00000000..28a31a12 --- /dev/null +++ b/docs/simple-api/inherit__graph__7.map @@ -0,0 +1,2 @@ +base referer +rect $classAutoRelease.html 7,8 165,32 diff --git a/docs/simple-api/inherit__graph__7.md5 b/docs/simple-api/inherit__graph__7.md5 new file mode 100644 index 00000000..b6bae22e --- /dev/null +++ b/docs/simple-api/inherit__graph__7.md5 @@ -0,0 +1 @@ +4215a3204a75c738e87d75f03699f1cc \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__7.png b/docs/simple-api/inherit__graph__7.png new file mode 100644 index 00000000..719a149b Binary files /dev/null and b/docs/simple-api/inherit__graph__7.png differ diff --git a/docs/simple-api/inherit__graph__8.map b/docs/simple-api/inherit__graph__8.map new file mode 100644 index 00000000..6fc802a6 --- /dev/null +++ b/docs/simple-api/inherit__graph__8.map @@ -0,0 +1,2 @@ +base referer +rect $classCollation.html 9,8 81,32 diff --git a/docs/simple-api/inherit__graph__8.md5 b/docs/simple-api/inherit__graph__8.md5 new file mode 100644 index 00000000..45fdf6e9 --- /dev/null +++ b/docs/simple-api/inherit__graph__8.md5 @@ -0,0 +1 @@ +484218b631e0f2d15d9a7fa8ec03f204 \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__8.png b/docs/simple-api/inherit__graph__8.png new file mode 100644 index 00000000..bbfa855b Binary files /dev/null and b/docs/simple-api/inherit__graph__8.png differ diff --git a/docs/simple-api/inherit__graph__9.map b/docs/simple-api/inherit__graph__9.map new file mode 100644 index 00000000..ba1d9a3c --- /dev/null +++ b/docs/simple-api/inherit__graph__9.map @@ -0,0 +1,2 @@ +base referer +rect $classItemFactory_1_1ElementChild.html 8,8 186,32 diff --git a/docs/simple-api/inherit__graph__9.md5 b/docs/simple-api/inherit__graph__9.md5 new file mode 100644 index 00000000..97bc19a2 --- /dev/null +++ b/docs/simple-api/inherit__graph__9.md5 @@ -0,0 +1 @@ +7d1d775478478398b1fd3f9714d31771 \ No newline at end of file diff --git a/docs/simple-api/inherit__graph__9.png b/docs/simple-api/inherit__graph__9.png new file mode 100644 index 00000000..c8f6ba2f Binary files /dev/null and b/docs/simple-api/inherit__graph__9.png differ diff --git a/docs/simple-api/inherits.html b/docs/simple-api/inherits.html new file mode 100644 index 00000000..43f2aaad --- /dev/null +++ b/docs/simple-api/inherits.html @@ -0,0 +1,194 @@ + + +XQilla Simple API: Graphical Class Hierarchy + + + + + + +

XQilla Simple API Graphical Class Hierarchy

Go to the textual class hierarchy +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + +
+ + +
+ + +
+ + + +
+ + +
+ + + +
+ + + + + + + + + + + + + + + + + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+


Generated on Tue Dec 12 00:18:58 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/namespacemembers.html b/docs/simple-api/namespacemembers.html new file mode 100644 index 00000000..4d2f9e08 --- /dev/null +++ b/docs/simple-api/namespacemembers.html @@ -0,0 +1,35 @@ + + +XQilla Simple API: Class Members + + + + + + +
+ +
+Here is a list of all namespace members with links to the namespace documentation for each member: +

+

+
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/namespacemembers_func.html b/docs/simple-api/namespacemembers_func.html new file mode 100644 index 00000000..180c81be --- /dev/null +++ b/docs/simple-api/namespacemembers_func.html @@ -0,0 +1,35 @@ + + +XQilla Simple API: Class Members + + + + + + +
+ +
+  +

+

+
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/namespaces.html b/docs/simple-api/namespaces.html new file mode 100644 index 00000000..38303566 --- /dev/null +++ b/docs/simple-api/namespaces.html @@ -0,0 +1,27 @@ + + +XQilla Simple API: Namespace Index + + + + + + +

XQilla Simple API Namespace List

Here is a list of all namespaces with brief descriptions: + +
xercesc
+
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/namespacexercesc.html b/docs/simple-api/namespacexercesc.html new file mode 100644 index 00000000..a1f43075 --- /dev/null +++ b/docs/simple-api/namespacexercesc.html @@ -0,0 +1,109 @@ + + +XQilla Simple API: xercesc Namespace Reference + + + + + + +

xercesc Namespace Reference

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Classes

class  MemoryManager
 Configurable memory manager. More...
class  XMemory
 This class makes it possible to override the C++ memory management by adding new/delete operators to this base class. More...
class  DOMNode
 The DOMNode interface is the primary datatype for the entire Document Object Model. More...
class  DOMDocument
 The DOMDocument interface represents the entire XML document. More...
class  DOMXPathNSResolver
 The DOMXPathNSResolver interface permit prefix strings in the expression to be properly bound to namespaceURI strings. More...
class  XMLEntityResolver
 Revised interface for resolving entities. More...
class  XMLDeleter
class  XMLPlatformUtils
 Utilities that must be implemented in a platform-specific way. More...
class  InputSource
 A single input source for an XML entity. More...
class  LocalFileInputSource
 This class is a derivative of the standard InputSource class. More...
class  MemBufInputSource
 This class is a derivative of the standard InputSource class. More...
class  StdInInputSource
 This class is a derivative of the standard InputSource class. More...
class  URLInputSource
 This class is a derivative of the standard InputSource class. More...

Functions

 MakeXMLException (XMLPlatformUtilsException, XMLUTIL_EXPORT) inline size_t XMLPlatformUtils
+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
xercesc::MakeXMLException XMLPlatformUtilsException ,
XMLUTIL_EXPORT 
+
+ + + + + +
+   + + +

+

+


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/structXQillaAllocator_1_1rebind-members.html b/docs/simple-api/structXQillaAllocator_1_1rebind-members.html new file mode 100644 index 00000000..b3307310 --- /dev/null +++ b/docs/simple-api/structXQillaAllocator_1_1rebind-members.html @@ -0,0 +1,28 @@ + + +XQilla Simple API: Member List + + + + + + +

XQillaAllocator< _Tp >::rebind< _Tp1 > Member List

This is the complete list of members for XQillaAllocator< _Tp >::rebind< _Tp1 >, including all inherited members.

+ +
other typedefXQillaAllocator< _Tp >::rebind< _Tp1 >


Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/structXQillaAllocator_1_1rebind.html b/docs/simple-api/structXQillaAllocator_1_1rebind.html new file mode 100644 index 00000000..e1ea8b19 --- /dev/null +++ b/docs/simple-api/structXQillaAllocator_1_1rebind.html @@ -0,0 +1,74 @@ + + +XQilla Simple API: XQillaAllocator< _Tp >::rebind< _Tp1 > Struct Template Reference + + + + + + + +

XQillaAllocator< _Tp >::rebind< _Tp1 > Struct Template Reference

#include <XPath2MemoryManager.hpp> +

+List of all members. + + + + +

Public Types

typedef XQillaAllocator< _Tp1 > other
+

template<class _Tp>
+template<class _Tp1>
+ struct XQillaAllocator< _Tp >::rebind< _Tp1 >

+ +

Member Typedef Documentation

+

+ + + + +
+ + + + + + + + + + +
+template<class _Tp>
+template<class _Tp1>
typedef XQillaAllocator<_Tp1> XQillaAllocator< _Tp >::rebind< _Tp1 >::other
+
+ + + + + +
+   + + +

+

+


The documentation for this struct was generated from the following file: +
Generated on Tue Dec 12 00:18:57 2006 for XQilla Simple API by  + +doxygen 1.4.6
+ + diff --git a/docs/simple-api/tab_b.gif b/docs/simple-api/tab_b.gif new file mode 100644 index 00000000..0d623483 Binary files /dev/null and b/docs/simple-api/tab_b.gif differ diff --git a/docs/simple-api/tab_l.gif b/docs/simple-api/tab_l.gif new file mode 100644 index 00000000..9b1e6337 Binary files /dev/null and b/docs/simple-api/tab_l.gif differ diff --git a/docs/simple-api/tab_r.gif b/docs/simple-api/tab_r.gif new file mode 100644 index 00000000..ce9dd9f5 Binary files /dev/null and b/docs/simple-api/tab_r.gif differ diff --git a/docs/simple-api/tabs.css b/docs/simple-api/tabs.css new file mode 100644 index 00000000..a61552a6 --- /dev/null +++ b/docs/simple-api/tabs.css @@ -0,0 +1,102 @@ +/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ + +DIV.tabs +{ + float : left; + width : 100%; + background : url("tab_b.gif") repeat-x bottom; + margin-bottom : 4px; +} + +DIV.tabs UL +{ + margin : 0px; + padding-left : 10px; + list-style : none; +} + +DIV.tabs LI, DIV.tabs FORM +{ + display : inline; + margin : 0px; + padding : 0px; +} + +DIV.tabs FORM +{ + float : right; +} + +DIV.tabs A +{ + float : left; + background : url("tab_r.gif") no-repeat right top; + border-bottom : 1px solid #84B0C7; + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + +DIV.tabs A:hover +{ + background-position: 100% -150px; +} + +DIV.tabs A:link, DIV.tabs A:visited, +DIV.tabs A:active, DIV.tabs A:hover +{ + color: #1A419D; +} + +DIV.tabs SPAN +{ + float : left; + display : block; + background : url("tab_l.gif") no-repeat left top; + padding : 5px 9px; + white-space : nowrap; +} + +DIV.tabs INPUT +{ + float : right; + display : inline; + font-size : 1em; +} + +DIV.tabs TD +{ + font-size : x-small; + font-weight : bold; + text-decoration : none; +} + + + +/* Commented Backslash Hack hides rule from IE5-Mac \*/ +DIV.tabs SPAN {float : none;} +/* End IE5-Mac hack */ + +DIV.tabs A:hover SPAN +{ + background-position: 0% -150px; +} + +DIV.tabs LI#current A +{ + background-position: 100% -150px; + border-width : 0px; +} + +DIV.tabs LI#current SPAN +{ + background-position: 0% -150px; + padding-bottom : 6px; +} + +DIV.nav +{ + background : none; + border : none; + border-bottom : 1px solid #84B0C7; +} diff --git a/include/Makefile.am b/include/Makefile.am new file mode 100644 index 00000000..35a0a136 --- /dev/null +++ b/include/Makefile.am @@ -0,0 +1,379 @@ +nobase_include_HEADERS = \ +xqilla/xqilla-dom3.hpp \ +xqilla/xqilla-simple.hpp \ +xqilla/ast/LocationInfo.hpp \ +xqilla/ast/XQCastableAs.hpp \ +xqilla/ast/XQCastAs.hpp \ +xqilla/ast/XQContextItem.hpp \ +xqilla/ast/XQFunction.hpp \ +xqilla/ast/ASTNode.hpp \ +xqilla/ast/XQIf.hpp \ +xqilla/ast/ASTNodeImpl.hpp \ +xqilla/ast/XQInstanceOf.hpp \ +xqilla/ast/XQLiteral.hpp \ +xqilla/ast/XQNav.hpp \ +xqilla/ast/XQOperator.hpp \ +xqilla/ast/XQParenthesizedExpr.hpp \ +xqilla/ast/XQSequence.hpp \ +xqilla/ast/XQStep.hpp \ +xqilla/ast/XQTreatAs.hpp \ +xqilla/ast/XQVariable.hpp \ +xqilla/ast/StaticResolutionContext.hpp \ +xqilla/ast/StaticType.hpp \ +xqilla/ast/AggregateFunction.hpp \ +xqilla/ast/ConstantFoldingFunction.hpp \ +xqilla/ast/NumericFunction.hpp \ +xqilla/ast/XQDebugHook.hpp \ +xqilla/ast/XQDOMConstructor.hpp \ +xqilla/ast/XQDocumentConstructor.hpp \ +xqilla/ast/XQElementConstructor.hpp \ +xqilla/ast/XQAttributeConstructor.hpp \ +xqilla/ast/XQPIConstructor.hpp \ +xqilla/ast/XQCommentConstructor.hpp \ +xqilla/ast/XQTextConstructor.hpp \ +xqilla/ast/XQFLWOR.hpp \ +xqilla/ast/XQFunctionCall.hpp \ +xqilla/ast/XQGlobalVariable.hpp \ +xqilla/ast/XQOrderingChange.hpp \ +xqilla/ast/XQQuantified.hpp \ +xqilla/ast/XQTypeswitch.hpp \ +xqilla/ast/XQValidate.hpp \ +xqilla/ast/XQVariableBinding.hpp \ +xqilla/ast/XQAtomize.hpp \ +xqilla/ast/XPath1Compat.hpp \ +xqilla/ast/ConvertFunctionArg.hpp \ +xqilla/ast/XQDocumentOrder.hpp \ +xqilla/ast/XQPredicate.hpp \ +xqilla/fulltext/FTContains.hpp \ +xqilla/fulltext/FTSelection.hpp \ +xqilla/fulltext/FTWords.hpp \ +xqilla/fulltext/FTOr.hpp \ +xqilla/fulltext/FTAnd.hpp \ +xqilla/fulltext/FTMildnot.hpp \ +xqilla/fulltext/FTUnaryNot.hpp \ +xqilla/fulltext/AllMatches.hpp \ +xqilla/fulltext/Match.hpp \ +xqilla/fulltext/TokenInfo.hpp \ +xqilla/fulltext/Tokenizer.hpp \ +xqilla/fulltext/DefaultTokenizer.hpp \ +xqilla/fulltext/TokenStore.hpp \ +xqilla/fulltext/DefaultTokenStore.hpp \ +xqilla/fulltext/FTOption.hpp \ +xqilla/fulltext/FTOrder.hpp \ +xqilla/fulltext/FTRange.hpp \ +xqilla/fulltext/FTDistance.hpp \ +xqilla/fulltext/FTScope.hpp \ +xqilla/fulltext/FTContent.hpp \ +xqilla/fulltext/FTWindow.hpp \ +xqilla/axis/AncestorAxis.hpp \ +xqilla/axis/AncestorOrSelfAxis.hpp \ +xqilla/axis/AttributeAxis.hpp \ +xqilla/axis/Axis.hpp \ +xqilla/axis/ChildAxis.hpp \ +xqilla/axis/DescendantAxis.hpp \ +xqilla/axis/DescendantOrSelfAxis.hpp \ +xqilla/axis/FollowingAxis.hpp \ +xqilla/axis/FollowingSiblingAxis.hpp \ +xqilla/axis/NamespaceAxis.hpp \ +xqilla/axis/NodeTest.hpp \ +xqilla/axis/ParentAxis.hpp \ +xqilla/axis/PrecedingAxis.hpp \ +xqilla/axis/PrecedingSiblingAxis.hpp \ +xqilla/axis/SelfAxis.hpp \ +xqilla/context/ContextHelpers.hpp \ +xqilla/context/DynamicContext.hpp \ +xqilla/context/StaticContext.hpp \ +xqilla/context/ItemFactory.hpp \ +xqilla/context/ModuleResolver.hpp \ +xqilla/context/URIResolver.hpp \ +xqilla/context/VariableStore.hpp \ +xqilla/context/Scope.hpp \ +xqilla/context/VarHashEntry.hpp \ +xqilla/context/XQDebugCallback.hpp \ +xqilla/context/VariableTypeStore.hpp \ +xqilla/context/Collation.hpp \ +xqilla/context/XQScopedNamespace.hpp \ +xqilla/context/ModuleResolver.hpp \ +xqilla/context/impl/CollationImpl.hpp \ +xqilla/context/impl/VarHashEntryImpl.hpp \ +xqilla/context/impl/VariableStoreTemplate.hpp \ +xqilla/context/impl/CodepointCollation.hpp \ +xqilla/context/impl/XQRemoteDebugger.hpp \ +xqilla/context/impl/XQContextImpl.hpp \ +xqilla/context/impl/XQDynamicContextImpl.hpp \ +xqilla/context/impl/ItemFactoryImpl.hpp \ +xqilla/dom-api/impl/XQillaNSResolverImpl.hpp \ +xqilla/dom-api/XPath2Result.hpp \ +xqilla/dom-api/XQillaExpression.hpp \ +xqilla/dom-api/XQillaNSResolver.hpp \ +xqilla/exceptions/XQillaException.hpp \ +xqilla/exceptions/ContextException.hpp \ +xqilla/exceptions/ASTException.hpp \ +xqilla/exceptions/DynamicErrorException.hpp \ +xqilla/exceptions/FunctionException.hpp \ +xqilla/exceptions/IllegalArgumentException.hpp \ +xqilla/exceptions/ItemException.hpp \ +xqilla/exceptions/NamespaceLookupException.hpp \ +xqilla/exceptions/StaticErrorException.hpp \ +xqilla/exceptions/TypeErrorException.hpp \ +xqilla/exceptions/TypeNotFoundException.hpp \ +xqilla/exceptions/XMLParseException.hpp \ +xqilla/exceptions/XPath2ErrorException.hpp \ +xqilla/exceptions/XPath2TypeCastException.hpp \ +xqilla/exceptions/XPath2TypeMatchException.hpp \ +xqilla/exceptions/XQException.hpp \ +xqilla/exceptions/QueryInterruptedException.hpp \ +xqilla/exceptions/QueryTimeoutException.hpp \ +xqilla/functions/FunctionLookup.hpp \ +xqilla/functions/FunctionAbs.hpp \ +xqilla/functions/FunctionAdjustDateTimeToTimezone.hpp \ +xqilla/functions/FunctionAdjustDateToTimezone.hpp \ +xqilla/functions/FunctionAdjustTimeToTimezone.hpp \ +xqilla/functions/FunctionAvg.hpp \ +xqilla/functions/FunctionBaseURI.hpp \ +xqilla/functions/FunctionBoolean.hpp \ +xqilla/functions/FunctionCeiling.hpp \ +xqilla/functions/FunctionCodepointEqual.hpp \ +xqilla/functions/FunctionCodepointsToString.hpp \ +xqilla/functions/FunctionCollection.hpp \ +xqilla/functions/FunctionCompare.hpp \ +xqilla/functions/FunctionConcat.hpp \ +xqilla/functions/FunctionConstructor.hpp \ +xqilla/functions/FunctionContains.hpp \ +xqilla/functions/FunctionCount.hpp \ +xqilla/functions/FunctionCurrentDate.hpp \ +xqilla/functions/FunctionCurrentDateTime.hpp \ +xqilla/functions/FunctionCurrentTime.hpp \ +xqilla/functions/FunctionData.hpp \ +xqilla/functions/FunctionDateTime.hpp \ +xqilla/functions/FunctionDayFromDate.hpp \ +xqilla/functions/FunctionDayFromDateTime.hpp \ +xqilla/functions/FunctionDaysFromDuration.hpp \ +xqilla/functions/FunctionDeepEqual.hpp \ +xqilla/functions/FunctionDefaultCollation.hpp \ +xqilla/functions/FunctionDistinctValues.hpp \ +xqilla/functions/FunctionDocAvailable.hpp \ +xqilla/functions/FunctionDoc.hpp \ +xqilla/functions/FunctionDocumentURI.hpp \ +xqilla/functions/FunctionEmpty.hpp \ +xqilla/functions/FunctionEncodeForUri.hpp \ +xqilla/functions/FunctionEndsWith.hpp \ +xqilla/functions/FunctionError.hpp \ +xqilla/functions/FunctionEscapeHtmlUri.hpp \ +xqilla/functions/FunctionExactlyOne.hpp \ +xqilla/functions/FunctionExists.hpp \ +xqilla/functions/FunctionFalse.hpp \ +xqilla/functions/FunctionFloor.hpp \ +xqilla/functions/FunctionHoursFromDateTime.hpp \ +xqilla/functions/FunctionHoursFromDuration.hpp \ +xqilla/functions/FunctionHoursFromTime.hpp \ +xqilla/functions/FunctionId.hpp \ +xqilla/functions/FunctionIdref.hpp \ +xqilla/functions/FunctionImplicitTimezone.hpp \ +xqilla/functions/FunctionIndexOf.hpp \ +xqilla/functions/FunctionInScopePrefixes.hpp \ +xqilla/functions/FunctionInsertBefore.hpp \ +xqilla/functions/FunctionIriToUri.hpp \ +xqilla/functions/FunctionLang.hpp \ +xqilla/functions/FunctionLast.hpp \ +xqilla/functions/FunctionLocalNameFromQName.hpp \ +xqilla/functions/FunctionLocalname.hpp \ +xqilla/functions/FunctionLowerCase.hpp \ +xqilla/functions/FunctionMatches.hpp \ +xqilla/functions/FunctionMax.hpp \ +xqilla/functions/FunctionMin.hpp \ +xqilla/functions/FunctionMinutesFromDateTime.hpp \ +xqilla/functions/FunctionMinutesFromDuration.hpp \ +xqilla/functions/FunctionMinutesFromTime.hpp \ +xqilla/functions/FunctionMonthFromDate.hpp \ +xqilla/functions/FunctionMonthFromDateTime.hpp \ +xqilla/functions/FunctionMonthsFromDuration.hpp \ +xqilla/functions/FunctionName.hpp \ +xqilla/functions/FunctionNamespaceURIForPrefix.hpp \ +xqilla/functions/FunctionNamespaceURIFromQName.hpp \ +xqilla/functions/FunctionNamespaceUri.hpp \ +xqilla/functions/FunctionNilled.hpp \ +xqilla/functions/FunctionNodeName.hpp \ +xqilla/functions/FunctionNormalizeSpace.hpp \ +xqilla/functions/FunctionNormalizeUnicode.hpp \ +xqilla/functions/FunctionNot.hpp \ +xqilla/functions/FunctionNumber.hpp \ +xqilla/functions/FunctionOneOrMore.hpp \ +xqilla/functions/FunctionPosition.hpp \ +xqilla/functions/FunctionPrefixFromQName.hpp \ +xqilla/functions/FunctionQName.hpp \ +xqilla/functions/FunctionRemove.hpp \ +xqilla/functions/FunctionReplace.hpp \ +xqilla/functions/FunctionResolveQName.hpp \ +xqilla/functions/FunctionResolveURI.hpp \ +xqilla/functions/FunctionReverse.hpp \ +xqilla/functions/FunctionRoot.hpp \ +xqilla/functions/FunctionRoundHalfToEven.hpp \ +xqilla/functions/FunctionRound.hpp \ +xqilla/functions/FunctionSecondsFromDateTime.hpp \ +xqilla/functions/FunctionSecondsFromDuration.hpp \ +xqilla/functions/FunctionSecondsFromTime.hpp \ +xqilla/functions/FunctionStartsWith.hpp \ +xqilla/functions/FunctionStaticBaseURI.hpp \ +xqilla/functions/FunctionString.hpp \ +xqilla/functions/FunctionStringJoin.hpp \ +xqilla/functions/FunctionStringLength.hpp \ +xqilla/functions/FunctionStringToCodepoints.hpp \ +xqilla/functions/FunctionSubsequence.hpp \ +xqilla/functions/FunctionSubstringAfter.hpp \ +xqilla/functions/FunctionSubstringBefore.hpp \ +xqilla/functions/FunctionSubstring.hpp \ +xqilla/functions/FunctionSum.hpp \ +xqilla/functions/FunctionTimezoneFromDate.hpp \ +xqilla/functions/FunctionTimezoneFromDateTime.hpp \ +xqilla/functions/FunctionTimezoneFromTime.hpp \ +xqilla/functions/FunctionTokenize.hpp \ +xqilla/functions/FunctionTrace.hpp \ +xqilla/functions/FunctionTranslate.hpp \ +xqilla/functions/FunctionTrue.hpp \ +xqilla/functions/FunctionUnordered.hpp \ +xqilla/functions/FunctionUpperCase.hpp \ +xqilla/functions/FunctionYearFromDate.hpp \ +xqilla/functions/FunctionYearFromDateTime.hpp \ +xqilla/functions/FunctionYearsFromDuration.hpp \ +xqilla/functions/FunctionZeroOrOne.hpp \ +xqilla/functions/FuncFactory.hpp \ +xqilla/functions/XQUserFunction.hpp \ +xqilla/items/ATAnySimpleType.hpp \ +xqilla/items/ATAnyURIOrDerived.hpp \ +xqilla/items/ATBase64BinaryOrDerived.hpp \ +xqilla/items/ATBooleanOrDerived.hpp \ +xqilla/items/ATDateOrDerived.hpp \ +xqilla/items/ATDateTimeOrDerived.hpp \ +xqilla/items/ATDecimalOrDerived.hpp \ +xqilla/items/ATDoubleOrDerived.hpp \ +xqilla/items/ATDurationOrDerived.hpp \ +xqilla/items/ATFloatOrDerived.hpp \ +xqilla/items/ATGDayOrDerived.hpp \ +xqilla/items/ATGMonthDayOrDerived.hpp \ +xqilla/items/ATGMonthOrDerived.hpp \ +xqilla/items/ATGYearMonthOrDerived.hpp \ +xqilla/items/ATGYearOrDerived.hpp \ +xqilla/items/ATHexBinaryOrDerived.hpp \ +xqilla/items/ATNotationOrDerived.hpp \ +xqilla/items/ATQNameConstructor.hpp \ +xqilla/items/ATQNameOrDerived.hpp \ +xqilla/items/ATStringOrDerived.hpp \ +xqilla/items/ATTimeOrDerived.hpp \ +xqilla/items/ATUntypedAtomic.hpp \ +xqilla/items/AnyAtomicTypeConstructor.hpp \ +xqilla/items/AnyAtomicType.hpp \ +xqilla/items/DateOrTimeType.hpp \ +xqilla/items/ItemConstructor.hpp \ +xqilla/items/Item.hpp \ +xqilla/items/Node.hpp \ +xqilla/items/Numeric.hpp \ +xqilla/items/NumericTypeConstructor.hpp \ +xqilla/items/Timezone.hpp \ +xqilla/items/DatatypeLookup.hpp \ +xqilla/items/DatatypeFactory.hpp \ +xqilla/items/impl/ATBooleanOrDerivedImpl.hpp \ +xqilla/items/impl/ATDecimalOrDerivedImpl.hpp \ +xqilla/items/impl/ATDoubleOrDerivedImpl.hpp \ +xqilla/items/impl/ATFloatOrDerivedImpl.hpp \ +xqilla/items/impl/ATQNameOrDerivedImpl.hpp \ +xqilla/items/impl/NodeImpl.hpp \ +xqilla/items/impl/ATDurationOrDerivedImpl.hpp \ +xqilla/items/impl/ATDateTimeOrDerivedImpl.hpp \ +xqilla/items/impl/ATDateOrDerivedImpl.hpp \ +xqilla/items/impl/ATTimeOrDerivedImpl.hpp \ +xqilla/items/impl/ATGDayOrDerivedImpl.hpp \ +xqilla/items/impl/ATGMonthDayOrDerivedImpl.hpp \ +xqilla/items/impl/ATGMonthOrDerivedImpl.hpp \ +xqilla/items/impl/ATGYearMonthOrDerivedImpl.hpp \ +xqilla/items/impl/ATGYearOrDerivedImpl.hpp \ +xqilla/mapm/m_apm.h \ +xqilla/operators/And.hpp \ +xqilla/operators/ArithmeticOperator.hpp \ +xqilla/operators/ComparisonOperator.hpp \ +xqilla/operators/Divide.hpp \ +xqilla/operators/Equals.hpp \ +xqilla/operators/Except.hpp \ +xqilla/operators/GeneralComp.hpp \ +xqilla/operators/GreaterThanEqual.hpp \ +xqilla/operators/GreaterThan.hpp \ +xqilla/operators/IntegerDivide.hpp \ +xqilla/operators/Intersect.hpp \ +xqilla/operators/LessThanEqual.hpp \ +xqilla/operators/LessThan.hpp \ +xqilla/operators/Minus.hpp \ +xqilla/operators/Mod.hpp \ +xqilla/operators/Multiply.hpp \ +xqilla/operators/NodeComparison.hpp \ +xqilla/operators/NotEquals.hpp \ +xqilla/operators/OrderComparison.hpp \ +xqilla/operators/Or.hpp \ +xqilla/operators/Plus.hpp \ +xqilla/operators/Range.hpp \ +xqilla/operators/UnaryMinus.hpp \ +xqilla/operators/Union.hpp \ +xqilla/parser/QName.hpp \ +xqilla/runtime/Sequence.hpp \ +xqilla/runtime/ResultBuffer.hpp \ +xqilla/runtime/ResultBufferImpl.hpp \ +xqilla/runtime/Result.hpp \ +xqilla/runtime/ResultImpl.hpp \ +xqilla/runtime/SingleResult.hpp \ +xqilla/runtime/SequenceResult.hpp \ +xqilla/runtime/LazySequenceResult.hpp \ +xqilla/runtime/EmptyResult.hpp \ +xqilla/schema/DocumentCache.hpp \ +xqilla/schema/SequenceType.hpp \ +xqilla/schema/AnyAtomicTypeDatatypeValidator.hpp \ +xqilla/schema/DocumentCacheImpl.hpp \ +xqilla/simple-api/XQilla.hpp \ +xqilla/simple-api/XQQuery.hpp \ +xqilla/utils/NumUtils.hpp \ +xqilla/utils/XPath2NSUtils.hpp \ +xqilla/utils/XPath2Utils.hpp \ +xqilla/utils/XMLChCompare.hpp \ +xqilla/utils/XStr.hpp \ +xqilla/utils/ContextUtils.hpp \ +xqilla/utils/PrintAST.hpp \ +xqilla/utils/UTF8Str.hpp \ +xqilla/utils/XQillaPlatformUtils.hpp \ +xqilla/utils/UCANormalizer.hpp \ +xqilla/framework/ReferenceCounted.hpp \ +xqilla/framework/XPath2MemoryManager.hpp \ +xqilla/framework/BaseMemoryManager.hpp \ +xqilla/framework/ProxyMemoryManager.hpp \ +xqilla/framework/StringPool.hpp \ +xqilla/framework/XPath2MemoryManagerImpl.hpp \ +xqilla/framework/XQillaExport.hpp \ +xqilla/xqts/TestSuiteParser.hpp \ +xqilla/xqts/TestSuiteResultListener.hpp \ +xqilla/xqts/TestSuiteRunner.hpp + + +docs: $(top_srcdir)/docs/.simple-api-timestamp $(top_srcdir)/docs/.dom3-api-timestamp + +$(top_srcdir)/docs/.simple-api-timestamp: $(nobase_include_HEADERS) $(top_srcdir)/docs/Doxyfile.simpleapi + cd $(top_srcdir)/docs && \ + doxygen Doxyfile.simpleapi && \ + touch .simple-api-timestamp + +$(top_srcdir)/docs/Doxyfile.simpleapi: $(top_srcdir)/docs/Doxyfile.simpleapi.in + sed -e "s,%xerces_include%,$(xerces_include)," $(top_srcdir)/docs/Doxyfile.simpleapi.in >$(top_srcdir)/docs/Doxyfile.simpleapi + +$(top_srcdir)/docs/.dom3-api-timestamp: $(nobase_include_HEADERS) $(top_srcdir)/docs/Doxyfile.dom3api + cd $(top_srcdir)/docs && \ + doxygen Doxyfile.dom3api && \ + touch .dom3-api-timestamp + +$(top_srcdir)/docs/Doxyfile.dom3api: $(top_srcdir)/docs/Doxyfile.dom3api.in + sed -e "s,%xerces_include%,$(xerces_include)," $(top_srcdir)/docs/Doxyfile.dom3api.in >$(top_srcdir)/docs/Doxyfile.dom3api + +devdocs: $(top_srcdir)/docs/.dev-api-timestamp + +$(top_srcdir)/docs/.dev-api-timestamp: $(nobase_include_HEADERS) $(top_srcdir)/docs/Doxyfile.devapi + cd $(top_srcdir)/docs && \ + doxygen Doxyfile.devapi && \ + touch .dev-api-timestamp + +$(top_srcdir)/docs/Doxyfile.devapi: $(top_srcdir)/docs/Doxyfile.devapi.in + sed -e "s,%xerces_include%,$(xerces_include)," $(top_srcdir)/docs/Doxyfile.devapi.in >$(top_srcdir)/docs/Doxyfile.devapi diff --git a/include/Makefile.in b/include/Makefile.in new file mode 100644 index 00000000..358237a4 --- /dev/null +++ b/include/Makefile.in @@ -0,0 +1,780 @@ +# Makefile.in generated by automake 1.9.6 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = include +DIST_COMMON = $(nobase_include_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/autotools/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/src/config/xqilla_config_unix.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(includedir)" +nobase_includeHEADERS_INSTALL = $(install_sh_DATA) +HEADERS = $(nobase_include_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +YACC = @YACC@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +xerces_include = @xerces_include@ +xerces_lib = @xerces_lib@ +nobase_include_HEADERS = \ +xqilla/xqilla-dom3.hpp \ +xqilla/xqilla-simple.hpp \ +xqilla/ast/LocationInfo.hpp \ +xqilla/ast/XQCastableAs.hpp \ +xqilla/ast/XQCastAs.hpp \ +xqilla/ast/XQContextItem.hpp \ +xqilla/ast/XQFunction.hpp \ +xqilla/ast/ASTNode.hpp \ +xqilla/ast/XQIf.hpp \ +xqilla/ast/ASTNodeImpl.hpp \ +xqilla/ast/XQInstanceOf.hpp \ +xqilla/ast/XQLiteral.hpp \ +xqilla/ast/XQNav.hpp \ +xqilla/ast/XQOperator.hpp \ +xqilla/ast/XQParenthesizedExpr.hpp \ +xqilla/ast/XQSequence.hpp \ +xqilla/ast/XQStep.hpp \ +xqilla/ast/XQTreatAs.hpp \ +xqilla/ast/XQVariable.hpp \ +xqilla/ast/StaticResolutionContext.hpp \ +xqilla/ast/StaticType.hpp \ +xqilla/ast/AggregateFunction.hpp \ +xqilla/ast/ConstantFoldingFunction.hpp \ +xqilla/ast/NumericFunction.hpp \ +xqilla/ast/XQDebugHook.hpp \ +xqilla/ast/XQDOMConstructor.hpp \ +xqilla/ast/XQDocumentConstructor.hpp \ +xqilla/ast/XQElementConstructor.hpp \ +xqilla/ast/XQAttributeConstructor.hpp \ +xqilla/ast/XQPIConstructor.hpp \ +xqilla/ast/XQCommentConstructor.hpp \ +xqilla/ast/XQTextConstructor.hpp \ +xqilla/ast/XQFLWOR.hpp \ +xqilla/ast/XQFunctionCall.hpp \ +xqilla/ast/XQGlobalVariable.hpp \ +xqilla/ast/XQOrderingChange.hpp \ +xqilla/ast/XQQuantified.hpp \ +xqilla/ast/XQTypeswitch.hpp \ +xqilla/ast/XQValidate.hpp \ +xqilla/ast/XQVariableBinding.hpp \ +xqilla/ast/XQAtomize.hpp \ +xqilla/ast/XPath1Compat.hpp \ +xqilla/ast/ConvertFunctionArg.hpp \ +xqilla/ast/XQDocumentOrder.hpp \ +xqilla/ast/XQPredicate.hpp \ +xqilla/fulltext/FTContains.hpp \ +xqilla/fulltext/FTSelection.hpp \ +xqilla/fulltext/FTWords.hpp \ +xqilla/fulltext/FTOr.hpp \ +xqilla/fulltext/FTAnd.hpp \ +xqilla/fulltext/FTMildnot.hpp \ +xqilla/fulltext/FTUnaryNot.hpp \ +xqilla/fulltext/AllMatches.hpp \ +xqilla/fulltext/Match.hpp \ +xqilla/fulltext/TokenInfo.hpp \ +xqilla/fulltext/Tokenizer.hpp \ +xqilla/fulltext/DefaultTokenizer.hpp \ +xqilla/fulltext/TokenStore.hpp \ +xqilla/fulltext/DefaultTokenStore.hpp \ +xqilla/fulltext/FTOption.hpp \ +xqilla/fulltext/FTOrder.hpp \ +xqilla/fulltext/FTRange.hpp \ +xqilla/fulltext/FTDistance.hpp \ +xqilla/fulltext/FTScope.hpp \ +xqilla/fulltext/FTContent.hpp \ +xqilla/fulltext/FTWindow.hpp \ +xqilla/axis/AncestorAxis.hpp \ +xqilla/axis/AncestorOrSelfAxis.hpp \ +xqilla/axis/AttributeAxis.hpp \ +xqilla/axis/Axis.hpp \ +xqilla/axis/ChildAxis.hpp \ +xqilla/axis/DescendantAxis.hpp \ +xqilla/axis/DescendantOrSelfAxis.hpp \ +xqilla/axis/FollowingAxis.hpp \ +xqilla/axis/FollowingSiblingAxis.hpp \ +xqilla/axis/NamespaceAxis.hpp \ +xqilla/axis/NodeTest.hpp \ +xqilla/axis/ParentAxis.hpp \ +xqilla/axis/PrecedingAxis.hpp \ +xqilla/axis/PrecedingSiblingAxis.hpp \ +xqilla/axis/SelfAxis.hpp \ +xqilla/context/ContextHelpers.hpp \ +xqilla/context/DynamicContext.hpp \ +xqilla/context/StaticContext.hpp \ +xqilla/context/ItemFactory.hpp \ +xqilla/context/ModuleResolver.hpp \ +xqilla/context/URIResolver.hpp \ +xqilla/context/VariableStore.hpp \ +xqilla/context/Scope.hpp \ +xqilla/context/VarHashEntry.hpp \ +xqilla/context/XQDebugCallback.hpp \ +xqilla/context/VariableTypeStore.hpp \ +xqilla/context/Collation.hpp \ +xqilla/context/XQScopedNamespace.hpp \ +xqilla/context/ModuleResolver.hpp \ +xqilla/context/impl/CollationImpl.hpp \ +xqilla/context/impl/VarHashEntryImpl.hpp \ +xqilla/context/impl/VariableStoreTemplate.hpp \ +xqilla/context/impl/CodepointCollation.hpp \ +xqilla/context/impl/XQRemoteDebugger.hpp \ +xqilla/context/impl/XQContextImpl.hpp \ +xqilla/context/impl/XQDynamicContextImpl.hpp \ +xqilla/context/impl/ItemFactoryImpl.hpp \ +xqilla/dom-api/impl/XQillaNSResolverImpl.hpp \ +xqilla/dom-api/XPath2Result.hpp \ +xqilla/dom-api/XQillaExpression.hpp \ +xqilla/dom-api/XQillaNSResolver.hpp \ +xqilla/exceptions/XQillaException.hpp \ +xqilla/exceptions/ContextException.hpp \ +xqilla/exceptions/ASTException.hpp \ +xqilla/exceptions/DynamicErrorException.hpp \ +xqilla/exceptions/FunctionException.hpp \ +xqilla/exceptions/IllegalArgumentException.hpp \ +xqilla/exceptions/ItemException.hpp \ +xqilla/exceptions/NamespaceLookupException.hpp \ +xqilla/exceptions/StaticErrorException.hpp \ +xqilla/exceptions/TypeErrorException.hpp \ +xqilla/exceptions/TypeNotFoundException.hpp \ +xqilla/exceptions/XMLParseException.hpp \ +xqilla/exceptions/XPath2ErrorException.hpp \ +xqilla/exceptions/XPath2TypeCastException.hpp \ +xqilla/exceptions/XPath2TypeMatchException.hpp \ +xqilla/exceptions/XQException.hpp \ +xqilla/exceptions/QueryInterruptedException.hpp \ +xqilla/exceptions/QueryTimeoutException.hpp \ +xqilla/functions/FunctionLookup.hpp \ +xqilla/functions/FunctionAbs.hpp \ +xqilla/functions/FunctionAdjustDateTimeToTimezone.hpp \ +xqilla/functions/FunctionAdjustDateToTimezone.hpp \ +xqilla/functions/FunctionAdjustTimeToTimezone.hpp \ +xqilla/functions/FunctionAvg.hpp \ +xqilla/functions/FunctionBaseURI.hpp \ +xqilla/functions/FunctionBoolean.hpp \ +xqilla/functions/FunctionCeiling.hpp \ +xqilla/functions/FunctionCodepointEqual.hpp \ +xqilla/functions/FunctionCodepointsToString.hpp \ +xqilla/functions/FunctionCollection.hpp \ +xqilla/functions/FunctionCompare.hpp \ +xqilla/functions/FunctionConcat.hpp \ +xqilla/functions/FunctionConstructor.hpp \ +xqilla/functions/FunctionContains.hpp \ +xqilla/functions/FunctionCount.hpp \ +xqilla/functions/FunctionCurrentDate.hpp \ +xqilla/functions/FunctionCurrentDateTime.hpp \ +xqilla/functions/FunctionCurrentTime.hpp \ +xqilla/functions/FunctionData.hpp \ +xqilla/functions/FunctionDateTime.hpp \ +xqilla/functions/FunctionDayFromDate.hpp \ +xqilla/functions/FunctionDayFromDateTime.hpp \ +xqilla/functions/FunctionDaysFromDuration.hpp \ +xqilla/functions/FunctionDeepEqual.hpp \ +xqilla/functions/FunctionDefaultCollation.hpp \ +xqilla/functions/FunctionDistinctValues.hpp \ +xqilla/functions/FunctionDocAvailable.hpp \ +xqilla/functions/FunctionDoc.hpp \ +xqilla/functions/FunctionDocumentURI.hpp \ +xqilla/functions/FunctionEmpty.hpp \ +xqilla/functions/FunctionEncodeForUri.hpp \ +xqilla/functions/FunctionEndsWith.hpp \ +xqilla/functions/FunctionError.hpp \ +xqilla/functions/FunctionEscapeHtmlUri.hpp \ +xqilla/functions/FunctionExactlyOne.hpp \ +xqilla/functions/FunctionExists.hpp \ +xqilla/functions/FunctionFalse.hpp \ +xqilla/functions/FunctionFloor.hpp \ +xqilla/functions/FunctionHoursFromDateTime.hpp \ +xqilla/functions/FunctionHoursFromDuration.hpp \ +xqilla/functions/FunctionHoursFromTime.hpp \ +xqilla/functions/FunctionId.hpp \ +xqilla/functions/FunctionIdref.hpp \ +xqilla/functions/FunctionImplicitTimezone.hpp \ +xqilla/functions/FunctionIndexOf.hpp \ +xqilla/functions/FunctionInScopePrefixes.hpp \ +xqilla/functions/FunctionInsertBefore.hpp \ +xqilla/functions/FunctionIriToUri.hpp \ +xqilla/functions/FunctionLang.hpp \ +xqilla/functions/FunctionLast.hpp \ +xqilla/functions/FunctionLocalNameFromQName.hpp \ +xqilla/functions/FunctionLocalname.hpp \ +xqilla/functions/FunctionLowerCase.hpp \ +xqilla/functions/FunctionMatches.hpp \ +xqilla/functions/FunctionMax.hpp \ +xqilla/functions/FunctionMin.hpp \ +xqilla/functions/FunctionMinutesFromDateTime.hpp \ +xqilla/functions/FunctionMinutesFromDuration.hpp \ +xqilla/functions/FunctionMinutesFromTime.hpp \ +xqilla/functions/FunctionMonthFromDate.hpp \ +xqilla/functions/FunctionMonthFromDateTime.hpp \ +xqilla/functions/FunctionMonthsFromDuration.hpp \ +xqilla/functions/FunctionName.hpp \ +xqilla/functions/FunctionNamespaceURIForPrefix.hpp \ +xqilla/functions/FunctionNamespaceURIFromQName.hpp \ +xqilla/functions/FunctionNamespaceUri.hpp \ +xqilla/functions/FunctionNilled.hpp \ +xqilla/functions/FunctionNodeName.hpp \ +xqilla/functions/FunctionNormalizeSpace.hpp \ +xqilla/functions/FunctionNormalizeUnicode.hpp \ +xqilla/functions/FunctionNot.hpp \ +xqilla/functions/FunctionNumber.hpp \ +xqilla/functions/FunctionOneOrMore.hpp \ +xqilla/functions/FunctionPosition.hpp \ +xqilla/functions/FunctionPrefixFromQName.hpp \ +xqilla/functions/FunctionQName.hpp \ +xqilla/functions/FunctionRemove.hpp \ +xqilla/functions/FunctionReplace.hpp \ +xqilla/functions/FunctionResolveQName.hpp \ +xqilla/functions/FunctionResolveURI.hpp \ +xqilla/functions/FunctionReverse.hpp \ +xqilla/functions/FunctionRoot.hpp \ +xqilla/functions/FunctionRoundHalfToEven.hpp \ +xqilla/functions/FunctionRound.hpp \ +xqilla/functions/FunctionSecondsFromDateTime.hpp \ +xqilla/functions/FunctionSecondsFromDuration.hpp \ +xqilla/functions/FunctionSecondsFromTime.hpp \ +xqilla/functions/FunctionStartsWith.hpp \ +xqilla/functions/FunctionStaticBaseURI.hpp \ +xqilla/functions/FunctionString.hpp \ +xqilla/functions/FunctionStringJoin.hpp \ +xqilla/functions/FunctionStringLength.hpp \ +xqilla/functions/FunctionStringToCodepoints.hpp \ +xqilla/functions/FunctionSubsequence.hpp \ +xqilla/functions/FunctionSubstringAfter.hpp \ +xqilla/functions/FunctionSubstringBefore.hpp \ +xqilla/functions/FunctionSubstring.hpp \ +xqilla/functions/FunctionSum.hpp \ +xqilla/functions/FunctionTimezoneFromDate.hpp \ +xqilla/functions/FunctionTimezoneFromDateTime.hpp \ +xqilla/functions/FunctionTimezoneFromTime.hpp \ +xqilla/functions/FunctionTokenize.hpp \ +xqilla/functions/FunctionTrace.hpp \ +xqilla/functions/FunctionTranslate.hpp \ +xqilla/functions/FunctionTrue.hpp \ +xqilla/functions/FunctionUnordered.hpp \ +xqilla/functions/FunctionUpperCase.hpp \ +xqilla/functions/FunctionYearFromDate.hpp \ +xqilla/functions/FunctionYearFromDateTime.hpp \ +xqilla/functions/FunctionYearsFromDuration.hpp \ +xqilla/functions/FunctionZeroOrOne.hpp \ +xqilla/functions/FuncFactory.hpp \ +xqilla/functions/XQUserFunction.hpp \ +xqilla/items/ATAnySimpleType.hpp \ +xqilla/items/ATAnyURIOrDerived.hpp \ +xqilla/items/ATBase64BinaryOrDerived.hpp \ +xqilla/items/ATBooleanOrDerived.hpp \ +xqilla/items/ATDateOrDerived.hpp \ +xqilla/items/ATDateTimeOrDerived.hpp \ +xqilla/items/ATDecimalOrDerived.hpp \ +xqilla/items/ATDoubleOrDerived.hpp \ +xqilla/items/ATDurationOrDerived.hpp \ +xqilla/items/ATFloatOrDerived.hpp \ +xqilla/items/ATGDayOrDerived.hpp \ +xqilla/items/ATGMonthDayOrDerived.hpp \ +xqilla/items/ATGMonthOrDerived.hpp \ +xqilla/items/ATGYearMonthOrDerived.hpp \ +xqilla/items/ATGYearOrDerived.hpp \ +xqilla/items/ATHexBinaryOrDerived.hpp \ +xqilla/items/ATNotationOrDerived.hpp \ +xqilla/items/ATQNameConstructor.hpp \ +xqilla/items/ATQNameOrDerived.hpp \ +xqilla/items/ATStringOrDerived.hpp \ +xqilla/items/ATTimeOrDerived.hpp \ +xqilla/items/ATUntypedAtomic.hpp \ +xqilla/items/AnyAtomicTypeConstructor.hpp \ +xqilla/items/AnyAtomicType.hpp \ +xqilla/items/DateOrTimeType.hpp \ +xqilla/items/ItemConstructor.hpp \ +xqilla/items/Item.hpp \ +xqilla/items/Node.hpp \ +xqilla/items/Numeric.hpp \ +xqilla/items/NumericTypeConstructor.hpp \ +xqilla/items/Timezone.hpp \ +xqilla/items/DatatypeLookup.hpp \ +xqilla/items/DatatypeFactory.hpp \ +xqilla/items/impl/ATBooleanOrDerivedImpl.hpp \ +xqilla/items/impl/ATDecimalOrDerivedImpl.hpp \ +xqilla/items/impl/ATDoubleOrDerivedImpl.hpp \ +xqilla/items/impl/ATFloatOrDerivedImpl.hpp \ +xqilla/items/impl/ATQNameOrDerivedImpl.hpp \ +xqilla/items/impl/NodeImpl.hpp \ +xqilla/items/impl/ATDurationOrDerivedImpl.hpp \ +xqilla/items/impl/ATDateTimeOrDerivedImpl.hpp \ +xqilla/items/impl/ATDateOrDerivedImpl.hpp \ +xqilla/items/impl/ATTimeOrDerivedImpl.hpp \ +xqilla/items/impl/ATGDayOrDerivedImpl.hpp \ +xqilla/items/impl/ATGMonthDayOrDerivedImpl.hpp \ +xqilla/items/impl/ATGMonthOrDerivedImpl.hpp \ +xqilla/items/impl/ATGYearMonthOrDerivedImpl.hpp \ +xqilla/items/impl/ATGYearOrDerivedImpl.hpp \ +xqilla/mapm/m_apm.h \ +xqilla/operators/And.hpp \ +xqilla/operators/ArithmeticOperator.hpp \ +xqilla/operators/ComparisonOperator.hpp \ +xqilla/operators/Divide.hpp \ +xqilla/operators/Equals.hpp \ +xqilla/operators/Except.hpp \ +xqilla/operators/GeneralComp.hpp \ +xqilla/operators/GreaterThanEqual.hpp \ +xqilla/operators/GreaterThan.hpp \ +xqilla/operators/IntegerDivide.hpp \ +xqilla/operators/Intersect.hpp \ +xqilla/operators/LessThanEqual.hpp \ +xqilla/operators/LessThan.hpp \ +xqilla/operators/Minus.hpp \ +xqilla/operators/Mod.hpp \ +xqilla/operators/Multiply.hpp \ +xqilla/operators/NodeComparison.hpp \ +xqilla/operators/NotEquals.hpp \ +xqilla/operators/OrderComparison.hpp \ +xqilla/operators/Or.hpp \ +xqilla/operators/Plus.hpp \ +xqilla/operators/Range.hpp \ +xqilla/operators/UnaryMinus.hpp \ +xqilla/operators/Union.hpp \ +xqilla/parser/QName.hpp \ +xqilla/runtime/Sequence.hpp \ +xqilla/runtime/ResultBuffer.hpp \ +xqilla/runtime/ResultBufferImpl.hpp \ +xqilla/runtime/Result.hpp \ +xqilla/runtime/ResultImpl.hpp \ +xqilla/runtime/SingleResult.hpp \ +xqilla/runtime/SequenceResult.hpp \ +xqilla/runtime/LazySequenceResult.hpp \ +xqilla/runtime/EmptyResult.hpp \ +xqilla/schema/DocumentCache.hpp \ +xqilla/schema/SequenceType.hpp \ +xqilla/schema/AnyAtomicTypeDatatypeValidator.hpp \ +xqilla/schema/DocumentCacheImpl.hpp \ +xqilla/simple-api/XQilla.hpp \ +xqilla/simple-api/XQQuery.hpp \ +xqilla/utils/NumUtils.hpp \ +xqilla/utils/XPath2NSUtils.hpp \ +xqilla/utils/XPath2Utils.hpp \ +xqilla/utils/XMLChCompare.hpp \ +xqilla/utils/XStr.hpp \ +xqilla/utils/ContextUtils.hpp \ +xqilla/utils/PrintAST.hpp \ +xqilla/utils/UTF8Str.hpp \ +xqilla/utils/XQillaPlatformUtils.hpp \ +xqilla/utils/UCANormalizer.hpp \ +xqilla/framework/ReferenceCounted.hpp \ +xqilla/framework/XPath2MemoryManager.hpp \ +xqilla/framework/BaseMemoryManager.hpp \ +xqilla/framework/ProxyMemoryManager.hpp \ +xqilla/framework/StringPool.hpp \ +xqilla/framework/XPath2MemoryManagerImpl.hpp \ +xqilla/framework/XQillaExport.hpp \ +xqilla/xqts/TestSuiteParser.hpp \ +xqilla/xqts/TestSuiteResultListener.hpp \ +xqilla/xqts/TestSuiteRunner.hpp + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu include/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +install-nobase_includeHEADERS: $(nobase_include_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)" + @$(am__vpath_adj_setup) \ + list='$(nobase_include_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + $(am__vpath_adj) \ + echo " $(nobase_includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \ + $(nobase_includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \ + done + +uninstall-nobase_includeHEADERS: + @$(NORMAL_UNINSTALL) + @$(am__vpath_adj_setup) \ + list='$(nobase_include_HEADERS)'; for p in $$list; do \ + $(am__vpath_adj) \ + echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \ + rm -f "$(DESTDIR)$(includedir)/$$f"; \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(mkdir_p) $(distdir)/xqilla $(distdir)/xqilla/ast $(distdir)/xqilla/axis $(distdir)/xqilla/context $(distdir)/xqilla/context/impl $(distdir)/xqilla/dom-api $(distdir)/xqilla/dom-api/impl $(distdir)/xqilla/exceptions $(distdir)/xqilla/framework $(distdir)/xqilla/fulltext $(distdir)/xqilla/functions $(distdir)/xqilla/items $(distdir)/xqilla/items/impl $(distdir)/xqilla/mapm $(distdir)/xqilla/operators $(distdir)/xqilla/parser $(distdir)/xqilla/runtime $(distdir)/xqilla/schema $(distdir)/xqilla/simple-api $(distdir)/xqilla/utils $(distdir)/xqilla/xqts + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(includedir)"; do \ + test -z "$$dir" || $(mkdir_p) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: install-nobase_includeHEADERS + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-info-am uninstall-nobase_includeHEADERS + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool ctags distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-nobase_includeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-info-am \ + uninstall-nobase_includeHEADERS + + +docs: $(top_srcdir)/docs/.simple-api-timestamp $(top_srcdir)/docs/.dom3-api-timestamp + +$(top_srcdir)/docs/.simple-api-timestamp: $(nobase_include_HEADERS) $(top_srcdir)/docs/Doxyfile.simpleapi + cd $(top_srcdir)/docs && \ + doxygen Doxyfile.simpleapi && \ + touch .simple-api-timestamp + +$(top_srcdir)/docs/Doxyfile.simpleapi: $(top_srcdir)/docs/Doxyfile.simpleapi.in + sed -e "s,%xerces_include%,$(xerces_include)," $(top_srcdir)/docs/Doxyfile.simpleapi.in >$(top_srcdir)/docs/Doxyfile.simpleapi + +$(top_srcdir)/docs/.dom3-api-timestamp: $(nobase_include_HEADERS) $(top_srcdir)/docs/Doxyfile.dom3api + cd $(top_srcdir)/docs && \ + doxygen Doxyfile.dom3api && \ + touch .dom3-api-timestamp + +$(top_srcdir)/docs/Doxyfile.dom3api: $(top_srcdir)/docs/Doxyfile.dom3api.in + sed -e "s,%xerces_include%,$(xerces_include)," $(top_srcdir)/docs/Doxyfile.dom3api.in >$(top_srcdir)/docs/Doxyfile.dom3api + +devdocs: $(top_srcdir)/docs/.dev-api-timestamp + +$(top_srcdir)/docs/.dev-api-timestamp: $(nobase_include_HEADERS) $(top_srcdir)/docs/Doxyfile.devapi + cd $(top_srcdir)/docs && \ + doxygen Doxyfile.devapi && \ + touch .dev-api-timestamp + +$(top_srcdir)/docs/Doxyfile.devapi: $(top_srcdir)/docs/Doxyfile.devapi.in + sed -e "s,%xerces_include%,$(xerces_include)," $(top_srcdir)/docs/Doxyfile.devapi.in >$(top_srcdir)/docs/Doxyfile.devapi +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/include/xqilla/ast/ASTNode.hpp b/include/xqilla/ast/ASTNode.hpp new file mode 100644 index 00000000..d3233c85 --- /dev/null +++ b/include/xqilla/ast/ASTNode.hpp @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ASTNode.hpp,v 1.14 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _ASTNODE_HPP +#define _ASTNODE_HPP + +#include + +#include +#include +#include + +class DynamicContext; +class StaticContext; +class Result; +class StaticResolutionContext; + +class XQILLA_API ASTNode : public LocationInfo +{ +public: + ///enum for data types + typedef enum { + LITERAL, + SEQUENCE, + FUNCTION, + NAVIGATION, + VARIABLE, + STEP, + IF, + INSTANCE_OF, + CASTABLE_AS, + CAST_AS, + TREAT_AS, + OPERATOR, + CONTEXT_ITEM, + PARENTHESIZED, + DEBUG_HOOK, + DOM_CONSTRUCTOR, + FLWOR, + FLWOR_QUANTIFIED, + TYPESWITCH, + VALIDATE, + FUNCTION_CALL, + USER_FUNCTION, + ORDERING_CHANGE, + XPATH1_CONVERT, + PROMOTE_UNTYPED, + PROMOTE_NUMERIC, + PROMOTE_ANY_URI, + DOCUMENT_ORDER, + PREDICATE, + ATOMIZE, + FTCONTAINS + } whichType; + + virtual ~ASTNode() {} + + /// The flags parameter is currently unused + virtual Result collapseTree(DynamicContext *context, int flags=0) const = 0; + + /** Returns true if this ASTNode has no predicates, and is an instance of + XQSequence or XQLiteral */ + virtual bool isConstant() const = 0; + /** Returns true if this ASTNode has no predicates, and is an instance of + XQSequence or XQLiteral. If the literal value of this ASTNode + is a single DateOrTimeType, then !hasTimezone() on it must return true, + otherwise this method will return false. */ + virtual bool isDateOrTimeAndHasNoTimezone(StaticContext* context) const = 0; + virtual bool isSingleNumericConstant(StaticContext *context) const = 0; + + virtual whichType getType(void) const = 0; + + virtual ASTNode *staticResolution(StaticContext *context) = 0; + virtual ASTNode *staticTyping(StaticContext *context) = 0; + /// Returns the StaticResolutionContext for this ASTNode + virtual const StaticResolutionContext &getStaticResolutionContext() const = 0; +}; + +typedef std::vector > VectorOfASTNodes; + +#endif + diff --git a/include/xqilla/ast/ASTNodeImpl.hpp b/include/xqilla/ast/ASTNodeImpl.hpp new file mode 100644 index 00000000..cbf255c8 --- /dev/null +++ b/include/xqilla/ast/ASTNodeImpl.hpp @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ASTNodeImpl.hpp,v 1.10 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _ASTNODEIMPL_HPP +#define _ASTNODEIMPL_HPP + +class DynamicContext; +class Numeric; + +#include +#include +#include +#include + +/** class which is used as base for all the different data types */ +class XQILLA_API ASTNodeImpl : public ASTNode +{ +public: + ASTNodeImpl(XPath2MemoryManager* memMgr); + virtual ~ASTNodeImpl(); + + ASTNode::whichType getType(void) const; + + /** Returns true if this ASTNode is an instance of XQSequence or XQLiteral */ + virtual bool isConstant() const; + /** Returns true if this ASTNode has no predicates, and is an instance of + XQSequence or XQLiteral. If the literal value of this ASTNode + is a single DateOrTimeType, then !hasTimezone() on it must return true, + otherwise this method will return false. */ + virtual bool isDateOrTimeAndHasNoTimezone(StaticContext* context) const; + + virtual bool isSingleNumericConstant(StaticContext *context) const; + + ///calls createResult + virtual Result collapseTree(DynamicContext* context, int flags=0) const; + + /** + * Can be overridden by derived classes. Default implementation returns a + * SequenceResult made from the Sequence returned by collapseTreeInternal. + */ + virtual Result createResult(DynamicContext* context, int flags=0) const; + + /** + * Collapse the compiled expression based on context. Default implementation + * returns an empty sequence. + */ + virtual Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + + /** Performs constant folding on this ASTNode. */ + ASTNode *constantFold(StaticContext *context); + + virtual const StaticResolutionContext &getStaticResolutionContext() const; + +protected: + void setType(ASTNode::whichType t); + XPath2MemoryManager* getMemoryManager(void) const; + + class CollapseTreeInternalResult : public LazySequenceResult + { + public: + CollapseTreeInternalResult(const ASTNodeImpl *di, int flags, DynamicContext *context); + + void getResult(Sequence &toFill, DynamicContext *context) const; + std::string asString(DynamicContext *context, int indent) const; + + private: + int _flags; + const ASTNodeImpl *_di; + }; + + StaticResolutionContext _src; + +private: + whichType _type; + XPath2MemoryManager* _memMgr; +}; + +#endif diff --git a/include/xqilla/ast/AggregateFunction.hpp b/include/xqilla/ast/AggregateFunction.hpp new file mode 100644 index 00000000..75a08913 --- /dev/null +++ b/include/xqilla/ast/AggregateFunction.hpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: AggregateFunction.hpp,v 1.8 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _AGGREGATEFUNCTION_HPP +#define _AGGREGATEFUNCTION_HPP + +#include + +/** Virtual interface class for functions */ +class XQILLA_API AggregateFunction : public ConstantFoldingFunction +{ +public: + + /// constructor, checks for the correct number of arguments. + AggregateFunction(const XMLCh* name,unsigned int argsFrom, unsigned int argsTo, const char* paramDecl, const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + +protected: + /* + * returns a sequence with untypedAtomic values casted to the type of the other values in the sequence + * or if all values are untypedAtomic they are cast to the convertType. + * If the items aren't all the same type (or untypedAtomic) an exception is thrown. + */ + virtual Sequence validateSequence(Sequence sequence, DynamicContext* context) const; + + // is the type specified by the given URI/Name pair a numeric one? + bool isNumericType(const XMLCh* typeURI, const XMLCh* typeName, const DynamicContext* context) const; + + // is the item a NaN? + bool isNumericNaN(const Item::Ptr &item) const; + +}; +#endif // _AGGREGATEFUNCTION_HPP diff --git a/include/xqilla/ast/ConstantFoldingFunction.hpp b/include/xqilla/ast/ConstantFoldingFunction.hpp new file mode 100644 index 00000000..3156609a --- /dev/null +++ b/include/xqilla/ast/ConstantFoldingFunction.hpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ConstantFoldingFunction.hpp,v 1.9 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _CONSTANTFOLDINGFUNCTION_HPP +#define _CONSTANTFOLDINGFUNCTION_HPP + +#include +#include +#include + +class XQILLA_API ConstantFoldingFunction : public XQFunction +{ + +public: + ConstantFoldingFunction(const XMLCh* name, unsigned int argsFrom, unsigned int argsTo, const char* paramDecl, const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + virtual ~ConstantFoldingFunction(); + + /** + * Called during static analysis to determine if statically correct. + * Performs constant folding if the arguments to the function are + * all constant. + */ + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); +}; + +#endif diff --git a/include/xqilla/ast/ConvertFunctionArg.hpp b/include/xqilla/ast/ConvertFunctionArg.hpp new file mode 100644 index 00000000..184c949f --- /dev/null +++ b/include/xqilla/ast/ConvertFunctionArg.hpp @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ConvertFunctionArg.hpp,v 1.4 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _CONVERTFUNCTIONARG_HPP +#define _CONVERTFUNCTIONARG_HPP + +#include +#include + +class XQILLA_API XQPromoteUntyped : public ASTNodeImpl +{ +public: + XQPromoteUntyped(ASTNode* expr, const XMLCh *uri, const XMLCh *name, XPath2MemoryManager* memMgr); + + virtual Result createResult(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + const ASTNode *getExpression() const { return expr_; } + void setExpression(ASTNode *expr) { expr_ = expr; } + const XMLCh *getTypeURI() const { return uri_; } + const XMLCh *getTypeName() const { return name_; } + +protected: + class PromoteUntypedResult : public ResultImpl + { + public: + PromoteUntypedResult(const XQPromoteUntyped *di, const Result &parent, const XMLCh *uri, const XMLCh *name) + : ResultImpl(di), parent_(parent), uri_(uri), name_(name) {} + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const { return "promoteuntypedresult"; } + private: + Result parent_; + const XMLCh *uri_, *name_; + }; + + ASTNode* expr_; + const XMLCh *uri_, *name_; +}; + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +class XQILLA_API XQPromoteNumeric : public ASTNodeImpl +{ +public: + XQPromoteNumeric(ASTNode* expr, const XMLCh *uri, const XMLCh *name, XPath2MemoryManager* memMgr); + + virtual Result createResult(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + const ASTNode *getExpression() const { return expr_; } + void setExpression(ASTNode *expr) { expr_ = expr; } + const XMLCh *getTypeURI() const { return uri_; } + const XMLCh *getTypeName() const { return name_; } + +protected: + class PromoteNumericResult : public ResultImpl + { + public: + PromoteNumericResult(const XQPromoteNumeric *di, const Result &parent, const XMLCh *uri, const XMLCh *name) + : ResultImpl(di), parent_(parent), uri_(uri), name_(name) {} + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const { return "promotenumericresult"; } + private: + Result parent_; + const XMLCh *uri_, *name_; + }; + + ASTNode* expr_; + const XMLCh *uri_, *name_; +}; + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +class XQILLA_API XQPromoteAnyURI : public ASTNodeImpl +{ +public: + XQPromoteAnyURI(ASTNode* expr, const XMLCh *uri, const XMLCh *name, XPath2MemoryManager* memMgr); + + virtual Result createResult(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + const ASTNode *getExpression() const { return expr_; } + void setExpression(ASTNode *expr) { expr_ = expr; } + const XMLCh *getTypeURI() const { return uri_; } + const XMLCh *getTypeName() const { return name_; } + +protected: + class PromoteAnyURIResult : public ResultImpl + { + public: + PromoteAnyURIResult(const XQPromoteAnyURI *di, const Result &parent) + : ResultImpl(di), parent_(parent) {} + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const { return "promoteanyuriresult"; } + private: + Result parent_; + }; + + ASTNode* expr_; + const XMLCh *uri_, *name_; +}; + +#endif diff --git a/include/xqilla/ast/LocationInfo.hpp b/include/xqilla/ast/LocationInfo.hpp new file mode 100644 index 00000000..d16a15d1 --- /dev/null +++ b/include/xqilla/ast/LocationInfo.hpp @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: LocationInfo.hpp,v 1.2 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _LOCATIONINFO_HPP +#define _LOCATIONINFO_HPP + + +#include + +class XQILLA_API LocationInfo +{ +public: + LocationInfo() + : file_(0), line_(0), column_(0) {} + LocationInfo(const XMLCh *file, unsigned int line, unsigned int column) + : file_(file), line_(line), column_(column) {} + + const XMLCh *getFile() const { return file_; } + unsigned int getLine() const { return line_; } + unsigned int getColumn() const { return column_; } + void setLocationInfo(const XMLCh *file, unsigned int line, unsigned int column) + { + file_ = file; + line_ = line; + column_ = column; + } + void setLocationInfo(const LocationInfo *o) + { + if(o != 0) { + file_ = o->file_; + line_ = o->line_; + column_ = o->column_; + } + } + +private: + const XMLCh *file_; + unsigned int line_, column_; +}; + +#endif diff --git a/include/xqilla/ast/NumericFunction.hpp b/include/xqilla/ast/NumericFunction.hpp new file mode 100644 index 00000000..2ddeeca6 --- /dev/null +++ b/include/xqilla/ast/NumericFunction.hpp @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: NumericFunction.hpp,v 1.12 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _NUMERICFUNCTION_HPP +#define _NUMERICFUNCTION_HPP + +#include + +/** Virtual interface class for functions */ +class XQILLA_API NumericFunction : public ConstantFoldingFunction +{ +public: + + /// constructor, checks for the correct number of arguments. + NumericFunction(const XMLCh* name, unsigned int argsFrom, unsigned int argsTo, const char* paramDecl, const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + +protected: + Numeric::Ptr getNumericParam(unsigned int number, DynamicContext *context, int flags=0) const; +}; +#endif // _NUMERICFUNCTION_HPP diff --git a/include/xqilla/ast/StaticResolutionContext.hpp b/include/xqilla/ast/StaticResolutionContext.hpp new file mode 100644 index 00000000..3105c4b6 --- /dev/null +++ b/include/xqilla/ast/StaticResolutionContext.hpp @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: StaticResolutionContext.hpp,v 1.15 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _STATICRESOLUTIONCONTEXT_HPP +#define _STATICRESOLUTIONCONTEXT_HPP + +#include + +#include +#include + +#include +#include + +#include + +class XPath2MemoryManager; + +typedef XERCES_CPP_NAMESPACE_QUALIFIER RefHash2KeysTableOf VariableAccessSet; +typedef XERCES_CPP_NAMESPACE_QUALIFIER RefHash2KeysTableOfEnumerator VariableAccessSetEnumerator; + +/** + * Records access to various parts of the context during static resolution. + */ +class XQILLA_API StaticResolutionContext +{ +public: + StaticResolutionContext(XPath2MemoryManager* memMgr); + StaticResolutionContext(const StaticResolutionContext &o, XPath2MemoryManager* memMgr); + + void copy(const StaticResolutionContext &o); + + /// Clears all the information in this StaticResolutionContext + void clear(); + + /** Overrides all the other flags, and never allows this sub-expression + to be constant folded. */ + void forceNoFolding(bool value); + bool isNoFoldingForced() const; + + void contextItemUsed(bool value); + void contextPositionUsed(bool value); + void contextSizeUsed(bool value); + bool isContextItemUsed() const; + bool isContextPositionUsed() const; + bool isContextSizeUsed() const; + /** Returns true if any of the context item flags have been used */ + bool areContextFlagsUsed() const; + + void currentTimeUsed(bool value); + void implicitTimezoneUsed(bool value); + bool areContextTimeUsed() const; + void availableDocumentsUsed(bool value); + void availableCollectionsUsed(bool value); + bool areDocsOrCollectionsUsed() const; + + void variableUsed(const XMLCh *namespaceURI, const XMLCh *name); + bool removeVariable(const XMLCh *namespaceURI, const XMLCh *name); + bool isVariableUsed(const XMLCh *namespaceURI, const XMLCh *name) const; + std::vector > variablesUsed() const; + + /** Sets the members of this StaticResolutionContext from the given StaticResolutionContext */ + void add(const StaticResolutionContext &o); + void addExceptContextFlags(const StaticResolutionContext &o); + + /** Returns true if flags are set, or variables have been used */ + bool isUsed() const; + bool isUsedExceptContextFlags() const; + + void creative(bool value); + bool isCreative() const; + + /** + * Properties that allow optimisation regarding sorting or not. + * The values are OR'd as flags, so they must be distinct bits + */ + enum Properties { + DOCORDER = 0x001, ///< Results are returned in document order + PEER = 0x002, ///< Results do not appear in the descendants of other results + SUBTREE = 0x004, ///< Results are members of the set of descendants of the context node + GROUPED = 0x008, ///< Results are grouped by the document they come from + SAMEDOC = 0x010, ///< Results are from the same document as the context node + ONENODE = 0x020, ///< Only ever returns one node + SELF = 0x040, ///< Only ever returns the context node + FORWARDREF = 0x080, ///< This is a forward reference for a global variable that is declared later + UNDEFINEDVAR = 0x100 ///< This is a variable that has been undefined + }; + + unsigned int getProperties() const; + void setProperties(unsigned int props); + + const StaticType &getStaticType() const; + StaticType &getStaticType(); + + std::string toString() const; + +private: + StaticResolutionContext(const StaticResolutionContext &o); + StaticResolutionContext &operator=(const StaticResolutionContext &o); + + bool _contextItem; + bool _contextPosition; + bool _contextSize; + bool _currentTime; + bool _implicitTimezone; + bool _availableDocuments; + bool _availableCollections; + bool _forceNoFolding; + bool _creative; + + unsigned int _properties; + StaticType _staticType; + + VariableAccessSet _dynamicVariables; + XERCES_CPP_NAMESPACE_QUALIFIER XMLStringPool _uriPool; + XPath2MemoryManager* _memMgr; +}; + +#endif diff --git a/include/xqilla/ast/StaticType.hpp b/include/xqilla/ast/StaticType.hpp new file mode 100644 index 00000000..f8c65c03 --- /dev/null +++ b/include/xqilla/ast/StaticType.hpp @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: StaticType.hpp,v 1.6 2006/11/02 15:07:56 jpcs Exp $ + */ + +#ifndef _STATICTYPE_HPP +#define _STATICTYPE_HPP + +#include +#include + +/** + * Class that represents the static type of a sub-expression + */ +class XQILLA_API StaticType { +public: + /** + * Flags that determine what item types are returned from a sub-expression + */ + enum StaticTypeFlags { + DOCUMENT_TYPE = 0x00000001, + ELEMENT_TYPE = 0x00000002, + ATTRIBUTE_TYPE = 0x00000004, + TEXT_TYPE = 0x00000008, + PI_TYPE = 0x00000010, + COMMENT_TYPE = 0x00000020, + NAMESPACE_TYPE = 0x00000040, + + ANY_SIMPLE_TYPE = 0x00000080, + ANY_URI_TYPE = 0x00000100, + BASE_64_BINARY_TYPE = 0x00000200, + BOOLEAN_TYPE = 0x00000400, + DATE_TYPE = 0x00000800, + DATE_TIME_TYPE = 0x00001000, + DAY_TIME_DURATION_TYPE = 0x00002000, + DECIMAL_TYPE = 0x00004000, + DOUBLE_TYPE = 0x00008000, + DURATION_TYPE = 0x00010000, + FLOAT_TYPE = 0x00020000, + G_DAY_TYPE = 0x00040000, + G_MONTH_TYPE = 0x00080000, + G_MONTH_DAY_TYPE = 0x00100000, + G_YEAR_TYPE = 0x00200000, + G_YEAR_MONTH_TYPE = 0x00400000, + HEX_BINARY_TYPE = 0x00800000, + NOTATION_TYPE = 0x01000000, + QNAME_TYPE = 0x02000000, + STRING_TYPE = 0x04000000, + TIME_TYPE = 0x08000000, + UNTYPED_ATOMIC_TYPE = 0x10000000, + YEAR_MONTH_DURATION_TYPE = 0x20000000, + + NODE_TYPE = (DOCUMENT_TYPE | ELEMENT_TYPE | ATTRIBUTE_TYPE | TEXT_TYPE | PI_TYPE | COMMENT_TYPE | + NAMESPACE_TYPE), + + NUMERIC_TYPE = (DECIMAL_TYPE | FLOAT_TYPE | DOUBLE_TYPE), + + TIMEZONE_TYPE = (DATE_TYPE | DATE_TIME_TYPE | G_DAY_TYPE | G_MONTH_TYPE | G_MONTH_DAY_TYPE | + G_YEAR_TYPE | G_YEAR_MONTH_TYPE | TIME_TYPE), + + TYPED_ATOMIC_TYPE = (NUMERIC_TYPE | TIMEZONE_TYPE | ANY_SIMPLE_TYPE | ANY_URI_TYPE | BASE_64_BINARY_TYPE | + BOOLEAN_TYPE | DAY_TIME_DURATION_TYPE | DURATION_TYPE | HEX_BINARY_TYPE | + NOTATION_TYPE | QNAME_TYPE | STRING_TYPE | YEAR_MONTH_DURATION_TYPE), + + ANY_ATOMIC_TYPE = (TYPED_ATOMIC_TYPE | UNTYPED_ATOMIC_TYPE), + + ITEM_TYPE = (NODE_TYPE | ANY_ATOMIC_TYPE), + + EMPTY_TYPE = 0 + }; + + StaticType() : flags(0) {} + StaticType(unsigned int f) : flags(f) {} + + static unsigned int getFlagsFor(const XMLCh *uri, const XMLCh *name, const StaticContext *context, + bool &isExact); + static unsigned int getFlagsFor(AnyAtomicType::AtomicObjectType primitiveType); + + void typeUnion(const StaticType &st); + void typeIntersect(const StaticType &st); + + bool containsType(unsigned int type) const; + bool isType(unsigned int type) const; + + unsigned int flags; +}; + +#endif diff --git a/include/xqilla/ast/XPath1Compat.hpp b/include/xqilla/ast/XPath1Compat.hpp new file mode 100644 index 00000000..377438cc --- /dev/null +++ b/include/xqilla/ast/XPath1Compat.hpp @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XPath1Compat.hpp,v 1.4 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _XPATH1COMPAT_HPP +#define _XPATH1COMPAT_HPP + +#include +#include + +class SequenceType; + +class XQILLA_API XPath1CompatConvertFunctionArg : public ASTNodeImpl +{ +public: + XPath1CompatConvertFunctionArg(ASTNode* expr, const SequenceType *seqType, XPath2MemoryManager* memMgr); + + virtual Result createResult(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + const ASTNode *getExpression() const { return expr_; } + void setExpression(ASTNode *expr) { expr_ = expr; } + const SequenceType *getSequenceType() const { return seqType_; } + +protected: + class XPath1CompatConvertFunctionArgResult : public ResultImpl + { + public: + XPath1CompatConvertFunctionArgResult(const XPath1CompatConvertFunctionArg *di, const Result &parent, const SequenceType *seqType); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + private: + const SequenceType *seqType_; + Result parent_; + bool oneDone_; + }; + + ASTNode* expr_; + const SequenceType *seqType_; +}; + +#endif diff --git a/include/xqilla/ast/XQAtomize.hpp b/include/xqilla/ast/XQAtomize.hpp new file mode 100644 index 00000000..712011f5 --- /dev/null +++ b/include/xqilla/ast/XQAtomize.hpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQAtomize.hpp,v 1.6 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _XQATOMIZE_HPP +#define _XQATOMIZE_HPP + +#include +#include + +class XQILLA_API XQAtomize : public ASTNodeImpl +{ +public: + XQAtomize(ASTNode* expr, XPath2MemoryManager* memMgr); + + virtual Result createResult(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + const ASTNode *getExpression() const { return expr_; } + void setExpression(ASTNode *expr) { expr_ = expr; } + +protected: + ASTNode* expr_; +}; + +class XQILLA_API AtomizeResult : public ResultImpl +{ +public: + AtomizeResult(const LocationInfo *location, const Result &parent) + : ResultImpl(location), _parent(parent), _sub(0) {} + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const { return "atomizeresult"; } +private: + Result _parent; + Result _sub; +}; + +#endif diff --git a/include/xqilla/ast/XQAttributeConstructor.hpp b/include/xqilla/ast/XQAttributeConstructor.hpp new file mode 100644 index 00000000..d6925296 --- /dev/null +++ b/include/xqilla/ast/XQAttributeConstructor.hpp @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQAttributeConstructor.hpp,v 1.1 2006/11/03 17:04:19 jpcs Exp $ + */ + +#if !defined(AFXQ_XQATTRIBUTECONSTRUCTOR_H__56E97972_3896_49D3_B055_36CC3E9E550A__INCLUDED_) +#define AFXQ_XQATTRIBUTECONSTRUCTOR_H__56E97972_3896_49D3_B055_36CC3E9E550A__INCLUDED_ + +#include + +class XQILLA_API XQAttributeConstructor : public XQDOMConstructor +{ +public: + XQAttributeConstructor(ASTNode* name, VectorOfASTNodes* children, XPath2MemoryManager* mm); + + virtual Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + virtual const XMLCh* getNodeType() const; + virtual const ASTNode *getName() const; + virtual const VectorOfASTNodes *getChildren() const; + + virtual void setName(ASTNode *name); + +protected: + ASTNode* m_name; + VectorOfASTNodes* m_children; +}; + +#endif diff --git a/include/xqilla/ast/XQCastAs.hpp b/include/xqilla/ast/XQCastAs.hpp new file mode 100644 index 00000000..4964130a --- /dev/null +++ b/include/xqilla/ast/XQCastAs.hpp @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQCastAs.hpp,v 1.8 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _XQCASTAS_HPP +#define _XQCASTAS_HPP + +#include + +#include +#include + +class SequenceType; + +class XQILLA_API XQCastAs : public ASTNodeImpl +{ +public: + XQCastAs(ASTNode* expr, SequenceType* exprType, XPath2MemoryManager* memMgr); + + virtual Result createResult(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + const ASTNode *getExpression() const; + const SequenceType *getSequenceType() const; + + void setExpression(ASTNode *item); + +protected: + class CastAsResult : public SingleResult + { + public: + CastAsResult(const XQCastAs *di); + + Item::Ptr getSingleResult(DynamicContext *context) const; + std::string asString(DynamicContext *context, int indent) const; + + private: + const XQCastAs *_di; + }; + + ASTNode* _expr; + SequenceType* _exprType; +}; + +#endif // _XQCASTAS_HPP diff --git a/include/xqilla/ast/XQCastableAs.hpp b/include/xqilla/ast/XQCastableAs.hpp new file mode 100644 index 00000000..b3e234e1 --- /dev/null +++ b/include/xqilla/ast/XQCastableAs.hpp @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQCastableAs.hpp,v 1.8 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _XQCASTABLEAS_HPP +#define _XQCASTABLEAS_HPP + +#include + +#include +#include + +class SequenceType; + +class XQILLA_API XQCastableAs : public ASTNodeImpl +{ +public: + XQCastableAs(ASTNode* expr, SequenceType* exprType, XPath2MemoryManager* memMgr); + + virtual Result createResult(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + const ASTNode *getExpression() const; + const SequenceType *getSequenceType() const; + + void setExpression(ASTNode *item); + +protected: + class CastableAsResult : public SingleResult + { + public: + CastableAsResult(const XQCastableAs *di); + + Item::Ptr getSingleResult(DynamicContext *context) const; + std::string asString(DynamicContext *context, int indent) const; + + private: + const XQCastableAs *_di; + }; + + ASTNode* _expr; + SequenceType* _exprType; +}; + +#endif // _XQCASTABLEAS_HPP diff --git a/include/xqilla/ast/XQCommentConstructor.hpp b/include/xqilla/ast/XQCommentConstructor.hpp new file mode 100644 index 00000000..9b90170a --- /dev/null +++ b/include/xqilla/ast/XQCommentConstructor.hpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQCommentConstructor.hpp,v 1.1 2006/11/03 17:04:19 jpcs Exp $ + */ + +#if !defined(AFXQ_XQCOMMENTCONSTRUCTOR_H__56E97972_3896_49D3_B055_36CC3E9E550A__INCLUDED_) +#define AFXQ_XQCOMMENTCONSTRUCTOR_H__56E97972_3896_49D3_B055_36CC3E9E550A__INCLUDED_ + +#include + +class XQILLA_API XQCommentConstructor : public XQDOMConstructor +{ +public: + XQCommentConstructor(ASTNode *value, XPath2MemoryManager* mm); + + virtual Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + virtual const XMLCh* getNodeType() const; + virtual const ASTNode *getValue() const; + + virtual void setValue(ASTNode *value); + +private: + ASTNode *m_value; +}; + +#endif diff --git a/include/xqilla/ast/XQContextItem.hpp b/include/xqilla/ast/XQContextItem.hpp new file mode 100644 index 00000000..ba1e8306 --- /dev/null +++ b/include/xqilla/ast/XQContextItem.hpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQContextItem.hpp,v 1.10 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _XQCONTEXTITEM_HPP +#define _XQCONTEXTITEM_HPP + +#include + +#include +#include + +/** Returns the context item. Raises [err:XP0002] if the context item is null. */ +class XQILLA_API XQContextItem : public ASTNodeImpl +{ +public: + XQContextItem(XPath2MemoryManager* memMgr); + ~XQContextItem(); + + /** + * Called during static analysis of expression to determine is statically + * correct. If not an appropriate error is thrown. + */ + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + virtual Result createResult(DynamicContext* context, int flags=0) const; + + class XQILLA_API ContextItemResult : public SingleResult + { + public: + ContextItemResult(const LocationInfo *location); + Item::Ptr getSingleResult(DynamicContext *context) const; + std::string asString(DynamicContext *context, int indent) const; + }; +}; + +#endif + diff --git a/include/xqilla/ast/XQDOMConstructor.hpp b/include/xqilla/ast/XQDOMConstructor.hpp new file mode 100644 index 00000000..56c4e854 --- /dev/null +++ b/include/xqilla/ast/XQDOMConstructor.hpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQDOMConstructor.hpp,v 1.12 2006/11/03 17:04:19 jpcs Exp $ + */ + +#if !defined(AFXQ_XQDOMCONSTRUCTOR_H__56E97972_3896_49D3_B055_36CC3E9E550A__INCLUDED_) +#define AFXQ_XQDOMCONSTRUCTOR_H__56E97972_3896_49D3_B055_36CC3E9E550A__INCLUDED_ + +#include +#include + +#include +#include + +class XQILLA_API XQDOMConstructor : public ASTNodeImpl +{ +public: + XQDOMConstructor(XPath2MemoryManager* mm); + + virtual const XMLCh* getNodeType() const = 0; + virtual const ASTNode *getName() const { return 0; } + virtual const VectorOfASTNodes *getAttributes() const { return 0; } + virtual const VectorOfASTNodes *getChildren() const { return 0; } + virtual const ASTNode *getValue() const { return 0; } + + virtual void setName(ASTNode *name) {} + virtual void setValue(ASTNode *value) {} + +protected: + static bool getStringValue(const VectorOfASTNodes* m_children, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &value, + DynamicContext *context); + static bool getStringValue(const ASTNode *child, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &value, + DynamicContext *context); + void unescapeEntities(XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer& buff) const; +}; + +#endif diff --git a/include/xqilla/ast/XQDebugHook.hpp b/include/xqilla/ast/XQDebugHook.hpp new file mode 100644 index 00000000..f1b7c94f --- /dev/null +++ b/include/xqilla/ast/XQDebugHook.hpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQDebugHook.hpp,v 1.11 2006/11/01 16:37:11 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQDebugHook.hpp: interface for the XQDebugHook class. +////////////////////////////////////////////////////////////////////// + +#if !defined(AFXQ_XQDEBUGHOOK_H__446AD191_E9D0_4658_BD8C_032D29DA123C__INCLUDED_) +#define AFXQ_XQDEBUGHOOK_H__446AD191_E9D0_4658_BD8C_032D29DA123C__INCLUDED_ + +#include +#include + +class XQILLA_API XQDebugHook : public ASTNodeImpl +{ +public: + XQDebugHook(const XMLCh* szFile, unsigned int nLine, unsigned int nColumn, ASTNode* impl, const XMLCh* functionName, XPath2MemoryManager* memMgr); + + virtual Result collapseTree(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + virtual const StaticResolutionContext &getStaticResolutionContext() const; + + const XMLCh *getFunctionName() const; + + ASTNode* m_impl; +protected: + const XMLCh* m_szFunctionName; +}; + +#endif // !defined(AFXQ_XQDEBUGHOOK_H__446AD191_E9D0_4658_BD8C_032D29DA123C__INCLUDED_) diff --git a/include/xqilla/ast/XQDocumentConstructor.hpp b/include/xqilla/ast/XQDocumentConstructor.hpp new file mode 100644 index 00000000..fa1386a5 --- /dev/null +++ b/include/xqilla/ast/XQDocumentConstructor.hpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQDocumentConstructor.hpp,v 1.1 2006/11/03 17:04:19 jpcs Exp $ + */ + +#if !defined(AFXQ_XQDOCUMENTCONSTRUCTOR_H__56E97972_3896_49D3_B055_36CC3E9E550A__INCLUDED_) +#define AFXQ_XQDOCUMENTCONSTRUCTOR_H__56E97972_3896_49D3_B055_36CC3E9E550A__INCLUDED_ + +#include + +class XQILLA_API XQDocumentConstructor : public XQDOMConstructor +{ +public: + XQDocumentConstructor(ASTNode *value, XPath2MemoryManager* expr); + + virtual Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + virtual ASTNode *staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + virtual const XMLCh* getNodeType() const; + virtual const ASTNode *getValue() const; + + virtual void setValue(ASTNode *value); + +protected: + ASTNode *m_value; +}; + +#endif diff --git a/include/xqilla/ast/XQDocumentOrder.hpp b/include/xqilla/ast/XQDocumentOrder.hpp new file mode 100644 index 00000000..44f7b409 --- /dev/null +++ b/include/xqilla/ast/XQDocumentOrder.hpp @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQDocumentOrder.hpp,v 1.6 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _XQDOCUMENTORDER_HPP +#define _XQDOCUMENTORDER_HPP + +#include +#include +#include +#include + +#include + +class XQILLA_API XQDocumentOrder : public ASTNodeImpl +{ +public: + XQDocumentOrder(ASTNode* expr, XPath2MemoryManager* memMgr); + + virtual Result createResult(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + const ASTNode *getExpression() const { return expr_; } + void setExpression(ASTNode *expr) { expr_ = expr; } + bool getUnordered() const { return unordered_; } + +protected: + ASTNode* expr_; + bool unordered_; +}; + +class XQILLA_API DocumentOrderResult : public LazySequenceResult +{ +public: + DocumentOrderResult(const LocationInfo *location, const Result &parent, DynamicContext *context) + : LazySequenceResult(location, context), parent_(parent) {} + void getResult(Sequence &toFill, DynamicContext *context) const; + std::string asString(DynamicContext *context, int indent) const { return "documentorderresult"; } +private: + mutable Result parent_; +}; + +class XQILLA_API UniqueNodesResult : public ResultImpl +{ +public: + UniqueNodesResult(const XQDocumentOrder *doc, const Result &parent, const DynamicContext *context) + : ResultImpl(doc), parent_(parent), nTypeOfItemsInLastStep_(0), + noDups_(uniqueLessThanCompareFn(context)) {} + Item::Ptr next(DynamicContext *context); + void skip() { parent_->skip(); } + std::string asString(DynamicContext *context, int indent) const { return "uniquenodesresult"; } + +private: + class uniqueLessThanCompareFn { + public: + uniqueLessThanCompareFn(const DynamicContext *context) + : context_(context) {} + bool operator()(const Node::Ptr &first, const Node::Ptr &second) + { + return first->uniqueLessThan(second, context_); + } + private: + const DynamicContext *context_; + }; + typedef std::set NoDuplicatesSet; + + Result parent_; + int nTypeOfItemsInLastStep_; + NoDuplicatesSet noDups_; +}; + +#endif diff --git a/include/xqilla/ast/XQElementConstructor.hpp b/include/xqilla/ast/XQElementConstructor.hpp new file mode 100644 index 00000000..dec98044 --- /dev/null +++ b/include/xqilla/ast/XQElementConstructor.hpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQElementConstructor.hpp,v 1.1 2006/11/03 17:04:19 jpcs Exp $ + */ + +#if !defined(AFXQ_XQELEMENTCONSTRUCTOR_H__56E97972_3896_49D3_B055_36CC3E9E550A__INCLUDED_) +#define AFXQ_XQELEMENTCONSTRUCTOR_H__56E97972_3896_49D3_B055_36CC3E9E550A__INCLUDED_ + +#include + +#include + +class XQILLA_API XQElementConstructor : public XQDOMConstructor +{ +public: + XQElementConstructor(ASTNode* name, VectorOfASTNodes* attrList, VectorOfASTNodes* children, XPath2MemoryManager *mm); + + virtual Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + virtual const XMLCh* getNodeType() const; + virtual const ASTNode *getName() const; + virtual const VectorOfASTNodes *getAttributes() const; + virtual const VectorOfASTNodes *getChildren() const; + + virtual void setName(ASTNode *name); + +protected: + ASTNode* m_name; + VectorOfASTNodes* m_attrList, *m_children; + XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf< XMLCh >* m_namespaces; +}; + +#endif diff --git a/include/xqilla/ast/XQFLWOR.hpp b/include/xqilla/ast/XQFLWOR.hpp new file mode 100644 index 00000000..a1b3a3fd --- /dev/null +++ b/include/xqilla/ast/XQFLWOR.hpp @@ -0,0 +1,192 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQFLWOR.hpp,v 1.13 2006/11/01 16:37:11 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQFLWOR.hpp: interface for the XQFLWOR class. +////////////////////////////////////////////////////////////////////// + +#if !defined(AFXQ_XQFLWOR_H__6E34F36F_797C_4A12_AF0B_5538F1D650B1__INCLUDED_) +#define AFXQ_XQFLWOR_H__6E34F36F_797C_4A12_AF0B_5538F1D650B1__INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include + +class Collation; + +class XQILLA_API SortableItem +{ +public: + SortableItem(); + SortableItem(const SortableItem& other); + + bool operator==(const SortableItem& other) const; + bool operator>(const SortableItem& other) const; + + int m_bAscending:1, m_bIsMax:1, m_bIsMin:1; + DynamicContext* m_context; + Collation* m_collation; + AnyAtomicType::Ptr m_item; + const LocationInfo *m_info; +}; + +class XQILLA_API XQSort +{ +public: + class XQILLA_API SortSpec : public LocationInfo + { + public: + static const long ascending; + static const long descending; + static const long empty_greatest; + static const long empty_least; + + typedef long sortModifier; + + SortSpec(ASTNode* expr, sortModifier modifier, const XMLCh* collation); + + void staticResolution(StaticContext *context, StaticResolutionContext &src); + void staticTyping(StaticContext *context, StaticResolutionContext &src); + SortableItem buildKey(DynamicContext* context); + + const ASTNode *getExpression() const; + sortModifier getModifier() const; + const XMLCh *getCollation() const; + const Collation *getCollationObject() const; + + void setExpression(ASTNode *expr); + + protected: + ASTNode* _expr; + sortModifier _modifier; + const XMLCh* _collationURI; + Collation *_collation; + }; + + typedef std::vector > VectorOfSortSpec; + typedef std::vector SortItems; + typedef enum { stable, unstable } sortType; + + XQSort(sortType type, VectorOfSortSpec* specList); + void staticResolution(StaticContext *context, StaticResolutionContext &src); + void staticTyping(StaticContext *context, StaticResolutionContext &src); + + SortItems buildKeys(DynamicContext *context) const; + + sortType getSortType() const; + const VectorOfSortSpec *getSortSpecs() const; + +protected: + sortType _type; + VectorOfSortSpec* _specList; +}; + + +class XQILLA_API XQFLWOR : public ASTNodeImpl +{ +public: + XQFLWOR(VectorOfVariableBinding* bindings, ASTNode* where, XQSort* orderBy, ASTNode* returnExpr, XPath2MemoryManager* expr); + + virtual Result createResult(DynamicContext *context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + const VectorOfVariableBinding *getBindings() const; + const ASTNode *getWhereExpr() const; + const ASTNode *getReturnExpr() const; + const XQSort *getSort() const; + + void setWhereExpr(ASTNode *where); + void setReturnExpr(ASTNode *ret); + + typedef std::pair ResultPair; + + class ProductFactor { + public: + ProductFactor(const XQVariableBinding *vb); + + bool initialise(DynamicContext *context); + bool next(DynamicContext *context); + bool checkWhere(DynamicContext *context); + + private: + const XQVariableBinding *_vb; + Result _values; + ResultBuffer _valuesBuffer; + int _index; + VariableStore::Entry *_refVar, *_posRefVar; + }; + typedef std::vector ExecutionBindings; + typedef std::vector PreSortResult; + + bool nextState(ExecutionBindings &ebs, DynamicContext *context, bool initialisationState) const; + + VariableStore::Entry *getAccumulator(DynamicContext *context) const; + void setAccumulator(VariableStore::Entry *refVar, const PreSortResult &toBeSorted, DynamicContext *context) const; + +protected: + + bool checkWhere(DynamicContext *context) const; + + virtual Result createResultImpl(VectorOfVariableBinding::const_iterator it, VectorOfVariableBinding::const_iterator end, + DynamicContext* context, int flags = 0) const; + void staticResolutionImpl(StaticContext* context); + void staticTypingImpl(StaticContext* context); + ASTNode *calculateSRCForWhere(ASTNode *where, StaticContext *context); + + class SortingFLWORResult : public LazySequenceResult + { + public: + SortingFLWORResult(VectorOfVariableBinding::const_iterator it, VectorOfVariableBinding::const_iterator end, + const XQFLWOR *flwor, int flags, DynamicContext *context); + + void getResult(Sequence &toFill, DynamicContext *context) const; + std::string asString(DynamicContext *context, int indent) const; + + private: + const XQFLWOR *_flwor; + int _flags; + ExecutionBindings _ebs; // mutable + }; + + class FLWORResult : public ResultImpl + { + public: + FLWORResult(VectorOfVariableBinding::const_iterator it, VectorOfVariableBinding::const_iterator end, + const XQFLWOR *flwor, int flags); + virtual ~FLWORResult(); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + + private: + const XQFLWOR *_flwor; + int _flags; + ExecutionBindings _ebs; + + bool _toInit; + Scope *_scope; + Result _returnResult; + }; + + VectorOfVariableBinding* _bindings; + ASTNode* _return, * _where; + XQSort* _sort; +}; + +#endif // !defined(AFXQ_XQFLWOR_H__6E34F36F_797C_4A12_AF0B_5538F1D650B1__INCLUDED_) diff --git a/include/xqilla/ast/XQFunction.hpp b/include/xqilla/ast/XQFunction.hpp new file mode 100644 index 00000000..20025ef0 --- /dev/null +++ b/include/xqilla/ast/XQFunction.hpp @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQFunction.hpp,v 1.10 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _XQFUNCTION_HPP +#define _XQFUNCTION_HPP + +#include +#include +#include +#include +#include + +#include // because every implementation will use these to define the function name +#include + +class SequenceType; + +class XQILLA_API XQFunction : public ASTNodeImpl +{ + +public: + XQFunction(const XMLCh* name, unsigned int argsFrom, unsigned int argsTo, const char* paramDecl, const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + virtual ~XQFunction(); + + const XMLCh* getFunctionURI()const; + const XMLCh* getFunctionName()const; + const XMLCh* getFunctionSignature() const; + const VectorOfASTNodes &getArguments() const; + + static const XMLCh XMLChFunctionURI[]; + + /** Wraps the arguments in the appropriate conversion functions, + calls static resolution on them, and constant folds if + this function's StaticResolutionContext is not used */ + ASTNode *resolveArguments(StaticContext *context, bool checkTimezone = false, bool numericFunction = false); + ASTNode *calculateSRCForArguments(StaticContext *context, bool checkTimezone = false, bool numericFunction = false); + + /** casts the expression given as a parameter into the appropriate type and returns the guaranteed correctly typed objects in a sequence */ + virtual Result getParamNumber(unsigned int number, DynamicContext* context, int flags=0) const; + + /** returns the number of parameters passed into the function */ + unsigned int getNumArgs() const; + +protected: + + /** Helper method, produces a single ATStringOrDerived from the output of getParamNumber(). If getParamNumber() returns anything other than a single string, an exception is thrown. */ + static const unsigned int UNLIMITED; + + //parse the supplied string of comma separated arguments into vector of SequenceTypes + static std::vector< SequenceType* >* parseParamDecl(const char* paramString); + + const XMLCh *_fName, *_fURI, *_signature; + const unsigned int _nArgsFrom, _nArgsTo; + + const std::vector* _paramDecl; + + VectorOfASTNodes _args; // The real store for arguments + +}; + +#endif diff --git a/include/xqilla/ast/XQFunctionCall.hpp b/include/xqilla/ast/XQFunctionCall.hpp new file mode 100644 index 00000000..88576db4 --- /dev/null +++ b/include/xqilla/ast/XQFunctionCall.hpp @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQFunctionCall.hpp,v 1.9 2006/11/01 16:37:11 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQFunctionCall.hpp: interface for the XQFunctionCall class. +////////////////////////////////////////////////////////////////////// + +#if !defined(AFXQ_XQFUNCTIONCALL_H__2B6902E9_A4FA_4AB3_9C69_08A8E77E70DA__INCLUDED_) +#define AFXQ_XQFUNCTIONCALL_H__2B6902E9_A4FA_4AB3_9C69_08A8E77E70DA__INCLUDED_ + +#include +#include + +class QualifiedName; + +/** placeholder for function calls. */ +class XQILLA_API XQFunctionCall : public ASTNodeImpl +{ +public: + XQFunctionCall(QualifiedName* qname, const VectorOfASTNodes &args, XPath2MemoryManager* expr); + + /** always throws an exception **/ + Result createResult(DynamicContext* context, int flags=0) const; + + /** + * Will perform the binding with the real function body + */ + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + const QualifiedName *getName() const; + const VectorOfASTNodes &getArguments() const; + +protected: + VectorOfASTNodes _args; + QualifiedName* _qname; +}; + +#endif // !defined(AFXQ_XQFUNCTIONCALL_H__2B6902E9_A4FA_4AB3_9C69_08A8E77E70DA__INCLUDED_) diff --git a/include/xqilla/ast/XQGlobalVariable.hpp b/include/xqilla/ast/XQGlobalVariable.hpp new file mode 100644 index 00000000..73c8fa63 --- /dev/null +++ b/include/xqilla/ast/XQGlobalVariable.hpp @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQGlobalVariable.hpp,v 1.12 2006/11/01 16:37:11 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQGlobalVariable.hpp: interface for the XQGlobalVariable class. +////////////////////////////////////////////////////////////////////// + +#if !defined(AFXQ_XQGLOBALVARIABLE_H__A97FA5AD_5355_45CD_9092_ED94F5CD035B__INCLUDED_) +#define AFXQ_XQGLOBALVARIABLE_H__A97FA5AD_5355_45CD_9092_ED94F5CD035B__INCLUDED_ + +#include + +class SequenceType; + +class XQILLA_API XQGlobalVariable : public LocationInfo +{ +public: + XQGlobalVariable(const XMLCh* varQName, SequenceType* seqType, ASTNode* value, XPath2MemoryManager *mm); + + void execute(DynamicContext* context) const; + void staticResolution(StaticContext *context); + void staticTyping(StaticContext *context); + + const XMLCh* getVariableName() const; + bool isExternal() const; + void setVariableExpr(ASTNode* value); + + const XMLCh *getVariableURI() const; + const XMLCh *getVariableLocalName() const; + const SequenceType *getSequenceType() const; + const ASTNode *getVariableExpr() const; + const StaticResolutionContext &getStaticResolutionContext() const { return _src; } + +protected: + const XMLCh* m_szQName; + const XMLCh* m_szURI; + const XMLCh* m_szLocalName; + SequenceType* m_Type; + ASTNode* m_Value; + StaticResolutionContext _src; +}; + +#endif // !defined(AFXQ_XQGLOBALVARIABLE_H__A97FA5AD_5355_45CD_9092_ED94F5CD035B__INCLUDED_) diff --git a/include/xqilla/ast/XQIf.hpp b/include/xqilla/ast/XQIf.hpp new file mode 100644 index 00000000..1c798a34 --- /dev/null +++ b/include/xqilla/ast/XQIf.hpp @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQIf.hpp,v 1.8 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _XQIF_HPP +#define _XQIF_HPP + +#include + +#include + +/** If function. */ +class XQILLA_API XQIf : public ASTNodeImpl +{ +public: + XQIf(ASTNode* test, ASTNode* whenTrue, ASTNode* whenFalse, XPath2MemoryManager* memMgr); + + virtual Result createResult(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + const ASTNode *getTest() const; + const ASTNode *getWhenTrue() const; + const ASTNode *getWhenFalse() const; + + void setTest(ASTNode *item); + void setWhenTrue(ASTNode *item); + void setWhenFalse(ASTNode *item); + +protected: + class IfResult : public ResultImpl + { + public: + IfResult(const XQIf *di, int flags); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + + private: + int _flags; + const XQIf *_di; + Result _results; + }; + + ASTNode* _test,* _whenTrue,* _whenFalse; +}; + +#endif // _XQIF_HPP + + diff --git a/include/xqilla/ast/XQInstanceOf.hpp b/include/xqilla/ast/XQInstanceOf.hpp new file mode 100644 index 00000000..f60f8191 --- /dev/null +++ b/include/xqilla/ast/XQInstanceOf.hpp @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQInstanceOf.hpp,v 1.9 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _XQINSTANCEOF_HPP +#define _XQINSTANCEOF_HPP + +#include +#include +#include + +class SequenceType; + +class XQILLA_API XQInstanceOf : public ASTNodeImpl +{ +public: + XQInstanceOf(ASTNode* expr, SequenceType* exprType, XPath2MemoryManager* memMgr); + + virtual Result createResult(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + const ASTNode *getExpression() const; + const SequenceType *getSequenceType() const; + + void setExpression(ASTNode *item); + +protected: + class InstanceOfResult : public SingleResult + { + public: + InstanceOfResult(const XQInstanceOf *di, int flags); + + Item::Ptr getSingleResult(DynamicContext *context) const; + std::string asString(DynamicContext *context, int indent) const; + + private: + int _flags; + const XQInstanceOf *_di; + }; + + ASTNode* _expr; + SequenceType* _exprType; +}; + +#endif diff --git a/include/xqilla/ast/XQLiteral.hpp b/include/xqilla/ast/XQLiteral.hpp new file mode 100644 index 00000000..e9bbcaf5 --- /dev/null +++ b/include/xqilla/ast/XQLiteral.hpp @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQLiteral.hpp,v 1.8 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _XQLITERAL_HPP +#define _XQLITERAL_HPP + +#include + +#include + +class ItemConstructor; + +/** defines the behaviour for the literal types*/ +class XQILLA_API XQLiteral : public ASTNodeImpl +{ +public: + XQLiteral(ItemConstructor *ic, XPath2MemoryManager* memMgr); + + virtual bool isDateOrTimeAndHasNoTimezone(StaticContext* context) const; + virtual bool isSingleNumericConstant(StaticContext *context) const; + virtual ASTNode *staticTyping(StaticContext *context); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual Result createResult(DynamicContext* context, int flags=0) const; + + const ItemConstructor *getItemConstructor() const + { + return _itemConstructor; + } + + void setItemConstructor(ItemConstructor *i) + { + _itemConstructor = i; + } + +private: + ItemConstructor *_itemConstructor; +}; + +#endif + diff --git a/include/xqilla/ast/XQNav.hpp b/include/xqilla/ast/XQNav.hpp new file mode 100644 index 00000000..12256572 --- /dev/null +++ b/include/xqilla/ast/XQNav.hpp @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQNav.hpp,v 1.11 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _XQNav_HPP +#define _XQNav_HPP + +#include +#include + +#include +#include + +///this class calculates a node list based on a context +class XQILLA_API XQNav : public ASTNodeImpl +{ +public: + class XQILLA_API StepInfo { + public: + StepInfo() : step(0) {} + StepInfo(ASTNode *s) : step(s) {} + ASTNode *step; + }; + typedef std::vector > Steps; + + XQNav(XPath2MemoryManager* memMgr); + virtual ~XQNav(); + + + /** Add a new NavigationStep to the sequence of navigation steps to + be performed. This operation is used by parse tree classes to + turn themselves into an optimised, reusable navigation. **/ + void addStep(const StepInfo &step); + + /** Add a new NavigationStep to the start of the sequence of + navigation steps to be performed.**/ + void addStepFront(ASTNode* step); + + virtual Result createResult(DynamicContext* context, int flags=0) const; + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + const Steps &getSteps() const; + + bool getSortAdded() const { return _sortAdded; } + void setSortAdded(bool value) { _sortAdded = value; } + + static unsigned int combineProperties(unsigned int prev_props, unsigned int step_props); + +protected: + //list of steps to be performed. + Steps _steps; + bool _sortAdded; +}; + +class XQILLA_API NavStepResult : public ResultImpl +{ +public: + NavStepResult(const Result &parent, ASTNode *step, unsigned int contextSize); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + +private: + bool initialised_; + Result parent_; + const ASTNode *step_; + Result stepResult_; + unsigned int contextPos_; + unsigned int contextSize_; + Item::Ptr contextItem_; +}; + +class XQILLA_API IntermediateStepCheckResult : public ResultImpl +{ +public: + IntermediateStepCheckResult(const LocationInfo *o, const Result &parent); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + +private: + Result parent_; +}; + +class XQILLA_API LastStepCheckResult : public ResultImpl +{ +public: + LastStepCheckResult(const LocationInfo *o, const Result &parent); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + +private: + Result parent_; + int _nTypeOfItemsInLastStep; +}; + +#endif + + diff --git a/include/xqilla/ast/XQOperator.hpp b/include/xqilla/ast/XQOperator.hpp new file mode 100644 index 00000000..85a3ff96 --- /dev/null +++ b/include/xqilla/ast/XQOperator.hpp @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQOperator.hpp,v 1.8 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _XQOPERATOR_HPP +#define _XQOPERATOR_HPP + +#include +#include +#include +#include // because every implementation will use these to define the function name + +class Node; + +/** Virtual interface class for operator */ +class XQILLA_API XQOperator : public ASTNodeImpl +{ +public: + + /// constructor, checks for the correct number of arguments. + XQOperator(const XMLCh* opName, const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** used to manipulate arguments */ + void addArgument(ASTNode* arg); + void removeArgument(unsigned int index); + ASTNode* getArgument(unsigned int index) const; + void setArgument(unsigned int index, ASTNode *arg); + + /** returns the number of parameters passed into the operator */ + unsigned int getNumArgs() const; + + virtual const XMLCh* getOperatorName() const; + const VectorOfASTNodes &getArguments() const; + +protected: + VectorOfASTNodes _args; // The real store for arguments + + const XMLCh* _opName; +}; + +#endif // _XQOPERATOR_HPP diff --git a/include/xqilla/ast/XQOrderingChange.hpp b/include/xqilla/ast/XQOrderingChange.hpp new file mode 100644 index 00000000..d3d00041 --- /dev/null +++ b/include/xqilla/ast/XQOrderingChange.hpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQOrderingChange.hpp,v 1.11 2006/11/01 16:37:11 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQOrderingChange.hpp: interface for the XQOrderingChange class. +////////////////////////////////////////////////////////////////////// + +#if !defined(AFXQ_XQORDERINGCHANGE_H__A97FA5AE_5355_45CD_9092_ED94F5CD035B__INCLUDED_) +#define AFXQ_XQORDERINGCHANGE_H__A97FA5AE_5355_45CD_9092_ED94F5CD035B__INCLUDED_ + +#include +#include + +class XQILLA_API XQOrderingChange : public ASTNodeImpl +{ +public: + XQOrderingChange(StaticContext::NodeSetOrdering ordering, ASTNode* astNode, XPath2MemoryManager* expr); + + virtual Result createResult(DynamicContext *context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + StaticContext::NodeSetOrdering getOrderingValue() const; + ASTNode* getExpr() const; + void setExpr(ASTNode *expr); + +protected: + StaticContext::NodeSetOrdering m_nOrdering; + ASTNode* m_pExpr; +}; + +#endif // !defined(AFXQ_XQORDERINGCHANGE_H__A97FA5AE_5355_45CD_9092_ED94F5CD035B__INCLUDED_) diff --git a/include/xqilla/ast/XQPIConstructor.hpp b/include/xqilla/ast/XQPIConstructor.hpp new file mode 100644 index 00000000..c7874e3e --- /dev/null +++ b/include/xqilla/ast/XQPIConstructor.hpp @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQPIConstructor.hpp,v 1.1 2006/11/03 17:04:19 jpcs Exp $ + */ + +#if !defined(AFXQ_XQPICONSTRUCTOR_H__56E97972_3896_49D3_B055_36CC3E9E550A__INCLUDED_) +#define AFXQ_XQPICONSTRUCTOR_H__56E97972_3896_49D3_B055_36CC3E9E550A__INCLUDED_ + +#include + +class XQILLA_API XQPIConstructor : public XQDOMConstructor +{ +public: + XQPIConstructor(ASTNode* name, ASTNode* value, XPath2MemoryManager* mm); + + virtual Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + virtual const XMLCh* getNodeType() const; + virtual const ASTNode *getName() const; + virtual const ASTNode *getValue() const; + + virtual void setName(ASTNode *name); + virtual void setValue(ASTNode *value); + +private: + ASTNode* m_name, *m_value; +}; + +#endif diff --git a/include/xqilla/ast/XQParenthesizedExpr.hpp b/include/xqilla/ast/XQParenthesizedExpr.hpp new file mode 100644 index 00000000..546feeca --- /dev/null +++ b/include/xqilla/ast/XQParenthesizedExpr.hpp @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQParenthesizedExpr.hpp,v 1.9 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _XQPARENTHESIZEDEXPR_HPP +#define _XQPARENTHESIZEDEXPR_HPP + +#include + +#include + +class XQILLA_API XQParenthesizedExpr : public ASTNodeImpl +{ + +public: + XQParenthesizedExpr(XPath2MemoryManager* memMgr); + + ///adds a ASTNode to this XQParenthesizedExpr + void addItem(ASTNode* di); + + virtual Result createResult(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + const VectorOfASTNodes &getChildren() const; + +private: + class ParenthesizedResult : public ResultImpl + { + public: + ParenthesizedResult(const XQParenthesizedExpr *di, int flags); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + + private: + int _flags; + const XQParenthesizedExpr *_di; + VectorOfASTNodes::const_iterator _i; + Result _result; + }; + + VectorOfASTNodes _astNodes; +}; + +#endif diff --git a/include/xqilla/ast/XQPredicate.hpp b/include/xqilla/ast/XQPredicate.hpp new file mode 100644 index 00000000..0dff999b --- /dev/null +++ b/include/xqilla/ast/XQPredicate.hpp @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQPredicate.hpp,v 1.3 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _XQPREDICATE_HPP +#define _XQPREDICATE_HPP + +#include + +class XQPredicate; + +class VectorOfPredicates : public std::vector > +{ +public: + VectorOfPredicates(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mm) + : std::vector >(XQillaAllocator(mm)) {} +}; + + +class XQILLA_API XQPredicate : public ASTNodeImpl +{ +public: + XQPredicate(ASTNode *predicate, XPath2MemoryManager* memMgr); + XQPredicate(ASTNode *expr, ASTNode *predicate, XPath2MemoryManager* memMgr); + + virtual Result createResult(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + const ASTNode *getExpression() const { return expr_; } + void setExpression(ASTNode *expr) { expr_ = expr; } + + const ASTNode *getPredicate() const { return predicate_; } + void setPredicate(ASTNode *pred) { predicate_ = pred; } + + static ASTNode *addPredicates(ASTNode *expr, VectorOfPredicates *preds); + +protected: + class PredicateFilterResult : public ResultImpl + { + public: + PredicateFilterResult(const Result &parent, const ASTNode *pred, unsigned int contextSize); + Item::Ptr next(DynamicContext *context); + void skip(); + std::string asString(DynamicContext *context, int indent) const; + private: + bool todo_; + Result parent_; + const ASTNode *pred_; + unsigned int contextPos_; + unsigned int contextSize_; + Item::Ptr first_; + Item::Ptr second_; + }; + + class NonNumericPredicateFilterResult : public ResultImpl + { + public: + NonNumericPredicateFilterResult(const Result &parent, const ASTNode *pred, unsigned int contextSize); + Item::Ptr next(DynamicContext *context); + void skip(); + std::string asString(DynamicContext *context, int indent) const; + private: + bool todo_; + Result parent_; + const ASTNode *pred_; + unsigned int contextPos_; + unsigned int contextSize_; + }; + + class NumericPredicateFilterResult : public ResultImpl + { + public: + NumericPredicateFilterResult(const Result &parent, const ASTNode *pred, unsigned int contextSize); + Item::Ptr next(DynamicContext *context); + void skip(); + std::string asString(DynamicContext *context, int indent) const; + private: + bool todo_; + Result parent_; + const ASTNode *pred_; + unsigned int contextSize_; + }; + + ASTNode *expr_; + ASTNode *predicate_; +}; + +#endif diff --git a/include/xqilla/ast/XQQuantified.hpp b/include/xqilla/ast/XQQuantified.hpp new file mode 100644 index 00000000..4bf727c6 --- /dev/null +++ b/include/xqilla/ast/XQQuantified.hpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQQuantified.hpp,v 1.10 2006/11/01 16:37:11 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQQuantified.hpp: interface for the XQQuantified class. +////////////////////////////////////////////////////////////////////// + +#if !defined(AFXQ_XQUANTIFIED_H__2B6902E9_A4FA_4AB3_9C69_08A8E77E70DA__INCLUDED_) +#define AFXQ_XQUANTIFIED_H__2B6902E9_A4FA_4AB3_9C69_08A8E77E70DA__INCLUDED_ + +#include +#include +#include + +class XQILLA_API XQQuantified : public XQFLWOR +{ +public: + typedef enum {some, every} QuantifierType; + + XQQuantified(QuantifierType qType, VectorOfVariableBinding* bindings, ASTNode* returnExpr, XPath2MemoryManager *expr); + + virtual ASTNode *staticTyping(StaticContext *context); + + QuantifierType getQuantifierType() const; + +protected: + virtual Result createResultImpl(VectorOfVariableBinding::const_iterator it, VectorOfVariableBinding::const_iterator end, + DynamicContext* context, int flags = 0) const; + + class QuantifiedResult : public SingleResult + { + public: + QuantifiedResult(VectorOfVariableBinding::const_iterator it, VectorOfVariableBinding::const_iterator end, + const XQQuantified *quantified); + + Item::Ptr getSingleResult(DynamicContext *context) const; + std::string asString(DynamicContext *context, int indent) const; + + private: + const XQQuantified *_quantified; + ExecutionBindings _ebs; // mutable + }; + + QuantifierType _qType; +}; + +#endif // !defined(AFXQ_XQUANTIFIED_H__2B6902E9_A4FA_4AB3_9C69_08A8E77E70DA__INCLUDED_) diff --git a/include/xqilla/ast/XQSequence.hpp b/include/xqilla/ast/XQSequence.hpp new file mode 100644 index 00000000..3274686a --- /dev/null +++ b/include/xqilla/ast/XQSequence.hpp @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQSequence.hpp,v 1.11 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _XQSEQUENCE_HPP +#define _XQSEQUENCE_HPP + +#include +#include +#include + +class XPath2MemoryManager; +class DynamicContext; + +/** deals with the numeric data type */ +class XQILLA_API XQSequence : public ASTNodeImpl +{ +public: + XQSequence(const Item::Ptr &item, DynamicContext *context, XPath2MemoryManager* memMgr); + XQSequence(ItemConstructor *ic, XPath2MemoryManager* memMgr); + XQSequence(XPath2MemoryManager* memMgr); + + ~XQSequence(); + + virtual bool isDateOrTimeAndHasNoTimezone(StaticContext* context) const; + virtual bool isSingleNumericConstant(StaticContext *context) const; + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + virtual Result createResult(DynamicContext* context, int flags=0) const; + + const ItemConstructor::Vector &getItemConstructors() const + { + return _itemConstructors; + } + + static XQSequence *constantFold(Result &result, DynamicContext *context, XPath2MemoryManager* memMgr, + const LocationInfo *location); + +private: + class SequenceResult : public ResultImpl { + public: + SequenceResult(const XQSequence *seq); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + private: + const XQSequence *_seq; + ItemConstructor::Vector::const_iterator _it; + }; + + ItemConstructor::Vector _itemConstructors; +}; + +#endif diff --git a/include/xqilla/ast/XQStep.hpp b/include/xqilla/ast/XQStep.hpp new file mode 100644 index 00000000..388320d6 --- /dev/null +++ b/include/xqilla/ast/XQStep.hpp @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQStep.hpp,v 1.11 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _XQSTEP_HPP +#define _XQSTEP_HPP + +#include + +#include + +class NodeTest; + +///this class calculates a node list based on a context +class XQILLA_API XQStep : public ASTNodeImpl +{ +public: + enum Axis { + ANCESTOR, + ANCESTOR_OR_SELF, + ATTRIBUTE, + CHILD, + DESCENDANT, + DESCENDANT_OR_SELF, + FOLLOWING, + FOLLOWING_SIBLING, + NAMESPACE, + PARENT, + PRECEDING, + PRECEDING_SIBLING, + SELF + }; + + //constuctor that takes the step this XQ is refuring to + XQStep(Axis axis, NodeTest* nodeTest, XPath2MemoryManager* memMgr); + ~XQStep(); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + virtual Result createResult(DynamicContext* context, int flags=0) const; + + const NodeTest *getNodeTest() const; + void setNodeTest(NodeTest *nodeTest); + + Axis getAxis() const; + void setAxis(Axis axis); + + static bool isForwardAxis(Axis axis); + static unsigned int getAxisProperties(Axis axis); + +private: + NodeTest* nodeTest_; + Axis axis_; +}; + +/** + * Lazily apply an axis and NodeTest filter to the context node + */ +class XQILLA_API StepResult : public ResultImpl +{ +public: + StepResult(XQStep::Axis axis, const NodeTest *nt, const LocationInfo *location); + virtual ~StepResult() {} + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + +protected: + bool toDo_; + Result result_; + + XQStep::Axis axis_; + const NodeTest *nodeTest_; +}; + +#endif diff --git a/include/xqilla/ast/XQTextConstructor.hpp b/include/xqilla/ast/XQTextConstructor.hpp new file mode 100644 index 00000000..860cdda0 --- /dev/null +++ b/include/xqilla/ast/XQTextConstructor.hpp @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQTextConstructor.hpp,v 1.1 2006/11/03 17:04:19 jpcs Exp $ + */ + +#if !defined(AFXQ_XQTEXTCONSTRUCTOR_H__56E97972_3896_49D3_B055_36CC3E9E550A__INCLUDED_) +#define AFXQ_XQTEXTCONSTRUCTOR_H__56E97972_3896_49D3_B055_36CC3E9E550A__INCLUDED_ + +#include + +class XQILLA_API XQTextConstructor : public XQDOMConstructor +{ +public: + XQTextConstructor(bool isCDATA, ASTNode *value, XPath2MemoryManager* mm); + + virtual Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + virtual const XMLCh* getNodeType() const; + virtual const ASTNode *getValue() const; + + virtual void setValue(ASTNode *value); + +private: + const XMLCh *m_nodeType; + ASTNode *m_value; +}; + +#endif diff --git a/include/xqilla/ast/XQTreatAs.hpp b/include/xqilla/ast/XQTreatAs.hpp new file mode 100644 index 00000000..fae82436 --- /dev/null +++ b/include/xqilla/ast/XQTreatAs.hpp @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQTreatAs.hpp,v 1.11 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _XQTREATAS_HPP +#define _XQTREATAS_HPP + +#include + +#include +#include + +class SequenceType; + +class XQILLA_API XQTreatAs : public ASTNodeImpl +{ +public: + XQTreatAs(ASTNode* expr, const SequenceType *exprType, XPath2MemoryManager* memMgr); + + virtual Result createResult(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + void setIsTreatAsStatement(bool bValue) { _isTreatAs=bValue; } + const ASTNode *getExpression() const; + const SequenceType *getSequenceType() const; + bool getDoTypeCheck() const { return _doTypeCheck; } + + void setExpression(ASTNode *item); + +protected: + ASTNode* _expr; + const SequenceType* _exprType; + bool _doTypeCheck, _isTreatAs; +}; + +#endif diff --git a/include/xqilla/ast/XQTypeswitch.hpp b/include/xqilla/ast/XQTypeswitch.hpp new file mode 100644 index 00000000..78c2ea79 --- /dev/null +++ b/include/xqilla/ast/XQTypeswitch.hpp @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQTypeswitch.hpp,v 1.11 2006/11/01 16:37:11 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQTypeswitch.hpp: interface for the XQTypeswitch class. +////////////////////////////////////////////////////////////////////// + +#if !defined(AFXQ_XQTYPESWITCH_H__90ED3AA0_5C63_437A_9B94_0CCDEF499124__INCLUDED_) +#define AFXQ_XQTYPESWITCH_H__90ED3AA0_5C63_437A_9B94_0CCDEF499124__INCLUDED_ + +#include +#include +#include +#include + +class ResultBuffer; +template class Scope; + +class XQILLA_API XQTypeswitch : public ASTNodeImpl +{ +public: + class Clause : public LocationInfo + { + public: + Clause(SequenceType* type, ASTNode* expr, const XMLCh* variable) + : _expr(expr), _type(type), _variable(variable), _uri(0), _name(0) {} + + void staticResolution(const StaticResolutionContext &var_src, StaticContext* context, StaticResolutionContext &src); + void staticTyping(const StaticResolutionContext &var_src, StaticContext* context, + StaticResolutionContext &src); + + ASTNode* _expr; + SequenceType* _type; + const XMLCh* _variable; + const XMLCh* _uri; + const XMLCh* _name; + }; + + typedef std::vector > VectorOfClause; + + XQTypeswitch(ASTNode* eval, VectorOfClause* clauses, Clause* defReturn, XPath2MemoryManager* expr); + + Result createResult(DynamicContext* context, int flags=0) const; + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + const ASTNode *getExpression() const; + const Clause *getDefaultClause() const; + const VectorOfClause *getClauses() const; + + void setExpression(ASTNode *expr); + +protected: + class TypeswitchResult : public ResultImpl + { + public: + TypeswitchResult(const XQTypeswitch *di, int flags); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + + private: + int _flags; + const XQTypeswitch *_di; + + Scope *_scope; + Result _result; + bool _scopeRemoved; + }; + + ASTNode* _expr; + Clause* _default; + VectorOfClause* _clauses; +}; + +#endif // !defined(AFXQ_XQTYPESWITCH_H__90ED3AA0_5C63_437A_9B94_0CCDEF499124__INCLUDED_) diff --git a/include/xqilla/ast/XQValidate.hpp b/include/xqilla/ast/XQValidate.hpp new file mode 100644 index 00000000..9e3b3bcc --- /dev/null +++ b/include/xqilla/ast/XQValidate.hpp @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQValidate.hpp,v 1.9 2006/11/01 16:37:11 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQValidate.hpp: interface for the XQValidate class. +////////////////////////////////////////////////////////////////////// + +#if !defined(AFXQ_XQVALIDATE_H__2B6902E9_A4FA_4AB3_9C69_08A8E77E70DA__INCLUDED_) +#define AFXQ_XQVALIDATE_H__2B6902E9_A4FA_4AB3_9C69_08A8E77E70DA__INCLUDED_ + +#include +#include +#include + +/** Validate function. */ +class XQILLA_API XQValidate : public ASTNodeImpl +{ +public: + XQValidate(ASTNode* valExpr, DocumentCache::ValidationMode valMode, XPath2MemoryManager* expr); + + /** evaluate the expression, and check if it's valid according to the schemas **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + + /** + * Called during static analysis to determine if statically correct. If + * not an appropriate error is thrown. + */ + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + const ASTNode *getExpression() const; + DocumentCache::ValidationMode getValidationMode() const; + + void setExpression(ASTNode *expr); + +protected: + ASTNode* _expr; + DocumentCache::ValidationMode _validationMode; +}; + +#endif // !defined(AFXQ_XQVALIDATE_H__2B6902E9_A4FA_4AB3_9C69_08A8E77E70DA__INCLUDED_) diff --git a/include/xqilla/ast/XQVariable.hpp b/include/xqilla/ast/XQVariable.hpp new file mode 100644 index 00000000..158ccba4 --- /dev/null +++ b/include/xqilla/ast/XQVariable.hpp @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQVariable.hpp,v 1.7 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _XQVARIABLE_HPP +#define _XQVARIABLE_HPP + +#include + +#include +#include + +/** Deals with all the simple variable stuff.*/ +class XQILLA_API XQVariable : public ASTNodeImpl +{ +public: + XQVariable(const XMLCh *qualifiedName, XPath2MemoryManager* memMgr); + XQVariable(const XMLCh *prefix, const XMLCh *name, XPath2MemoryManager* memMgr); + ~XQVariable(); + + virtual Result createResult(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + const XMLCh *getPrefix() const; + const XMLCh *getURI() const; + const XMLCh *getName() const; + +private: + const XMLCh* _prefix; + const XMLCh* _uri; + const XMLCh* _name; + unsigned int _staticProperties; +}; + +#endif + + diff --git a/include/xqilla/ast/XQVariableBinding.hpp b/include/xqilla/ast/XQVariableBinding.hpp new file mode 100644 index 00000000..1f6723c9 --- /dev/null +++ b/include/xqilla/ast/XQVariableBinding.hpp @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQVariableBinding.hpp,v 1.9 2006/11/01 16:37:11 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQVariableBinding.hpp: interface for the XQVariableBinding class. +////////////////////////////////////////////////////////////////////// + +#if !defined(AFXQ_XQVARIABLEBINDING_H__4EDA7D8A_78E2_476F_80DA_029C3E4B9AC8__INCLUDED_) +#define AFXQ_XQVARIABLEBINDING_H__4EDA7D8A_78E2_476F_80DA_029C3E4B9AC8__INCLUDED_ + +#include +#include +#include + +class SequenceType; + +class XQILLA_API XQVariableBinding : public LocationInfo +{ +public: + typedef enum + { + letBinding, + forBinding + } BindingType; + + XQVariableBinding(XPath2MemoryManager* memMgr, BindingType bindingType, const XMLCh* variable, ASTNode* allValues, const XMLCh* positionalVariable=NULL, SequenceType* seqType=NULL); + XQVariableBinding(XPath2MemoryManager* memMgr, const XQVariableBinding &o); + + void addWhereCondition(ASTNode *clause); + + BindingType _bindingType; + + const XMLCh *_variable, *_vURI, *_vName; + const XMLCh *_positionalVariable, *_pURI, *_pName; + + StaticResolutionContext _src, _pSrc; + + SequenceType* _seqType; + + ASTNode* _allValues; + + bool _valuesResultMustBeRecalculated; + bool _needsNewScope; + + ASTNode *_where; + + XPath2MemoryManager *_memMgr; + +private: + XQVariableBinding(const XQVariableBinding &o); +}; + +typedef std::vector > VectorOfVariableBinding; + +#endif // !defined(AFXQ_XQVARIABLEBINDING_H__4EDA7D8A_78E2_476F_80DA_029C3E4B9AC8__INCLUDED_) diff --git a/include/xqilla/axis/AncestorAxis.hpp b/include/xqilla/axis/AncestorAxis.hpp new file mode 100644 index 00000000..0a0dde57 --- /dev/null +++ b/include/xqilla/axis/AncestorAxis.hpp @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: AncestorAxis.hpp,v 1.9 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _ANCESTORAXIS_HPP +#define _ANCESTORAXIS_HPP + +#include + +/** +This class implements the AncestorAxis as defined in the XPath spec +*/ +class XQILLA_API AncestorAxis : public Axis +{ +public: + AncestorAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory = Axis::gNodeImplFactory); + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *nextNode(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; +private: + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *ancestor_; +}; + +#endif + diff --git a/include/xqilla/axis/AncestorOrSelfAxis.hpp b/include/xqilla/axis/AncestorOrSelfAxis.hpp new file mode 100644 index 00000000..801032e0 --- /dev/null +++ b/include/xqilla/axis/AncestorOrSelfAxis.hpp @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: AncestorOrSelfAxis.hpp,v 1.9 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _ANCESTORORSELFAXIS_HPP +#define _ANCESTORORSELFAXIS_HPP + +#include + +/** +This class implements the AncestorOrSelf axis as defined by the XPath spec +*/ +class XQILLA_API AncestorOrSelfAxis : public Axis +{ +public: + AncestorOrSelfAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory = Axis::gNodeImplFactory); + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *nextNode(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; +private: + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *ancestor_; +}; + + +#endif + diff --git a/include/xqilla/axis/AttributeAxis.hpp b/include/xqilla/axis/AttributeAxis.hpp new file mode 100644 index 00000000..f63c198f --- /dev/null +++ b/include/xqilla/axis/AttributeAxis.hpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: AttributeAxis.hpp,v 1.9 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _ATTRIBUTEAXIS_HPP +#define _ATTRIBUTEAXIS_HPP + +#include + +#include + +class XQILLA_API AttributeAxis : public Axis +{ +public: + AttributeAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory = Axis::gNodeImplFactory); + + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *nextNode(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + +private: + XERCES_CPP_NAMESPACE_QUALIFIER DOMNamedNodeMap *nodeMap_; + unsigned int i_; +}; + +#endif + diff --git a/include/xqilla/axis/Axis.hpp b/include/xqilla/axis/Axis.hpp new file mode 100644 index 00000000..38ae00ca --- /dev/null +++ b/include/xqilla/axis/Axis.hpp @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Axis.hpp,v 1.10 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _AXIS_HPP +#define _AXIS_HPP + +#include +#include +#include + +#include + +class NodeTest; + +class AxisNodeFactory +{ +public: + virtual ~AxisNodeFactory() {} + virtual const Node::Ptr createNode(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node, const DynamicContext *context) const = 0; +}; + +template +class AxisNodeFactoryTemplate : public AxisNodeFactory +{ +public: + virtual const Node::Ptr createNode(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node, const DynamicContext *context) const + { + return new TYPE(node, context); + } +}; + + +class XQILLA_API Axis : public ResultImpl +{ +public: + static AxisNodeFactoryTemplate gNodeImplFactory; + + Axis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory); + Item::Ptr next(DynamicContext *context); + + virtual const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *nextNode(DynamicContext *context) = 0; + + static const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *getParent(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node); + static const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *getFirstChild(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node); + static const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *getLastChild(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node); + static const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *getNextSibling(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node); + static const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *getPreviousSibling(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node); + +protected: + Node::Ptr nodeObj_; + const AxisNodeFactory &factory_; + + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode_; + const NodeTest *nodeTest_; + bool toDo_; +}; + +#endif + diff --git a/include/xqilla/axis/ChildAxis.hpp b/include/xqilla/axis/ChildAxis.hpp new file mode 100644 index 00000000..457a83f7 --- /dev/null +++ b/include/xqilla/axis/ChildAxis.hpp @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ChildAxis.hpp,v 1.9 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _CHILDAXIS_HPP +#define _CHILDAXIS_HPP + +#include + +/** +This class implements the ChildAxis axis as defined by the XPath spec +*/ +class XQILLA_API ChildAxis : public Axis +{ +public: + ChildAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory = Axis::gNodeImplFactory); + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *nextNode(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; +private: + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *child_; +}; + + +#endif + diff --git a/include/xqilla/axis/DescendantAxis.hpp b/include/xqilla/axis/DescendantAxis.hpp new file mode 100644 index 00000000..337ee729 --- /dev/null +++ b/include/xqilla/axis/DescendantAxis.hpp @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DescendantAxis.hpp,v 1.9 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _DESCENDANTAXIS_HPP +#define _DESCENDANTAXIS_HPP + +#include + +class XQILLA_API DescendantAxis : public Axis +{ +public: + DescendantAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory = Axis::gNodeImplFactory); + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *nextNode(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; +private: + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *descendant_; +}; + + +#endif + diff --git a/include/xqilla/axis/DescendantOrSelfAxis.hpp b/include/xqilla/axis/DescendantOrSelfAxis.hpp new file mode 100644 index 00000000..97200b8d --- /dev/null +++ b/include/xqilla/axis/DescendantOrSelfAxis.hpp @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DescendantOrSelfAxis.hpp,v 1.9 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _DESCENDANTORSELFAXIS_HPP +#define _DESCENDANTORSELFAXIS_HPP + +#include + +class XQILLA_API DescendantOrSelfAxis : public Axis +{ +public: + DescendantOrSelfAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory = Axis::gNodeImplFactory); + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *nextNode(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; +private: + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *descendant_; +}; + + +#endif + diff --git a/include/xqilla/axis/FollowingAxis.hpp b/include/xqilla/axis/FollowingAxis.hpp new file mode 100644 index 00000000..db37ee20 --- /dev/null +++ b/include/xqilla/axis/FollowingAxis.hpp @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FollowingAxis.hpp,v 1.9 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _FOLLOWINGAXIS_HPP +#define _FOLLOWINGAXIS_HPP + +#include + +class XQILLA_API FollowingAxis : public Axis +{ +public: + FollowingAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory = Axis::gNodeImplFactory); + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *nextNode(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; +private: + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node_; +}; + + +#endif + diff --git a/include/xqilla/axis/FollowingSiblingAxis.hpp b/include/xqilla/axis/FollowingSiblingAxis.hpp new file mode 100644 index 00000000..a5da1983 --- /dev/null +++ b/include/xqilla/axis/FollowingSiblingAxis.hpp @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FollowingSiblingAxis.hpp,v 1.9 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _FOLLOWINGSIBLINGAXIS_HPP +#define _FOLLOWINGSIBLINGAXIS_HPP + +#include + +class XQILLA_API FollowingSiblingAxis : public Axis +{ +public: + FollowingSiblingAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory = Axis::gNodeImplFactory); + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *nextNode(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; +private: + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node_; +}; + +#endif + diff --git a/include/xqilla/axis/NamespaceAxis.hpp b/include/xqilla/axis/NamespaceAxis.hpp new file mode 100644 index 00000000..05f6fd93 --- /dev/null +++ b/include/xqilla/axis/NamespaceAxis.hpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: NamespaceAxis.hpp,v 1.11 2006/11/27 17:51:17 amassari Exp $ + */ + +#ifndef _NAMESPACEAXIS_HPP +#define _NAMESPACEAXIS_HPP + +#include + +#include + +#include + +class XQILLA_API NamespaceAxis : public Axis +{ +public: + NamespaceAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory = Axis::gNodeImplFactory); + + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *nextNode(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + +private: + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node_, *originalNode_; + XERCES_CPP_NAMESPACE_QUALIFIER DOMNamedNodeMap *nodeMap_; + unsigned int i_; + + typedef std::set DoneSet; + DoneSet done_; + bool defNsTested_, defXmlNs_; +}; + +#endif + diff --git a/include/xqilla/axis/NodeTest.hpp b/include/xqilla/axis/NodeTest.hpp new file mode 100644 index 00000000..c0f579e1 --- /dev/null +++ b/include/xqilla/axis/NodeTest.hpp @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: NodeTest.hpp,v 1.10 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _NODETEST_HPP +#define _NODETEST_HPP + +#include + +#include +#include +#include + +class StaticContext; +class DynamicContext; + +/** + * This class represents a NodeTest production from the grammar, + * and provides methods for filtering a Result containing Node items, + * and determining if a single Item matches. + */ +class XQILLA_API NodeTest +{ +public: + NodeTest(); + virtual ~NodeTest(); + + /** Method for returning arbitrary interfaces from the implementations */ + virtual void *getInterface(const XMLCh *name) const; + + /// Filters the given Result, returning only Items that match the NodeTest + Result filterResult(const Result &toFilter, const LocationInfo *info) const; + ///check if a node has to be placed in the result set + bool filterNode(Node::Ptr node, DynamicContext* context, const LocationInfo *info) const; + + void staticResolution(StaticContext *context, const LocationInfo *location); + + ///gets the sequence type used to match the nodes + SequenceType::ItemType* getItemType() const; + ///set function for private member + void setItemType(SequenceType::ItemType* type); + + ///gets the name of the node we are selecting + const XMLCh* getNodeName() const; + ///set function for private member + void setNodeName(const XMLCh* name); + + ///gets the uri of the node we are selecting + const XMLCh* getNodeUri() const; + ///set function for private member + void setNodeUri(const XMLCh* uri); + + ///gets the prefix of the node we are selecting + const XMLCh* getNodePrefix() const; + ///set function for private member + void setNodePrefix(const XMLCh* prefix); + ///returns whether the prefix has been set (instead of the uri) + bool isNodePrefixSet() const; + + ///gets the node type we are selecting + const XMLCh *getNodeType() const; + ///set node type looked for + void setNodeType(const XMLCh *type); + ///retuns whether the type has been set in this NavStep + bool isNodeTypeSet() const; + + ///returns true if the Node Name ia a wildcard + bool getNameWildcard() const; + ///sets the wildcard nodeName bool + void setNameWildcard(bool value = true); + + ///returns true if the Node prefix ia a wildcard + bool getNamespaceWildcard() const; + ///sets the prefix wildcard bool + void setNamespaceWildcard(bool value = true); + + ///returns true if the type is a wildcard + bool getTypeWildcard() const; + ///sets the type wildcard bool + void setTypeWildcard(bool value = true); + + /// returns true if the following step is a child axis (for optimisation reasons) + bool getHasChildren() const; + /// sets whether the following step is a child axis + void setHasChildren(bool value = true); + + void getStaticType(StaticType &st, const StaticContext *context, + bool &isExact, const LocationInfo *location) const; + +protected: + ///check a node's type against _type, considers wildcard + bool checkNodeType(Node::Ptr node) const; + + ///check a node's name against _name, considers wildcard + bool checkNodeName(Node::Ptr node, const DynamicContext *context) const; + + /** + * Performs filtering based on type or name. + */ + class XQILLA_API FilterResult : public ResultImpl + { + public: + FilterResult(const LocationInfo *info, const Result &toFilter, const NodeTest *nodeTest); + virtual ~FilterResult() {} + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + + protected: + Result toFilter_; + const NodeTest *nodeTest_; + }; + +protected: + const XMLCh* _name,*_uri,*_prefix; + const XMLCh* _type; + bool _wildcardName, _wildcardNamespace, _wildcardType, _usePrefix, _hasChildren; + SequenceType::ItemType* _itemType; +}; + +#endif diff --git a/include/xqilla/axis/ParentAxis.hpp b/include/xqilla/axis/ParentAxis.hpp new file mode 100644 index 00000000..0c8cc5a4 --- /dev/null +++ b/include/xqilla/axis/ParentAxis.hpp @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ParentAxis.hpp,v 1.9 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _PARENTAXIS_HPP +#define _PARENTAXIS_HPP + +#include + +class XQILLA_API ParentAxis : public Axis +{ +public: + ParentAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory = Axis::gNodeImplFactory); + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *nextNode(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; +}; + + +#endif + diff --git a/include/xqilla/axis/PrecedingAxis.hpp b/include/xqilla/axis/PrecedingAxis.hpp new file mode 100644 index 00000000..4eb12868 --- /dev/null +++ b/include/xqilla/axis/PrecedingAxis.hpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: PrecedingAxis.hpp,v 1.9 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _PRECEDINGAXIS_HPP +#define _PRECEDINGAXIS_HPP + +#include + +/** +This class implements the PrecedingAxis axis as defined by the XPath spec +*/ +class XQILLA_API PrecedingAxis : public Axis +{ +public: + PrecedingAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory = Axis::gNodeImplFactory); + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *nextNode(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; +private: + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *parent_; + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node_; +}; + + +#endif + diff --git a/include/xqilla/axis/PrecedingSiblingAxis.hpp b/include/xqilla/axis/PrecedingSiblingAxis.hpp new file mode 100644 index 00000000..fe6e535a --- /dev/null +++ b/include/xqilla/axis/PrecedingSiblingAxis.hpp @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: PrecedingSiblingAxis.hpp,v 1.9 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _PRECEDINGSIBLINGAXIS_HPP +#define _PRECEDINGSIBLINGAXIS_HPP + +#include + +/** + This class implements the PrecedingSiblingAxis axis as defined by the XPath spec +*/ +class XQILLA_API PrecedingSiblingAxis : public Axis +{ +public: + PrecedingSiblingAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory = Axis::gNodeImplFactory); + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *nextNode(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; +private: + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *sibling_; +}; + + +#endif + diff --git a/include/xqilla/axis/SelfAxis.hpp b/include/xqilla/axis/SelfAxis.hpp new file mode 100644 index 00000000..28ba1966 --- /dev/null +++ b/include/xqilla/axis/SelfAxis.hpp @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: SelfAxis.hpp,v 1.9 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _SELFAXIS_HPP +#define _SELFAXIS_HPP + +#include +#include +#include + +class XQILLA_API SelfAxis : public ResultImpl +{ +public: + SelfAxis(const LocationInfo *info, Node::Ptr contextNode); + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; +private: + bool toDo_; + Node::Ptr contextNode_; +}; + +#endif + diff --git a/include/xqilla/context/Collation.hpp b/include/xqilla/context/Collation.hpp new file mode 100644 index 00000000..3d19e143 --- /dev/null +++ b/include/xqilla/context/Collation.hpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Collation.hpp,v 1.8 2006/11/01 16:37:11 jpcs Exp $ + */ + +#if !defined(AFXQ_COLLATION_H__6BA76C4A_0A5B_480B_9870_86A89A118100__INCLUDED_) +#define AFXQ_COLLATION_H__6BA76C4A_0A5B_480B_9870_86A89A118100__INCLUDED_ + +#include +#include + +class Sequence; +class DynamicContext; + +class XQILLA_API Collation +{ +public: + virtual ~Collation() {}; + + virtual const XMLCh* getCollationName() const = 0; + virtual Sequence sort(Sequence data, const DynamicContext* context) const = 0; + virtual int compare(const XMLCh* const string1, const XMLCh* const string2) const = 0; + +protected: + Collation() {} +}; + +#endif // !defined(AFXQ_COLLATION_H__6BA76C4A_0A5B_480B_9870_86A89A118100__INCLUDED_) diff --git a/include/xqilla/context/ContextHelpers.hpp b/include/xqilla/context/ContextHelpers.hpp new file mode 100644 index 00000000..6822556c --- /dev/null +++ b/include/xqilla/context/ContextHelpers.hpp @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ContextHelpers.hpp,v 1.2 2006/11/01 16:37:11 jpcs Exp $ + */ + +#if !defined(AFXQ_CONTEXTHELPERS_H__D6A320F5_21F1_421D_9E46_E4373B375E1A__INCLUDED_) +#define AFXQ_CONTEXTHELPERS_H__D6A320F5_21F1_421D_9E46_E4373B375E1A__INCLUDED_ + +#include +#include + +class XQILLA_API AutoNodeSetOrderingReset +{ +public: + AutoNodeSetOrderingReset(StaticContext* context, StaticContext::NodeSetOrdering ordering = StaticContext::ORDERING_UNORDERED) + { + context_ = context; + ordering_ = context->getNodeSetOrdering(); + context->setNodeSetOrdering(ordering); + } + + ~AutoNodeSetOrderingReset() + { + context_->setNodeSetOrdering(ordering_); + } + +protected: + StaticContext* context_; + StaticContext::NodeSetOrdering ordering_; +}; + +class XQILLA_API AutoContextItemTypeReset +{ +public: + AutoContextItemTypeReset(StaticContext* context, const StaticType &sType) + { + context_ = context; + sType_ = context->getContextItemType(); + context->setContextItemType(sType); + } + + ~AutoContextItemTypeReset() + { + context_->setContextItemType(sType_); + } + +protected: + StaticContext* context_; + StaticType sType_; +}; + +class XQILLA_API AutoContextInfoReset +{ +public: + AutoContextInfoReset(DynamicContext* context) + : oldContextItem(context->getContextItem()), + oldContextPosition(context->getContextPosition()), + oldContextSize(context->getContextSize()), + context_(context) + { + } + + ~AutoContextInfoReset() + { + resetContextInfo(); + } + + void resetContextInfo() + { + context_->setContextItem(oldContextItem); + context_->setContextPosition(oldContextPosition); + context_->setContextSize(oldContextSize); + } + + Item::Ptr oldContextItem; + unsigned int oldContextPosition; + unsigned int oldContextSize; + +private: + DynamicContext* context_; +}; + +#endif diff --git a/include/xqilla/context/DynamicContext.hpp b/include/xqilla/context/DynamicContext.hpp new file mode 100644 index 00000000..565463c7 --- /dev/null +++ b/include/xqilla/context/DynamicContext.hpp @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DynamicContext.hpp,v 1.15 2006/11/01 16:37:11 jpcs Exp $ + */ + +#ifndef _DYNAMICCONTEXT_HPP +#define _DYNAMICCONTEXT_HPP + +#include +#include +#include + +class Sequence; +class Item; +class URIResolver; +class VariableStore; +class ItemFactory; + +/// The execution time dynamic context interface +class XQILLA_API DynamicContext : public StaticContext +{ +public: + virtual ~DynamicContext() {}; + + /** Register a new reference to the document */ + virtual void incrementDocumentRefCount(const XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* document) const = 0; + /** Register a closed reference to the document */ + virtual void decrementDocumentRefCount(const XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* document) const = 0; + + /** Resets the dynamic context, as if it had never been used */ + virtual void clearDynamicContext() = 0; + + /** Get the context Item */ + virtual Item::Ptr getContextItem() const = 0; + /** Set the context item to item */ + virtual void setContextItem(const Item::Ptr &item) = 0; + /** Sets the context item to an external document. + This is needed so that the DOMDocument reference counting + does not release the document that the node comes from. */ + virtual void setExternalContextNode(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node) = 0; + + /** Get the context position */ + virtual unsigned int getContextPosition() const = 0; + /** Set the context position */ + virtual void setContextPosition(unsigned int pos) = 0; + + /** Get the context size */ + virtual unsigned int getContextSize() const = 0; + /** Set the context size */ + virtual void setContextSize(unsigned int size) = 0; + + /** get the variable store */ + virtual VariableStore* getVariableStore() = 0; + + /** Return the current time */ + virtual time_t getCurrentTime() const = 0; + /** Set the current time */ + virtual void setCurrentTime(time_t newTime) = 0; + + /** Return the implicit timezone for this system.*/ + virtual ATDurationOrDerived::Ptr getImplicitTimezone() const = 0; + /** Set the implicit timezone */ + virtual void setImplicitTimezone(const ATDurationOrDerived::Ptr &timezoneAsDuration) = 0; + + /** + Register a callback object for resolving URIs. Multiple URIResolver + objects can be registered with the DynamicContext at the same time. + The most recently added URIResolver will be called first, and if it + returns NULL, subsequent ones will be called - ending in a call to + the fallback routines. + + The DynamicContext will not + adopt this object, making the user responsible for making sure that the + URIResolver object's lifespan matches or exceeds the life of the + DynamicContext. + */ + virtual void registerURIResolver(URIResolver *resolver) = 0; + /* Resolve the given uri (and baseUri) to a DOMDocument. If the uri + is relative, the base uri is obtained from the context. */ + virtual Sequence resolveDocument(const XMLCh* uri, const LocationInfo *location) = 0; + /* Resolve the given uri (and baseUri) to a ist of DOMNode objects. If the uri + is relative, the base uri is obtained from the context. */ + virtual Sequence resolveCollection(const XMLCh* uri, const LocationInfo *location) = 0; + virtual Sequence resolveDefaultCollection() = 0; + /** returns the validated node */ + virtual Node::Ptr validate(const Node::Ptr &node, DocumentCache::ValidationMode valMode) = 0; + + /** send a pair of strings to the "trace" data set */ + virtual void trace(const XMLCh* message1, const XMLCh* message2) = 0; + + /** Set the object to be used for debugging callbacks */ + virtual void setDebugCallback(XQDebugCallback* callback) = 0; + /** Get the object to be used for debugging callbacks */ + virtual XQDebugCallback* getDebugCallback() const = 0; + + /** + Test if the query should be interrupted, and throw if so. + This method has a default implementation of no-op. + */ + virtual void testInterrupt() const {} +}; + +#endif diff --git a/include/xqilla/context/ItemFactory.hpp b/include/xqilla/context/ItemFactory.hpp new file mode 100644 index 00000000..fc1f6ef5 --- /dev/null +++ b/include/xqilla/context/ItemFactory.hpp @@ -0,0 +1,147 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ItemFactory.hpp,v 1.12 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + Factory base class +*/ + +#ifndef _ITEMFACTORY_HPP +#define _ITEMFACTORY_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +class XQILLA_API ItemFactory : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory +{ +public: + virtual ~ItemFactory() {}; + + /* @name Atomic type factory methods */ + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex(const XMLCh* typeURI, const XMLCh* typeName, bool &isPrimitive) const = 0; + virtual AnyAtomicType::Ptr createDerivedFromAtomicType(AnyAtomicType::AtomicObjectType typeIndex, const XMLCh* value, + const DynamicContext* context) = 0; + virtual AnyAtomicType::Ptr createDerivedFromAtomicType(AnyAtomicType::AtomicObjectType typeIndex, const XMLCh* typeURI, + const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0; + virtual AnyAtomicType::Ptr createDerivedFromAtomicType(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0; + + /* @name Node factory methods */ + + class XQILLA_API ElementChild { + public: + ElementChild(const Node::Ptr &n) : node(n), clone(true) {} + ElementChild(const Node::Ptr &n, bool c) : node(n), clone(c) {} + operator const Node::Ptr &() { return node; } + const Node *operator ->() const { return node.get(); } + + Node::Ptr node; + bool clone; + }; + + virtual Node::Ptr cloneNode(const Node::Ptr node, const DynamicContext *context) const = 0; + virtual Node::Ptr createTextNode(const XMLCh *value, const DynamicContext *context) const = 0; + virtual Node::Ptr createCommentNode(const XMLCh *value, const DynamicContext *context) const = 0; + virtual Node::Ptr createPINode(const XMLCh *name, const XMLCh *value, const DynamicContext *context) const = 0; + virtual Node::Ptr createAttributeNode(const XMLCh *uri, const XMLCh *prefix, const XMLCh *name, + const XMLCh *value, const DynamicContext *context) const = 0; + virtual Node::Ptr createElementNode(const XMLCh *uri, const XMLCh *prefix, const XMLCh *name, + const std::vector &attrList, const std::vector &childList, + const DynamicContext *context) const = 0; + virtual Node::Ptr createDocumentNode(const std::vector &childList, const DynamicContext *context) const = 0; + virtual const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* createNamespaceNode(const XMLCh* prefix, const XMLCh* uri, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* parentNode, const DynamicContext *context) const = 0; + + /* @name Number factory methods */ + + virtual ATDoubleOrDerived::Ptr createDouble(const MAPM value, const DynamicContext* context) = 0; + virtual ATDoubleOrDerived::Ptr createDouble(const XMLCh* value, const DynamicContext* context) = 0; + virtual ATDoubleOrDerived::Ptr createDoubleOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const MAPM value, const DynamicContext* context) = 0; + virtual ATDoubleOrDerived::Ptr createDoubleOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0; + + virtual ATFloatOrDerived::Ptr createFloat(const MAPM value, const DynamicContext* context) = 0; + virtual ATFloatOrDerived::Ptr createFloat(const XMLCh* value, const DynamicContext* context) = 0; + virtual ATFloatOrDerived::Ptr createFloatOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const MAPM value, const DynamicContext* context) = 0; + virtual ATFloatOrDerived::Ptr createFloatOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0; + + virtual ATDecimalOrDerived::Ptr createInteger(const int value, const DynamicContext* context) = 0; + virtual ATDecimalOrDerived::Ptr createInteger(const MAPM value, const DynamicContext* context) = 0; + virtual ATDecimalOrDerived::Ptr createInteger(const XMLCh* value, const DynamicContext* context) = 0; + virtual ATDecimalOrDerived::Ptr createNonNegativeInteger(const MAPM value, const DynamicContext* context) = 0; + + virtual ATDecimalOrDerived::Ptr createDecimal(const MAPM value, const DynamicContext* context) = 0; + virtual ATDecimalOrDerived::Ptr createDecimal(const XMLCh* value, const DynamicContext* context) = 0; + virtual ATDecimalOrDerived::Ptr createDecimalOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const MAPM value, const DynamicContext* context) = 0; + virtual ATDecimalOrDerived::Ptr createDecimalOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0; + + /* @name Date / time factory methods */ + + virtual ATDateOrDerived::Ptr createDate(const XMLCh* value, const DynamicContext* context) = 0; + virtual ATDateOrDerived::Ptr createDateOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0; + + virtual ATDateTimeOrDerived::Ptr createDateTime(const XMLCh* value, const DynamicContext* context) = 0; + virtual ATDateTimeOrDerived::Ptr createDateTimeOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0; + + virtual ATTimeOrDerived::Ptr createTime(const XMLCh* value, const DynamicContext* context) = 0; + virtual ATTimeOrDerived::Ptr createTimeOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0; + + virtual ATGDayOrDerived::Ptr createGDayOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0; + virtual ATGMonthDayOrDerived::Ptr createGMonthDayOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0; + virtual ATGMonthOrDerived::Ptr createGMonthOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0; + virtual ATGYearMonthOrDerived::Ptr createGYearMonthOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0; + virtual ATGYearOrDerived::Ptr createGYearOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0; + + virtual ATDurationOrDerived::Ptr createDayTimeDuration(const XMLCh* value, const DynamicContext* context) = 0; + virtual ATDurationOrDerived::Ptr createDayTimeDuration(const MAPM &seconds, const DynamicContext* context) = 0; + virtual ATDurationOrDerived::Ptr createYearMonthDuration(const XMLCh* value, const DynamicContext* context) = 0; + virtual ATDurationOrDerived::Ptr createYearMonthDuration(const MAPM &months, const DynamicContext* context) = 0; + virtual ATDurationOrDerived::Ptr createDurationOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0; + + /* @name Other factory methods */ + + virtual ATStringOrDerived::Ptr createString(const XMLCh* value, const DynamicContext* context) = 0; + virtual ATStringOrDerived::Ptr createStringOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0; + + virtual ATUntypedAtomic::Ptr createUntypedAtomic(const XMLCh* value, const DynamicContext* context) = 0; + + virtual ATBooleanOrDerived::Ptr createBoolean(bool value, const DynamicContext* context) = 0; + virtual ATBooleanOrDerived::Ptr createBoolean(const XMLCh* value, const DynamicContext* context) = 0; + virtual ATBooleanOrDerived::Ptr createBooleanOrDerived(const XMLCh* typeURI, const XMLCh* typeName, bool value, const DynamicContext* context) = 0; + virtual ATBooleanOrDerived::Ptr createBooleanOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) = 0; + + virtual ATAnyURIOrDerived::Ptr createAnyURI(const XMLCh* value, const DynamicContext* context) = 0; + + virtual ATQNameOrDerived::Ptr createQName(const XMLCh* uri, const XMLCh* prefix, const XMLCh* name, const DynamicContext* context) = 0; + virtual ATQNameOrDerived::Ptr createQNameOrDerived(const XMLCh* typeURI, const XMLCh *prefix, const XMLCh* typeName, const XMLCh* uri, const XMLCh* name, const DynamicContext* context) = 0; + +}; + +#endif diff --git a/include/xqilla/context/ModuleResolver.hpp b/include/xqilla/context/ModuleResolver.hpp new file mode 100644 index 00000000..0b52d2fa --- /dev/null +++ b/include/xqilla/context/ModuleResolver.hpp @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ModuleResolver.hpp,v 1.2 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _MODULERESOLVER_HPP +#define _MODULERESOLVER_HPP + +#include + +class DynamicContext; + +class XQILLA_API ModuleResolver { + public: + /* virtual destructor, does nothing */ + virtual ~ModuleResolver() {}; + + /* Fills the string vector with a list of locations tht, once assembled, build the module referenced by the given URI. + If the URI is unknown, returns false, otherwise returns true. */ + virtual bool resolveModuleLocation(VectorOfStrings* result, const XMLCh* nsUri, const StaticContext* context) = 0; +}; +#endif // _MODULERESOLVER_HPP diff --git a/include/xqilla/context/Scope.hpp b/include/xqilla/context/Scope.hpp new file mode 100644 index 00000000..2b530719 --- /dev/null +++ b/include/xqilla/context/Scope.hpp @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Scope.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + Scope +*/ + +#ifndef _SCOPE_HPP +#define _SCOPE_HPP + +#include +#include +#include +#include + +template class VarHashEntry; + +/** used inside VariableStore to implement variable scoping */ +template +class Scope : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory +{ +public: + /** enum for classifying type of scope */ + typedef enum { + GLOBAL_SCOPE, + LOCAL_SCOPE, + LOGICAL_BLOCK_SCOPE + } Type; + + typedef XERCES_CPP_NAMESPACE_QUALIFIER RefHash2KeysTableOf< VarHashEntry > VarHash; + + /** constructor. */ + Scope(XPath2MemoryManager* memMgr, Type type); + ~Scope(); + + void clear(); + + Type getType() const; + VarHashEntry* get(unsigned int nsID, const XMLCh* name); + void put(unsigned int nsID, const XMLCh* name, VarHashEntry* value); + void remove(unsigned int nsID, const XMLCh* name); + std::vector< std::pair > getVars() const; + + Scope* getNext(); + void setNext(Scope* next); + +private: + typename Scope::Type _type; + VarHash _map; + XPath2MemoryManager* _memMgr; + Scope* _next; +}; + +template +Scope::Scope(XPath2MemoryManager* memMgr, Type type) : + _map(17, true, memMgr) +{ + _memMgr=memMgr; + _type = type; + _next = NULL; +} + +template +void Scope::clear() +{ + _map.removeAll(); +} + +template +typename Scope::Type Scope::getType() const +{ + return _type; +} + +template +VarHashEntry* Scope::get(unsigned int nsID, const XMLCh* name) +{ + return _map.get(name,nsID); +} + +template +void Scope::put(unsigned int nsID, const XMLCh* name, VarHashEntry* value) +{ + _map.put((void*)_memMgr->getPooledString(name),nsID,value); +} + +template +void Scope::remove(unsigned int nsID, const XMLCh* name) +{ + _map.removeKey(name,nsID); +} + +template +std::vector< std::pair > Scope::getVars() const +{ + std::vector< std::pair > result; + XERCES_CPP_NAMESPACE_QUALIFIER RefHash2KeysTableOfEnumerator< VarHashEntry > iterator(const_cast(&_map)); + while(iterator.hasMoreElements()) + { + XMLCh* name; + int nsID; + iterator.nextElementKey((void*&)name, nsID); + result.push_back(std::pair(nsID,name)); + } + return result; +} + +template +Scope::~Scope() +{ + _map.removeAll(); +} + +template +Scope* Scope::getNext() +{ + return _next; +} + +template +void Scope::setNext(Scope* next) +{ + _next=next; +} + +#endif // _SCOPE_HPP diff --git a/include/xqilla/context/StaticContext.hpp b/include/xqilla/context/StaticContext.hpp new file mode 100644 index 00000000..e0d10b05 --- /dev/null +++ b/include/xqilla/context/StaticContext.hpp @@ -0,0 +1,213 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: StaticContext.hpp,v 1.16 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _STATICCONTEXT_HPP +#define _STATICCONTEXT_HPP + +#include +#include +#include +#include +#include + +// Copied from ASTNode.hpp +typedef std::vector > VectorOfASTNodes; + +class DynamicContext; +class XPath2MemoryManager; +class FuncFactory; +class DatatypeFactory; +class Collation; +class VariableTypeStore; +class ItemFactory; +class StaticType; +class ModuleResolver; + +XERCES_CPP_NAMESPACE_BEGIN +class DOMDocument; +class DOMXPathNSResolver; +class XMLEntityResolver; +XERCES_CPP_NAMESPACE_END + +/// The parse time static context interface +class XQILLA_API StaticContext : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory +{ +public: + typedef enum { + ORDERING_ORDERED, + ORDERING_UNORDERED + } NodeSetOrdering; + + typedef enum { + CONSTRUCTION_MODE_PRESERVE, + CONSTRUCTION_MODE_STRIP + } ConstructionMode; + + typedef enum { + FLWOR_ORDER_EMPTY_GREATEST, + FLWOR_ORDER_EMPTY_LEAST + } FLWOROrderingMode; + + virtual ~StaticContext() {}; + + virtual DynamicContext *createModuleContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr = + XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager) const = 0; + virtual DynamicContext *createDynamicContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr = + XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager) const = 0; + + /** Returns the ItemFactory for this context, which is used to create XQilla items and other objects. */ + virtual ItemFactory *getItemFactory() const = 0; + /** Sets the ItemFactory for this context */ + virtual void setItemFactory(ItemFactory *factory) = 0; + + /** Get the static type of the context item */ + virtual const StaticType &getContextItemType() const = 0; + /** Set the static type of the context item */ + virtual void setContextItemType(const StaticType &st) = 0; + + /** Get the current XPath 1.0 compatibility mode */ + virtual bool getXPath1CompatibilityMode() const = 0; + /** Set the current XPath 1.0 compatibility mode */ + virtual void setXPath1CompatibilityMode(bool newMode) = 0; + + /** Get the NS resolver */ + virtual const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* getNSResolver() const = 0; + /** returns the URI that is bound in prefix in the current scope or zero + length string otherwise */ + virtual const XMLCh* getUriBoundToPrefix(const XMLCh* prefix, const LocationInfo *location) const = 0; + /** returns the prefix that is bound in uri in the current scope or zero + length string otherwise */ + virtual const XMLCh* getPrefixBoundToUri(const XMLCh* uri) const = 0; + /** Set the NS resolver */ + virtual void setNSResolver(const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* resolver) = 0; + /** Binds a prefix to a namespace URI */ + virtual void setNamespaceBinding(const XMLCh* prefix, const XMLCh* uri) = 0; + + /** get the value of the default namespace for elements and types */ + virtual const XMLCh* getDefaultElementAndTypeNS() const = 0; + /** set the value of the default namespace for elements and types */ + virtual void setDefaultElementAndTypeNS(const XMLCh* newNS) = 0; + + /** Return the default namespace for functions */ + virtual const XMLCh* getDefaultFuncNS() const = 0; + /** Set the default namespace for functions */ + virtual void setDefaultFuncNS(const XMLCh* newNS) = 0; + + /** retrieve the repository for the grammars **/ + virtual const DocumentCache* getDocumentCache() const = 0; + /** sets the repository for the grammars **/ + virtual void setDocumentCache(DocumentCache* docCache) = 0; + + /** returns true if the type represented by uri:typename is an instance of uriToCheck:typeNameToCheck + * + * ie: to check + * xs:integer instance of xs:decimal, + * call + * isTypeOrDerivedFromType("xs", "integer", "xs", "decimal") + * (except of course, call with URIs, not prefixes!) + */ + virtual bool isTypeOrDerivedFromType(const XMLCh* const uri, const XMLCh* const typeName, const XMLCh* const uriToCheck, const XMLCh* const typeNameToCheck) const = 0; + /** + * Sets the XMLEntityResolver that is used by Xerces when it is used + * to parse documents. This affects the behaviour of XQilla whenever + * it retrieves a DTD or XML Schema grammar. + */ + virtual void setXMLEntityResolver(XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* const handler) = 0; + /** Returns the entity resolver currently set */ + virtual XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* getXMLEntityResolver() const = 0; + + /** Register a callback object for resolving module URIs */ + virtual void setModuleResolver(ModuleResolver *resolver) = 0; + /** Returns the module resolver currently set */ + virtual ModuleResolver *getModuleResolver() const = 0; + /* Retrieve a list of locations for the given module URI */ + virtual VectorOfStrings* resolveModuleURI(const XMLCh* uri) const = 0; + + /** add the location for the grammar of a specific namespace **/ + virtual void addSchemaLocation(const XMLCh* uri, VectorOfStrings* locations) = 0; + + /** get the variable type store */ + virtual VariableTypeStore* getVariableTypeStore() = 0; + + /** adds a custom function to the function table */ + virtual void addCustomFunction(FuncFactory *func) = 0; + /** returns a function with name name in the namespace represented by prefix */ + virtual ASTNode* lookUpFunction(const XMLCh* prefix, const XMLCh* name, VectorOfASTNodes& v, + const LocationInfo *location) const = 0; + + /** Get the implementation for the specified collation */ + virtual Collation* getCollation(const XMLCh* const URI, const LocationInfo *location) const = 0; + /** Add a collation */ + virtual void addCollation(Collation* collation) = 0; + + /** Get the default collation */ + virtual Collation* getDefaultCollation(const LocationInfo *location) const = 0; + /** Specify which collation is the default one */ + virtual void setDefaultCollation(const XMLCh* const URI) = 0; + + /** Return the base URI */ + virtual const XMLCh* getBaseURI() const = 0; + /** Set the base URI */ + virtual void setBaseURI(const XMLCh* newURI) = 0; + + /** Return the ordering method for node sets */ + virtual NodeSetOrdering getNodeSetOrdering() const = 0; + /** Set the ordering method for node sets */ + virtual void setNodeSetOrdering(NodeSetOrdering newOrder) = 0; + + /** Return the construction mode */ + virtual ConstructionMode getConstructionMode() const = 0; + /** Set the construction mode */ + virtual void setConstructionMode(ConstructionMode newMode) = 0; + + /** Set the policy for boundary space */ + virtual void setPreserveBoundarySpace(bool value) = 0; + /** Get the policy for boundary space */ + virtual bool getPreserveBoundarySpace() const = 0; + + /** Return the default ordering mode for FLWOR blocks */ + virtual FLWOROrderingMode getDefaultFLWOROrderingMode() const = 0; + /** Set the default ordering mode for FLWOR blocks */ + virtual void setDefaultFLWOROrderingMode(FLWOROrderingMode newMode) = 0; + + /** Set the policy for namespace inheritance */ + virtual void setInheritNamespaces(bool value) = 0; + /** Get the policy for namespace inheritance */ + virtual bool getInheritNamespaces() const = 0; + + /** Set the policy for namespace copy */ + virtual void setPreserveNamespaces(bool value) = 0; + /** Get the policy for namespace copy */ + virtual bool getPreserveNamespaces() const = 0; + + /// The enableDebuging flag is considered to be in both the static and dynamic contexts + virtual void enableDebugging(bool enable=true) = 0; + /// The enableDebuging flag is considered to be in both the static and dynamic contexts + virtual bool isDebuggingEnabled() const = 0; + + ///////////////////////////////////////// + // XQilla context specific accessors // + ///////////////////////////////////////// + + /** Used whenever we need to create a new document (including parsing in documents) */ + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *createNewDocument() const = 0; + /** Used to release a document allocated through createNewDocument(). */ + virtual void releaseDocument(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc) const = 0; + + /** Get the memory manager */ + virtual XPath2MemoryManager* getMemoryManager() const = 0; + /** Set the memory manager to the one given */ + virtual void setMemoryManager(XPath2MemoryManager* memMgr) = 0; +}; + +#endif diff --git a/include/xqilla/context/URIResolver.hpp b/include/xqilla/context/URIResolver.hpp new file mode 100644 index 00000000..cd084434 --- /dev/null +++ b/include/xqilla/context/URIResolver.hpp @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: URIResolver.hpp,v 1.7 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _URIRESOLVER_HPP +#define _URIRESOLVER_HPP + +#include +#include + +class DynamicContext; +class Sequence; + +XERCES_CPP_NAMESPACE_BEGIN +class DOMDocument; +class DOMNodeList; +XERCES_CPP_NAMESPACE_END + +/** + * This is an abstract class used to resolve URIs in different ways +**/ +class XQILLA_API URIResolver { + public: + /* virtual destructor, does nothing */ + virtual ~URIResolver() {}; + + /* Resolve the given uri (and baseUri) to a Sequence (reference parameter). If the uri + is relative, the base uri can be obtained from the context. If the uri is not handled + by this URIResolver, returns false, otherwise returns true. */ + virtual bool resolveDocument(Sequence &result, const XMLCh* uri, DynamicContext* context) = 0; + + /* Resolve the given uri (and baseUri) to a Sequence (reference parameter). If the uri + is relative, the base uri can be obtained from the context. If the uri is not handled + by this URIResolver, returns false, otherwise returns true. */ + virtual bool resolveCollection(Sequence &result, const XMLCh* uri, DynamicContext* context) = 0; + + /* Resolve the default collection. If it is not defined, returns false, otherwise returns true. */ + virtual bool resolveDefaultCollection(Sequence &result, DynamicContext* context) = 0; +}; +#endif // _URIRESOLVER_HPP diff --git a/include/xqilla/context/VarHashEntry.hpp b/include/xqilla/context/VarHashEntry.hpp new file mode 100644 index 00000000..f07f6ab8 --- /dev/null +++ b/include/xqilla/context/VarHashEntry.hpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: VarHashEntry.hpp,v 1.8 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _VARHASHENTRY_HPP +#define _VARHASHENTRY_HPP + +#include +#include + +/** The class that stores the values of the variables. */ +template +class VarHashEntry : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory +{ +public: + virtual ~VarHashEntry() {} + + /** Gets the value of the variable (overload in derived classes for + special behaviour) */ + virtual const TYPE &getValue() const = 0; + + /** Sets the value of the variable (overload in derived classes for + special behaviour) */ + virtual void setValue(const TYPE &value) = 0; +}; + +#endif + diff --git a/include/xqilla/context/VariableStore.hpp b/include/xqilla/context/VariableStore.hpp new file mode 100644 index 00000000..05f2d30a --- /dev/null +++ b/include/xqilla/context/VariableStore.hpp @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: VariableStore.hpp,v 1.10 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _VARIABLESTORE_HPP +#define _VARIABLESTORE_HPP + +#include +#include +#include +#include + +class Sequence; +template class VarHashEntry; +template class Scope; +class StaticContext; +class XPath2MemoryManager; +class LocationInfo; + +/** This is the wrapper class for the variable store, which implements the + lookup and scoping of simple variables. */ +class XQILLA_API VariableStore : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory +{ +public: + typedef Scope MyScope; + typedef VarHashEntry Entry; + + /** default destructor */ + virtual ~VariableStore() {}; + + /** Clears all variable values and added scopes from the store */ + virtual void clear() = 0; + + /** Adds a new local scope to the store. */ + virtual void addLocalScope() = 0; + /** Adds a new logical block scope to the store. */ + virtual void addLogicalBlockScope() = 0; + /** Removes the top level scope from the store. To be called at the end of methods to + implement scoping. */ + virtual void removeScope() = 0; + + /// Returns an encapsulation of the state of the variable store. + virtual MyScope *getScopeState() = 0; + /// Sets the variable store to a previous state. + virtual void setScopeState(MyScope *state) = 0; + + /** Declares and/or sets a variable in the global scope. */ + virtual void setGlobalVar(const XMLCh* ident, const Sequence &value, + const StaticContext* context, + const LocationInfo *location) = 0; + virtual void setGlobalVar(const XMLCh* namespaceURI, const XMLCh* name, const Sequence &value, + const StaticContext* context) = 0; + + /** Declares and/or sets a variable in the top level scope. */ + virtual void setVar(const XMLCh* ident, const Sequence &value, + const StaticContext* context, + const LocationInfo *location) = 0; + virtual void setVar(const XMLCh* namespaceURI, const XMLCh* name, const Sequence &value, + const StaticContext* context) = 0; + + /** Declare a var in the top level scope (A full set of + these namespaceURI/name pair methods should be made) */ + virtual void declareVar(const XMLCh* ident, + const Sequence &value, + const StaticContext* context, + const LocationInfo *location) = 0; + virtual void declareVar(const XMLCh* namespaceURI, + const XMLCh* name, + const Sequence &value, + const StaticContext* context) = 0; + + /** Looks up the value of a variable in the current scope, using ident as an + qname. Returns a boolean (true if successful), and the Sequence value + of the variable*/ + virtual const std::pair getVar(const XMLCh* ident, + const StaticContext* context, + const LocationInfo *location) const = 0; + virtual const std::pair getVar(const XMLCh* namespaceURI, + const XMLCh* name, + const StaticContext* context) const = 0; + + /** Looks up the value of a variable in the current scope, using ident as an + qname. Returns the VariableStore::Entry for the variable, or null if it doesn't + exist*/ + virtual Entry* getReferenceVar(const XMLCh* ident, + const StaticContext* context, + const LocationInfo *location) const = 0; + virtual Entry* getReferenceVar(const XMLCh* namespaceURI, + const XMLCh* name, + const StaticContext* context) const = 0; + + /** Gets a variable from the global scope */ + virtual const std::pair getGlobalVar(const XMLCh* ident, + const StaticContext* context, + const LocationInfo *location) const = 0; + virtual const std::pair getGlobalVar(const XMLCh* namespaceURI, + const XMLCh* name, + const StaticContext* context) const = 0; + + /** Deletes a variable from the current scope. */ + virtual void delVar(const XMLCh* ident, const StaticContext* context, + const LocationInfo *location) = 0; + virtual void delVar(const XMLCh* namespaceURI, const XMLCh* name, const StaticContext* context) = 0; + + /** Deletes a variable from the global scope. */ + virtual void delGlobalVar(const XMLCh* ident, const StaticContext* context, + const LocationInfo *location) = 0; + + /** Gives human readable representation of the variable store */ + virtual XMLCh* print(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr) const = 0; + + /** Returns a vector with the names of the variable currently in scope */ + virtual std::vector< std::pair > getVars() const = 0; +}; + +#endif diff --git a/include/xqilla/context/VariableTypeStore.hpp b/include/xqilla/context/VariableTypeStore.hpp new file mode 100644 index 00000000..34a86bb8 --- /dev/null +++ b/include/xqilla/context/VariableTypeStore.hpp @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: VariableTypeStore.hpp,v 1.8 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _VARIABLETYPESTORE_HPP +#define _VARIABLETYPESTORE_HPP + +#include +#include +#include + +class SequenceType; +class XPath2MemoryManager; +class StaticResolutionContext; + +/** This is the wrapper class for the variable store, which implements the + lookup and scoping of simple variables. */ +class XQILLA_API VariableTypeStore : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory +{ +public: + /** default destructor */ + virtual ~VariableTypeStore() {}; + + /** Clears all variable values and added scopes from the store */ + virtual void clear() = 0; + + /** Adds a new local scope to the store. */ + virtual void addLocalScope() = 0; + /** Adds a new logical block scope to the store. */ + virtual void addLogicalBlockScope() = 0; + /** Removes the top level scope from the store. To be called at the end of methods to + implement scoping. */ + virtual void removeScope() = 0; + + /** Declares and/or sets a variable in the global scope. */ + virtual void declareGlobalVar(const XMLCh* namespaceURI, const XMLCh* name, + const StaticResolutionContext &src) = 0; + + /** Gets a variable from the global scope */ + virtual const StaticResolutionContext* getGlobalVar(const XMLCh* namespaceURI, + const XMLCh* name) const = 0; + + /** Declare a var in the top level scope (A full set of + these namespaceURI/name pair methods should be made) */ + virtual void declareVar(const XMLCh* namespaceURI, const XMLCh* name, + const StaticResolutionContext &src) = 0; + + /** Looks up the value of a variable in the current scope, using ident as an + qname. Returns a boolean (true if successful), and the SequenceType value + of the variable*/ + virtual const StaticResolutionContext *getVar(const XMLCh* namespaceURI, + const XMLCh* name) const = 0; +}; + +#endif diff --git a/include/xqilla/context/XQDebugCallback.hpp b/include/xqilla/context/XQDebugCallback.hpp new file mode 100644 index 00000000..943c9d66 --- /dev/null +++ b/include/xqilla/context/XQDebugCallback.hpp @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQDebugCallback.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQDebugCallback.h: interface for debugging +////////////////////////////////////////////////////////////////////// + +#if !defined(AFXQ_XQDEBUGCALLBACK_H__446AD191_E9D0_4658_BD8C_032D29DA125F__INCLUDED_) +#define AFXQ_XQDEBUGCALLBACK_H__446AD191_E9D0_4658_BD8C_032D29DA125F__INCLUDED_ + +#include +#include + +class Sequence; +class DynamicContext; + +XERCES_CPP_NAMESPACE_BEGIN + class DOMNode; +XERCES_CPP_NAMESPACE_END + +class XQILLA_API XQDebugCallback +{ +public: + virtual ~XQDebugCallback() {} + + virtual void IsBreakPointHit(DynamicContext* context, const XMLCh* file, unsigned int nLine) = 0; + virtual void EnterFunction(DynamicContext* context, const XMLCh* file, const XMLCh* fnName, unsigned int nLine, unsigned int nColumn) = 0; + virtual void ExitFunction(DynamicContext* context, const XMLCh* fnName) = 0; + virtual void ReportClonedNode(DynamicContext* context, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* original, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* clone) = 0; + virtual void ReportResult(DynamicContext* context, const XMLCh* file, unsigned int nLine, unsigned int nColumn, Sequence& result) = 0; + virtual void ReportFirstError(DynamicContext* context, const XMLCh* error, const XMLCh* file, unsigned int nLine) = 0; + + virtual void NotifyQueryBegin(DynamicContext* context, const XMLCh* query) = 0; + virtual void NotifyQueryEnd(DynamicContext* context, Sequence& result) = 0; +}; + +#endif // !defined(AFXQ_XQDEBUGCALLBACK_H__446AD191_E9D0_4658_BD8C_032D29DA125F__INCLUDED_) diff --git a/include/xqilla/context/XQScopedNamespace.hpp b/include/xqilla/context/XQScopedNamespace.hpp new file mode 100644 index 00000000..e3b8e72c --- /dev/null +++ b/include/xqilla/context/XQScopedNamespace.hpp @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQScopedNamespace.hpp,v 1.6 2006/11/01 16:37:12 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQScopedNamespace.hpp: interface for the XQScopedNamespace class. +////////////////////////////////////////////////////////////////////// + +#if !defined(AFXQ_XQSCOPEDNAMESPACE_H__D6A320F5_21F1_421D_9E46_E4373B375E1A__INCLUDED_) +#define AFXQ_XQSCOPEDNAMESPACE_H__D6A320F5_21F1_421D_9E46_E4373B375E1A__INCLUDED_ + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN +class DOMXPathNSResolver; +class DOMNode; +XERCES_CPP_NAMESPACE_END + +class XQILLA_API XQScopedNamespace : public XQillaNSResolverImpl +{ +public: + XQScopedNamespace(XPath2MemoryManager* memMgr, const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* prevScope); + virtual ~XQScopedNamespace(); + + virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const; + virtual const XMLCh* lookupPrefix(const XMLCh* uri) const; + + void setNodeContext(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* node); +protected: + const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* _prevScope; + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* _ctxNode; +}; + +class XQILLA_API AutoNsScopeReset +{ +public: + AutoNsScopeReset(StaticContext* context, XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* newResolver) + { + _context=context; + _oldNSResolver=_context->getNSResolver(); + _defaultElementAndTypeNS=context->getDefaultElementAndTypeNS(); + _context->setNSResolver(newResolver); + } + + ~AutoNsScopeReset() + { + _context->setNSResolver(_oldNSResolver); + _context->setDefaultElementAndTypeNS(_defaultElementAndTypeNS); + } + +protected: + StaticContext* _context; + const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* _oldNSResolver; + const XMLCh *_defaultElementAndTypeNS; + +}; + +#endif // !defined(AFXQ_XQSCOPEDNAMESPACE_H__D6A320F5_21F1_421D_9E46_E4373B375E1A__INCLUDED_) diff --git a/include/xqilla/context/impl/CodepointCollation.hpp b/include/xqilla/context/impl/CodepointCollation.hpp new file mode 100644 index 00000000..a93169db --- /dev/null +++ b/include/xqilla/context/impl/CodepointCollation.hpp @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: CodepointCollation.hpp,v 1.8 2006/11/01 16:37:12 jpcs Exp $ + */ + +#if !defined(AFXQ_CODEPOINTCOLLATION_H__6BA76C4A_0A5B_480B_9870_86A89A118100__INCLUDED_) +#define AFXQ_CODEPOINTCOLLATION_H__6BA76C4A_0A5B_480B_9870_86A89A118100__INCLUDED_ + +#include +#include + +class XPath2MemoryManager; + +class XQILLA_API CodepointCollation : public CollationHelper { +public: + CodepointCollation(); + + static const XMLCh* getCodepointCollationName(); + virtual const XMLCh* getCollationName() const; + virtual int compare(const XMLCh* string1, const XMLCh* string2) const; +}; + +#endif // !defined(AFXQ_CODEPOINTCOLLATION_H__6BA76C4A_0A5B_480B_9870_86A89A118100__INCLUDED_) diff --git a/include/xqilla/context/impl/CollationImpl.hpp b/include/xqilla/context/impl/CollationImpl.hpp new file mode 100644 index 00000000..df1d970f --- /dev/null +++ b/include/xqilla/context/impl/CollationImpl.hpp @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: CollationImpl.hpp,v 1.8 2006/11/01 16:37:12 jpcs Exp $ + */ + +#if !defined(AFXQ_COLLATIONIMPL_H__6BA76C4A_0A5B_480B_9870_86A89A118100__INCLUDED_) +#define AFXQ_COLLATIONIMPL_H__6BA76C4A_0A5B_480B_9870_86A89A118100__INCLUDED_ + +#include + +#include +#include + +class Item; +class XPath2MemoryManager; +class DynamicContext; + +class XQILLA_API CollationHelper +{ +public: + virtual ~CollationHelper() {}; + virtual const XMLCh* getCollationName() const = 0; + virtual int compare(const XMLCh* string1, const XMLCh* string2) const = 0; +}; + +class XQILLA_API CollationImpl : public Collation +{ +public: + CollationImpl(XPath2MemoryManager* memMgr, CollationHelper* helper); + + virtual const XMLCh* getCollationName() const; + virtual Sequence sort(Sequence data, const DynamicContext* context) const; + virtual int compare(const XMLCh* const string1, const XMLCh* const string2) const; + +protected: + XPath2MemoryManager* _memMgr; + CollationHelper* _helper; +}; + +#endif // !defined(AFXQ_COLLATIONIMPL_H__6BA76C4A_0A5B_480B_9870_86A89A118100__INCLUDED_) + diff --git a/include/xqilla/context/impl/ItemFactoryImpl.hpp b/include/xqilla/context/impl/ItemFactoryImpl.hpp new file mode 100644 index 00000000..a125b101 --- /dev/null +++ b/include/xqilla/context/impl/ItemFactoryImpl.hpp @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ItemFactoryImpl.hpp,v 1.12 2006/11/01 16:37:12 jpcs Exp $ + */ + +#if !defined(AFXQ_ITEMFACTORYIMPL_H__D608C994_F090_4206_9473_81F3D7350510__INCLUDED_) +#define AFXQ_ITEMFACTORYIMPL_H__D608C994_F090_4206_9473_81F3D7350510__INCLUDED_ + +#include + +#include +#include + +#include +#include + +class XQILLA_API ItemFactoryImpl : public ItemFactory +{ +public: + ItemFactoryImpl(const DocumentCache* dc, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr); + virtual ~ItemFactoryImpl(); + + /* @name Node factory methods */ + + virtual Node::Ptr cloneNode(const Node::Ptr node, const DynamicContext *context) const; + virtual Node::Ptr createTextNode(const XMLCh *value, const DynamicContext *context) const; + virtual Node::Ptr createCommentNode(const XMLCh *value, const DynamicContext *context) const; + virtual Node::Ptr createPINode(const XMLCh *name, const XMLCh *value, const DynamicContext *context) const; + virtual Node::Ptr createAttributeNode(const XMLCh *uri, const XMLCh *prefix, const XMLCh *name, + const XMLCh *value, const DynamicContext *context) const; + virtual Node::Ptr createElementNode(const XMLCh *uri, const XMLCh *prefix, const XMLCh *name, + const std::vector &attrList, const std::vector &childList, + const DynamicContext *context) const; + virtual Node::Ptr createDocumentNode(const std::vector &childList, const DynamicContext *context) const; + virtual const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* createNamespaceNode(const XMLCh* prefix, const XMLCh* uri, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* parentNode, const DynamicContext *context) const; + + /* @name Atomic type factory methods */ + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex(const XMLCh* typeURI, const XMLCh* typeName, bool &isPrimitive) const; + virtual AnyAtomicType::Ptr createDerivedFromAtomicType(AnyAtomicType::AtomicObjectType typeIndex, const XMLCh* value, + const DynamicContext* context); + virtual AnyAtomicType::Ptr createDerivedFromAtomicType(AnyAtomicType::AtomicObjectType typeIndex, const XMLCh* typeURI, + const XMLCh* typeName, const XMLCh* value, const DynamicContext* context); + virtual AnyAtomicType::Ptr createDerivedFromAtomicType(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context); + + /* @name Number factory methods */ + + virtual ATDoubleOrDerived::Ptr createDouble(const MAPM value, const DynamicContext* context); + virtual ATDoubleOrDerived::Ptr createDouble(const XMLCh* value, const DynamicContext* context); + virtual ATDoubleOrDerived::Ptr createDoubleOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const MAPM value, const DynamicContext* context); + virtual ATDoubleOrDerived::Ptr createDoubleOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context); + + virtual ATFloatOrDerived::Ptr createFloat(const MAPM value, const DynamicContext* context); + virtual ATFloatOrDerived::Ptr createFloat(const XMLCh* value, const DynamicContext* context); + virtual ATFloatOrDerived::Ptr createFloatOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const MAPM value, const DynamicContext* context); + virtual ATFloatOrDerived::Ptr createFloatOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context); + + virtual ATDecimalOrDerived::Ptr createInteger(const int value, const DynamicContext* context); + virtual ATDecimalOrDerived::Ptr createInteger(const MAPM value, const DynamicContext* context); + virtual ATDecimalOrDerived::Ptr createInteger(const XMLCh* value, const DynamicContext* context); + virtual ATDecimalOrDerived::Ptr createNonNegativeInteger(const MAPM value, const DynamicContext* context); + + virtual ATDecimalOrDerived::Ptr createDecimal(const MAPM value, const DynamicContext* context); + virtual ATDecimalOrDerived::Ptr createDecimal(const XMLCh* value, const DynamicContext* context); + virtual ATDecimalOrDerived::Ptr createDecimalOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const MAPM value, const DynamicContext* context); + virtual ATDecimalOrDerived::Ptr createDecimalOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context); + + /* @name Date / time factory methods */ + + virtual ATDateOrDerived::Ptr createDate(const XMLCh* value, const DynamicContext* context); + virtual ATDateOrDerived::Ptr createDateOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context); + + virtual ATDateTimeOrDerived::Ptr createDateTime(const XMLCh* value, const DynamicContext* context); + virtual ATDateTimeOrDerived::Ptr createDateTimeOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context); + + virtual ATTimeOrDerived::Ptr createTime(const XMLCh* value, const DynamicContext* context); + virtual ATTimeOrDerived::Ptr createTimeOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context); + + virtual ATGDayOrDerived::Ptr createGDayOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context); + virtual ATGMonthDayOrDerived::Ptr createGMonthDayOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context); + virtual ATGMonthOrDerived::Ptr createGMonthOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context); + virtual ATGYearMonthOrDerived::Ptr createGYearMonthOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context); + virtual ATGYearOrDerived::Ptr createGYearOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context); + + virtual ATDurationOrDerived::Ptr createDayTimeDuration(const XMLCh* value, const DynamicContext* context); + virtual ATDurationOrDerived::Ptr createDayTimeDuration(const MAPM &seconds, const DynamicContext* context); + virtual ATDurationOrDerived::Ptr createYearMonthDuration(const XMLCh* value, const DynamicContext* context); + virtual ATDurationOrDerived::Ptr createYearMonthDuration(const MAPM &months, const DynamicContext* context); + virtual ATDurationOrDerived::Ptr createDurationOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context); + + /* @name Other factory methods */ + + virtual ATStringOrDerived::Ptr createString(const XMLCh* value, const DynamicContext* context); + virtual ATStringOrDerived::Ptr createStringOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context); + + virtual ATUntypedAtomic::Ptr createUntypedAtomic(const XMLCh* value, const DynamicContext* context); + + virtual ATBooleanOrDerived::Ptr createBoolean(bool value, const DynamicContext* context); + virtual ATBooleanOrDerived::Ptr createBoolean(const XMLCh* value, const DynamicContext* context); + virtual ATBooleanOrDerived::Ptr createBooleanOrDerived(const XMLCh* typeURI, const XMLCh* typeName, bool value, const DynamicContext* context); + virtual ATBooleanOrDerived::Ptr createBooleanOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context); + + virtual ATAnyURIOrDerived::Ptr createAnyURI(const XMLCh* value, const DynamicContext* context); + + virtual ATQNameOrDerived::Ptr createQName(const XMLCh* uri, const XMLCh* prefix, const XMLCh* name, const DynamicContext* context); + virtual ATQNameOrDerived::Ptr createQNameOrDerived(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* uri, const XMLCh* prefix, + const XMLCh* name, const DynamicContext* context); + + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *getOutputDocument(const DynamicContext *context) const; +private: + + DatatypeLookup datatypeLookup_; + mutable NodeImpl::Ptr outputDocument_; + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr_; +}; + +#endif diff --git a/include/xqilla/context/impl/VarHashEntryImpl.hpp b/include/xqilla/context/impl/VarHashEntryImpl.hpp new file mode 100644 index 00000000..8b2ee55e --- /dev/null +++ b/include/xqilla/context/impl/VarHashEntryImpl.hpp @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: VarHashEntryImpl.hpp,v 1.7 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _VARHASHENTRYIMPL_HPP +#define _VARHASHENTRYIMPL_HPP + +#include +#include +#include + +/** The class that stores the values of the variables. */ +template +class VarHashEntryImpl : public VarHashEntry +{ +public: + /// Meaningfull constructor + VarHashEntryImpl(const TYPE &value); + + /** Gets the value of the variable (overload in derived classes for + special behaviour) */ + virtual const TYPE &getValue() const; + + /** Sets the value of the variable (overload in derived classes for + special behaviour) */ + virtual void setValue(const TYPE &value); + +protected: + TYPE _value; +}; + +template +VarHashEntryImpl::VarHashEntryImpl(const TYPE &value) + : _value(value) +{ +} + +template +const TYPE &VarHashEntryImpl::getValue() const +{ + return _value; +} + +template +void VarHashEntryImpl::setValue(const TYPE &value) +{ + _value = value; +} + +#endif + diff --git a/include/xqilla/context/impl/VariableStoreTemplate.hpp b/include/xqilla/context/impl/VariableStoreTemplate.hpp new file mode 100644 index 00000000..e6b2660c --- /dev/null +++ b/include/xqilla/context/impl/VariableStoreTemplate.hpp @@ -0,0 +1,264 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: VariableStoreTemplate.hpp,v 1.8 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _VARIABLESTORETEMPLATE_HPP +#define _VARIABLESTORETEMPLATE_HPP + +#include + +#include +#include + +#include +#include +#include +#include +#include + +template class VarHashEntry; +class XPath2MemoryManager; + +/** This is the wrapper class for the variable store, which implements the + lookup and scoping of simple variables. */ +template +class VariableStoreTemplate +{ +public: + typedef Scope MyScope; + + VariableStoreTemplate(XPath2MemoryManager *memMgr); + /** default destructor */ + ~VariableStoreTemplate(); + + void clear(); + + void addScope(typename MyScope::Type type); + void addScope(MyScope *scope); + /** Removes the top level scope from the store. To be called at the end of methods to + implement scoping. */ + void removeScope(); + /** Removes the top level scope from the store, and returns it. The scope must have + release called on it, otherwise it will leak memory. */ + MyScope *popScope(); + + void setCurrentScope(MyScope *scope); + + /** Declares and/or sets a variable in the global scope. */ + void setGlobalVar(const XMLCh* namespaceURI, const XMLCh* name, const TYPE &value); + + /** Deletes a variable from the global scope. */ + void delGlobalVar(const XMLCh* namespaceURI, const XMLCh* name); + + /** Gets a variable from the global scope */ + VarHashEntry* getGlobalVar(const XMLCh* namespaceURI, const XMLCh* name) const; + + /** Declare a var in the top level scope (A full set of + these namespaceURI/name pair methods should be made) */ + void declareVar(const XMLCh* namespaceURI, const XMLCh* name, const TYPE &value); + + /** Declares and/or sets a variable in the top level scope. */ + void setVar(const XMLCh* namespaceURI, const XMLCh* name, const TYPE &value); + + /** Looks up the value of a variable in the current scope, using ident as an + qname. Returns the VarHashEntry for the variable, or null if it doesn't + exist*/ + VarHashEntry* getVar(const XMLCh* namespaceURI, const XMLCh* name) const; + + /** Deletes a variable from the current scope. */ + void delVar(const XMLCh* namespaceURI, const XMLCh* name); + + const MyScope *getCurrentScope() const { return _current; } + MyScope *getCurrentScope() { return _current; } + const MyScope *getGlobalScope() const { return _global; } + const XMLCh *lookUpNamespace(unsigned int nsID) const { return _uriPool.getValueForId(nsID); } + +private: + /** find routine which returns the scope in the hash table which contains the + identifiers, or the current/global one if it can't be found. */ + MyScope* find(unsigned int nsID, const XMLCh* name) const; + + XERCES_CPP_NAMESPACE_QUALIFIER XMLStringPool _uriPool; + XPath2MemoryManager* _memMgr; + MyScope *_global, *_current; +}; + +template +VariableStoreTemplate::VariableStoreTemplate(XPath2MemoryManager* memMgr) + : _uriPool(17, memMgr) +{ + _memMgr=memMgr; + _global=new (_memMgr) MyScope(_memMgr, MyScope::GLOBAL_SCOPE); + _current=NULL; +} + +template +VariableStoreTemplate::~VariableStoreTemplate() +{ + clear(); + delete _global; +} + +template +void VariableStoreTemplate::clear() +{ + // Remove all the scopes + while(_current) { + removeScope(); + } + // Clear the global scope + _global->clear(); +} + +template +void VariableStoreTemplate::addScope(typename MyScope::Type type) +{ + addScope(new (_memMgr) MyScope(_memMgr, type)); +} + +template +void VariableStoreTemplate::addScope(MyScope *scope) +{ + scope->setNext(_current); + setCurrentScope(scope); +} + +template +void VariableStoreTemplate::setCurrentScope(MyScope *scope) +{ + _current = scope; +} + +template +void VariableStoreTemplate::removeScope() +{ + delete popScope(); +} + +template +typename VariableStoreTemplate::MyScope *VariableStoreTemplate::popScope() +{ + assert( _current!=NULL ); + + MyScope *result = _current; + _current = _current->getNext(); + return result; +} + +template +void VariableStoreTemplate::setGlobalVar(const XMLCh* namespaceURI, + const XMLCh* name, + const TYPE &value) +{ + if(!_uriPool.exists(namespaceURI)) + namespaceURI=_memMgr->getPooledString(namespaceURI); + unsigned int nsID=_uriPool.addOrFind(namespaceURI); + VarHashEntry* result=_global->get(nsID, name); + if(result) + result->setValue(value); + else + _global->put(nsID, name, new (_memMgr) VarHashEntryImpl(value)); +} + +template +void VariableStoreTemplate::setVar(const XMLCh* namespaceURI, + const XMLCh* name, + const TYPE &value) +{ + if(!_uriPool.exists(namespaceURI)) + namespaceURI=_memMgr->getPooledString(namespaceURI); + unsigned int nsID=_uriPool.addOrFind(namespaceURI); + MyScope* scope=find(nsID, name); + VarHashEntry* result = scope->get(nsID, name); + + if(result) + result->setValue(value); + else + scope->put(nsID, name, new (_memMgr) VarHashEntryImpl(value)); +} + +template +void VariableStoreTemplate::declareVar(const XMLCh* namespaceURI, + const XMLCh* name, + const TYPE &value) +{ + if(!_uriPool.exists(namespaceURI)) + namespaceURI=_memMgr->getPooledString(namespaceURI); + unsigned int nsID=_uriPool.addOrFind(namespaceURI); + _current->put(nsID, name, new (_memMgr) VarHashEntryImpl(value)); +} + +/** Returns a null VarHashEntry if unsuccessful */ +template +VarHashEntry* VariableStoreTemplate::getVar(const XMLCh* namespaceURI, + const XMLCh* name) const +{ + unsigned int nsID=_uriPool.getId(namespaceURI); + // if the namespace is not in the map, the variable is not there neither + if(nsID!=0) + return find(nsID, name)->get(nsID, name); + return NULL; +} + +template +VarHashEntry* VariableStoreTemplate::getGlobalVar(const XMLCh* namespaceURI, + const XMLCh* name) const +{ + unsigned int nsID=_uriPool.getId(namespaceURI); + // if the namespace is not in the map, the variable is not there neither + if(nsID!=0) + return _global->get(nsID, name); + return 0; +} + +template +void VariableStoreTemplate::delVar( const XMLCh* namespaceURI, const XMLCh* name) +{ + unsigned int nsID=_uriPool.getId(namespaceURI); + // if the namespace is not in the map, the variable is not there neither + if(nsID!=0) + find(nsID, name)->remove(nsID, name); +} + +template +void VariableStoreTemplate::delGlobalVar( const XMLCh* namespaceURI, const XMLCh* name) +{ + unsigned int nsID=_uriPool.getId(namespaceURI); + // if the namespace is not in the map, the variable is not there neither + if(nsID!=0) + _global->remove(nsID, name); +} + +template +typename VariableStoreTemplate::MyScope* VariableStoreTemplate::find(unsigned int nsID, const XMLCh* name) const +{ + // Check the local scopes + MyScope* index=_current; + while(index) { + if(index->get(nsID, name)!=NULL) + return index; + if(index->getType() == MyScope::LOCAL_SCOPE) + break; + index=index->getNext(); + } + + // Check the global scope + if(_global->get(nsID, name)!=NULL) + return _global; + + // If we can't find it anywhere, then return the top level scope. + // This lets us set it in the correct place. + // For gets, we could return any scope. + return _current==NULL?_global:_current; +} + +#endif diff --git a/include/xqilla/context/impl/XQContextImpl.hpp b/include/xqilla/context/impl/XQContextImpl.hpp new file mode 100644 index 00000000..276b759b --- /dev/null +++ b/include/xqilla/context/impl/XQContextImpl.hpp @@ -0,0 +1,469 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQContextImpl.hpp,v 1.18 2006/11/01 16:37:12 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQContextImpl.h: interface for the XQContextImpl class. +////////////////////////////////////////////////////////////////////// + +#if !defined(AFXQ_XQCONTEXTIMPL_H__D608B994_E090_4206_9473_81F3D7350410__INCLUDED_) +#define AFXQ_XQCONTEXTIMPL_H__D608B994_E090_4206_9473_81F3D7350410__INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN +class DOMNode; +class XMLGrammarPool; +XERCES_CPP_NAMESPACE_END + +class XQILLA_API XQContextImpl : public DynamicContext +{ +public: + XQContextImpl(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr = + XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager, + XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool* xmlgr = 0, + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* contextNode = 0); + ~XQContextImpl(); + + virtual DynamicContext *createModuleContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr = + XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager) const; + virtual DynamicContext *createDynamicContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr = + XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager) const; + + ////////////////////////////////////// + // XQuery Static Context Accessors // + ////////////////////////////////////// + + /** + * Overrides the inherited method, and disowns any output + * document that was created with the previous memory manager. + */ + virtual void setMemoryManager(XPath2MemoryManager *memMgr); + + /** Binds a prefix to a namespace URI */ + virtual void setNamespaceBinding(const XMLCh* prefix, const XMLCh* uri); + + /** Set the policy for boundary space */ + virtual void setPreserveBoundarySpace(bool value); + /** Get the policy for boundary space */ + virtual bool getPreserveBoundarySpace() const; + + ////////////////////////////////////// + // XQuery Dynamic Context Accessors // + ////////////////////////////////////// + + /** Set the object to be used for debugging callbacks */ + virtual void setDebugCallback(XQDebugCallback* callback); + /** Get the object to be used for debugging callbacks */ + virtual XQDebugCallback* getDebugCallback() const; + + virtual void enableDebugging(bool enable=true); + virtual bool isDebuggingEnabled() const; + + ////////////////////////////////// + // Dynamic Context Accessors // + ////////////////////////////////// + + /** Register a new reference to the document */ + virtual void incrementDocumentRefCount(const XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* document) const; + /** Register a closed reference to the document */ + virtual void decrementDocumentRefCount(const XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* document) const; + /** Retrieve a document from the cache of loaded documents */ + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* retrieveDocument(const XMLCh* uri); + /** Store a document in the cache of loaded documents */ + virtual void storeDocument(const XMLCh* uri,XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* document); + + /** Resets the dynamic context, as if it had never been used */ + virtual void clearDynamicContext(); + + /** Returns the ItemFactory for this context, which is used to create XQilla items and other objects. */ + virtual ItemFactory *getItemFactory() const; + /** Sets the ItemFactory for this context */ + virtual void setItemFactory(ItemFactory *factory); + + /** Get the context Item */ + virtual Item::Ptr getContextItem() const; + /** Set the context item to item */ + virtual void setContextItem(const Item::Ptr &item); + /** Sets the context item to an external document. + This is needed so that the DOMDocument reference counting + does not release the document that the node comes from. */ + virtual void setExternalContextNode(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node); + + /** Get the context position */ + virtual unsigned int getContextPosition() const; + /** Set the context position */ + virtual void setContextPosition(unsigned int pos); + + /** Get the context size */ + virtual unsigned int getContextSize() const; + /** Set the context size */ + virtual void setContextSize(unsigned int size); + + /** get the variable store */ + virtual VariableStore* getVariableStore(); + + /** Return the current time */ + virtual time_t getCurrentTime() const; + /** Set the current time */ + virtual void setCurrentTime(time_t newTime); + + /** Return the implicit timezone for this system.*/ + virtual ATDurationOrDerived::Ptr getImplicitTimezone() const; + /** Set the implicit timezone */ + virtual void setImplicitTimezone(const ATDurationOrDerived::Ptr &timezoneAsDuration); + + /** + Register a callback object for resolving URIs. Multiple URIResolver + objects can be registered with the DynamicContext at the same time. + The most recently added URIResolver will be called first, and if it + returns NULL, subsequent ones will be called - ending in a call to + the fallback routines. + + The DynamicContext will not + adopt this object, making the user responsible for making sure that the + URIResolver object's lifespan matches or exceeds the life of the + DynamicContext. + */ + virtual void registerURIResolver(URIResolver *resolver); + /* Resolve the given uri (and baseUri) to a DOMDocument. If the uri + is relative, the base uri is obtained from the context. */ + virtual Sequence resolveDocument(const XMLCh* uri, const LocationInfo *location); + /* Resolve the given uri (and baseUri) to a list of DOMNode objects. If + the uri is relative, the base uri is obtained from the context. */ + virtual Sequence resolveCollection(const XMLCh* uri, const LocationInfo *location); + virtual Sequence resolveDefaultCollection(); + + /** Used whenever we need to create a new document (including parsing in documents) */ + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *createNewDocument() const; + virtual void releaseDocument(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc) const; + + /** send a pair of strings to the "trace" data set */ + virtual void trace(const XMLCh* message1, const XMLCh* message2); + + ////////////////////////////////// + // Static Context Accessors // + ////////////////////////////////// + + /** Get the static type of the context item */ + virtual const StaticType &getContextItemType() const; + /** Set the static type of the context item */ + virtual void setContextItemType(const StaticType &st); + + /** Get the current XPath 1.0 compatibility mode */ + virtual bool getXPath1CompatibilityMode() const; + /** Set the current XPath 1.0 compatibility mode */ + virtual void setXPath1CompatibilityMode(bool newMode); + + /** Get the NS resolver */ + virtual const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* getNSResolver() const; + /** returns the URI that is bound in prefix in the current scope or zero + length string otherwise */ + virtual const XMLCh* getUriBoundToPrefix(const XMLCh* prefix, const LocationInfo *location) const; + /** returns the prefix that is bound in uri in the current scope or zero + length string otherwise */ + virtual const XMLCh* getPrefixBoundToUri(const XMLCh* uri) const; + /** Set the NS resolver */ + virtual void setNSResolver(const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* resolver); + + /** get the value of the default namespace for elements and types */ + virtual const XMLCh* getDefaultElementAndTypeNS() const; + /** set the value of the default namespace for elements and types */ + virtual void setDefaultElementAndTypeNS(const XMLCh* newNS); + + /** Return the default namespace for functions */ + virtual const XMLCh* getDefaultFuncNS() const; + /** Set the default namespace for functions */ + virtual void setDefaultFuncNS(const XMLCh* newNS); + + /** retrieve the repository for the grammars **/ + virtual const DocumentCache* getDocumentCache() const; + /** sets the repository for the grammars **/ + virtual void setDocumentCache(DocumentCache* docCache); + /** returns the validated node */ + virtual Node::Ptr validate(const Node::Ptr &node, DocumentCache::ValidationMode valMode); + /** returns true if the type represented by uri:typename is an instance of uriToCheck:typeNameToCheck + * + * ie: to check + * xs:integer instance of xs:decimal, + * call + * isTypeOrDerivedFromType("xs", "integer", "xs", "decimal") + * (except of course, call with URIs, not prefixes!) + */ + virtual bool isTypeOrDerivedFromType(const XMLCh* const uri, const XMLCh* const typeName, const XMLCh* const uriToCheck, const XMLCh* const typeNameToCheck) const; + /** + * Sets the XMLEntityResolver that is used by Xerces when it is used + * to parse documents. This affects the behaviour of XQilla whenever + * it retrieves a DTD or XML Schema grammar. + */ + virtual void setXMLEntityResolver(XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* const handler); + /** Returns the entity resolver currently set */ + virtual XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* getXMLEntityResolver() const; + + /** Register a callback object for resolving module URIs */ + virtual void setModuleResolver(ModuleResolver *resolver); + /** Returns the module resolver currently set */ + virtual ModuleResolver *getModuleResolver() const; + /* Retrieve a list of locations for the given module URI */ + virtual VectorOfStrings* resolveModuleURI(const XMLCh* uri) const; + + /** add the location for the grammar of a specific namespace **/ + virtual void addSchemaLocation(const XMLCh* uri, VectorOfStrings* locations); + + /** get the variable type store */ + virtual VariableTypeStore* getVariableTypeStore(); + + /** adds a custom function to the function table */ + virtual void addCustomFunction(FuncFactory *func); + /** returns a function with name name in the namespace represented by prefix */ + virtual ASTNode* lookUpFunction(const XMLCh* prefix, const XMLCh* name, VectorOfASTNodes& v, + const LocationInfo *location) const; + + /** Get the implementation for the specified collation */ + virtual Collation* getCollation(const XMLCh* const URI, const LocationInfo *location) const; + /** Add a collation */ + virtual void addCollation(Collation* collation); + + /** Get the default collation */ + virtual Collation* getDefaultCollation(const LocationInfo *location) const; + /** Specify which collation is the default one */ + virtual void setDefaultCollation(const XMLCh* const URI); + + /** Return the construction mode */ + virtual ConstructionMode getConstructionMode() const; + /** Set the construction mode */ + virtual void setConstructionMode(ConstructionMode newMode); + + /** Return the ordering method for node sets */ + virtual NodeSetOrdering getNodeSetOrdering() const; + /** Set the ordering method for node sets */ + virtual void setNodeSetOrdering(NodeSetOrdering newOrder); + + /** Return the base URI */ + virtual const XMLCh* getBaseURI() const; + /** Set the base URI */ + virtual void setBaseURI(const XMLCh* newURI); + + /** Return the default ordering mode for FLWOR blocks */ + virtual FLWOROrderingMode getDefaultFLWOROrderingMode() const; + /** Set the default ordering mode for FLWOR blocks */ + virtual void setDefaultFLWOROrderingMode(FLWOROrderingMode newMode); + + /** Set the policy for namespace inheritance */ + virtual void setInheritNamespaces(bool value); + /** Get the policy for namespace inheritance */ + virtual bool getInheritNamespaces() const; + + /** Set the policy for namespace copy */ + virtual void setPreserveNamespaces(bool value); + /** Get the policy for namespace copy */ + virtual bool getPreserveNamespaces() const; + + ///////////////////////////////////////// + // XQilla context specific accessors // + ///////////////////////////////////////// + + /** Get the memory manager */ + virtual XPath2MemoryManager* getMemoryManager() const; + +protected: + // The memory manager used to create this context + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* _createdWith; + + // used for managing the memory of objects inside this context + ProxyMemoryManager _internalMM; + + //////////////////////////////// + // Static Context variables // + //////////////////////////////// + + /** Static type of the context item */ + StaticType _contextItemType; + + /** XPath 1.0 compatibility mode. This value is true if rules for + * backward compatibility with XPath Version 1.0 are in effect; + * otherwise it is false */ + bool _xpath1Compatibility; + + /** In-scope namespaces. This is a set of (prefix, URI) pairs. + * The in-scope namespaces are used for resolving prefixes used + * in QNames within the expression */ + const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* _nsResolver; + + /** The original (global scope) DOMXPathNSResolver */ + const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* _globalNSResolver; + + /** Default element/type namespace. This is a namespace URI or "none". This + * namespace is used for any unprefixed QName appearing in a + * position where an element or type name is expected. */ + const XMLCh* _defaultElementNS; + + /** Default function namespace. This is a namespace URI. + * This namespace URI is used for any unprefixed QName appearing + * as the function name in a function call. */ + const XMLCh* _functionNS; + + /** In-scope schema definitions. This is a generic term for all + * the element, attribute, and type definitions that are in scope + * during processing of an expression. */ + DocumentCache* _docCache; + + /** In-scope variable types. This is a set of (QName, type) pairs. + * It defines the set of variables that have been declared and are + * available for reference within the expression. The QName + * represents the name of the variable, and the type represents its + * static data type */ + VariableTypeStore* _varTypeStore; + + /** In-scope functions. This part of the static context defines the + * set of functions that are available to be called from within an + * expression. Each function is uniquely identified by its QName and + * its arity (number of parameters). The static context maps the QName + * and arity into a function signature and a function definition. The + * function signature specifies the static types of the function + * parameters and the function result. */ + FunctionLookup* _functionTable; + + /** In-scope collations. This is a set of (URI, collation) pairs. It + * defines the names of the collations that are available for use in + * function calls that take a collation name as an argument. A collation + * may be regarded as an object that supports two functions: a function + * that given a set of strings, returns a sequence containing those strings + * in sorted order; and a function that given two strings, returns true if + * they are considered equal, and false if not. */ + std::vector > _collations; + + /** Default collation. This is a collation. This collation is used by + * string comparison functions when no explicit collation is specified. */ + const XMLCh* _defaultCollation; + + /** Construction mode. The construction mode governs the behavior of + * element constructors. If construction mode is preserve, the type + * of a constructed element node is xs:anyType, and the attributes + * and descendants of the constructed element retain their original + * types. If construction mode is strip, the type of the constructed + * element node and all its descendants is xdt:untyped, and attributes + * of the constructed element have type xdt:untypedAtomic */ + ConstructionMode _constructionMode; + + /** Ordering mode, which has the value ordered or unordered, affects + * the ordering of the result sequence returned by path expressions, + * union, intersect, and except expressions, and FLWOR expressions + * that have no order by clause. */ + NodeSetOrdering _ordering; + + /** Default ordering for empty sequences. This component controls whether an + * empty sequence is interpreted as the greatest value or as the least value + * during processing of an order by clause in a FLWOR expression, as described + * in 3.8.3 Order By and Return Clauses.] Its value may be greatest or least. */ + FLWOROrderingMode _flworOrderingMode; + + /** Boundary-space policy. This component controls the processing of boundary + * whitespace by element constructors, as described in 3.7.1.4 Whitespace + * in Element Content.] Its value may be preserve or strip. */ + bool _bPreserveBoundarySpace; + + /** Copy-namespaces mode. This component controls the namespace bindings + * that are assigned when an existing element node is copied by an element + * constructor, as described in 3.7.1 Direct Element Constructors. Its value + * consists of two parts: preserve or no-preserve, and inherit or no-inherit. */ + bool _bPreserveNamespaces, + _bInheritNamespaces; + + /** Base URI. This is an absolute URI, used when necessary in the + * resolution of relative URIs (for example, by the fn:resolve- uri + * function.) The base URI is always provided by the external environment. */ + const XMLCh* _baseURI; + + ///////////////////////////////// + // Dynamic Context Variables // + ///////////////////////////////// + + /** The context item is the item currently being processed. */ + Item::Ptr _contextItem; + + /** The context position is the position of the context item within + * the sequence of items currently being processed. */ + unsigned int _contextPosition; + + /** The context size is the number of items in the sequence of + * items currently being processed. */ + unsigned int _contextSize; + + /** In-scope variable values. This is a set of (QName, Sequence) pairs. + * It defines the set of variables that have been declared and are + * available for reference within the expression. The QName + * represents the name of the variable, and the Sequence represents its + * value */ + VariableStore* _varStore; + + /** Current date and time. This information represents an + * implementation-dependent point in time during processing of a query + * or transformation */ + time_t _currentTime; + + /** Implicit timezone. This is the timezone to be used when a date, + * time, or dateTime value that does not have a timezone is used in a + * comparison or in any other operation. This value is an instance of + * xdt:dayTimeDuration */ + ATDurationOrDerived::Ptr _implicitTimezone; + + /** For each atomic type in the in-scope type definitions, there is + * a constructor function in the in-scope functions. Constructor + * functions are discussed in 3.10.4 Constructor Functions */ + ItemFactory* _itemFactory; + + class DocRefCount { + public: + DocRefCount() : doc(0), ref_count(1), next(0) {} + + const XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc; + unsigned int ref_count; + DocRefCount *next; + }; + + DocRefCount *_firstDocRefCount; + XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf< XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument > _documentMap; + XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf< XMLCh > _uriMap; + + //////////////////////////////////////// + // XQilla Context specific variables // + //////////////////////////////////////// + + /// A stack of URIResolver pointers + std::vector > _resolvers; + ModuleResolver *_moduleResolver; + + // used for memory management in expression evaluation + XPath2MemoryManager* _memMgr; + + /////////////////////////////////// + // XQ Static Context variables // + /////////////////////////////////// + + bool m_bEnableDebugging; + + //////////////////////////////////// + // XQ Dynamic Context variables // + //////////////////////////////////// + + XQDebugCallback* m_pDebugCallback; +}; + +#endif // !defined(AFXQ_XQCONTEXTIMPL_H__D608B994_E090_4206_9473_81F3D7350410__INCLUDED_) diff --git a/include/xqilla/context/impl/XQDynamicContextImpl.hpp b/include/xqilla/context/impl/XQDynamicContextImpl.hpp new file mode 100644 index 00000000..05154a74 --- /dev/null +++ b/include/xqilla/context/impl/XQDynamicContextImpl.hpp @@ -0,0 +1,410 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQDynamicContextImpl.hpp,v 1.22 2006/11/01 16:37:12 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQDynamicContextImpl.h: proxies calls to the embedded XQStaticContext +////////////////////////////////////////////////////////////////////// + +#if !defined(AFXQ_XQDYNAMICCONTEXTIMPL_H__D608B994_E090_4206_9473_81F3D7350410__INCLUDED_) +#define AFXQ_XQDYNAMICCONTEXTIMPL_H__D608B994_E090_4206_9473_81F3D7350410__INCLUDED_ + +#include +#include +#include +#include + +class XQILLA_API XQDynamicContextImpl : public DynamicContext +{ +public: + XQDynamicContextImpl(const StaticContext *staticContext, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr); + ~XQDynamicContextImpl(); + + virtual DynamicContext *createModuleContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr = + XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager) const; + virtual DynamicContext *createDynamicContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr + = XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager) const; + + ////////////////////////////////////// + // XQuery Static Context Accessors // + ////////////////////////////////////// + + /** + * Overrides the inherited method, and disowns any output + * document that was created with the previous memory manager. + */ + virtual void setMemoryManager(XPath2MemoryManager *memMgr); + + /** Binds a prefix to a namespace URI */ + virtual void setNamespaceBinding(const XMLCh* prefix, const XMLCh* uri); + + /** Set the policy for boundary space */ + virtual void setPreserveBoundarySpace(bool value); + /** Get the policy for boundary space */ + virtual bool getPreserveBoundarySpace() const; + + ////////////////////////////////////// + // XQuery Dynamic Context Accessors // + ////////////////////////////////////// + + /** Set the object to be used for debugging callbacks */ + virtual void setDebugCallback(XQDebugCallback* callback); + /** Get the object to be used for debugging callbacks */ + virtual XQDebugCallback* getDebugCallback() const; + + virtual void enableDebugging(bool enable=true); + virtual bool isDebuggingEnabled() const; + + ////////////////////////////////// + // Dynamic Context Accessors // + ////////////////////////////////// + + virtual void incrementDocumentRefCount(const XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* document) const; + virtual void decrementDocumentRefCount(const XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* document) const; + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* retrieveDocument(const XMLCh* uri); + virtual void storeDocument(const XMLCh* uri,XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* document); + + /** Resets the dynamic context, as if it had never been used */ + virtual void clearDynamicContext(); + + /** Returns the ItemFactory for this context, which is used to create XQilla items and other objects. */ + virtual ItemFactory *getItemFactory() const; + /** Sets the ItemFactory for this context */ + virtual void setItemFactory(ItemFactory *factory); + + /** Get the context Item */ + virtual Item::Ptr getContextItem() const; + /** Set the context item to item */ + virtual void setContextItem(const Item::Ptr &item); + /** Sets the context item to an external document. + This is needed so that the DOMDocument reference counting + does not release the document that the node comes from. */ + virtual void setExternalContextNode(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node); + + /** Get the context position */ + virtual unsigned int getContextPosition() const; + /** Set the context position */ + virtual void setContextPosition(unsigned int pos); + + /** Get the context size */ + virtual unsigned int getContextSize() const; + /** Set the context size */ + virtual void setContextSize(unsigned int size); + + /** get the variable store */ + virtual VariableStore* getVariableStore(); + + /** Return the current time */ + virtual time_t getCurrentTime() const; + /** Set the current time */ + virtual void setCurrentTime(time_t newTime); + + /** Return the implicit timezone for this system.*/ + virtual ATDurationOrDerived::Ptr getImplicitTimezone() const; + /** Set the implicit timezone */ + virtual void setImplicitTimezone(const ATDurationOrDerived::Ptr &timezoneAsDuration); + + /** + Register a callback object for resolving URIs. Multiple URIResolver + objects can be registered with the DynamicContext at the same time. + The most recently added URIResolver will be called first, and if it + returns NULL, subsequent ones will be called - ending in a call to + the fallback routines. + + The DynamicContext will not + adopt this object, making the user responsible for making sure that the + URIResolver object's lifespan matches or exceeds the life of the + DynamicContext. + */ + virtual void registerURIResolver(URIResolver *resolver); + /* Resolve the given uri (and baseUri) to a DOMDocument. If the uri + is relative, the base uri is obtained from the context. */ + virtual Sequence resolveDocument(const XMLCh* uri, const LocationInfo *location); + /* Resolve the given uri (and baseUri) to a list of DOMNode objects. If + the uri is relative, the base uri is obtained from the context. */ + virtual Sequence resolveCollection(const XMLCh* uri, const LocationInfo *location); + virtual Sequence resolveDefaultCollection(); + + /** Used whenever we need to create a new document (including parsing in documents) */ + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *createNewDocument() const; + virtual void releaseDocument(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc) const; + + /** send a pair of strings to the "trace" data set */ + virtual void trace(const XMLCh* message1, const XMLCh* message2); + + ////////////////////////////////// + // Static Context Accessors // + ////////////////////////////////// + + /** Get the static type of the context item */ + virtual const StaticType &getContextItemType() const; + /** Set the static type of the context item */ + virtual void setContextItemType(const StaticType &st); + + /** Get the current XPath 1.0 compatibility mode */ + virtual bool getXPath1CompatibilityMode() const; + /** Set the current XPath 1.0 compatibility mode */ + virtual void setXPath1CompatibilityMode(bool newMode); + + /** Get the NS resolver */ + virtual const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* getNSResolver() const; + /** returns the URI that is bound in prefix in the current scope or zero + length string otherwise */ + virtual const XMLCh* getUriBoundToPrefix(const XMLCh* prefix, const LocationInfo *location) const; + /** returns the prefix that is bound in uri in the current scope or zero + length string otherwise */ + virtual const XMLCh* getPrefixBoundToUri(const XMLCh* uri) const; + /** Set the NS resolver */ + virtual void setNSResolver(const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* resolver); + + /** get the value of the default namespace for elements and types */ + virtual const XMLCh* getDefaultElementAndTypeNS() const; + /** set the value of the default namespace for elements and types */ + virtual void setDefaultElementAndTypeNS(const XMLCh* newNS); + + /** Return the default namespace for functions */ + virtual const XMLCh* getDefaultFuncNS() const; + /** Set the default namespace for functions */ + virtual void setDefaultFuncNS(const XMLCh* newNS); + + /** retrieve the repository for the grammars **/ + virtual const DocumentCache* getDocumentCache() const; + /** sets the repository for the grammars **/ + virtual void setDocumentCache(DocumentCache* docCache); + /** returns the validated node */ + virtual Node::Ptr validate(const Node::Ptr &node, DocumentCache::ValidationMode valMode); + /** returns true if the type represented by uri:typename is an instance of uriToCheck:typeNameToCheck + * + * ie: to check + * xs:integer instance of xs:decimal, + * call + * isTypeOrDerivedFromType("xs", "integer", "xs", "decimal") + * (except of course, call with URIs, not prefixes!) + */ + virtual bool isTypeOrDerivedFromType(const XMLCh* const uri, const XMLCh* const typeName, const XMLCh* const uriToCheck, const XMLCh* const typeNameToCheck) const; + /** + * Sets the XMLEntityResolver that is used by Xerces when it is used + * to parse documents. This affects the behaviour of XQilla whenever + * it retrieves a DTD or XML Schema grammar. + */ + virtual void setXMLEntityResolver(XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* const handler); + /** Returns the entity resolver currently set */ + virtual XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* getXMLEntityResolver() const; + + /** Register a callback object for resolving module URIs */ + virtual void setModuleResolver(ModuleResolver *resolver); + /** Returns the module resolver currently set */ + virtual ModuleResolver *getModuleResolver() const; + /* Retrieve a list of locations for the given module URI */ + virtual VectorOfStrings* resolveModuleURI(const XMLCh* uri) const; + + /** add the location for the grammar of a specific namespace **/ + virtual void addSchemaLocation(const XMLCh* uri, VectorOfStrings* locations); + + /** get the variable type store */ + virtual VariableTypeStore* getVariableTypeStore(); + + /** adds a custom function to the function table */ + virtual void addCustomFunction(FuncFactory *func); + /** returns a function with name name in the namespace represented by prefix */ + virtual ASTNode* lookUpFunction(const XMLCh* prefix, const XMLCh* name, VectorOfASTNodes& v, + const LocationInfo *location) const; + + /** Get the implementation for the specified collation */ + virtual Collation* getCollation(const XMLCh* const URI, const LocationInfo *location) const; + /** Add a collation */ + virtual void addCollation(Collation* collation); + + /** Get the default collation */ + virtual Collation* getDefaultCollation(const LocationInfo *location) const; + /** Specify which collation is the default one */ + virtual void setDefaultCollation(const XMLCh* const URI); + + /** Return the construction mode */ + virtual ConstructionMode getConstructionMode() const; + /** Set the construction mode */ + virtual void setConstructionMode(ConstructionMode newMode); + + /** Return the ordering method for node sets */ + virtual NodeSetOrdering getNodeSetOrdering() const; + /** Set the ordering method for node sets */ + virtual void setNodeSetOrdering(NodeSetOrdering newOrder); + + /** Return the base URI */ + virtual const XMLCh* getBaseURI() const; + /** Set the base URI */ + virtual void setBaseURI(const XMLCh* newURI); + + /** Return the default ordering mode for FLWOR blocks */ + virtual FLWOROrderingMode getDefaultFLWOROrderingMode() const; + /** Set the default ordering mode for FLWOR blocks */ + virtual void setDefaultFLWOROrderingMode(FLWOROrderingMode newMode); + + /** Set the policy for namespace inheritance */ + virtual void setInheritNamespaces(bool value); + /** Get the policy for namespace inheritance */ + virtual bool getInheritNamespaces() const; + + /** Set the policy for namespace copy */ + virtual void setPreserveNamespaces(bool value); + /** Get the policy for namespace copy */ + virtual bool getPreserveNamespaces() const; + + ///////////////////////////////////////// + // XQilla context specific accessors // + ///////////////////////////////////////// + + /** Get the memory manager */ + virtual XPath2MemoryManager* getMemoryManager() const; + +protected: + const StaticContext *_staticContext; + + // The memory manager used to create this context + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* _createdWith; + + // used for managing the memory of objects inside this context + ProxyMemoryManager _internalMM; + + /** In-scope namespaces. This is a set of (prefix, URI) pairs. + * The in-scope namespaces are used for resolving prefixes used + * in QNames within the expression + * THIS OUGHT TO BE IN THE STATIC CONTEXT - jpcs */ + const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* _nsResolver; + + /** Default collation. This is a collation. This collation is used by + * string comparison functions when no explicit collation is specified. + * THIS OUGHT TO BE IN THE STATIC CONTEXT - jpcs */ + const XMLCh* _defaultCollation; + + /** Default element/type namespace. This is a namespace URI or "none". This + * namespace is used for any unprefixed QName appearing in a + * position where an element or type name is expected. + * THIS OUGHT TO BE IN THE STATIC CONTEXT - jpcs */ + const XMLCh* _defaultElementNS; + + /** The context item is the item currently being processed. */ + Item::Ptr _contextItem; + + /** The context position is the position of the context item within + * the sequence of items currently being processed. */ + unsigned int _contextPosition; + + /** The context size is the number of items in the sequence of + * items currently being processed. */ + unsigned int _contextSize; + + /** In-scope variable values. This is a set of (QName, Sequence) pairs. + * It defines the set of variables that have been declared and are + * available for reference within the expression. The QName + * represents the name of the variable, and the Sequence represents its + * value */ + VariableStore* _varStore; + + /** Current date and time. This information represents an + * implementation-dependent point in time during processing of a query + * or transformation */ + time_t _currentTime; + + /** Implicit timezone. This is the timezone to be used when a date, + * time, or dateTime value that does not have a timezone is used in a + * comparison or in any other operation. This value is an instance of + * xdt:dayTimeDuration */ + ATDurationOrDerived::Ptr _implicitTimezone; + + /** For each atomic type in the in-scope type definitions, there is + * a constructor function in the in-scope functions. Constructor + * functions are discussed in 3.10.4 Constructor Functions */ + ItemFactory* _itemFactory; + + /// A stack of URIResolver pointers + std::vector > _resolvers; + + /** Contains the XMLGrammarPool of the StaticContext, and is used to + * load xml documents for resolveCollection and resolveDocument */ + DocumentCache* _docCache; + + class DocRefCount { + public: + DocRefCount() : doc(0), ref_count(1), next(0) {} + + const XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc; + unsigned int ref_count; + DocRefCount *next; + }; + + DocRefCount *_firstDocRefCount; + XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf< XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument > _documentMap; + XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf< XMLCh > _uriMap; + + // used for memory management + XPath2MemoryManager* _memMgr; + + ///////////////////////////////////////// + // XQuery dynamic context variables // + ///////////////////////////////////////// + + bool m_bEnableDebugging; + + XQDebugCallback* m_pDebugCallback; +}; + + +inline void XQDynamicContextImpl::setContextItemType(const StaticType &) +{ XQThrow2(ContextException,X("XQDynamicContextImpl"), X("You cannot change the static context when using a proxying dynamic context")); } +inline void XQDynamicContextImpl::setXPath1CompatibilityMode(bool newMode) +{ XQThrow2(ContextException,X("XQDynamicContextImpl"), X("You cannot change the static context when using a proxying dynamic context")); } +inline void XQDynamicContextImpl::setDefaultFuncNS(const XMLCh* newNS) +{ XQThrow2(ContextException,X("XQDynamicContextImpl"), X("You cannot change the static context when using a proxying dynamic context")); } +inline void XQDynamicContextImpl::setBaseURI(const XMLCh* newURI) +{ XQThrow2(ContextException,X("XQDynamicContextImpl"), X("You cannot change the static context when using a proxying dynamic context")); } +inline void XQDynamicContextImpl::addCustomFunction(FuncFactory *func) +{ XQThrow2(ContextException,X("XQDynamicContextImpl"), X("You cannot change the static context when using a proxying dynamic context")); } +inline void XQDynamicContextImpl::addCollation(Collation* collation) +{ XQThrow2(ContextException,X("XQDynamicContextImpl"), X("You cannot change the static context when using a proxying dynamic context")); } +inline void XQDynamicContextImpl::addSchemaLocation(const XMLCh* uri, VectorOfStrings* locations) +{ XQThrow2(ContextException,X("XQDynamicContextImpl"), X("You cannot change the static context when using a proxying dynamic context")); } +inline VariableTypeStore* XQDynamicContextImpl::getVariableTypeStore() +{ XQThrow2(ContextException,X("XQDynamicContextImpl"), X("You cannot change the static context when using a proxying dynamic context")); return 0; } +inline void XQDynamicContextImpl::setConstructionMode(StaticContext::ConstructionMode newMode) +{ XQThrow2(ContextException,X("XQDynamicContextImpl"), X("You cannot change the static context when using a proxying dynamic context")); } +inline void XQDynamicContextImpl::setPreserveBoundarySpace(bool value) +{ XQThrow2(ContextException,X("XQDynamicContextImpl"), X("You cannot change the static context when using a proxying dynamic context")); } +inline void XQDynamicContextImpl::setDefaultFLWOROrderingMode(StaticContext::FLWOROrderingMode newMode) +{ XQThrow2(ContextException,X("XQDynamicContextImpl"), X("You cannot change the static context when using a proxying dynamic context")); } +inline void XQDynamicContextImpl::setInheritNamespaces(bool value) +{ XQThrow2(ContextException,X("XQDynamicContextImpl"), X("You cannot change the static context when using a proxying dynamic context")); } +inline void XQDynamicContextImpl::setPreserveNamespaces(bool value) +{ XQThrow2(ContextException,X("XQDynamicContextImpl"), X("You cannot change the static context when using a proxying dynamic context")); } +inline void XQDynamicContextImpl::setNodeSetOrdering(NodeSetOrdering newOrder) +{ XQThrow2(ContextException,X("XQDynamicContextImpl"), X("You cannot change the static context when using a proxying dynamic context")); } +inline void XQDynamicContextImpl::setModuleResolver(ModuleResolver *resolver) +{ XQThrow2(ContextException,X("XQDynamicContextImpl"), X("You cannot change the static context when using a proxying dynamic context")); } + +inline const StaticType &XQDynamicContextImpl::getContextItemType() const { XQThrow2(ContextException,X("XQDynamicContextImpl"), X("The static context is not available from a proxying dynamic context")); } +inline const XMLCh* XQDynamicContextImpl::getDefaultFuncNS() const { XQThrow2(ContextException,X("XQDynamicContextImpl"), X("The static context is not available from a proxying dynamic context")); } +inline StaticContext::NodeSetOrdering XQDynamicContextImpl::getNodeSetOrdering() const { XQThrow2(ContextException,X("XQDynamicContextImpl"), X("The static context is not available from a proxying dynamic context")); } +inline ModuleResolver * XQDynamicContextImpl::getModuleResolver() const { XQThrow2(ContextException,X("XQDynamicContextImpl"), X("The static context is not available from a proxying dynamic context")); } +inline ASTNode* XQDynamicContextImpl::lookUpFunction(const XMLCh* prefix, const XMLCh* name, VectorOfASTNodes& v, const LocationInfo *location) const { XQThrow2(ContextException,X("XQDynamicContextImpl"), X("The static context is not available from a proxying dynamic context")); } +inline StaticContext::FLWOROrderingMode XQDynamicContextImpl::getDefaultFLWOROrderingMode() const { XQThrow2(ContextException,X("XQDynamicContextImpl"), X("The static context is not available from a proxying dynamic context")); } +inline bool XQDynamicContextImpl::getXPath1CompatibilityMode() const { XQThrow2(ContextException,X("XQDynamicContextImpl"), X("The static context is not available from a proxying dynamic context")); } +inline bool XQDynamicContextImpl::getPreserveBoundarySpace() const { XQThrow2(ContextException,X("XQDynamicContextImpl"), X("The static context is not available from a proxying dynamic context")); } + + +inline const XMLCh* XQDynamicContextImpl::getBaseURI() const { return _staticContext->getBaseURI(); } +inline Collation* XQDynamicContextImpl::getCollation(const XMLCh* URI, const LocationInfo *location) const { return _staticContext->getCollation(URI, location); } +inline bool XQDynamicContextImpl::isTypeOrDerivedFromType(const XMLCh* uri, const XMLCh* typeName, const XMLCh* uriToCheck, const XMLCh* typeNameToCheck) const { return _staticContext->isTypeOrDerivedFromType(uri, typeName, uriToCheck, typeNameToCheck); } +inline bool XQDynamicContextImpl::getInheritNamespaces() const { return _staticContext->getInheritNamespaces(); } +inline bool XQDynamicContextImpl::getPreserveNamespaces() const { return _staticContext->getPreserveNamespaces(); } +inline StaticContext::ConstructionMode XQDynamicContextImpl::getConstructionMode() const { return _staticContext->getConstructionMode(); } + +#endif // !defined(AFXQ_XQDYNAMICCONTEXTIMPL_H__D608B994_E090_4206_9473_81F3D7350410__INCLUDED_) diff --git a/include/xqilla/context/impl/XQRemoteDebugger.hpp b/include/xqilla/context/impl/XQRemoteDebugger.hpp new file mode 100644 index 00000000..09f11980 --- /dev/null +++ b/include/xqilla/context/impl/XQRemoteDebugger.hpp @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQRemoteDebugger.hpp,v 1.8 2006/11/01 16:37:12 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQRemoteDebugger.h: interface for the XQRemoteDebugger class. +////////////////////////////////////////////////////////////////////// + +#if !defined(AFXQ_XQREMOTEDEBUGGER_H__972A3595_1779_4CAA_8539_35DD002362DB__INCLUDED_) +#define AFXQ_XQREMOTEDEBUGGER_H__972A3595_1779_4CAA_8539_35DD002362DB__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include +#include +#include +#include +#include +#include +#include +#include + +class XPath2MemoryManager; +class DynamicContext; + +class XQILLA_API XQRemoteDebugger : public XQDebugCallback +{ +public: + XQRemoteDebugger(const XMLCh* lpchHostName, XPath2MemoryManager* memMgr); + virtual ~XQRemoteDebugger(); + + virtual void IsBreakPointHit(DynamicContext* context, const XMLCh* file, unsigned int nLine); + virtual void EnterFunction(DynamicContext* context, const XMLCh* file, const XMLCh* fnName, unsigned int nLine, unsigned int nColumn); + virtual void ExitFunction(DynamicContext* context, const XMLCh* fnName); + virtual void ReportClonedNode(DynamicContext* context, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* original, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* clone); + virtual void ReportResult(DynamicContext* context, const XMLCh* file, unsigned int nLine, unsigned int nColumn, Sequence& result); + virtual void ReportFirstError(DynamicContext* context, const XMLCh* error, const XMLCh* file, unsigned int nLine); + virtual void NotifyQueryBegin(DynamicContext* context, const XMLCh* query); + virtual void NotifyQueryEnd(DynamicContext* context, Sequence& result); + + static const XMLCh g_szHandshake[]; + static const XMLCh g_szBreakpoint[]; + static const XMLCh g_szEnterFunction[]; + static const XMLCh g_szExitFunction[]; + static const XMLCh g_szError[]; + static const XMLCh g_szQueryText[]; + static const XMLCh g_szResult[]; + static const XMLCh g_szVariables[]; + static const XMLCh g_szExpression[]; + + static const XMLCh g_szFile[]; + static const XMLCh g_szLine[]; + static const XMLCh g_szColumn[]; + static const XMLCh g_szFunction[]; + static const XMLCh g_szSessionId[]; + static const XMLCh g_szQuit[]; + static const XMLCh g_szMessage[]; + static const XMLCh g_szText[]; + +protected: + void SendNotification(DynamicContext* context, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer& command, const char* postData=NULL); + void Encode(const XMLCh* data, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer& buffer); + void SerializeItem(DynamicContext* context, const Item::Ptr item, bool bAddBackMapInfo); + void SerializeSequence(DynamicContext* context, Sequence& seq, bool bAddBackMapInfo); + void SerializeNode(DynamicContext *context, const Node::Ptr &node, bool bAddBackMapInfo); + + XERCES_CPP_NAMESPACE_QUALIFIER XMLStringPool m_filePool; + XERCES_CPP_NAMESPACE_QUALIFIER ValueHashTableOf* m_backMappingInfo; + + const XMLCh* m_szHostName, *m_szSessionId; + bool m_bEnableComm; + const XMLCh* m_szLastFileSeen; + unsigned int m_nLastLineSeen; + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer m_urlBuffer; + XERCES_CPP_NAMESPACE_QUALIFIER MemBufFormatTarget m_messageBuffer; + XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter m_messageFormatter; + + XPath2MemoryManager* m_pMemMgr; +}; + +#endif // !defined(AFXQ_XQREMOTEDEBUGGER_H__972A3595_1779_4CAA_8539_35DD002362DB__INCLUDED_) diff --git a/include/xqilla/dom-api/XPath2Result.hpp b/include/xqilla/dom-api/XPath2Result.hpp new file mode 100644 index 00000000..f8809525 --- /dev/null +++ b/include/xqilla/dom-api/XPath2Result.hpp @@ -0,0 +1,212 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XPath2Result.hpp,v 1.10 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef __XPATH2RESULT_HPP +#define __XPATH2RESULT_HPP + +#include + +#include +#include +#include +#include + +/** + * The XPathResult2 interface represents the result of the evaluation of an XPath + * 2.0 expression within the context of a particular node. Since evaluation of an + * XPath 2.0 expression can result in various result types, this object makes it + * possible to discover and manipulate the type and value of the result. + * @since DOM Level 3 + */ +class XQILLA_API XPath2Result +{ +public: + /** @name Destructor */ + //@{ + /** + * Destructor + */ + virtual ~XPath2Result() {}; + //@} + + /** @name Public Constants */ + //@{ + /** + *

FIRST_RESULT + *
The result is a sequence as defined by XPath 2.0 and will be accessed + * as a single current value or there will be no current value if the sequence + * is empty. Document modification does not invalidate the value, but may mean + * that the result no longer corresponds to the current document. This is a + * convenience that permits optimization since the implementation can stop once + * the first item in the resulting sequence has been found. If there is more + * than one item in the actual result, the single item returned might not be + * the first in document order. + *

ITERATOR_RESULT + *
The result is a sequence as defined by XPath 2.0 that will be accessed + * iteratively. Document modification invalidates the iteration. + *

SNAPSHOT_RESULT + *
The result is a sequence as defined by XPath 2.0 that will be accessed + * as a snapshot list of values. Document modification does not invalidate the + * snapshot but may mean that reevaluation would not yield the same snapshot + * and any items in the snapshot may have been altered, moved, or removed from + * the document. + */ + enum ResultType { + FIRST_RESULT = 100, + ITERATOR_RESULT = 101, + SNAPSHOT_RESULT = 102 + }; + //@} + + /** @name Functions introduced in DOM Level 3 */ + //@{ + + /** + * Returns the result type of this result + * @return ResultType + * A code representing the type of this result, as defined by the type constants. + */ + virtual ResultType getResultType() const = 0; + + /** + * Returns true if the result has a current result and the value is a node. + * @return isNode of type boolean, readonly + */ + virtual bool isNode() const = 0; + + /** + * Returns the DOM type info of the current result node or value. + * @return typeInfo of type TypeInfo, readonly + */ + virtual const XERCES_CPP_NAMESPACE_QUALIFIER DOMTypeInfo *getTypeInfo() const = 0; + + /** + * Conversion of the current result to double. If the native double type of the + * DOM binding does not directly support the exact IEEE 754 result of the XPath + * expression, then it is up to the definition of the binding to specify how the + * XPath number is converted to the native binding number. + * @return asDouble of type double, readonly + * @exception XPathException + * TYPE_ERR: raised if current result cannot be properly converted to double. + * @exception DOMException + * INVALID_STATE_ERR: There is no current result in the result. + */ + virtual double asDouble() const = 0; + + /** + * Conversion of the current result to int. + * @return asInt of type int, readonly + * @exception XPathException + * TYPE_ERR: raised if current result cannot be properly converted to int. + * @exception DOMException + * INVALID_STATE_ERR: There is no current result in the result. + */ + virtual int asInt() const = 0; + + /** + * Conversion of the current result to string. + * @return asString of type DOMString, readonly + * @exception XPathException + * TYPE_ERR: raised if current result cannot be properly converted to string. + * @exception DOMException + * INVALID_STATE_ERR: There is no current result in the result. + */ + virtual const XMLCh* asString() const = 0; + + /** + * Conversion of the current result to boolean. + * @return asBoolean of type boolean, readonly + * @exception XPathException + * TYPE_ERR: raised if cannot be properly converted to boolean. + * @exception DOMException + * INVALID_STATE_ERR: There is no current result in the result. + */ + virtual bool asBoolean() const = 0; + + /** + * Retrieve the current node value. + * @return asNode of type Node, readonly + * @exception XPathException + * TYPE_ERR: raised if current result is not a node. + * @exception DOMException + * INVALID_STATE_ERR: There is no current result in the result. + */ + virtual const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* asNode() const = 0; + + /** + * Signifies that the iterator has become invalid. + * @return invalidIteratorState of type boolean, readonly + */ + virtual bool getInvalidIteratorState() const = 0; + + /** + * The number of items in the result snapshot. Valid values for snapshotItem + * indices are 0 to snapshotLength-1 inclusive. + * @return snapshotLength of type unsigned long, readonly + * @exception XPathException + * TYPE_ERR: raised if resultType is not SNAPSHOT_RESULT. + */ + virtual unsigned long getSnapshotLength() const = 0; + + /** + * Iterates and returns true if the current result is the next item from the + * sequence or false if there are no more items. + * @return boolean True if the current result is the next item from the sequence + * or false if there are no more items. + * @exception XPathException + * TYPE_ERR: raised if resultType is not ITERATOR_RESULT. + * @exception DOMException + * INVALID_STATE_ERR: The document has been mutated since the result was returned. + */ + virtual bool iterateNext() = 0; + + /** + * Sets the current result to the indexth item in the snapshot collection. If + * index is greater than or equal to the number of items in the list, this method + * returns false. Unlike the iterator result, the snapshot does not become + * invalid, but may not correspond to the current document if it is mutated. + * @param index of type unsigned long - Index into the snapshot collection. + * @return boolean True if the current result is the next item from the sequence + * or false if there are no more items. + * @exception XPathException + * TYPE_ERR: raised if resultType is not SNAPSHOT_RESULT. + */ + virtual bool snapshotItem(unsigned long index) = 0; + //@} + + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this object (and its associated children) is no longer in use + * and that the implementation may relinquish any resources associated with it and + * its associated children. + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + //@} + +protected: + /** @name Hidden constructors */ + //@{ + XPath2Result() {}; + //@} +private: + /** @name Unimplemented constructors and operators */ + //@{ + XPath2Result(const XPath2Result &); + XPath2Result &operator=(const XPath2Result &); + //@} +}; + +#endif diff --git a/include/xqilla/dom-api/XQillaExpression.hpp b/include/xqilla/dom-api/XQillaExpression.hpp new file mode 100644 index 00000000..4dc44c75 --- /dev/null +++ b/include/xqilla/dom-api/XQillaExpression.hpp @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQillaExpression.hpp,v 1.6 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef __XQILLAEXPRESSION_HPP +#define __XQILLAEXPRESSION_HPP + +#include + +#include +#include +#include +#include +#include +#include + + +class DynamicContext; + +/** + * The XQillaExpression interface extends the DOMXPathExpression interface, + * providing the ability to release the object. The evaluate method will always return an object of type + * XPath2Result + * @since DOM Level 3 + */ +class XQILLA_API XQillaExpression: public XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathExpression +{ +public: + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~XQillaExpression() {} + //@} + + // ----------------------------------------------------------------------- + // Virtual XQillaExpression interface + // ----------------------------------------------------------------------- + /** + * Evaluates this XPath expression and returns a result. + * @param contextNode of type DOMNode The context is context + * node for the evaluation of this XPath expression. + * If the XPathEvaluator was obtained by casting the Document then this must + * be owned by the same document and must be a DOMDocument, DOMElement, + * DOMAttribute, DOMText, DOMCDATASection, + * DOMComment, DOMProcessingInstruction, or + * XPathNamespace. If the context node is a DOMText or a + * DOMCDATASection, then the context is interpreted as the whole logical + * text node as seen by XPath, unless the node is empty in which case it may not + * serve as the XPath context. + * @param type of type unsigned short If a specific type is specified, then the result + * will be coerced to return the specified type relying on XPath conversions and fail + * if the desired coercion is not possible. This must be one of the type codes of XPathResult. + * @param result of type void* The result specifies a specific result object which + * may be reused and returned by this method. If this is specified as nullor the + * implementation does not reuse the specified result, a new result object will be constructed + * and returned. + * For XPath 1.0 results, this object will be of type XPathResult. + * For XPath 2.0 results, this object will be of type XPath2Result. + * @return void* The result of the evaluation of the XPath expression. + * For XPath 1.0 results, this object will be of type XPathResult. + * For XPath 2.0 results, this object will be of type XPath2Result. + * @exception XPathException + * TYPE_ERR: Raised if the result cannot be converted to return the specified type. + * @exception DOMException + * WRONG_DOCUMENT_ERR: The DOMNode is from a document that is not supported by + * the XPathEvaluator that created this DOMXPathExpression. + * NOT_SUPPORTED_ERR: The Node is not a type permitted as an XPath context node or the + * request type is not permitted by this DOMXPathExpression. + */ + virtual void* evaluate(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* contextNode, + unsigned short type, + void* reuseableResult) const = 0; + + //@} + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this object (and its associated children) is no longer in use + * and that the implementation may relinquish any resources associated with it and + * its associated children. + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + //@} +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + XQillaExpression() {}; + //@} +};//XQillaExpression + +#endif //__XQILLAEXPRESSION_HPP + diff --git a/include/xqilla/dom-api/XQillaNSResolver.hpp b/include/xqilla/dom-api/XQillaNSResolver.hpp new file mode 100644 index 00000000..2cd44a12 --- /dev/null +++ b/include/xqilla/dom-api/XQillaNSResolver.hpp @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQillaNSResolver.hpp,v 1.5 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef __XQILLANSRESOLVER_HPP +#define __XQILLANSRESOLVER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN +class XercesDefs; +class DOMNode; +XERCES_CPP_NAMESPACE_END + +class XPath2MemoryManager; + +/** + * The XQillaNSResolver interface extends the DOMXPathNSResolver + * providing the ability to add additional namespace bindings. + * @since DOM Level 3 + */ +class XQILLA_API XQillaNSResolver : public XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver +{ +public: + + // ----------------------------------------------------------------------- + // Non-standard extension + // ----------------------------------------------------------------------- + /** @name Non-standard extension */ + //@{ + + /** + * Non-standard extension + * + * XQilla requires additional bindings of namespaces. This method will bind + * the given prefix to the associated namespace. + * @param prefix of type XMLCh - The prefix to bind. + * @param URI of type XMLCh - The associated namespace. + */ + virtual void addNamespaceBinding(const XMLCh* prefix, const XMLCh* uri) = 0; + + /** Look up the namespace URI associated to the given namespace prefix. + * The XPath evaluator must never call this with a null or empty argument, + * because the result of doing this is undefined. + * @param prefix of type XMLCh - The prefix to look for. + * @return the associated namespace URI or null if none is found. + */ + virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const = 0; + + /** + * Non-standard extension + * + * XPath2 implementations require a reverse lookup in the static context. + * Look up the prefix associated with the namespace URI + * The XPath evaluator must never call this with a null or empty argument, + * because the result of doing this is undefined. + * @param URI of type XMLCh - The namespace to look for. + * @return the associated prefix or null if none is found. + */ + virtual const XMLCh* lookupPrefix(const XMLCh* uri) const = 0; + + //@} + /** @name Non-standard Extension */ + //@{ + /** + * Called to indicate that this object (and its associated children) is no longer in use + * and that the implementation may relinquish any resources associated with it and + * its associated children. + * + * Access to a released object will lead to unexpected result. + */ + virtual void release() = 0; + //@} + +protected: + // ----------------------------------------------------------------------- + // Hidden constructors + // ----------------------------------------------------------------------- + /** @name Hidden constructors */ + //@{ + XQillaNSResolver() {}; + //@} +};//XQillaNSResolver + + +#endif //__XQILLANSRESOLVER_HPP diff --git a/include/xqilla/dom-api/impl/XQillaNSResolverImpl.hpp b/include/xqilla/dom-api/impl/XQillaNSResolverImpl.hpp new file mode 100644 index 00000000..aae72e77 --- /dev/null +++ b/include/xqilla/dom-api/impl/XQillaNSResolverImpl.hpp @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQillaNSResolverImpl.hpp,v 1.6 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef __XQILLANSRESOLVERIMPL_HPP +#define __XQILLANSRESOLVERIMPL_HPP + +#include + +#include +#include +#include +#include + +class XPath2MemoryManager; + +class XQILLA_API XQillaNSResolverImpl : public XQillaNSResolver +{ +public: + XQillaNSResolverImpl(XPath2MemoryManager* memMgr, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *resolverNode); + ~XQillaNSResolverImpl(); + + virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const; + virtual const XMLCh* lookupPrefix(const XMLCh* uri) const; + + virtual void addNamespaceBinding(const XMLCh* prefix, const XMLCh* uri); + + virtual void release(); + + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *getResolverNode(void); + +protected: + static const XMLCh g_nsBlocker[]; + XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf< XMLCh > _namespaceBindings; + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *_resolverNode; + XPath2MemoryManager* _memMgr; +};//XQillaNSResolverImpl + + +#endif //__XQILLANSRESOLVERIMPL_HPP diff --git a/include/xqilla/exceptions/ASTException.hpp b/include/xqilla/exceptions/ASTException.hpp new file mode 100644 index 00000000..921bda08 --- /dev/null +++ b/include/xqilla/exceptions/ASTException.hpp @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ASTException.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + + ASTException - exception class for ASTNodes + +*/ + +#ifndef _ASTEXCEPTION_HPP +#define _ASTEXCEPTION_HPP + +#include + +#include +#include + +/** exception class for data items */ + +class XQILLA_API ASTException : public XQException +{ +public: + + ASTException(const XMLCh *functionName, const XMLCh *reason, const LocationInfo *info, const char *file, int line) + : XQException(X("ASTException"), functionName, reason, info, file, line) {}; +}; + +#endif diff --git a/include/xqilla/exceptions/ContextException.hpp b/include/xqilla/exceptions/ContextException.hpp new file mode 100644 index 00000000..818bde3f --- /dev/null +++ b/include/xqilla/exceptions/ContextException.hpp @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ContextException.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + + ContextException + +*/ + +#ifndef _CONTEXTEXCEPTION_HPP +#define _CONTEXTEXCEPTION_HPP + +#include + +#include +#include + +/** exception class for DSLPath parser */ + +class XQILLA_API ContextException : public XQException +{ +public: + + ContextException(const XMLCh *functionName, const XMLCh *reason, const LocationInfo *info, const char *file, int line) + : XQException(X("ContextException"), functionName, reason, info, file, line) {}; +}; + +#endif // _CONTEXTEXCEPTION_HPP + diff --git a/include/xqilla/exceptions/DynamicErrorException.hpp b/include/xqilla/exceptions/DynamicErrorException.hpp new file mode 100644 index 00000000..d4aa943c --- /dev/null +++ b/include/xqilla/exceptions/DynamicErrorException.hpp @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DynamicErrorException.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _DYNAMICERROREXCEPTION_HPP +#define _DYNAMICERROREXCEPTION_HPP + +#include + +#include +#include + +/** + * This means that an error was found while evaluating the expression + */ + +class XQILLA_API DynamicErrorException : public XQException +{ +public: + DynamicErrorException(const XMLCh* const functionName, const XMLCh* const reason, const LocationInfo *info, const char *file, int line) + : XQException(X("DynamicErrorException"), functionName, reason, info, file, line) {}; +}; + +#endif // _DYNAMICERROREXCEPTION_HPP diff --git a/include/xqilla/exceptions/FunctionException.hpp b/include/xqilla/exceptions/FunctionException.hpp new file mode 100644 index 00000000..43a86649 --- /dev/null +++ b/include/xqilla/exceptions/FunctionException.hpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionException.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + FunctionException - exception class for functions +*/ + +#ifndef _FUNCTIONEXCEPTION_HPP +#define _FUNCTIONEXCEPTION_HPP + +#include + +#include +#include + +/** exception class for tests. Inherit from this if you need to throw an exception + in the test suite.*/ +class XQILLA_API FunctionException : public XQException +{ +public: + + FunctionException(const XMLCh* const functionName, const XMLCh* const reason, const LocationInfo *info, const char *file, int line) + : XQException(X("FunctionException"), functionName, reason, info, file, line) {}; +}; + +#endif // _FUNCTIONEXCEPTION_HPP diff --git a/include/xqilla/exceptions/IllegalArgumentException.hpp b/include/xqilla/exceptions/IllegalArgumentException.hpp new file mode 100644 index 00000000..11874810 --- /dev/null +++ b/include/xqilla/exceptions/IllegalArgumentException.hpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: IllegalArgumentException.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + Illegal Argument exception. Should be thrown when arguments given are not as expected +*/ + +#ifndef _ILLEGALARGUMENTEXCEPTION_HPP +#define _ILLEGALARGUMENTEXCEPTION_HPP + +#include + +#include +#include + +/** exception class for tests. Inherit from this if you need to throw an exception + in the test suite.*/ +class XQILLA_API IllegalArgumentException : public XQException +{ +public: + + IllegalArgumentException(const XMLCh *functionName, const XMLCh *reason, const LocationInfo *info, const char *file, int line) + : XQException(X("IllegalArgumentException"), functionName, reason, info, file, line) {}; +}; + +#endif // _ILLEGALARGUMENTEXCEPTION_HPP diff --git a/include/xqilla/exceptions/ItemException.hpp b/include/xqilla/exceptions/ItemException.hpp new file mode 100644 index 00000000..113f7226 --- /dev/null +++ b/include/xqilla/exceptions/ItemException.hpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ItemException.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + Item Exception. Should be thrown only from Item hierarchy +*/ + +#ifndef _ITEMEXCEPTION_HPP +#define _ITEMEXCEPTION_HPP + +#include + +#include +#include + +/** exception class for tests. Inherit from this if you need to throw an exception + in the test suite.*/ +class XQILLA_API ItemException : public XQException +{ +public: + + ItemException(const XMLCh *functionName, const XMLCh *reason, const LocationInfo *info, const char *file, int line) + : XQException(X("ItemException"), functionName, reason, info, file, line) {}; +}; + +#endif // _ITEMEXCEPTION_HPP diff --git a/include/xqilla/exceptions/NamespaceLookupException.hpp b/include/xqilla/exceptions/NamespaceLookupException.hpp new file mode 100644 index 00000000..5e91dd34 --- /dev/null +++ b/include/xqilla/exceptions/NamespaceLookupException.hpp @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: NamespaceLookupException.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + + NamespaceLookupException - exception class for DSLPath parser + +*/ + +#ifndef _NAMESPACELOOKUPEXCPETION_HPP +#define _NAMESPACELOOKUPEXCPETION_HPP + +#include + +#include + +/** exception class for DSLPath parser */ + +class XQILLA_API NamespaceLookupException : public XQException +{ +public: + + NamespaceLookupException(const XMLCh *functionName, const XMLCh *reason, const LocationInfo *info, const char *file, int line) + : XQException(X("NamespaceLookupException"), functionName, reason, info, file, line) {}; +}; + +#endif // _XPATHPARSEEXCEPTION_HPP + diff --git a/include/xqilla/exceptions/QueryInterruptedException.hpp b/include/xqilla/exceptions/QueryInterruptedException.hpp new file mode 100644 index 00000000..0b6e99b9 --- /dev/null +++ b/include/xqilla/exceptions/QueryInterruptedException.hpp @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: QueryInterruptedException.hpp,v 1.2 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + + QueryInterruptedException + +*/ + +#ifndef _QUERYINTERRUPTEDEXCEPTION_HPP +#define _QUERYINTERRUPTEDEXCEPTION_HPP + +#include + +#include +#include + +/** exception class for interrupted queries */ + +class XQILLA_API QueryInterruptedException : public XQException +{ +public: + + QueryInterruptedException(const XMLCh *functionName, const XMLCh *reason, const LocationInfo *info, const char *file, int line) + : XQException(X("QueryInterruptedException"), functionName, reason, info, file, line) {}; +}; + +#endif // _QUERYINTERRUPTEDEXCEPTION_HPP + diff --git a/include/xqilla/exceptions/QueryTimeoutException.hpp b/include/xqilla/exceptions/QueryTimeoutException.hpp new file mode 100644 index 00000000..478e20ec --- /dev/null +++ b/include/xqilla/exceptions/QueryTimeoutException.hpp @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: QueryTimeoutException.hpp,v 1.2 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + + QueryTimeoutException + +*/ + +#ifndef _QUERYTIMEOUTEXCEPTION_HPP +#define _QUERYTIMEOUTEXCEPTION_HPP + +#include + +#include +#include + +/** exception class for query timeouts */ + +class XQILLA_API QueryTimeoutException : public XQException +{ +public: + + QueryTimeoutException(const XMLCh *functionName, const XMLCh *reason, const LocationInfo *info, const char *file, int line) + : XQException(X("QueryTimeoutException"), functionName, reason, info, file, line) {}; +}; + +#endif // _QUERYTIMEOUTEXCEPTION_HPP + diff --git a/include/xqilla/exceptions/StaticErrorException.hpp b/include/xqilla/exceptions/StaticErrorException.hpp new file mode 100644 index 00000000..0e947446 --- /dev/null +++ b/include/xqilla/exceptions/StaticErrorException.hpp @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: StaticErrorException.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _STATICERROREXCEPTION_HPP +#define _STATICERROREXCEPTION_HPP + +#include + +#include +#include + +/** + * This means that an error was found while parsing or when doing static analysis of the expression + */ + +class XQILLA_API StaticErrorException : public XQException +{ +public: + StaticErrorException(const XMLCh* const functionName, const XMLCh* const reason, const LocationInfo *info, const char *file, int line) + : XQException(X("StaticErrorException"), functionName, reason, info, file, line) {}; +}; + +#endif // _STATICERROREXCEPTION_HPP diff --git a/include/xqilla/exceptions/TypeErrorException.hpp b/include/xqilla/exceptions/TypeErrorException.hpp new file mode 100644 index 00000000..ce37333e --- /dev/null +++ b/include/xqilla/exceptions/TypeErrorException.hpp @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: TypeErrorException.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _TYPEERROREXCEPTION_HPP +#define _TYPEERROREXCEPTION_HPP + +#include + +#include +#include + +/** + * This means that an error was found while manipulating typed data + */ + +class XQILLA_API TypeErrorException : public XQException +{ +public: + TypeErrorException(const XMLCh* const functionName, const XMLCh* const reason, const LocationInfo *info, const char *file, int line) + : XQException(X("TypeErrorException"), functionName, reason, info, file, line) {}; +}; + +#endif // _TYPEERROREXCEPTION_HPP diff --git a/include/xqilla/exceptions/TypeNotFoundException.hpp b/include/xqilla/exceptions/TypeNotFoundException.hpp new file mode 100644 index 00000000..d2ba41bc --- /dev/null +++ b/include/xqilla/exceptions/TypeNotFoundException.hpp @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: TypeNotFoundException.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _TYPENOTFOUNDEXCEPTION_HPP +#define _TYPENOTFOUNDEXCEPTION_HPP + +#include + +#include + +class XQILLA_API TypeNotFoundException : public XQException +{ +public: + + TypeNotFoundException(const XMLCh *functionName, const XMLCh *reason, const LocationInfo *info, const char *file, int line) + : XQException(X("TypeNotFoundException"), functionName, reason, info, file, line) {}; +}; + +#endif // _TYPENOTFOUNDEXCEPTION_HPP diff --git a/include/xqilla/exceptions/XMLParseException.hpp b/include/xqilla/exceptions/XMLParseException.hpp new file mode 100644 index 00000000..189599bf --- /dev/null +++ b/include/xqilla/exceptions/XMLParseException.hpp @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XMLParseException.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + + XMLParseException - exception class for parsing XML + +*/ + +#ifndef _XMLPARSEEXCEPTION_HPP +#define _XMLPARSEEXCEPTION_HPP + +#include + +#include +#include + +/** exception class for parsing XML */ +class XQILLA_API XMLParseException : public XQException +{ +public: + + XMLParseException(const XMLCh* const functionName, const XMLCh* const reason, const LocationInfo *info, const char *file, int line) + : XQException(X("XMLParseException"), functionName, reason, info, file, line) {}; +}; + +#endif // _XMLPARSEEXCEPTION_HPP + diff --git a/include/xqilla/exceptions/XPath2ErrorException.hpp b/include/xqilla/exceptions/XPath2ErrorException.hpp new file mode 100644 index 00000000..4b8802b7 --- /dev/null +++ b/include/xqilla/exceptions/XPath2ErrorException.hpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XPath2ErrorException.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + + XPath2ErrorException - handles cases in the specification where the `error value' is returned + +*/ + +#ifndef _XPATH2ERROREXCEPTON_HPP +#define _XPATH2ERROREXCEPTON_HPP + +#include + +#include +#include + +/** exception class for data items */ +class XQILLA_API XPath2ErrorException : public XQException +{ +public: + + XPath2ErrorException(const XMLCh* const functionName, const XMLCh* const reason, const LocationInfo *info, const char *file, int line) + : XQException(X("XPath2ErrorException"), functionName, reason, info, file, line) {}; +}; + +#endif // _XPATH2ERROREXCEPTON_HPP diff --git a/include/xqilla/exceptions/XPath2TypeCastException.hpp b/include/xqilla/exceptions/XPath2TypeCastException.hpp new file mode 100644 index 00000000..85dd93fb --- /dev/null +++ b/include/xqilla/exceptions/XPath2TypeCastException.hpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XPath2TypeCastException.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + + XPath2TypeCastException - exception class for casting errors + +*/ + +#ifndef _XPATH2TYPECASTEXCEPTION_HPP +#define _XPATH2TYPECASTEXCEPTION_HPP + +#include + +#include +#include + +/** exception class for data items */ +class XQILLA_API XPath2TypeCastException : public XQException +{ +public: + + XPath2TypeCastException(const XMLCh *functionName, const XMLCh *reason, const LocationInfo *info, const char *file, int line) + : XQException(X("XPath2TypeCastException"), functionName, reason, info, file, line) {}; +}; + +#endif // _XPATH2TYPECASTEXCEPTION_HPP diff --git a/include/xqilla/exceptions/XPath2TypeMatchException.hpp b/include/xqilla/exceptions/XPath2TypeMatchException.hpp new file mode 100644 index 00000000..7dd53b30 --- /dev/null +++ b/include/xqilla/exceptions/XPath2TypeMatchException.hpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XPath2TypeMatchException.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + + XPath2TypeCastException - exception class for casting errors + +*/ + +#ifndef _XPATH2TYPEMATCHEXCEPTION_HPP +#define _XPATH2TYPEMATCHEXCEPTION_HPP + +#include + +#include + +/** Exception to be thrown if an attempt to match a non-existent type is made */ +class XQILLA_API XPath2TypeMatchException : public XQException +{ +public: + + XPath2TypeMatchException(const XMLCh *functionName, const XMLCh *reason, const LocationInfo *info, const char *file, int line) + : XQException(X("XPath2TypeCastException"), functionName, reason, info, file, line) {}; +}; + +#endif // _XPATH2TYPEMATCHEXCEPTION_HPP diff --git a/include/xqilla/exceptions/XQException.hpp b/include/xqilla/exceptions/XQException.hpp new file mode 100644 index 00000000..4dbe144f --- /dev/null +++ b/include/xqilla/exceptions/XQException.hpp @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQException.hpp,v 1.10 2006/11/01 16:37:12 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQException.h: interface for the XQException class. +////////////////////////////////////////////////////////////////////// + +#if !defined(AFXQ_XQEXCEPTION_H__446AD191_E9D0_4658_BD8C_032D29DA123E__INCLUDED_) +#define AFXQ_XQEXCEPTION_H__446AD191_E9D0_4658_BD8C_032D29DA123E__INCLUDED_ + +#include +#include + +#define XQThrow(type, function, reason) throw type(function, reason, this, __FILE__, __LINE__) +#define XQThrow2(type, function, reason) throw type(function, reason, 0, __FILE__, __LINE__) +#define XQThrow3(type, function, reason, location) throw type(function, reason, location, __FILE__, __LINE__) +#define XQSimpleThrow(reason, xqfile, xqline, xqcolumn) throw XQException(reason, xqfile, xqline, (unsigned int)xqcolumn, __FILE__, __LINE__) + +class LocationInfo; + +class XQILLA_API XQException +{ +public: + XQException(const XMLCh *reason, const XMLCh* file, unsigned int line, unsigned int column, const char *cppFile, unsigned int cppLine); + XQException(const XQException &); + virtual ~XQException(); + + const XMLCh *getType() const { return m_type; } + const XMLCh *getError() const { return m_error; } + + const XMLCh *getXQueryFile() const { return m_xqFile; } + unsigned int getXQueryLine() const { return m_xqLine; } + unsigned int getXQueryColumn() const { return m_xqColumn; } + + void setXQueryPosition(const XMLCh *file, unsigned int line, unsigned int column); + void setXQueryPosition(const LocationInfo *info); + + const XMLCh *getCppFunction() const { return m_cppFunction; } + const char *getCppFile() const { return m_cppFile; } + unsigned int getCppLine() const { return m_cppLine; } + + /// For debugger + bool isErrorReported() const { return m_errorReported; } + void setErrorReported(bool value = true) { m_errorReported = value; } + + void printDebug(const XMLCh* const context) const; + +protected: + XQException(const XMLCh* const type, const XMLCh* const functionName, const XMLCh* const reason, const LocationInfo *info, const char *cppFile, unsigned int cppLine); + +private: + XQException &operator=(const XQException &); + + XMLCh* m_type; + XMLCh* m_error; + + XMLCh* m_cppFunction; + const char *m_cppFile; + unsigned int m_cppLine; + + unsigned int m_xqLine, m_xqColumn; + XMLCh* m_xqFile; + + bool m_errorReported; +}; + +#endif // !defined(AFXQ_XQEXCEPTION_H__446AD191_E9D0_4658_BD8C_032D29DA123E__INCLUDED_) + diff --git a/include/xqilla/exceptions/XQillaException.hpp b/include/xqilla/exceptions/XQillaException.hpp new file mode 100644 index 00000000..9b95f552 --- /dev/null +++ b/include/xqilla/exceptions/XQillaException.hpp @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQillaException.hpp,v 1.5 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef __XQILLAEXCEPTION_HPP +#define __XQILLAEXCEPTION_HPP + +#include +#include +#include + +/** + * The XQillaException interface extends the DOMXPathException + * allowing an additional exception of type RUNTIME_ERR to be thrown. + * @since DOM Level 3 + */ +class XQILLA_API XQillaException: public XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathException +{ +public: + // ----------------------------------------------------------------------- + // Constructors + // ----------------------------------------------------------------------- + /** @name Constructors */ + //@{ + /** + * Constructor which takes an error code and a message. + * + * @param code The error code which indicates the exception + * @param message The string containing the error message + */ + XQillaException(short code, const XMLCh* message): + XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathException(code, XERCES_CPP_NAMESPACE_QUALIFIER XMLString::replicate(message)) {}; + + /** + * Copy constructor. + * + * @param other The object to be copied. + */ + XQillaException(const XQillaException &other); + //@} + + // ----------------------------------------------------------------------- + // Destructors + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor for XQillaException. + * + */ + virtual ~XQillaException(); + //@} + + //@{ + /** + * ExceptionCode + * RUNTIME_ERR If XQilla encounters a runtime exception + */ + enum valExtension { + RUNTIME_ERR = 53 + }; + //@} + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + + /** @name Getter methods */ + //@{ + + /** + * Returns the code associated with this exception. + * + * @return the exception code + */ + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathException::ExceptionCode getCode(void) const; + + /** + * Returns the string representing the exception's error message. + * + * @return the error message + */ + virtual const XMLCh* getString(void) const; + //@} + + /** @name Getter methods */ + //@{ + /** + * Statically returns whether or not XQillaExceptions have debug on + * + * @return debug + */ + static bool getDebug(void); + //@} + + // ----------------------------------------------------------------------- + // Setter methods + // ----------------------------------------------------------------------- + + /** @name Setter methods */ + //@{ + /** Set the 'debug' flag + * + * This method allows users to enable or disable debug on XQillaExceptions. + * + * @param debug The value specifying whether or not debug is enabled + */ + static void setDebug(bool flag); + //@} + +private: + static bool _debug; +};//XQillaException + +#endif //__XQILLAEXCEPTION_HPP + diff --git a/include/xqilla/framework/BaseMemoryManager.hpp b/include/xqilla/framework/BaseMemoryManager.hpp new file mode 100644 index 00000000..75d6368a --- /dev/null +++ b/include/xqilla/framework/BaseMemoryManager.hpp @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: BaseMemoryManager.hpp,v 1.8 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef __BASEMEMORYMANAGER_HPP +#define __BASEMEMORYMANAGER_HPP + +#include +#include + +#include + +// Define ALLOCATE_IN_CHUNKS to 1 to allocate +// CHUNK_SIZE blocks of memory at a time, and +// carve the requested memory from them. The +// DB XML benchmark suggests this behaves badly +// with larger data sets. - jpcs +#define ALLOCATE_IN_CHUNKS 0 + +#define DEBUG_MEMORY_ALLOCD 0x88884444 +#define DEBUG_MEMORY_FREED 0x44442222 + +XERCES_CPP_NAMESPACE_BEGIN +class DOMNode; +XERCES_CPP_NAMESPACE_END + +class VariableStore; +class FunctionLookup; +class Collation; +class CollationHelper; +class XQillaNSResolver; +class StringPool; + +class XQILLA_API BaseMemoryManager : public XPath2MemoryManager +{ +public: + virtual ~BaseMemoryManager(); + + // from MemoryManager + virtual void* allocate(size_t numElements); + virtual void deallocate(void* p); + + /** Returns a copy of the given string */ + virtual const XMLCh* getPooledString(const XMLCh *src); + /** Returns a copy of the transcoding of the given string */ + virtual const XMLCh* getPooledString(const char *src); + + /** Use with extreme caution! */ + virtual void reset(); + + virtual void dumpStatistics() const; + virtual unsigned long getAllocatedObjectCount() const { return objectsAllocated_; } + virtual unsigned long getTotalAllocatedMemory() const { return totalMemoryAllocated_; } + virtual const StringPool *getStringPool() const { + return fStringPool; + } + + /** create a collation */ + virtual Collation* createCollation(CollationHelper* helper); + + /** create a resolver */ + virtual XQillaNSResolver* createNSResolver(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *resolverNode); + + /** create a store for variables */ + virtual VariableStore* createVariableStore(); + + /** create a store for variables */ + virtual VariableTypeStore* createVariableTypeStore(); + + /** create a function table */ + virtual FunctionLookup* createFunctionTable(); + + /** create a ATDecimalOrDerived for the given integer */ + virtual ATDecimalOrDerived* createInteger(int value); + +protected: + virtual void initialise(); + virtual void releaseAll(); + + virtual void *internal_allocate(size_t size) = 0; + virtual void internal_deallocate(void *p) = 0; + + struct XQILLA_API MemList { + MemList *prev; + MemList *next; + size_t size; +#if ALLOCATE_IN_CHUNKS + size_t remaining; + unsigned int allocCount; +#endif +#if DEBUG_MEMORY + unsigned long magic; +#endif + }; + +#if ALLOCATE_IN_CHUNKS + struct XQILLA_API MemAlloc { + MemList *list; + }; +#endif + + MemList *fCurrentBlock; + + unsigned long objectsAllocated_; + unsigned long totalMemoryAllocated_; + + StringPool *fStringPool; + + XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf* fIntegerPool; +}; + +#endif //__BASEMEMORYMANAGER_HPP + diff --git a/include/xqilla/framework/ProxyMemoryManager.hpp b/include/xqilla/framework/ProxyMemoryManager.hpp new file mode 100644 index 00000000..8e6576aa --- /dev/null +++ b/include/xqilla/framework/ProxyMemoryManager.hpp @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ProxyMemoryManager.hpp,v 1.7 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef __PROXYMEMORYMANAGER_HPP +#define __PROXYMEMORYMANAGER_HPP + +#include +#include + +class XQILLA_API ProxyMemoryManager : public BaseMemoryManager +{ +public: + ProxyMemoryManager(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *parent); + virtual ~ProxyMemoryManager(); + +protected: + virtual void *internal_allocate(size_t size); + virtual void internal_deallocate(void *p); + +private: + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *parent_; +}; + +#endif //__PROXYMEMORYMANAGER_HPP + diff --git a/include/xqilla/framework/ReferenceCounted.hpp b/include/xqilla/framework/ReferenceCounted.hpp new file mode 100644 index 00000000..2ec0324a --- /dev/null +++ b/include/xqilla/framework/ReferenceCounted.hpp @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ReferenceCounted.hpp,v 1.7 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _REFERENCECOUNTED_HPP +#define _REFERENCECOUNTED_HPP + +#include +#include + +// for null RefCountPointer instances +#define NULLRCP ((void *)0) + +/** Super class for reference counted classes */ +class XQILLA_API ReferenceCounted +{ +public: + ReferenceCounted() + : _ref_count(0) {} + virtual ~ReferenceCounted() {} + + /// Increment the reference count + void incrementRefCount() const + { + ++const_cast(_ref_count); + } + + /// Decrement the reference count, deleting if it becomes zero + virtual void decrementRefCount() const + { + if(--const_cast(_ref_count) == 0) { + delete this; + } + } + +protected: + unsigned int _ref_count; // mutable +}; + +/** Super class of all the reference counted wrappers for Items */ +template class RefCountPointer +{ +public: + RefCountPointer(T *p = 0) : _p(p) + { + if(_p != 0) _p->incrementRefCount(); + } + + template RefCountPointer(const RefCountPointer &o) : _p((T*)(T2*)o) + { + if(_p != 0) _p->incrementRefCount(); + } + + RefCountPointer(const RefCountPointer &o) : _p(o._p) + { + if(_p != 0) _p->incrementRefCount(); + } + + RefCountPointer &operator=(const RefCountPointer &o) + { + if(_p != o._p) { + if(_p != 0) _p->decrementRefCount(); + _p = o._p; + if(_p != 0) _p->incrementRefCount(); + } + return *this; + } + + ~RefCountPointer() + { + if(_p != 0) _p->decrementRefCount(); + } + + T *operator->() const + { + return _p; + } + + operator T*() const + { + return _p; + } + + T *get() const + { + return _p; + } + + bool isNull() const + { + return (_p == 0); + } + + bool notNull() const + { + return (_p != 0); + } + +protected: + T *_p; +}; + +template +inline bool operator==(const RefCountPointer &a, const RefCountPointer &b) +{ + return (void*)(T1*)a == (void*)(T2*)b; +} + +template +inline bool operator!=(const RefCountPointer &a, const RefCountPointer &b) +{ + return (void*)(T1*)a != (void*)(T2*)b; +} + +template +inline bool operator==(const RefCountPointer &a, void *b) +{ + return (T*)a == (T*)b; +} + +template +inline bool operator!=(const RefCountPointer &a, void *b) +{ + return (T*)a != (T*)b; +} + +#endif diff --git a/include/xqilla/framework/StringPool.hpp b/include/xqilla/framework/StringPool.hpp new file mode 100644 index 00000000..6bc649fc --- /dev/null +++ b/include/xqilla/framework/StringPool.hpp @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: StringPool.hpp,v 1.8 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef __STRINGPOOL_HPP +#define __STRINGPOOL_HPP + +#include +#include +#include +#include + +class XQILLA_API StringPool +{ +public: + StringPool(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mm); + ~StringPool(); + + /** Returns a copy of the given string */ + const XMLCh* getPooledString(const XMLCh *src); + /** Returns a copy of the transcoding of the given string */ + const XMLCh* getPooledString(const char *src); + + unsigned int getCount() const { return _count; } + unsigned int getHits() const { return _hits; } + unsigned int getMisses() const { return _misses; } + unsigned int getTooBig() const { return _toobig; } + void dumpStatistics() const; + +private: + StringPool(const StringPool&); + StringPool &operator=(const StringPool&); + + static unsigned int hash(const XMLCh *v); + const XMLCh *replicate(const XMLCh *v, unsigned int length) const; + void resize(); + + class Bucket + { + public: + Bucket(const XMLCh *v, unsigned int l, unsigned int h, Bucket *n) + : value(v), length(l), hashValue(h), next(n) {} + + const XMLCh *value; + unsigned int length; + unsigned int hashValue; + Bucket *next; + }; + + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *_mm; + Bucket **_bucketList; + unsigned int _modulus; + unsigned int _count; + unsigned int _hits; + unsigned int _misses; + unsigned int _toobig; +}; + +inline unsigned int StringPool::hash(const XMLCh *v) +{ + unsigned int top; + unsigned int hashVal = 0; + while(*v) { + top = hashVal >> 24; + hashVal += (hashVal * 37) + top + (unsigned int)(*v); + ++v; + } + return hashVal; +} + +inline const XMLCh *StringPool::replicate(const XMLCh *v, unsigned int length) const +{ + unsigned int size = (length+1) * sizeof(XMLCh); + XMLCh *ret = (XMLCh*)_mm->allocate(size); + memcpy(ret, v, size); + return ret; +} + +#endif diff --git a/include/xqilla/framework/XPath2MemoryManager.hpp b/include/xqilla/framework/XPath2MemoryManager.hpp new file mode 100644 index 00000000..68f90622 --- /dev/null +++ b/include/xqilla/framework/XPath2MemoryManager.hpp @@ -0,0 +1,372 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XPath2MemoryManager.hpp,v 1.13 2006/11/22 16:37:10 jpcs Exp $ + */ + +#ifndef __XPATH2MEMORYMANAGER_HPP +#define __XPATH2MEMORYMANAGER_HPP + +#include +#include + +#include + +#include + +XERCES_CPP_NAMESPACE_BEGIN +class DOMNode; +class XMLGrammarPool; +XERCES_CPP_NAMESPACE_END + +class VariableStore; +class VariableTypeStore; +class FunctionLookup; +class DynamicContext; +class Collation; +class CollationHelper; +class XQillaNSResolver; +class ATDecimalOrDerived; +class StringPool; + +class XQILLA_API XPath2MemoryManager : public XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager +{ +public: + virtual ~XPath2MemoryManager() {} + + /** Use with extreme caution! */ + virtual void reset() = 0; + + /** Returns a copy of the given string */ + virtual const XMLCh* getPooledString(const XMLCh *src) = 0; + virtual const XMLCh* getPooledString(const char *src) = 0; + + // from MemoryManager + virtual void* allocate(size_t numElements) = 0; + virtual void deallocate(void* p) = 0; + + /** create a collation */ + virtual Collation* createCollation(CollationHelper* helper) = 0; + + /** create a resolver */ + virtual XQillaNSResolver* createNSResolver(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *resolverNode) = 0; + + /** create a store for variables */ + virtual VariableStore* createVariableStore() = 0; + + /** create a store for variables */ + virtual VariableTypeStore* createVariableTypeStore() = 0; + + /** create a function table */ + virtual FunctionLookup* createFunctionTable() = 0; + + /** create a ATDecimalOrDerived for the given integer */ + virtual ATDecimalOrDerived* createInteger(int value) = 0; + + virtual void dumpStatistics() const = 0; + virtual unsigned long getAllocatedObjectCount() const = 0; + virtual unsigned long getTotalAllocatedMemory() const = 0; + virtual const StringPool *getStringPool() const = 0; +};//XPath2MemoryManager + +template +class XQillaAllocator +{ +public: + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Tp* pointer; + typedef const _Tp* const_pointer; + typedef _Tp& reference; + typedef const _Tp& const_reference; + typedef _Tp value_type; + + template struct rebind { + typedef XQillaAllocator<_Tp1> other; + }; + + // Should never be used - for compiling on AIX only + XQillaAllocator() + { + assert(false); + } + + XQillaAllocator(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr) + { + _memMgr=memMgr; + } + + // define a copy constructor, because we don't want to copy the singleton object + XQillaAllocator(const XQillaAllocator<_Tp>& o) + { + _memMgr=o._memMgr; + } + + pointer allocate(size_t _n, const void* = 0) + { + if(_n==1) + return (pointer)_singleton; + //std::cout << "XQillaAllocator::allocate(" << _n << ")" << std::endl; + if(_memMgr) + return _n != 0 ? static_cast(_memMgr->allocate(_n*sizeof(_Tp))) : 0; + else + return _n != 0 ? static_cast(malloc(_n*sizeof(_Tp))) : 0; + } + + void deallocate(void* _p, size_t _n) + { + //std::cout << "XQillaAllocator::deallocate(" << _n << ")" << std::endl; + if(_p) { + if(_p!=_singleton) { + if(_memMgr) + _memMgr->deallocate(_p); + else + free(_p); + } + } + } + + void construct(pointer _p, const_reference _v) + { + new ((void *)_p) _Tp(_v); + } + + void destroy(pointer _p) + { + _p->~_Tp(); + } + + size_type max_size() const + { + return 0xFFFFFFFF; + } + + size_type max_size(size_type) const + { + return 0xFFFFFFFF; + } + +protected: + char _singleton[sizeof(_Tp)]; + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* _memMgr; +}; + +// --------------------------------------------------------------------------- +// +// Operator new. Global overloaded version, lets any object be allocated on +// the heap owned by a MemoryManager. +// +// --------------------------------------------------------------------------- +inline void * operator new(size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr) +{ + void *p = memMgr->allocate(amt); + return p; +} + +inline void operator delete(void* ptr, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr) +{ + memMgr->deallocate(ptr); +} + +template +class AutoRelease +{ +public: + AutoRelease(TYPE *p) + : p_(p) {} + ~AutoRelease() + { + if(p_ != 0) + p_->release(); + } + + TYPE &operator*() const + { + return *p_; + } + TYPE *operator->() const + { + return p_; + } + operator TYPE*() const + { + return p_; + } + TYPE *get() const + { + return p_; + } + TYPE *adopt() + { + TYPE *tmp = p_; + p_ = 0; + return tmp; + } + void set(TYPE *p) + { + if(p_ != 0) + p_->release(); + p_ = p; + } + +private: + AutoRelease(const AutoRelease &); + AutoRelease &operator=(const AutoRelease &); + + TYPE *p_; +}; + +template +class AutoDelete +{ +public: + AutoDelete(TYPE *p) + : p_(p) {} + ~AutoDelete() + { + delete p_; + } + + TYPE &operator*() const + { + return *p_; + } + TYPE *operator->() const + { + return p_; + } + operator TYPE*() const + { + return p_; + } + TYPE *get() const + { + return p_; + } + TYPE *adopt() + { + TYPE *tmp = p_; + p_ = 0; + return tmp; + } + void set(TYPE *p) + { + delete p_; + p_ = p; + } + +private: + AutoDelete(const AutoDelete &); + AutoDelete &operator=(const AutoDelete &); + + TYPE *p_; +}; + +template +class AutoDeleteArray +{ +public: + AutoDeleteArray(TYPE *p) + : p_(p) {} + ~AutoDeleteArray() + { + delete [] p_; + } + + TYPE &operator*() const + { + return *p_; + } + TYPE *operator->() const + { + return p_; + } + operator TYPE*() const + { + return p_; + } + TYPE *get() const + { + return p_; + } + TYPE *adopt() + { + TYPE *tmp = p_; + p_ = 0; + return tmp; + } + void set(TYPE *p) + { + delete [] p_; + p_ = p; + } + +private: + AutoDeleteArray(const AutoDeleteArray &); + AutoDeleteArray &operator=(const AutoDeleteArray &); + + TYPE *p_; +}; + +template +class AutoDeallocate +{ +public: + AutoDeallocate(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mmgr, size_t size = sizeof(TYPE)) + : p_(0), mmgr_(mmgr) { + p_ = (TYPE*)mmgr_->allocate(size); + } + AutoDeallocate(TYPE *p, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mmgr) + : p_(p), mmgr_(mmgr) {} + ~AutoDeallocate() + { + if(p_ != 0) + mmgr_->deallocate((void*)p_); + } + + TYPE &operator*() const + { + return *p_; + } + TYPE *operator->() const + { + return p_; + } + operator TYPE*() const + { + return p_; + } + TYPE *get() const + { + return p_; + } + TYPE *adopt() + { + TYPE *tmp = p_; + p_ = 0; + return tmp; + } + void set(TYPE *p) + { + if(p_ != 0) + mmgr_->deallocate((void*)p_); + p_ = p; + } + +private: + AutoDeallocate(const AutoDeallocate &); + AutoDeallocate &operator=(const AutoDeallocate &); + + TYPE *p_; + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mmgr_; +}; + +#endif //__XPATH2MEMORYMANAGER_HPP + diff --git a/include/xqilla/framework/XPath2MemoryManagerImpl.hpp b/include/xqilla/framework/XPath2MemoryManagerImpl.hpp new file mode 100644 index 00000000..c0dbd6ac --- /dev/null +++ b/include/xqilla/framework/XPath2MemoryManagerImpl.hpp @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XPath2MemoryManagerImpl.hpp,v 1.7 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef __XPATH2MEMORYMANAGERIMPL_HPP +#define __XPATH2MEMORYMANAGERIMPL_HPP + +#include +#include + +#if 0 +// Turn OFF use of windows heap by default. +// There is a fragmentation problem resulting +// in less available memory +#if defined(WIN32) && !defined(__CYGWIN__) +#define WIN_USE_HEAP +#endif +#endif + +class XQILLA_API XPath2MemoryManagerImpl : public BaseMemoryManager +{ +public: + XPath2MemoryManagerImpl(); + virtual ~XPath2MemoryManagerImpl(); + +#if defined(WIN_USE_HEAP) + virtual void *allocate(size_t numElements); + virtual void deallocate(void* p); +#endif + +protected: +#if defined(WIN_USE_HEAP) + virtual void initialise(); + virtual void releaseAll(); + + virtual void *internal_allocate(size_t size) { return 0; } + virtual void internal_deallocate(void *p) {} +#else + virtual void *internal_allocate(size_t size); + virtual void internal_deallocate(void *p); +#endif + +private: +#if defined(WIN_USE_HEAP) + HANDLE fHeap; +#endif +}; + +#endif //__XPATH2MEMORYMANAGERIMPL_HPP + diff --git a/include/xqilla/framework/XQillaExport.hpp b/include/xqilla/framework/XQillaExport.hpp new file mode 100644 index 00000000..ea7fabd1 --- /dev/null +++ b/include/xqilla/framework/XQillaExport.hpp @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQillaExport.hpp,v 1.7 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef __XQILLAEXPORT_HPP +#define __XQILLAEXPORT_HPP + +/* + * This define tells VS8 not to give a warning when we use strcpy() + * instead of the MS secure function strcpy_s(). + */ + +#ifdef _MSC_VER +#define _CRT_SECURE_NO_DEPRECATE 1 +#endif + +/* + * The following ifdef block is the standard way of creating macros which + * make exporting from a DLL simpler. All files within this DLL are + * compiled with the XQILLA_APIS symbol defined on the command line. + * this symbol should not be defined on any project that uses this DLL. + * This way any other project whose source files include this file see + * XQILLA_API functions as being imported from a DLL, wheras this DLL + * sees symbols defined with this macro as being exported. + */ +#if defined(WIN32) && !defined(__CYGWIN__) + #ifdef XQILLA_APIS + #define XQILLA_API __declspec(dllexport) + #else + #define XQILLA_API __declspec(dllimport) + #endif + #pragma warning(disable: 4251 4786 4101 4290) +#else + #define XQILLA_API +#endif + +#endif diff --git a/include/xqilla/fulltext/AllMatches.hpp b/include/xqilla/fulltext/AllMatches.hpp new file mode 100644 index 00000000..a0fc7c06 --- /dev/null +++ b/include/xqilla/fulltext/AllMatches.hpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: AllMatches.hpp,v 1.3 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _ALLMATCHES_HPP +#define _ALLMATCHES_HPP + + +#include +#include +#include + +class DynamicContext; + +class XQILLA_API AllMatches : public ReferenceCounted, public LocationInfo +{ +public: + typedef RefCountPointer Ptr; + + virtual ~AllMatches() {} + + /// Get the next Match from the iterator. Returns null if the is no next value. + virtual Match::Ptr next(DynamicContext *context) = 0; + +protected: + AllMatches(const LocationInfo *o) + { + setLocationInfo(o); + } +}; + +#endif diff --git a/include/xqilla/fulltext/DefaultTokenStore.hpp b/include/xqilla/fulltext/DefaultTokenStore.hpp new file mode 100644 index 00000000..3343ddcc --- /dev/null +++ b/include/xqilla/fulltext/DefaultTokenStore.hpp @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DefaultTokenStore.hpp,v 1.3 2006/11/17 18:08:07 jpcs Exp $ + */ + +#ifndef _DEFAULTTOKENSTORE_HPP +#define _DEFAULTTOKENSTORE_HPP + +#include +#include +#include + +#include +#include + +#include + +class XPath2MemoryManager; +class DynamicContext; + +class XQILLA_API DefaultTokenStore : public TokenStore +{ +public: + typedef std::vector Tokens; + + class TokenEntryStream : public TokenStream + { + public: + TokenEntryStream(const Tokens &tokens) + : it_(tokens.begin()), end_(tokens.end()) {} + + virtual TokenInfo::Ptr next() + { + if(it_ != end_) + return *it_++; + return 0; + } + + private: + Tokens::const_iterator it_; + Tokens::const_iterator end_; + }; + + DefaultTokenStore(const Node::Ptr &node, const Tokenizer *tokenizer, + DynamicContext *context); + DefaultTokenStore(XPath2MemoryManager *mm); + + virtual TokenStream::Ptr findTokens(const XMLCh *searchString) const; + + virtual unsigned int getStartTokenPosition() const { return 0; } + virtual unsigned int getEndTokenPosition() const { return numTokens_ - 1; } + +private: + class TokenEntry + { + public: + void addToken(const TokenInfo::Ptr &token) + { + tokens_.push_back(token); + } + TokenStream::Ptr getTokenStream() const + { + return new TokenEntryStream(tokens_); + } + + private: + Tokens tokens_; + }; + +private: + XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf tokens_; + unsigned int numTokens_; + XPath2MemoryManager *mm_; + + mutable XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer buffer_; +}; + +#endif diff --git a/include/xqilla/fulltext/DefaultTokenizer.hpp b/include/xqilla/fulltext/DefaultTokenizer.hpp new file mode 100644 index 00000000..2cdc33d5 --- /dev/null +++ b/include/xqilla/fulltext/DefaultTokenizer.hpp @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DefaultTokenizer.hpp,v 1.3 2006/11/17 18:08:07 jpcs Exp $ + */ + +#ifndef _DEFAULTTOKENIZER_HPP +#define _DEFAULTTOKENIZER_HPP + +#include +#include + +class XQILLA_API DefaultTokenizer : public Tokenizer +{ +public: + class DefaultTokenInfo : public TokenInfo + { + public: + DefaultTokenInfo(const XMLCh *word, unsigned int pos, unsigned int sen, unsigned int para) + : word_(word), position_(pos), sentence_(sen), paragraph_(para) {} + + virtual const XMLCh *getWord() const { return word_; } + virtual unsigned int getPosition() const { return position_; } + virtual unsigned int getSentence() const { return sentence_; } + virtual unsigned int getParagraph() const { return paragraph_; } + + private: + const XMLCh *word_; + unsigned int position_; + unsigned int sentence_; + unsigned int paragraph_; + }; + + DefaultTokenizer() {} + + virtual TokenStream::Ptr tokenize(const Node::Ptr &node, DynamicContext *context) const; + virtual TokenStream::Ptr tokenize(const XMLCh *str, XPath2MemoryManager *mm) const; + +private: + class DefaultTokenStream : public TokenStream + { + public: + DefaultTokenStream(const XMLCh *str, XPath2MemoryManager *mm); + virtual ~DefaultTokenStream(); + virtual TokenInfo::Ptr next(); + + private: + XMLCh *string_; + XMLCh *current_; + XMLCh *tokenStart_; + + unsigned int position_; + unsigned int sentence_; + unsigned int paragraph_; + + bool seenEndOfSentence_; + + XPath2MemoryManager *mm_; + }; +}; + +#endif diff --git a/include/xqilla/fulltext/FTAnd.hpp b/include/xqilla/fulltext/FTAnd.hpp new file mode 100644 index 00000000..9c5bf1cf --- /dev/null +++ b/include/xqilla/fulltext/FTAnd.hpp @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTAnd.hpp,v 1.4 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _FTAND_HPP +#define _FTAND_HPP + +#include + +#include + +class XQILLA_API FTAnd : public FTSelection +{ +public: + FTAnd(XPath2MemoryManager *memMgr); + FTAnd(FTSelection *left, FTSelection *right, XPath2MemoryManager *memMgr); + + virtual FTSelection *staticResolution(StaticContext *context); + virtual FTSelection *staticTyping(StaticContext *context); + virtual FTSelection *optimize(FTContext *context, bool execute) const; + virtual AllMatches::Ptr execute(FTContext *ftcontext) const; + + const VectorOfFTSelections &getArguments() const { return args_; } + void addArg(FTSelection *sel) { args_.push_back(sel); } + +private: + VectorOfFTSelections args_; +}; + +class BufferedMatches : public AllMatches +{ +public: + typedef RefCountPointer Ptr; + + BufferedMatches(const LocationInfo *info, const AllMatches::Ptr matches); + + Match::Ptr current(); + Match::Ptr next(DynamicContext *context); + void reset(); + +private: + AllMatches::Ptr matches_; + std::list buffer_; + std::list::iterator it_; +}; + +class FTConjunctionMatches : public AllMatches +{ +public: + FTConjunctionMatches(const LocationInfo *info); + + void addMatches(const AllMatches::Ptr &m); + + Match::Ptr next(DynamicContext *context); + +private: + bool toDo_; + std::vector args_; +}; + +#endif diff --git a/include/xqilla/fulltext/FTContains.hpp b/include/xqilla/fulltext/FTContains.hpp new file mode 100644 index 00000000..47143eb4 --- /dev/null +++ b/include/xqilla/fulltext/FTContains.hpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTContains.hpp,v 1.3 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _FTCONTAINS_HPP +#define _FTCONTAINS_HPP + +#include + +#include +#include + +class FTSelection; + +class XQILLA_API FTContains : public ASTNodeImpl +{ +public: + FTContains(ASTNode *argument, FTSelection *selection, ASTNode *ignore, XPath2MemoryManager *memMgr); + ~FTContains(); + + virtual ASTNode *staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + virtual Result createResult(DynamicContext *context, int flags=0) const; + + const ASTNode *getArgument() const { return argument_; } + const FTSelection *getSelection() const { return selection_; } + const ASTNode *getIgnore() const { return ignore_; } + +private: + class XQILLA_API FTContainsResult : public SingleResult + { + public: + FTContainsResult(const FTContains *parent); + Item::Ptr getSingleResult(DynamicContext *context) const; + std::string asString(DynamicContext *context, int indent) const; + + private: + const FTContains *parent_; + }; + +private: + ASTNode *argument_; + FTSelection *selection_; + ASTNode *ignore_; +}; + +#endif + diff --git a/include/xqilla/fulltext/FTContent.hpp b/include/xqilla/fulltext/FTContent.hpp new file mode 100644 index 00000000..b499b474 --- /dev/null +++ b/include/xqilla/fulltext/FTContent.hpp @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTContent.hpp,v 1.4 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _FTCONTENT_HPP +#define _FTCONTENT_HPP + +#include + +class XQILLA_API FTContent : public FTOption +{ +public: + enum Type { + AT_START, + AT_END, + ENTIRE_CONTENT + }; + + FTContent(Type type, XPath2MemoryManager *memMgr) + : FTOption(FTSelection::CONTENT, memMgr), type_(type), arg_(0) {} + FTContent(FTSelection *arg, Type type, XPath2MemoryManager *memMgr) + : FTOption(FTSelection::CONTENT, memMgr), type_(type), arg_(arg) {} + + virtual FTSelection *staticResolution(StaticContext *context); + virtual FTSelection *staticTyping(StaticContext *context); + virtual FTSelection *optimize(FTContext *context, bool execute) const; + virtual AllMatches::Ptr execute(FTContext *ftcontext) const; + + virtual void setArgument(FTSelection *arg) { arg_ = arg; } + const FTSelection *getArgument() const { return arg_; } + Type getType() const { return type_; } + +private: + Type type_; + FTSelection *arg_; +}; + +class FTContentAtStartMatches : public AllMatches +{ +public: + FTContentAtStartMatches(const LocationInfo *info, const AllMatches::Ptr &arg) + : AllMatches(info), arg_(arg) {} + Match::Ptr next(DynamicContext *context); + +private: + AllMatches::Ptr arg_; +}; + +class FTContentAtEndMatches : public AllMatches +{ +public: + FTContentAtEndMatches(const LocationInfo *info, const AllMatches::Ptr &arg) + : AllMatches(info), arg_(arg) {} + Match::Ptr next(DynamicContext *context); + +private: + AllMatches::Ptr arg_; +}; + +#endif diff --git a/include/xqilla/fulltext/FTDistance.hpp b/include/xqilla/fulltext/FTDistance.hpp new file mode 100644 index 00000000..52f2cf60 --- /dev/null +++ b/include/xqilla/fulltext/FTDistance.hpp @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTDistance.hpp,v 1.4 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _FTDISTANCE_HPP +#define _FTDISTANCE_HPP + +#include +#include + +class XQILLA_API FTDistance : public FTOption +{ +public: + FTDistance(const FTRange &range, FTUnit unit, XPath2MemoryManager *memMgr) + : FTOption(FTSelection::DISTANCE, memMgr), arg_(0), range_(range), unit_(unit) {} + FTDistance(const FTRange &range, FTUnit unit, FTSelection *arg, XPath2MemoryManager *memMgr) + : FTOption(FTSelection::DISTANCE, memMgr), arg_(arg), range_(range), unit_(unit) {} + + virtual FTSelection *staticResolution(StaticContext *context); + virtual FTSelection *staticTyping(StaticContext *context); + virtual FTSelection *optimize(FTContext *context, bool execute) const; + virtual AllMatches::Ptr execute(FTContext *ftcontext) const; + + virtual void setArgument(FTSelection *arg) { arg_ = arg; } + const FTSelection *getArgument() const { return arg_; } + const FTRange &getRange() const { return range_; } + FTUnit getUnit() const { return unit_; } + +private: + FTSelection *arg_; + FTRange range_; + FTUnit unit_; +}; + +class XQILLA_API FTDistanceLiteral : public FTOption +{ +public: + FTDistanceLiteral(FTRange::Type type, unsigned int distance, unsigned int distance2, + FTUnit unit, XPath2MemoryManager *memMgr) + : FTOption(DISTANCE_LITERAL, memMgr), arg_(0), type_(type), distance_(distance), + distance2_(distance2), unit_(unit) {} + FTDistanceLiteral(FTSelection *arg, FTRange::Type type, unsigned int distance, + unsigned int distance2, FTUnit unit, XPath2MemoryManager *memMgr) + : FTOption(DISTANCE_LITERAL, memMgr), arg_(arg), type_(type), distance_(distance), + distance2_(distance2), unit_(unit) {} + + virtual FTSelection *staticResolution(StaticContext *context); + virtual FTSelection *staticTyping(StaticContext *context); + virtual FTSelection *optimize(FTContext *context, bool execute) const; + virtual AllMatches::Ptr execute(FTContext *ftcontext) const; + + virtual void setArgument(FTSelection *arg) { arg_ = arg; } + const FTSelection *getArgument() const { return arg_; } + const FTRange::Type getType() const { return type_; } + unsigned int getDistance() const { return distance_; } + unsigned int getDistance2() const { return distance2_; } + FTUnit getUnit() const { return unit_; } + +private: + FTSelection *arg_; + FTRange::Type type_; + unsigned int distance_, distance2_; + FTUnit unit_; +}; + +class FTDistanceMatches : public AllMatches +{ +public: + FTDistanceMatches(const LocationInfo *info, unsigned int distance, FTOption::FTUnit unit, const AllMatches::Ptr &arg) + : AllMatches(info), distance_(distance), unit_(unit), arg_(arg) {} + Match::Ptr next(DynamicContext *context); + + virtual bool distanceMatches(unsigned int actual) const = 0; + +protected: + unsigned int distance_; + FTOption::FTUnit unit_; + AllMatches::Ptr arg_; +}; + +class FTDistanceExactlyMatches : public FTDistanceMatches +{ +public: + FTDistanceExactlyMatches(const LocationInfo *info, unsigned int distance, FTOption::FTUnit unit, const AllMatches::Ptr &arg) + : FTDistanceMatches(info, distance, unit, arg) {} + bool distanceMatches(unsigned int actual) const; +}; + +class FTDistanceAtLeastMatches : public FTDistanceMatches +{ +public: + FTDistanceAtLeastMatches(const LocationInfo *info, unsigned int distance, FTOption::FTUnit unit, const AllMatches::Ptr &arg) + : FTDistanceMatches(info, distance, unit, arg) {} + bool distanceMatches(unsigned int actual) const; +}; + +class FTDistanceAtMostMatches : public FTDistanceMatches +{ +public: + FTDistanceAtMostMatches(const LocationInfo *info, unsigned int distance, FTOption::FTUnit unit, const AllMatches::Ptr &arg) + : FTDistanceMatches(info, distance, unit, arg) {} + bool distanceMatches(unsigned int actual) const; +}; + +class FTDistanceFromToMatches : public FTDistanceMatches +{ +public: + FTDistanceFromToMatches(const LocationInfo *info, unsigned int from, unsigned int to, FTOption::FTUnit unit, const AllMatches::Ptr &arg) + : FTDistanceMatches(info, from, unit, arg), distance2_(to) {} + bool distanceMatches(unsigned int actual) const; + +private: + unsigned int distance2_; +}; + +#endif diff --git a/include/xqilla/fulltext/FTMildnot.hpp b/include/xqilla/fulltext/FTMildnot.hpp new file mode 100644 index 00000000..ba1cfb76 --- /dev/null +++ b/include/xqilla/fulltext/FTMildnot.hpp @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTMildnot.hpp,v 1.4 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _FTMILDNOT_HPP +#define _FTMILDNOT_HPP + +#include + +#include + +class XQILLA_API FTMildnot : public FTSelection +{ +public: + FTMildnot(FTSelection *left, FTSelection *right, XPath2MemoryManager *memMgr); + + virtual FTSelection *staticResolution(StaticContext *context); + virtual FTSelection *staticTyping(StaticContext *context); + virtual FTSelection *optimize(FTContext *context, bool execute) const; + virtual AllMatches::Ptr execute(FTContext *ftcontext) const; + + const FTSelection *getLeft() const { return left_; } + const FTSelection *getRight() const { return right_; } + +private: + FTSelection *left_, *right_; +}; + +class FTMildnotMatches : public AllMatches +{ +public: + FTMildnotMatches(const LocationInfo *info, const AllMatches::Ptr &left, const AllMatches::Ptr &right) + : AllMatches(info), left_(left), right_(right) {} + Match::Ptr next(DynamicContext *context); + +private: + AllMatches::Ptr left_; + AllMatches::Ptr right_; + std::set badTokens_; +}; + +#endif diff --git a/include/xqilla/fulltext/FTOption.hpp b/include/xqilla/fulltext/FTOption.hpp new file mode 100644 index 00000000..db7b115e --- /dev/null +++ b/include/xqilla/fulltext/FTOption.hpp @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTOption.hpp,v 1.3 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _FTOPTION_HPP +#define _FTOPTION_HPP + +#include +#include + +class XQILLA_API FTOption : public FTSelection +{ +public: + enum FTUnit { + WORDS, + SENTENCES, + PARAGRAPHS + }; + + virtual void setArgument(FTSelection *arg) = 0; + + static unsigned int tokenUnit(const TokenInfo::Ptr t, FTUnit unit) + { + switch(unit) { + case WORDS: + return t->getPosition(); + case SENTENCES: + return t->getSentence(); + case PARAGRAPHS: + return t->getParagraph(); + } + return 0; + } + + static unsigned int tokenDistance(const TokenInfo::Ptr a, const TokenInfo::Ptr b, FTUnit unit) + { + switch(unit) { + case WORDS: + return (unsigned int)labs((long)a->getPosition() - (long)b->getPosition()) - 1; + case SENTENCES: + return (unsigned int)labs((long)a->getSentence() - (long)b->getSentence()); + case PARAGRAPHS: + return (unsigned int)labs((long)a->getParagraph() - (long)b->getParagraph()); + } + return 0; + } + +protected: + FTOption(Type type, XPath2MemoryManager *memMgr) + : FTSelection(type, memMgr) {} +}; + +typedef std::vector > VectorOfFTOptions; + +#endif diff --git a/include/xqilla/fulltext/FTOr.hpp b/include/xqilla/fulltext/FTOr.hpp new file mode 100644 index 00000000..6771f3e3 --- /dev/null +++ b/include/xqilla/fulltext/FTOr.hpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTOr.hpp,v 1.4 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _FTOR_HPP +#define _FTOR_HPP + +#include + +#include + +class XQILLA_API FTOr : public FTSelection +{ +public: + FTOr(XPath2MemoryManager *memMgr); + FTOr(FTSelection *left, FTSelection *right, XPath2MemoryManager *memMgr); + + virtual FTSelection *staticResolution(StaticContext *context); + virtual FTSelection *staticTyping(StaticContext *context); + virtual FTSelection *optimize(FTContext *context, bool execute) const; + virtual AllMatches::Ptr execute(FTContext *ftcontext) const; + + const VectorOfFTSelections &getArguments() const { return args_; } + void addArg(FTSelection *sel) { args_.push_back(sel); } + +private: + VectorOfFTSelections args_; +}; + +class FTDisjunctionMatches : public AllMatches +{ +public: + FTDisjunctionMatches(const LocationInfo *info); + + void addMatches(const AllMatches::Ptr &m) + { + args_.push_back(m); + } + + Match::Ptr next(DynamicContext *context); + +private: + bool toDo_; + std::vector args_; + std::vector::iterator it_; +}; + +#endif diff --git a/include/xqilla/fulltext/FTOrder.hpp b/include/xqilla/fulltext/FTOrder.hpp new file mode 100644 index 00000000..7deb0e1c --- /dev/null +++ b/include/xqilla/fulltext/FTOrder.hpp @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTOrder.hpp,v 1.4 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _FTORDER_HPP +#define _FTORDER_HPP + +#include + +class XQILLA_API FTOrder : public FTOption +{ +public: + FTOrder(XPath2MemoryManager *memMgr) + : FTOption(FTSelection::ORDER, memMgr), arg_(0) {} + FTOrder(FTSelection *arg, XPath2MemoryManager *memMgr) + : FTOption(FTSelection::ORDER, memMgr), arg_(arg) {} + + virtual FTSelection *staticResolution(StaticContext *context); + virtual FTSelection *staticTyping(StaticContext *context); + virtual FTSelection *optimize(FTContext *context, bool execute) const; + virtual AllMatches::Ptr execute(FTContext *ftcontext) const; + + virtual void setArgument(FTSelection *arg) { arg_ = arg; } + const FTSelection *getArgument() const { return arg_; } + +private: + FTSelection *arg_; +}; + +class FTOrderMatches : public AllMatches +{ +public: + FTOrderMatches(const FTOrder *ft, const AllMatches::Ptr &arg) + : AllMatches(ft), arg_(arg) {} + Match::Ptr next(DynamicContext *context); + +private: + AllMatches::Ptr arg_; +}; + +#endif diff --git a/include/xqilla/fulltext/FTRange.hpp b/include/xqilla/fulltext/FTRange.hpp new file mode 100644 index 00000000..f6c6c2a2 --- /dev/null +++ b/include/xqilla/fulltext/FTRange.hpp @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTRange.hpp,v 1.2 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _FTRANGE_HPP +#define _FTRANGE_HPP + +class ASTNode; + +class XQILLA_API FTRange +{ +public: + enum Type { + EXACTLY, + AT_LEAST, + AT_MOST, + FROM_TO + }; + + Type type; + ASTNode *arg1, *arg2; +}; + +#endif diff --git a/include/xqilla/fulltext/FTScope.hpp b/include/xqilla/fulltext/FTScope.hpp new file mode 100644 index 00000000..716e28e1 --- /dev/null +++ b/include/xqilla/fulltext/FTScope.hpp @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTScope.hpp,v 1.4 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _FTSCOPE_HPP +#define _FTSCOPE_HPP + +#include + +class XQILLA_API FTScope : public FTOption +{ +public: + enum Type { + SAME, + DIFFERENT + }; + + FTScope(Type type, FTUnit unit, XPath2MemoryManager *memMgr) + : FTOption(FTSelection::SCOPE, memMgr), type_(type), unit_(unit), arg_(0) {} + FTScope(FTSelection *arg, Type type, FTUnit unit, XPath2MemoryManager *memMgr) + : FTOption(FTSelection::SCOPE, memMgr), type_(type), unit_(unit), arg_(arg) {} + + virtual FTSelection *staticResolution(StaticContext *context); + virtual FTSelection *staticTyping(StaticContext *context); + virtual FTSelection *optimize(FTContext *context, bool execute) const; + virtual AllMatches::Ptr execute(FTContext *ftcontext) const; + + virtual void setArgument(FTSelection *arg) { arg_ = arg; } + const FTSelection *getArgument() const { return arg_; } + Type getType() const { return type_; } + FTUnit getUnit() const { return unit_; } + +private: + Type type_; + FTUnit unit_; + FTSelection *arg_; +}; + +class FTScopeSameMatches : public AllMatches +{ +public: + FTScopeSameMatches(const LocationInfo *info, FTOption::FTUnit unit, const AllMatches::Ptr &arg) + : AllMatches(info), unit_(unit), arg_(arg) {} + Match::Ptr next(DynamicContext *context); + +private: + FTOption::FTUnit unit_; + AllMatches::Ptr arg_; +}; + +class FTScopeDifferentMatches : public AllMatches +{ +public: + FTScopeDifferentMatches(const LocationInfo *info, FTOption::FTUnit unit, const AllMatches::Ptr &arg) + : AllMatches(info), unit_(unit), arg_(arg) {} + Match::Ptr next(DynamicContext *context); + +private: + FTOption::FTUnit unit_; + AllMatches::Ptr arg_; +}; + +#endif diff --git a/include/xqilla/fulltext/FTSelection.hpp b/include/xqilla/fulltext/FTSelection.hpp new file mode 100644 index 00000000..e2e0a6b3 --- /dev/null +++ b/include/xqilla/fulltext/FTSelection.hpp @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTSelection.hpp,v 1.5 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _FTSELECTION_HPP +#define _FTSELECTION_HPP + + +#include +#include +#include +#include +#include +#include + +#include + +class DynamicContext; +class StaticContext; + +class XQILLA_API FTContext +{ +public: + FTContext(const Tokenizer *tok, const TokenStore::Ptr &tStore, DynamicContext *cont) + : queryPos(0), tokenizer(tok), tokenStore(tStore), context(cont) {} + + unsigned int queryPos; + const Tokenizer *tokenizer; + TokenStore::Ptr tokenStore; + DynamicContext *context; +}; + +class XQILLA_API FTSelection : public LocationInfo +{ +public: + /// The type of the FTSelection node + enum Type { + OR, + AND, + MILD_NOT, + UNARY_NOT, + WORDS, + WORD, + ORDER, + DISTANCE, + DISTANCE_LITERAL, + SCOPE, + CONTENT, + WINDOW, + WINDOW_LITERAL + }; + + virtual ~FTSelection() {} + + Type getType() const { return type_; } + + virtual const StaticResolutionContext &getStaticResolutionContext() const { return src_; } + + virtual FTSelection *staticResolution(StaticContext *context) = 0; + virtual FTSelection *staticTyping(StaticContext *context) = 0; + virtual FTSelection *optimize(FTContext *context, bool execute) const = 0; + virtual AllMatches::Ptr execute(FTContext *ftcontext) const = 0; + +protected: + FTSelection(Type type, XPath2MemoryManager *memMgr) + : src_(memMgr), type_(type), memMgr_(memMgr) {} + + XPath2MemoryManager *getMemoryManager() const { return memMgr_; } + + StaticResolutionContext src_; + +private: + Type type_; + XPath2MemoryManager *memMgr_; +}; + +typedef std::vector > VectorOfFTSelections; + +#endif diff --git a/include/xqilla/fulltext/FTUnaryNot.hpp b/include/xqilla/fulltext/FTUnaryNot.hpp new file mode 100644 index 00000000..4bfea10b --- /dev/null +++ b/include/xqilla/fulltext/FTUnaryNot.hpp @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTUnaryNot.hpp,v 1.4 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _FTUNARYNOT_HPP +#define _FTUNARYNOT_HPP + +#include + +class XQILLA_API FTUnaryNot : public FTSelection +{ +public: + FTUnaryNot(FTSelection *arg, XPath2MemoryManager *memMgr); + + virtual FTSelection *staticResolution(StaticContext *context); + virtual FTSelection *staticTyping(StaticContext *context); + virtual FTSelection *optimize(FTContext *context, bool execute) const; + virtual AllMatches::Ptr execute(FTContext *ftcontext) const; + + const FTSelection *getArgument() const { return arg_; } + +private: + FTSelection *arg_; +}; + +class FTUnaryNotMatches : public AllMatches +{ +public: + FTUnaryNotMatches(const LocationInfo *info, const AllMatches::Ptr &arg) + : AllMatches(info), toDo_(true), arg_(arg) {} + Match::Ptr next(DynamicContext *context); + +private: + bool toDo_; + AllMatches::Ptr arg_; +}; + +#endif diff --git a/include/xqilla/fulltext/FTWindow.hpp b/include/xqilla/fulltext/FTWindow.hpp new file mode 100644 index 00000000..26fffa01 --- /dev/null +++ b/include/xqilla/fulltext/FTWindow.hpp @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTWindow.hpp,v 1.4 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _FTWINDOW_HPP +#define _FTWINDOW_HPP + +#include + +#include + +class ASTNode; + +class XQILLA_API FTWindow : public FTOption +{ +public: + FTWindow(ASTNode *expr, FTUnit unit, XPath2MemoryManager *memMgr) + : FTOption(FTSelection::WINDOW, memMgr), expr_(expr), unit_(unit), arg_(0) {} + FTWindow(FTSelection *arg, ASTNode *expr, FTUnit unit, XPath2MemoryManager *memMgr) + : FTOption(FTSelection::WINDOW, memMgr), expr_(expr), unit_(unit), arg_(arg) {} + + virtual FTSelection *staticResolution(StaticContext *context); + virtual FTSelection *staticTyping(StaticContext *context); + virtual FTSelection *optimize(FTContext *context, bool execute) const; + virtual AllMatches::Ptr execute(FTContext *ftcontext) const; + + virtual void setArgument(FTSelection *arg) { arg_ = arg; } + const FTSelection *getArgument() const { return arg_; } + const ASTNode *getExpr() const { return expr_; } + FTUnit getUnit() const { return unit_; } + +private: + ASTNode *expr_; + FTUnit unit_; + FTSelection *arg_; +}; + +class XQILLA_API FTWindowLiteral : public FTOption +{ +public: + FTWindowLiteral(FTSelection *arg, unsigned int distance, FTUnit unit, + XPath2MemoryManager *memMgr) + : FTOption(WINDOW_LITERAL, memMgr), arg_(arg), distance_(distance), + unit_(unit) {} + + virtual FTSelection *staticResolution(StaticContext *context); + virtual FTSelection *staticTyping(StaticContext *context); + virtual FTSelection *optimize(FTContext *context, bool execute) const; + virtual AllMatches::Ptr execute(FTContext *ftcontext) const; + + virtual void setArgument(FTSelection *arg) { arg_ = arg; } + const FTSelection *getArgument() const { return arg_; } + unsigned int getDistance() const { return distance_; } + FTUnit getUnit() const { return unit_; } + +private: + FTSelection *arg_; + unsigned int distance_; + FTUnit unit_; +}; + +class FTWindowMatches : public AllMatches +{ +public: + FTWindowMatches(const LocationInfo *info, unsigned int distance, FTOption::FTUnit unit, const AllMatches::Ptr &arg) + : AllMatches(info), distance_(distance), unit_(unit), arg_(arg) {} + Match::Ptr next(DynamicContext *context); + +private: + unsigned int distance_; + FTOption::FTUnit unit_; + AllMatches::Ptr arg_; + Match::Ptr match_; + std::set excludeValues_; + std::set::iterator excludeIt_; +}; + +#endif diff --git a/include/xqilla/fulltext/FTWords.hpp b/include/xqilla/fulltext/FTWords.hpp new file mode 100644 index 00000000..e2175e70 --- /dev/null +++ b/include/xqilla/fulltext/FTWords.hpp @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTWords.hpp,v 1.4 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _FTWORDS_HPP +#define _FTWORDS_HPP + +#include +#include + +class ASTNode; + +class XQILLA_API FTWords : public FTSelection +{ +public: + /// Enumeration representing the way to match words and phrases + enum FTAnyallOption { + ANY, + ANY_WORD, + ALL, + ALL_WORDS, + PHRASE + }; + + FTWords(ASTNode *expr, FTAnyallOption option, XPath2MemoryManager *memMgr); + + virtual FTSelection *staticResolution(StaticContext *context); + virtual FTSelection *staticTyping(StaticContext *context); + virtual FTSelection *optimize(FTContext *context, bool execute) const; + virtual AllMatches::Ptr execute(FTContext *ftcontext) const; + + const ASTNode *getExpr() const { return expr_; } + FTAnyallOption getOption() const { return option_; } + +private: + FTSelection *optimizeAnyWord(Result strings, FTContext *ftcontext) const; + FTSelection *optimizeAllWords(Result strings, FTContext *ftcontext) const; + FTSelection *optimizePhrase(Result strings, FTContext *ftcontext) const; + FTSelection *optimizeAny(Result strings, FTContext *ftcontext) const; + FTSelection *optimizeAll(Result strings, FTContext *ftcontext) const; + + ASTNode *expr_; + FTAnyallOption option_; +}; + +class XQILLA_API FTWord : public FTSelection +{ +public: + FTWord(const XMLCh *queryString, XPath2MemoryManager *memMgr); + + virtual FTSelection *staticResolution(StaticContext *context); + virtual FTSelection *staticTyping(StaticContext *context); + virtual FTSelection *optimize(FTContext *context, bool execute) const; + virtual AllMatches::Ptr execute(FTContext *ftcontext) const; + + const XMLCh *getQueryString() const { return queryString_; } + +private: + const XMLCh *queryString_; +}; + +class FTStringSearchMatches : public AllMatches +{ +public: + FTStringSearchMatches(const LocationInfo *info, const XMLCh *queryString, FTContext *ftcontext); + Match::Ptr next(DynamicContext *context); + AllMatches::Ptr optimize(); + +private: + const XMLCh *queryString_; + unsigned int queryPos_; + TokenStream::Ptr tokenStream_; +}; + +#endif diff --git a/include/xqilla/fulltext/Match.hpp b/include/xqilla/fulltext/Match.hpp new file mode 100644 index 00000000..abaaabef --- /dev/null +++ b/include/xqilla/fulltext/Match.hpp @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Match.hpp,v 1.2 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _MATCH_HPP +#define _MATCH_HPP + + +#include + +#include +#include +#include + +class XQILLA_API StringMatch +{ +public: + StringMatch() + : queryString(0), queryPos(0), tokenInfo(0), startToken(false), endToken(false) {} + StringMatch(const XMLCh *qString, unsigned int qPos, const TokenInfo::Ptr &tInfo) + : queryString(qString), queryPos(qPos), tokenInfo(tInfo), startToken(false), endToken(false) {} + + const XMLCh *queryString; + unsigned int queryPos; + TokenInfo::Ptr tokenInfo; + bool startToken, endToken; +}; + +typedef std::vector StringMatches; + +class XQILLA_API Match : public ReferenceCounted +{ +public: + typedef RefCountPointer Ptr; + + Match() {} + + const StringMatches &getStringIncludes() const { return includes_; } + const StringMatches &getStringExcludes() const { return excludes_; } + + void addStringInclude(const XMLCh *queryString, unsigned int queryPos, const TokenInfo::Ptr &tokenInfo) + { + includes_.push_back(StringMatch(queryString, queryPos, tokenInfo)); + } + void addStringExclude(const XMLCh *queryString, unsigned int queryPos, const TokenInfo::Ptr &tokenInfo) + { + excludes_.push_back(StringMatch(queryString, queryPos, tokenInfo)); + } + void addStringInclude(const StringMatch &match) + { + includes_.push_back(match); + } + void addStringExclude(const StringMatch &match) + { + excludes_.push_back(match); + } + void addStringIncludes(const StringMatches &sMatches) + { + for(StringMatches::const_iterator j = sMatches.begin(); j != sMatches.end(); ++j) { + includes_.push_back(*j); + } + } + void addStringExcludes(const StringMatches &sMatches) + { + for(StringMatches::const_iterator j = sMatches.begin(); j != sMatches.end(); ++j) { + excludes_.push_back(*j); + } + } + void add(const Match::Ptr &match) { + addStringIncludes(match->getStringIncludes()); + addStringExcludes(match->getStringExcludes()); + } + +private: + StringMatches includes_; + StringMatches excludes_; +}; + +#endif diff --git a/include/xqilla/fulltext/TokenInfo.hpp b/include/xqilla/fulltext/TokenInfo.hpp new file mode 100644 index 00000000..335bfb11 --- /dev/null +++ b/include/xqilla/fulltext/TokenInfo.hpp @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: TokenInfo.hpp,v 1.2 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _TOKENINFO_HPP +#define _TOKENINFO_HPP + +#include +#include + +#include + +class XQILLA_API TokenInfo : public ReferenceCounted +{ +public: + typedef RefCountPointer Ptr; + + virtual ~TokenInfo() {} + + virtual const XMLCh *getWord() const = 0; + virtual unsigned int getPosition() const = 0; + virtual unsigned int getSentence() const = 0; + virtual unsigned int getParagraph() const = 0; + +protected: + TokenInfo() {} +}; + +class XQILLA_API TokenStream : public ReferenceCounted +{ +public: + typedef RefCountPointer Ptr; + + virtual ~TokenStream() {} + + virtual TokenInfo::Ptr next() = 0; + +protected: + TokenStream() {} +}; + +#endif diff --git a/include/xqilla/fulltext/TokenStore.hpp b/include/xqilla/fulltext/TokenStore.hpp new file mode 100644 index 00000000..751eb73a --- /dev/null +++ b/include/xqilla/fulltext/TokenStore.hpp @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: TokenStore.hpp,v 1.2 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _TOKENSTORE_HPP +#define _TOKENSTORE_HPP + +#include +#include +#include + +class Tokenizer; + +class XQILLA_API TokenStore : public ReferenceCounted +{ +public: + typedef RefCountPointer Ptr; + + virtual ~TokenStore() {} + + virtual TokenStream::Ptr findTokens(const XMLCh *searchString) const = 0; + + virtual unsigned int getStartTokenPosition() const = 0; + virtual unsigned int getEndTokenPosition() const = 0; + +protected: + TokenStore() {} +}; + +#endif diff --git a/include/xqilla/fulltext/Tokenizer.hpp b/include/xqilla/fulltext/Tokenizer.hpp new file mode 100644 index 00000000..3d0c5cd9 --- /dev/null +++ b/include/xqilla/fulltext/Tokenizer.hpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Tokenizer.hpp,v 1.2 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _TOKENIZER_HPP +#define _TOKENIZER_HPP + +#include +#include +#include + +class XPath2MemoryManager; +class DynamicContext; + +class XQILLA_API Tokenizer +{ +public: + virtual ~Tokenizer() {} + + virtual TokenStream::Ptr tokenize(const Node::Ptr &node, DynamicContext *context) const = 0; + virtual TokenStream::Ptr tokenize(const XMLCh *string, XPath2MemoryManager *mm) const = 0; + +protected: + Tokenizer() {} +}; + +#endif diff --git a/include/xqilla/functions/FuncFactory.hpp b/include/xqilla/functions/FuncFactory.hpp new file mode 100644 index 00000000..e995ecda --- /dev/null +++ b/include/xqilla/functions/FuncFactory.hpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FuncFactory.hpp,v 1.8 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + Factory base class +*/ + +#ifndef _FUNCFACTORY_HPP +#define _FUNCFACTORY_HPP + +#include + +#include + +class XQILLA_API FuncFactory +{ +public: + FuncFactory(); + virtual ~FuncFactory(); + + ///Create instance of a function, using FuncFactoryTemplate to determine type + virtual ASTNode *createInstance(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) const = 0; + + virtual const XMLCh *getName() const = 0; + virtual const XMLCh *getURI() const = 0; + virtual unsigned int getMinArgs() const = 0; + virtual unsigned int getMaxArgs() const = 0; +}; + +#endif + diff --git a/include/xqilla/functions/FunctionAbs.hpp b/include/xqilla/functions/FunctionAbs.hpp new file mode 100644 index 00000000..5943ff17 --- /dev/null +++ b/include/xqilla/functions/FunctionAbs.hpp @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionAbs.hpp,v 1.8 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + fn:abs($arg as numeric?) as numeric? +*/ + +#ifndef _FUNCTIONABS_HPP +#define _FUNCTIONABS_HPP + +#include + +#include + +class XQILLA_API FunctionAbs : public NumericFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionAbs(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONABS_HPP + diff --git a/include/xqilla/functions/FunctionAdjustDateTimeToTimezone.hpp b/include/xqilla/functions/FunctionAdjustDateTimeToTimezone.hpp new file mode 100644 index 00000000..ea3e1dab --- /dev/null +++ b/include/xqilla/functions/FunctionAdjustDateTimeToTimezone.hpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionAdjustDateTimeToTimezone.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _FUNCTIONADJUSTDATETIMETOTIMEZONE_HPP +#define _FUNCTIONADJUSTDATETIMETOTIMEZONE_HPP + +#include + +#include + +/** + * Adjusts a dateTime to a specific timezone, or to no timezone at all + * + * fn:adjust-dateTime-to-timezone(dateTime? $srcval) => dateTime? + * fn:adjust-dateTime-to-timezone(dateTime? $srcval, dayTimeDuration? $timezone) => dateTime? + */ +class XQILLA_API FunctionAdjustDateTimeToTimezone : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor + */ + FunctionAdjustDateTimeToTimezone(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Called during static analysis to determine if statically correct. + * Performs constant folding if the function has two arguments, and + * they are constant. + */ + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** + * Adjusts a dateTime to a specific timezone, or to no timezone at all + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONADJUSTDATETIMETOTIMEZONE_HPP + + + diff --git a/include/xqilla/functions/FunctionAdjustDateToTimezone.hpp b/include/xqilla/functions/FunctionAdjustDateToTimezone.hpp new file mode 100644 index 00000000..3843d5b6 --- /dev/null +++ b/include/xqilla/functions/FunctionAdjustDateToTimezone.hpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionAdjustDateToTimezone.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _FUNCTIONADJUSTDATETOTIMEZONE_HPP +#define _FUNCTIONADJUSTDATETOTIMEZONE_HPP + +#include + +#include + +/** + * Adjusts a date to a specific timezone, or to no timezone at all + * + * fn:adjust-date-to-timezone(date? $srcval) => date? + * fn:adjust-date-to-timezone(date? $srcval, dayTimeDuration? $timezone) => date? + */ +class XQILLA_API FunctionAdjustDateToTimezone : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor + */ + FunctionAdjustDateToTimezone(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Called during static analysis to determine if statically correct. + * Performs constant folding if the function has two arguments, and + * they are constant. + */ + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** + * Adjusts a date to a specific timezone, or to no timezone at all + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONADJUSTDATETOTIMEZONE_HPP + + + diff --git a/include/xqilla/functions/FunctionAdjustTimeToTimezone.hpp b/include/xqilla/functions/FunctionAdjustTimeToTimezone.hpp new file mode 100644 index 00000000..1d750ca3 --- /dev/null +++ b/include/xqilla/functions/FunctionAdjustTimeToTimezone.hpp @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionAdjustTimeToTimezone.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $ + */ + +#ifndef _FUNCTIONADJUSTTIMETOTIMEZONE_HPP +#define _FUNCTIONADJUSTTIMETOTIMEZONE_HPP + +#include + +#include + +/** + * Adjusts a time to a specific timezone, or to no timezone at all + * + * fn:adjust-time-to-timezone(time? $srcval) => time? + * fn:adjust-time-to-timezone(time? $srcval, dayTimeDuration? $timezone) => time? + */ +class XQILLA_API FunctionAdjustTimeToTimezone : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor + */ + FunctionAdjustTimeToTimezone(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Called during static analysis to determine if statically correct. + * Performs constant folding if the function has two arguments, and + * they are constant. + */ + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** + * Adjusts a time to a specific timezone, or to no timezone at all + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONADJUSTTIMETOTIMEZONE_HPP diff --git a/include/xqilla/functions/FunctionAvg.hpp b/include/xqilla/functions/FunctionAvg.hpp new file mode 100644 index 00000000..9d99aced --- /dev/null +++ b/include/xqilla/functions/FunctionAvg.hpp @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionAvg.hpp,v 1.8 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + * Avg function -- takes a sequence, returns a vlue of the same type as the items which is + * the average of the values + */ + +#ifndef _FUNCTIONAVG_HPP +#define _FUNCTIONAVG_HPP + +#include + +/** Avg operator function*/ +class XQILLA_API FunctionAvg : public AggregateFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionAvg(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** Takes a list of nodes and averages their values */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONAVG_HPP diff --git a/include/xqilla/functions/FunctionBaseURI.hpp b/include/xqilla/functions/FunctionBaseURI.hpp new file mode 100644 index 00000000..3d9540f7 --- /dev/null +++ b/include/xqilla/functions/FunctionBaseURI.hpp @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionBaseURI.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + + base-uri function + +*/ + +#ifndef _FUNCTIONBASEURI_HPP +#define _FUNCTIONBASEURI_HPP + +#include + +#include +#include + +/** base-uri function */ +class XQILLA_API FunctionBaseURI : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionBaseURI(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /* returns the base-URI property of document or element nodes, + * and the empty sequence for all other kinds of nodes */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif diff --git a/include/xqilla/functions/FunctionBoolean.hpp b/include/xqilla/functions/FunctionBoolean.hpp new file mode 100644 index 00000000..a619ddfc --- /dev/null +++ b/include/xqilla/functions/FunctionBoolean.hpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionBoolean.hpp,v 1.10 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + + Boolean function + +*/ + +#ifndef _FUNCTIONBOOLEAN_HPP +#define _FUNCTIONBOOLEAN_HPP + +#include + +#include + +/** Boolean operator function, and exists functions. Warning, you may need to think + about this one, but in fact, these two functions have the same behaviour. */ +class XQILLA_API FunctionBoolean : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + ///Constructor. Sets arg def to NOT_OPTIONAL + FunctionBoolean(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + /** Returns the argument as a boolean. Sets result to value of getNextBool() **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONBOOLEAN_HPP diff --git a/include/xqilla/functions/FunctionCeiling.hpp b/include/xqilla/functions/FunctionCeiling.hpp new file mode 100644 index 00000000..2d639909 --- /dev/null +++ b/include/xqilla/functions/FunctionCeiling.hpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionCeiling.hpp,v 1.8 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + + xf:ceiling(numeric? $srcval) => numeric? + +*/ + +#ifndef _FUNCTIONCEILING_HPP +#define _FUNCTIONCEILING_HPP + +#include + +#include + +class XQILLA_API FunctionCeiling : public NumericFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionCeiling(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONCEILING_HPP + diff --git a/include/xqilla/functions/FunctionCodepointEqual.hpp b/include/xqilla/functions/FunctionCodepointEqual.hpp new file mode 100644 index 00000000..b84ffe6e --- /dev/null +++ b/include/xqilla/functions/FunctionCodepointEqual.hpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionCodepointEqual.hpp,v 1.10 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + codepoint-equal function +*/ + +#ifndef _FUNCTION_CODEPOINT_EQUAL_HPP +#define _FUNCTION_CODEPOINT_EQUAL_HPP + +#include + +#include + +class XQILLA_API FunctionCodepointEqual : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionCodepointEqual(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +private: + Collation *collation_; +}; + +#endif // _FUNCTION_CODEPOINT_EQUAL_HPP diff --git a/include/xqilla/functions/FunctionCodepointsToString.hpp b/include/xqilla/functions/FunctionCodepointsToString.hpp new file mode 100644 index 00000000..0e266fdc --- /dev/null +++ b/include/xqilla/functions/FunctionCodepointsToString.hpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionCodepointsToString.hpp,v 1.8 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + codepoints-to-string function +*/ + +#ifndef _FUNCTIONCODEPOINTSTOSTRING_HPP +#define _FUNCTIONCODEPOINTSTOSTRING_HPP + +#include + +#include + +/** codepoints-to-string function */ +class XQILLA_API FunctionCodepointsToString : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + ///Constructor. + FunctionCodepointsToString(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + +protected: + /** takes a series of integers (codepoints) and turns them into a unicode string */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; +#endif // _FUNCTIONCODEPOINTSTOSTRING_HPP + diff --git a/include/xqilla/functions/FunctionCollection.hpp b/include/xqilla/functions/FunctionCollection.hpp new file mode 100644 index 00000000..2ef72348 --- /dev/null +++ b/include/xqilla/functions/FunctionCollection.hpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionCollection.hpp,v 1.9 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + + Collection function + +*/ + +#ifndef _FUNCTIONCOLLECTION_HPP +#define _FUNCTIONCOLLECTION_HPP + +#include + +#include + +/** collection function. */ +class XQILLA_API FunctionCollection : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionCollection(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** resolve the uri and return the DOM tree **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONCOLLECTION_HPP diff --git a/include/xqilla/functions/FunctionCompare.hpp b/include/xqilla/functions/FunctionCompare.hpp new file mode 100644 index 00000000..5de91295 --- /dev/null +++ b/include/xqilla/functions/FunctionCompare.hpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionCompare.hpp,v 1.8 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + Compare function +*/ + +#ifndef _FUNCTIONCOMPARE_HPP +#define _FUNCTIONCOMPARE_HPP + +#include + +#include + +class XQILLA_API FunctionCompare : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionCompare(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONCOMPARE_HPP diff --git a/include/xqilla/functions/FunctionConcat.hpp b/include/xqilla/functions/FunctionConcat.hpp new file mode 100644 index 00000000..e15ac282 --- /dev/null +++ b/include/xqilla/functions/FunctionConcat.hpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionConcat.hpp,v 1.8 2006/11/01 16:37:12 jpcs Exp $ + */ + +/* + Concat operator function +*/ + +#ifndef _FUNCTIONCONCAT_HPP +#define _FUNCTIONCONCAT_HPP + +#include + +#include + +/** Concat operator function*/ +class XQILLA_API FunctionConcat : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + ///Constructor. + FunctionConcat(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + +protected: + /** concatenates two strings. Takes two strings, and gives a string */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONCONCAT_HPP diff --git a/include/xqilla/functions/FunctionConstructor.hpp b/include/xqilla/functions/FunctionConstructor.hpp new file mode 100644 index 00000000..aaa9cf72 --- /dev/null +++ b/include/xqilla/functions/FunctionConstructor.hpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionConstructor.hpp,v 1.11 2006/11/01 16:37:13 jpcs Exp $ + */ + +/** + * xs:TYP(item $srcval) => TYP +**/ + +#ifndef _FUNCTIONCONSTRUCTOR_HPP +#define _FUNCTIONCONSTRUCTOR_HPP + +#include + +#include +#include + +#include + +class XQILLA_API FunctionConstructor : public ConstantFoldingFunction +{ +public: + static const XMLCh XMLChXPath2DatatypesURI[]; + + FunctionConstructor(const XMLCh* nsURI, const XMLCh* typeName, + const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); +}; + +#endif // _FUNCTIONCONSTRUCTOR_HPP diff --git a/include/xqilla/functions/FunctionContains.hpp b/include/xqilla/functions/FunctionContains.hpp new file mode 100644 index 00000000..dda19a2b --- /dev/null +++ b/include/xqilla/functions/FunctionContains.hpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionContains.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + Contains function + +*/ + +#ifndef _FUNCTIONCONTAINS_HPP +#define _FUNCTIONCONTAINS_HPP + +#include + + +#include + +/** Contains function. */ +class XQILLA_API FunctionContains : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionContains(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** XPath function. returns true if string1 conatins string2 **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONCONTAINS_HPP diff --git a/include/xqilla/functions/FunctionCount.hpp b/include/xqilla/functions/FunctionCount.hpp new file mode 100644 index 00000000..4feb4a7e --- /dev/null +++ b/include/xqilla/functions/FunctionCount.hpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionCount.hpp,v 1.10 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + xf:count(item* $srcval) => unsignedInt + +*/ + +#ifndef _FUNCTIONCOUNT_HPP +#define _FUNCTIONCOUNT_HPP + +#include + +#include + +class XQILLA_API FunctionCount : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + ///Constructor. Sets arg def to NOT_OPTIONAL. + FunctionCount(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + /** Returns the number of nodes in the nodelist argument. **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONCOUNT_HPP diff --git a/include/xqilla/functions/FunctionCurrentDate.hpp b/include/xqilla/functions/FunctionCurrentDate.hpp new file mode 100644 index 00000000..7e4e5e6c --- /dev/null +++ b/include/xqilla/functions/FunctionCurrentDate.hpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionCurrentDate.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + current-date function +*/ + +#ifndef _FUNCTIONCURRENTDATE_HPP +#define _FUNCTIONCURRENTDATE_HPP + +#include + +#include + +/** Current-date function*/ +class XQILLA_API FunctionCurrentDate : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionCurrentDate(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONCURRENTDATE_HPP + + + diff --git a/include/xqilla/functions/FunctionCurrentDateTime.hpp b/include/xqilla/functions/FunctionCurrentDateTime.hpp new file mode 100644 index 00000000..fd43fc94 --- /dev/null +++ b/include/xqilla/functions/FunctionCurrentDateTime.hpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionCurrentDateTime.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + current-dateTime function +*/ + +#ifndef _FUNCTIONCURRENT_DATETIME_HPP +#define _FUNCTIONCURRENT_DATETIME_HPP + +#include + +#include + +/** Current-dateTime function*/ +class XQILLA_API FunctionCurrentDateTime : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionCurrentDateTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONCURRENT_DATETIME_HPP + + diff --git a/include/xqilla/functions/FunctionCurrentTime.hpp b/include/xqilla/functions/FunctionCurrentTime.hpp new file mode 100644 index 00000000..fbe400ae --- /dev/null +++ b/include/xqilla/functions/FunctionCurrentTime.hpp @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionCurrentTime.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + current-time function +*/ + +#ifndef _FUNCTIONCURRENTTIME_HPP +#define _FUNCTIONCURRENTTIME_HPP + +#include + +#include + +/** Current-time function*/ +class XQILLA_API FunctionCurrentTime : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionCurrentTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONCURRENTTIME_HPP + + + + + + diff --git a/include/xqilla/functions/FunctionData.hpp b/include/xqilla/functions/FunctionData.hpp new file mode 100644 index 00000000..06f6e107 --- /dev/null +++ b/include/xqilla/functions/FunctionData.hpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionData.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + Data function +*/ + +#ifndef _FUNCTIONDATA_HPP +#define _FUNCTIONDATA_HPP + +#include + +#include + +class XQILLA_API FunctionData : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionData(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + Result createResult(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONDATA_HPP + + + diff --git a/include/xqilla/functions/FunctionDateTime.hpp b/include/xqilla/functions/FunctionDateTime.hpp new file mode 100644 index 00000000..da13a8e7 --- /dev/null +++ b/include/xqilla/functions/FunctionDateTime.hpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionDateTime.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + dateTime function +*/ + +#ifndef _FUNCTION_DATETIME_HPP +#define _FUNCTION_DATETIME_HPP + +#include + +#include + +/** dateTime function*/ +class XQILLA_API FunctionDateTime : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionDateTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTION_DATETIME_HPP + + diff --git a/include/xqilla/functions/FunctionDayFromDate.hpp b/include/xqilla/functions/FunctionDayFromDate.hpp new file mode 100644 index 00000000..91421bdc --- /dev/null +++ b/include/xqilla/functions/FunctionDayFromDate.hpp @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionDayFromDate.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONGETDAYFROMDATE_HPP +#define _FUNCTIONGETDAYFROMDATE_HPP + +#include + +#include + +/** + * Get function for the day component of date. + * + * xf:day-from-date(date $srcval) => integer + */ +class XQILLA_API FunctionDayFromDate : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor + */ + FunctionDayFromDate(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** + * Returns the integer representing the day in the value of $srcval + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETDAYFROMDATE_HPP + + + diff --git a/include/xqilla/functions/FunctionDayFromDateTime.hpp b/include/xqilla/functions/FunctionDayFromDateTime.hpp new file mode 100644 index 00000000..61d92f1a --- /dev/null +++ b/include/xqilla/functions/FunctionDayFromDateTime.hpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionDayFromDateTime.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + day-from-dateTime(dateTime $srcval) => integer + +*/ + +#ifndef _FUNCTIONGETDAYFROMDATETIME_HPP +#define _FUNCTIONGETDAYFROMDATETIME_HPP + +#include + +#include + +class XQILLA_API FunctionDayFromDateTime : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionDayFromDateTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETDAYFROMDATETIME_HPP + + + diff --git a/include/xqilla/functions/FunctionDaysFromDuration.hpp b/include/xqilla/functions/FunctionDaysFromDuration.hpp new file mode 100644 index 00000000..2334cf35 --- /dev/null +++ b/include/xqilla/functions/FunctionDaysFromDuration.hpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionDaysFromDuration.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONGETDAYSFROMDAYTIMEDURATION_HPP +#define _FUNCTIONGETDAYSFROMDAYTIMEDURATION_HPP + +#include + +#include + +/** + * Getter for the days component of dayTimeDuration. + * + * days-from-Duration(dayTimeDuration? $srcval) => integer? + */ +class XQILLA_API FunctionDaysFromDuration : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor. + */ + FunctionDaysFromDuration(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Returns an integer representing the days component of the value of + * $srcval. + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETDAYSFROMDAYTIMEDURATION_HPP + + + diff --git a/include/xqilla/functions/FunctionDeepEqual.hpp b/include/xqilla/functions/FunctionDeepEqual.hpp new file mode 100644 index 00000000..d57765bf --- /dev/null +++ b/include/xqilla/functions/FunctionDeepEqual.hpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionDeepEqual.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + Deep-equal funcion +*/ + +#ifndef _FUNCTIONDEEPEQUAL_HPP +#define _FUNCTIONDEEPEQUAL_HPP + +#include + +#include + +class Node; +class Collation; + +class XQILLA_API FunctionDeepEqual : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionDeepEqual(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + + static bool deep_equal(Sequence seq1, Sequence seq2, Collation* collation, DynamicContext* context, const LocationInfo *info); + static bool node_deep_equal(const Node::Ptr &node1, const Node::Ptr &node2, Collation* collation, DynamicContext* context, const LocationInfo *info); + +}; + +#endif // _FUNCTIONDEEPEQUAL_HPP diff --git a/include/xqilla/functions/FunctionDefaultCollation.hpp b/include/xqilla/functions/FunctionDefaultCollation.hpp new file mode 100644 index 00000000..8fada1a7 --- /dev/null +++ b/include/xqilla/functions/FunctionDefaultCollation.hpp @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionDefaultCollation.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + default-collation function + +*/ + + +#ifndef _FUNCTIONDEFAULTCOLLATION_HPP +#define _FUNCTIONDEFAULTCOLLATION_HPP + +#include + +/** default-collation function*/ +class XQILLA_API FunctionDefaultCollation : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionDefaultCollation(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONDEFAULTCOLLATION_HPP diff --git a/include/xqilla/functions/FunctionDistinctValues.hpp b/include/xqilla/functions/FunctionDistinctValues.hpp new file mode 100644 index 00000000..0a264cab --- /dev/null +++ b/include/xqilla/functions/FunctionDistinctValues.hpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionDistinctValues.hpp,v 1.11 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + Distinct-values function + +*/ + +#ifndef _FUNCTIONDISTINCTVALUES_HPP +#define _FUNCTIONDISTINCTVALUES_HPP + +#include + +#include + +// Distinct values is not really an aggregate function, but since its behaviour is so +// similar (in terms of sequence validation) we will extend from it. +class XQILLA_API FunctionDistinctValues : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionDistinctValues(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + virtual Result createResult(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONDISTINCTVALUES_HPP diff --git a/include/xqilla/functions/FunctionDoc.hpp b/include/xqilla/functions/FunctionDoc.hpp new file mode 100644 index 00000000..7c2a0ae0 --- /dev/null +++ b/include/xqilla/functions/FunctionDoc.hpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionDoc.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + Doc function + +*/ + +#ifndef _FUNCTIONDOC_HPP +#define _FUNCTIONDOC_HPP + +#include + +#include + +class XQILLA_API FunctionDoc : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionDoc(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONDOC_HPP diff --git a/include/xqilla/functions/FunctionDocAvailable.hpp b/include/xqilla/functions/FunctionDocAvailable.hpp new file mode 100644 index 00000000..d6aceac3 --- /dev/null +++ b/include/xqilla/functions/FunctionDocAvailable.hpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionDocAvailable.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + doc-available function +*/ + +#ifndef _FUNCTIONDOCAVAILABLE_HPP +#define _FUNCTIONDOCAVAILABLE_HPP + +#include + +#include + +class XQILLA_API FunctionDocAvailable : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionDocAvailable(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONDOCAVAILABLE_HPP diff --git a/include/xqilla/functions/FunctionDocumentURI.hpp b/include/xqilla/functions/FunctionDocumentURI.hpp new file mode 100644 index 00000000..7c617ca1 --- /dev/null +++ b/include/xqilla/functions/FunctionDocumentURI.hpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionDocumentURI.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + document-uri function + +*/ + +#ifndef _FUNCTIONDOCUMENTURI_HPP +#define _FUNCTIONDOCUMENTURI_HPP + +#include + +#include + +class Sequence; + +/* document-uri function */ +class XQILLA_API FunctionDocumentURI : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionDocumentURI(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /* returns the document-URI property of the node */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif + + diff --git a/include/xqilla/functions/FunctionEmpty.hpp b/include/xqilla/functions/FunctionEmpty.hpp new file mode 100644 index 00000000..6df8e346 --- /dev/null +++ b/include/xqilla/functions/FunctionEmpty.hpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionEmpty.hpp,v 1.10 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + Empty function + +*/ + +#ifndef _FUNCTIONEMPTY_HPP +#define _FUNCTIONEMPTY_HPP + +#include + +#include + +class XQILLA_API FunctionEmpty : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionEmpty(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONEMPTY_HPP + + + diff --git a/include/xqilla/functions/FunctionEncodeForUri.hpp b/include/xqilla/functions/FunctionEncodeForUri.hpp new file mode 100644 index 00000000..477370c1 --- /dev/null +++ b/include/xqilla/functions/FunctionEncodeForUri.hpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionEncodeForUri.hpp,v 1.4 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + fn:encode-for-uri($uri-part as xs:string?) as xs:string +*/ + +#ifndef _FUNCTIONENCODEFORURI_HPP +#define _FUNCTIONENCODEFORURI_HPP + +#include + +#include + +class XQILLA_API FunctionEncodeForUri : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionEncodeForUri(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONENCODEFORURI_HPP + + + diff --git a/include/xqilla/functions/FunctionEndsWith.hpp b/include/xqilla/functions/FunctionEndsWith.hpp new file mode 100644 index 00000000..ee4c7c0b --- /dev/null +++ b/include/xqilla/functions/FunctionEndsWith.hpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionEndsWith.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + xf:ends-with(string? $operand1, string? $operand2) => boolean? + xf:ends-with(string? $operand1, string? $operand2, anyURI $collationLiteral) => boolean? + +*/ + +#ifndef _FUNCTIONENDSWITH_HPP +#define _FUNCTIONENDSWITH_HPP + +#include + +#include + +class XQILLA_API FunctionEndsWith : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionEndsWith(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONENDSWITH_HPP + + + diff --git a/include/xqilla/functions/FunctionError.hpp b/include/xqilla/functions/FunctionError.hpp new file mode 100644 index 00000000..a7491459 --- /dev/null +++ b/include/xqilla/functions/FunctionError.hpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionError.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + Error function + +*/ + +#ifndef _FUNCTIONError_HPP +#define _FUNCTIONError_HPP + +#include + +#include + +class XQILLA_API FunctionError : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionError(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONError_HPP + + + diff --git a/include/xqilla/functions/FunctionEscapeHtmlUri.hpp b/include/xqilla/functions/FunctionEscapeHtmlUri.hpp new file mode 100644 index 00000000..0faa1c9e --- /dev/null +++ b/include/xqilla/functions/FunctionEscapeHtmlUri.hpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionEscapeHtmlUri.hpp,v 1.4 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + fn:escape-html-uri($uri as xs:string?) as xs:string +*/ + +#ifndef _FUNCTIONESCAPEHTMLURI_HPP +#define _FUNCTIONESCAPEHTMLURI_HPP + +#include + +#include + +class XQILLA_API FunctionEscapeHtmlUri : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionEscapeHtmlUri(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONESCAPEHTMLURI_HPP + + + diff --git a/include/xqilla/functions/FunctionExactlyOne.hpp b/include/xqilla/functions/FunctionExactlyOne.hpp new file mode 100644 index 00000000..a04f0b28 --- /dev/null +++ b/include/xqilla/functions/FunctionExactlyOne.hpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionExactlyOne.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + * xf:exactly-one(item* $srcval) => item + */ + +#ifndef _FUNCTIONEXACTLYONE_HPP +#define _FUNCTIONEXACTLYONE_HPP + +#include + +#include + +class XQILLA_API FunctionExactlyOne : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionExactlyOne(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Result createResult(DynamicContext* context, int flags=0) const; + +private: + class ExactlyOneResult : public ResultImpl + { + public: + ExactlyOneResult(const FunctionExactlyOne *func, int flags); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + private: + int _flags; + const FunctionExactlyOne *_func; + Result _arg; + unsigned int _argNo; + }; +}; + +#endif // _FUNCTIONEXACTLYONE_HPP diff --git a/include/xqilla/functions/FunctionExists.hpp b/include/xqilla/functions/FunctionExists.hpp new file mode 100644 index 00000000..c6ee9d54 --- /dev/null +++ b/include/xqilla/functions/FunctionExists.hpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionExists.hpp,v 1.10 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + xf:exists(item* $srcval) => boolean +*/ + +#ifndef _FUNCTIONEXISTS_HPP +#define _FUNCTIONEXISTS_HPP + +#include + +#include + +class XQILLA_API FunctionExists : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionExists(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONEXISTS_HPP + + + diff --git a/include/xqilla/functions/FunctionFalse.hpp b/include/xqilla/functions/FunctionFalse.hpp new file mode 100644 index 00000000..d956f132 --- /dev/null +++ b/include/xqilla/functions/FunctionFalse.hpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionFalse.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + xf:false() => boolean + +*/ + +#ifndef _FUNCTIONFALSE_HPP +#define _FUNCTIONFALSE_HPP + +#include + +#include + +class XQILLA_API FunctionFalse : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionFalse(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONFALSE_HPP + + + diff --git a/include/xqilla/functions/FunctionFloor.hpp b/include/xqilla/functions/FunctionFloor.hpp new file mode 100644 index 00000000..f8d9c646 --- /dev/null +++ b/include/xqilla/functions/FunctionFloor.hpp @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionFloor.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + xf:floor(numeric? $srcval) => numeric? +*/ + +#ifndef _FUNCTIONFLOOR_HPP +#define _FUNCTIONFLOOR_HPP + +#include + +#include + +class XQILLA_API FunctionFloor : public NumericFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionFloor(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONFLOOR_HPP + diff --git a/include/xqilla/functions/FunctionHoursFromDateTime.hpp b/include/xqilla/functions/FunctionHoursFromDateTime.hpp new file mode 100644 index 00000000..5f0b0252 --- /dev/null +++ b/include/xqilla/functions/FunctionHoursFromDateTime.hpp @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionHoursFromDateTime.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONGETHOURSFROMDATETIME_HPP +#define _FUNCTIONGETHOURSFROMDATETIME_HPP + +#include + +#include + +/** + * Getter for the hours component of dateTime + * + * hours-from-dateTime(dateTime $srcval) => integer + */ +class XQILLA_API FunctionHoursFromDateTime : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor. + */ + FunctionHoursFromDateTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** + * Returns an integer representing the hours component in the value of + * $srcval. + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETHOURSFROMDATETIME_HPP + + + diff --git a/include/xqilla/functions/FunctionHoursFromDuration.hpp b/include/xqilla/functions/FunctionHoursFromDuration.hpp new file mode 100644 index 00000000..df95c3fc --- /dev/null +++ b/include/xqilla/functions/FunctionHoursFromDuration.hpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionHoursFromDuration.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONGETHOURSFROMDAYTIMEDURATION_HPP +#define _FUNCTIONGETHOURSFROMDAYTIMEDURATION_HPP + +#include + +#include + +/** + * Getter for the hours component of dayTimeDuration. + * + * hours-from-duration(dayTimeDuration? $srcval) => integer? + */ +class XQILLA_API FunctionHoursFromDuration : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor. + */ + FunctionHoursFromDuration(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Returns an integer representing the hours component in the value of + * $srcval. + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETHOURSFROMDAYTIMEDURATION_HPP + + + diff --git a/include/xqilla/functions/FunctionHoursFromTime.hpp b/include/xqilla/functions/FunctionHoursFromTime.hpp new file mode 100644 index 00000000..69c9bd68 --- /dev/null +++ b/include/xqilla/functions/FunctionHoursFromTime.hpp @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionHoursFromTime.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONGETHOURSFROMTIME_HPP +#define _FUNCTIONGETHOURSFROMTIME_HPP + +#include + +#include + +/** + * Getter function for hours component of time. + * + * xf:hours-from-time(time? $srcval) => integer? + */ +class XQILLA_API FunctionHoursFromTime : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor + */ + FunctionHoursFromTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** + * Returns the integer representing the hours in the value of $srcval + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETHOURSFROMTIME_HPP + + + diff --git a/include/xqilla/functions/FunctionId.hpp b/include/xqilla/functions/FunctionId.hpp new file mode 100644 index 00000000..9320438d --- /dev/null +++ b/include/xqilla/functions/FunctionId.hpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionId.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONID_HPP +#define _FUNCTIONID_HPP + +#include +#include + +#include +#include +#include + +/** + * Id function + * + * fn:id(string* $srcval) => element* + */ +class XQILLA_API FunctionId : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor. + */ + FunctionId(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** + * Returns the sequence of element nodes with ID values matching the value + * of one of the IDREF values supplied in $srcval. + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONID_HPP + diff --git a/include/xqilla/functions/FunctionIdref.hpp b/include/xqilla/functions/FunctionIdref.hpp new file mode 100644 index 00000000..255159cb --- /dev/null +++ b/include/xqilla/functions/FunctionIdref.hpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionIdref.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONIDREF_HPP +#define _FUNCTIONIDREF_HPP + +#include +#include + +#include +#include +#include + +/** + * Function idref + * + * fn:idref(string* $srcval) => element* + * + */ +class XQILLA_API FunctionIdref : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor + */ + FunctionIdref(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** + * Returns the sequence of elements nodes having either an IDREF attribute + * whose value matches the value of one of the items in the value of $srcval + * or an IDREFS attribute whose value contains an IDREF value that matches + * the value of one of the items in the value of $srcval. + * + * This function allows reverse navigation from IDs to IDREFs. + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONIDREF_HPP + diff --git a/include/xqilla/functions/FunctionImplicitTimezone.hpp b/include/xqilla/functions/FunctionImplicitTimezone.hpp new file mode 100644 index 00000000..69925dd1 --- /dev/null +++ b/include/xqilla/functions/FunctionImplicitTimezone.hpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionImplicitTimezone.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + implicit-timezone function + +*/ + + +#ifndef _FUNCTIONIMPLICITTIMEZONE_HPP +#define _FUNCTIONIMPLICITTIMEZONE_HPP + +#include + +/** implicit-timezone function*/ +class XQILLA_API FunctionImplicitTimezone : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionImplicitTimezone(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONIMPLICITTIMEZONE_HPP diff --git a/include/xqilla/functions/FunctionInScopePrefixes.hpp b/include/xqilla/functions/FunctionInScopePrefixes.hpp new file mode 100644 index 00000000..422fd18b --- /dev/null +++ b/include/xqilla/functions/FunctionInScopePrefixes.hpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionInScopePrefixes.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + in-scope-prefixes function +*/ + +#ifndef _FUNCTIONGETINSCOPEPREFIXES_HPP +#define _FUNCTIONGETINSCOPEPREFIXES_HPP + +#include +#include + +class XQILLA_API FunctionInScopePrefixes : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionInScopePrefixes(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** Returns the getinscopenamespaces to the right of parm2 until optional parm3 from string parm1 **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + + +#endif // _FUNCTIONGETINSCOPEPREFIXES_HPP + + + + + diff --git a/include/xqilla/functions/FunctionIndexOf.hpp b/include/xqilla/functions/FunctionIndexOf.hpp new file mode 100644 index 00000000..cd9f5603 --- /dev/null +++ b/include/xqilla/functions/FunctionIndexOf.hpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionIndexOf.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + index-of function: returns the location(s) of the specified item in a sequence +*/ + +#ifndef _FUNCTIONINDEXOF_HPP +#define _FUNCTIONINDEXOF_HPP + +#include +#include + +class XPath2MemoryManager; +class Collation; + +/** index-of function*/ +class XQILLA_API FunctionIndexOf : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionIndexOf(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** Returns a sequence of indices where the item occurs in the sequence */ + Sequence indexOf(Sequence &list, const Item::Ptr &item, Collation* collation, DynamicContext* context) const; + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONINDEXOF_HPP diff --git a/include/xqilla/functions/FunctionInsertBefore.hpp b/include/xqilla/functions/FunctionInsertBefore.hpp new file mode 100644 index 00000000..80eb9717 --- /dev/null +++ b/include/xqilla/functions/FunctionInsertBefore.hpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionInsertBefore.hpp,v 1.10 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + xf:insert-before(item* $target, decimal $position, item* $inserts) => item* +*/ + +#ifndef _FUNCTIONINSERTBEFORE_HPP +#define _FUNCTIONINSERTBEFORE_HPP + +#include + +#include + +class XQILLA_API FunctionInsertBefore : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionInsertBefore(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + ASTNode *staticTyping(StaticContext *context); + Result createResult(DynamicContext* context, int flags=0) const; + +private: + class InsertBeforeResult : public ResultImpl + { + public: + InsertBeforeResult(const FunctionInsertBefore *func); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + private: + const FunctionInsertBefore *_func; + Numeric::Ptr _position; + Numeric::Ptr _one; + Numeric::Ptr _i; + bool _insertsDone; + Result _target; + Result _inserts; + }; +}; + +#endif // _FUNCTIONINSERTBEFORE_HPP diff --git a/include/xqilla/functions/FunctionIriToUri.hpp b/include/xqilla/functions/FunctionIriToUri.hpp new file mode 100644 index 00000000..c97bbb88 --- /dev/null +++ b/include/xqilla/functions/FunctionIriToUri.hpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionIriToUri.hpp,v 1.4 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + fn:iri-to-uri($uri-part as xs:string?) as xs:string +*/ + +#ifndef _FUNCTIONIRITOURI_HPP +#define _FUNCTIONIRITOURI_HPP + +#include + +#include + +class XQILLA_API FunctionIriToUri : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionIriToUri(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONIRITOURI_HPP + + + diff --git a/include/xqilla/functions/FunctionLang.hpp b/include/xqilla/functions/FunctionLang.hpp new file mode 100644 index 00000000..0b046d2b --- /dev/null +++ b/include/xqilla/functions/FunctionLang.hpp @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionLang.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + lang function + +*/ + +#ifndef _FUNCTIONLANG_HPP +#define _FUNCTIONLANG_HPP + +#include + +#include + +/** lang function. */ +class XQILLA_API FunctionLang : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionLang(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** The lang function returns true or false depending on whether the language of + the context node as specified by xml:lang attributes is the same as or is a + sublanguage of the language specified by the argument string. The language of + the context node is determined by the value of the xml:lang attribute on the + context node, or, if the context node has no xml:lang attribute, by the value + of the xml:lang attribute on the nearest ancestor of the context node that has + an xml:lang attribute.**/ + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONLANG_HPP + diff --git a/include/xqilla/functions/FunctionLast.hpp b/include/xqilla/functions/FunctionLast.hpp new file mode 100644 index 00000000..209e997c --- /dev/null +++ b/include/xqilla/functions/FunctionLast.hpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionLast.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + Last function + +*/ + +#ifndef _FUNCTIONLAST_HPP +#define _FUNCTIONLAST_HPP + +#include + +#include + +/** Last function*/ +class XQILLA_API FunctionLast : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionLast(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** returns the context size */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONLAST_HPP + + + + diff --git a/include/xqilla/functions/FunctionLocalNameFromQName.hpp b/include/xqilla/functions/FunctionLocalNameFromQName.hpp new file mode 100644 index 00000000..f025e392 --- /dev/null +++ b/include/xqilla/functions/FunctionLocalNameFromQName.hpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionLocalNameFromQName.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + * fn:local-name-from-QName function + */ + +#ifndef _FUNCTIONGETLOCALNAMEFROMQNAME_HPP +#define _FUNCTIONGETLOCALNAMEFROMQNAME_HPP + +#include + +#include +#include + +/** Name function */ +class XQILLA_API FunctionLocalNameFromQName : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionLocalNameFromQName(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** Returns the local-name part of a QName, eg for foo:bar it returns bar */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETLOCALNAMEFROMQNAME_HPP diff --git a/include/xqilla/functions/FunctionLocalname.hpp b/include/xqilla/functions/FunctionLocalname.hpp new file mode 100644 index 00000000..9f86cd69 --- /dev/null +++ b/include/xqilla/functions/FunctionLocalname.hpp @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionLocalname.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + xf:local-name() => string + xf:local-name(node $srcval) => string +*/ + +#ifndef _FUNCTIONLOCALNAME_HPP +#define _FUNCTIONLOCALNAME_HPP + +#include + +#include +#include + +class XQILLA_API FunctionLocalname : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionLocalname(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Called during static analysis to determine if statically correct. + * Performs constant folding if the function has an argument, and it + * is constant. + */ + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** Returns the namespace unaware name of the node. Takes an optional nodelist, + and returns an empty string if the node has no name. Uses the current context + if a nodelist is not specified. */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONLOCALNAME_HPP diff --git a/include/xqilla/functions/FunctionLookup.hpp b/include/xqilla/functions/FunctionLookup.hpp new file mode 100644 index 00000000..ec0e0b1b --- /dev/null +++ b/include/xqilla/functions/FunctionLookup.hpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionLookup.hpp,v 1.10 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FLOOKUP_HPP +#define _FLOOKUP_HPP + +#include + +#include +#include +#include + +class FuncFactory; +class XPath2MemoryManager; + +class XQILLA_API FunctionLookup +{ +public: + virtual ~FunctionLookup() {} + + ///adds a function to the custom function table + virtual void insertFunction(FuncFactory *func) = 0; + /// replaces the implementation of an existing function + virtual void replaceFunction(FuncFactory *func) = 0; + ///returns the approriate Function object + virtual ASTNode* lookUpFunction(const XMLCh* URI, const XMLCh* fname, const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) const = 0; + + /// returns all the defined functions + virtual std::vector< std::pair > getFunctions() const = 0; + virtual std::vector< FuncFactory* > getFunctionFactories() const = 0; +}; + +#endif diff --git a/include/xqilla/functions/FunctionLowerCase.hpp b/include/xqilla/functions/FunctionLowerCase.hpp new file mode 100644 index 00000000..368b69fd --- /dev/null +++ b/include/xqilla/functions/FunctionLowerCase.hpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionLowerCase.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + LowerCase function + +*/ + +#ifndef _FUNCTIONLOWERCASE_HPP +#define _FUNCTIONLOWERCASE_HPP + +#include + +#include + +class XQILLA_API FunctionLowerCase : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionLowerCase(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONLOWERCASE_HPP + + + diff --git a/include/xqilla/functions/FunctionMatches.hpp b/include/xqilla/functions/FunctionMatches.hpp new file mode 100644 index 00000000..1ec769f5 --- /dev/null +++ b/include/xqilla/functions/FunctionMatches.hpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionMatches.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + matches function + +*/ + +#ifndef _FUNCTIONMATCHES_HPP +#define _FUNCTIONMATCHES_HPP + +#include + +/** Matches function. */ +class XQILLA_API FunctionMatches : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionMatches(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** XPath function: returns true if string1 matches the regExp supplied as string2, otherwise returns false. **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONMATCHES_HPP diff --git a/include/xqilla/functions/FunctionMax.hpp b/include/xqilla/functions/FunctionMax.hpp new file mode 100644 index 00000000..f5574e8f --- /dev/null +++ b/include/xqilla/functions/FunctionMax.hpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionMax.hpp,v 1.10 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + xf:max(anyAtomicType* $srcval) => anyAtomicType? + xf:max(anyAtomicType* $srcval, string $collationLiteral) => anyAtomicType? +*/ + +#ifndef _FUNCTIONMAX_HPP +#define _FUNCTIONMAX_HPP + +#include + +#include + +class XQILLA_API FunctionMax : public AggregateFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + ///Constructor. Sets arg def to NOT_OPTIONAL. + FunctionMax(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + /** Returns the maximum value from the given sequence. **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONMAX_HPP diff --git a/include/xqilla/functions/FunctionMin.hpp b/include/xqilla/functions/FunctionMin.hpp new file mode 100644 index 00000000..c484680b --- /dev/null +++ b/include/xqilla/functions/FunctionMin.hpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionMin.hpp,v 1.10 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + xf:min(anyAtomicType* $srcval) => anyAtomicType? + xf:min(anyAtomicType* $srcval, string $collationLiteral) => anyAtomicType? +*/ + +#ifndef _FUNCTIONMIN_HPP +#define _FUNCTIONMIN_HPP + +#include + +#include + +class XQILLA_API FunctionMin : public AggregateFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + ///Constructor. Sets arg def to NOT_OPTIONAL. + FunctionMin(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + /** Returns the maximum value from the given sequence. **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONMIN_HPP diff --git a/include/xqilla/functions/FunctionMinutesFromDateTime.hpp b/include/xqilla/functions/FunctionMinutesFromDateTime.hpp new file mode 100644 index 00000000..0e04a94d --- /dev/null +++ b/include/xqilla/functions/FunctionMinutesFromDateTime.hpp @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionMinutesFromDateTime.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONGETMINUTESFROMDATETIME_HPP +#define _FUNCTIONGETMINUTESFROMDATETIME_HPP + +#include + +#include + +/** + * Getter function for the minutes component of dateTime. + * + * minutes-from-dateTime(dateTime $srcval) => integer + */ +class XQILLA_API FunctionMinutesFromDateTime : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor. + */ + FunctionMinutesFromDateTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** + * Returns an integer representing the minutes component in the value + * of $srcval. + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETMINUTESFROMDATETIME_HPP + + + diff --git a/include/xqilla/functions/FunctionMinutesFromDuration.hpp b/include/xqilla/functions/FunctionMinutesFromDuration.hpp new file mode 100644 index 00000000..dca1a876 --- /dev/null +++ b/include/xqilla/functions/FunctionMinutesFromDuration.hpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionMinutesFromDuration.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONGETMINUTESFROMDAYTIMEDURATION_HPP +#define _FUNCTIONGETMINUTESFROMDAYTIMEDURATION_HPP + +#include + +#include + +/** + * Getter function for the minutes component of dayTimeDuration. + * + * minutes-from-duration(dayTimeDuration? $srcval) => integer? + */ +class XQILLA_API FunctionMinutesFromDuration : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor. + */ + FunctionMinutesFromDuration(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Returns an integer representing the minutes component in the value + * of $srcval. + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETMINUTESFROMDAYTIMEDURATION_HPP + + + diff --git a/include/xqilla/functions/FunctionMinutesFromTime.hpp b/include/xqilla/functions/FunctionMinutesFromTime.hpp new file mode 100644 index 00000000..cc2d7204 --- /dev/null +++ b/include/xqilla/functions/FunctionMinutesFromTime.hpp @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionMinutesFromTime.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONGETMINUTESFROMTIME_HPP +#define _FUNCTIONGETMINUTESFROMTIME_HPP + +#include + +#include + +/** + * Getter function for minutes component of time. + * + * xf:minutes-from-time(time? $srcval) => integer? + */ +class XQILLA_API FunctionMinutesFromTime : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor + */ + FunctionMinutesFromTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** + * Returns the integer representing the minutes in the value of $srcval + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETMINUTESFROMTIME_HPP + + + diff --git a/include/xqilla/functions/FunctionMonthFromDate.hpp b/include/xqilla/functions/FunctionMonthFromDate.hpp new file mode 100644 index 00000000..5286dfcc --- /dev/null +++ b/include/xqilla/functions/FunctionMonthFromDate.hpp @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionMonthFromDate.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONGETMONTHFROMDATE_HPP +#define _FUNCTIONGETMONTHFROMDATE_HPP + +#include + +#include + +/** + * Gettter function for month component of date. + * + * xf:month-from-date(date $srcval) => integer + */ +class XQILLA_API FunctionMonthFromDate : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor + */ + FunctionMonthFromDate(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** + * Returns the integer representing the month in the value of $srcval + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETMONTHFROMDATE_HPP + + + diff --git a/include/xqilla/functions/FunctionMonthFromDateTime.hpp b/include/xqilla/functions/FunctionMonthFromDateTime.hpp new file mode 100644 index 00000000..d9672c7c --- /dev/null +++ b/include/xqilla/functions/FunctionMonthFromDateTime.hpp @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionMonthFromDateTime.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONGETMONTHFROMDATETIME_HPP +#define _FUNCTIONGETMONTHFROMDATETIME_HPP + +#include + +#include + +/** + * Getter function for the month component of dateTime. + * + * month-from-dateTime(dateTime $srcval) => integer + */ +class XQILLA_API FunctionMonthFromDateTime : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor. + */ + FunctionMonthFromDateTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** + * Returns an integer representing the month component in the value of + * $srcval + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETMONTHFROMDATETIME_HPP + + + diff --git a/include/xqilla/functions/FunctionMonthsFromDuration.hpp b/include/xqilla/functions/FunctionMonthsFromDuration.hpp new file mode 100644 index 00000000..0f4efa65 --- /dev/null +++ b/include/xqilla/functions/FunctionMonthsFromDuration.hpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionMonthsFromDuration.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONGETMONTHSFROMYEARMONTHDURATION_HPP +#define _FUNCTIONGETMONTHSFROMYEARMONTHDURATION_HPP + +#include + +#include + +/** + * Getter function for the months component of yearMonthDuration. + * + * months-from-duration(yearMonthDuration? $srcval) => integer? + */ +class XQILLA_API FunctionMonthsFromDuration : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor. + */ + FunctionMonthsFromDuration(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Returns an integer representing the months component in the value of + * $srcval. + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETMONTHSFROMYEARMONTHDURATION_HPP + + + diff --git a/include/xqilla/functions/FunctionName.hpp b/include/xqilla/functions/FunctionName.hpp new file mode 100644 index 00000000..42bb6259 --- /dev/null +++ b/include/xqilla/functions/FunctionName.hpp @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionName.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + Name function + +*/ + +#ifndef _FUNCTIONNAME_HPP +#define _FUNCTIONNAME_HPP + +#include + +#include +#include + +/** Name function */ +class XQILLA_API FunctionName : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionName(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Called during static analysis to determine if statically correct. + * Performs constant folding if the function has an argument, and it + * is constant. + */ + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** Returns the namespace unaware name of the node. Takes an optional nodelist, + and returns an empty string if the node has no name. Uses the current context + if a nodelist is not specified. */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONNAME_HPP + diff --git a/include/xqilla/functions/FunctionNamespaceURIForPrefix.hpp b/include/xqilla/functions/FunctionNamespaceURIForPrefix.hpp new file mode 100644 index 00000000..5fe41298 --- /dev/null +++ b/include/xqilla/functions/FunctionNamespaceURIForPrefix.hpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionNamespaceURIForPrefix.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + namespace-uri-for-prefix function +*/ + +#ifndef _FUNCTIONGETNAMESPACEURIFORPREFIX_HPP +#define _FUNCTIONGETNAMESPACEURIFORPREFIX_HPP + +#include + +#include + +class XQILLA_API FunctionNamespaceURIForPrefix : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionNamespaceURIForPrefix(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** Given a uri and a name, it returns an expanded QName **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONGETNAMESPACEURIFORPREFIX_HPP + diff --git a/include/xqilla/functions/FunctionNamespaceURIFromQName.hpp b/include/xqilla/functions/FunctionNamespaceURIFromQName.hpp new file mode 100644 index 00000000..18efba47 --- /dev/null +++ b/include/xqilla/functions/FunctionNamespaceURIFromQName.hpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionNamespaceURIFromQName.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + * xf:namespace-uri-from-QName function + +*/ + +#ifndef _FUNCTIONGETNAMESPACEURIFROMQNAME_HPP +#define _FUNCTIONGETNAMESPACEURIFROMQNAME_HPP + +#include + +#include + +class XQILLA_API FunctionNamespaceURIFromQName : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionNamespaceURIFromQName(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** Returns the namespace part of a QName*/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONGETNAMESPACEURIFROMQNAME_HPP diff --git a/include/xqilla/functions/FunctionNamespaceUri.hpp b/include/xqilla/functions/FunctionNamespaceUri.hpp new file mode 100644 index 00000000..f33bc052 --- /dev/null +++ b/include/xqilla/functions/FunctionNamespaceUri.hpp @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionNamespaceUri.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + Namespace-uri function + +*/ + +#ifndef _FUNCTIONNAMESPACEURI_HPP +#define _FUNCTIONNAMESPACEURI_HPP + +#include + +#include + +/** Namespace-uri function */ +class XQILLA_API FunctionNamespaceUri : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionNamespaceUri(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Called during static analysis to determine if statically correct. + * Performs constant folding if the function has an argument, and it + * is constant. + */ + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** Returns the namespace of the node. Takes an optional node, + and returns an empty string if the node has no name. Uses the current context + if a node is not specified. */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONNAMESPACEURI_HPP + + diff --git a/include/xqilla/functions/FunctionNilled.hpp b/include/xqilla/functions/FunctionNilled.hpp new file mode 100644 index 00000000..aa91f478 --- /dev/null +++ b/include/xqilla/functions/FunctionNilled.hpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionNilled.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + fn:nilled($arg as node) as boolean? +*/ + +#ifndef _FUNCTIONNILLED_HPP +#define _FUNCTIONNILLED_HPP + +#include + +#include + +class XQILLA_API FunctionNilled : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionNilled(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONNILLED_HPP + diff --git a/include/xqilla/functions/FunctionNodeName.hpp b/include/xqilla/functions/FunctionNodeName.hpp new file mode 100644 index 00000000..057c7855 --- /dev/null +++ b/include/xqilla/functions/FunctionNodeName.hpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionNodeName.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + xf:node-name(node $srcval) => QName? +*/ + +#ifndef _FUNCTIONNODENAME_HPP +#define _FUNCTIONNODENAME_HPP + +#include + +#include + +class XQILLA_API FunctionNodeName : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionNodeName(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONNODEName_HPP + + + diff --git a/include/xqilla/functions/FunctionNormalizeSpace.hpp b/include/xqilla/functions/FunctionNormalizeSpace.hpp new file mode 100644 index 00000000..31c589eb --- /dev/null +++ b/include/xqilla/functions/FunctionNormalizeSpace.hpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionNormalizeSpace.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + normalize-space function + +*/ + +#ifndef _FUNCTIONNORMALIZESPACE_HPP +#define _FUNCTIONNORMALIZESPACE_HPP + +#include + +#include + +/** normalize-space function. */ +class XQILLA_API FunctionNormalizeSpace : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionNormalizeSpace(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Called during static analysis to determine if statically correct. + * Performs constant folding if the function has an argument, and it + * is constant. + */ + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +private: + const XMLCh* getString(DynamicContext* context) const; +}; + +#endif // _FUNCTIONNORMALIZESPACE_HPP + diff --git a/include/xqilla/functions/FunctionNormalizeUnicode.hpp b/include/xqilla/functions/FunctionNormalizeUnicode.hpp new file mode 100644 index 00000000..4eaff036 --- /dev/null +++ b/include/xqilla/functions/FunctionNormalizeUnicode.hpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionNormalizeUnicode.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + normalize-unicode function + +*/ + +#ifndef _FUNCTIONNORMALIZEUNICODE_HPP +#define _FUNCTIONNORMALIZEUNICODE_HPP + +#include + +#include + +/** normalize-unicode function. */ +class XQILLA_API FunctionNormalizeUnicode : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionNormalizeUnicode(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONNORMALIZEUNICODE_HPP + diff --git a/include/xqilla/functions/FunctionNot.hpp b/include/xqilla/functions/FunctionNot.hpp new file mode 100644 index 00000000..1474048a --- /dev/null +++ b/include/xqilla/functions/FunctionNot.hpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionNot.hpp,v 1.10 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + Not function + +*/ + +#ifndef _FUNCTIONNOT_HPP +#define _FUNCTIONNOT_HPP + +#include + +#include + +/** Not operator function. */ +class XQILLA_API FunctionNot : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionNot(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + /** negates the argument **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONNOT_HPP + diff --git a/include/xqilla/functions/FunctionNumber.hpp b/include/xqilla/functions/FunctionNumber.hpp new file mode 100644 index 00000000..c3557e8c --- /dev/null +++ b/include/xqilla/functions/FunctionNumber.hpp @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionNumber.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + Number function + +*/ + +#ifndef _FUNCTIONNUMBER_HPP +#define _FUNCTIONNUMBER_HPP + +#include + +#include + +class AnyAtomicType; + +/** Number operator function, and exists functions. */ +class XQILLA_API FunctionNumber : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionNumber(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Called during static analysis to determine if statically correct. + * Performs constant folding if the function has an argument, and it + * is constant. + */ + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** Returns the argument as a number **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + + static Item::Ptr number(const AnyAtomicType::Ptr &item, DynamicContext *context); +}; + +#endif // _FUNCTIONNUMBER_HPP diff --git a/include/xqilla/functions/FunctionOneOrMore.hpp b/include/xqilla/functions/FunctionOneOrMore.hpp new file mode 100644 index 00000000..799d1a01 --- /dev/null +++ b/include/xqilla/functions/FunctionOneOrMore.hpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionOneOrMore.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + * xf:one-or-more(item* $srcval) => item+ + */ + +#ifndef _FUNCTIONONEORMORE_HPP +#define _FUNCTIONONEORMORE_HPP + +#include + +#include + +class XQILLA_API FunctionOneOrMore : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionOneOrMore(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Result createResult(DynamicContext* context, int flags=0) const; + +private: + class OneOrMoreResult : public ResultImpl + { + public: + OneOrMoreResult(const FunctionOneOrMore *func, int flags); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + private: + int _flags; + const FunctionOneOrMore *_func; + Result _arg; + unsigned int _argNo; + }; +}; + +#endif // _FUNCTIONONEORMORE_HPP diff --git a/include/xqilla/functions/FunctionPosition.hpp b/include/xqilla/functions/FunctionPosition.hpp new file mode 100644 index 00000000..066fcd4c --- /dev/null +++ b/include/xqilla/functions/FunctionPosition.hpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionPosition.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + Position function + +*/ + +#ifndef _FUNCTIONPOSITION_HPP +#define _FUNCTIONPOSITION_HPP + +#include + +/** Position function*/ +class XQILLA_API FunctionPosition : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionPosition(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONPOSITION_HPP + + + diff --git a/include/xqilla/functions/FunctionPrefixFromQName.hpp b/include/xqilla/functions/FunctionPrefixFromQName.hpp new file mode 100644 index 00000000..51c739b7 --- /dev/null +++ b/include/xqilla/functions/FunctionPrefixFromQName.hpp @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionPrefixFromQName.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + * fn:prefix-from-QName function + */ + +#ifndef _FUNCTIONPREFIXFROMQNAME_HPP +#define _FUNCTIONPREFIXFROMQNAME_HPP + +#include + +#include +#include + +class XQILLA_API FunctionPrefixFromQName : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionPrefixFromQName(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** Returns the prefix part of a QName, eg for foo:bar it returns foo */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONPREFIXFROMQNAME_HPP diff --git a/include/xqilla/functions/FunctionQName.hpp b/include/xqilla/functions/FunctionQName.hpp new file mode 100644 index 00000000..51573f1a --- /dev/null +++ b/include/xqilla/functions/FunctionQName.hpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionQName.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + QName function + +*/ + +#ifndef _FUNCTIONQNAME_HPP +#define _FUNCTIONQNAME_HPP + +#include + +#include + +/** QName constructor function. */ +class XQILLA_API FunctionQName : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionQName(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** Given a uri and a name, it returns an expanded QName **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONQNAME_HPP + diff --git a/include/xqilla/functions/FunctionRemove.hpp b/include/xqilla/functions/FunctionRemove.hpp new file mode 100644 index 00000000..5da44451 --- /dev/null +++ b/include/xqilla/functions/FunctionRemove.hpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionRemove.hpp,v 1.10 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONREMOVE_HPP +#define _FUNCTIONREMOVE_HPP + +#include + +#include + +class XQILLA_API FunctionRemove : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionRemove(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + ASTNode *staticTyping(StaticContext *context); + Result createResult(DynamicContext* context, int flags=0) const; + +private: + class RemoveResult : public ResultImpl + { + public: + RemoveResult(const FunctionRemove *func); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + private: + const FunctionRemove *_func; + Numeric::Ptr _position; + Numeric::Ptr _one; + Numeric::Ptr _i; + bool _removeDone; + Result _target; + }; +}; + +#endif // _FUNCTIONREMOVE_HPP diff --git a/include/xqilla/functions/FunctionReplace.hpp b/include/xqilla/functions/FunctionReplace.hpp new file mode 100644 index 00000000..8a95ce61 --- /dev/null +++ b/include/xqilla/functions/FunctionReplace.hpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionReplace.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONREPLACE_HPP +#define _FUNCTIONREPLACE_HPP + +#include + +/** + * Returns the string that is obtained by replacing all non-overlapping substrings of $input + * that match the given $pattern with an occurrence of the $replacement string. + * + * xf:replace(string? $input, string $pattern, string $replacement) => string? + * xf:replace(string? $input, string $pattern, string $replacement, + * string $flags) => string? + */ +class XQILLA_API FunctionReplace : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor. + */ + FunctionReplace(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Returns $input with non-overlapping matches to $pattern + * replaced by $replacement + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONREPLACE_HPP + diff --git a/include/xqilla/functions/FunctionResolveQName.hpp b/include/xqilla/functions/FunctionResolveQName.hpp new file mode 100644 index 00000000..9f11cd19 --- /dev/null +++ b/include/xqilla/functions/FunctionResolveQName.hpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionResolveQName.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + * resolve-QName function + */ + +#ifndef _FUNCTIONRESOLVEQNAME_HPP +#define _FUNCTIONRESOLVEQNAME_HPP + +#include + +#include + +/** resolve-QName function. */ +class XQILLA_API FunctionResolveQName : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionResolveQName(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** Returns an QName with the lexical form given in the first argument. The + * prefix is resolved using the in-scope namespaces for a given element. **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONRESOLVEQNAME_HPP diff --git a/include/xqilla/functions/FunctionResolveURI.hpp b/include/xqilla/functions/FunctionResolveURI.hpp new file mode 100644 index 00000000..395d53fc --- /dev/null +++ b/include/xqilla/functions/FunctionResolveURI.hpp @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionResolveURI.hpp,v 1.11 2006/11/01 16:37:13 jpcs Exp $ + */ + + +#ifndef _FUNCTIONRESOLVEURI_HPP +#define _FUNCTIONRESOLVEURI_HPP + +#include +#include + +/*** + * Returns an absolute anyURI given a base URI and a relative URI. + * + * fn:resolve-uri(anyURI $relative) => anyURI + * fn:resolve-uri(anyURI $relative, anyURI $base) => anyURI + */ +class XQILLA_API FunctionResolveURI : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionResolveURI(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** + * Returns an absolute anyURI given a base URI and a relative URI. + **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +private: + const XMLCh *baseURI_; +}; + +#endif // _FUNCTIONRESOLVEURI_HPP + + + + + diff --git a/include/xqilla/functions/FunctionReverse.hpp b/include/xqilla/functions/FunctionReverse.hpp new file mode 100644 index 00000000..f2b9250a --- /dev/null +++ b/include/xqilla/functions/FunctionReverse.hpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionReverse.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + xf:reverse +*/ + +#ifndef _FUNCTIONREVERSE_HPP +#define _FUNCTIONREVERSE_HPP + +#include + +#include + +class XQILLA_API FunctionReverse : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionReverse(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + ASTNode *staticTyping(StaticContext *context); + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONREVERSE_HPP diff --git a/include/xqilla/functions/FunctionRoot.hpp b/include/xqilla/functions/FunctionRoot.hpp new file mode 100644 index 00000000..4c2770ba --- /dev/null +++ b/include/xqilla/functions/FunctionRoot.hpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionRoot.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + Root function + +*/ + +#ifndef _FUNCTIONROOT_HPP +#define _FUNCTIONROOT_HPP + +#include + +#include + +class XPath2MemoryManager; + +/** For function. */ +class XQILLA_API FunctionRoot : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionRoot(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Called during static analysis to determine if statically correct. + * Performs constant folding if the function has an argument, and it + * is constant. + */ + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + + static Node::Ptr root(const Node::Ptr &node, const DynamicContext *context); +}; + +#endif // _FUNCTIONROOT_HPP diff --git a/include/xqilla/functions/FunctionRound.hpp b/include/xqilla/functions/FunctionRound.hpp new file mode 100644 index 00000000..377370d5 --- /dev/null +++ b/include/xqilla/functions/FunctionRound.hpp @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionRound.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + xf:round(numeric? $srcval) => numeric? +*/ + +#ifndef _FUNCTIONROUND_HPP +#define _FUNCTIONROUND_HPP + +#include + +#include + +class XQILLA_API FunctionRound : public NumericFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionRound(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONROUND_HPP + diff --git a/include/xqilla/functions/FunctionRoundHalfToEven.hpp b/include/xqilla/functions/FunctionRoundHalfToEven.hpp new file mode 100644 index 00000000..ac5c4ece --- /dev/null +++ b/include/xqilla/functions/FunctionRoundHalfToEven.hpp @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionRoundHalfToEven.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + xf:round(numeric? $srcval) => numeric? +*/ + +#ifndef _FUNCTIONROUNDHALFTOEVEN_HPP +#define _FUNCTIONROUNDHALFTOEVEN_HPP + +#include + +#include + +class XQILLA_API FunctionRoundHalfToEven : public NumericFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionRoundHalfToEven(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONROUNDHALFTOEVEN_HPP + diff --git a/include/xqilla/functions/FunctionSecondsFromDateTime.hpp b/include/xqilla/functions/FunctionSecondsFromDateTime.hpp new file mode 100644 index 00000000..de10034c --- /dev/null +++ b/include/xqilla/functions/FunctionSecondsFromDateTime.hpp @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionSecondsFromDateTime.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONGETSECONDSFROMDATETIME_HPP +#define _FUNCTIONGETSECONDSFROMDATETIME_HPP + +#include + +#include + +/** + * Getter function for seconds comoponent of dateTime. + * + * seconds-from-dateTime(dateTime $srcval) => decimal + */ +class XQILLA_API FunctionSecondsFromDateTime : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor. + */ + FunctionSecondsFromDateTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** + * Returns a decimal representing the seconds component in the value of + * $srcval. + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETSECONDSFROMDATETIME_HPP + + + diff --git a/include/xqilla/functions/FunctionSecondsFromDuration.hpp b/include/xqilla/functions/FunctionSecondsFromDuration.hpp new file mode 100644 index 00000000..8ad6a09a --- /dev/null +++ b/include/xqilla/functions/FunctionSecondsFromDuration.hpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionSecondsFromDuration.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + seconds-from-dayTimeDuration(dayTimeDuration? $srcval) => decimal? + +*/ + +#ifndef _FUNCTIONGETSECONDSFROMDAYTIMEDURATION_HPP +#define _FUNCTIONGETSECONDSFROMDAYTIMEDURATION_HPP + +#include + +#include + +class XQILLA_API FunctionSecondsFromDuration : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionSecondsFromDuration(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETSECONDSFROMDAYTIMEDURATION_HPP + + + diff --git a/include/xqilla/functions/FunctionSecondsFromTime.hpp b/include/xqilla/functions/FunctionSecondsFromTime.hpp new file mode 100644 index 00000000..4dcf3577 --- /dev/null +++ b/include/xqilla/functions/FunctionSecondsFromTime.hpp @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionSecondsFromTime.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONGETSECONDSFROMTIME_HPP +#define _FUNCTIONGETSECONDSFROMTIME_HPP + +#include + +#include + +/** + * Getter function for seconds component of time. + * + * xf:seconds-from-time(time? $srcval) => decimal? + */ +class XQILLA_API FunctionSecondsFromTime : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor + */ + FunctionSecondsFromTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** + * Returns the integer representing the seconds in the value of $srcval + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETSECONDSFROMTIME_HPP + + + diff --git a/include/xqilla/functions/FunctionStartsWith.hpp b/include/xqilla/functions/FunctionStartsWith.hpp new file mode 100644 index 00000000..3f100a7f --- /dev/null +++ b/include/xqilla/functions/FunctionStartsWith.hpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionStartsWith.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + StartsWith function + +*/ + +#ifndef _FUNCTIONSTARTSWITH_HPP +#define _FUNCTIONSTARTSWITH_HPP + +#include + +/** StartsWith function. */ +class XQILLA_API FunctionStartsWith : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionStartsWith(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** XPath function. returns true if string1 starts with string2 **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONSTARTSWITH_HPP diff --git a/include/xqilla/functions/FunctionStaticBaseURI.hpp b/include/xqilla/functions/FunctionStaticBaseURI.hpp new file mode 100644 index 00000000..974c8ff8 --- /dev/null +++ b/include/xqilla/functions/FunctionStaticBaseURI.hpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionStaticBaseURI.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + static-base-uri function +*/ + +#ifndef _FUNCTIONSTATICBASEURI_HPP +#define _FUNCTIONSTATICBASEURI_HPP + +#include + +#include + +class XQILLA_API FunctionStaticBaseURI : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionStaticBaseURI(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif diff --git a/include/xqilla/functions/FunctionString.hpp b/include/xqilla/functions/FunctionString.hpp new file mode 100644 index 00000000..a67c0f73 --- /dev/null +++ b/include/xqilla/functions/FunctionString.hpp @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionString.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + String function + +*/ + +#ifndef _FUNCTIONSTRING_HPP +#define _FUNCTIONSTRING_HPP + +#include + +#include + +/** String operator function. */ +class XQILLA_API FunctionString : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionString(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Called during static analysis to determine if statically correct. + * Performs constant folding if the function has an argument, and it + * is constant. + */ + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** Returns the argument as a String **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + + static Item::Ptr string(const Item::Ptr &item, DynamicContext *context); +}; + +#endif // _FUNCTIONSTRING_HPP diff --git a/include/xqilla/functions/FunctionStringJoin.hpp b/include/xqilla/functions/FunctionStringJoin.hpp new file mode 100644 index 00000000..445abee1 --- /dev/null +++ b/include/xqilla/functions/FunctionStringJoin.hpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionStringJoin.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + string-join function +*/ + +#ifndef _FUNCTIONSTRINGJOIN_HPP +#define _FUNCTIONSTRINGJOIN_HPP + +#include + +#include + +/* string-join function */ +class XQILLA_API FunctionStringJoin : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + //Constructor. + FunctionStringJoin(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + +protected: + /* Accepts a sequence of strings and returns the strings concatenated together with an optional separator. */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONSTRINGJOIN_HPP diff --git a/include/xqilla/functions/FunctionStringLength.hpp b/include/xqilla/functions/FunctionStringLength.hpp new file mode 100644 index 00000000..fda8cf7b --- /dev/null +++ b/include/xqilla/functions/FunctionStringLength.hpp @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionStringLength.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + String-length function + +*/ + +#ifndef _FUNCTIONSTRINGLENGTH_HPP +#define _FUNCTIONSTRINGLENGTH_HPP + + +#include + +/** String-length function. */ +class XQILLA_API FunctionStringLength : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionStringLength(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Called during static analysis to determine if statically correct. + * Performs constant folding if the function has an argument, and it + * is constant. + */ + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** Returns the readable length of the string argument. **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +private: + const XMLCh* getString(DynamicContext* context) const; +}; + +#endif // _FUNCTIONSTRINGLENGTH_HPP diff --git a/include/xqilla/functions/FunctionStringToCodepoints.hpp b/include/xqilla/functions/FunctionStringToCodepoints.hpp new file mode 100644 index 00000000..b1c5b954 --- /dev/null +++ b/include/xqilla/functions/FunctionStringToCodepoints.hpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionStringToCodepoints.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + StringToCodepoints function +*/ + +#ifndef _FUNCTIONSTRINGTOCODEPOINTS_HPP +#define _FUNCTIONSTRINGTOCODEPOINTS_HPP + +#include + + +#include + +/** StringToCodepoints function */ +class XQILLA_API FunctionStringToCodepoints : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionStringToCodepoints(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONCONTAINS_HPP + diff --git a/include/xqilla/functions/FunctionSubsequence.hpp b/include/xqilla/functions/FunctionSubsequence.hpp new file mode 100644 index 00000000..5d9b643d --- /dev/null +++ b/include/xqilla/functions/FunctionSubsequence.hpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionSubsequence.hpp,v 1.11 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONSUBSEQUENCE_HPP +#define _FUNCTIONSUBSEQUENCE_HPP + +#include + +#include + +class XQILLA_API FunctionSubsequence : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionSubsequence(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + Result createResult(DynamicContext* context, int flags=0) const; + +private: + class SubsequenceResult : public ResultImpl + { + public: + SubsequenceResult(const FunctionSubsequence *func, int flags); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + private: + int _flags; + const FunctionSubsequence *_func; + Numeric::Ptr _end; + Numeric::Ptr _one; + Numeric::Ptr _i; + Result _source; + }; +}; + +#endif // _FUNCTIONSUBSEQUENCE_HPP + + + + + diff --git a/include/xqilla/functions/FunctionSubstring.hpp b/include/xqilla/functions/FunctionSubstring.hpp new file mode 100644 index 00000000..03d67638 --- /dev/null +++ b/include/xqilla/functions/FunctionSubstring.hpp @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionSubstring.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + Substring function + +*/ + +#ifndef _FUNCTIONSUBSTRING_HPP +#define _FUNCTIONSUBSTRING_HPP + +#include + +#include + +/** Substring function. */ +class XQILLA_API FunctionSubstring : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionSubstring(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** Returns the substring to the right of parm2 until optional parm3 from string parm1 **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONSUBSTRING_HPP + + + + + diff --git a/include/xqilla/functions/FunctionSubstringAfter.hpp b/include/xqilla/functions/FunctionSubstringAfter.hpp new file mode 100644 index 00000000..d83dd8b4 --- /dev/null +++ b/include/xqilla/functions/FunctionSubstringAfter.hpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionSubstringAfter.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + Substring-after function + +*/ + +#ifndef _FUNCTIONSUBSTRINGAFTER_HPP +#define _FUNCTIONSUBSTRINGAFTER_HPP + +#include + +/** Substring-after function. */ +class XQILLA_API FunctionSubstringAfter : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionSubstringAfter(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** XPath function. returns the substring of the first string following the first occurrence of the second string within that string **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONSUBSTRINGAFTER_HPP diff --git a/include/xqilla/functions/FunctionSubstringBefore.hpp b/include/xqilla/functions/FunctionSubstringBefore.hpp new file mode 100644 index 00000000..b458d5cd --- /dev/null +++ b/include/xqilla/functions/FunctionSubstringBefore.hpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionSubstringBefore.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + Substring-before function + +*/ + +#ifndef _FUNCTIONSUBSTRINGBEFORE_HPP +#define _FUNCTIONSUBSTRINGBEFORE_HPP + +#include + +#include + +/** Substring-before function. */ +class XQILLA_API FunctionSubstringBefore : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionSubstringBefore(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** XPath function. returns the substring of the first string preceding the first occurrence of the second string within that string **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONSUBSTRINGBEFORE_HPP diff --git a/include/xqilla/functions/FunctionSum.hpp b/include/xqilla/functions/FunctionSum.hpp new file mode 100644 index 00000000..518784b5 --- /dev/null +++ b/include/xqilla/functions/FunctionSum.hpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionSum.hpp,v 1.12 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + * Sum function -- takes a sequence, returns a value of the same type as the items which is + * the sum of the values. +*/ + +#ifndef _FUNCTIONSUM_HPP +#define _FUNCTIONSUM_HPP + +#include + +/** Sum operator function*/ +class XQILLA_API FunctionSum : public AggregateFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionSum(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + /** Takes a list of nodes and sums their values */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + + static Item::Ptr sum(const Sequence &sequence, DynamicContext *context, const LocationInfo *info); + +}; +#endif // _FUNCTIONSUM_HPP diff --git a/include/xqilla/functions/FunctionTimezoneFromDate.hpp b/include/xqilla/functions/FunctionTimezoneFromDate.hpp new file mode 100644 index 00000000..40047386 --- /dev/null +++ b/include/xqilla/functions/FunctionTimezoneFromDate.hpp @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionTimezoneFromDate.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONGETTIMEZONEFROMDATE_HPP +#define _FUNCTIONGETTIMEZONEFROMDATE_HPP + +#include + +#include + +/** + * Getter function for timezone component of date. + * + * xf:timezone-from-date(date? $srcval) => xdt:dayTimeDuration? + */ +class XQILLA_API FunctionTimezoneFromDate : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor + */ + FunctionTimezoneFromDate(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Returns the string representing the timezone in the value of $srcval + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETTIMEZONEFROMDATE_HPP + + + diff --git a/include/xqilla/functions/FunctionTimezoneFromDateTime.hpp b/include/xqilla/functions/FunctionTimezoneFromDateTime.hpp new file mode 100644 index 00000000..ccb0033c --- /dev/null +++ b/include/xqilla/functions/FunctionTimezoneFromDateTime.hpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionTimezoneFromDateTime.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONGETTIMEZONEFROMDATETIME_HPP +#define _FUNCTIONGETTIMEZONEFROMDATETIME_HPP + +#include + +#include + +/** + * Getter function for the timezone component of dateTime + * + * timezone-from-dateTime(dateTime $srcval) => xdt:dayTimeDuration? + */ +class XQILLA_API FunctionTimezoneFromDateTime : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor. + */ + FunctionTimezoneFromDateTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Returns a string representing the timezone component in the value of + * $srcval. + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETTIMEZONEFROMDATETIME_HPP + + + diff --git a/include/xqilla/functions/FunctionTimezoneFromTime.hpp b/include/xqilla/functions/FunctionTimezoneFromTime.hpp new file mode 100644 index 00000000..642c3a3f --- /dev/null +++ b/include/xqilla/functions/FunctionTimezoneFromTime.hpp @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionTimezoneFromTime.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONGETTIMEZONEFROMTIME_HPP +#define _FUNCTIONGETTIMEZONEFROMTIME_HPP + +#include + +#include + +/** + * Getter function for timezone component of time. + * + * xf:timezone-from-time(time? $srcval) => xdt:dayTimeDuration? + */ +class XQILLA_API FunctionTimezoneFromTime : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor + */ + FunctionTimezoneFromTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Returns the string representing the timezone in the value of $srcval + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETTIMEZONEFROMTIME_HPP + + + diff --git a/include/xqilla/functions/FunctionTokenize.hpp b/include/xqilla/functions/FunctionTokenize.hpp new file mode 100644 index 00000000..cf4b98b2 --- /dev/null +++ b/include/xqilla/functions/FunctionTokenize.hpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionTokenize.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONTOKENIZE_HPP +#define _FUNCTIONTOKENIZE_HPP + +#include + +/** + * Breaks the $input string into a sequence of strings, + * treating any substring that matches $pattern as a separator. + * The separators themselves are not returned. + * + * tokenize(string? $input, string $pattern) => string* + * tokenize(string? $input, string $pattern, string $flags) => string* + */ +class XQILLA_API FunctionTokenize : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor. + */ + FunctionTokenize(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Returns $input broken into a sequence of strings + * using matches to $pattern as a separator. + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONTOKENIZE_HPP + diff --git a/include/xqilla/functions/FunctionTrace.hpp b/include/xqilla/functions/FunctionTrace.hpp new file mode 100644 index 00000000..968c1920 --- /dev/null +++ b/include/xqilla/functions/FunctionTrace.hpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionTrace.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +/* + + Trace function + +*/ + +#ifndef _FUNCTIONTRACE_HPP +#define _FUNCTIONTRACE_HPP + +#include + +#include + +class XQILLA_API FunctionTrace : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionTrace(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONTRACE_HPP + + + diff --git a/include/xqilla/functions/FunctionTranslate.hpp b/include/xqilla/functions/FunctionTranslate.hpp new file mode 100644 index 00000000..775d3176 --- /dev/null +++ b/include/xqilla/functions/FunctionTranslate.hpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionTranslate.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONTRANSLATE_HPP +#define _FUNCTIONTRANSLATE_HPP + +#include + +/** Translate function. */ +class XQILLA_API FunctionTranslate : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionTranslate(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** XPath function. returns string1 with each character in string2 replaced with the corresponding character in string3 **/ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +}; + +#endif // _FUNCTIONTRANSLATE_HPP + + + diff --git a/include/xqilla/functions/FunctionTrue.hpp b/include/xqilla/functions/FunctionTrue.hpp new file mode 100644 index 00000000..0d4f0761 --- /dev/null +++ b/include/xqilla/functions/FunctionTrue.hpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionTrue.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONTRUE_HPP +#define _FUNCTIONTRUE_HPP + +#include + +#include + +/** + * Returns the boolean value true. + * + * xf:true() => boolean + */ +class XQILLA_API FunctionTrue : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor. + */ + FunctionTrue(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Returns the boolean value true. + */ + virtual Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONTRUE_HPP + diff --git a/include/xqilla/functions/FunctionUnordered.hpp b/include/xqilla/functions/FunctionUnordered.hpp new file mode 100644 index 00000000..fbcd8811 --- /dev/null +++ b/include/xqilla/functions/FunctionUnordered.hpp @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionUnordered.hpp,v 1.10 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONUNORDERED_HPP +#define _FUNCTIONUNORDERED_HPP + +#include + +class XQILLA_API FunctionUnordered : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionUnordered(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + Result createResult(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONUNORDERED_HPP + diff --git a/include/xqilla/functions/FunctionUpperCase.hpp b/include/xqilla/functions/FunctionUpperCase.hpp new file mode 100644 index 00000000..88159317 --- /dev/null +++ b/include/xqilla/functions/FunctionUpperCase.hpp @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionUpperCase.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONUPPERCASE_HPP +#define _FUNCTIONUPPERCASE_HPP + +#include + +#include + +/** + * Returns the given value after translating every lower-case letter to its + * upper-case correspondent. + * + * xf:upper-case(string? $srcval) => string? + * + */ +class XQILLA_API FunctionUpperCase : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor + */ + FunctionUpperCase(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Returns the upper-case string. + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONUPPERCASE_HPP + + + diff --git a/include/xqilla/functions/FunctionYearFromDate.hpp b/include/xqilla/functions/FunctionYearFromDate.hpp new file mode 100644 index 00000000..5ba573e3 --- /dev/null +++ b/include/xqilla/functions/FunctionYearFromDate.hpp @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionYearFromDate.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONGETYEARFROMDATE_HPP +#define _FUNCTIONGETYEARFROMDATE_HPP + +#include + +#include + +/** + * Getter function for year component of date. + * + * xf:year-from-date(date $srcval) => integer + */ +class XQILLA_API FunctionYearFromDate : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor + */ + FunctionYearFromDate(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** + * Returns the integer representing the year in the value of $srcval + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETYEARFROMDATE_HPP + + + diff --git a/include/xqilla/functions/FunctionYearFromDateTime.hpp b/include/xqilla/functions/FunctionYearFromDateTime.hpp new file mode 100644 index 00000000..e72e57df --- /dev/null +++ b/include/xqilla/functions/FunctionYearFromDateTime.hpp @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionYearFromDateTime.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONGETYEARFROMDATETIME_HPP +#define _FUNCTIONGETYEARFROMDATETIME_HPP + +#include + +#include + +/** + * Getter function for the year component of dateTime. + * + * year-from-dateTime(dateTime $srcval) => integer + */ +class XQILLA_API FunctionYearFromDateTime : public XQFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor. + */ + FunctionYearFromDateTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + /** + * Returns an integer representing the year component in the value of + * $srcval. + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETYEARFROMDATETIME_HPP + + + diff --git a/include/xqilla/functions/FunctionYearsFromDuration.hpp b/include/xqilla/functions/FunctionYearsFromDuration.hpp new file mode 100644 index 00000000..0cafd39a --- /dev/null +++ b/include/xqilla/functions/FunctionYearsFromDuration.hpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionYearsFromDuration.hpp,v 1.8 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONGETYEARSFROMYEARMONTHDURATION_HPP +#define _FUNCTIONGETYEARSFROMYEARMONTHDURATION_HPP + +#include + +#include + +/** + * Getter function for the years component of yearMonthDuration + * + * years-from-duration(yearMonthDuration? $srcval) => integer? + */ +class XQILLA_API FunctionYearsFromDuration : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + /** + * Constructor. + */ + FunctionYearsFromDuration(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + /** + * Returns an integer representing the years component in the value of + * $srcval + */ + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; +}; + +#endif // _FUNCTIONGETYEARSFROMYEARMONTHDURATION_HPP + + + diff --git a/include/xqilla/functions/FunctionZeroOrOne.hpp b/include/xqilla/functions/FunctionZeroOrOne.hpp new file mode 100644 index 00000000..f1b07c87 --- /dev/null +++ b/include/xqilla/functions/FunctionZeroOrOne.hpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionZeroOrOne.hpp,v 1.9 2006/11/01 16:37:13 jpcs Exp $ + */ + +#ifndef _FUNCTIONZEROORONE_HPP +#define _FUNCTIONZEROORONE_HPP + +#include + +#include + +class XQILLA_API FunctionZeroOrOne : public ConstantFoldingFunction +{ +public: + static const XMLCh name[]; + static const unsigned int minArgs; + static const unsigned int maxArgs; + + FunctionZeroOrOne(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Result createResult(DynamicContext* context, int flags=0) const; + +private: + class ZeroOrOneResult : public ResultImpl + { + public: + ZeroOrOneResult(const FunctionZeroOrOne *func, int flags); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + private: + int _flags; + const FunctionZeroOrOne *_func; + Result _arg; + unsigned int _argNo; + }; +}; + +#endif // _FUNCTIONZEROORONE_HPP diff --git a/include/xqilla/functions/XQUserFunction.hpp b/include/xqilla/functions/XQUserFunction.hpp new file mode 100644 index 00000000..112f9584 --- /dev/null +++ b/include/xqilla/functions/XQUserFunction.hpp @@ -0,0 +1,134 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQUserFunction.hpp,v 1.12 2006/11/01 16:37:13 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQFunction.hpp: interface for the XQFunction class. +////////////////////////////////////////////////////////////////////// + +#if !defined(AFXQ_XQFUNCTION_H__97943356_0D2D_4930_9D60_6E95AB67586A__INCLUDED_) +#define AFXQ_XQFUNCTION_H__97943356_0D2D_4930_9D60_6E95AB67586A__INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include + +class XQILLA_API XQUserFunction : public FuncFactory, public LocationInfo +{ +public: + class XQFunctionParameter + { + public: + XQFunctionParameter(const XMLCh* paramName, SequenceType* type, XPath2MemoryManager* memMgr) + : _src(memMgr) + { + _qname = memMgr->getPooledString(paramName); + m_pType = type; + } + + const XMLCh *_qname, *_uri, *_name; + SequenceType* m_pType; + StaticResolutionContext _src; + }; + + typedef std::vector > VectorOfFunctionParameters; + + class XQFunctionEvaluator : public XQFunction + { + public: + XQFunctionEvaluator(const XQUserFunction* funcDef, const VectorOfASTNodes& args, XPath2MemoryManager* expr); + + void setSignature(const XMLCh* signature) + { + _signature=signature; + } + + Result createResult(DynamicContext* context, int flags=0) const; + ASTNode* staticResolution(StaticContext* context); + virtual ASTNode *staticTyping(StaticContext *context); + + const XQUserFunction *getFunctionDefinition() const + { + return m_pFuncDef; + } + + protected: + class FunctionEvaluatorResult : public ResultImpl + { + public: + FunctionEvaluatorResult(const XQFunctionEvaluator *di); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + private: + const XQFunctionEvaluator *_di; + bool _toDo; + + Scope *_scope; + Result _result; + bool _scopeRemoved; + }; + + const XQUserFunction* m_pFuncDef; + }; + + XQUserFunction(const XMLCh* fnName, VectorOfFunctionParameters* params, ASTNode* body, SequenceType* returnValue, StaticContext* ctx); + + // from FuncFactory + virtual ASTNode *createInstance(const VectorOfASTNodes &args, XPath2MemoryManager* expr) const; + virtual const XMLCh* getName() const; + virtual const XMLCh *getURI() const; + virtual unsigned int getMinArgs() const; + virtual unsigned int getMaxArgs() const; + + virtual const XMLCh* getFullName() const; + const VectorOfFunctionParameters* getParams() const; + const SequenceType* getReturnValue() const; + + /// Resolve URIs, give the function a default static type + void staticResolutionStage1(StaticContext* context); + /// Resolve the function body, work out a more static return type + void staticResolutionStage2(StaticContext* context); + void staticTyping(StaticContext *context); + + void setSignature(const XMLCh* signature); + const XMLCh* getSignature(); + bool isExternal() const; + void setFunctionBody(ASTNode* value); + void setModuleDocumentCache(DocumentCache* docCache); + + void setURI(const XMLCh* uri); + const XMLCh *getPrefix() const; + + const ASTNode *getFunctionBody() const; + DocumentCache* getModuleDocumentCache() const; + + static const XMLCh XMLChXQueryLocalFunctionsURI[]; + +protected: + ASTNode* m_body; + const XMLCh* m_szPrefix,*m_szName,*m_szSignature,*m_szFullName,*m_szURI; + SequenceType* m_pReturnPattern; + VectorOfFunctionParameters* m_pParams; + XPath2MemoryManager* m_pMemMgr; + StaticResolutionContext _src; + bool m_bCalculatingSRC; + DocumentCache* m_moduleDocCache; + + friend class XQFunctionEvaluator; +}; + +#endif // !defined(AFXQ_XQFUNCTION_H__97943356_0D2D_4930_9D60_6E95AB67586A__INCLUDED_) diff --git a/include/xqilla/items/ATAnySimpleType.hpp b/include/xqilla/items/ATAnySimpleType.hpp new file mode 100644 index 00000000..f829250b --- /dev/null +++ b/include/xqilla/items/ATAnySimpleType.hpp @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATAnySimpleType.hpp,v 1.7 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATANYSIMPLETYPE_HPP +#define _ATANYSIMPLETYPE_HPP + +#include +#include +#include + +class DynamicContext; + +/** + * This class represents the atomic types (ie, the simple types + * which are not list or union types) with type annotation + * xs:anySimpleType */ +class XQILLA_API ATAnySimpleType : public AnyAtomicType +{ + +public: + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* returns true if the two objects' URI are equal (string comparison) + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0; + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; +}; + +#endif // _ATANYSIMPLETYPE_HPP diff --git a/include/xqilla/items/ATAnyURIOrDerived.hpp b/include/xqilla/items/ATAnyURIOrDerived.hpp new file mode 100644 index 00000000..0eb8ca23 --- /dev/null +++ b/include/xqilla/items/ATAnyURIOrDerived.hpp @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATAnyURIOrDerived.hpp,v 1.7 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATANYURIORDERIVED_HPP +#define _ATANYURIORDERIVED_HPP + +#include +#include +#include + +class DynamicContext; + +class XQILLA_API ATAnyURIOrDerived : public AnyAtomicType +{ +public: + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* returns true if the two objects' URI are equal (string comparison) + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0; + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; +}; + +#endif // _ATANYURIORDERIVED_HPP diff --git a/include/xqilla/items/ATBase64BinaryOrDerived.hpp b/include/xqilla/items/ATBase64BinaryOrDerived.hpp new file mode 100644 index 00000000..c690b0b0 --- /dev/null +++ b/include/xqilla/items/ATBase64BinaryOrDerived.hpp @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATBase64BinaryOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATBASE64BINARYORDERIVED_HPP +#define _ATBASE64BINARYORDERIVED_HPP + +#include +#include + +#include + +class DynamicContext; + +class XQILLA_API ATBase64BinaryOrDerived : public AnyAtomicType +{ +public: + /* Get the name of the primitive type (basic type) of this type (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* returns true if the two objects' base 64 binary representation + * are equal (string comparison) false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATBase64BinaryOrDerived::Ptr &other, const DynamicContext *context) const = 0; + +protected: + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; +}; + +#endif // _ATBASE64BINARYORDERIVED_HPP diff --git a/include/xqilla/items/ATBooleanOrDerived.hpp b/include/xqilla/items/ATBooleanOrDerived.hpp new file mode 100644 index 00000000..380db2ba --- /dev/null +++ b/include/xqilla/items/ATBooleanOrDerived.hpp @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATBooleanOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATBOOLEANORDERIVED_HPP +#define _ATBOOLEANORDERIVED_HPP + +#include +#include + +#include + +class XPath2MemoryManager; + +class XQILLA_API ATBooleanOrDerived : public AnyAtomicType +{ +public: + typedef RefCountPointer Ptr; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* returns true if the two objects have the same boolean value + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATBooleanOrDerived::Ptr &other, const DynamicContext *context) const = 0; + + /* returns true if boolean value evaluates to true + * false otherwise */ + virtual bool isTrue() const = 0; + + /* returns false if boolean value evaluates to true + * true otherwise */ + virtual bool isFalse() const = 0; + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; +}; + +#endif // _ATBOOLEANORDERIVED_HPP diff --git a/include/xqilla/items/ATDateOrDerived.hpp b/include/xqilla/items/ATDateOrDerived.hpp new file mode 100644 index 00000000..ccb48d39 --- /dev/null +++ b/include/xqilla/items/ATDateOrDerived.hpp @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATDateOrDerived.hpp,v 1.9 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATDATEORDERIVED_HPP +#define _ATDATEORDERIVED_HPP + +#include +#include + +#include +#include +#include +#include + +class XQILLA_API ATDateOrDerived : public DateOrTimeType +{ +public: + typedef RefCountPointer Ptr; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the XMLCh* (lexical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* returns true if the two objects represent the same date, + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATDateOrDerived::Ptr &other, const DynamicContext *context) const = 0; + + /** + * Returns an integer representing the year component of this object + */ + virtual ATDecimalOrDerived::Ptr getYears(const DynamicContext *context) const = 0; + + /** + * Returns an integer representing the month component of this object + */ + virtual ATDecimalOrDerived::Ptr getMonths(const DynamicContext *context) const = 0; + + /** + * Returns an integer representing the day component of this object + */ + virtual ATDecimalOrDerived::Ptr getDays(const DynamicContext *context) const = 0; + + /** + * Returns a timezone object representing the timezone component of this object + */ + virtual const Timezone::Ptr &getTimezone() const = 0; + + /** + * Returns true if the timezone is defined for this object, false otherwise. + */ + virtual bool hasTimezone() const = 0; + + /** + * Setter for timezone. Overrides the current timezone. (Not to be + * confused with addTimezone(). + */ + virtual ATDateOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const = 0; + + /** + * Returns an ATDateOrDerived with a timezone added to it + */ + virtual ATDateOrDerived::Ptr addTimezone(const ATDurationOrDerived::Ptr &timezone, + const DynamicContext* context) const = 0; + + /** + * Returns a date with the given yearMonthDuration added to it + */ + virtual ATDateOrDerived::Ptr addYearMonthDuration(const ATDurationOrDerived::Ptr &yearMonth, + const DynamicContext* context) const = 0; + + /** + * Returns a date with the given dayTimeDuration added to it + */ + virtual ATDateOrDerived::Ptr addDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, const DynamicContext* context) const = 0; + + /** + * Returns a date with the given yearMonthDuration subtracted from it + */ + virtual ATDateOrDerived::Ptr subtractYearMonthDuration(const ATDurationOrDerived::Ptr &yearMonth, + const DynamicContext* context) const = 0; + + /** + * Returns a date with the given dayTimeDuration subtracted from it + */ + virtual ATDateOrDerived::Ptr subtractDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, + const DynamicContext* context) const = 0; + /** + * Returns a dayTimeDuration corresponding to the difference between this + * and the given ATDateOrDerived* + */ + virtual ATDurationOrDerived::Ptr subtractDate(const ATDateOrDerived::Ptr &date, const DynamicContext* context) const = 0; + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; +}; + +#endif // _ATDATEORDERIVED_HPP diff --git a/include/xqilla/items/ATDateTimeOrDerived.hpp b/include/xqilla/items/ATDateTimeOrDerived.hpp new file mode 100644 index 00000000..85f54fe2 --- /dev/null +++ b/include/xqilla/items/ATDateTimeOrDerived.hpp @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATDateTimeOrDerived.hpp,v 1.9 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATDATETIMEORDERIVED_HPP +#define _ATDATETIMEORDERIVED_HPP + +#include +#include + +#include +#include +#include +#include + +class XQILLA_API ATDateTimeOrDerived : public DateOrTimeType +{ +public: + typedef RefCountPointer Ptr; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the XMLCh* (lexical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* returns true if the two objects represent the same date, + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATDateTimeOrDerived::Ptr &other, const DynamicContext *context) const = 0; + + /** + * Returns an integer representing the year component of this object + */ + virtual ATDecimalOrDerived::Ptr getYears(const DynamicContext *context) const = 0; + + /** + * Returns an integer representing the month component of this object + */ + virtual ATDecimalOrDerived::Ptr getMonths(const DynamicContext *context) const = 0; + + /** + * Returns an integer representing the day component of this object + */ + virtual ATDecimalOrDerived::Ptr getDays(const DynamicContext *context) const = 0; + + /** + * Returns an integer representing the hour component of this object + */ + virtual ATDecimalOrDerived::Ptr getHours(const DynamicContext *context) const = 0; + + /** + * Returns an integer representing the minute component of this object + */ + virtual ATDecimalOrDerived::Ptr getMinutes(const DynamicContext *context) const = 0; + + /** + * Returns a decimal representing the second component of this object + */ + virtual ATDecimalOrDerived::Ptr getSeconds(const DynamicContext *context) const = 0; + + /** + * Returns a timezone object representing the timezone component of this object + */ + virtual const Timezone::Ptr &getTimezone() const = 0; + + /** + * Returns true if the timezone is defined for this object, false otherwise. + */ + virtual bool hasTimezone() const = 0; + + /** + * Setter for timezone. Overrides the current timezone. (Not to be + * confused with addTimezone(). + */ + virtual ATDateTimeOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const = 0; + + /** + * Returns an ATDateTimeOrDerived with a timezone added to it + */ + virtual ATDateTimeOrDerived::Ptr addTimezone(const ATDurationOrDerived::Ptr &timezone, const DynamicContext* context) const = 0; + + /** + * Returns a date with the given yearMonthDuration added to it + */ + virtual ATDateTimeOrDerived::Ptr addYearMonthDuration(const ATDurationOrDerived::Ptr &yearMonth, const DynamicContext* context) const = 0; + + /** + * Returns a date with the given dayTimeDuration added to it + */ + virtual ATDateTimeOrDerived::Ptr addDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, const DynamicContext* context) const = 0; + + /** + * Returns a date with the given yearMonthDuration subtracted from it + */ + virtual ATDateTimeOrDerived::Ptr subtractYearMonthDuration(const ATDurationOrDerived::Ptr &yearMonth, const DynamicContext* context) const = 0; + + /** + * Returns a date with the given dayTimeDuration subtracted from it + */ + virtual ATDateTimeOrDerived::Ptr subtractDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, const DynamicContext* context) const = 0; + + /** + * Returns a dayTimeDuration corresponding to the difference between this + * and the given ATDateTimeOrDerived* + */ + virtual ATDurationOrDerived::Ptr subtractDateTimeAsDayTimeDuration(const ATDateTimeOrDerived::Ptr &date, const DynamicContext* context) const = 0; + + /** + * Returns a dayTimeDuration corresponding to the difference between this + * and the given ATDateTimeOrDerived* + */ + virtual ATDurationOrDerived::Ptr subtractDateTimeAsYearMonthDuration(const ATDateTimeOrDerived::Ptr &date, const DynamicContext* context) const = 0; + + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; +}; + +#endif // _ATDATETIMEORDERIVED_HPP diff --git a/include/xqilla/items/ATDecimalOrDerived.hpp b/include/xqilla/items/ATDecimalOrDerived.hpp new file mode 100644 index 00000000..3eea3d6b --- /dev/null +++ b/include/xqilla/items/ATDecimalOrDerived.hpp @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATDecimalOrDerived.hpp,v 1.11 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATDECIMALORDERIVED_HPP +#define _ATDECIMALORDERIVED_HPP + +#include +#include +#include + +class DynamicContext; +class MAPM; +class XQILLA_API ATDecimalOrDerived : public Numeric +{ +public: + typedef RefCountPointer Ptr; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* Promote this to the given type, if possible */ + virtual Numeric::Ptr promoteTypeIfApplicable(const XMLCh* typeURI, const XMLCh* typeName, const DynamicContext* context) const = 0; + + /** Returns a Numeric object which is the sum of this and other */ + virtual Numeric::Ptr add(const Numeric::Ptr &other, const DynamicContext* context) const = 0; + + /** Returns a Numeric object which is the difference of this and + * other */ + virtual Numeric::Ptr subtract(const Numeric::Ptr &other, const DynamicContext* context) const = 0; + + /** Returns a Numeric object which is the product of this and other */ + virtual Numeric::Ptr multiply(const Numeric::Ptr &other, const DynamicContext* context) const = 0; + + /** Returns a Numeric object which is the quotient of this and other */ + virtual Numeric::Ptr divide(const Numeric::Ptr &other, const DynamicContext* context) const = 0; + + /** Returns the arithmetic product of its operands as a Numeric */ + virtual Numeric::Ptr mod(const Numeric::Ptr &other, const DynamicContext* context) const = 0; + + /** Returns the floor of this Numeric */ + virtual Numeric::Ptr floor(const DynamicContext* context) const = 0; + + /** Returns the ceiling of this Numeric */ + virtual Numeric::Ptr ceiling(const DynamicContext* context) const = 0; + + /** Rounds this Numeric */ + virtual Numeric::Ptr round(const DynamicContext* context) const = 0; + + /** Rounds this Numeric to the given precision, and rounds a half to even */ + virtual Numeric::Ptr roundHalfToEven(const Numeric::Ptr &precision, const DynamicContext* context) const = 0; + + /** Returns the Additive inverse of this Numeric */ + virtual Numeric::Ptr invert(const DynamicContext* context) const = 0; + + /** Returns the absolute value of this Numeric */ + virtual Numeric::Ptr abs(const DynamicContext* context) const = 0; + + /** Does this Numeric have value 0? */ + virtual bool isZero() const = 0; + + /** Is this Numeric negative? */ + virtual bool isNegative() const = 0; + + /** Is this Numeric positive? */ + virtual bool isPositive() const = 0; + + /* Is this floating point value not a number? */ + virtual bool isNaN() const { return false; } + + /* Is this floating point value infinite? */ + virtual bool isInfinite() const { return false; } + + /** Treat this decimal (must be integer) as a codepoint **/ + virtual XMLInt32 treatAsCodepoint(const DynamicContext* context) const = 0; + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; + + virtual const MAPM &asMAPM() const = 0; + + virtual State getState() const = 0; +}; + +#endif // _ATDECIMALORDERIVED_HPP diff --git a/include/xqilla/items/ATDoubleOrDerived.hpp b/include/xqilla/items/ATDoubleOrDerived.hpp new file mode 100644 index 00000000..12e2d37f --- /dev/null +++ b/include/xqilla/items/ATDoubleOrDerived.hpp @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATDoubleOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATDOUBLEORDERIVED_HPP +#define _ATDOUBLEORDERIVED_HPP + +#include +#include +#include + +class XQILLA_API ATDoubleOrDerived : public Numeric +{ +public: + typedef RefCountPointer Ptr; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* Promote this to the given type, if possible */ + virtual Numeric::Ptr promoteTypeIfApplicable(const XMLCh* typeURI, const XMLCh* typeName, const DynamicContext* context) const = 0; + + /** Returns a Numeric object which is the sum of this and other */ + virtual Numeric::Ptr add(const Numeric::Ptr &other, const DynamicContext* context) const = 0; + + /** Returns a Numeric object which is the difference of this and + * other */ + virtual Numeric::Ptr subtract(const Numeric::Ptr &other, const DynamicContext* context) const = 0; + + /** Returns a Numeric object which is the product of this and other */ + virtual Numeric::Ptr multiply(const Numeric::Ptr &other, const DynamicContext* context) const = 0; + + /** Returns a Numeric object which is the quotient of this and other */ + virtual Numeric::Ptr divide(const Numeric::Ptr &other, const DynamicContext* context) const = 0; + + /** Returns the arithmetic product of its operands as a Numeric */ + virtual Numeric::Ptr mod(const Numeric::Ptr &other, const DynamicContext* context) const = 0; + + /** Returns the floor of this Numeric */ + virtual Numeric::Ptr floor(const DynamicContext* context) const = 0; + + /** Returns the ceiling of this Numeric */ + virtual Numeric::Ptr ceiling(const DynamicContext* context) const = 0; + + /** Rounds this Numeric */ + virtual Numeric::Ptr round(const DynamicContext* context) const = 0; + + /** Rounds this Numeric to the given precision, and rounds a half to even */ + virtual Numeric::Ptr roundHalfToEven(const Numeric::Ptr &precision, const DynamicContext* context) const = 0; + + /** Returns the Additive inverse of this Numeric */ + virtual Numeric::Ptr invert(const DynamicContext* context) const = 0; + + /** Returns the absolute value of this Numeric */ + virtual Numeric::Ptr abs(const DynamicContext* context) const = 0; + + /* Is this xs:double not a number */ + virtual bool isNaN() const = 0; + + /* Is this xs:double infinite? */ + virtual bool isInfinite() const = 0; + + /** Does this Numeric have value 0? */ + virtual bool isZero() const = 0; + + /** Is this Numeric positive? */ + virtual bool isPositive() const = 0; + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; + + virtual const MAPM &asMAPM() const = 0; + + virtual State getState() const = 0; +}; + +#endif // _ATDOUBLEORDERIVED_HPP diff --git a/include/xqilla/items/ATDurationOrDerived.hpp b/include/xqilla/items/ATDurationOrDerived.hpp new file mode 100644 index 00000000..b5f49d22 --- /dev/null +++ b/include/xqilla/items/ATDurationOrDerived.hpp @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATDurationOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATDURATIONORDERIVED_HPP +#define _ATDURATIONORDERIVED_HPP + +#include + +#include +#include +#include + +class XPath2MemoryManager; +class DynamicContext; + +class XQILLA_API ATDurationOrDerived : public AnyAtomicType +{ +public: + typedef RefCountPointer Ptr; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* returns true if this duration is an instance of a xdt:dayTimeDuration */ + virtual bool isDayTimeDuration() const = 0; + + /* returns true if this duration is an instance of a xdt:yearMonthDuration */ + virtual bool isYearMonthDuration() const = 0; + + /* returns true if the two objects have the same duration + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATDurationOrDerived::Ptr &other, const DynamicContext *context) const = 0; + + /** Divide this duration by a number -- only available for xdt:dayTimeDuration + * and xdt:yearMonthDuration */ + virtual ATDurationOrDerived::Ptr divide(const Numeric::Ptr &divisor, const DynamicContext* context) const = 0; + + /** Divide this duration by a duration -- only available for xdt:dayTimeDuration + * and xdt:yearMonthDuration */ + virtual ATDecimalOrDerived::Ptr divide(const ATDurationOrDerived::Ptr &divisor, const DynamicContext* context) const = 0; + + /** Multiply this duration by a number -- only available for xdt:dayTimeDuration + * and xdt:yearMonthDuration */ + virtual ATDurationOrDerived::Ptr multiply(const Numeric::Ptr &divisor, const DynamicContext* context) const = 0; + + /** Add a duration to this duration -- only available for xdt:dayTimeDuration + * and xdt:yearMonthDuration */ + virtual ATDurationOrDerived::Ptr add(const ATDurationOrDerived::Ptr &other, const DynamicContext* context) const = 0; + + /** Subtract a duration from this duration -- only available for xdt:dayTimeDuration + * and xdt:yearMonthDuration */ + virtual ATDurationOrDerived::Ptr subtract(const ATDurationOrDerived::Ptr &other, const DynamicContext* context) const = 0; + + /** Returns the year portion of this duration */ + virtual ATDecimalOrDerived::Ptr getYears(const DynamicContext* context) const = 0; + + /** Returns the month portion of this duration */ + virtual ATDecimalOrDerived::Ptr getMonths(const DynamicContext* context) const = 0; + + /** Returns the days portion of this duration */ + virtual ATDecimalOrDerived::Ptr getDays(const DynamicContext* context) const = 0; + + /** Returns the hours portion of this duration */ + virtual ATDecimalOrDerived::Ptr getHours(const DynamicContext* context) const = 0; + + /** Returns the minutes portion of this duration */ + virtual ATDecimalOrDerived::Ptr getMinutes(const DynamicContext* context) const = 0; + + /** Returns the seconds portion of this duration */ + virtual ATDecimalOrDerived::Ptr getSeconds(const DynamicContext* context) const = 0; + + /* return this duration in forms of seconds */ + virtual ATDecimalOrDerived::Ptr asSeconds(const DynamicContext* context) const = 0; + + /* return this duration in forms of months */ + virtual ATDecimalOrDerived::Ptr asMonths(const DynamicContext* context) const = 0; + + /** Returns true if this Duration is negative, false otherwise */ + virtual bool isNegative() const = 0; + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; + + static const XMLCh fgDT_DAYTIMEDURATION[]; + static const XMLCh fgDT_DAYTIMEDURATION_XERCESHASH[]; + static const XMLCh pattern_DT_DAYTIMEDURATION[]; + + static const XMLCh fgDT_YEARMONTHDURATION[]; + static const XMLCh fgDT_YEARMONTHDURATION_XERCESHASH[]; + static const XMLCh pattern_DT_YEARMONTHDURATION[]; +}; + +#endif // _ATDURATIONORDERIVED_HPP + + diff --git a/include/xqilla/items/ATFloatOrDerived.hpp b/include/xqilla/items/ATFloatOrDerived.hpp new file mode 100644 index 00000000..cb3698dd --- /dev/null +++ b/include/xqilla/items/ATFloatOrDerived.hpp @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATFloatOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATFLOATORDERIVED_HPP +#define _ATFLOATORDERIVED_HPP + +#include +#include +#include + +class XQILLA_API ATFloatOrDerived : public Numeric +{ +public: + typedef RefCountPointer Ptr; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* Promote this to the given type, if possible */ + virtual Numeric::Ptr promoteTypeIfApplicable(const XMLCh* typeURI, const XMLCh* typeName, const DynamicContext* context) const = 0; + + /** Returns a Numeric object which is the sum of this and other */ + virtual Numeric::Ptr add(const Numeric::Ptr &other, const DynamicContext* context) const = 0; + + /** Returns a Numeric object which is the difference of this and + * other */ + virtual Numeric::Ptr subtract(const Numeric::Ptr &other, const DynamicContext* context) const = 0; + + /** Returns a Numeric object which is the product of this and other */ + virtual Numeric::Ptr multiply(const Numeric::Ptr &other, const DynamicContext* context) const = 0; + + /** Returns a Numeric object which is the quotient of this and other */ + virtual Numeric::Ptr divide(const Numeric::Ptr &other, const DynamicContext* context) const = 0; + + /** Returns the arithmetic product of its operands as a Numeric */ + virtual Numeric::Ptr mod(const Numeric::Ptr &other, const DynamicContext* context) const = 0; + + /** Returns the floor of this Numeric */ + virtual Numeric::Ptr floor(const DynamicContext* context) const = 0; + + /** Returns the ceiling of this Numeric */ + virtual Numeric::Ptr ceiling(const DynamicContext* context) const = 0; + + /** Rounds this Numeric */ + virtual Numeric::Ptr round(const DynamicContext* context) const = 0; + + /** Rounds this Numeric to the given precision, and rounds a half to even */ + virtual Numeric::Ptr roundHalfToEven(const Numeric::Ptr &precision, const DynamicContext* context) const = 0; + + /** Returns the Additive inverse of this Numeric */ + virtual Numeric::Ptr invert(const DynamicContext* context) const = 0; + + /* Is this xs:double not a number */ + virtual bool isNaN() const = 0; + + /* Is this xs:double infinite? */ + virtual bool isInfinite() const = 0; + + /** Does this Numeric have value 0? */ + virtual bool isZero() const = 0; + + /** Is this Numeric positive? */ + virtual bool isPositive() const = 0; + + /** Is this Numeric negative? */ + virtual bool isNegative() const = 0; + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; + + virtual const MAPM &asMAPM() const = 0; + + virtual State getState() const = 0; +}; + +#endif // _ATFLOATORDERIVED_HPP diff --git a/include/xqilla/items/ATGDayOrDerived.hpp b/include/xqilla/items/ATGDayOrDerived.hpp new file mode 100644 index 00000000..cb6730fe --- /dev/null +++ b/include/xqilla/items/ATGDayOrDerived.hpp @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATGDayOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATGDAYORDERIVED_HPP +#define _ATGDAYORDERIVED_HPP + +#include +#include +#include +#include + +class DynamicContext; + +class XQILLA_API ATGDayOrDerived : public DateOrTimeType +{ +public: + typedef RefCountPointer Ptr; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* returns true if the two objects are equal + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATGDayOrDerived::Ptr &other, const DynamicContext *context) const = 0; + + /** Returns true if a timezone is defined for this. False otherwise.*/ + virtual bool hasTimezone() const = 0; + + /** Sets the timezone to the given timezone.*/ + virtual ATGDayOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const = 0; + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; +}; + +#endif // _ATGDAYORDERIVED_HPP diff --git a/include/xqilla/items/ATGMonthDayOrDerived.hpp b/include/xqilla/items/ATGMonthDayOrDerived.hpp new file mode 100644 index 00000000..37a089d7 --- /dev/null +++ b/include/xqilla/items/ATGMonthDayOrDerived.hpp @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATGMonthDayOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATGMONTHDAYORDERIVED_HPP +#define _ATGMONTHDAYORDERIVED_HPP + +#include +#include +#include +#include + +class DynamicContext; + +class XQILLA_API ATGMonthDayOrDerived : public DateOrTimeType +{ +public: + typedef RefCountPointer Ptr; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* returns true if the two objects are equal + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATGMonthDayOrDerived::Ptr &other, const DynamicContext *context) const = 0; + + /** Returns true if a timezone is defined for this. False otherwise.*/ + virtual bool hasTimezone() const = 0; + + /** Sets the timezone to the given timezone.*/ + virtual ATGMonthDayOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const = 0; + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; +}; + +#endif // _ATGMONTHDAYORDERIVED_HPP diff --git a/include/xqilla/items/ATGMonthOrDerived.hpp b/include/xqilla/items/ATGMonthOrDerived.hpp new file mode 100644 index 00000000..495ba49d --- /dev/null +++ b/include/xqilla/items/ATGMonthOrDerived.hpp @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATGMonthOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATGMONTHORDERIVED_HPP +#define _ATGMONTHORDERIVED_HPP + +#include +#include +#include +#include + +class DynamicContext; + +class XQILLA_API ATGMonthOrDerived : public DateOrTimeType +{ +public: + typedef RefCountPointer Ptr; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* returns true if the two objects are equal + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATGMonthOrDerived::Ptr &other, const DynamicContext *context) const = 0; + + /** Returns true if a timezone is defined for this. False otherwise.*/ + virtual bool hasTimezone() const = 0; + + /** Sets the timezone to the given timezone.*/ + virtual ATGMonthOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const = 0; + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; +}; + +#endif // _ATGMONTHORDERIVED_HPP diff --git a/include/xqilla/items/ATGYearMonthOrDerived.hpp b/include/xqilla/items/ATGYearMonthOrDerived.hpp new file mode 100644 index 00000000..8904c3b5 --- /dev/null +++ b/include/xqilla/items/ATGYearMonthOrDerived.hpp @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATGYearMonthOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATGYEARMONTHORDERIVED_HPP +#define _ATGYEARMONTHORDERIVED_HPP + +#include +#include +#include +#include + +class DynamicContext; + +class XQILLA_API ATGYearMonthOrDerived : public DateOrTimeType +{ +public: + typedef RefCountPointer Ptr; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* returns true if the two objects are equal + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATGYearMonthOrDerived::Ptr &other, const DynamicContext *context) const = 0; + + /** Returns true if a timezone is defined for this. False otherwise.*/ + virtual bool hasTimezone() const = 0; + + /** Sets the timezone to the given timezone.*/ + virtual ATGYearMonthOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const = 0; + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; +}; + +#endif // _ATGYEARMONTHORDERIVED_HPP diff --git a/include/xqilla/items/ATGYearOrDerived.hpp b/include/xqilla/items/ATGYearOrDerived.hpp new file mode 100644 index 00000000..56b4249b --- /dev/null +++ b/include/xqilla/items/ATGYearOrDerived.hpp @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATGYearOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATGYEARORDERIVED_HPP +#define _ATGYEARORDERIVED_HPP + +#include +#include +#include +#include + +class DynamicContext; + +class XQILLA_API ATGYearOrDerived : public DateOrTimeType +{ +public: + typedef RefCountPointer Ptr; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* returns true if the two objects are equal + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATGYearOrDerived::Ptr &other, const DynamicContext *context) const = 0; + + /** Returns true if a timezone is defined for this. False otherwise.*/ + virtual bool hasTimezone() const = 0; + + /** Sets the timezone to the given timezone.*/ + virtual ATGYearOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const = 0; + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; +}; + +#endif // _ATGYEARORDERIVED_HPP diff --git a/include/xqilla/items/ATHexBinaryOrDerived.hpp b/include/xqilla/items/ATHexBinaryOrDerived.hpp new file mode 100644 index 00000000..bd7d26f8 --- /dev/null +++ b/include/xqilla/items/ATHexBinaryOrDerived.hpp @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATHexBinaryOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATHEXBINARYORDERIVED_HPP +#define _ATHEXBINARYORDERIVED_HPP + +#include +#include +#include + +class DynamicContext; + +class XQILLA_API ATHexBinaryOrDerived : public AnyAtomicType +{ +public: + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* returns true if the two objects' URI are equal (string comparison) + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATHexBinaryOrDerived::Ptr &other, const DynamicContext *context) const = 0; + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; +}; + +#endif // _ATHEXBINARYORDERIVED_HPP diff --git a/include/xqilla/items/ATNotationOrDerived.hpp b/include/xqilla/items/ATNotationOrDerived.hpp new file mode 100644 index 00000000..7398c7ec --- /dev/null +++ b/include/xqilla/items/ATNotationOrDerived.hpp @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATNotationOrDerived.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATNOTATIONORDERIVED_HPP +#define _ATNOTATIONORDERIVED_HPP + +#include +#include +#include + +class DynamicContext; + +class XQILLA_API ATNotationOrDerived : public AnyAtomicType +{ +public: + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* returns true if the two objects' URI are equal (string comparison) + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATNotationOrDerived::Ptr &other, const DynamicContext *context) const = 0; + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; +}; + +#endif // _ATNOTATIONORDERIVED_HPP diff --git a/include/xqilla/items/ATQNameConstructor.hpp b/include/xqilla/items/ATQNameConstructor.hpp new file mode 100644 index 00000000..9fee5bcb --- /dev/null +++ b/include/xqilla/items/ATQNameConstructor.hpp @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATQNameConstructor.hpp,v 1.10 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATQNAMECONSTUCTOR_HPP +#define _ATQNAMECONSTUCTOR_HPP + +#include +#include +#include + +class XQILLA_API ATQNameConstructor : public ItemConstructor { +public: + ATQNameConstructor(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* uri, + const XMLCh* prefix, + const XMLCh* localname); + virtual ~ATQNameConstructor() {} + + virtual const StaticType &getStaticType() const { return _sType; } + + virtual Item::Ptr createItem(const DynamicContext* context) const; + virtual std::string asString(const DynamicContext* context) const; + + virtual const XMLCh* getTypeURI() const { return _typeURI; } + virtual const XMLCh* getTypeName() const { return _typeName; } + +private: + const XMLCh *_typeURI; + const XMLCh *_typeName; + const XMLCh *_uri; + const XMLCh *_prefix; + const XMLCh *_localname; + StaticType _sType; +}; + +#endif diff --git a/include/xqilla/items/ATQNameOrDerived.hpp b/include/xqilla/items/ATQNameOrDerived.hpp new file mode 100644 index 00000000..dab317a9 --- /dev/null +++ b/include/xqilla/items/ATQNameOrDerived.hpp @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATQNameOrDerived.hpp,v 1.9 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATQNAMEORDERIVED_HPP +#define _ATQNAMEORDERIVED_HPP + +#include +#include +#include + +class DynamicContext; + +class XQILLA_API ATQNameOrDerived : public AnyAtomicType +{ +public: + typedef RefCountPointer Ptr; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the URI */ + virtual const XMLCh* getURI() const = 0; + + /* returns the prefix */ + virtual const XMLCh* getPrefix() const = 0; + + /* returns the name */ + virtual const XMLCh* getName() const = 0; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* returns true if the two objects' URI are equal (string comparison) + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATQNameOrDerived::Ptr &other, const DynamicContext *context) const = 0; + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; +}; + +#endif // _ATQNAMEORDERIVED_HPP diff --git a/include/xqilla/items/ATStringOrDerived.hpp b/include/xqilla/items/ATStringOrDerived.hpp new file mode 100644 index 00000000..dfa7fdad --- /dev/null +++ b/include/xqilla/items/ATStringOrDerived.hpp @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATStringOrDerived.hpp,v 1.7 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATSTRINGORDERIVED_HPP +#define _ATSTRINGORDERIVED_HPP + +#include +#include +#include +#include + +class Collation; +class Result; +class DynamicContext; + +class XQILLA_API ATStringOrDerived : public AnyAtomicType +{ +public: + typedef RefCountPointer Ptr; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* returns this string as a set of codepoints */ + virtual Result asCodepoints(const DynamicContext* context) const = 0; + + /* returns the length of this string */ + virtual unsigned int getLength() const = 0; + + /* returns the substring starting at startingLoc of given length */ + virtual ATStringOrDerived::Ptr substring(const Numeric::Ptr &startingLoc, const Numeric::Ptr &length, const DynamicContext* context) const = 0; + + /* returns the substring that occurs after the first occurence of pattern */ + virtual ATStringOrDerived::Ptr substringAfter(const ATStringOrDerived::Ptr &pattern, Collation* collation, const DynamicContext* context) const = 0; + + /* returns the substring that occurs before the first occurence of pattern */ + virtual ATStringOrDerived::Ptr substringBefore(const ATStringOrDerived::Ptr &pattern, Collation* collation, const DynamicContext* context) const = 0; + + /* returns true if the two objects' URI are equal (string comparison) + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0; + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; +}; + +#endif // _ATSTRINGORDERIVED_HPP diff --git a/include/xqilla/items/ATTimeOrDerived.hpp b/include/xqilla/items/ATTimeOrDerived.hpp new file mode 100644 index 00000000..9e335d7a --- /dev/null +++ b/include/xqilla/items/ATTimeOrDerived.hpp @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATTimeOrDerived.hpp,v 1.9 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATTIMEORDERIVED_HPP +#define _ATTIMEORDERIVED_HPP + +#include +#include + +#include +#include +#include +#include + +class XQILLA_API ATTimeOrDerived : public DateOrTimeType +{ +public: + typedef RefCountPointer Ptr; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the XMLCh* (lexical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* returns true if the two objects represent the same time, + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATTimeOrDerived::Ptr &other, const DynamicContext *context) const = 0; + + /** + * Returns an integer representing the hour component of this object + */ + virtual ATDecimalOrDerived::Ptr getHours(const DynamicContext *context) const = 0; + + /** + * Returns an integer representing the minute component of this object + */ + virtual ATDecimalOrDerived::Ptr getMinutes(const DynamicContext *context) const = 0; + + /** + * Returns an decimal representing the second component of this object + */ + virtual ATDecimalOrDerived::Ptr getSeconds(const DynamicContext *context) const = 0; + + /** + * Returns a timezone object representing the timezone component of this object + */ + virtual const Timezone::Ptr &getTimezone() const = 0; + + /** + * Returns true if the timezone is defined for this object, false otherwise. + */ + virtual bool hasTimezone() const = 0; + + /** + * Setter for timezone. Overrides the current timezone. (Not to be + * confused with addTimezone(). + */ + virtual ATTimeOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const = 0; + + /** + * Returns an ATTimeOrDerived with a timezone added to it + */ + virtual ATTimeOrDerived::Ptr addTimezone(const ATDurationOrDerived::Ptr &timezone, + const DynamicContext* context) const = 0; + + /** + * Returns a time with the given dayTimeDuration added to it + */ + virtual ATTimeOrDerived::Ptr addDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, + const DynamicContext* context) const = 0; + + /** + * Returns a time with the given dayTimeDuration subtracted from it + */ + virtual ATTimeOrDerived::Ptr subtractDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, + const DynamicContext* context) const = 0; + + /** + * Returns a dayTimeDuration corresponding to the difference between this + * and the given ATTimeOrDerived* + */ + virtual ATDurationOrDerived::Ptr subtractTime(const ATTimeOrDerived::Ptr &time, const DynamicContext* context) const = 0; + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; +}; + +#endif // _ATTIMEORDERIVED_HPP diff --git a/include/xqilla/items/ATUntypedAtomic.hpp b/include/xqilla/items/ATUntypedAtomic.hpp new file mode 100644 index 00000000..90563658 --- /dev/null +++ b/include/xqilla/items/ATUntypedAtomic.hpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATUntypedAtomic.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATUNTYPEDATOMIC_HPP +#define _ATUNTYPEDATOMIC_HPP + +#include +#include +#include + +class DynamicContext; + +class XQILLA_API ATUntypedAtomic : public AnyAtomicType +{ +public: + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* returns true if the two objects' URI are equal (string comparison) + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0; + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; + + static const XMLCh fgDT_UNTYPEDATOMIC[]; +}; + +#endif // _ATUNTYPEDATOMIC_HPP diff --git a/include/xqilla/items/AnyAtomicType.hpp b/include/xqilla/items/AnyAtomicType.hpp new file mode 100644 index 00000000..7aaf40c1 --- /dev/null +++ b/include/xqilla/items/AnyAtomicType.hpp @@ -0,0 +1,173 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: AnyAtomicType.hpp,v 1.7 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ANYATOMICTYPE_HPP +#define _ANYATOMICTYPE_HPP + +#include +#include +#include + +class DynamicContext; +class StaticContext; + +class XQILLA_API AnyAtomicType: public Item +{ + +public: + typedef RefCountPointer Ptr; + + /* isAtomicValue from Item */ + virtual bool isAtomicValue() const; + + /* isNode from Item */ + virtual bool isNode() const; + + /* is this type numeric? Return false by default */ + virtual bool isNumericValue() const; + + /* is this type date or time based? Return false by default */ + virtual bool isDateOrTimeTypeValue() const; + + /* Get the namespace uri of the primitive type (basic type) of this type */ + virtual const XMLCh* getPrimitiveTypeURI() const; + + /* Get the name of the primitive type (basic type) of this type (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* If possible, cast this type to the target type -- not virtual, this is the single entry point for casting */ + AnyAtomicType::Ptr castAs(const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const; + + /* Test if this type can be cast to the target type */ + virtual bool castable(const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* returns true if the two objects are equal (whatever that means + * in the context of the datatype), false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const = 0; + + /* Returns true if this typeName and uri match the given typeName and uri */ + virtual bool isOfType(const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const; + + /* Returns true if this typeName and uri match the given typeName and uri, + * or if any of this type's parents match the given typeName and uri */ + virtual bool isInstanceOfType(const XMLCh* targetURI, const XMLCh* targetType, const StaticContext* context) const; + + enum AtomicObjectType { + ANY_SIMPLE_TYPE = 0, + ANY_URI = 1, + BASE_64_BINARY = 2, + BOOLEAN = 3, + DATE = 4, + DATE_TIME = 5, + DAY_TIME_DURATION = 6, + DECIMAL = 7, + DOUBLE = 8, + DURATION = 9, + FLOAT = 10, + G_DAY = 11, + G_MONTH = 12, + G_MONTH_DAY = 13, + G_YEAR = 14, + G_YEAR_MONTH = 15, + HEX_BINARY = 16, + NOTATION = 17, + QNAME = 18, + STRING = 19, + TIME = 20, + UNTYPED_ATOMIC = 21, + YEAR_MONTH_DURATION= 22, + NumAtomicObjectTypes= 23 + }; + + /* same ordering as in cast table in F&O, for debug + * enum AtomicObjectType { + UNTYPED_ATOMIC = 0, + ANY_SIMPLE_TYPE = 1, + STRING = 2, + FLOAT = 3, + DOUBLE = 4, + DECIMAL = 5, + DURATION = 6, + YEAR_MONTH_DURATION= 7, + DAY_TIME_DURATION = 8, + DATE_TIME = 9, + TIME = 10, + DATE = 11, + G_YEAR_MONTH = 12, + G_YEAR = 13, + G_MONTH_DAY = 14, + G_DAY = 15, + G_MONTH = 16, + BOOLEAN = 17, + BASE_64_BINARY = 18, + HEX_BINARY = 19, + ANY_URI = 20, + QNAME = 21, + NOTATION = 22, + NumAtomicObjectTypes= 23 + };*/ + + /** + * Returns true if + * (a) both the input type and the target type are built-in schema types and + * cast is supported for the combination. + * (b) the input type is a derived atomic type and the + * target type is a supertype of the input type + * (c) the target type is a derived atomic type and the + * input type is xs:string, xs:anySimpleType, or a supertype of the + * target type. + * (d) If a primitive type P1 can be cast into a primitive type P2, then any + * subtype of P1 can be cast into any subtype of P2 + **/ + bool castIsSupported(AtomicObjectType targetIndex, const DynamicContext* context) const; + + virtual AtomicObjectType getPrimitiveTypeIndex() const = 0; + + static const XMLCh fgDT_ANYATOMICTYPE[]; + static const XMLCh fgDT_ANYATOMICTYPE_XERCESHASH[]; + +protected: + /* internal castAs method. This one is virtual and does the real work */ + virtual AnyAtomicType::Ptr castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, + const XMLCh* targetType, const DynamicContext* context) const; + +private: + + //friend class CastTable; + //template friend class DatatypeFactoryTemplate; + + // class that implements the Casting Table + class CastTable { + public: + CastTable(); + bool getCell(AtomicObjectType source, + AtomicObjectType target) const; + private: + bool staticCastTable[NumAtomicObjectTypes][NumAtomicObjectTypes]; + }; + + + // reproduction of the XPath2 casting table: http://www.w3.org/TR/xquery-operators/#casting + static const CastTable staticCastTable; +}; + +#endif // _ANYATOMICTYPE_HPP diff --git a/include/xqilla/items/AnyAtomicTypeConstructor.hpp b/include/xqilla/items/AnyAtomicTypeConstructor.hpp new file mode 100644 index 00000000..65de5355 --- /dev/null +++ b/include/xqilla/items/AnyAtomicTypeConstructor.hpp @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: AnyAtomicTypeConstructor.hpp,v 1.10 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ANYATOMICTYPECONSTUCTOR_HPP +#define _ANYATOMICTYPECONSTUCTOR_HPP + +#include +#include +#include + +class XQILLA_API AnyAtomicTypeConstructor : public ItemConstructor { +public: + AnyAtomicTypeConstructor(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + AnyAtomicType::AtomicObjectType primitiveType); + virtual ~AnyAtomicTypeConstructor() {} + + virtual const StaticType &getStaticType() const { return _sType; } + + virtual Item::Ptr createItem(const DynamicContext* context) const; + virtual std::string asString(const DynamicContext* context) const; + + virtual const XMLCh* getTypeURI() const { return _typeURI; } + virtual const XMLCh* getTypeName() const { return _typeName; } + +private: + const XMLCh *_typeURI; + const XMLCh *_typeName; + const XMLCh *_value; + AnyAtomicType::AtomicObjectType _primitiveType; + StaticType _sType; +}; + +#endif + diff --git a/include/xqilla/items/DatatypeFactory.hpp b/include/xqilla/items/DatatypeFactory.hpp new file mode 100644 index 00000000..fc2ef9e4 --- /dev/null +++ b/include/xqilla/items/DatatypeFactory.hpp @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DatatypeFactory.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $ + */ + +/* + Factory base class +*/ + +#ifndef _DATATYPEFACTORY_HPP +#define _DATATYPEFACTORY_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 + +class StaticContext; +class XPath2MemoryManager; +class DocumentCache; + +class XQILLA_API DatatypeFactory +{ +public: + DatatypeFactory(const DocumentCache* dc, XERCES_CPP_NAMESPACE_QUALIFIER DatatypeValidator *baseValidator); + virtual ~DatatypeFactory(); + + ///Create instance of the base datatype + virtual AnyAtomicType::Ptr createInstance(const XMLCh* value, + const DynamicContext* context) const; + + ///Create instance of a datatype, using DatatypeFactoryTemplate to determine type + virtual AnyAtomicType::Ptr createInstance(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + const DynamicContext* context) const; + + virtual bool checkInstance(const XMLCh* value, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mm) const; + + virtual bool checkInstance(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mm) const; + + ///Create instance of a datatype, using DatatypeFactoryTemplate to determine type + virtual AnyAtomicType::Ptr createInstanceNoCheck(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + const DynamicContext* context) const = 0; + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; + + virtual const XMLCh* getPrimitiveTypeURI() const = 0; + virtual const XMLCh* getPrimitiveTypeName() const = 0; + +protected: + XERCES_CPP_NAMESPACE_QUALIFIER DatatypeValidator *fBaseValidator; + const DocumentCache *fDocumentCache; +}; + +#endif // DATATYPEFACTORY + diff --git a/include/xqilla/items/DatatypeLookup.hpp b/include/xqilla/items/DatatypeLookup.hpp new file mode 100644 index 00000000..93c0a8d7 --- /dev/null +++ b/include/xqilla/items/DatatypeLookup.hpp @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DatatypeLookup.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _DATATYPELOOKUP_HPP +#define _DATATYPELOOKUP_HPP + +#include +#include +#include +#include + +class DatatypeFactory; +class DocumentCache; + +class XQILLA_API DatatypeLookup +{ +public: + DatatypeLookup(const DocumentCache* dc, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr); + virtual ~DatatypeLookup(); + + ///returns the appropriate Datatype object + const DatatypeFactory* lookupDatatype(AnyAtomicType::AtomicObjectType typeIndex) const; + + ///returns the appropriate Datatype object + const DatatypeFactory* lookupDatatype(const XMLCh* typeURI, const XMLCh* typeName, bool &isPrimitive) const; + + DatatypeFactory *getAnySimpleTypeFactory() const; + DatatypeFactory *getAnyURIFactory() const; + DatatypeFactory *getBase64BinaryFactory() const; + DatatypeFactory *getBooleanFactory() const; + DatatypeFactory *getDateFactory() const; + DatatypeFactory *getDateTimeFactory() const; + DatatypeFactory *getDayTimeDurationFactory() const; + DatatypeFactory *getDecimalFactory() const; + DatatypeFactory *getDoubleFactory() const; + DatatypeFactory *getDurationFactory() const; + DatatypeFactory *getFloatFactory() const; + DatatypeFactory *getGDayFactory() const; + DatatypeFactory *getGMonthFactory() const; + DatatypeFactory *getGMonthDayFactory() const; + DatatypeFactory *getGYearFactory() const; + DatatypeFactory *getGYearMonthFactory() const; + DatatypeFactory *getHexBinaryFactory() const; + DatatypeFactory *getNotationFactory() const; + DatatypeFactory *getQNameFactory() const; + DatatypeFactory *getStringFactory() const; + DatatypeFactory *getTimeFactory() const; + DatatypeFactory *getYearMonthDurationFactory() const; + DatatypeFactory *getUntypedAtomicFactory() const; + +private: + DatatypeLookup & operator= (const DatatypeLookup& r); + DatatypeLookup(const DatatypeLookup &other); + + // add a primitive datatype to the table + void insertDatatype(DatatypeFactory *datatype); + +private: + DatatypeFactory *anySimpleType_; + DatatypeFactory *anyURI_; + DatatypeFactory *base64Binary_; + DatatypeFactory *boolean_; + DatatypeFactory *date_; + DatatypeFactory *dateTime_; + DatatypeFactory *dayTimeDuration_; + DatatypeFactory *decimal_; + DatatypeFactory *double_; + DatatypeFactory *duration_; + DatatypeFactory *float_; + DatatypeFactory *gDay_; + DatatypeFactory *gMonth_; + DatatypeFactory *gMonthDay_; + DatatypeFactory *gYear_; + DatatypeFactory *gYearMonth_; + DatatypeFactory *hexBinary_; + DatatypeFactory *notation_; + DatatypeFactory *qname_; + DatatypeFactory *string_; + DatatypeFactory *time_; + DatatypeFactory *yearMonthDuration_; + DatatypeFactory *untypedAtomic_; + + XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf< DatatypeFactory > fDatatypeTable; + + const DocumentCache *fDocumentCache; + + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* fMemMgr; +}; + +#endif diff --git a/include/xqilla/items/DateOrTimeType.hpp b/include/xqilla/items/DateOrTimeType.hpp new file mode 100644 index 00000000..374344dd --- /dev/null +++ b/include/xqilla/items/DateOrTimeType.hpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DateOrTimeType.hpp,v 1.7 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _DATEORTIMETYPE_HPP +#define _DATEORTIMETYPE_HPP + +#include +#include + +#include + +class ATDecimalOrDerived; +class ATDurationOrDerived; + +class XQILLA_API DateOrTimeType : public AnyAtomicType +{ +public: + typedef RefCountPointer Ptr; + + /* is this type date or time based? Return true by default */ + virtual bool isDateOrTimeTypeValue() const; + + /** + * Returns true if the timezone is defined for this object, false otherwise. + */ + virtual bool hasTimezone() const = 0; + +}; + +#endif // _ATDATETIMEORDERIVED_HPP diff --git a/include/xqilla/items/Item.hpp b/include/xqilla/items/Item.hpp new file mode 100644 index 00000000..d1c50fba --- /dev/null +++ b/include/xqilla/items/Item.hpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Item.hpp,v 1.7 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ITEM_HPP +#define _ITEM_HPP + +#include +#include +#include + +// forward declare when we can +class XPath2MemoryManager; +class DynamicContext; + +class XQILLA_API Item : public ReferenceCounted +{ +public: + typedef RefCountPointer Ptr; + + /** The "XQilla" item interface */ + static const XMLCh gXQilla[]; + + virtual bool isNode() const = 0; + + virtual bool isAtomicValue() const = 0; + + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + virtual const XMLCh* getTypeURI() const = 0; + + virtual const XMLCh* getTypeName() const = 0; + + /** Method for returning arbitrary interfaces from the implementations */ + virtual void *getInterface(const XMLCh *name) const = 0; + +protected: + Item() {} + +private: + // copy constructor + Item (const Item & other); + // assignment operation + Item & operator=(const Item & item) ; +}; + +#endif // _ITEM_HPP + diff --git a/include/xqilla/items/ItemConstructor.hpp b/include/xqilla/items/ItemConstructor.hpp new file mode 100644 index 00000000..f1062ff3 --- /dev/null +++ b/include/xqilla/items/ItemConstructor.hpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ItemConstructor.hpp,v 1.10 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ITEMCONSTUCTOR_HPP +#define _ITEMCONSTUCTOR_HPP + +#include +#include + +#include +#include +#include + +class DynamicContext; +class StaticType; + +class XQILLA_API ItemConstructor { +public: + typedef std::vector > Vector; + + virtual ~ItemConstructor() {} + + virtual const StaticType &getStaticType() const = 0; + + virtual Item::Ptr createItem(const DynamicContext* context) const = 0; + virtual std::string asString(const DynamicContext* context) const = 0; + + virtual const XMLCh* getTypeURI() const = 0; + virtual const XMLCh* getTypeName() const = 0; +}; + +#endif + diff --git a/include/xqilla/items/Node.hpp b/include/xqilla/items/Node.hpp new file mode 100644 index 00000000..23c8aa7f --- /dev/null +++ b/include/xqilla/items/Node.hpp @@ -0,0 +1,137 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Node.hpp,v 1.12 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _XQILLANODE_HPP +#define _XQILLANODE_HPP + +#include +#include +#include + +class DynamicContext; +class XPath2MemoryManager; +class Sequence; +class Result; +class NodeTest; + +XERCES_CPP_NAMESPACE_BEGIN +class DOMNode; +XERCES_CPP_NAMESPACE_END + + +class XQILLA_API Node : public Item +{ +public: + typedef RefCountPointer Ptr; + + /** + * The "Xerces" DOMNode node interface. + * Use this as the parameter when you call Item::getInterface() + * to have a xerces DOMNode returned, if the Node is of the + * correct type. If it is not of the correct type, the method + * will return 0. + */ + static const XMLCh gXerces[]; + + /** Returns true, since this Item is a Node */ + virtual bool isNode() const = 0; + + /** Returns false, since this Item is a Node */ + virtual bool isAtomicValue() const = 0; + + /** Serialize this node */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /** check if the underlying type of this node is instance of a certain type */ + virtual bool hasInstanceOfType(const XMLCh* typeURI, const XMLCh* typeName, const DynamicContext* context) const = 0; + + /** Accessor: returns the base-uri of this node as a + * xs:anyURI, if one exists */ + virtual Sequence dmBaseURI(const DynamicContext* context) const = 0; + + /** Accessor: returns the kind of node as a string */ + virtual const XMLCh* dmNodeKind() const = 0; + + /** Accessor: returns the name of this node */ + virtual ATQNameOrDerived::Ptr dmNodeName(const DynamicContext* context) const = 0; + + /** Accessor: returns the string value of this node */ + virtual const XMLCh* dmStringValue(const DynamicContext* context) const = 0; + + /** Accessor: returns the typed value of this node, which is a sequence of zero or + * more atomic values derived from the string-value of the node and its type in such + * a way as to be consistent with validation */ + virtual Sequence dmTypedValue(DynamicContext* context) const = 0; + + /** Accessor: returns the absolute URI of the resource from which the document node + * was constructed, if the absolute URI is available*/ + virtual Sequence dmDocumentURI(const DynamicContext* context) const = 0; + + /** Accessor: returns the name of the type of a node */ + virtual ATQNameOrDerived::Ptr dmTypeName(const DynamicContext* context) const = 0; + + /** Accessor: returns the setting of the nilled property of an element node */ + virtual ATBooleanOrDerived::Ptr dmNilled(const DynamicContext* context) const = 0; + + /** Returns true if 'this' is before 'other' in document order, + * false otherwise */ + virtual bool lessThan(const Node::Ptr &other, const DynamicContext *context) const = 0; + + /** Returns true if 'other' is equal (identity equal) to 'this'*/ + virtual bool equals(const Node::Ptr &other) const = 0; + + /** Specifies a sorting order for uniqueness removal. This may or may not + return the same as lessThan. */ + virtual bool uniqueLessThan(const Node::Ptr &other, const DynamicContext *context) const = 0; + + /** Returns the parent of this node */ + virtual Node::Ptr dmParent(const DynamicContext* context) const = 0; + + /** Returns the attributes of this node */ + virtual Result dmAttributes(const DynamicContext* context, const LocationInfo *info) const = 0; + + /** Returns the namespace nodes of this node */ + virtual Result dmNamespaceNodes(const DynamicContext* context, const LocationInfo *info) const = 0; + + /** Returns the children of this node */ + virtual Result dmChildren(const DynamicContext *context, const LocationInfo *info) const = 0; + + /** + * Returns a Result containing the nodes in the axis given, relative to this node. + * Forward axis results should be in document order. + * Reverse axis results should be in reverse document order. + */ + virtual Result getAxisResult(XQStep::Axis axis, const NodeTest *nodeTest, const DynamicContext *context, const LocationInfo *info) const = 0; + + /** Returns if the node is an id node or not */ + virtual ATBooleanOrDerived::Ptr dmIsId(const DynamicContext* context) const = 0; + + /** Returns if the node is an idref node or not */ + virtual ATBooleanOrDerived::Ptr dmIsIdRefs(const DynamicContext* context) const = 0; + + /* Get the namespace URI for the DOM type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of the DOM type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + static const XMLCh document_string[]; + static const XMLCh element_string[]; + static const XMLCh attribute_string[]; + static const XMLCh text_string[]; + static const XMLCh processing_instruction_string[]; + static const XMLCh comment_string[]; + static const XMLCh namespace_string[]; + static const XMLCh cdata_string[]; +}; +#endif diff --git a/include/xqilla/items/Numeric.hpp b/include/xqilla/items/Numeric.hpp new file mode 100644 index 00000000..d24f26f3 --- /dev/null +++ b/include/xqilla/items/Numeric.hpp @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Numeric.hpp,v 1.12 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef __NUMERIC_HPP +#define __NUMERIC_HPP + +#include +#include +#include + +class DynamicContext; +class StaticContext; +class MAPM; + +class XQILLA_API Numeric : public AnyAtomicType +{ +public: + typedef RefCountPointer Ptr; + + /* is this type numeric? Return true */ + virtual bool isNumericValue() const { return true; }; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const = 0; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const = 0; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const = 0; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const = 0; + + /* Promote this to the given type, if possible */ + virtual Numeric::Ptr promoteTypeIfApplicable(const XMLCh* typeURI, const XMLCh* typeName, const DynamicContext* context) const = 0; + + /* returns true if the two Numeric values are equal + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const; + + /** Returns true if this is less than other, false otherwise */ + virtual bool lessThan(const Numeric::Ptr &other, const DynamicContext* context) const; + + /** Returns true if this is greater than other, false otherwise */ + virtual bool greaterThan(const Numeric::Ptr &other, const DynamicContext* context) const; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const Numeric::Ptr &other, const DynamicContext *context) const; + + /** Returns a Numeric object which is the sum of this and other */ + virtual Numeric::Ptr add(const Numeric::Ptr &other, const DynamicContext* context) const = 0; + + /** Returns a Numeric object which is the difference of this and + * other */ + virtual Numeric::Ptr subtract(const Numeric::Ptr &other, const DynamicContext* context) const = 0; + + /** Returns a Numeric object which is the product of this and other */ + virtual Numeric::Ptr multiply(const Numeric::Ptr &other, const DynamicContext* context) const = 0; + + /** Returns a Numeric object which is the quotient of this and other */ + virtual Numeric::Ptr divide(const Numeric::Ptr &other, const DynamicContext* context) const = 0; + + /** Returns the arithmetic product of its operands as a Numeric */ + virtual Numeric::Ptr mod(const Numeric::Ptr &other, const DynamicContext* context) const = 0; + + /** Returns the floor of this Numeric */ + virtual Numeric::Ptr floor(const DynamicContext* context) const = 0; + + /** Returns the ceiling of this Numeric */ + virtual Numeric::Ptr ceiling(const DynamicContext* context) const = 0; + + /** Rounds this Numeric */ + virtual Numeric::Ptr round(const DynamicContext* context) const = 0; + + /** Rounds this Numeric to the given precision, and rounds a half to even */ + virtual Numeric::Ptr roundHalfToEven(const Numeric::Ptr &precision, const DynamicContext* context) const = 0; + + /** Returns the Additive inverse of this Numeric */ + virtual Numeric::Ptr invert(const DynamicContext* context) const = 0; + + /** Does this Numeric have value 0? */ + virtual bool isZero() const = 0; + + /** Is this Numeric positive? */ + virtual bool isPositive() const = 0; + + /** Is this Numeric negative? */ + virtual bool isNegative() const = 0; + + /* Is this floating point value not a number? */ + virtual bool isNaN() const = 0; + + /* Is this floating point value infinite? */ + virtual bool isInfinite() const = 0; + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const = 0; + + virtual const MAPM &asMAPM() const = 0; + + enum State { + NEG_INF = 0, + NEG_NUM = 1, + NUM = 2, + INF = 3, + NaN = 4 + }; + + virtual State getState() const = 0; + + static const XMLCh NaN_string[]; + static const XMLCh NAN_string[]; + static const XMLCh INF_string[]; + static const XMLCh NegINF_string[]; + static const XMLCh NegZero_string[]; + static const XMLCh PosZero_string[]; + + static void checkFloatLimits(Numeric::State &state, MAPM &value); + static void checkDoubleLimits(Numeric::State &state, MAPM &value); + + static const XMLCh *asDecimalString(const MAPM &value, int significantDigits, const StaticContext* context); + static const XMLCh *asDoubleString(State state, const MAPM &value, int significantDigits, const StaticContext* context); + +protected: + virtual AnyAtomicType::Ptr castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, + const XMLCh* targetType, const DynamicContext* context) const; + + const XMLCh *asDecimalString(int significantDigits, const StaticContext* context) const; + const XMLCh *asDoubleString(int significantDigits, const StaticContext* context) const; + +}; + +#endif // __NUMERIC_HPP diff --git a/include/xqilla/items/NumericTypeConstructor.hpp b/include/xqilla/items/NumericTypeConstructor.hpp new file mode 100644 index 00000000..b2ebd0b0 --- /dev/null +++ b/include/xqilla/items/NumericTypeConstructor.hpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: NumericTypeConstructor.hpp,v 1.3 2006/11/17 18:08:07 jpcs Exp $ + */ + +#ifndef _NUMERICTYPECONSTUCTOR_HPP +#define _NUMERICTYPECONSTUCTOR_HPP + +#include +#include +#include +#include + +class XQILLA_API NumericTypeConstructor : public ItemConstructor { +public: + NumericTypeConstructor(const XMLCh* typeURI, + const XMLCh* typeName, + const MAPM& value, + AnyAtomicType::AtomicObjectType primitiveType, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mm); + virtual ~NumericTypeConstructor() {} + + virtual const StaticType &getStaticType() const { return _sType; } + + virtual Item::Ptr createItem(const DynamicContext* context) const; + virtual std::string asString(const DynamicContext* context) const; + + virtual const XMLCh* getTypeURI() const { return _typeURI; } + virtual const XMLCh* getTypeName() const { return _typeName; } + +private: + const XMLCh *_typeURI; + const XMLCh *_typeName; + M_APM_struct _value; + AnyAtomicType::AtomicObjectType _primitiveType; + StaticType _sType; +}; + +#endif + diff --git a/include/xqilla/items/Timezone.hpp b/include/xqilla/items/Timezone.hpp new file mode 100644 index 00000000..7af77cdf --- /dev/null +++ b/include/xqilla/items/Timezone.hpp @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Timezone.hpp,v 1.12 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _TZONE_HPP +#define _TZONE_HPP + +#include +#include +#include +#include + +#include + +class DynamicContext; + +class XQILLA_API Timezone : public ReferenceCounted +{ +public : + typedef RefCountPointer Ptr; + + /** + * Constructor. Creates a Timezone representing the given number of seconds. + */ + Timezone(const MAPM &seconds); + + /** + * Constructor. Creates a Timezone representing the given duration. + */ + Timezone(const ATDurationOrDerived::Ptr &duration, const DynamicContext* context); + + /** Returns true if other is equal to this, + * false otherwise + */ + bool equals(const Timezone::Ptr &other) const; + + ATDurationOrDerived::Ptr asDayTimeDuration(const DynamicContext* context) const; + + /** + * Returns a string representation of this Timezone. If positive, does + * print leading '+' sign, and if UTC returns "Z". + */ + const XMLCh* asString(const DynamicContext* context) const; + + /** + * Returns the whole timezone expressed in seconds + */ + const MAPM &asSeconds() const { return seconds_; } + + static MAPM convert(bool positive, int hour, int minute); + + static void validate(const MAPM &tz); + +private: + MAPM seconds_; +}; + +#endif // _TZONE_HPP + + diff --git a/include/xqilla/items/impl/ATBooleanOrDerivedImpl.hpp b/include/xqilla/items/impl/ATBooleanOrDerivedImpl.hpp new file mode 100644 index 00000000..fa647541 --- /dev/null +++ b/include/xqilla/items/impl/ATBooleanOrDerivedImpl.hpp @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATBooleanOrDerivedImpl.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATBOOLEANORDERIVEDIMPL_HPP +#define _ATBOOLEANORDERIVEDIMPL_HPP + +#include +#include + +#include + +class DynamicContext; +class StaticContext; + +class XQILLA_API ATBooleanOrDerivedImpl : public ATBooleanOrDerived +{ + +public: + + /* constructor */ + ATBooleanOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const StaticContext* context); + + /* constructor */ + ATBooleanOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, bool value, const StaticContext* context); + + virtual void *getInterface(const XMLCh *name) const; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const; + virtual const XMLCh* asString() const; + + /* returns true if the two objects have the same boolean value + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATBooleanOrDerived::Ptr &other, const DynamicContext *context) const; + + + /* returns true if boolean value evaluates to true + * false otherwise */ + virtual bool isTrue() const; + + /* returns false if boolean value evaluates to true + * true otherwise */ + virtual bool isFalse() const; + + /* Get the primitive index associated with this type */ + static AnyAtomicType::AtomicObjectType getTypeIndex(); + + /* Get the primitive type name */ + static const XMLCh* getPrimitiveName(); + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const; + +protected: + + /* If possible, cast this type to the target type */ + virtual AnyAtomicType::Ptr castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const; + +private: + + /*The value of this boolean */ + bool _value; + + /* the name of this type */ + const XMLCh* _typeName; + + /* the uri of this type */ + const XMLCh* _typeURI; + +}; + +#endif // _ATBOOLEANORDERIVEDIMPL_HPP diff --git a/include/xqilla/items/impl/ATDateOrDerivedImpl.hpp b/include/xqilla/items/impl/ATDateOrDerivedImpl.hpp new file mode 100644 index 00000000..d98ccd9f --- /dev/null +++ b/include/xqilla/items/impl/ATDateOrDerivedImpl.hpp @@ -0,0 +1,168 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATDateOrDerivedImpl.hpp,v 1.2 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATDATEORDERIVEDIMPL_HPP +#define _ATDATEORDERIVEDIMPL_HPP + +#include +#include +#include + +#include + +class Timezone; +class ATDecimalOrDerived; +class ATDurationOrDerived; +class XPath2MemoryManager; +class DynamicContext; +class StaticContext; + +class XQILLA_API ATDateOrDerivedImpl : public ATDateOrDerived +{ + +public: + /* constructor */ + ATDateOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context = 0); + + virtual void *getInterface(const XMLCh *name) const; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const; + + /* returns true if the two objects represent the same date, + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATDateOrDerived::Ptr &other, const DynamicContext *context) const; + + /** + * Returns an integer representing the year component of this object + */ + virtual ATDecimalOrDerived::Ptr getYears(const DynamicContext *context) const; + + /** + * Returns an integer representing the month component of this object + */ + virtual ATDecimalOrDerived::Ptr getMonths(const DynamicContext *context) const; + + /** + * Returns an integer representing the day component of this object + */ + virtual ATDecimalOrDerived::Ptr getDays(const DynamicContext *context) const; + + /** + * Returns the timezone associated with this object, or + * null, if the timezone is not set + */ + virtual const Timezone::Ptr &getTimezone() const; + + /** + * Returns true if the timezone is defined for this object, false otherwise. + */ + virtual bool hasTimezone() const; + + /** + * Setter for timezone. Overrides the current timezone. (Not to be + * confused with addTimezone(). + */ + virtual ATDateOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const; + + /** + * Returns an ATDateOrDerived with a timezone added to it + */ + virtual ATDateOrDerived::Ptr addTimezone(const ATDurationOrDerived::Ptr &timezone, const DynamicContext* context) const; + + /** + * Returns a date with the given yearMonthDuration added to it + */ + virtual ATDateOrDerived::Ptr addYearMonthDuration(const ATDurationOrDerived::Ptr &yearMonth, + const DynamicContext* context) const; + + /** + * Returns a date with the given dayTimeDuration added to it + */ + virtual ATDateOrDerived::Ptr addDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, + const DynamicContext* context) const; + + /** + * Returns a date with the given yearMonthDuration subtracted from it + */ + virtual ATDateOrDerived::Ptr subtractYearMonthDuration(const ATDurationOrDerived::Ptr &yearMonth, + const DynamicContext* context) const; + + /** + * Returns a date with the given dayTimeDuration subtracted from it + */ + virtual ATDateOrDerived::Ptr subtractDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, + const DynamicContext* context) const; + + /** + * Returns a dayTimeDuration corresponding to the difference between this + * and the given ATDateOrDerived* + */ + virtual ATDurationOrDerived::Ptr subtractDate(const ATDateOrDerived::Ptr &date, const DynamicContext* context) const; + + /* Get the primitive index associated with this type */ + static AnyAtomicType::AtomicObjectType getTypeIndex(); + + /* Get the primitive type name */ + static const XMLCh* getPrimitiveName(); + + /* Get the primitive index associated with this type */ + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const; + + static MAPM parseDate(const XMLCh* const date, const MAPM &implicitTimezone); + +protected: + + /* If possible, cast this type to the target type */ + virtual AnyAtomicType::Ptr castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const; + +private: + // private constructor for use with clone() + ATDateOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const MAPM &seconds, + const Timezone::Ptr &timezone, bool hasTimezone); + + void setDate(const XMLCh* const date); + + /*The value of this date, in seconds since 0001-01-01T00:00:00, + always normalized if a timezone is present*/ + MAPM seconds_; + + /* the timezone associated with this ATDateOrDerived */ + Timezone::Ptr timezone_; + + /* true if the timezone is defined */ + bool _hasTimezone; + + /* the name of this type */ + const XMLCh* _typeName; + + /* the uri of this type */ + const XMLCh* _typeURI; + +}; + +#endif // _ATDATEORDERIVEDIMPL_HPP diff --git a/include/xqilla/items/impl/ATDateTimeOrDerivedImpl.hpp b/include/xqilla/items/impl/ATDateTimeOrDerivedImpl.hpp new file mode 100644 index 00000000..e0077f8d --- /dev/null +++ b/include/xqilla/items/impl/ATDateTimeOrDerivedImpl.hpp @@ -0,0 +1,192 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATDateTimeOrDerivedImpl.hpp,v 1.2 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATDATETIMEORDERIVEDIMPL_HPP +#define _ATDATETIMEORDERIVEDIMPL_HPP + +#include +#include +#include + +#include + +class Timezone; +class ATDecimalOrDerived; +class ATDurationOrDerived; +class XPath2MemoryManager; +class DynamicContext; +class StaticContext; + +class XQILLA_API ATDateTimeOrDerivedImpl : public ATDateTimeOrDerived +{ + +public: + + /* constructor */ + ATDateTimeOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context = 0); + + virtual void *getInterface(const XMLCh *name) const; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const; + + /* returns true if the two objects represent the same date, + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATDateTimeOrDerived::Ptr &other, const DynamicContext *context) const; + + /** + * Returns an integer representing the year component of this object + */ + virtual ATDecimalOrDerived::Ptr getYears(const DynamicContext *context) const; + + /** + * Returns an integer representing the month component of this object + */ + virtual ATDecimalOrDerived::Ptr getMonths(const DynamicContext *context) const; + + /** + * Returns an integer representing the day component of this object + */ + virtual ATDecimalOrDerived::Ptr getDays(const DynamicContext *context) const; + + /** + * Returns an integer representing the hour component of this object + */ + virtual ATDecimalOrDerived::Ptr getHours(const DynamicContext *context) const; + + /** + * Returns an integer representing the minute component of this object + */ + virtual ATDecimalOrDerived::Ptr getMinutes(const DynamicContext *context) const; + + /** + * Returns an decimal representing the second component of this object + */ + virtual ATDecimalOrDerived::Ptr getSeconds(const DynamicContext *context) const; + + /** + * Returns the timezone associated with this object, or + * null, if the timezone is not set + */ + virtual const Timezone::Ptr &getTimezone() const; + + /** + * Returns true if the timezone is defined for this object, false otherwise. + */ + virtual bool hasTimezone() const; + + /** + * Setter for timezone. Overrides the current timezone. (Not to be + * confused with addTimezone(). + */ + virtual ATDateTimeOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const; + + /** + * Returns an ATDateTimeOrDerived with a timezone added to it + */ + virtual ATDateTimeOrDerived::Ptr addTimezone(const ATDurationOrDerived::Ptr &timezone, const DynamicContext* context) const; + + /** + * Returns a date with the given yearMonthDuration added to it + */ + virtual ATDateTimeOrDerived::Ptr addYearMonthDuration(const ATDurationOrDerived::Ptr &yearMonth, const DynamicContext* context) const; + + /** + * Returns a date with the given dayTimeDuration added to it + */ + virtual ATDateTimeOrDerived::Ptr addDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, const DynamicContext* context) const; + + /** + * Returns a date with the given yearMonthDuration subtracted from it + */ + virtual ATDateTimeOrDerived::Ptr subtractYearMonthDuration(const ATDurationOrDerived::Ptr &yearMonth, const DynamicContext* context) const; + + /** + * Returns a date with the given dayTimeDuration subtracted from it + */ + virtual ATDateTimeOrDerived::Ptr subtractDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, const DynamicContext* context) const; + + /** + * Returns a dayTimeDuration corresponding to the difference between this + * and the given ATDateTimeOrDerived* + */ + virtual ATDurationOrDerived::Ptr subtractDateTimeAsDayTimeDuration(const ATDateTimeOrDerived::Ptr &date, const DynamicContext* context) const; + + /** + * Returns a dayTimeDuration corresponding to the difference between this + * and the given ATDateTimeOrDerived* + */ + virtual ATDurationOrDerived::Ptr subtractDateTimeAsYearMonthDuration(const ATDateTimeOrDerived::Ptr &date, const DynamicContext* context) const; + + /* Get the primitive index associated with this type */ + static AnyAtomicType::AtomicObjectType getTypeIndex(); + + /* Get the primitive type name */ + static const XMLCh* getPrimitiveName(); + + /* Get the primitive index associated with this type */ + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const; + + static MAPM addYearMonthDuration(const MAPM &seconds, const MAPM &monthsToAdd); + + static MAPM parseDateTime(const XMLCh* const dateTime, const MAPM &implicitTimezone); + +protected: + + /* If possible, cast this type to the target type */ + virtual AnyAtomicType::Ptr castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const; + +private: + // private constructor for use with clone() + ATDateTimeOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const MAPM &seconds, + const Timezone::Ptr &timezone, bool hasTimezone); + + void setDateTime(const XMLCh* const date); + + ATDateTimeOrDerived::Ptr addDayTimeDuration(const MAPM &seconds, const DynamicContext* context) const; + + ATDateTimeOrDerived::Ptr addYearMonthDuration(const MAPM &months, const DynamicContext* context) const; + + /*The value of this dateTime, in seconds since 0001-01-01T00:00:00, + always normalized if a timezone is present*/ + MAPM seconds_; + + /* the timezone associated with this ATDateTimeOrDerived */ + Timezone::Ptr timezone_; + + /* true if the timezone is defined */ + bool _hasTimezone; + + /* the name of this type */ + const XMLCh* _typeName; + + /* the uri of this type */ + const XMLCh* _typeURI; + +}; + +#endif // _ATDATETIMEORDERIVEDIMPL_HPP diff --git a/include/xqilla/items/impl/ATDecimalOrDerivedImpl.hpp b/include/xqilla/items/impl/ATDecimalOrDerivedImpl.hpp new file mode 100644 index 00000000..02debe05 --- /dev/null +++ b/include/xqilla/items/impl/ATDecimalOrDerivedImpl.hpp @@ -0,0 +1,143 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATDecimalOrDerivedImpl.hpp,v 1.12 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATDECIMALORDERIVEDIMPL_HPP +#define _ATDECIMALORDERIVEDIMPL_HPP + +#include +#include +#include + +#include + +class StaticContext; + +class XQILLA_API ATDecimalOrDerivedImpl : public ATDecimalOrDerived +{ + +public: + + /* constructor */ + ATDecimalOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const StaticContext* context); + + /* constructor */ + ATDecimalOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const MAPM value, const StaticContext* context); + + /* constructor */ + ATDecimalOrDerivedImpl(int value); + + /** destructor -- do nothing*/ + virtual ~ATDecimalOrDerivedImpl() { }; + + virtual void *getInterface(const XMLCh *name) const; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const; + + /* Promote this to the given type, if possible */ + virtual Numeric::Ptr promoteTypeIfApplicable(const XMLCh* typeURI, const XMLCh* typeName, const DynamicContext* context) const; + + /** Returns a Numeric object which is the sum of this and other */ + virtual Numeric::Ptr add(const Numeric::Ptr &other, const DynamicContext* context) const; + + /** Returns a Numeric object which is the difference of this and + * other */ + virtual Numeric::Ptr subtract(const Numeric::Ptr &other, const DynamicContext* context) const; + + /** Returns a Numeric object which is the product of this and other */ + virtual Numeric::Ptr multiply(const Numeric::Ptr &other, const DynamicContext* context) const; + + /** Returns a Numeric object which is the quotient of this and other */ + virtual Numeric::Ptr divide(const Numeric::Ptr &other, const DynamicContext* context) const; + + /** Returns the arithmetic product of its operands as a Numeric */ + virtual Numeric::Ptr mod(const Numeric::Ptr &other, const DynamicContext* context) const; + + /** Returns the floor of this Numeric */ + virtual Numeric::Ptr floor(const DynamicContext* context) const; + + /** Returns the ceiling of this Numeric */ + virtual Numeric::Ptr ceiling(const DynamicContext* context) const; + + /** Rounds this Numeric */ + virtual Numeric::Ptr round(const DynamicContext* context) const; + + /** Rounds this Numeric to the given precision, and rounds a half to even */ + virtual Numeric::Ptr roundHalfToEven(const Numeric::Ptr &precision, const DynamicContext* context) const; + + /** Returns the Additive inverse of this Numeric */ + virtual Numeric::Ptr invert(const DynamicContext* context) const; + + /** Returns the absolute value of this Numeric */ + virtual Numeric::Ptr abs(const DynamicContext* context) const; + + /** Does this Numeric have value 0? */ + virtual bool isZero() const; + + /** Is this Numeric negative? */ + virtual bool isNegative() const; + + /** Is this Numeric positive? */ + virtual bool isPositive() const; + + /** Treat this decimal (must be integer) as a codepoint **/ + virtual XMLInt32 treatAsCodepoint(const DynamicContext* context) const; + + /* Get the primitive index associated with this type */ + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const; + + /* Get the primitive index associated with this type */ + static AnyAtomicType::AtomicObjectType getTypeIndex(); + + /* Get the primitive type name */ + static const XMLCh* getPrimitiveName(); + + virtual const MAPM &asMAPM() const { return _decimal; } + + virtual State getState() const { return isNegative()? NEG_NUM : NUM; } + + /* The significant digits */ + static unsigned int g_nSignificantDigits; + + static MAPM parseDecimal(const XMLCh* const value); + +private: + + /* set the value of this decimal */ + void setDecimal(const XMLCh* const value); + + /* flag to note that we are an Integer -- to avoid many calls to + * isInstanceOfType */ + bool _isInteger; + + /*The value of this decimal*/ + MAPM _decimal; + + /* the name of this type */ + const XMLCh* _typeName; + + /* the uri of this type */ + const XMLCh* _typeURI; +}; + +#endif // _ATDECIMALORDERIVEDIMPL_HPP diff --git a/include/xqilla/items/impl/ATDoubleOrDerivedImpl.hpp b/include/xqilla/items/impl/ATDoubleOrDerivedImpl.hpp new file mode 100644 index 00000000..9a82be26 --- /dev/null +++ b/include/xqilla/items/impl/ATDoubleOrDerivedImpl.hpp @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATDoubleOrDerivedImpl.hpp,v 1.12 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATDOUBLEORDERIVEDIMPL_HPP +#define _ATDOUBLEORDERIVEDIMPL_HPP + +#include +#include +#include + +#include + +class XQILLA_API ATDoubleOrDerivedImpl : public ATDoubleOrDerived +{ + +public: + + /* constructor */ + ATDoubleOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const StaticContext* context); + + /* constructor */ + ATDoubleOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const MAPM value, const StaticContext* context); + + /** destructor -- do nothing*/ + virtual ~ATDoubleOrDerivedImpl() { }; + + virtual void *getInterface(const XMLCh *name) const; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const; + + /* Promote this to the given type, if possible */ + virtual Numeric::Ptr promoteTypeIfApplicable(const XMLCh* typeURI, const XMLCh* typeName, const DynamicContext* context) const; + + /** Returns a Numeric object which is the sum of this and other */ + virtual Numeric::Ptr add(const Numeric::Ptr &other, const DynamicContext* context) const; + + /** Returns a Numeric object which is the difference of this and + * other */ + virtual Numeric::Ptr subtract(const Numeric::Ptr &other, const DynamicContext* context) const; + + /** Returns a Numeric object which is the product of this and other */ + virtual Numeric::Ptr multiply(const Numeric::Ptr &other, const DynamicContext* context) const; + + /** Returns a Numeric object which is the quotient of this and other */ + virtual Numeric::Ptr divide(const Numeric::Ptr &other, const DynamicContext* context) const; + + /** Returns the arithmetic product of its operands as a Numeric */ + virtual Numeric::Ptr mod(const Numeric::Ptr &other, const DynamicContext* context) const; + + /** Returns the floor of this Numeric */ + virtual Numeric::Ptr floor(const DynamicContext* context) const; + + /** Returns the ceiling of this Numeric */ + virtual Numeric::Ptr ceiling(const DynamicContext* context) const; + + /** Rounds this Numeric */ + virtual Numeric::Ptr round(const DynamicContext* context) const; + + /** Rounds this Numeric to the given precision, and rounds a half to even */ + virtual Numeric::Ptr roundHalfToEven(const Numeric::Ptr &precision, const DynamicContext* context) const; + + /** Returns the Additive inverse of this Numeric */ + virtual Numeric::Ptr invert(const DynamicContext* context) const; + + /** Returns the absolute value of this Numeric */ + virtual Numeric::Ptr abs(const DynamicContext* context) const; + + /** Does this Numeric have value 0? */ + virtual bool isZero() const; + + /** Is this Numeric negative? */ + virtual bool isNegative() const; + + /** Is this Numeric positive? */ + virtual bool isPositive() const; + + /* Is this xs:double not a number */ + virtual bool isNaN() const; + + /* Is this xs:double infinite? */ + virtual bool isInfinite() const; + + /* Get the primitive index associated with this type */ + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const; + + /* Get the primitive index associated with this type */ + static AnyAtomicType::AtomicObjectType getTypeIndex(); + + /* Get the primitive type name */ + static const XMLCh* getPrimitiveName(); + + virtual const MAPM &asMAPM() const { return _double; } + + virtual State getState() const { return _state; } + + /* The significant digits */ + static int g_nSignificantDigits; + static bool g_bEnforceIEEE; + + static MAPM parseDouble(const XMLCh* const value, State &state); + +private: + + /* set the value of this decimal */ + void setDouble(const XMLCh* const value); + + /* returns a new infinity ATDoubleOrDerived*/ + ATDoubleOrDerived::Ptr infinity(const DynamicContext* context) const; + + /* returns a new negative infinity ATDoubleOrDerived*/ + ATDoubleOrDerived::Ptr negInfinity(const DynamicContext* context) const; + + /* returns a NaN ATDoubleOrDerived*/ + ATDoubleOrDerived::Ptr notANumber(const DynamicContext* context) const; + + /* returns a -0 ATDoubleOrDerived*/ + ATDoubleOrDerived::Ptr negZero(const DynamicContext* context) const; + + /*returns a ATDoubleOrDerived of value value*/ + ATDoubleOrDerived::Ptr newDouble(MAPM value, const DynamicContext* context) const; + + /*The value of this double*/ + MAPM _double; + + /* is it NaN, INF, NegINF, or just a double (NUM) */ + State _state; + + /* the name of this type */ + const XMLCh* _typeName; + + /* the uri of this type */ + const XMLCh* _typeURI; + +}; + +#endif // _ATDOUBLEORDERIVEDIMPL_HPP diff --git a/include/xqilla/items/impl/ATDurationOrDerivedImpl.hpp b/include/xqilla/items/impl/ATDurationOrDerivedImpl.hpp new file mode 100644 index 00000000..a900ae2a --- /dev/null +++ b/include/xqilla/items/impl/ATDurationOrDerivedImpl.hpp @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATDurationOrDerivedImpl.hpp,v 1.4 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATDURATIONORDERIVEDIMPL_HPP +#define _ATDURATIONORDERIVEDIMPL_HPP + +#include +#include +#include +#include + +class AnyAtomicType; +class ATDecimalOrDerived; +class XPath2MemoryManager; +class MAPM; + +class XQILLA_API ATDurationOrDerivedImpl : public ATDurationOrDerived +{ + +public: + + /* constructor */ + ATDurationOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context); + /* constructor */ + ATDurationOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const MAPM &months, const MAPM &seconds, + const DynamicContext* context); + + virtual void *getInterface(const XMLCh *name) const; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const; + + /* returns true if this duration is an instance of a xdt:dayTimeDuration */ + virtual bool isDayTimeDuration() const; + + /* returns true if this duration is an instance of a xdt:yearMonthDuration */ + virtual bool isYearMonthDuration() const; + + /* returns true if the two objects have the same duration + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATDurationOrDerived::Ptr &other, const DynamicContext *context) const; + + /** Divide this duration by a number -- only available for xdt:dayTimeDuration + * and xdt:yearMonthDuration */ + virtual ATDurationOrDerived::Ptr divide(const Numeric::Ptr &divisor, const DynamicContext* context) const; + + /** Divide this duration by a duration -- only available for xdt:dayTimeDuration + * and xdt:yearMonthDuration */ + virtual ATDecimalOrDerived::Ptr divide(const ATDurationOrDerived::Ptr &divisor, const DynamicContext* context) const; + + /** Multiply this duration by a number -- only available for xdt:dayTimeDuration + * and xdt:yearMonthDuration */ + virtual ATDurationOrDerived::Ptr multiply(const Numeric::Ptr &multiplier, const DynamicContext* context) const; + + /** Add a duration to this duration -- only available for xdt:dayTimeDuration + * and xdt:yearMonthDuration */ + virtual ATDurationOrDerived::Ptr add(const ATDurationOrDerived::Ptr &other, const DynamicContext* context) const; + + /** Subtract a duration from this duration -- only available for xdt:dayTimeDuration + * and xdt:yearMonthDuration */ + virtual ATDurationOrDerived::Ptr subtract(const ATDurationOrDerived::Ptr &other, const DynamicContext* context) const; + + /** Returns the year portion of this duration */ + virtual ATDecimalOrDerived::Ptr getYears(const DynamicContext* context) const; + + /** Returns the month portion of this duration */ + virtual ATDecimalOrDerived::Ptr getMonths(const DynamicContext* context) const; + + /** Returns the days portion of this duration */ + virtual ATDecimalOrDerived::Ptr getDays(const DynamicContext* context) const; + + /** Returns the hours portion of this duration */ + virtual ATDecimalOrDerived::Ptr getHours(const DynamicContext* context) const; + + /** Returns the minutes portion of this duration */ + virtual ATDecimalOrDerived::Ptr getMinutes(const DynamicContext* context) const; + + /** Returns the seconds portion of this duration */ + virtual ATDecimalOrDerived::Ptr getSeconds(const DynamicContext* context) const; + + /* return this duration in forms of seconds */ + virtual ATDecimalOrDerived::Ptr asSeconds(const DynamicContext* context) const; + + /* return this duration in forms of months */ + virtual ATDecimalOrDerived::Ptr asMonths(const DynamicContext* context) const; + + /** Returns true if this Duration is negative, false otherwise */ + virtual bool isNegative() const; + + /* Get the primitive index associated with this type */ + static AnyAtomicType::AtomicObjectType getTypeIndex(); + + /* Get the primitive type name */ + static const XMLCh* getPrimitiveName(); + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const; + + static void parseDuration(const XMLCh *const s, MAPM &months, MAPM &seconds); + +protected: + + /* If possible, cast this type to the target type */ + virtual AnyAtomicType::Ptr castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const; + +private: + /*The values that make up this duration */ + bool _isPositive; + MAPM _months; + MAPM _seconds; + + AtomicObjectType _durationType; + + /* the name of this type */ + const XMLCh* _typeName; + + /* the uri of this type */ + const XMLCh* _typeURI; + + void init(const DynamicContext* context); + void setDuration(const XMLCh* const value); + +}; + +#endif // _ATDURATIONORDERIVEDIMPL_HPP diff --git a/include/xqilla/items/impl/ATFloatOrDerivedImpl.hpp b/include/xqilla/items/impl/ATFloatOrDerivedImpl.hpp new file mode 100644 index 00000000..70ea05eb --- /dev/null +++ b/include/xqilla/items/impl/ATFloatOrDerivedImpl.hpp @@ -0,0 +1,152 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATFloatOrDerivedImpl.hpp,v 1.12 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATFLOATORDERIVEDIMPL_HPP +#define _ATFLOATORDERIVEDIMPL_HPP + +#include +#include +#include + +#include + +class XQILLA_API ATFloatOrDerivedImpl : public ATFloatOrDerived +{ + +public: + /* constructor */ + ATFloatOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const StaticContext* context); + + /* constructor */ + ATFloatOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const MAPM value, const StaticContext* context); + + /** destructor -- do nothing*/ + virtual ~ATFloatOrDerivedImpl() { }; + + virtual void *getInterface(const XMLCh *name) const; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const; + + /* Promote this to the given type, if possible */ + virtual Numeric::Ptr promoteTypeIfApplicable(const XMLCh* typeURI, const XMLCh* typeName, const DynamicContext* context) const; + + /** Returns a Numeric object which is the sum of this and other */ + virtual Numeric::Ptr add(const Numeric::Ptr &other, const DynamicContext* context) const; + + /** Returns a Numeric object which is the difference of this and + * other */ + virtual Numeric::Ptr subtract(const Numeric::Ptr &other, const DynamicContext* context) const; + + /** Returns a Numeric object which is the product of this and other */ + virtual Numeric::Ptr multiply(const Numeric::Ptr &other, const DynamicContext* context) const; + + /** Returns a Numeric object which is the quotient of this and other */ + virtual Numeric::Ptr divide(const Numeric::Ptr &other, const DynamicContext* context) const; + + /** Returns the arithmetic product of its operands as a Numeric */ + virtual Numeric::Ptr mod(const Numeric::Ptr &other, const DynamicContext* context) const; + + /** Returns the floor of this Numeric */ + virtual Numeric::Ptr floor(const DynamicContext* context) const; + + /** Returns the ceiling of this Numeric */ + virtual Numeric::Ptr ceiling(const DynamicContext* context) const; + + /** Rounds this Numeric */ + virtual Numeric::Ptr round(const DynamicContext* context) const; + + /** Rounds this Numeric to the given precision, and rounds a half to even */ + virtual Numeric::Ptr roundHalfToEven(const Numeric::Ptr &precision, const DynamicContext* context) const; + + /** Returns the Additive inverse of this Numeric */ + virtual Numeric::Ptr invert(const DynamicContext* context) const; + + /** Does this Numeric have value 0? */ + virtual bool isZero() const; + + /** Is this Numeric negative? */ + virtual bool isNegative() const; + + /** Is this Numeric positive? */ + virtual bool isPositive() const; + + /* Is this xs:float not a number */ + virtual bool isNaN() const; + + /* Is this xs:float infinite? */ + virtual bool isInfinite() const; + + /* Get the primitive index associated with this type */ + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const; + + /* Get the primitive index associated with this type */ + static AnyAtomicType::AtomicObjectType getTypeIndex(); + + /* Get the primitive type name */ + static const XMLCh* getPrimitiveName(); + + virtual const MAPM &asMAPM() const { return _float; } + + virtual State getState() const { return _state; } + + /* The significant digits */ + static int g_nSignificantDigits; + + static MAPM parseFloat(const XMLCh* const value, State &state); + +private: + + /* set the value of this decimal */ + void setFloat(const XMLCh* const value); + + /* returns a new infinity ATFloatOrDerived*/ + ATFloatOrDerived::Ptr infinity(const DynamicContext* context) const; + + /* returns a new negative infinity ATFloatOrDerived*/ + ATFloatOrDerived::Ptr negInfinity(const DynamicContext* context) const; + + /* returns a NaN ATFloatOrDerived*/ + ATFloatOrDerived::Ptr notANumber(const DynamicContext* context) const; + + /* returns a -0 ATFloatOrDerived*/ + ATFloatOrDerived::Ptr negZero(const DynamicContext* context) const; + + /*returns a ATFloatOrDerived of value value*/ + ATFloatOrDerived::Ptr newFloat(MAPM value, const DynamicContext* context) const; + + /*The value of this float*/ + MAPM _float; + + /* is it NaN, INF, NegINF, or just a float (NUM) */ + State _state; + + /* the name of this type */ + const XMLCh* _typeName; + + /* the uri of this type */ + const XMLCh* _typeURI; + +}; + +#endif // _ATFLOATORDERIVEDIMPL_HPP diff --git a/include/xqilla/items/impl/ATGDayOrDerivedImpl.hpp b/include/xqilla/items/impl/ATGDayOrDerivedImpl.hpp new file mode 100644 index 00000000..254519dc --- /dev/null +++ b/include/xqilla/items/impl/ATGDayOrDerivedImpl.hpp @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATGDayOrDerivedImpl.hpp,v 1.2 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATGDAYORDERIVEDIMPL_HPP +#define _ATGDAYORDERIVEDIMPL_HPP + +#include +#include +#include + +#include +#include +#include + +class XQILLA_API ATGDayOrDerivedImpl : public ATGDayOrDerived +{ + +public: + /* constructor */ + ATGDayOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context = 0); + + virtual void *getInterface(const XMLCh *name) const; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const; + + /* returns true if the two objects are equal + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATGDayOrDerived::Ptr &other, const DynamicContext *context) const; + + /** Returns true if a timezone is defined for this. False otherwise.*/ + virtual bool hasTimezone() const; + + /** Sets the timezone to the given timezone.*/ + virtual ATGDayOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const; + + /* Get the primitive index associated with this type */ + static AnyAtomicType::AtomicObjectType getTypeIndex(); + + /* Get the primitive type name */ + static const XMLCh* getPrimitiveName(); + + /* Get the primitive index associated with this type */ + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const; + + static MAPM parseGDay(const XMLCh* const value, const MAPM &implicitTimezone); + +private: + + /* parse the gDay */ + void setGDay(const XMLCh* const value); + + MAPM buildReferenceDateTime(const DynamicContext *context) const; + + /*The value of this gDay*/ + MAPM _gDay; + + /* whether this gDay has a timezone value*/ + bool _hasTimezone; + + /* the timezone value, if it exist */ + Timezone::Ptr timezone_; + + /* the name of this type */ + const XMLCh* _typeName; + + /* the uri of this type */ + const XMLCh* _typeURI; + +}; + +#endif // _ATGDAYORDERIVEDIMPL_HPP diff --git a/include/xqilla/items/impl/ATGMonthDayOrDerivedImpl.hpp b/include/xqilla/items/impl/ATGMonthDayOrDerivedImpl.hpp new file mode 100644 index 00000000..d40e65d4 --- /dev/null +++ b/include/xqilla/items/impl/ATGMonthDayOrDerivedImpl.hpp @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATGMonthDayOrDerivedImpl.hpp,v 1.2 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATGMONTHDAYORDERIVEDIMPL_HPP +#define _ATGMONTHDAYORDERIVEDIMPL_HPP + +#include +#include + +#include +#include +#include + +class XQILLA_API ATGMonthDayOrDerivedImpl : public ATGMonthDayOrDerived +{ + +public: + /* constructor */ + ATGMonthDayOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context = 0); + + virtual void *getInterface(const XMLCh *name) const; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const; + + /* returns true if the two objects are equal + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATGMonthDayOrDerived::Ptr &other, const DynamicContext *context) const; + + /** Returns true if a timezone is defined for this. False otherwise.*/ + virtual bool hasTimezone() const; + + /** Sets the timezone to the given timezone.*/ + virtual ATGMonthDayOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const; + + /* Get the primitive index associated with this type */ + static AnyAtomicType::AtomicObjectType getTypeIndex(); + + /* Get the primitive type name */ + static const XMLCh* getPrimitiveName(); + + /* Get the primitive index associated with this type */ + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const; + + static MAPM parseGMonthDay(const XMLCh* const value, const MAPM &implicitTimezone); + +private: + + /* parse the gMonthDay */ + void setGMonthDay(const XMLCh* const value); + + MAPM buildReferenceDateTime(const DynamicContext *context) const; + + /*The values of this gMonthDay*/ + MAPM _DD; + MAPM _MM; + + /* whether this gMonthDay has a timezone value*/ + bool _hasTimezone; + + /* the timezone value, if it exist */ + Timezone::Ptr timezone_; + + /* the name of this type */ + const XMLCh* _typeName; + + /* the uri of this type */ + const XMLCh* _typeURI; + +}; + +#endif // _ATGMONTHDAYORDERIVEDIMPL_HPP diff --git a/include/xqilla/items/impl/ATGMonthOrDerivedImpl.hpp b/include/xqilla/items/impl/ATGMonthOrDerivedImpl.hpp new file mode 100644 index 00000000..b4a58e91 --- /dev/null +++ b/include/xqilla/items/impl/ATGMonthOrDerivedImpl.hpp @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATGMonthOrDerivedImpl.hpp,v 1.2 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATGMONTHORDERIVEDIMPL_HPP +#define _ATGMONTHORDERIVEDIMPL_HPP + +#include +#include + +#include +#include +#include + +class XQILLA_API ATGMonthOrDerivedImpl : public ATGMonthOrDerived +{ + +public: + /* constructor */ + ATGMonthOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context = 0); + + virtual void *getInterface(const XMLCh *name) const; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const; + + /* returns true if the two objects are equal + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATGMonthOrDerived::Ptr &other, const DynamicContext *context) const; + + /** Returns true if a timezone is defined for this. False otherwise.*/ + virtual bool hasTimezone() const; + + /** Sets the timezone to the given timezone.*/ + virtual ATGMonthOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const; + + /* Get the primitive index associated with this type */ + static AnyAtomicType::AtomicObjectType getTypeIndex(); + + /* Get the primitive type name */ + static const XMLCh* getPrimitiveName(); + + /* Get the primitive index associated with this type */ + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const; + + static MAPM parseGMonth(const XMLCh* const value, const MAPM &implicitTimezone); + +private: + + /* parse the gDay */ + void setGMonth(const XMLCh* const value); + + MAPM buildReferenceDateTime(const DynamicContext *context) const; + + /*The value of this gDay*/ + MAPM _gMonth; // as nonNegativeInteger + + /* whether this gDay has a timezone value*/ + bool _hasTimezone; + + /* the timezone value, if it exist */ + Timezone::Ptr timezone_; + + /* the name of this type */ + const XMLCh* _typeName; + + /* the uri of this type */ + const XMLCh* _typeURI; + +}; + +#endif // _ATGMONTHORDERIVEDIMPL_HPP diff --git a/include/xqilla/items/impl/ATGYearMonthOrDerivedImpl.hpp b/include/xqilla/items/impl/ATGYearMonthOrDerivedImpl.hpp new file mode 100644 index 00000000..7c96c294 --- /dev/null +++ b/include/xqilla/items/impl/ATGYearMonthOrDerivedImpl.hpp @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATGYearMonthOrDerivedImpl.hpp,v 1.2 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATGYEARMONTHORDERIVEDIMPL_HPP +#define _ATGYEARMONTHORDERIVEDIMPL_HPP + +#include +#include + +#include +#include +#include + +class DynamicContext; + +class XQILLA_API ATGYearMonthOrDerivedImpl : public ATGYearMonthOrDerived +{ + +public: + /* constructor */ + ATGYearMonthOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context = 0); + + virtual void *getInterface(const XMLCh *name) const; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const; + + /* returns true if the two objects are equal + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATGYearMonthOrDerived::Ptr &other, const DynamicContext *context) const; + + /** Returns true if a timezone is defined for this. False otherwise.*/ + virtual bool hasTimezone() const; + + /** Sets the timezone to the given timezone.*/ + virtual ATGYearMonthOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const; + + /* Get the primitive index associated with this type */ + static AnyAtomicType::AtomicObjectType getTypeIndex(); + + /* Get the primitive type name */ + static const XMLCh* getPrimitiveName(); + + /* Get the primitive index associated with this type */ + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const; + + static MAPM parseGYearMonth(const XMLCh* const value, const MAPM &implicitTimezone); + +private: + /* parse the gYearMonth */ + void setGYearMonth(const XMLCh* const value); + + MAPM buildReferenceDateTime(const DynamicContext *context) const; + + /*The values of this gYearMonth*/ + MAPM _MM; // as nonNegativeInteger + MAPM _YY; // as integer + + /* whether this gYearMonth has a timezone value*/ + bool _hasTimezone; + + /* the timezone value, if it exist */ + Timezone::Ptr timezone_; + + /* the name of this type */ + const XMLCh* _typeName; + + /* the uri of this type */ + const XMLCh* _typeURI; + +}; + +#endif // _ATGYEARMONTHORDERIVEDIMPL_HPP diff --git a/include/xqilla/items/impl/ATGYearOrDerivedImpl.hpp b/include/xqilla/items/impl/ATGYearOrDerivedImpl.hpp new file mode 100644 index 00000000..7e70d4a7 --- /dev/null +++ b/include/xqilla/items/impl/ATGYearOrDerivedImpl.hpp @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATGYearOrDerivedImpl.hpp,v 1.2 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATGYEARORDERIVEDIMPL_HPP +#define _ATGYEARORDERIVEDIMPL_HPP + +#include +#include + +#include +#include +#include + +class DynamicContext; + +class XQILLA_API ATGYearOrDerivedImpl : public ATGYearOrDerived +{ + +public: + /* constructor */ + ATGYearOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context = 0); + + virtual void *getInterface(const XMLCh *name) const; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const; + + /* returns true if the two objects are equal + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATGYearOrDerived::Ptr &other, const DynamicContext *context) const; + + /** Returns true if a timezone is defined for this. False otherwise.*/ + virtual bool hasTimezone() const; + + /** Sets the timezone to the given timezone.*/ + virtual ATGYearOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const; + + /* Get the primitive index associated with this type */ + static AnyAtomicType::AtomicObjectType getTypeIndex(); + + /* Get the primitive type name */ + static const XMLCh* getPrimitiveName(); + + /* Get the primitive index associated with this type */ + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const; + + static MAPM parseGYear(const XMLCh* const value, const MAPM &implicitTimezone); + +private: + + /* parse the gDay */ + void setGYear(const XMLCh* const value); + + MAPM buildReferenceDateTime(const DynamicContext *context) const; + + /*The value of this gDay*/ + MAPM _YY; + + /* whether this gDay has a timezone value*/ + bool _hasTimezone; + + /* the timezone value, if it exist */ + Timezone::Ptr timezone_; + + /* the name of this type */ + const XMLCh* _typeName; + + /* the uri of this type */ + const XMLCh* _typeURI; + +}; + +#endif // _ATGYEARORDERIVEDIMPL_HPP diff --git a/include/xqilla/items/impl/ATQNameOrDerivedImpl.hpp b/include/xqilla/items/impl/ATQNameOrDerivedImpl.hpp new file mode 100644 index 00000000..2f583de3 --- /dev/null +++ b/include/xqilla/items/impl/ATQNameOrDerivedImpl.hpp @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATQNameOrDerivedImpl.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATQNAMEORDERIVEDIMPL_HPP +#define _ATQNAMEORDERIVEDIMPL_HPP + +#include +#include + +#include + +class XQILLA_API ATQNameOrDerivedImpl : public ATQNameOrDerived +{ + +public: + + /* constructor */ + ATQNameOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const StaticContext* context); + + ATQNameOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* uri, const XMLCh* prefix, const XMLCh* name, const StaticContext* context); + + virtual void *getInterface(const XMLCh *name) const; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const; + + /* returns the URI */ + virtual const XMLCh* getURI() const; + + /* returns the prefix */ + virtual const XMLCh* getPrefix() const; + + /* returns the name */ + virtual const XMLCh* getName() const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const; + + /* returns the XMLCh* (lexical := prefix:localname) representation of this type */ + const XMLCh* asLexicalString(const DynamicContext* context) const; + + /* returns true if the two objects' URI are equal (string comparison) + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATQNameOrDerived::Ptr &other, const DynamicContext *context) const; + + /* Get the primitive index associated with this type */ + static AnyAtomicType::AtomicObjectType getTypeIndex(); + + /* Get the primitive type name */ + static const XMLCh* getPrimitiveName(); + + /* Get the primitive index associated with this type */ + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const; + +protected: + + /* If possible, cast this type to the target type */ + virtual AnyAtomicType::Ptr castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const; + +private: + + /*The uri value of this QName*/ + const XMLCh* _uri; + + /*The prefix of this QName */ + const XMLCh* _prefix; + + /*The local name value of this QName */ + const XMLCh* _name; + + /* the name of this type */ + const XMLCh* _typeName; + + /* the uri of this type */ + const XMLCh* _typeURI; + +}; + +#endif // _ATQNAMEORDERIVEDIMPL_HPP diff --git a/include/xqilla/items/impl/ATTimeOrDerivedImpl.hpp b/include/xqilla/items/impl/ATTimeOrDerivedImpl.hpp new file mode 100644 index 00000000..56cbc578 --- /dev/null +++ b/include/xqilla/items/impl/ATTimeOrDerivedImpl.hpp @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATTimeOrDerivedImpl.hpp,v 1.2 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ATTIMEORDERIVEDIMPL_HPP +#define _ATTIMEORDERIVEDIMPL_HPP + +#include +#include +#include +#include + +#include + +class Timezone; +class ATDecimalOrDerived; +class ATDurationOrDerived; +class XPath2MemoryManager; +class DynamicContext; + +class XQILLA_API ATTimeOrDerivedImpl : public ATTimeOrDerived +{ + +public: + /* constructor */ + ATTimeOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context = 0); + + virtual void *getInterface(const XMLCh *name) const; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const; + + /* returns true if the two objects represent the same time, + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATTimeOrDerived::Ptr &other, const DynamicContext *context) const; + + /** + * Returns an integer representing the hour component of this object + */ + virtual ATDecimalOrDerived::Ptr getHours(const DynamicContext *context) const; + + /** + * Returns an integer representing the minute component of this object + */ + virtual ATDecimalOrDerived::Ptr getMinutes(const DynamicContext *context) const; + + /** + * Returns an decimal representing the second component of this object + */ + virtual ATDecimalOrDerived::Ptr getSeconds(const DynamicContext *context) const; + + /** + * Returns the timezone associated with this object, or + * null, if the timezone is not set + */ + virtual const Timezone::Ptr &getTimezone() const; + + /** + * Returns true if the timezone is defined for this object, false otherwise. + */ + virtual bool hasTimezone() const; + + /** + * Setter for timezone. Overrides the current timezone. (Not to be + * confused with addTimezone(). + */ + virtual ATTimeOrDerived::Ptr setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const; + + /** + * Returns an ATTimeOrDerived with a timezone added to it + */ + virtual ATTimeOrDerived::Ptr addTimezone(const ATDurationOrDerived::Ptr &timezone, const DynamicContext* context) const; + + /** + * Returns a time with the given dayTimeDuration added to it + */ + virtual ATTimeOrDerived::Ptr addDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, const DynamicContext* context) const; + + /** + * Returns a time with the given dayTimeDuration subtracted from it + */ + virtual ATTimeOrDerived::Ptr subtractDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, const DynamicContext* context) const; + + /** + * Returns a dayTimeDuration corresponding to the difference between this + * and the given ATTimeOrDerived* + */ + virtual ATDurationOrDerived::Ptr subtractTime(const ATTimeOrDerived::Ptr &time, const DynamicContext* context) const; + + /* Get the primitive index associated with this type */ + static AnyAtomicType::AtomicObjectType getTypeIndex(); + + /* Get the primitive type name */ + static const XMLCh* getPrimitiveName(); + + /* Get the primitive index associated with this type */ + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const; + + static MAPM parseTime(const XMLCh* const time, const MAPM &implicitTimezone); + +protected: + + /* If possible, cast this type to the target type */ + virtual AnyAtomicType::Ptr castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const; + +private: + // private constructor for use with clone() + ATTimeOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const MAPM &seconds, + const Timezone::Ptr &timezone, bool hasTimezone); + + void setTime(const XMLCh* const time); + + ATTimeOrDerived::Ptr addDayTimeDuration(const MAPM &seconds, const DynamicContext* context) const; + + MAPM buildReferenceDateTime(const DynamicContext* context) const; + + /*The value of this date, in seconds since 00:00:00*/ + MAPM seconds_; + + /* the timezone associated with this ATTimeOrDerived */ + Timezone::Ptr timezone_; + + /* true if the timezone is defined */ + bool _hasTimezone; + + /* the name of this type */ + const XMLCh* _typeName; + + /* the uri of this type */ + const XMLCh* _typeURI; + +}; + +#endif // _ATTIMEORDERIVEDIMPL_HPP diff --git a/include/xqilla/items/impl/NodeImpl.hpp b/include/xqilla/items/impl/NodeImpl.hpp new file mode 100644 index 00000000..b942a15b --- /dev/null +++ b/include/xqilla/items/impl/NodeImpl.hpp @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: NodeImpl.hpp,v 1.10 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _XQILLANODEIMPL_HPP +#define _XQILLANODEIMPL_HPP + +#include +#include +#include +#include + +class DynamicContext; +class XPath2MemoryManager; +class Sequence; +class DocumentCache; + +XERCES_CPP_NAMESPACE_BEGIN +class DatatypeValidator; +class DOMWriter; +class DOMNode; +XERCES_CPP_NAMESPACE_END + +class XQILLA_API NodeImpl : public Node +{ +public: + typedef RefCountPointer Ptr; + + NodeImpl(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node, const DynamicContext *context); + ~NodeImpl(); + + virtual void *getInterface(const XMLCh *name) const; + + virtual bool isNode() const; + virtual bool isAtomicValue() const; + virtual const XMLCh* asString(const DynamicContext* context) const; + virtual bool hasInstanceOfType(const XMLCh* typeURI, const XMLCh* typeName, const DynamicContext* context) const; + + virtual Sequence dmBaseURI(const DynamicContext* context) const; + virtual const XMLCh* dmNodeKind() const; + virtual ATQNameOrDerived::Ptr dmNodeName(const DynamicContext* context) const; + virtual const XMLCh* dmStringValue(const DynamicContext* context) const; + virtual Sequence dmTypedValue(DynamicContext* context) const; + + virtual Sequence dmDocumentURI(const DynamicContext* context) const; + virtual ATQNameOrDerived::Ptr dmTypeName(const DynamicContext* context) const; + + virtual ATBooleanOrDerived::Ptr dmNilled(const DynamicContext* context) const; + + virtual bool lessThan(const Node::Ptr &other, const DynamicContext *context) const; + virtual bool equals(const Node::Ptr &other) const; + virtual bool uniqueLessThan(const Node::Ptr &other, const DynamicContext *context) const; + + virtual const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* getDOMNode() const; + + virtual Node::Ptr dmParent(const DynamicContext* context) const; + virtual Result dmAttributes(const DynamicContext* context, const LocationInfo *info) const; + virtual Result dmNamespaceNodes(const DynamicContext* context, const LocationInfo *info) const; + virtual Result dmChildren(const DynamicContext *context, const LocationInfo *info) const; + + virtual Result getAxisResult(XQStep::Axis axis, const NodeTest *nodeTest, const DynamicContext *context, const LocationInfo *info) const; + + virtual ATBooleanOrDerived::Ptr dmIsId(const DynamicContext* context) const; + virtual ATBooleanOrDerived::Ptr dmIsIdRefs(const DynamicContext* context) const; + + virtual const XMLCh* getTypeURI() const; + virtual const XMLCh* getTypeName() const; + + static const XMLCh ls_string[]; + +protected: + NodeImpl(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node); + + virtual void getTypeUriAndName(const XMLCh*& uri, const XMLCh*& name) const; + virtual void getMemberTypeUriAndName(const XMLCh*& uri, const XMLCh*& name) const; + Sequence getListTypeTypedValue(XERCES_CPP_NAMESPACE_QUALIFIER DatatypeValidator *dtv, const DynamicContext* context) const; + void addStringValueToBuffer(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* node, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer& buffer) const; + + XERCES_CPP_NAMESPACE_QUALIFIER DOMWriter *fSerializer; + + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* fNode; + const DynamicContext *context_; +}; +#endif diff --git a/include/xqilla/mapm/m_apm.h b/include/xqilla/mapm/m_apm.h new file mode 100644 index 00000000..fadfb192 --- /dev/null +++ b/include/xqilla/mapm/m_apm.h @@ -0,0 +1,479 @@ + +/* + * M_APM - m_apm.h + * + * Copyright (C) 1999 - 2002 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#ifndef M__APM__INCLUDED +#define M__APM__INCLUDED + +#include + +#ifdef __cplusplus +/* Comment this line out if you've compiled the library as C++. */ +#define APM_CONVERT_FROM_C +#endif + +#ifdef APM_CONVERT_FROM_C +extern "C" { +#endif + +typedef unsigned char UCHAR; + +typedef struct { + UCHAR *m_apm_data; + long m_apm_id; + int m_apm_refcount; /* <- used only by C++ MAPM class */ + int m_apm_malloclength; + int m_apm_datalength; + int m_apm_exponent; + int m_apm_sign; +} M_APM_struct; + +typedef M_APM_struct *M_APM; + +/* + * convienient predefined constants + */ + +extern M_APM MM_Zero; +extern M_APM MM_One; +extern M_APM MM_Two; +extern M_APM MM_Three; +extern M_APM MM_Four; +extern M_APM MM_Five; +extern M_APM MM_Ten; + +extern M_APM MM_PI; +extern M_APM MM_HALF_PI; +extern M_APM MM_2_PI; +extern M_APM MM_E; + +extern M_APM MM_LOG_E_BASE_10; +extern M_APM MM_LOG_10_BASE_E; +extern M_APM MM_LOG_2_BASE_E; +extern M_APM MM_LOG_3_BASE_E; + + +/* + * function prototypes + */ +extern void m_apm_mt_initialize(void); +extern void m_apm_mt_terminate(void); + +extern void m_apm_enter(void); +extern void m_apm_leave(void); + +extern XQILLA_API M_APM m_apm_init(void); +extern void m_apm_free(M_APM); +extern void m_apm_free_all_mem(void); +extern void m_apm_trim_mem_usage(void); + +extern void m_apm_set_string(M_APM, char *); +extern void m_apm_set_double(M_APM, double); +extern void m_apm_set_long(M_APM, long); + +extern void m_apm_to_string(char *, int, M_APM); +extern void m_apm_to_fixpt_string(char *, int, M_APM); +extern void m_apm_to_fixpt_stringex(char *, int, M_APM, char, char, int); +extern char *m_apm_to_fixpt_stringexp(int, M_APM, char, char, int); +extern void m_apm_to_integer_string(char *, M_APM); + +extern void m_apm_absolute_value(M_APM, M_APM); +extern void m_apm_negate(M_APM, M_APM); +extern XQILLA_API void m_apm_copy(M_APM, M_APM); +extern void m_apm_round(M_APM, int, M_APM); +extern XQILLA_API int m_apm_compare(M_APM, M_APM); +extern int m_apm_sign(M_APM); +extern int m_apm_exponent(M_APM); +extern int m_apm_significant_digits(M_APM); +extern int m_apm_is_integer(M_APM); +extern int m_apm_is_even(M_APM); +extern int m_apm_is_odd(M_APM); + +extern void m_apm_gcd(M_APM, M_APM, M_APM); +extern void m_apm_lcm(M_APM, M_APM, M_APM); + +extern void m_apm_add(M_APM, M_APM, M_APM); +extern void m_apm_subtract(M_APM, M_APM, M_APM); +extern void m_apm_multiply(M_APM, M_APM, M_APM); +extern void m_apm_divide(M_APM, int, M_APM, M_APM); +extern void m_apm_integer_divide(M_APM, M_APM, M_APM); +extern void m_apm_integer_div_rem(M_APM, M_APM, M_APM, M_APM); +extern void m_apm_reciprocal(M_APM, int, M_APM); +extern void m_apm_factorial(M_APM, M_APM); +extern void m_apm_floor(M_APM, M_APM); +extern void m_apm_ceil(M_APM, M_APM); +extern void m_apm_get_random(M_APM); +extern void m_apm_set_random_seed(char *); + +extern void m_apm_sqrt(M_APM, int, M_APM); +extern void m_apm_cbrt(M_APM, int, M_APM); +extern void m_apm_log(M_APM, int, M_APM); +extern void m_apm_log10(M_APM, int, M_APM); +extern void m_apm_exp(M_APM, int, M_APM); +extern void m_apm_pow(M_APM, int, M_APM, M_APM); +extern void m_apm_integer_pow(M_APM, int, M_APM, int); +extern void m_apm_integer_pow_nr(M_APM, M_APM, int); + +extern void m_apm_sin_cos(M_APM, M_APM, int, M_APM); +extern void m_apm_sin(M_APM, int, M_APM); +extern void m_apm_cos(M_APM, int, M_APM); +extern void m_apm_tan(M_APM, int, M_APM); +extern void m_apm_arcsin(M_APM, int, M_APM); +extern void m_apm_arccos(M_APM, int, M_APM); +extern void m_apm_arctan(M_APM, int, M_APM); +extern void m_apm_arctan2(M_APM, int, M_APM, M_APM); + +extern void m_apm_sinh(M_APM, int, M_APM); +extern void m_apm_cosh(M_APM, int, M_APM); +extern void m_apm_tanh(M_APM, int, M_APM); +extern void m_apm_arcsinh(M_APM, int, M_APM); +extern void m_apm_arccosh(M_APM, int, M_APM); +extern void m_apm_arctanh(M_APM, int, M_APM); + +extern void m_apm_cpp_precision(int); /* only for C++ wrapper */ + +extern M_APM m_apm_init_mt(void); +extern void m_apm_free_mt(M_APM); +extern void m_apm_free_all_mem_mt(void); +extern void m_apm_trim_mem_usage_mt(void); + +extern void m_apm_set_string_mt(M_APM, char *); +extern void m_apm_set_double_mt(M_APM, double); +extern void m_apm_set_long_mt(M_APM, long); + +extern void m_apm_to_string_mt(char *, int, M_APM); +extern void m_apm_to_fixpt_string_mt(char *, int, M_APM); +extern void m_apm_to_fixpt_stringex_mt(char *, int, M_APM, char, + char, int); + +extern char *m_apm_to_fixpt_stringexp_mt(int, M_APM, char, char, int); +extern void m_apm_to_integer_string_mt(char *, M_APM); + +extern void m_apm_absolute_value_mt(M_APM, M_APM); +extern void m_apm_negate_mt(M_APM, M_APM); +extern void m_apm_copy_mt(M_APM, M_APM); +extern void m_apm_round_mt(M_APM, int, M_APM); +extern int m_apm_compare_mt(M_APM, M_APM); +extern int m_apm_sign_mt(M_APM); +extern int m_apm_exponent_mt(M_APM); +extern int m_apm_significant_digits_mt(M_APM); +extern int m_apm_is_integer_mt(M_APM); +extern int m_apm_is_even_mt(M_APM); +extern int m_apm_is_odd_mt(M_APM); + +extern void m_apm_gcd_mt(M_APM, M_APM, M_APM); +extern void m_apm_lcm_mt(M_APM, M_APM, M_APM); + +extern void m_apm_add_mt(M_APM, M_APM, M_APM); +extern void m_apm_subtract_mt(M_APM, M_APM, M_APM); +extern void m_apm_multiply_mt(M_APM, M_APM, M_APM); +extern void m_apm_divide_mt(M_APM, int, M_APM, M_APM); +extern void m_apm_integer_divide_mt(M_APM, M_APM, M_APM); +extern void m_apm_integer_div_rem_mt(M_APM, M_APM, M_APM, M_APM); +extern void m_apm_reciprocal_mt(M_APM, int, M_APM); +extern void m_apm_factorial_mt(M_APM, M_APM); +extern void m_apm_floor_mt(M_APM, M_APM); +extern void m_apm_ceil_mt(M_APM, M_APM); +extern void m_apm_get_random_mt(M_APM); +extern void m_apm_set_random_seed_mt(char *); + +extern void m_apm_sqrt_mt(M_APM, int, M_APM); +extern void m_apm_cbrt_mt(M_APM, int, M_APM); +extern void m_apm_log_mt(M_APM, int, M_APM); +extern void m_apm_log10_mt(M_APM, int, M_APM); +extern void m_apm_exp_mt(M_APM, int, M_APM); +extern void m_apm_pow_mt(M_APM, int, M_APM, M_APM); +extern void m_apm_integer_pow_mt(M_APM, int, M_APM, int); +extern void m_apm_integer_pow_nr_mt(M_APM, M_APM, int); + +extern void m_apm_sin_cos_mt(M_APM, M_APM, int, M_APM); +extern void m_apm_sin_mt(M_APM, int, M_APM); +extern void m_apm_cos_mt(M_APM, int, M_APM); +extern void m_apm_tan_mt(M_APM, int, M_APM); +extern void m_apm_arcsin_mt(M_APM, int, M_APM); +extern void m_apm_arccos_mt(M_APM, int, M_APM); +extern void m_apm_arctan_mt(M_APM, int, M_APM); +extern void m_apm_arctan2_mt(M_APM, int, M_APM, M_APM); + +extern void m_apm_sinh_mt(M_APM, int, M_APM); +extern void m_apm_cosh_mt(M_APM, int, M_APM); +extern void m_apm_tanh_mt(M_APM, int, M_APM); +extern void m_apm_arcsinh_mt(M_APM, int, M_APM); +extern void m_apm_arccosh_mt(M_APM, int, M_APM); +extern void m_apm_arctanh_mt(M_APM, int, M_APM); + +extern void m_apm_cpp_precision_mt(int); /* only for C++ wrapper */ + +/* more intuitive alternate names for the ARC functions ... */ + +#define m_apm_asin m_apm_arcsin +#define m_apm_acos m_apm_arccos +#define m_apm_atan m_apm_arctan +#define m_apm_atan2 m_apm_arctan2 + +#define m_apm_asinh m_apm_arcsinh +#define m_apm_acosh m_apm_arccosh +#define m_apm_atanh m_apm_arctanh + +#define m_apm_asin_mt m_apm_arcsin_mt +#define m_apm_acos_mt m_apm_arccos_mt +#define m_apm_atan_mt m_apm_arctan_mt +#define m_apm_atan2_mt m_apm_arctan2_mt + +#define m_apm_asinh_mt m_apm_arcsinh_mt +#define m_apm_acosh_mt m_apm_arccosh_mt +#define m_apm_atanh_mt m_apm_arctanh_mt + +#ifdef APM_CONVERT_FROM_C +} /* End extern "C" bracket */ +#endif + +#ifdef __cplusplus /*<- Hides the class below from C compilers */ + +/* + This class lets you use M_APM's a bit more intuitively with + C++'s operator and function overloading, constructors, etc. + + Added 3/24/2000 by Orion Sky Lawlor, olawlor@acm.org +*/ + +extern +#ifdef APM_CONVERT_FROM_C +"C" +#endif +int MM_cpp_min_precision; + + +class XQILLA_API MAPM { +protected: + +/* +The M_APM structure here is implemented as a reference- +counted, copy-on-write data structure-- this makes copies +very fast, but that's why it's so ugly. A MAPM object is +basically just a wrapper around a (possibly shared) +M_APM_struct myVal. +*/ + + M_APM myVal; /* My M_APM structure */ + void create(void); + void destroy(void); + void copyFrom(M_APM Nval); + static M_APM makeNew(void); + static void ref(M_APM val); + static void unref(M_APM val); + + /* This routine is called to get a private (mutable) + copy of our current value. */ + M_APM val(void); + + /*BAD: C M_APM routines doesn't use "const" where they should-- + hence we have to cast to a non-const type here (FIX THIS!). + + (in due time.... MCR) + */ + M_APM cval(void) const; + /* This is the default number of digits to use for + 1-ary functions like sin, cos, tan, etc. + It's the larger of my digits and cpp_min_precision. + */ + int myDigits(void) const; + /* This is the default number of digits to use for + 2-ary functions like divide, atan2, etc. + It's the larger of my digits, his digits, and cpp_min_precision. + */ + int digits(const MAPM &otherVal) const; +public: + /* Constructors: */ + MAPM(void); /* Default constructor (takes no value) */ + MAPM(const MAPM &m); /* Copy constructor */ + MAPM(M_APM m); /* M_APM constructor (refcount starts at one) */ + MAPM(const char *s); /* Constructor from string */ + MAPM(double d); /* Constructor from double-precision float */ + MAPM(int l); /* Constructor from int */ + MAPM(long l); /* Constructor from long int */ + /* Destructor */ + ~MAPM(); + + const M_APM c_struct() const { return myVal; } + + /* Extracting string descriptions: */ + void toString(char *dest,int decimalPlaces) const; + void toFixPtString(char *dest,int decimalPlaces) const; + void toFixPtStringEx(char *dest,int dp,char a,char b,int c) const; + char *toFixPtStringExp(int dp,char a,char b,int c) const; + void toIntegerString(char *dest) const; + + /* Basic operators: */ + MAPM &operator=(const MAPM &m); /* Assigment operator */ + MAPM &operator=(const char *s); /* Assigment operator */ + MAPM &operator=(double d); /* Assigment operator */ + MAPM &operator=(int l); /* Assigment operator */ + MAPM &operator=(long l); /* Assigment operator */ + MAPM operator++(); /* Prefix increment operator */ + MAPM operator--(); /* Prefix decrement operator */ + const MAPM operator++(int); /* Postfix increment operator */ + const MAPM operator--(int); /* Postfix decrement operator */ + + /* Comparison operators */ + bool operator==(const MAPM &m) const; /* Equality operator */ + bool operator!=(const MAPM &m) const; /* Inequality operator */ + bool operator<(const MAPM &m) const; + bool operator<=(const MAPM &m) const; + bool operator>(const MAPM &m) const; + bool operator>=(const MAPM &m) const; + int compare(const MAPM &m) const; + + /* Basic arithmetic operators */ + friend MAPM operator+(const MAPM &a,const MAPM &b); + friend MAPM operator-(const MAPM &a,const MAPM &b); + friend MAPM operator*(const MAPM &a,const MAPM &b); + + /* Default division keeps larger of cpp_min_precision, numerator + digits of precision, or denominator digits of precision. */ + friend MAPM operator/(const MAPM &a,const MAPM &b); + + MAPM divide(const MAPM &m,int toDigits) const; + MAPM divide(const MAPM &m) const; + + /* Assignment arithmetic operators */ + MAPM &operator+=(const MAPM &m); + MAPM &operator-=(const MAPM &m); + MAPM &operator*=(const MAPM &m); + MAPM &operator/=(const MAPM &m); + + /* Extracting/setting simple information: */ + int sign(void) const; + int exponent(void) const ; + int significant_digits(void) const; + int is_integer(void) const; + int is_even(void) const; + int is_odd(void) const; + + /* Functions: */ + MAPM abs(void) const; + MAPM neg(void) const; + MAPM round(int toDigits) const; + +/* I got tired of typing the various declarations for a simple + 1-ary real-to-real function on MAPM's; hence this define: + The digits-free versions return my digits of precision or + cpp_min_precision, whichever is bigger. +*/ + +#define MAPM_1aryFunc(func) \ + MAPM func(int toDigits) const;\ + MAPM func(void) const; + + MAPM_1aryFunc(sqrt) + MAPM_1aryFunc(cbrt) + MAPM_1aryFunc(log) + MAPM_1aryFunc(exp) + MAPM_1aryFunc(log10) + MAPM_1aryFunc(sin) + MAPM_1aryFunc(asin) + MAPM_1aryFunc(cos) + MAPM_1aryFunc(acos) + MAPM_1aryFunc(tan) + MAPM_1aryFunc(atan) + MAPM_1aryFunc(sinh) + MAPM_1aryFunc(asinh) + MAPM_1aryFunc(cosh) + MAPM_1aryFunc(acosh) + MAPM_1aryFunc(tanh) + MAPM_1aryFunc(atanh) +#undef MAPM_1aryFunc + + void sincos(MAPM &sinR,MAPM &cosR,int toDigits); + void sincos(MAPM &sinR,MAPM &cosR); + MAPM pow(const MAPM &m,int toDigits) const; + MAPM pow(const MAPM &m) const; + MAPM atan2(const MAPM &x,int toDigits) const; + MAPM atan2(const MAPM &x) const; + + MAPM gcd(const MAPM &m) const; + + MAPM lcm(const MAPM &m) const; + + static MAPM random(void); + + MAPM floor(void) const; + MAPM ceil(void) const; + + /* Functions defined only on integers: */ + MAPM factorial(void) const; + MAPM ipow_nr(int p) const; + MAPM ipow(int p,int toDigits) const; + MAPM ipow(int p) const; + MAPM integer_divide(const MAPM &denom) const; + void integer_div_rem(const MAPM &denom,MAPM ",MAPM &rem) const; + MAPM div(const MAPM &denom) const; + MAPM rem(const MAPM &denom) const; +}; + +/* math.h-style functions: */ + +inline MAPM fabs(const MAPM &m) {return m.abs();} +inline MAPM factorial(const MAPM &m) {return m.factorial();} +inline MAPM floor(const MAPM &m) {return m.floor();} +inline MAPM ceil(const MAPM &m) {return m.ceil();} +inline MAPM get_random(void) {return MAPM::random();} + +/* I got tired of typing the various declarations for a simple + 1-ary real-to-real function on MAPM's; hence this define: +*/ +#define MAPM_1aryFunc(func) \ + inline MAPM func(const MAPM &m) {return m.func();} \ + inline MAPM func(const MAPM &m,int toDigits) {return m.func(toDigits);} + +/* Define a big block of simple functions: */ + MAPM_1aryFunc(sqrt) + MAPM_1aryFunc(cbrt) + MAPM_1aryFunc(log) + MAPM_1aryFunc(exp) + MAPM_1aryFunc(log10) + MAPM_1aryFunc(sin) + MAPM_1aryFunc(asin) + MAPM_1aryFunc(cos) + MAPM_1aryFunc(acos) + MAPM_1aryFunc(tan) + MAPM_1aryFunc(atan) + MAPM_1aryFunc(sinh) + MAPM_1aryFunc(asinh) + MAPM_1aryFunc(cosh) + MAPM_1aryFunc(acosh) + MAPM_1aryFunc(tanh) + MAPM_1aryFunc(atanh) +#undef MAPM_1aryFunc + +/* Computes x to the power y */ +inline MAPM pow(const MAPM &x,const MAPM &y,int toDigits) + {return x.pow(y,toDigits);} +inline MAPM pow(const MAPM &x,const MAPM &y) + {return x.pow(y);} +inline MAPM atan2(const MAPM &y,const MAPM &x,int toDigits) + {return y.atan2(x,toDigits);} +inline MAPM atan2(const MAPM &y,const MAPM &x) + {return y.atan2(x);} +inline MAPM gcd(const MAPM &u,const MAPM &v) + {return u.gcd(v);} +inline MAPM lcm(const MAPM &u,const MAPM &v) + {return u.lcm(v);} +#endif +#endif + diff --git a/include/xqilla/operators/And.hpp b/include/xqilla/operators/And.hpp new file mode 100644 index 00000000..f2dd76de --- /dev/null +++ b/include/xqilla/operators/And.hpp @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: And.hpp,v 1.10 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _AND_HPP +#define _AND_HPP + +#include + +#include +#include + +class XQILLA_API And : public XQOperator +{ +public: + static const XMLCh name[]; + + And(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Result createResult(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + +private: + class AndResult : public SingleResult + { + public: + AndResult(const And *op); + + Item::Ptr getSingleResult(DynamicContext *context) const; + std::string asString(DynamicContext *context, int indent) const; + private: + const And *_op; + }; +}; + +#endif // _AND_HPP diff --git a/include/xqilla/operators/ArithmeticOperator.hpp b/include/xqilla/operators/ArithmeticOperator.hpp new file mode 100644 index 00000000..452ecd38 --- /dev/null +++ b/include/xqilla/operators/ArithmeticOperator.hpp @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ArithmeticOperator.hpp,v 1.13 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ARITHMETICOPERATOR_HPP +#define _ARITHMETICOPERATOR_HPP + +#include +#include + +class AnyAtomicType; + +class XQILLA_API ArithmeticOperator : public XQOperator +{ +public: + ArithmeticOperator(const XMLCh* opName, const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + Result createResult(DynamicContext* context, int flags=0) const; + + AnyAtomicType::Ptr getArgument(unsigned int index, DynamicContext *context) const; + + virtual void calculateStaticType() = 0; + virtual Item::Ptr execute(const AnyAtomicType::Ptr &arg1, const AnyAtomicType::Ptr &arg2, DynamicContext *context) const = 0; + +protected: + void calculateStaticTypeForNumerics(const StaticType &arg0, const StaticType &arg1); + + class ArithmeticResult : public SingleResult + { + public: + ArithmeticResult(const ArithmeticOperator *op); + + Item::Ptr getSingleResult(DynamicContext *context) const; + std::string asString(DynamicContext *context, int indent) const; + private: + const ArithmeticOperator *_op; + }; +}; + +#endif // _ARITHMETICOPERATOR_HPP diff --git a/include/xqilla/operators/ComparisonOperator.hpp b/include/xqilla/operators/ComparisonOperator.hpp new file mode 100644 index 00000000..0024c4d8 --- /dev/null +++ b/include/xqilla/operators/ComparisonOperator.hpp @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ComparisonOperator.hpp,v 1.10 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _COMPARISONOPERATOR_HPP +#define _COMPARISONOPERATOR_HPP + +#include +#include + +class AnyAtomicType; + +class XQILLA_API ComparisonOperator : public XQOperator +{ +public: + ComparisonOperator(const XMLCh* opName, const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + Result createResult(DynamicContext* context, int flags=0) const; + + AnyAtomicType::Ptr getArgument(unsigned int index, DynamicContext *context) const; + + virtual bool execute(const AnyAtomicType::Ptr &arg1, const AnyAtomicType::Ptr &arg2, DynamicContext *context) const = 0; + +protected: + + class ComparisonResult : public SingleResult + { + public: + ComparisonResult(const ComparisonOperator *op); + + Item::Ptr getSingleResult(DynamicContext *context) const; + std::string asString(DynamicContext *context, int indent) const; + private: + const ComparisonOperator *_op; + }; +}; + +#endif // _COMPARISONOPERATOR_HPP diff --git a/include/xqilla/operators/Divide.hpp b/include/xqilla/operators/Divide.hpp new file mode 100644 index 00000000..61472987 --- /dev/null +++ b/include/xqilla/operators/Divide.hpp @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Divide.hpp,v 1.9 2006/11/01 16:37:14 jpcs Exp $ + */ + +/* + Divide operator function +*/ + +#ifndef _DIVIDE_HPP +#define _DIVIDE_HPP + +#include +#include + +/** OpDivide operator function*/ +class XQILLA_API Divide : public ArithmeticOperator +{ +public: + static const XMLCh name[]; + + Divide(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + void calculateStaticType(); + Item::Ptr execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const; +}; + +#endif // _DIVIDE_HPP + + diff --git a/include/xqilla/operators/Equals.hpp b/include/xqilla/operators/Equals.hpp new file mode 100644 index 00000000..12a0ceab --- /dev/null +++ b/include/xqilla/operators/Equals.hpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Equals.hpp,v 1.9 2006/11/01 16:37:14 jpcs Exp $ + */ + +/* + Equals operator function +*/ + +#ifndef _EQUALS_HPP +#define _EQUALS_HPP + +#include + +#include + +class Collation; + +/** OpEqualsEquals operator function*/ +class XQILLA_API Equals : public ComparisonOperator +{ +public: + static const XMLCh name[]; + + Equals(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + static bool equals(const Item::Ptr &arg1, const Item::Ptr &arg2, Collation* collation, DynamicContext* context, const LocationInfo *info); + + static bool equals(const AnyAtomicType::Ptr &arg1, const AnyAtomicType::Ptr &arg2, Collation* collation, DynamicContext* context, const LocationInfo *info); + + bool execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const; +}; + +#endif // _EQUALS_HPP + diff --git a/include/xqilla/operators/Except.hpp b/include/xqilla/operators/Except.hpp new file mode 100644 index 00000000..2a28a70b --- /dev/null +++ b/include/xqilla/operators/Except.hpp @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Except.hpp,v 1.10 2006/11/01 16:37:14 jpcs Exp $ + */ + +/* + + Op Except +The except operator takes two node sequences as operands and returns a sequence containing all the nodes that occur in the first operand +but not in the second operand +*/ + +#ifndef _EXCEPT_HPP +#define _EXCEPT_HPP + +#include + +#include +#include +#include + +class XQILLA_API Except : public XQOperator +{ +public: + static const XMLCh name[]; + + Except(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + Result createResult(DynamicContext* context, int flags=0) const; + +private: + class ExceptResult : public ResultImpl + { + public: + ExceptResult(const Except *op, int flags); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + private: + const Except *_op; + unsigned int _flags; + bool _toDo; + Result _result; + ResultBuffer _excpt; + }; + + bool sortAdded_; +}; + +#endif diff --git a/include/xqilla/operators/GeneralComp.hpp b/include/xqilla/operators/GeneralComp.hpp new file mode 100644 index 00000000..bd57eb0e --- /dev/null +++ b/include/xqilla/operators/GeneralComp.hpp @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: GeneralComp.hpp,v 1.12 2006/11/01 16:37:14 jpcs Exp $ + */ + +/* + General Comparison operator function +*/ + +#ifndef _GENERALCOMP_HPP +#define _GENERALCOMP_HPP + +#include + +#include +#include + +/** GeneralComp operator function*/ +class XQILLA_API GeneralComp : public XQOperator +{ +public: + typedef enum { + EQUAL, + NOT_EQUAL, + LESS_THAN, + LESS_THAN_EQUAL, + GREATER_THAN, + GREATER_THAN_EQUAL + } ComparisonOperation; + + static const XMLCh name[]; + + GeneralComp(ComparisonOperation operation, const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + Result createResult(DynamicContext* context, int flags=0) const; + + ComparisonOperation getOperation() const; + bool getXPath1CompatibilityMode() const { return xpath1compat_; } + + static bool compare(GeneralComp::ComparisonOperation operation, + AnyAtomicType::Ptr first, AnyAtomicType::Ptr second, + Collation* collation, DynamicContext *context, + bool xpath1compat, const LocationInfo *info); + +protected: + class GeneralCompResult : public SingleResult + { + public: + GeneralCompResult(const GeneralComp *op); + + Item::Ptr getSingleResult(DynamicContext *context) const; + std::string asString(DynamicContext *context, int indent) const; + private: + const GeneralComp *_op; + }; + + ComparisonOperation _operation; + bool xpath1compat_; +}; + +#endif // _GENERALCOMP_HPP + + + diff --git a/include/xqilla/operators/GreaterThan.hpp b/include/xqilla/operators/GreaterThan.hpp new file mode 100644 index 00000000..327de56c --- /dev/null +++ b/include/xqilla/operators/GreaterThan.hpp @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: GreaterThan.hpp,v 1.9 2006/11/01 16:37:14 jpcs Exp $ + */ + +/* + GreaterThan operator function +*/ + +#ifndef _GREATERTHAN_HPP +#define _GREATERTHAN_HPP + +#include + +#include + +class Collation; + +/** OpGreaterThan operator function*/ +class XQILLA_API GreaterThan : public ComparisonOperator +{ +public: + static const XMLCh name[]; + + GreaterThan(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + static bool greater_than(const AnyAtomicType::Ptr &arg1, const AnyAtomicType::Ptr &arg2, Collation* collation, DynamicContext* context, const LocationInfo *info); + + bool execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const; +}; +#endif diff --git a/include/xqilla/operators/GreaterThanEqual.hpp b/include/xqilla/operators/GreaterThanEqual.hpp new file mode 100644 index 00000000..271cf68a --- /dev/null +++ b/include/xqilla/operators/GreaterThanEqual.hpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: GreaterThanEqual.hpp,v 1.9 2006/11/01 16:37:14 jpcs Exp $ + */ + +/* + GreaterThanEqual operator function +*/ + +#ifndef _GREATERTHANEQUAL_HPP +#define _GREATERTHANEQUAL_HPP + +#include + +#include + +class Collation; + +/** OpGreaterThanEqual operator function*/ +class XQILLA_API GreaterThanEqual : public ComparisonOperator +{ +public: + static const XMLCh name[]; + + GreaterThanEqual(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + static bool greater_than_equal(const AnyAtomicType::Ptr &arg1, const AnyAtomicType::Ptr &arg2, Collation* collation, DynamicContext* context, const LocationInfo *info); + + bool execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const; +}; + +#endif // _GREATERTHANEQUAL_HPP + diff --git a/include/xqilla/operators/IntegerDivide.hpp b/include/xqilla/operators/IntegerDivide.hpp new file mode 100644 index 00000000..1bc5dcd2 --- /dev/null +++ b/include/xqilla/operators/IntegerDivide.hpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: IntegerDivide.hpp,v 1.9 2006/11/01 16:37:14 jpcs Exp $ + */ + +/* + Integer divide operator function +*/ + +#ifndef _INTEGER_DIVIDE_HPP +#define _INTEGER_DIVIDE_HPP + +#include +#include + +/** OpIntegerDivide operator function*/ +class XQILLA_API IntegerDivide : public ArithmeticOperator +{ +public: + static const XMLCh name[]; + + IntegerDivide(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + void calculateStaticType(); + Item::Ptr execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const; +}; + +#endif // _INTEGER_DIVIDE_HPP + diff --git a/include/xqilla/operators/Intersect.hpp b/include/xqilla/operators/Intersect.hpp new file mode 100644 index 00000000..4e3257f5 --- /dev/null +++ b/include/xqilla/operators/Intersect.hpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Intersect.hpp,v 1.10 2006/11/01 16:37:14 jpcs Exp $ + */ + +/* + + Op Intersect +The intersect operator takes two node sequences as operands and returns a sequence containing all the nodes that occur in both operands. +*/ + +#ifndef _INTERSECT_HPP +#define _INTERSECT_HPP + +#include + +#include + +class XQILLA_API Intersect : public XQOperator +{ +public: + static const XMLCh name[]; + + Intersect(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + Sequence collapseTreeInternal(DynamicContext* context, int flags=0) const; + +private: + bool sortAdded_; +}; + +#endif diff --git a/include/xqilla/operators/LessThan.hpp b/include/xqilla/operators/LessThan.hpp new file mode 100644 index 00000000..69ce7951 --- /dev/null +++ b/include/xqilla/operators/LessThan.hpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: LessThan.hpp,v 1.9 2006/11/01 16:37:14 jpcs Exp $ + */ + +/* + LessThan operator function +*/ + +#ifndef _LESSTHAN_HPP +#define _LESSTHAN_HPP + +#include + +#include + +class Collation; + +/** OpLessThan operator function*/ +class XQILLA_API LessThan : public ComparisonOperator +{ +public: + static const XMLCh name[]; + + LessThan(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + static bool less_than(const AnyAtomicType::Ptr &arg1, const AnyAtomicType::Ptr &arg2, Collation* collation, DynamicContext* context, const LocationInfo *info); + + bool execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const; +}; + +#endif // _LESSTHAN_HPP + diff --git a/include/xqilla/operators/LessThanEqual.hpp b/include/xqilla/operators/LessThanEqual.hpp new file mode 100644 index 00000000..ddcc3358 --- /dev/null +++ b/include/xqilla/operators/LessThanEqual.hpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: LessThanEqual.hpp,v 1.9 2006/11/01 16:37:14 jpcs Exp $ + */ + +/* + LessThanEqual operator function +*/ + +#ifndef _LESSTHANEQUAL_HPP +#define _LESSTHANEQUAL_HPP + +#include + +#include + +class Collation; + +/** OpLessThanEqual operator function*/ +class XQILLA_API LessThanEqual : public ComparisonOperator +{ +public: + static const XMLCh name[]; + + LessThanEqual(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + static bool less_than_equal(const AnyAtomicType::Ptr &arg1, const AnyAtomicType::Ptr &arg2, Collation* collation, DynamicContext* context, const LocationInfo *info); + + bool execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const; +}; + +#endif // _LESSTHANEQUAL_HPP + diff --git a/include/xqilla/operators/Minus.hpp b/include/xqilla/operators/Minus.hpp new file mode 100644 index 00000000..040fcaa6 --- /dev/null +++ b/include/xqilla/operators/Minus.hpp @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Minus.hpp,v 1.9 2006/11/01 16:37:14 jpcs Exp $ + */ + +/* + Minus operator function +*/ + +#ifndef _MINUS_HPP +#define _MINUS_HPP + +#include + +#include + +/** OpMinus operator function*/ +class XQILLA_API Minus : public ArithmeticOperator +{ +public: + static const XMLCh name[]; + + Minus(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + void calculateStaticType(); + Item::Ptr execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const; +}; + +#endif // _FUNCTIONOPMINUS_HPP + diff --git a/include/xqilla/operators/Mod.hpp b/include/xqilla/operators/Mod.hpp new file mode 100644 index 00000000..f4433345 --- /dev/null +++ b/include/xqilla/operators/Mod.hpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Mod.hpp,v 1.9 2006/11/01 16:37:14 jpcs Exp $ + */ + +/* + Mod operator function +*/ + +#ifndef _MOD_HPP +#define _MOD_HPP + +#include +#include + +/** OpMod operator function*/ +class XQILLA_API Mod : public ArithmeticOperator +{ +public: + static const XMLCh name[]; + + Mod(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + void calculateStaticType(); + Item::Ptr execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const; +}; + +#endif // _FUNCTIONOPMOD_HPP + diff --git a/include/xqilla/operators/Multiply.hpp b/include/xqilla/operators/Multiply.hpp new file mode 100644 index 00000000..fd71230b --- /dev/null +++ b/include/xqilla/operators/Multiply.hpp @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Multiply.hpp,v 1.9 2006/11/01 16:37:14 jpcs Exp $ + */ + +/* + Multiply operator function +*/ + +#ifndef _MULTIPLY_HPP +#define _MULTIPLY_HPP + +#include + +#include + +/** OpTimes operator function*/ +class XQILLA_API Multiply : public ArithmeticOperator +{ +public: + static const XMLCh name[]; + + Multiply(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + void calculateStaticType(); + Item::Ptr execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const; +}; + +#endif // _FUNCTIONOPTIMES_HPP + diff --git a/include/xqilla/operators/NodeComparison.hpp b/include/xqilla/operators/NodeComparison.hpp new file mode 100644 index 00000000..c4cab8f1 --- /dev/null +++ b/include/xqilla/operators/NodeComparison.hpp @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: NodeComparison.hpp,v 1.11 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _NODECOMPARISON_HPP +#define _NODECOMPARISON_HPP + +#include + +#include +#include + +/** NodeComparison operator function*/ +class XQILLA_API NodeComparison : public XQOperator +{ +public: + static const XMLCh name[]; + + NodeComparison(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + Result createResult(DynamicContext* context, int flags=0) const; + +private: + class NodeComparisonResult : public SingleResult + { + public: + NodeComparisonResult(const NodeComparison *op); + + Item::Ptr getSingleResult(DynamicContext *context) const; + std::string asString(DynamicContext *context, int indent) const; + private: + const NodeComparison *_op; + }; +}; + +#endif // _FUNCTIONOPPLUS_HPP diff --git a/include/xqilla/operators/NotEquals.hpp b/include/xqilla/operators/NotEquals.hpp new file mode 100644 index 00000000..ea869bab --- /dev/null +++ b/include/xqilla/operators/NotEquals.hpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: NotEquals.hpp,v 1.9 2006/11/01 16:37:14 jpcs Exp $ + */ + +/* + NotEquals operator function +*/ + +#ifndef _NOTEQUALS_HPP +#define _NOTEQUALS_HPP + +#include + +#include + +class Collation; + +/** OpNotEquals operator function*/ +class XQILLA_API NotEquals : public ComparisonOperator +{ +public: + static const XMLCh name[]; + + NotEquals(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + static bool not_equals(const AnyAtomicType::Ptr &arg1, const AnyAtomicType::Ptr &arg2, Collation* collation, DynamicContext* context, const LocationInfo *info); + + bool execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const; +}; + +#endif // _NOTEQUALS_HPP diff --git a/include/xqilla/operators/Or.hpp b/include/xqilla/operators/Or.hpp new file mode 100644 index 00000000..bff2ba05 --- /dev/null +++ b/include/xqilla/operators/Or.hpp @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Or.hpp,v 1.10 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _OR_HPP +#define _OR_HPP + +#include + +#include +#include + +class XQILLA_API Or : public XQOperator +{ +public: + static const XMLCh name[]; + + Or(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + Result createResult(DynamicContext* context, int flags=0) const; + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + +private: + class OrResult : public SingleResult + { + public: + OrResult(const Or *op); + + Item::Ptr getSingleResult(DynamicContext *context) const; + std::string asString(DynamicContext *context, int indent) const; + private: + const Or *_op; + }; +}; + +#endif // _OR_HPP diff --git a/include/xqilla/operators/OrderComparison.hpp b/include/xqilla/operators/OrderComparison.hpp new file mode 100644 index 00000000..dffebe9d --- /dev/null +++ b/include/xqilla/operators/OrderComparison.hpp @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: OrderComparison.hpp,v 1.11 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _ORDERCOMPARISON_HPP +#define _ORDERCOMPARISON_HPP + +#include + +#include +#include + +class XQILLA_API OrderComparison : public XQOperator +{ +public: + static const XMLCh name[]; + + ///testBefore should be set to true if you want to test that the first parameter is before the second. + OrderComparison(const VectorOfASTNodes &args, bool testBefore, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + Result createResult(DynamicContext* context, int flags=0) const; + + bool getTestBefore() const; + +private: + class OrderComparisonResult : public SingleResult + { + public: + OrderComparisonResult(const OrderComparison *op); + + Item::Ptr getSingleResult(DynamicContext *context) const; + std::string asString(DynamicContext *context, int indent) const; + private: + const OrderComparison *_op; + }; + + bool _testBefore; +}; + +#endif // _FUNCTIONOPPLUS_HPP diff --git a/include/xqilla/operators/Plus.hpp b/include/xqilla/operators/Plus.hpp new file mode 100644 index 00000000..4fb8db01 --- /dev/null +++ b/include/xqilla/operators/Plus.hpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Plus.hpp,v 1.10 2006/11/01 16:37:14 jpcs Exp $ + */ + +/* + OpPlus operator function +*/ + +#ifndef _PLUS_HPP +#define _PLUS_HPP + +#include + +#include + +/** OpPlus operator function*/ +class XQILLA_API Plus : public ArithmeticOperator +{ +public: + static const XMLCh name[]; + + Plus(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + void calculateStaticType(); + Item::Ptr execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const; + + static Item::Ptr plus(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context, const LocationInfo *info); +}; + +#endif // _FUNCTIONOPPLUS_HPP + diff --git a/include/xqilla/operators/Range.hpp b/include/xqilla/operators/Range.hpp new file mode 100644 index 00000000..7aad646f --- /dev/null +++ b/include/xqilla/operators/Range.hpp @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Range.hpp,v 1.9 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _RANGE_HPP +#define _RANGE_HPP + +#include + +#include + +class Numeric; + +/** Range operator function*/ +class XQILLA_API Range : public XQOperator +{ +public: + static const XMLCh name[]; + + ///Constructor + Range(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + Result createResult(DynamicContext* context, int flags=0) const; + +private: + class RangeResult : public ResultImpl + { + public: + RangeResult(const Range *op, DynamicContext *context); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + + private: + const Range *_op; + Numeric::Ptr _last; + Numeric::Ptr _step; + Numeric::Ptr _end; + }; +}; + +#endif // _RANGE_HPP + + diff --git a/include/xqilla/operators/UnaryMinus.hpp b/include/xqilla/operators/UnaryMinus.hpp new file mode 100644 index 00000000..43d439c1 --- /dev/null +++ b/include/xqilla/operators/UnaryMinus.hpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: UnaryMinus.hpp,v 1.11 2006/11/01 16:37:14 jpcs Exp $ + */ + +/* + UnaryMinus operator function +*/ + +#ifndef _UNARYMINUS_HPP +#define _UNARYMINUS_HPP + +#include +#include + +/** Unary Minus operator function*/ +class XQILLA_API UnaryMinus : public ArithmeticOperator +{ +public: + static const XMLCh name[]; + + UnaryMinus(bool positive, const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + virtual ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + + void calculateStaticType(); + Item::Ptr execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const; + + bool getIsPositive() const { return positive_; } + +private: + bool positive_; +}; + +#endif // _UNARYMINUS_HPP + diff --git a/include/xqilla/operators/Union.hpp b/include/xqilla/operators/Union.hpp new file mode 100644 index 00000000..22fd97c6 --- /dev/null +++ b/include/xqilla/operators/Union.hpp @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Union.hpp,v 1.10 2006/11/01 16:37:14 jpcs Exp $ + */ + +/* + Union function -- takes two sequences, and merge them +*/ + +#ifndef _UNION_HPP +#define _UNION_HPP + +#include + +#include +#include +#include + +/** Union operator function*/ +class XQILLA_API Union : public XQOperator +{ +public: + static const XMLCh name[]; + + Union(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr); + + ASTNode* staticResolution(StaticContext *context); + virtual ASTNode *staticTyping(StaticContext *context); + Result createResult(DynamicContext* context, int flags=0) const; + +private: + class UnionResult : public ResultImpl + { + public: + UnionResult(const Union *op, int flags); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + private: + const Union *_op; + unsigned int _flags; + unsigned int _index; + Result _result; + }; + + bool sortAdded_; +}; + +#endif + diff --git a/include/xqilla/parser/QName.hpp b/include/xqilla/parser/QName.hpp new file mode 100644 index 00000000..b9f4ec22 --- /dev/null +++ b/include/xqilla/parser/QName.hpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: QName.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _QNAME_HPP +#define _QNAME_HPP + +#include +#include +#include +#include + +/* +Represents a Qualified name. Built in the parser. + */ +class XQILLA_API QualifiedName { + +public: + QualifiedName(const XMLCh* qualifiedName, XPath2MemoryManager* memMgr); + // This constructor should be used on persistent strings (no memory manager involved) + QualifiedName(const XMLCh* prefix, const XMLCh* name); + QualifiedName(const XMLCh* fullName); + ~QualifiedName(); + + const XMLCh* getPrefix() const; + const XMLCh* getName() const; + + const XMLCh* getFullName(XPath2MemoryManager* memMgr) const; + +private: + const XMLCh* _prefix,*_name; + bool _bDeleteStrings; +}; + +#endif + diff --git a/include/xqilla/runtime/EmptyResult.hpp b/include/xqilla/runtime/EmptyResult.hpp new file mode 100644 index 00000000..af530e2d --- /dev/null +++ b/include/xqilla/runtime/EmptyResult.hpp @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: EmptyResult.hpp,v 1.9 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _EMPTYRESULT_HPP +#define _EMPTYRESULT_HPP + +#include + +class XQILLA_API EmptyResult : public ResultImpl +{ +public: + EmptyResult(const LocationInfo *o); + + Item::Ptr next(DynamicContext *context); + + std::string asString(DynamicContext *context, int indent) const; +}; + +#endif diff --git a/include/xqilla/runtime/LazySequenceResult.hpp b/include/xqilla/runtime/LazySequenceResult.hpp new file mode 100644 index 00000000..27a3d0ec --- /dev/null +++ b/include/xqilla/runtime/LazySequenceResult.hpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: LazySequenceResult.hpp,v 1.8 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _LAZYSEQUENCERESULT_HPP +#define _LAZYSEQUENCERESULT_HPP + +#include + +#include + +class XQILLA_API LazySequenceResult : public ResultImpl +{ +public: + LazySequenceResult(const LocationInfo *o, DynamicContext *context); + + /// Get the next item from the iterator + virtual Item::Ptr next(DynamicContext *context); + + /// Called lazily to get the Sequence to iterate over + virtual void getResult(Sequence &toFill, DynamicContext *context) const = 0; + + /// Cast operator to a Sequence + virtual Sequence toSequence(DynamicContext *context = 0); + +private: + bool toInit_; + Sequence::iterator it_; + Sequence seq_; +}; + +#endif diff --git a/include/xqilla/runtime/Result.hpp b/include/xqilla/runtime/Result.hpp new file mode 100644 index 00000000..8a4e94fc --- /dev/null +++ b/include/xqilla/runtime/Result.hpp @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Result.hpp,v 1.10 2006/11/01 16:37:14 jpcs Exp $ + */ + +#ifndef _RESULT_HPP +#define _RESULT_HPP + +#include +#include + +#include +#include +#include +#include + +class Sequence; +class SequenceType; +class DynamicContext; +class StaticType; + +/** A reference counting wrapper for the lazily evaluated query result */ +class XQILLA_API Result +{ +public: + Result(const Sequence &seq); + Result(ResultImpl *impl); + Result(const Result &o); + Result &operator=(const Result &o); + ~Result(); + + /// Returns the underlying ResultImpl object + ResultImpl *operator->(); + + /// Returns the underlying ResultImpl object + const ResultImpl *operator->() const; + + /// Returns the underlying ResultImpl object + ResultImpl *get(); + + /// Returns the underlying ResultImpl object + const ResultImpl *get() const; + + /// Returns true if the underlying pointer is null + bool isNull() const; + + EmptyResult* getEmpty() const; + +private: + ResultImpl *_impl; + + static EmptyResult _empty; +}; + +inline bool Result::isNull() const +{ + return _impl == 0; +} + +inline ResultImpl *Result::get() +{ + if(_impl) return _impl; + return getEmpty(); +} + +inline const ResultImpl *Result::get() const +{ + if(_impl) return _impl; + return getEmpty(); +} + +inline ResultImpl *Result::operator->() +{ + return get(); +} + +inline const ResultImpl *Result::operator->() const +{ + return get(); +} + +inline Result &Result::operator=(const Result &o) +{ + if(o._impl != _impl) { + if(_impl) _impl->decrementRefCount(); + _impl = o._impl; + if(_impl) _impl->incrementRefCount(); + } + return *this; +} + +#endif diff --git a/include/xqilla/runtime/ResultBuffer.hpp b/include/xqilla/runtime/ResultBuffer.hpp new file mode 100644 index 00000000..fe72f385 --- /dev/null +++ b/include/xqilla/runtime/ResultBuffer.hpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ResultBuffer.hpp,v 1.9 2006/11/01 16:37:15 jpcs Exp $ + */ + +#ifndef _RESULTBUFFER_HPP +#define _RESULTBUFFER_HPP + +#include +#include + +/** A reference counting wrapper for the result buffer */ +class XQILLA_API ResultBuffer +{ +public: + ResultBuffer(const Result &result, unsigned int readCount = ResultBufferImpl::UNLIMITED_COUNT); + ResultBuffer(const Item::Ptr &item, unsigned int readCount = ResultBufferImpl::UNLIMITED_COUNT); + ResultBuffer(ResultBufferImpl *impl); + + /// Creates a result that returns the same items as the one used to construct this buffer + Result createResult(); + + bool isNull() const + { + return _impl.isNull(); + } + +private: + ResultBufferImpl::Ptr _impl; +}; + +#endif diff --git a/include/xqilla/runtime/ResultBufferImpl.hpp b/include/xqilla/runtime/ResultBufferImpl.hpp new file mode 100644 index 00000000..ba9e9e3e --- /dev/null +++ b/include/xqilla/runtime/ResultBufferImpl.hpp @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ResultBufferImpl.hpp,v 1.3 2006/11/01 16:37:15 jpcs Exp $ + */ + +#ifndef _RESULTBUFFERIMPL_HPP +#define _RESULTBUFFERIMPL_HPP + +#include + +#include +#include +#include + +/** A buffer for lazily evaluated query results. This object is not thread safe */ +class XQILLA_API ResultBufferImpl : public ReferenceCounted +{ +public: + typedef RefCountPointer Ptr; + + static const unsigned int UNLIMITED_COUNT; + + /** + * Do not allocate this object from a memory manager! + * It must be created using the heap. + */ + ResultBufferImpl(const Result &result, unsigned int readCount = UNLIMITED_COUNT); + ResultBufferImpl(const Item::Ptr &item, unsigned int readCount = UNLIMITED_COUNT); + ~ResultBufferImpl(); + + /// Creates a result that returns the same items as the one used to construct this buffer + Result createResult(); + + unsigned int getMaxReadCount() const { return _maxReadCount; } + unsigned int incrementReadCount() { return ++_readCount; } + +private: + ResultBufferImpl(const ResultBufferImpl &); + ResultBufferImpl &operator=(const ResultBufferImpl &); + + Item::Ptr item(unsigned int index, DynamicContext *context); + + friend class BufferedResult; + + typedef std::vector ItemList; + + unsigned int _refCount; + Result _result; + ItemList _items; + + unsigned int _readCount; + unsigned int _maxReadCount; +}; + +class BufferedResult : public ResultImpl +{ +public: + BufferedResult(ResultBufferImpl *impl); + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; +private: + ResultBufferImpl::Ptr _impl; + unsigned int _pos; +}; + + +#endif diff --git a/include/xqilla/runtime/ResultImpl.hpp b/include/xqilla/runtime/ResultImpl.hpp new file mode 100644 index 00000000..106cfed0 --- /dev/null +++ b/include/xqilla/runtime/ResultImpl.hpp @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ResultImpl.hpp,v 1.9 2006/11/01 16:37:15 jpcs Exp $ + */ + +#ifndef _RESULTIMPL_HPP +#define _RESULTIMPL_HPP + +#include +#include + +#include +#include +#include +#include + +class SequenceType; +class DynamicContext; +class Sequence; + +/** A lazily evaluated query result */ +class XQILLA_API ResultImpl : public ReferenceCounted, public LocationInfo +{ +public: + virtual ~ResultImpl() {} + + /// Get the next item from the iterator. Returns null if the is no next value. + virtual Item::Ptr next(DynamicContext *context) = 0; + + /// Performs iterator specific skip of results + virtual void skip() {} + + /// Returns the effective boolean value of the sequence. Only works properly before next() has been called. + virtual bool getEffectiveBooleanValue(DynamicContext* context, const LocationInfo *info); + /// Returns the effective boolean value of the sequence. + static bool getEffectiveBooleanValue(const Item::Ptr &first, const Item::Ptr &second, DynamicContext* context, const LocationInfo *info); + + /// Cast operator to a Sequence. Only works properly before next() has been called. + virtual Sequence toSequence(DynamicContext *context); + + /// Debug method to visualise the Result + virtual std::string asString(DynamicContext *context, int indent) const = 0; + + static std::string getIndent(int indent); + +protected: + /** + * Do not allocate this object from a memory manager! + * It must be created using the heap. + */ + ResultImpl(const LocationInfo *o) + { + setLocationInfo(o); + } + +private: + ResultImpl(const ResultImpl &) {}; + ResultImpl &operator=(const ResultImpl &) { return *this; }; +}; + +#endif diff --git a/include/xqilla/runtime/Sequence.hpp b/include/xqilla/runtime/Sequence.hpp new file mode 100644 index 00000000..96572ea5 --- /dev/null +++ b/include/xqilla/runtime/Sequence.hpp @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Sequence.hpp,v 1.8 2006/11/01 16:37:15 jpcs Exp $ + */ + +#ifndef _SEQUENCE_HPP +#define _SEQUENCE_HPP + +#include + +#include +#include +#include + +#include +#include + +class DynamicContext; + +typedef std::vector > VectorOfItems; + +/** + * An eagerly evaluated result of a query execution. + */ +class XQILLA_API Sequence : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory +{ + +public: + typedef VectorOfItems::iterator iterator; + typedef VectorOfItems::const_iterator const_iterator; + typedef VectorOfItems::reverse_iterator reverse_iterator; + typedef VectorOfItems::const_reverse_iterator const_reverse_iterator; + + // constructor that takes one Item + Sequence(const Item::Ptr &item, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr = + XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager); + // constructor that creates a empty sequence + Sequence(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr = + XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager); + /// construct and reserve space for n elements + Sequence(unsigned int n, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr = + XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager); + // copy constructor + Sequence(const Sequence&, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr); + // copy constructor + Sequence(const Sequence&); + Sequence &operator=(const Sequence &); + + ~Sequence(); + + void clear(); + + const Item::Ptr &first() const; + const Item::Ptr &second() const; + + ///Begin an iterator + Sequence::iterator begin(void); + Sequence::const_iterator begin(void) const; + + ///Find the end of the iterator + Sequence::iterator end(void); + Sequence::const_iterator end(void) const; + + ///Reverse iterator methods + Sequence::reverse_iterator rbegin(void); + Sequence::const_reverse_iterator rbegin(void) const; + + Sequence::reverse_iterator rend(void); + Sequence::const_reverse_iterator rend(void) const; + + ///Returns the number of nodes in the list + unsigned int getLength(void) const; + + ///Return the indexth item in the collection + const Item::Ptr &item(unsigned int index) const; + ///Return the indexth item in the collection - takes ATDecimalOrDerived + const Item::Ptr &item(const ATDecimalOrDerived::Ptr &index) const; + + /// add an item to this sequence + void addItem(const Item::Ptr &item); + + /// add an item to this sequence + void addItemFront(const Item::Ptr &item); + + /// combine another sequence onto this sequence + void joinSequence(const Sequence & s); + + ///Returns true if the list is empty + bool isEmpty() const; + + /// sort into document order (only works for Sequences containing only Nodes) + void sortIntoDocumentOrder(const DynamicContext *context); + + /// sort as strings, using the given collation + void sortWithCollation(const Collation *collation, const DynamicContext *context); + +private: + VectorOfItems _itemList; +}; + +#endif diff --git a/include/xqilla/runtime/SequenceResult.hpp b/include/xqilla/runtime/SequenceResult.hpp new file mode 100644 index 00000000..eefe52aa --- /dev/null +++ b/include/xqilla/runtime/SequenceResult.hpp @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: SequenceResult.hpp,v 1.8 2006/11/01 16:37:15 jpcs Exp $ + */ + +#ifndef _SEQUENCERESULT_HPP +#define _SEQUENCERESULT_HPP + +#include + +#include + +class XQILLA_API SequenceResult : public ResultImpl +{ +public: + SequenceResult(const LocationInfo *o, const Sequence &seq); + + /// Get the next item from the iterator + virtual Item::Ptr next(DynamicContext *context); + + /// Cast operator to a Sequence + virtual Sequence toSequence(DynamicContext *context = 0); + + virtual std::string asString(DynamicContext *context, int indent) const; + +private: + Sequence::iterator it_; + Sequence seq_; +}; + +#endif diff --git a/include/xqilla/runtime/SingleResult.hpp b/include/xqilla/runtime/SingleResult.hpp new file mode 100644 index 00000000..4ea854a0 --- /dev/null +++ b/include/xqilla/runtime/SingleResult.hpp @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: SingleResult.hpp,v 1.9 2006/11/01 16:37:15 jpcs Exp $ + */ + +#ifndef _SINGLERESULT_HPP +#define _SINGLERESULT_HPP + +#include + +/** A reference counting wrapper for the lazily evaluated query result */ +class XQILLA_API SingleResult : public ResultImpl +{ +public: + SingleResult(const LocationInfo *o); + + virtual Item::Ptr next(DynamicContext *context); + + virtual Item::Ptr getSingleResult(DynamicContext *context) const = 0; + +private: + bool toDo_; +}; + +#endif diff --git a/include/xqilla/schema/AnyAtomicTypeDatatypeValidator.hpp b/include/xqilla/schema/AnyAtomicTypeDatatypeValidator.hpp new file mode 100644 index 00000000..ccd1b2dc --- /dev/null +++ b/include/xqilla/schema/AnyAtomicTypeDatatypeValidator.hpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: AnyAtomicTypeDatatypeValidator.hpp,v 1.8 2006/11/01 16:37:17 jpcs Exp $ + */ + +#include + +#include +#include +#include +#include +#include +#include +#include + +class KVStringPair; + +class XQILLA_API AnyAtomicTypeDatatypeValidator : public XERCES_CPP_NAMESPACE_QUALIFIER AnySimpleTypeDatatypeValidator { + +public: + // constructor + AnyAtomicTypeDatatypeValidator(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const manager = XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager); + + // destructor + virtual ~AnyAtomicTypeDatatypeValidator(); + + virtual XERCES_CPP_NAMESPACE_QUALIFIER DatatypeValidator* newInstance( + XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf* const facets, + XERCES_CPP_NAMESPACE_QUALIFIER RefArrayVectorOf* const enums, + const int finalSet, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const manager); + + virtual bool isAtomic() const { return true; } + +}; + diff --git a/include/xqilla/schema/DocumentCache.hpp b/include/xqilla/schema/DocumentCache.hpp new file mode 100644 index 00000000..b18c2463 --- /dev/null +++ b/include/xqilla/schema/DocumentCache.hpp @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DocumentCache.hpp,v 1.12 2006/11/01 16:37:17 jpcs Exp $ + */ + +#ifndef _DOCUMENTCACHE_HPP +#define _DOCUMENTCACHE_HPP + +#include +#include +#include +#include +#include +#include + +typedef std::vector > VectorOfStrings; + +class DynamicContext; +class StaticContext; +class QualifiedName; + +XERCES_CPP_NAMESPACE_BEGIN +class DOMDocument; +class DOMNode; +class DatatypeValidator; +class XMLEntityResolver; +class ComplexTypeInfo; +class SchemaElementDecl; +class SchemaAttDef; +class InputSource; +XERCES_CPP_NAMESPACE_END + +///Expression Context is a storage for contexts. +class XQILLA_API DocumentCache : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory +{ +public: + enum ValidationMode { + VALIDATION_STRICT = 0, + VALIDATION_LAX = 1 + }; + + /** virtual destructor */ + virtual ~DocumentCache() {} + + /** load the DOM document from the requested URI (or get it from the cache) */ + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *loadXMLDocument(const XMLCh* Uri, DynamicContext *context) = 0; + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *loadXMLDocument(XERCES_CPP_NAMESPACE_QUALIFIER + InputSource& inputSource, + DynamicContext *context) = 0; + + /** + * Sets the XMLEntityResolver that is used by Xerces when it is used + * to parse documents. This affects the behaviour of XQilla whenever + * it retrieves an XML, DTD or XML Schema grammar. + */ + virtual void setXMLEntityResolver(XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* const handler) = 0; + virtual XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* getXMLEntityResolver() const = 0; + + /* + * returns true if the type represented by uri:typename is an instance of uriToCheck:typeNameToCheck + * + * ie: to check + * xs:integer instance of xs:decimal, + * call + * isTypeOrDerivedFromType("xs", "integer", "xs", "decimal") + * (except of course, call with URIs, not prefixes!) + */ + virtual bool isTypeOrDerivedFromType(const XMLCh* const uri, const XMLCh* const typeName, const XMLCh* const uriToCheck, const XMLCh* const typeNameToCheck) const = 0; + virtual bool isTypeDefined(const XMLCh* const uri, const XMLCh* const typeName) const = 0; + + virtual void addSchemaLocation(const XMLCh* uri, VectorOfStrings* locations, StaticContext *context) = 0; + + /** helper functions used to map namespace ids found in the SchemaGrammar **/ + virtual unsigned int getSchemaUriId(const XMLCh* uri) const = 0; + virtual const XMLCh* getSchemaUri(unsigned int id) const = 0; + + virtual Node::Ptr validate(const Node::Ptr &node, ValidationMode valMode, DynamicContext *context) = 0; + + virtual XERCES_CPP_NAMESPACE_QUALIFIER DatatypeValidator* getDatatypeValidator(const XMLCh* uri, const XMLCh* typeName) const = 0; + + virtual XERCES_CPP_NAMESPACE_QUALIFIER ComplexTypeInfo* getComplexTypeInfo(const XMLCh* uri, const XMLCh* typeName) const = 0; + + virtual XERCES_CPP_NAMESPACE_QUALIFIER SchemaElementDecl* getElementDecl(const XMLCh* elementUri, const XMLCh* elementName) const = 0; + + virtual XERCES_CPP_NAMESPACE_QUALIFIER SchemaAttDef* getAttributeDecl(const XMLCh* attributeUri, const XMLCh* attributeName) const = 0; + + virtual DocumentCache *createDerivedCache(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr) const = 0; +}; + +#endif + + + + + + + diff --git a/include/xqilla/schema/DocumentCacheImpl.hpp b/include/xqilla/schema/DocumentCacheImpl.hpp new file mode 100644 index 00000000..20915d4e --- /dev/null +++ b/include/xqilla/schema/DocumentCacheImpl.hpp @@ -0,0 +1,177 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DocumentCacheImpl.hpp,v 1.16 2006/11/01 16:37:17 jpcs Exp $ + */ + +#ifndef _DOCUMENTCACHEIMPL_HPP +#define _DOCUMENTCACHEIMPL_HPP + +#include + +#include +#include +#include +#include +#include + +#include + +class DynamicContext; +class QualifiedName; + +XERCES_CPP_NAMESPACE_BEGIN +class DOMDocument; +class SchemaGrammar; +class XMLGrammarPool; +XERCES_CPP_NAMESPACE_END + +class XQILLA_API XQillaGrammarResolver : public XERCES_CPP_NAMESPACE_QUALIFIER GrammarResolver +{ +public: + XQillaGrammarResolver(XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool* const gramPool, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const manager = XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager); +}; + +// convert errors into exceptions +class XQILLA_API DocumentCacheErrorCatcher : public XERCES_CPP_NAMESPACE_QUALIFIER ErrorHandler +{ +public: + // ErrorHandler interface + + void warning(const XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& toCatch); + void error(const XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& toCatch); + void fatalError(const XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& toCatch); + void resetErrors(); +protected: +}; + +// custom parser to manipulate the schema repository +class XQILLA_API DocumentCacheParser : public XERCES_CPP_NAMESPACE_QUALIFIER XercesDOMParser +{ +public: + DocumentCacheParser(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr, XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool* xmlgr = 0); + DocumentCacheParser(const DocumentCacheParser &parent, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr); + ~DocumentCacheParser(); + + void init(); + + /** Override the creation of the DOM Document, so that we can use our own memory manager */ + virtual void startDocument(); + + /** + * Overload the parse method, to create the document from a different memory manager. + * NB the Grammar info in the tree will still be in the same memory manager as the parser. + */ + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *parseWithContext(const XMLCh* const uri, DynamicContext *context); + /** + * Overload the parse method, to create the document from a different memory manager. + * NB the Grammar info in the tree will still be in the same memory manager as the parser. + */ + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *parseWithContext(const XERCES_CPP_NAMESPACE_QUALIFIER InputSource &source, DynamicContext *context); + + XERCES_CPP_NAMESPACE_QUALIFIER GrammarResolver* getGrammarResolver() const + { + return XercesDOMParser::getGrammarResolver(); + } + + /** Pre parse the schema at the given uri */ + void loadSchema(const XMLCh* const uri, const XMLCh* location, StaticContext *context); + unsigned int getSchemaUriId(const XMLCh* uri) const; + const XMLCh* getSchemaUri(unsigned int id) const; + + XERCES_CPP_NAMESPACE_QUALIFIER SchemaElementDecl* getElementDecl(const XMLCh* elementUri, const XMLCh* elementName) const; + + XERCES_CPP_NAMESPACE_QUALIFIER SchemaAttDef* getAttributeDecl(const XMLCh* attributeUri, const XMLCh* attributeName) const; + + Node::Ptr validate(const Node::Ptr &node, DocumentCache::ValidationMode valMode, DynamicContext *context); + + virtual void error + ( + const unsigned int errCode + , const XMLCh* const msgDomain + , const XERCES_CPP_NAMESPACE_QUALIFIER XMLErrorReporter::ErrTypes errType + , const XMLCh* const errorText + , const XMLCh* const systemId + , const XMLCh* const publicId + , const XMLSSize_t lineNum + , const XMLSSize_t colNum + ); + + static const XMLCh g_szUntyped[]; + +protected: + bool isChildElement( XERCES_CPP_NAMESPACE_QUALIFIER ContentSpecNode *topContentSpec, unsigned int uriId, const XMLCh* localPart ) const; + + DocumentCacheErrorCatcher _errorHandler; + DynamicContext *_context; +}; + +/// The class that performs the (cached) parsing of input documents +class XQILLA_API DocumentCacheImpl : public DocumentCache +{ +public: + DocumentCacheImpl(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr, XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool* xmlgr = 0); + DocumentCacheImpl(const DocumentCacheImpl *parent, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr); + ~DocumentCacheImpl(); + + /** + * Sets the XMLEntityResolver that is used by Xerces when it is used + * to parse documents. This affects the behaviour of XQilla whenever + * it retrieves an XML, DTD or XML Schema grammar. + */ + virtual void setXMLEntityResolver(XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* const handler); + virtual XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* getXMLEntityResolver() const; + + /** load the DOM document from the requested URI (or get it from the cache) */ + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *loadXMLDocument(const XMLCh* Uri, DynamicContext *context); + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *loadXMLDocument(XERCES_CPP_NAMESPACE_QUALIFIER + InputSource& inputSource, DynamicContext *context); + + /* + * returns true if the type represented by uri:typename is an instance of uriToCheck:typeNameToCheck + * + * ie: to check + * xs:integer instance of xs:decimal, + * call + * isTypeOrDerivedFromType("xs", "integer", "xs", "decimal") + * (except of course, call with URIs, not prefixes!) + */ + virtual bool isTypeOrDerivedFromType(const XMLCh* const uri, const XMLCh* const typeName, + const XMLCh* const uriToCheck, const XMLCh* const typeNameToCheck) const; + virtual bool isTypeDefined(const XMLCh* const uri, const XMLCh* const typeName) const; + + virtual void addSchemaLocation(const XMLCh* uri, VectorOfStrings* locations, StaticContext *context); + + /** helper functions used to map namespace ids found in the SchemaGrammar **/ + virtual unsigned int getSchemaUriId(const XMLCh* uri) const; + virtual const XMLCh* getSchemaUri(unsigned int id) const; + + virtual Node::Ptr validate(const Node::Ptr &node, DocumentCache::ValidationMode valMode, DynamicContext *context); + + virtual XERCES_CPP_NAMESPACE_QUALIFIER DatatypeValidator* getDatatypeValidator(const XMLCh* uri, const XMLCh* typeName) const; + + virtual XERCES_CPP_NAMESPACE_QUALIFIER ComplexTypeInfo* getComplexTypeInfo(const XMLCh* uri, const XMLCh* typeName) const; + + virtual XERCES_CPP_NAMESPACE_QUALIFIER SchemaElementDecl* getElementDecl(const XMLCh* elementUri, const XMLCh* elementName) const; + + virtual XERCES_CPP_NAMESPACE_QUALIFIER SchemaAttDef* getAttributeDecl(const XMLCh* attributeUri, const XMLCh* attributeName) const; + + virtual DocumentCache *createDerivedCache(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr) const; + +protected: + DocumentCacheParser _parser; + XERCES_CPP_NAMESPACE_QUALIFIER XMLStringPool* _loadedSchemas; + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* _memMgr; +}; + +#endif + + diff --git a/include/xqilla/schema/SequenceType.hpp b/include/xqilla/schema/SequenceType.hpp new file mode 100644 index 00000000..4ff326bf --- /dev/null +++ b/include/xqilla/schema/SequenceType.hpp @@ -0,0 +1,224 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: SequenceType.hpp,v 1.14 2006/11/01 16:37:17 jpcs Exp $ + */ + +#ifndef _SEQUENCETYPE_HPP +#define _SEQUENCETYPE_HPP + +#include + +#include +#include +#include +#include + +class Item; +class XPath2MemoryManager; + +class XQILLA_API SequenceType : public LocationInfo +{ +public: + + class XQILLA_API ItemType + { + public: + + /** + * The type of item that this sequence can hold. + */ + typedef enum { + TEST_ELEMENT, ///< element node + TEST_ATTRIBUTE, ///< attribute node + TEST_SCHEMA_ELEMENT, ///< element node + TEST_SCHEMA_ATTRIBUTE, ///< attribute node + TEST_NODE, ///< node + TEST_PI, ///< processing instruction node + TEST_COMMENT, ///< comment node + TEST_TEXT, ///< text node + TEST_DOCUMENT, ///< document node + TEST_ANYTHING, ///< any item + TEST_ATOMIC_TYPE ///< the named atomic type or parent's named atomic type if derived through restriction + } ItemTestType; + + ItemType(ItemTestType test, QualifiedName* name=NULL, QualifiedName* type=NULL); + + /** + * Destructor. + */ + ~ItemType(); + + /** + * Getter for m_nTestType + */ + ItemTestType getItemTestType(void) const; + + void setAllowNilled(bool value); + bool getAllowNilled() const; + + QualifiedName *getName(void) const; + QualifiedName *getType(void) const; + + void setName(QualifiedName * name); + void setType(QualifiedName * type); + + void setNameURI(const XMLCh* const nameURI); + void setTypeURI(const XMLCh* const typeURI); + + //Return a URI, firstly the overriding URI string, if not, the URI bond to the QName prefix + const XMLCh* getTypeURI(const StaticContext* context, const LocationInfo *location) const; + const XMLCh* getNameURI(const StaticContext* context, const LocationInfo *location) const; + + void getStaticType(StaticType &st, const StaticContext *context, + bool &isExact, const LocationInfo *location) const; + + bool matches(const Item::Ptr &toBeTested, DynamicContext* context, const LocationInfo *location) const; + bool matches(const Node::Ptr &toBeTested, DynamicContext* context, const LocationInfo *location) const; + bool matchesNameType(const Item::Ptr &toBeTested, DynamicContext* context, const LocationInfo *location) const; + + protected: + + // The ItemTestType of this ItemType + ItemTestType m_nTestType; + + // The name and type to match + QualifiedName* m_pName, * m_pType; + + // The forced URIs for name and type + const XMLCh* m_NameURI, * m_TypeURI; + + // allow elements having the xsi:nil="true" attribute + bool m_bAllowNil; + };//ItemType + + + + /** + * Number of occurrences of the ItemType. + * STAR specifies zero or more occurrences. + * PLUS specifies one or more occurrences. + * QUESTION_MARK specifies zero or one occurrence. + */ + typedef enum + { + EXACTLY_ONE=0, + STAR=1, + PLUS=2, + QUESTION_MARK=3 + } OccurrenceIndicator; + + /** + * Constructor for atomic types + */ + SequenceType(const XMLCh* typeURI,const XMLCh* typeName, OccurrenceIndicator occur, XPath2MemoryManager *mm); + + /** + * Generic constructor. + */ + SequenceType(ItemType* test, OccurrenceIndicator occur = EXACTLY_ONE); + + /** + * Default constructor. + */ + SequenceType(); + + /** + * Destructor. + */ + virtual ~SequenceType(); + + /** + * Setter for m_pItemType. + */ + void setItemType(ItemType* itemType); + + /** + * Setter for m_nOccurrencer. + */ + void setOccurrence(OccurrenceIndicator nOccurrence); + + /** + * Setter for the nameURI + */ + void setNameURI(const XMLCh* const nameURI); + + /** + * Setter for the typeURI + */ + void setTypeURI(const XMLCh* const typeURI); + + //Return a URI, firstly the overriding URI string, if not, the URI bond to the QName prefix + const XMLCh* getTypeURI(const StaticContext* context) const; + const XMLCh* getNameURI(const StaticContext* context) const; + + /** + * Returns a Result that will throw an XPath2TypeMatchException if + * the toBeTested Result doesn't match this SequenceType. + */ + Result matches(const Result &toBeTested, const LocationInfo *location) const; + Result occurrenceMatches(const Result &toBeTested, const LocationInfo *location) const; + Result typeMatches(const Result &toBeTested, const LocationInfo *location) const; + + ASTNode *convertFunctionArg(ASTNode *arg, StaticContext *context, bool numericFunction, + const LocationInfo *location) const; + + QualifiedName *getConstrainingType(void) const; + QualifiedName *getConstrainingName(void) const; + + /** + * Getter for m_pItemType. + */ + ItemType::ItemTestType getItemTestType(void) const; + + /** + * Getter for m_nOccurrence. + */ + OccurrenceIndicator getOccurrenceIndicator(void) const; + + const ItemType *getItemType() const; + + void staticResolution(StaticContext* context) const; + +protected: + + // The ItemType of this SequenceType + ItemType* m_pItemType; + + // The OccurrenceIndicator of this SequenceType + OccurrenceIndicator m_nOccurrence; + + class OccurrenceMatchesResult : public ResultImpl + { + public: + OccurrenceMatchesResult(const Result &parent, const SequenceType *seqType, const LocationInfo *location); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + private: + const SequenceType *_seqType; + Result _parent; + bool _toDo; + }; + + class TypeMatchesResult : public ResultImpl + { + public: + TypeMatchesResult(const Result &parent, const SequenceType *seqType, const LocationInfo *location); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + private: + const SequenceType *_seqType; + Result _parent; + }; +}; + +#endif // _SEQUENCETYPE_HPP diff --git a/include/xqilla/simple-api/XQQuery.hpp b/include/xqilla/simple-api/XQQuery.hpp new file mode 100644 index 00000000..c0653541 --- /dev/null +++ b/include/xqilla/simple-api/XQQuery.hpp @@ -0,0 +1,245 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQQuery.hpp,v 1.16 2006/11/01 16:37:17 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQQuery.h: interface for the XQQuery class. +////////////////////////////////////////////////////////////////////// + +#if !defined(AFXQ_XQUERY_H__FAA9933A_2F10_49A4_93A2_857E2A8C48E3__INCLUDED_) +#define AFXQ_XQUERY_H__FAA9933A_2F10_49A4_93A2_857E2A8C48E3__INCLUDED_ + +#include +#include +#include +#include +#include +#include +#include +#include + +class DynamicContext; +class XQUserFunction; +class XQGlobalVariable; +class XQQuery; + +typedef std::vector > UserFunctions; +typedef std::vector > GlobalVariables; +typedef std::vector > ImportedModules; + +/** + * Encapsulates a query expression. XQQuery objects are thread safe, and can be + * executed from multiple threads at the same time - provided a DynamicContext is + * used per thread. + * + * Instances of this class can be created by using the parsing methods on the XQilla + * object. + * + * This class is dependant on the DynamicContext that was used to create it. This + * context must not be deleted before the XQQuery object. Normally this is acheived + * by the XQQuery adopting the DynamicContext and deleting it when it is deleted. + * However, this behaviour can be disabled by using the XQilla::NO_ADOPT_CONTEXT + * flag when creating the XQQuery. + */ +class XQILLA_API XQQuery : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory +{ +public: + /// Destructor. + ~XQQuery(); + + /** @name Runtime Methods */ + // @{ + + /** + * Creates a DynamicContext based on the static context used to parse this query. + * This DynamicContext will be suitable for using to call execute(). + * + * @param memMgr The memory manager used to create the DynamicContext. + * + * @return An implementation of DynamicContext + */ + DynamicContext *createDynamicContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr = + XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager) const; + + /** + * Executes the query using the given DynamicContext. + * + * @param context The DynamicContext to use to execute the + * query. This contains runtime values for variables, the value + * of the context item, and other relevent information. + * + * @return The Result object - a lazy iterator over the query + * results. + * + * @exception XQException If a runtime error occurs + */ + Result execute(DynamicContext* context) const; + + /** + * Perform static resolution on the query. This operation is not + * thread safe, and should only be performed once. + * + * Static reolution resolves prefixes to namespace URIs, variable + * names to variables, function names to functions, and performs + * some basic query optimisation. + * + * Normally this is done as part of parsing the query expression. + * However, if the XQilla::NO_STATIC_RESOLUTION flag was specified + * when the query was parsed, this method will have to be called to + * perform this step manually. + * + * @param context If specified, the StaticContext to use to statically + * resolve this object. By default, the context used to parse the query + * is used. This should not need to be changed under normal usage. + * + * @exception XQException If a static resolution time error occurs + */ + void staticResolution(StaticContext *context = 0); + + /** + * Perform type calculation and related optimizations. This operation + * is safe to call multiple times. + * + * Normally this step is done as part of static resolution. + * + * @param context If specified, the StaticContext to use to statically + * resolve this object. By default, the context used to parse the query + * is used. This should not need to be changed under normal usage. + * + * @exception XQException If a static resolution time error occurs + */ + void staticTyping(StaticContext *context = 0); + + //@} + + /** @name Query Information */ + // @{ + + /// Returns the expression that was parsed to create this XQQuery object. + const XMLCh* getQueryText() const; + + /// Returns the query plan as XML. This is designed for debug and informative purposes only. + std::string getQueryPlan() const; + + //@} + + /** @name Getters and Setters */ + // @{ + + /// Get the query body as an ASTNode + ASTNode* getQueryBody() const; + /// Set the query body to an ASTNode + void setQueryBody(ASTNode* query); + + /// Adds an XQUserFunction to the query + void addFunction(XQUserFunction* fnDef); + /// Returns a vector of all XQUserFunction objects from the query + const UserFunctions &getFunctions() const { return m_userDefFns; } + + /// Adds a XQGlobalVariable to the query + void addVariable(XQGlobalVariable* varDef); + /// Returns a vector of all XQGlobalVariable objects from the query + const GlobalVariables &getVariables() const { return m_userDefVars; } + + /// Returns a vector of all XQGlobalVariable objects from the query + const ImportedModules &getImportedModules() const { return m_importedModules; } + + /// Returns the name of the file that this query was parsed from. + const XMLCh* getFile() const; + /// Sets the name of the file that this query was parsed from. + void setFile(const XMLCh* file); + + const DynamicContext *getStaticContext() const { return m_context; } + + //@} + + /** @name Module Methods */ + // @{ + + /// Sets whether this query is a module or not + void setIsLibraryModule(bool bIsModule=true); + /// Returns whether this query is a module or not + bool getIsLibraryModule() const; + /// Sets the module target namespace for this query + void setModuleTargetNamespace(const XMLCh* uri); + /// Gets the module taget namespace for this query + const XMLCh* getModuleTargetNamespace() const; + /// Performs a module import from the given target namespace and locations + void importModule(const XMLCh* szUri, VectorOfStrings* locations, StaticContext* context); + + //@} + +private: + void importModuleImpl(const XMLCh* szUri, XERCES_CPP_NAMESPACE_QUALIFIER InputSource* location, StaticContext* context); + + /// Top level lazy result iterator + class QueryResult : public ResultImpl + { + public: + QueryResult(const XQQuery *query); + + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; + + private: + const XQQuery *_query; + Result _parent; + bool _toDo; + }; + + /// Top level debug lazy result iterator + class DebugResult : public LazySequenceResult + { + public: + DebugResult(const XQQuery *query, DynamicContext *context); + + void getResult(Sequence &toFill, DynamicContext *context) const; + std::string asString(DynamicContext *context, int indent) const; + + private: + const XQQuery *_query; + }; + +private: + /// Private constructor - Can be accessed by an XQilla object, as it is a friend. + XQQuery(const XMLCh* queryText, DynamicContext *context, bool contextOwned = false, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr = + XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager); + + XQQuery(const XQQuery &); + XQQuery &operator=(const XQQuery &); + +private: + /// The memory manager used to create this object + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* m_memMgr; + + /// The context used to create this query + DynamicContext *m_context; + bool m_contextOwned; + + ASTNode* m_query; + + bool m_bIsLibraryModule; + const XMLCh* m_szTargetNamespace; + const XMLCh* m_szQueryText; + const XMLCh* m_szCurrentFile; + + UserFunctions m_userDefFns; + GlobalVariables m_userDefVars; + ImportedModules m_importedModules; + + friend class QueryResult; + friend class DebugResult; + friend class XQilla; +}; + +#endif // !defined(AFXQ_XQUERY_H__FAA9933A_2F10_49A4_93A2_857E2A8C48E3__INCLUDED_) diff --git a/include/xqilla/simple-api/XQilla.hpp b/include/xqilla/simple-api/XQilla.hpp new file mode 100644 index 00000000..af6ec9f2 --- /dev/null +++ b/include/xqilla/simple-api/XQilla.hpp @@ -0,0 +1,166 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQilla.hpp,v 1.8.2.1 2006/12/08 15:19:12 jpcs Exp $ + */ + +#ifndef _XQILLA_07637_HPP +#define _XQILLA_07637_HPP + +#include + +#include +#include +#include + +class DynamicContext; +class XQQuery; +class XPath2MemoryManager; + +XERCES_CPP_NAMESPACE_BEGIN +class InputSource; +class XMLBuffer; +XERCES_CPP_NAMESPACE_END + +/** + * Provides factory methods for creating XQQuery and DynamicContext objects. + * + * This class calls XQillaPlatformUtils::initialize() when it is constructed, and + * XQillaPlatformUtils::terminate() when it destructs, so there is no need to seperately + * initialize or terminate either Xerces or XQilla. + */ +class XQILLA_API XQilla : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory +{ +public: + /// Flags used by the XQilla methods. These are used by bitwise OR-ing (|) their values together. + enum Flags { + NO_STATIC_RESOLUTION = 0x1, ///< Don't perform static resolution + NO_ADOPT_CONTEXT = 0x2 ///< Don't adopt the context and delete it when the XQQuery is deleted + }; + + /// Enumeration used to select a language to parse + enum Language { + XQUERY, ///< Parse an XQuery expression + XPATH2, ///< Parse an XPath 2.0 expression + XQUERY_FULLTEXT, ///< Parse an XQuery Full-Text expression + XPATH2_FULLTEXT ///< Parse an XPath 2.0 Full-Text expression + }; + + /** + * Constructs the object. In the process, XQillaPlatformUtils::initialize() is + * called to initialize XQilla and Xerces. + * + * @param memMgr If provided, this is the MemoryManager used to initialize Xerces. + */ + XQilla(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr = 0); + + /** + * Destructs the object. In the process, XQillaPlatformUtils::terminate() is + * called to terminate XQilla and Xerces. + */ + ~XQilla(); + + /** @name Parsing Methods */ + // @{ + + /** + * Parse the expression contained in the given query string. + * + * @param query A string containing the expression to parse. + * @param language The language to parse the string as. Defaults to XQUERY. + * @param context If specified, the context to use for parsing this expression. A + * default context is used if this parameter is 0. + * @param queryFile The name of the file that query originates in. This is passed + * back to the user in an XQException if an error occurs. + * @param flags A bitwise OR of the Flags constants, that control aspects of how + * the XQQuery object is created. + * @param memMgr If specified, the memory manager used to create the XQQuery object. + * + * @return The object that represents the parsed expression. + * + * @exception XQException If a parse error occurs. + */ + static XQQuery* parse(const XMLCh* query, + Language language = XQUERY, + DynamicContext* context = 0, + const XMLCh* queryFile = NULL, + unsigned int flags = 0, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr = + XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager); + + /** + * Parse the expression from the given InputSource. + * + * @param querySrc An InputSource which the expression will be parsed from. + * @param language The language to parse the string as. Defaults to XQUERY. + * @param context If specified, the context to use for parsing this expression. A + * default context is used if this parameter is 0. + * @param flags A bitwise OR of the Flags constants, that control aspects of how + * the XQQuery object is created. + * @param memMgr If specified, the memory manager used to create the XQQuery object. + * + * @return The object that represents the parsed expression. + * + * @exception XQException If a parse error occurs. + */ + static XQQuery* parse(const XERCES_CPP_NAMESPACE_QUALIFIER InputSource& querySrc, + Language language = XQUERY, + DynamicContext* context = 0, + unsigned int flags = 0, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr = + XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager); + + /** + * Parse the expression residing at the given URL. + * + * @param queryFile The URL of the expression to parse. + * @param language The language to parse the string as. Defaults to XQUERY. + * @param context If specified, the context to use for parsing this expression. A + * default context is used if this parameter is 0. + * @param flags A bitwise OR of the Flags constants, that control aspects of how + * the XQQuery object is created. + * @param memMgr If specified, the memory manager used to create the XQQuery object. + * + * @return The object that represents the parsed expression. + * + * @exception XQException If a parse error occurs. + */ + static XQQuery* parseFromURI(const XMLCh* queryFile, + Language language = XQUERY, + DynamicContext* context = 0, + unsigned int flags = 0, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr = + XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager); + + //@} + + /** @name Factory Methods */ + // @{ + + /** + * Creates a context suitable for parsing an expression with. + * @param memMgr The memory manager used to create the DynamicContext. + * @return An implementation of DynamicContext + */ + static DynamicContext *createContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr = + XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager); + + //@} + +private: + static bool readQuery(const XMLCh* queryFile, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr, + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer& queryText); + static bool readQuery(const XERCES_CPP_NAMESPACE_QUALIFIER InputSource& querySrc, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr, + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer& queryText); +}; + +#endif diff --git a/include/xqilla/utils/ContextUtils.hpp b/include/xqilla/utils/ContextUtils.hpp new file mode 100644 index 00000000..cd0bf1ab --- /dev/null +++ b/include/xqilla/utils/ContextUtils.hpp @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ContextUtils.hpp,v 1.7 2006/11/01 16:37:17 jpcs Exp $ + */ + +#ifndef __CONTEXTUTILS_HPP +#define __CONTEXTUTILS_HPP + +#include + +class XQILLA_API ContextUtils +{ +public: + static int getTimezone(); +}; + +#endif //__CONTEXTUTILS_HPP + diff --git a/include/xqilla/utils/NumUtils.hpp b/include/xqilla/utils/NumUtils.hpp new file mode 100644 index 00000000..b0fd878e --- /dev/null +++ b/include/xqilla/utils/NumUtils.hpp @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: NumUtils.hpp,v 1.7 2006/11/01 16:37:17 jpcs Exp $ + */ + +#ifndef _NUMUTILS_HPP +#define _NUMUTILS_HPP + +#include + +#include + +class XPath2MemoryManager; + +/** class with static methods for dealing with floating point numbers */ +class XQILLA_API NumUtils +{ +public: + /** return MAPM to int */ + static int MAPMtoInt(MAPM m); + + /** return MAPM to double */ + static double MAPMtoDouble(MAPM m); +}; + +#endif // _NUMUTILS_HPP + diff --git a/include/xqilla/utils/PrintAST.hpp b/include/xqilla/utils/PrintAST.hpp new file mode 100644 index 00000000..243f5a0d --- /dev/null +++ b/include/xqilla/utils/PrintAST.hpp @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: PrintAST.hpp,v 1.9 2006/11/01 16:37:17 jpcs Exp $ + */ + +#ifndef __PRINTAST_HPP +#define __PRINTAST_HPP + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class XQillaExpression; +class XQFunction; +class ASTNodeImpl; +class XQLiteral; +class XQNav; +class XQParenthesizedExpr; +class XQSequence; +class XQStep; +class XQVariable; +class XQIf; +class XQInstanceOf; +class XQCastableAs; +class XQCastAs; +class XQTreatAs; +class XQOperator; +class XQContextItem; +class XQQuery; +class XQDebugHook; +class XQDOMConstructor; +class XQFLWOR; +class XQVariableBinding; +class XQSort; +class XQQuantified; +class XQFunctionCall; +class XQGlobalVariable; +class XQValidate; +class XQOrderingChange; +class XQAtomize; +class XPath1CompatConvertFunctionArg; +class XQPromoteUntyped; +class XQPromoteNumeric; +class XQPromoteAnyURI; +class XQDocumentOrder; +class XQPredicate; +class DynamicContext; +class Item; +class FTContains; +class FTSelection; +class FTWords; +class FTWord; +class FTOr; +class FTAnd; +class FTMildnot; +class FTUnaryNot; +class FTOrder; +class FTDistance; +class FTDistanceLiteral; +class FTScope; +class FTContent; +class FTWindow; +class FTWindowLiteral; + +class XQILLA_API PrintAST +{ +public: + virtual ~PrintAST() {} + + static std::string print(const XQillaExpression *expr, const DynamicContext *context, int indent = 0); + static std::string print(const XQQuery *query, const DynamicContext *context, int indent = 0); + static std::string print(const ASTNode *item, const DynamicContext *context, int indent = 0); + + virtual std::string printASTNode(const ASTNode *item, const DynamicContext *context, int indent = 0); + virtual std::string printFunction(const XQFunction *item, const DynamicContext *context, int indent); + virtual std::string printLiteral(const XQLiteral *item, const DynamicContext *context, int indent); + virtual std::string printNav(const XQNav *item, const DynamicContext *context, int indent); + virtual std::string printParenthesized(const XQParenthesizedExpr *item, const DynamicContext *context, int indent); + virtual std::string printSequence(const XQSequence *item, const DynamicContext *context, int indent); + virtual std::string printStep(const XQStep *item, const DynamicContext *context, int indent); + virtual std::string printVariable(const XQVariable *item, const DynamicContext *context, int indent); + virtual std::string printIf(const XQIf *item, const DynamicContext *context, int indent); + virtual std::string printInstanceOf(const XQInstanceOf *item, const DynamicContext *context, int indent); + virtual std::string printCastableAs(const XQCastableAs *item, const DynamicContext *context, int indent); + virtual std::string printCastAs(const XQCastAs *item, const DynamicContext *context, int indent); + virtual std::string printTreatAs(const XQTreatAs *item, const DynamicContext *context, int indent); + virtual std::string printOperator(const XQOperator *item, const DynamicContext *context, int indent); + virtual std::string printContextItem(const XQContextItem *item, const DynamicContext *context, int indent); + virtual std::string printDebugHook(const XQDebugHook *item, const DynamicContext *context, int indent); + virtual std::string printFLWOR(const XQFLWOR *item, const DynamicContext *context, int indent); + virtual std::string printFLWORQuantified(const XQQuantified *item, const DynamicContext *context, int indent); + virtual std::string printTypeswitch(const XQTypeswitch *item, const DynamicContext *context, int indent); + virtual std::string printValidate(const XQValidate *item, const DynamicContext *context, int indent); + virtual std::string printGlobal(const XQGlobalVariable *item, const DynamicContext *context, int indent); + virtual std::string printFunctionCall(const XQFunctionCall *item, const DynamicContext *context, int indent); + virtual std::string printDOMConstructor(const XQDOMConstructor *item, const DynamicContext *context, int indent); + virtual std::string printOrderingChange(const XQOrderingChange *item, const DynamicContext *context, int indent); + virtual std::string printAtomize(const XQAtomize *item, const DynamicContext *context, int indent); + virtual std::string printXPath1CompatConvertFunctionArg(const XPath1CompatConvertFunctionArg *item, const DynamicContext *context, int indent); + virtual std::string printPromoteUntyped(const XQPromoteUntyped *item, const DynamicContext *context, int indent); + virtual std::string printPromoteNumeric(const XQPromoteNumeric *item, const DynamicContext *context, int indent); + virtual std::string printPromoteAnyURI(const XQPromoteAnyURI *item, const DynamicContext *context, int indent); + virtual std::string printDocumentOrder(const XQDocumentOrder *item, const DynamicContext *context, int indent); + virtual std::string printPredicate(const XQPredicate *item, const DynamicContext *context, int indent); + virtual std::string printUserFunction(const XQUserFunction::XQFunctionEvaluator *item, const DynamicContext *context, int indent); + + virtual std::string printFTContains(const FTContains *item, const DynamicContext *context, int indent); + virtual std::string printFTSelection(const FTSelection *selection, const DynamicContext *context, int indent); + virtual std::string printFTWords(const FTWords *selection, const DynamicContext *context, int indent); + virtual std::string printFTWord(const FTWord *selection, const DynamicContext *context, int indent); + virtual std::string printFTOr(const FTOr *selection, const DynamicContext *context, int indent); + virtual std::string printFTAnd(const FTAnd *selection, const DynamicContext *context, int indent); + virtual std::string printFTMildnot(const FTMildnot *selection, const DynamicContext *context, int indent); + virtual std::string printFTUnaryNot(const FTUnaryNot *selection, const DynamicContext *context, int indent); + virtual std::string printFTOrder(const FTOrder *selection, const DynamicContext *context, int indent); + virtual std::string printFTDistance(const FTDistance *selection, const DynamicContext *context, int indent); + virtual std::string printFTDistanceLiteral(const FTDistanceLiteral *selection, const DynamicContext *context, int indent); + virtual std::string printFTScope(const FTScope *selection, const DynamicContext *context, int indent); + virtual std::string printFTContent(const FTContent *selection, const DynamicContext *context, int indent); + virtual std::string printFTWindow(const FTWindow *selection, const DynamicContext *context, int indent); + virtual std::string printFTWindowLiteral(const FTWindowLiteral *selection, const DynamicContext *context, int indent); + + virtual std::string printFTRange(const FTRange &range, const DynamicContext *context, int indent); + + virtual std::string printItem(const Item::Ptr item, const DynamicContext *context, int indent); + virtual std::string printSequenceType(const SequenceType *type, const DynamicContext *context, int indent); + virtual std::string printItemTypeAttrs(const SequenceType::ItemType *type, const DynamicContext *context); + virtual std::string printXQVariableBinding(const XQVariableBinding *binding, const DynamicContext *context, int indent); + virtual std::string printSort(const XQSort *sort, const DynamicContext *context, int indent); + virtual std::string printClause(const XQTypeswitch::Clause *clause, const DynamicContext *context, int indent); + + static std::string getIndent(int indent); + static std::string getAxisName(XQStep::Axis axis); + static std::string getItemTestTypeName(int type); + static std::string getOccurrenceIndicatorName(SequenceType::OccurrenceIndicator oi); + static std::string getComparisonOperationName(GeneralComp::ComparisonOperation co); + static std::string getFTUnitName(FTOption::FTUnit unit); + static std::string getFTRangeTypeName(FTRange::Type type); +}; + +#endif diff --git a/include/xqilla/utils/UCANormalizer.hpp b/include/xqilla/utils/UCANormalizer.hpp new file mode 100644 index 00000000..ded6799e --- /dev/null +++ b/include/xqilla/utils/UCANormalizer.hpp @@ -0,0 +1,152 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: UCANormalizer.hpp,v 1.2 2006/11/01 16:37:17 jpcs Exp $ + */ + +#if !defined(AFXQ_NORMALIZER_H__6BA76C4A_0A5B_480B_9870_86A89A118100__INCLUDED_) +#define AFXQ_NORMALIZER_H__6BA76C4A_0A5B_480B_9870_86A89A118100__INCLUDED_ + +#include +#include +#include + +/// +class XQILLA_API StringTransform +{ +public: + virtual ~StringTransform() {} + + virtual void pushChar(unsigned int ch) = 0; +}; + +/// +class XQILLA_API NormalizeTransform : public StringTransform +{ +public: + NormalizeTransform(bool canonical, bool compose, StringTransform *destination) + : canonical_(canonical), compose_(compose), dest_(destination) {} + + virtual void pushChar(unsigned int ch); + +private: + void getRecursiveDecomposition(unsigned int ch); + bool decomposeHangul(unsigned int s); + unsigned int *getDecomposition(unsigned int ch); + + void composeCache(); + static unsigned int composeHangul(unsigned int first, unsigned int second); + static unsigned int getComposition(unsigned int first, unsigned int second); + + static unsigned int getCanonicalCombiningClass(unsigned int ch); + + bool canonical_, compose_; + StringTransform *dest_; + std::vector cache_; +}; + +/// +class XQILLA_API RemoveDiacriticsTransform : public StringTransform +{ +public: + RemoveDiacriticsTransform(StringTransform *destination) + : dest_(destination) {} + + virtual void pushChar(unsigned int ch); + +private: + static bool isDiacritic(unsigned int ch); + + StringTransform *dest_; +}; + +/// +class XQILLA_API CaseFoldTransform : public StringTransform +{ +public: + CaseFoldTransform(StringTransform *destination) + : dest_(destination) {} + + virtual void pushChar(unsigned int ch); + +private: + static unsigned int *getCaseFold(unsigned int ch); + + StringTransform *dest_; +}; + +/// +class XQILLA_API LowerCaseTransform : public StringTransform +{ +public: + LowerCaseTransform(StringTransform *destination) + : dest_(destination) {} + + virtual void pushChar(unsigned int ch); + +private: + static unsigned int *getLowerCase(unsigned int ch); + + StringTransform *dest_; +}; + +/// +class XQILLA_API UpperCaseTransform : public StringTransform +{ +public: + UpperCaseTransform(StringTransform *destination) + : dest_(destination) {} + + virtual void pushChar(unsigned int ch); + +private: + static unsigned int *getUpperCase(unsigned int ch); + + StringTransform *dest_; +}; + +/// +class XQILLA_API XMLBufferTransform : public StringTransform +{ +public: + XMLBufferTransform(XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &buffer) + : buffer_(buffer) {} + + virtual void pushChar(unsigned int ch); + +private: + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &buffer_; +}; + +/// +class XQILLA_API StringTransformer +{ +public: + static void transformUTF16(const XMLCh *source, StringTransform *transform); +}; + +/// +class XQILLA_API Normalizer +{ +public: + static void normalizeC(const XMLCh* source, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &dest); + static void normalizeD(const XMLCh* source, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &dest); + static void normalizeKC(const XMLCh* source, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &dest); + static void normalizeKD(const XMLCh* source, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &dest); + + static void removeDiacritics(const XMLCh* source, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &dest); + static void caseFold(const XMLCh* source, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &dest); + static void caseFoldAndRemoveDiacritics(const XMLCh* source, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &dest); + + static void lowerCase(const XMLCh* source, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &dest); + static void upperCase(const XMLCh* source, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &dest); +}; + +#endif // !defined(AFXQ_NORMALIZER_H__6BA76C4A_0A5B_480B_9870_86A89A118100__INCLUDED_) diff --git a/include/xqilla/utils/UTF8Str.hpp b/include/xqilla/utils/UTF8Str.hpp new file mode 100644 index 00000000..aa893312 --- /dev/null +++ b/include/xqilla/utils/UTF8Str.hpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: UTF8Str.hpp,v 1.7 2006/11/01 16:37:17 jpcs Exp $ + */ + +#ifndef _UTF8STR_HPP +#define _UTF8STR_HPP + +#include +#include + +#include + +class XQILLA_API UTF8Str +{ +public : + UTF8Str(const XMLCh* const toTranscode); + ~UTF8Str() + { + delete [] fUTF8Form; + } + + const char* UTF8Form() const + { + return (char*)fUTF8Form; + } + +private : + XMLByte *fUTF8Form; +}; + +#define UTF8(str) UTF8Str(str).UTF8Form() + +#endif diff --git a/include/xqilla/utils/XMLChCompare.hpp b/include/xqilla/utils/XMLChCompare.hpp new file mode 100644 index 00000000..712a6dcc --- /dev/null +++ b/include/xqilla/utils/XMLChCompare.hpp @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XMLChCompare.hpp,v 1.7 2006/11/01 16:37:17 jpcs Exp $ + */ + +#ifndef _XMLCHCOMPARE_HPP +#define _XMLCHCOMPARE_HPP + +#include +#include +#include + +class XQILLA_API QNameSort { +public: + bool operator() (const std::pair lhs, const std::pair rhs) const; +}; + +class XQILLA_API XMLChSort { +public: + bool operator() (const XMLCh* lhs, const XMLCh* rhs) const; +}; + +#endif diff --git a/include/xqilla/utils/XPath2NSUtils.hpp b/include/xqilla/utils/XPath2NSUtils.hpp new file mode 100644 index 00000000..86b9c4ae --- /dev/null +++ b/include/xqilla/utils/XPath2NSUtils.hpp @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XPath2NSUtils.hpp,v 1.7 2006/11/01 16:37:17 jpcs Exp $ + */ + +#ifndef _V2NSUTILS_HPP +#define _V2NSUTILS_HPP + +#include +#include + +#include +#include +#include +#include +#include + +class DynamicContext; +class Sequence; +class XPath2MemoryManager; + +typedef std::map namespaceMapType; + +class XQILLA_API XPath2NSUtils +{ +public: + + /// Get the proper local name (not null if the node is DOM level 1...) + static const XMLCh* getLocalName(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node); + static const XMLCh* getLocalName(const XMLCh* name); + + ///returns the prefix part of a xs:foo string or a zero length string if no prefix + static const XMLCh* getPrefix(const XMLCh* name, XPath2MemoryManager* memMgr); + ///does it's best to work out a prefix for the given node. Returns empty string if no prefix. + static const XMLCh* getPrefix(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node, const DynamicContext* context); + + ///returns the element node that is the parent or owner of node + static const XERCES_CPP_NAMESPACE_QUALIFIER DOMElement *returnOwnerElement(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node); + + ///form a qualified name from a namespace and a name + static const XMLCh* qualifyName(const XMLCh* prefix, const XMLCh* name, XPath2MemoryManager* memMgr); + /**Gives you a QName for the node given. Namespace resolving is done via + the context */ + static const XMLCh* qualifyName(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node, const DynamicContext* context); + + static const XMLCh* getExpandedName(const XMLCh* namespaceURI, const XMLCh* name, XPath2MemoryManager* memMgr); + + ///gets the owner element of an attribute, and the parent of any other node + static XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *getParent(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node); + + //Code below previously used in XPathNSResolver + + ///looks up the tree at the namespace attrs and the perfixs of the elements and returns a map of prefix->uri + static namespaceMapType createNamespaceMap(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, XPath2MemoryManager* memMgr); + + ///helper method for createNamespaceMap + static void addBindings(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *AttrNode, namespaceMapType *namespaceMap, XPath2MemoryManager* memMgr); + + static std::vector< std::pair< XMLCh*, XMLCh*> > getBindingsForNode(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node); +}; + +#endif + diff --git a/include/xqilla/utils/XPath2Utils.hpp b/include/xqilla/utils/XPath2Utils.hpp new file mode 100644 index 00000000..23714355 --- /dev/null +++ b/include/xqilla/utils/XPath2Utils.hpp @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XPath2Utils.hpp,v 1.11 2006/11/01 16:37:17 jpcs Exp $ + */ + +#ifndef _XPATH2UTILS_HPP +#define _XPATH2UTILS_HPP + +#include + +#include + +class XPath2MemoryManager; + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + class DOMAttr; + class DOMElement; +XERCES_CPP_NAMESPACE_END + +/**class with methods that are used by v2 that are DOM related*/ +class XQILLA_API XPath2Utils +{ +public: + + /** + * Escape a URI. Boolean says escape reserved chars. + * + * NOTE: The returned buffer is dynamically allocated and is the + * responsibility of the caller to delete it when not longer needed. + */ + static const XMLCh* escapeURI(const XMLCh* const str, bool escapeRes, XPath2MemoryManager* memMgr); + static bool isValidURI(const XMLCh* const str, XPath2MemoryManager* memMgr); + + static const XMLCh* concatStrings(const XMLCh* src1, const XMLCh srcChar, XPath2MemoryManager* memMgr); + static const XMLCh* concatStrings(const XMLCh* src1, const XMLCh* src2, XPath2MemoryManager* memMgr); + static const XMLCh* concatStrings(const XMLCh* src1 ,const XMLCh* src2, const XMLCh* src3, XPath2MemoryManager* memMgr); + + static const XMLCh* asStr(const XMLCh src, XPath2MemoryManager* memMgr); + + static bool equals(const XMLCh *const str1, const XMLCh *const str2); + static int compare(const XMLCh *str1, const XMLCh *str2); + + /** + * Return the specified substring. + */ + static const XMLCh* subString( const XMLCh* srcStr, unsigned int offset, unsigned int count, XPath2MemoryManager* memMgr); + + static const XMLCh* deleteData( const XMLCh* const target, unsigned int offset, unsigned int count, XPath2MemoryManager* memMgr ); + + static const XMLCh* toLower(const XMLCh* const target, XPath2MemoryManager* memMgr); + + static const XMLCh* toUpper(const XMLCh* const target, XPath2MemoryManager* memMgr); + + static const XMLCh* toCollapsedWS(const XMLCh* const target, XPath2MemoryManager* memMgr); + + static const XMLCh* normalizeEOL(const XMLCh* const src, XPath2MemoryManager* memMgr); + + /*** + * Extract the individual values from a list of whitespace separated + * values (values) and puts them into valList. + */ + static std::vector getVal(const XMLCh* values, XPath2MemoryManager* memMgr); + + /* Determine whether or not an XMLCh* is contained within a vector of XMLCh's */ + static bool containsString(std::vector values, const XMLCh* val); + + /** Obtain index of node with respect to it's siblings of same name */ + static int indexNode(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node); + + /** Gets the owner document for the given node */ + static const XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *getOwnerDoc(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node); + + /** Assign the given type to the DOMElement */ + static void setElementType(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* pDoc, XERCES_CPP_NAMESPACE_QUALIFIER DOMElement *node, const XMLCh* uri, const XMLCh* name); + + /** Copy the type informations from a node to another*/ + static void copyElementType(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* pDoc, XERCES_CPP_NAMESPACE_QUALIFIER DOMElement* destNode, const XERCES_CPP_NAMESPACE_QUALIFIER DOMElement* srcNode); + static void copyAttributeType(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* pDoc, XERCES_CPP_NAMESPACE_QUALIFIER DOMAttr* destNode, const XERCES_CPP_NAMESPACE_QUALIFIER DOMAttr* srcNode); +}; + +inline bool XPath2Utils::equals(const XMLCh *const str1, const XMLCh *const str2) { + if(str1 == str2) return true; + + if(str1 == 0) return *str2 == 0; // str2 == 0 is handled by the first line + if(str2 == 0) return *str1 == 0; // str1 == 0 is handled by the first line + + register const XMLCh* psz1 = str1; + register const XMLCh* psz2 = str2; + + while(*psz1 == *psz2) { + // If either has ended, then they both ended, so equal + if(*psz1 == 0) + return true; + + // Move upwards for the next round + ++psz1; + ++psz2; + } + return false; +} + +inline int XPath2Utils::compare(const XMLCh *str1, const XMLCh *str2) { + if(str1 == str2) return 0; + + if(str1 == 0) return -*str2; // str2 == 0 is handled by the first line + if(str2 == 0) return *str1; // str1 == 0 is handled by the first line + + register int cmp; + while((cmp = *str1 - *str2) == 0) { + // If either has ended, then they both ended, so equal + if(*str1 == 0) break; + + // Move upwards for the next round + ++str1; + ++str2; + } + return cmp; +} + +inline const XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *XPath2Utils::getOwnerDoc(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node) { + if(node->getNodeType() == XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::DOCUMENT_NODE) { + return (XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument*)node; + } + else { + return node->getOwnerDocument(); + } +} + +#endif + diff --git a/include/xqilla/utils/XQillaPlatformUtils.hpp b/include/xqilla/utils/XQillaPlatformUtils.hpp new file mode 100644 index 00000000..e449c269 --- /dev/null +++ b/include/xqilla/utils/XQillaPlatformUtils.hpp @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQillaPlatformUtils.hpp,v 1.8 2006/11/01 16:37:17 jpcs Exp $ + */ + +#ifndef _XQILLAPLATFORMUTILS_HPP +#define _XQILLAPLATFORMUTILS_HPP + +#include + +#include +XERCES_CPP_NAMESPACE_BEGIN +class MemoryManager; +XERCES_CPP_NAMESPACE_END + +/** + * Static utility methods for initializing and terminating the XQilla + * and Xerces environments. + */ +class XQILLA_API XQillaPlatformUtils +{ +public: + + /** + * Perform XQilla initialization + * + * Initialization should be called first in any user code. + * + * Initializes Xerces and adds its own DOMImplementation to the registry + */ + static void initialize(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr = 0); + + /** + * Perform XQilla termination + * + * Terminates Xerces + */ + static void terminate(); + + /** + * Enable/disable extended precision in numeric items + * + * When disabled, xs:decimal values will hold only 18 digits, xs:float 7 digits and xs:double 15 digits + * as mandated + */ + static void enableExtendedPrecision(bool bEnable); + +}; +#endif + diff --git a/include/xqilla/utils/XStr.hpp b/include/xqilla/utils/XStr.hpp new file mode 100644 index 00000000..ec273aa3 --- /dev/null +++ b/include/xqilla/utils/XStr.hpp @@ -0,0 +1,44 @@ +#ifndef _XSTR_HPP +#define _XSTR_HPP + +#include +#include + +// From Xerces 2.0 + +// --------------------------------------------------------------------------- +// This is a simple class that lets us do easy (though not terribly efficient) +// trancoding of char* data to XMLCh data. +// --------------------------------------------------------------------------- + +class XQILLA_API XStr +{ +public : + // ----------------------------------------------------------------------- + // Constructors and Destructor + // ----------------------------------------------------------------------- + XStr(const char* const toTranscode); + ~XStr(); + + + // ----------------------------------------------------------------------- + // Getter methods + // ----------------------------------------------------------------------- + const XMLCh* unicodeForm() const + { + return fUnicodeForm; + } + +private : + // ----------------------------------------------------------------------- + // Private data members + // + // fUnicodeForm + // This is the Unicode XMLCh format of the string. + // ----------------------------------------------------------------------- + XMLCh* fUnicodeForm; +}; + +#define X(str) XStr(str).unicodeForm() + +#endif diff --git a/include/xqilla/xqilla-dom3.hpp b/include/xqilla/xqilla-dom3.hpp new file mode 100644 index 00000000..b0fa5fe8 --- /dev/null +++ b/include/xqilla/xqilla-dom3.hpp @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: xqilla-dom3.hpp,v 1.4 2006/11/01 16:37:11 jpcs Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/include/xqilla/xqilla-simple.hpp b/include/xqilla/xqilla-simple.hpp new file mode 100644 index 00000000..b5a72614 --- /dev/null +++ b/include/xqilla/xqilla-simple.hpp @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: xqilla-simple.hpp,v 1.6 2006/11/01 16:37:11 jpcs Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include diff --git a/include/xqilla/xqts/TestSuiteParser.hpp b/include/xqilla/xqts/TestSuiteParser.hpp new file mode 100644 index 00000000..240217e3 --- /dev/null +++ b/include/xqilla/xqts/TestSuiteParser.hpp @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: TestSuiteParser.hpp,v 1.9 2006/11/01 16:37:17 jpcs Exp $ + */ + +#ifndef _TESTSUITEPARSERHANDLER_HPP +#define _TESTSUITEPARSERHANDLER_HPP + +#include +#include +#include + +#include +#include + +#include + +class TestSuiteRunner; + +class XQILLA_API TestCase +{ +public: + std::string name; + std::string queryURL; + std::string query; + std::string contextItem; + std::string defaultCollection; + std::map inputURIVars; + std::map inputVars; + std::map extraVars; + std::map outputFiles; + std::list > moduleFiles; + std::list expectedErrors; +}; + +class XQILLA_API TestSuiteParser : private XERCES_CPP_NAMESPACE_QUALIFIER DefaultHandler +{ +public: + TestSuiteParser(const std::string &pathToTestSuite, TestSuiteRunner *runner); + + void run(); + +private: + virtual void startElement + ( + const XMLCh* const uri, + const XMLCh* const localname, + const XMLCh* const qname, + const XERCES_CPP_NAMESPACE_QUALIFIER Attributes& attrs + ); + virtual void endElement + ( + const XMLCh* const uri, + const XMLCh* const localname, + const XMLCh* const qname + ); + virtual void characters + ( + const XMLCh* const chars, + const unsigned int length + ); + + virtual void error(const XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& exc); + virtual void fatalError(const XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& exc); + +private: + TestSuiteRunner *m_runner; + + XERCES_CPP_NAMESPACE_QUALIFIER XMLURL m_urlXQTSDirectory, m_urlXQTSQueriesDirectory, m_urlXQTSResultsDirectory, + m_urlBasePath, m_urlBasePathReferenceFiles, m_urlQuery; + + bool m_bReadingChars; + std::string m_szChars; + + std::string m_szVariableBoundToInput, m_szCompareMethod, m_szNamespace, m_szCollectionID; + + TestCase m_testCase; +}; + +#endif diff --git a/include/xqilla/xqts/TestSuiteResultListener.hpp b/include/xqilla/xqts/TestSuiteResultListener.hpp new file mode 100644 index 00000000..a6adb114 --- /dev/null +++ b/include/xqilla/xqts/TestSuiteResultListener.hpp @@ -0,0 +1,174 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: TestSuiteResultListener.hpp,v 1.12 2006/11/01 16:37:17 jpcs Exp $ + */ + +#ifndef _TESTSUITERESULTLISTENER_HPP +#define _TESTSUITERESULTLISTENER_HPP + +#include +#include +#include +#include +#include + +#include + +class TestCase; + +class XQILLA_API TestSuiteResultListener +{ +public: + virtual ~TestSuiteResultListener() {} + + virtual void reportVersion(const std::string &version) {} + + virtual void startTestGroup(const std::string &name) = 0; + virtual void endTestGroup() = 0; + + virtual void reportPass(const TestCase &testCase, const std::string &comment) = 0; + virtual void reportInspect(const TestCase &testCase, const std::string &actualResult, + const std::list &expectedResult, const std::string &comment) = 0; + virtual void reportSkip(const TestCase &testCase, const std::string &comment) = 0; + virtual void reportFail(const TestCase &testCase, const std::string &actualResult, + const std::list &expectedResult, const std::string &comment) = 0; + virtual void reportFailNoError(const TestCase &testCase, const std::string &actualResult, + const std::string &comment) = 0; + virtual void reportFailUnexpectedError(const TestCase &testCase, const std::string &unexpectedError, + const std::string &comment) = 0; + +protected: + TestSuiteResultListener() {} +}; + +class XQILLA_API KnownErrorChecker : public TestSuiteResultListener +{ +public: + KnownErrorChecker(TestSuiteResultListener *results); + + virtual void startTestGroup(const std::string &name); + virtual void endTestGroup(); + + virtual void reportPass(const TestCase &testCase, const std::string &comment); + virtual void reportInspect(const TestCase &testCase, const std::string &actualResult, + const std::list &expectedResult, const std::string &comment); + virtual void reportSkip(const TestCase &testCase, const std::string &comment); + virtual void reportFail(const TestCase &testCase, const std::string &actualResult, + const std::list &expectedResult, const std::string &comment); + virtual void reportFailNoError(const TestCase &testCase, const std::string &actualResult, + const std::string &comment); + virtual void reportFailUnexpectedError(const TestCase &testCase, const std::string &unexpectedError, + const std::string &comment); + + bool printReport() const; + + bool loadErrors(const std::string &errorFile); + bool saveErrors(const std::string &errorFile) const; + + class Error { + public: + std::string reason; + std::string comment; + std::string action; + }; + +private: + TestSuiteResultListener *results_; + + // testName -> (reason, comment, action) + std::map errors_; + std::vector nowPass_; + std::vector nowFail_; +}; + +class XQILLA_API ConsoleResultListener : public TestSuiteResultListener +{ +public: + ConsoleResultListener(); + + virtual void startTestGroup(const std::string &name); + virtual void endTestGroup(); + + virtual void reportPass(const TestCase &testCase, const std::string &comment); + virtual void reportInspect(const TestCase &testCase, const std::string &actualResult, + const std::list &expectedResult, const std::string &comment); + virtual void reportSkip(const TestCase &testCase, const std::string &comment); + virtual void reportFail(const TestCase &testCase, const std::string &actualResult, + const std::list &expectedResult, const std::string &comment); + virtual void reportFailNoError(const TestCase &testCase, const std::string &actualResult, + const std::string &comment); + virtual void reportFailUnexpectedError(const TestCase &testCase, const std::string &unexpectedError, + const std::string &comment); + + bool printReport() const; + +private: + void testCaseToErrorStream(const TestCase &testCase); + +private: + std::string m_szFullTestName; + + unsigned int m_nTotalTests, m_nPassedTests, m_nSkippedTests, m_nInspectTests; + + int testDepth_; + bool needNewline_; + + std::ostringstream errorStream_; +}; + +class XQILLA_API XMLReportResultListener : public TestSuiteResultListener +{ +public: + XMLReportResultListener(); + + virtual void reportVersion(const std::string &version) { version_ = version; } + + virtual void startTestGroup(const std::string &name); + virtual void endTestGroup(); + + virtual void reportPass(const TestCase &testCase, const std::string &comment); + virtual void reportInspect(const TestCase &testCase, const std::string &actualResult, + const std::list &expectedResult, const std::string &comment); + virtual void reportSkip(const TestCase &testCase, const std::string &comment); + virtual void reportFail(const TestCase &testCase, const std::string &actualResult, + const std::list &expectedResult, const std::string &comment); + virtual void reportFailNoError(const TestCase &testCase, const std::string &actualResult, + const std::string &comment); + virtual void reportFailUnexpectedError(const TestCase &testCase, const std::string &unexpectedError, + const std::string &comment); + + void setImplementation(const std::string &name, const std::string &version = "", const std::string &description = ""); + void setOrganization(const std::string &name, const std::string &website = ""); + void setSubmittor(const std::string &name, const std::string &email = ""); + void setTestRun(const std::string &transformation, const std::string &comments = ""); + void setAnonymous(bool anon); + void addImplementationDefinedItem(const std::string &name, const std::string &value); + void addFeature(const std::string &name, bool supported); + void addContextProperty(const std::string &name, const std::string &contextType, const std::string &value); + + void printReport() const; + +private: + std::string version_; + std::string implName_, implVersion_, implDescription_; + std::string orgName_, orgWebsite_; + std::string submittorName_, submittorEmail_; + std::string testTransformation_, testComments_; + bool anonymous_; + + std::map implDefinedItems_; + std::map features_; + std::map > contextProperties_; + + std::ostringstream outputStream_; +}; + +#endif diff --git a/include/xqilla/xqts/TestSuiteRunner.hpp b/include/xqilla/xqts/TestSuiteRunner.hpp new file mode 100644 index 00000000..4308e782 --- /dev/null +++ b/include/xqilla/xqts/TestSuiteRunner.hpp @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: TestSuiteRunner.hpp,v 1.7 2006/11/01 16:37:17 jpcs Exp $ + */ + +#ifndef _TESTSUITERUNNER_HPP +#define _TESTSUITERUNNER_HPP + +#include +#include +#include + +#include + +class TestSuiteResultListener; +class TestCase; + +class XQILLA_API TestSuiteRunner +{ +public: + virtual ~TestSuiteRunner() {} + + TestSuiteResultListener *getResultListener() { return m_results; } + + virtual void addSource(const std::string &id, const std::string &filename, const std::string &schema) = 0; + virtual void addSchema(const std::string &id, const std::string &filename, const std::string &uri) = 0; + virtual void addModule(const std::string &id, const std::string &filename) = 0; + virtual void addCollection(const std::string &id, const std::string &filename) = 0; + + virtual void startTestGroup(const std::string &name) = 0; + virtual void endTestGroup() = 0; + + virtual void runTestCase(const TestCase &testCase) = 0; + +protected: + TestSuiteRunner(TestSuiteResultListener *results) : m_results(results) {} + + void testResults(const TestCase &testCase, const std::string &results) const; + void testErrors(const TestCase &testCase, const std::string &actualError) const; + +protected: + TestSuiteResultListener *m_results; +}; + +#endif diff --git a/src/ast/ASTNodeImpl.cpp b/src/ast/ASTNodeImpl.cpp new file mode 100644 index 00000000..ef57b367 --- /dev/null +++ b/src/ast/ASTNodeImpl.cpp @@ -0,0 +1,146 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ASTNodeImpl.cpp,v 1.21 2006/11/02 15:07:56 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +ASTNodeImpl::ASTNodeImpl(XPath2MemoryManager* memMgr) + : _src(memMgr), + _memMgr(memMgr) +{ + // Nothing to do +} + +ASTNodeImpl::~ASTNodeImpl(void) +{ + //no-op +} + +bool ASTNodeImpl::isConstant() const +{ + return !_src.isUsed(); +} + +/** Overridden in XQSequence and XQLiteral */ +bool ASTNodeImpl::isDateOrTimeAndHasNoTimezone(StaticContext *context) const +{ + // To be safe, assume any value that contains a timezone might + // not have one specified. + return _src.getStaticType().containsType(StaticType::TIMEZONE_TYPE); +} + +ASTNode::whichType ASTNodeImpl::getType(void) const +{ + return _type; +} + +void ASTNodeImpl::setType(ASTNode::whichType t) +{ + _type = t; +} + +bool ASTNodeImpl::isSingleNumericConstant(StaticContext *context) const +{ + return false; +} + +Result ASTNodeImpl::collapseTree(DynamicContext* context, int flags) const +{ + return createResult(context, flags); +} + +Result ASTNodeImpl::createResult(DynamicContext* context, int flags) const +{ + return new CollapseTreeInternalResult(this, flags, context); +} + +Sequence ASTNodeImpl::collapseTreeInternal(DynamicContext* context, int flags) const +{ + return Sequence(context->getMemoryManager()); +} + +ASTNode *ASTNodeImpl::constantFold(StaticContext *context) +{ + XPath2MemoryManager* mm = context->getMemoryManager(); + AutoDelete dContext(context->createDynamicContext()); + dContext->setMemoryManager(mm); + + Result result = createResult(dContext); + ASTNode *newBlock = XQSequence::constantFold(result, dContext, mm, this); + if(newBlock == 0) return this; // Constant folding failed + + newBlock->setLocationInfo(this); + return newBlock->staticTyping(context); +} + +XPath2MemoryManager* ASTNodeImpl::getMemoryManager(void) const { + + return _memMgr; +} + +const StaticResolutionContext &ASTNodeImpl::getStaticResolutionContext() const +{ + return _src; +} + +///////////////////////////////////// +// CollapseTreeInternalResult +///////////////////////////////////// + +ASTNodeImpl::CollapseTreeInternalResult::CollapseTreeInternalResult(const ASTNodeImpl *di, int flags, DynamicContext *context) + : LazySequenceResult(di, context), + _flags(flags), + _di(di) +{ +} + +void ASTNodeImpl::CollapseTreeInternalResult::getResult(Sequence &toFill, DynamicContext *context) const +{ + try { + toFill = _di->collapseTreeInternal(context, _flags); + } + catch(XQException &e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(this); + throw e; + } +} + +std::string ASTNodeImpl::CollapseTreeInternalResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/ast/AggregateFunction.cpp b/src/ast/AggregateFunction.cpp new file mode 100644 index 00000000..7d8b9cdd --- /dev/null +++ b/src/ast/AggregateFunction.cpp @@ -0,0 +1,167 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: AggregateFunction.cpp,v 1.14 2006/11/01 16:37:17 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +AggregateFunction::AggregateFunction(const XMLCh* name, unsigned int argsFrom, unsigned int argsTo, const char* paramDecl, const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name,argsFrom, argsTo, paramDecl, args, memMgr) +{ +} + + /* + * returns a sequence with untypedAtomic values casted to xs:double + * If a NaN value is found, a singleton sequence containing NaN is returned + * All the items in the returned sequence are guaranteed to be of the same type + */ +Sequence AggregateFunction::validateSequence(Sequence sequence, DynamicContext* context) const { + if(sequence.isEmpty()) + return sequence; + Sequence::iterator i = sequence.begin(); + + Sequence firstStep(context->getMemoryManager()); + // check for NaN and convert untypedAtomic + for (; i != sequence.end(); ++i) { + const AnyAtomicType::Ptr atom = (const AnyAtomicType::Ptr )*i; + const XMLCh* atomTypeURI = atom->getTypeURI(); + const XMLCh* atomTypeName = atom->getTypeName(); + + if (XPath2Utils::equals(atomTypeName, ATUntypedAtomic::fgDT_UNTYPEDATOMIC) && + XPath2Utils::equals(atomTypeURI, FunctionConstructor::XMLChXPath2DatatypesURI )) { + firstStep.addItem(atom->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_DOUBLE, + context)); + } + else + firstStep.addItem(atom); + } + // check that sequence contains items of a single type or one if its subtypes. + // if there are different numeric types, promote them all to a single common type. + const XMLCh* sequenceTypeURI = FunctionConstructor::XMLChXPath2DatatypesURI; + const XMLCh* sequenceTypeName = ATUntypedAtomic::fgDT_UNTYPEDATOMIC; + i = firstStep.begin(); + for (; i != firstStep.end(); ++i) { + const AnyAtomicType::Ptr atom = (const AnyAtomicType::Ptr )*i; + const XMLCh* atomTypeURI = atom->getTypeURI(); + const XMLCh* atomTypeName = atom->getTypeName(); + if (! ( XPath2Utils::equals(sequenceTypeName, atomTypeName) && + XPath2Utils::equals(sequenceTypeURI, atomTypeURI) ) ) { + // if the sequenceType and atomType are not equal we must determine what to do + if (XPath2Utils::equals(sequenceTypeName, ATUntypedAtomic::fgDT_UNTYPEDATOMIC) && + XPath2Utils::equals(sequenceTypeURI, FunctionConstructor::XMLChXPath2DatatypesURI )) { + // if the sequenceType is untypedAtomic then we are the first, so set the sequenceType to the atomType + if (isNumericType(atomTypeURI, atomTypeName, context)) { + sequenceTypeURI = atom->getPrimitiveTypeURI(); + if(context->isTypeOrDerivedFromType(atomTypeURI, atomTypeName, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, SchemaSymbols::fgDT_INTEGER)) { + sequenceTypeName = SchemaSymbols::fgDT_INTEGER; + } else { + sequenceTypeName = atom->getPrimitiveTypeName(); + } + } else { + sequenceTypeURI = atomTypeURI; + sequenceTypeName = atomTypeName; + } + } else if (context->isTypeOrDerivedFromType(sequenceTypeURI, sequenceTypeName, atomTypeURI, atomTypeName)) { + // if the sequenceType is derived from the atomType then we have a sequence of the atomType + sequenceTypeURI = atomTypeURI; + sequenceTypeName = atomTypeName; + } else if (context->isTypeOrDerivedFromType(atomTypeURI, atomTypeName, sequenceTypeURI, sequenceTypeName)) { + // if the atomType is derived from the sequenceType let it pass to get dealt with by the SequenceType class + } else if (isNumericType(sequenceTypeURI, sequenceTypeName, context) && isNumericType(atomTypeURI, atomTypeName, context)) { + // if we are dealing with numerics determine which common type to promote to + if (XPath2Utils::equals(sequenceTypeName, SchemaSymbols::fgDT_DOUBLE)) { + // sequenceType is double, so do nothing since double is king + } else if (XPath2Utils::equals(sequenceTypeName, SchemaSymbols::fgDT_FLOAT)) { + // sequenceType is float, so if atomType is double then so is sequenceType + if (XPath2Utils::equals(atom->getPrimitiveTypeName(), SchemaSymbols::fgDT_DOUBLE)) + sequenceTypeName = atom->getPrimitiveTypeName(); + } else if (context->isTypeOrDerivedFromType(sequenceTypeURI, sequenceTypeName, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, SchemaSymbols::fgDT_DECIMAL)) { + if (!context->isTypeOrDerivedFromType(atomTypeURI, atomTypeName, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, SchemaSymbols::fgDT_INTEGER)) { + sequenceTypeName = atom->getPrimitiveTypeName(); + } + } else { + // we should never actually get here + XQThrow(::IllegalArgumentException, X("AggregateFunction::validateSequence"), X("Invalid argument to aggregate function")); + } + } else { // we have incompatible types + XQThrow(::IllegalArgumentException, X("AggregateFunction::validateSequence"), X("Invalid argument to aggregate function")); + } + } + } + + if(isNumericType(sequenceTypeURI, sequenceTypeName, context)) { + Sequence castedSequence(context->getMemoryManager()); + try { + i = firstStep.begin(); + for (; i != firstStep.end(); ++i) { + const AnyAtomicType::Ptr atomic = (const AnyAtomicType *)i->get(); + if(atomic->isNumericValue()) { + const Numeric::Ptr promotedType = ((const Numeric*)atomic.get())->promoteTypeIfApplicable(sequenceTypeURI, sequenceTypeName, context); + if(promotedType != NULLRCP) { + if(isNumericNaN(promotedType)) + return Sequence(promotedType, context->getMemoryManager()); + else + castedSequence.addItem(promotedType); + } + else { + XQThrow(::IllegalArgumentException, X("AggregateFunction::validateSequence"), X("Invalid argument to aggregate function")); + } + } + } + } catch (XPath2TypeCastException &e) { + XQThrow(::IllegalArgumentException, X("AggregateFunction::validateSequence"), X("Invalid argument to aggregate function")); + } catch (const XMLException& e) { + XQThrow(::IllegalArgumentException, X("AggregateFunction::validateSequence"), X("Invalid argument to aggregate function")); + } + + return castedSequence; + } + + return firstStep; +} + +bool AggregateFunction::isNumericType(const XMLCh* typeURI, const XMLCh* typeName, const DynamicContext* context) const { + return (context->isTypeOrDerivedFromType(typeURI,typeName, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, SchemaSymbols::fgDT_DECIMAL) || + context->isTypeOrDerivedFromType(typeURI,typeName, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, SchemaSymbols::fgDT_FLOAT) || + context->isTypeOrDerivedFromType(typeURI,typeName, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, SchemaSymbols::fgDT_DOUBLE)); +} + +bool AggregateFunction::isNumericNaN(const Item::Ptr &item) const +{ + if(item->isNode()) + return false; + const AnyAtomicType::Ptr atom = (const AnyAtomicType::Ptr )item; + return (atom->isNumericValue() && ((const Numeric::Ptr)atom)->isNaN()); +} diff --git a/src/ast/ConstantFoldingFunction.cpp b/src/ast/ConstantFoldingFunction.cpp new file mode 100644 index 00000000..629350bf --- /dev/null +++ b/src/ast/ConstantFoldingFunction.cpp @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ConstantFoldingFunction.cpp,v 1.10 2006/11/01 16:37:17 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +ConstantFoldingFunction::ConstantFoldingFunction(const XMLCh* name, unsigned int argsFrom, unsigned int argsTo, const char* paramDecl, const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, argsFrom, argsTo, paramDecl, args, memMgr) +{ +} + + +ConstantFoldingFunction::~ConstantFoldingFunction() +{ +} + +ASTNode* ConstantFoldingFunction::staticResolution(StaticContext *context) { + return resolveArguments(context); +} + +ASTNode* ConstantFoldingFunction::staticTyping(StaticContext *context) { + return calculateSRCForArguments(context); +} diff --git a/src/ast/ConvertFunctionArg.cpp b/src/ast/ConvertFunctionArg.cpp new file mode 100644 index 00000000..2ecf6bc2 --- /dev/null +++ b/src/ast/ConvertFunctionArg.cpp @@ -0,0 +1,272 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ConvertFunctionArg.cpp,v 1.8 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" + +#include +#include +#include +#include +#include +#include +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +XQPromoteUntyped::XQPromoteUntyped(ASTNode* expr, const XMLCh *uri, const XMLCh *name, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), + expr_(expr), + uri_(uri), + name_(name) +{ + setType(ASTNode::PROMOTE_UNTYPED); +} + +ASTNode* XQPromoteUntyped::staticResolution(StaticContext *context) +{ + expr_ = expr_->staticResolution(context); + return this; +} + +ASTNode* XQPromoteUntyped::staticTyping(StaticContext *context) +{ + _src.clear(); + + expr_ = expr_->staticTyping(context); + _src.getStaticType() = expr_->getStaticResolutionContext().getStaticType(); + _src.add(expr_->getStaticResolutionContext()); + + if(_src.getStaticType().containsType(StaticType::UNTYPED_ATOMIC_TYPE)) { + bool isPrimitive; + _src.getStaticType().flags &= ~StaticType::UNTYPED_ATOMIC_TYPE; + _src.getStaticType().flags |= StaticType::getFlagsFor(uri_, name_, context, isPrimitive); + } + else { + return expr_; + } + + // crioux thinks this should also add: unless the target type is anyAtomicType! + if(XPath2Utils::equals(name_, AnyAtomicType::fgDT_ANYATOMICTYPE) && + XPath2Utils::equals(uri_, FunctionConstructor::XMLChXPath2DatatypesURI)) { + return expr_; + } + + if(expr_->isConstant()) { + return constantFold(context); + } + return this; +} + +Result XQPromoteUntyped::createResult(DynamicContext* context, int flags) const +{ + return new PromoteUntypedResult(this, expr_->collapseTree(context, flags), uri_, name_); +} + +Item::Ptr XQPromoteUntyped::PromoteUntypedResult::next(DynamicContext *context) +{ + Item::Ptr item = parent_->next(context); + if(item.notNull()) { + assert(item->isAtomicValue()); + const AnyAtomicType *atomic = (const AnyAtomicType *)item.get(); + + // 2. Each item in the atomic sequence that is of type xdt:untypedAtomic is cast to the expected atomic + // type. For built-in functions where the expected type is specified as numeric, arguments of type + // xdt:untypedAtomic are cast to xs:double. + if(atomic->getPrimitiveTypeIndex() == AnyAtomicType::UNTYPED_ATOMIC) { + try { + item = atomic->castAs(uri_, name_, context); + } + catch(XPath2TypeCastException &e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(this); + throw; + } + } + } + else { + parent_ = 0; + } + + return item; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +XQPromoteNumeric::XQPromoteNumeric(ASTNode* expr, const XMLCh *uri, const XMLCh *name, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), + expr_(expr), + uri_(uri), + name_(name) +{ + setType(ASTNode::PROMOTE_NUMERIC); +} + +ASTNode* XQPromoteNumeric::staticResolution(StaticContext *context) +{ + expr_ = expr_->staticResolution(context); + return this; +} + +ASTNode* XQPromoteNumeric::staticTyping(StaticContext *context) +{ + _src.clear(); + + expr_ = expr_->staticTyping(context); + _src.getStaticType() = expr_->getStaticResolutionContext().getStaticType(); + _src.add(expr_->getStaticResolutionContext()); + + if(_src.getStaticType().containsType(StaticType::NUMERIC_TYPE)) { + bool isPrimitive; + unsigned int flags = StaticType::getFlagsFor(uri_, name_, context, isPrimitive); + + if((flags & StaticType::DOUBLE_TYPE) != 0) { + _src.getStaticType().flags &= ~(StaticType::DECIMAL_TYPE | StaticType::FLOAT_TYPE); + _src.getStaticType().flags |= flags; + } + else if((flags & StaticType::FLOAT_TYPE) != 0) { + _src.getStaticType().flags &= ~StaticType::DECIMAL_TYPE; + _src.getStaticType().flags |= flags; + } + } + else { + return expr_; + } + + if(!((XPath2Utils::equals(name_, SchemaSymbols::fgDT_DOUBLE) || + XPath2Utils::equals(name_, SchemaSymbols::fgDT_FLOAT) && + XPath2Utils::equals(uri_, SchemaSymbols::fgURI_SCHEMAFORSCHEMA)))) { + return expr_; + } + + if(expr_->isConstant()) { + return constantFold(context); + } + return this; +} + +Result XQPromoteNumeric::createResult(DynamicContext* context, int flags) const +{ + return new PromoteNumericResult(this, expr_->collapseTree(context, flags), uri_, name_); +} + +Item::Ptr XQPromoteNumeric::PromoteNumericResult::next(DynamicContext *context) +{ + Item::Ptr item = parent_->next(context); + if(item.notNull()) { + assert(item->isAtomicValue()); + const AnyAtomicType *atomic = (const AnyAtomicType *)item.get(); + + // 3. For each numeric item in the atomic sequence that can be promoted to the expected atomic type using + // the promotion rules in B.1 Type Promotion, the promotion is done. + if(atomic->isNumericValue()) { + try { + const Numeric::Ptr promotedType = ((const Numeric*)atomic)->promoteTypeIfApplicable(uri_, name_, context); + if(promotedType != NULLRCP) { + item = promotedType; + } + } catch (XPath2TypeCastException &e) { + XQThrow(XPath2ErrorException, X("SequenceType::AtomicTypeConvertFunctionArgResult::next"), + X("Numeric type promotion failed (for promotable type)")); + } catch (const XMLException& e) { + XQThrow(XPath2ErrorException, X("SequenceType::AtomicTypeConvertFunctionArgResult::next"), + X("Numeric type promotion failed (for promotable type)")); + } + } + } + else { + parent_ = 0; + } + + return item; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +XQPromoteAnyURI::XQPromoteAnyURI(ASTNode* expr, const XMLCh *uri, const XMLCh *name, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), + expr_(expr), + uri_(uri), + name_(name) +{ + setType(ASTNode::PROMOTE_ANY_URI); +} + +ASTNode* XQPromoteAnyURI::staticResolution(StaticContext *context) +{ + expr_ = expr_->staticResolution(context); + return this; +} + +ASTNode *XQPromoteAnyURI::staticTyping(StaticContext *context) +{ + _src.clear(); + + expr_ = expr_->staticTyping(context); + _src.getStaticType() = expr_->getStaticResolutionContext().getStaticType(); + _src.add(expr_->getStaticResolutionContext()); + + if(_src.getStaticType().flags & StaticType::ANY_URI_TYPE) { + _src.getStaticType().flags &= ~StaticType::ANY_URI_TYPE; + _src.getStaticType().flags |= StaticType::STRING_TYPE; + } + else { + return expr_; + } + + if(!XPath2Utils::equals(name_, SchemaSymbols::fgDT_STRING) || + !XPath2Utils::equals(uri_, SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) { + return expr_; + } + + if(expr_->isConstant()) { + return constantFold(context); + } + return this; +} + +Result XQPromoteAnyURI::createResult(DynamicContext* context, int flags) const +{ + return new PromoteAnyURIResult(this, expr_->collapseTree(context, flags)); +} + +Item::Ptr XQPromoteAnyURI::PromoteAnyURIResult::next(DynamicContext *context) +{ + Item::Ptr item = parent_->next(context); + if(item.notNull()) { + assert(item->isAtomicValue()); + const AnyAtomicType *atomic = (const AnyAtomicType *)item.get(); + + // 4. For each item of type xs:anyURI in the atomic sequence that can be promoted to the expected atomic + // type using URI promotion as described in B.1 Type Promotion, the promotion is done. + if(atomic->getPrimitiveTypeIndex() == AnyAtomicType::ANY_URI) { + try { + item = atomic->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, SchemaSymbols::fgDT_STRING, context); + } catch (XPath2TypeCastException &e) { + XQThrow(XPath2ErrorException, X("SequenceType::AtomicTypeConvertFunctionArgResult::next"), + X("AnyURI type promotion failed (for promotable type)")); + } catch (const XMLException& e) { + XQThrow(XPath2ErrorException, X("SequenceType::AtomicTypeConvertFunctionArgResult::next"), + X("AnyURI type promotion failed (for promotable type)")); + } + } + } + else { + parent_ = 0; + } + + return item; +} diff --git a/src/ast/NumericFunction.cpp b/src/ast/NumericFunction.cpp new file mode 100644 index 00000000..208f4ffd --- /dev/null +++ b/src/ast/NumericFunction.cpp @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: NumericFunction.cpp,v 1.14 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +NumericFunction::NumericFunction(const XMLCh* name, unsigned int argsFrom, unsigned int argsTo, const char* paramDecl, const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name,argsFrom, argsTo, paramDecl, args, memMgr) +{ +} + +ASTNode* NumericFunction::staticResolution(StaticContext *context) { + return resolveArguments(context, /*checkTimezone*/false, /*numericfunction*/true); +} + +ASTNode *NumericFunction::staticTyping(StaticContext *context) +{ + return calculateSRCForArguments(context, /*checkTimezone*/false, /*numericfunction*/true); +} + +Numeric::Ptr NumericFunction::getNumericParam(unsigned int number, DynamicContext *context, int flags) const +{ + Result arg = XQFunction::getParamNumber(number, context, flags); + Item::Ptr item = arg->next(context); + + if(item.isNull()) { + return 0; + } + else if(item->isAtomicValue() && ((const AnyAtomicType *)item.get())->isNumericValue()) { + return (const Numeric *)item.get(); + } else { + XQThrow(FunctionException,X("NumericFunction::getParamNumber"), X("Non-numeric argument in numeric function [err:XPTY0004]")); + } +} + diff --git a/src/ast/StaticResolutionContext.cpp b/src/ast/StaticResolutionContext.cpp new file mode 100644 index 00000000..d3d33665 --- /dev/null +++ b/src/ast/StaticResolutionContext.cpp @@ -0,0 +1,315 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: StaticResolutionContext.cpp,v 1.14 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include + +using namespace std; + +StaticResolutionContext::StaticResolutionContext(XPath2MemoryManager* memMgr) + : _dynamicVariables(17, false, memMgr), + _uriPool(17, memMgr), + _memMgr(memMgr) +{ + clear(); +} + +StaticResolutionContext::StaticResolutionContext(const StaticResolutionContext &o, XPath2MemoryManager* memMgr) + : _dynamicVariables(17, false, memMgr), + _uriPool(17, memMgr), + _memMgr(memMgr) +{ + clear(); + copy(o); +} + +void StaticResolutionContext::copy(const StaticResolutionContext &o) +{ + add(o); + _properties = o._properties; + _staticType = o._staticType; +} + +void StaticResolutionContext::clear() +{ + _contextItem = false; + _contextPosition = false; + _contextSize = false; + _currentTime = false; + _implicitTimezone = false; + _availableDocuments = false; + _availableCollections = false; + _forceNoFolding = false; + _creative = false; + + _properties = 0; + _staticType = StaticType(); + + _dynamicVariables.removeAll(); + _uriPool.flushAll(); +} + +void StaticResolutionContext::contextItemUsed(bool value) +{ + _contextItem = value; +} + +void StaticResolutionContext::contextPositionUsed(bool value) +{ + _contextPosition = value; +} + +void StaticResolutionContext::contextSizeUsed(bool value) +{ + _contextSize = value; +} + +bool StaticResolutionContext::isContextItemUsed() const +{ + return _contextItem; +} + +bool StaticResolutionContext::isContextPositionUsed() const +{ + return _contextPosition; +} + +bool StaticResolutionContext::isContextSizeUsed() const +{ + return _contextSize; +} + +/** Returns true if any of the context item flags have been used */ +bool StaticResolutionContext::areContextFlagsUsed() const +{ + return _contextItem || _contextPosition || _contextSize; +} + +void StaticResolutionContext::currentTimeUsed(bool value) +{ + _currentTime = value; +} + +void StaticResolutionContext::implicitTimezoneUsed(bool value) +{ + _implicitTimezone = value; +} + +void StaticResolutionContext::availableDocumentsUsed(bool value) +{ + _availableDocuments = value; +} + +void StaticResolutionContext::availableCollectionsUsed(bool value) +{ + _availableCollections = value; +} + +bool StaticResolutionContext::areDocsOrCollectionsUsed() const +{ + return _availableDocuments || _availableCollections; +} + +void StaticResolutionContext::forceNoFolding(bool value) +{ + _forceNoFolding = value; +} + +bool StaticResolutionContext::isNoFoldingForced() const +{ + return _forceNoFolding; +} + +void StaticResolutionContext::variableUsed(const XMLCh *namespaceURI, const XMLCh *name) +{ + namespaceURI = _memMgr->getPooledString(namespaceURI); + name = _memMgr->getPooledString(name); + unsigned int nsID = _uriPool.addOrFind(namespaceURI); + _dynamicVariables.put((void*)name, nsID, 0); +} + +vector > StaticResolutionContext::variablesUsed() const +{ + vector > result; + + const XMLCh* namespaceURI; + const XMLCh* name; + int nsID; + VariableAccessSetEnumerator it(const_cast(&_dynamicVariables)); + while(it.hasMoreElements()) { + it.nextElementKey((void*&)name, nsID); + namespaceURI = _uriPool.getValueForId(nsID); + result.push_back(pair(namespaceURI, name)); + } + + return result; +} + +bool StaticResolutionContext::removeVariable(const XMLCh *namespaceURI, const XMLCh *name) +{ + namespaceURI = _memMgr->getPooledString(namespaceURI); + name = _memMgr->getPooledString(name); + unsigned int nsID = _uriPool.getId(namespaceURI); + if(nsID != 0 && _dynamicVariables.containsKey((void*)name, nsID)) { + _dynamicVariables.removeKey((void*)name, nsID); + return true; + } + return false; +} + +bool StaticResolutionContext::isVariableUsed(const XMLCh *namespaceURI, const XMLCh *name) const +{ + namespaceURI = _memMgr->getPooledString(namespaceURI); + name = _memMgr->getPooledString(name); + unsigned int nsID = _uriPool.getId(namespaceURI); + if(nsID != 0 && _dynamicVariables.containsKey((void*)name, nsID)) { + return true; + } + return false; +} + +/** Sets the members of this StaticResolutionContext from the given StaticResolutionContext */ +void StaticResolutionContext::add(const StaticResolutionContext &o) +{ + if(o._contextItem) _contextItem = true; + if(o._contextPosition) _contextPosition = true; + if(o._contextSize) _contextSize = true; + if(o._currentTime) _currentTime = true; + if(o._implicitTimezone) _implicitTimezone = true; + if(o._availableDocuments) _availableDocuments = true; + if(o._availableCollections) _availableCollections = true; + if(o._forceNoFolding) _forceNoFolding = true; + + const XMLCh* namespaceURI; + const XMLCh* name; + int nsID; + // No const enumerator is provided... + VariableAccessSetEnumerator it(const_cast(&o._dynamicVariables)); + while(it.hasMoreElements()) { + it.nextElementKey((void*&)name, nsID); + namespaceURI = o._uriPool.getValueForId(nsID); + variableUsed(namespaceURI, name); + } +} + +void StaticResolutionContext::addExceptContextFlags(const StaticResolutionContext &o) +{ + if(o._currentTime) _currentTime = true; + if(o._implicitTimezone) _implicitTimezone = true; + if(o._availableDocuments) _availableDocuments = true; + if(o._availableCollections) _availableCollections = true; + if(o._forceNoFolding) _forceNoFolding = true; + + const XMLCh* namespaceURI; + const XMLCh* name; + int nsID; + // No const enumerator is provided... + VariableAccessSetEnumerator it(const_cast(&o._dynamicVariables)); + while(it.hasMoreElements()) { + it.nextElementKey((void*&)name, nsID); + namespaceURI = o._uriPool.getValueForId(nsID); + variableUsed(namespaceURI, name); + } +} + + +/** Returns true if flags are set, or variables have been used */ +bool StaticResolutionContext::isUsed() const +{ + return _contextItem || _contextPosition || _contextSize + || _currentTime || _implicitTimezone || _availableCollections + || _availableDocuments || _forceNoFolding || !_dynamicVariables.isEmpty(); +} + +bool StaticResolutionContext::isUsedExceptContextFlags() const +{ + return _currentTime || _implicitTimezone || _availableCollections + || _availableDocuments || _forceNoFolding || !_dynamicVariables.isEmpty(); +} + +bool StaticResolutionContext::areContextTimeUsed() const +{ + return _currentTime || _implicitTimezone; +} + +void StaticResolutionContext::creative(bool value) +{ + _creative = value; +} + +bool StaticResolutionContext::isCreative() const +{ + return _creative; +} + +unsigned int StaticResolutionContext::getProperties() const +{ + return _properties; +} + +void StaticResolutionContext::setProperties(unsigned int props) +{ + _properties = props; +} + +const StaticType &StaticResolutionContext::getStaticType() const +{ + return _staticType; +} + +StaticType &StaticResolutionContext::getStaticType() +{ + return _staticType; +} + +std::string StaticResolutionContext::toString() const +{ + std::ostringstream s; + + s << "Context Item: " << (_contextItem ? "true" : "false") << std::endl; + s << "Context Position: " << (_contextPosition ? "true" : "false") << std::endl; + s << "Context Size: " << (_contextSize ? "true" : "false") << std::endl; + s << "Current Time: " << (_currentTime ? "true" : "false") << std::endl; + s << "Implicit Timezone: " << (_implicitTimezone ? "true" : "false") << std::endl; + s << "Available Documents: " << (_availableDocuments ? "true" : "false") << std::endl; + s << "Available Collections: " << (_availableCollections ? "true" : "false") << std::endl; + s << "Force No Folding: " << (_forceNoFolding ? "true" : "false") << std::endl; + + s << "Variables Used: ["; + const XMLCh* namespaceURI; + const XMLCh* name; + int nsID; + bool first = true; + VariableAccessSetEnumerator it(const_cast(&_dynamicVariables)); + while(it.hasMoreElements()) { + it.nextElementKey((void*&)name, nsID); + namespaceURI = _uriPool.getValueForId(nsID); + + if(first) { + first = false; + } + else { + s << ", "; + } + + s << "{" << UTF8(namespaceURI) << "}:" << UTF8(name); + } + s << "]" << std::endl; + + return s.str(); +} diff --git a/src/ast/StaticType.cpp b/src/ast/StaticType.cpp new file mode 100644 index 00000000..f872a066 --- /dev/null +++ b/src/ast/StaticType.cpp @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: StaticType.cpp,v 1.5 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" + +#include +#include +#include +#include +#include + +unsigned int StaticType::getFlagsFor(const XMLCh *uri, const XMLCh *name, const StaticContext *context, + bool &isExact) +{ + if(XPath2Utils::equals(name, AnyAtomicType::fgDT_ANYATOMICTYPE) && + XPath2Utils::equals(uri, FunctionConstructor::XMLChXPath2DatatypesURI)) { + isExact = true; + return ANY_ATOMIC_TYPE; + } + else { + return getFlagsFor(context->getItemFactory()-> + getPrimitiveTypeIndex(uri, name, /*isPrimitive*/isExact)); + } +} + +unsigned int StaticType::getFlagsFor(AnyAtomicType::AtomicObjectType primitiveType) +{ + switch(primitiveType) { + case AnyAtomicType::ANY_SIMPLE_TYPE: return StaticType::ANY_SIMPLE_TYPE; + case AnyAtomicType::ANY_URI: return StaticType::ANY_URI_TYPE; + case AnyAtomicType::BASE_64_BINARY: return StaticType::BASE_64_BINARY_TYPE; + case AnyAtomicType::BOOLEAN: return StaticType::BOOLEAN_TYPE; + case AnyAtomicType::DATE: return StaticType::DATE_TYPE; + case AnyAtomicType::DATE_TIME: return StaticType::DATE_TIME_TYPE; + case AnyAtomicType::DAY_TIME_DURATION: return StaticType::DAY_TIME_DURATION_TYPE; + case AnyAtomicType::DECIMAL: return StaticType::DECIMAL_TYPE; + case AnyAtomicType::DOUBLE: return StaticType::DOUBLE_TYPE; + case AnyAtomicType::DURATION: return StaticType::DURATION_TYPE; + case AnyAtomicType::FLOAT: return StaticType::FLOAT_TYPE; + case AnyAtomicType::G_DAY: return StaticType::G_DAY_TYPE; + case AnyAtomicType::G_MONTH: return StaticType::G_MONTH_TYPE; + case AnyAtomicType::G_MONTH_DAY: return StaticType::G_MONTH_DAY_TYPE; + case AnyAtomicType::G_YEAR: return StaticType::G_YEAR_TYPE; + case AnyAtomicType::G_YEAR_MONTH: return StaticType::G_YEAR_MONTH_TYPE; + case AnyAtomicType::HEX_BINARY: return StaticType::HEX_BINARY_TYPE; + case AnyAtomicType::NOTATION: return StaticType::NOTATION_TYPE; + case AnyAtomicType::QNAME: return StaticType::QNAME_TYPE; + case AnyAtomicType::STRING: return StaticType::STRING_TYPE; + case AnyAtomicType::TIME: return StaticType::TIME_TYPE; + case AnyAtomicType::UNTYPED_ATOMIC: return StaticType::UNTYPED_ATOMIC_TYPE; + case AnyAtomicType::YEAR_MONTH_DURATION: return StaticType::YEAR_MONTH_DURATION_TYPE; + default: break; + } + return 0; +} + +void StaticType::typeUnion(const StaticType &st) +{ + flags |= st.flags; +} + +void StaticType::typeIntersect(const StaticType &st) +{ + flags &= st.flags; +} + +bool StaticType::containsType(unsigned int type) const +{ + return (flags & type) != 0; +} + +bool StaticType::isType(unsigned int type) const +{ + return (flags & type) != 0 && (flags & ~type) == 0; +} diff --git a/src/ast/XPath1Compat.cpp b/src/ast/XPath1Compat.cpp new file mode 100644 index 00000000..634fefef --- /dev/null +++ b/src/ast/XPath1Compat.cpp @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XPath1Compat.cpp,v 1.5 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" + +#include +#include +#include +#include +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +XPath1CompatConvertFunctionArg::XPath1CompatConvertFunctionArg(ASTNode* expr, const SequenceType *seqType, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), + expr_(expr), + seqType_(seqType) +{ + setType(ASTNode::XPATH1_CONVERT); +} + +ASTNode* XPath1CompatConvertFunctionArg::staticResolution(StaticContext *context) +{ + seqType_->staticResolution(context); + expr_ = expr_->staticResolution(context); + return this; +} + +ASTNode *XPath1CompatConvertFunctionArg::staticTyping(StaticContext *context) +{ + _src.clear(); + + expr_ = expr_->staticTyping(context); + _src.copy(expr_->getStaticResolutionContext()); + + if(expr_->isConstant()) { + return constantFold(context); + } + return this; +} + +Result XPath1CompatConvertFunctionArg::createResult(DynamicContext* context, int flags) const +{ + return new XPath1CompatConvertFunctionArgResult(this, expr_->collapseTree(context, flags), seqType_); +} + +XPath1CompatConvertFunctionArg::XPath1CompatConvertFunctionArgResult:: +XPath1CompatConvertFunctionArgResult(const XPath1CompatConvertFunctionArg *di, const Result &parent, const SequenceType *seqType) + : ResultImpl(di), + seqType_(seqType), + parent_(parent), + oneDone_(false) +{ +} + +Item::Ptr XPath1CompatConvertFunctionArg::XPath1CompatConvertFunctionArgResult::next(DynamicContext *context) +{ + // If XPath 1.0 compatibility mode is true and an argument is not of the expected type, then the following + // conversions are applied sequentially to the argument value V: + + // 1. If the expected type calls for a single item or optional single item (examples: xs:string, + // xs:string?, xdt:untypedAtomic, xdt:untypedAtomic?, node(), node()?, item(), item()?), then the + // value V is effectively replaced by V[1]. + if(oneDone_) { + return 0; + } + + Item::Ptr item = parent_->next(context); + + if(seqType_->getItemTestType() == SequenceType::ItemType::TEST_ATOMIC_TYPE) { + const XMLCh* typeURI = seqType_->getTypeURI(context); + const XMLCh* typeName = seqType_->getConstrainingType()->getName(); + + // 2. If the expected type is xs:string or xs:string?, then the value V is effectively replaced by + // fn:string(V). + if(context->isTypeOrDerivedFromType(typeURI, typeName, + SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_STRING)) { + item = FunctionString::string(item, context); + } + + // 3. If the expected type is a (possibly optional) numeric type, then the value V is effectively + // replaced by fn:number(V). + if(context->isTypeOrDerivedFromType(typeURI, typeName, + SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_DOUBLE)) { + assert(item->isAtomicValue()); // Since atomization should have happened + item = FunctionNumber::number((const AnyAtomicType::Ptr )item, context); + } + } + + oneDone_ = true; + return item; +} + +std::string XPath1CompatConvertFunctionArg::XPath1CompatConvertFunctionArgResult::asString(DynamicContext *context, int indent) const +{ + return "xpath1convertfunctionarg"; +} diff --git a/src/ast/XQAtomize.cpp b/src/ast/XQAtomize.cpp new file mode 100644 index 00000000..8db5db96 --- /dev/null +++ b/src/ast/XQAtomize.cpp @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQAtomize.cpp,v 1.5 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" + +#include +#include + +XQAtomize::XQAtomize(ASTNode* expr, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), + expr_(expr) +{ + setType(ASTNode::ATOMIZE); +} + +ASTNode* XQAtomize::staticResolution(StaticContext *context) +{ + expr_ = expr_->staticResolution(context); + return this; +} + +ASTNode *XQAtomize::staticTyping(StaticContext *context) +{ + _src.clear(); + + expr_ = expr_->staticTyping(context); + _src.getStaticType() = expr_->getStaticResolutionContext().getStaticType(); + _src.add(expr_->getStaticResolutionContext()); + + if(!_src.getStaticType().containsType(StaticType::NODE_TYPE)) { + // If the expression has no nodes, this function does nothing + return expr_; + } + + static const unsigned int anytype_types = StaticType::ELEMENT_TYPE | StaticType::ATTRIBUTE_TYPE; + static const unsigned int untyped_types = StaticType::DOCUMENT_TYPE | StaticType::TEXT_TYPE; + static const unsigned int string_types = StaticType::NAMESPACE_TYPE | StaticType::COMMENT_TYPE | StaticType::PI_TYPE; + + if(_src.getStaticType().containsType(anytype_types)) { + _src.getStaticType().flags &= ~anytype_types; + _src.getStaticType().flags |= StaticType::ANY_ATOMIC_TYPE; + } + if(_src.getStaticType().containsType(untyped_types)) { + _src.getStaticType().flags &= ~untyped_types; + _src.getStaticType().flags |= StaticType::UNTYPED_ATOMIC_TYPE; + } + if(_src.getStaticType().containsType(string_types)) { + _src.getStaticType().flags &= ~string_types; + _src.getStaticType().flags |= StaticType::STRING_TYPE; + } + + if(expr_->isConstant()) { + return constantFold(context); + } + return this; +} + +Result XQAtomize::createResult(DynamicContext* context, int flags) const +{ + return new AtomizeResult(this, expr_->collapseTree(context, flags)); +} + +Item::Ptr AtomizeResult::next(DynamicContext *context) +{ + // for $item in (Expr) return + // typeswitch ($item) + // case $value as atomic value return $value + // default $node return fn:data($node) + + Item::Ptr result = _sub->next(context); + while(result.isNull()) { + _sub = 0; + result = _parent->next(context); + if(result.isNull()) { + _parent = 0; + return 0; + } + if(result->isNode()) { + _sub = ((Node*)result.get())->dmTypedValue(context); + result = _sub->next(context); + } + } + return result; +} + diff --git a/src/ast/XQAttributeConstructor.cpp b/src/ast/XQAttributeConstructor.cpp new file mode 100644 index 00000000..117f662b --- /dev/null +++ b/src/ast/XQAttributeConstructor.cpp @@ -0,0 +1,224 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQAttributeConstructor.cpp,v 1.1 2006/11/03 17:04:20 jpcs Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +XQAttributeConstructor::XQAttributeConstructor(ASTNode* name, VectorOfASTNodes* children, XPath2MemoryManager* mm) + : XQDOMConstructor(mm), + m_name(name), + m_children(children) +{ + setType(ASTNode::DOM_CONSTRUCTOR); +} + +Sequence XQAttributeConstructor::collapseTreeInternal(DynamicContext *context, int flags) const +{ + Node::Ptr result; + try + { + Result resName=m_name->collapseTree(context); + AnyAtomicType::Ptr itemName=resName->next(context); + if(itemName==NULLRCP || resName->next(context)!=NULLRCP) + XQThrow(ASTException,X("DOM Constructor"),X("The name for the attribute must be a single xs:QName, xs:string or xs:untypedAtomic item [err:XPTY0004]")); + + const XMLCh* nodeUri=NULL, *nodePrefix=NULL, *nodeName=NULL; + if(itemName->getPrimitiveTypeIndex()==AnyAtomicType::QNAME) + { + const ATQNameOrDerived* pQName=(const ATQNameOrDerived*)(const AnyAtomicType*)itemName; + nodePrefix=pQName->getPrefix(); + // ignore the URI unless we have a prefix (xs:QName created by the parser + if(nodePrefix!=NULL && *nodePrefix!=0) + nodeUri=pQName->getURI(); + nodeName=pQName->getName(); + } + else if(itemName->getPrimitiveTypeIndex()==AnyAtomicType::STRING || itemName->getPrimitiveTypeIndex()==AnyAtomicType::UNTYPED_ATOMIC) + { + const XMLCh* pString=itemName->asString(context); + if(!XMLChar1_0::isValidQName(pString, XMLString::stringLen(pString))) + XQThrow(ASTException,X("DOM Constructor"),X("The name for the attribute cannot be converted to a xs:QName [err:XQDY0074]")); + nodePrefix=XPath2NSUtils::getPrefix(pString, context->getMemoryManager()); + // if the prefix was empty we are in no namespace + if(nodePrefix==0 || *nodePrefix==0) + nodeUri=NULL; + else + try + { + nodeUri=context->getUriBoundToPrefix(nodePrefix, this); + } + catch(NamespaceLookupException&) + { + XQThrow(ASTException,X("DOM Constructor"),X("The name for the attribute cannot be converted to a xs:QName because the prefix is undefined [err:XQDY0074]")); + } + // keep the specified prefix in the node name + nodeName=pString; + } + else + XQThrow(ASTException,X("DOM Constructor"),X("The name for the attribute must be either a xs:QName, xs:string or xs:untypedAtomic [err:XPTY0004]")); + + if((nodeUri==NULL && XPath2Utils::equals(nodeName, XMLUni::fgXMLNSString)) || + XPath2Utils::equals(nodeUri, XMLUni::fgXMLNSURIName)) + XQThrow(ASTException,X("DOM Constructor"),X("A computed attribute constructor cannot create a namespace declaration [err:XQDY0044]")); + + // TODO: what error should we return if the string is empty? + if(nodeName==NULL || *nodeName==0) + XQThrow(ASTException,X("DOM Constructor"),X("The name for the attribute is empty")); + + XMLBuffer value; + getStringValue(m_children, value, context); + result = context->getItemFactory()->createAttributeNode(nodeUri, nodePrefix, nodeName, value.getRawBuffer(), + context); + } + catch(DOMException& e) { + XQThrow(ASTException,X("AttributeConstructor"),e.getMessage()); + } + if(result.notNull()) + return Sequence(result, context->getMemoryManager()); + return Sequence(context->getMemoryManager()); +} + +ASTNode* XQAttributeConstructor::staticResolution(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + if(m_name) + { + // verify the namespace prefix used by the node name + if(m_name->getType() == ASTNode::LITERAL) { + const ItemConstructor* itemConstr=((XQLiteral*)m_name)->getItemConstructor(); + // if the type is xs:QName, it was a named constructor, and it must be checked + if(XPath2Utils::equals(itemConstr->getTypeURI(),SchemaSymbols::fgURI_SCHEMAFORSCHEMA) && + XPath2Utils::equals(itemConstr->getTypeName(),SchemaSymbols::fgDT_QNAME)) + { + AutoDelete dContext(context->createDynamicContext()); + dContext->setMemoryManager(context->getMemoryManager()); + // createItem will throw an exception if the prefix is undefined + AnyAtomicType::Ptr atomName; + try + { + atomName = itemConstr->createItem(dContext); + } + catch(XQException& e) + { + XMLBuffer buff(1023, context->getMemoryManager()); + buff.set(e.getError()); + int index=XMLString::indexOf(buff.getRawBuffer(),chOpenSquare); + if(index!=-1) + XMLString::copyString(buff.getRawBuffer()+index, X("[err:XPST0081]")); + else + buff.append(X("[err:XPST0081]")); + XQThrow(StaticErrorException, X("XQAttributeConstructor::staticResolution"), buff.getRawBuffer()); + } + } + } + // and run static resolution + m_name = new (mm) XQAtomize(m_name, mm); + m_name->setLocationInfo(this); + m_name = m_name->staticResolution(context); + } + + unsigned int i; + for (i=0;isize();i++) { + // normalize whitespace and expand entities in string literals + if((*m_children)[i]->getType()==LITERAL) + { + AutoDelete dContext(context->createDynamicContext()); + dContext->setMemoryManager(mm); + XQLiteral *lit = (XQLiteral*)(*m_children)[i]; + Item::Ptr item = lit->getItemConstructor()->createItem(dContext); + if(((AnyAtomicType*)(const Item*)item)->getPrimitiveTypeIndex()==AnyAtomicType::STRING) + { + const XMLCh* str=item->asString(dContext); + XMLBuffer buff(XMLString::stringLen(str)+1, mm); + buff.append(str); + XMLString::replaceWS(buff.getRawBuffer(), mm); + unescapeEntities(buff); + AnyAtomicTypeConstructor *newIC = new (mm) + AnyAtomicTypeConstructor(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_STRING, + mm->getPooledString(buff.getRawBuffer()), AnyAtomicType::STRING); + lit->setItemConstructor(newIC); + } + } + // atomize content and run static resolution + (*m_children)[i] = new (mm) XQAtomize((*m_children)[i], mm); + (*m_children)[i]->setLocationInfo(this); + + (*m_children)[i] = (*m_children)[i]->staticResolution(context); + + } + + return this; +} + +ASTNode* XQAttributeConstructor::staticTyping(StaticContext *context) +{ + _src.clear(); + + if(m_name) { + m_name = m_name->staticTyping(context); + _src.add(m_name->getStaticResolutionContext()); + } + + unsigned int i; + for(i = 0; i < m_children->size(); ++i) { + (*m_children)[i] = (*m_children)[i]->staticTyping(context); + _src.add((*m_children)[i]->getStaticResolutionContext()); + } + + _src.getStaticType().flags = StaticType::ATTRIBUTE_TYPE; + _src.forceNoFolding(true); + _src.creative(true); + return this; // Never constant fold +} + +const XMLCh* XQAttributeConstructor::getNodeType() const +{ + return Node::attribute_string; +} + +const ASTNode *XQAttributeConstructor::getName() const +{ + return m_name; +} + +const VectorOfASTNodes *XQAttributeConstructor::getChildren() const +{ + return m_children; +} + +void XQAttributeConstructor::setName(ASTNode *name) +{ + m_name = name; +} diff --git a/src/ast/XQCastAs.cpp b/src/ast/XQCastAs.cpp new file mode 100644 index 00000000..63c2def6 --- /dev/null +++ b/src/ast/XQCastAs.cpp @@ -0,0 +1,163 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQCastAs.cpp,v 1.15 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +XQCastAs::XQCastAs(ASTNode* expr, SequenceType* exprType, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), + _expr(expr), + _exprType(exprType) +{ + setType(ASTNode::CAST_AS); +} + +Result XQCastAs::createResult(DynamicContext* context, int flags) const +{ + return new CastAsResult(this); +} + +static XMLCh szNOTATION[] = { XERCES_CPP_NAMESPACE_QUALIFIER chLatin_N, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_O, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_A, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_I, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_O, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_N, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +ASTNode* XQCastAs::staticResolution(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + _exprType->staticResolution(context); + + const SequenceType::ItemType *itemType = _exprType->getItemType(); + if(itemType != NULL) { + if((XPath2Utils::equals(itemType->getTypeURI(context, this), XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA) && + XPath2Utils::equals(itemType->getType()->getName(), szNOTATION)) || + (XPath2Utils::equals(itemType->getTypeURI(context, this), FunctionConstructor::XMLChXPath2DatatypesURI) && + XPath2Utils::equals(itemType->getType()->getName(), AnyAtomicType::fgDT_ANYATOMICTYPE))) + XQThrow(TypeErrorException,X("XQCastAs::CastAsResult::getSingleResult"), + X("The target type of a cast expression must be an atomic type that is in the in-scope schema types and is not xs:NOTATION or xdt:anyAtomicType [err:XPST0080]")); + } + + _expr = new (mm) XQAtomize(_expr, mm); + _expr->setLocationInfo(this); + _expr = _expr->staticResolution(context); + + return this; +} + +ASTNode *XQCastAs::staticTyping(StaticContext *context) +{ + _src.clear(); + + const SequenceType::ItemType *itemType = _exprType->getItemType(); + if(itemType != NULL) { + bool isPrimitive; + itemType->getStaticType(_src.getStaticType(), context, isPrimitive, this); + } + + _expr = _expr->staticTyping(context); + _src.add(_expr->getStaticResolutionContext()); + + if(_expr->isConstant()) { + return constantFold(context); + } + return this; +} + +const ASTNode *XQCastAs::getExpression() const { + return _expr; +} + +const SequenceType *XQCastAs::getSequenceType() const { + return _exprType; +} + +void XQCastAs::setExpression(ASTNode *item) { + _expr = item; +} + +XQCastAs::CastAsResult::CastAsResult(const XQCastAs *di) + : SingleResult(di), + _di(di) +{ +} + +Item::Ptr XQCastAs::CastAsResult::getSingleResult(DynamicContext *context) const +{ + // The semantics of the cast expression are as follows: + // 1. Atomization is performed on the input expression. + Result toBeCasted(_di->getExpression()->collapseTree(context)); + + const Item::Ptr first = toBeCasted->next(context); + + if(first == NULLRCP) { + // 3. If the result of atomization is an empty sequence: + // 1. If ? is specified after the target type, the result of the cast expression is an empty sequence. + // 2. If ? is not specified after the target type, a type error is raised [err:XPTY0004]. + if(_di->getSequenceType()->getOccurrenceIndicator() == SequenceType::EXACTLY_ONE) { + XQThrow(TypeErrorException,X("XQCastAs::CastAsResult::getSingleResult"),X("The input to a non-optional cast as expression is an empty sequence [err:XPTY0004]")); + } + else { + return 0; + } + } + + const Item::Ptr second = toBeCasted->next(context); + + // 2. If the result of atomization is a sequence of more than one atomic value, a type error is raised.[err:XPTY0004] + if(second != NULLRCP) { + XQThrow(TypeErrorException,X("XQCastAs::CastAsResult::getSingleResult"),X("The input to a cast as expression is more than one atomic value [err:XPTY0004]")); + } + + if(_di->getSequenceType()->getItemTestType() != SequenceType::ItemType::TEST_ATOMIC_TYPE) + XQThrow(TypeErrorException,X("XQCastAs::CastAsResult::getSingleResult"),X("Cannot cast to a non atomic type")); + // 4. If the result of atomization is a single atomic value, the result of the cast expression depends on the input type and the target type. + // The normative definition of these rules is given in [XQuery 1.0 and XPath 2.0 Functions and Operators]. + try { + return (const Item::Ptr)((const AnyAtomicType::Ptr)first)->castAs(_di->getSequenceType()->getTypeURI(context), _di->getSequenceType()->getConstrainingType()->getName(), context); + } + catch(XPath2TypeCastException &e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(this); + throw; + } +} + +std::string XQCastAs::CastAsResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); + +} diff --git a/src/ast/XQCastableAs.cpp b/src/ast/XQCastableAs.cpp new file mode 100644 index 00000000..187ebb9a --- /dev/null +++ b/src/ast/XQCastableAs.cpp @@ -0,0 +1,155 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQCastableAs.cpp,v 1.15 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +XQCastableAs::XQCastableAs(ASTNode* expr, SequenceType* exprType, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), + _expr(expr), + _exprType(exprType) +{ + setType(ASTNode::CASTABLE_AS); +} + +Result XQCastableAs::createResult(DynamicContext* context, int flags) const +{ + return new CastableAsResult(this); +} + +static XMLCh szNOTATION[] = { XERCES_CPP_NAMESPACE_QUALIFIER chLatin_N, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_O, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_A, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_I, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_O, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_N, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +ASTNode* XQCastableAs::staticResolution(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + _exprType->staticResolution(context); + + const SequenceType::ItemType* itemType = _exprType->getItemType(); + if((XPath2Utils::equals(itemType->getTypeURI(context, this), XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA) && + XPath2Utils::equals(itemType->getType()->getName(), szNOTATION)) || + (XPath2Utils::equals(itemType->getTypeURI(context, this), FunctionConstructor::XMLChXPath2DatatypesURI) && + XPath2Utils::equals(itemType->getType()->getName(), AnyAtomicType::fgDT_ANYATOMICTYPE))) + XQThrow(TypeErrorException,X("XQCastableAs::staticResolution"), + X("The target type of a castable expression must be an atomic type that is in the in-scope schema types and is not xs:NOTATION or xdt:anyAtomicType [err:XPST0080]")); + + _expr = new (mm) XQAtomize(_expr, mm); + _expr->setLocationInfo(this); + + { + AutoNodeSetOrderingReset orderReset(context); + _expr = _expr->staticResolution(context); + } + + return this; +} + +ASTNode *XQCastableAs::staticTyping(StaticContext *context) +{ + _src.clear(); + + _expr = _expr->staticTyping(context); + + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; + _src.add(_expr->getStaticResolutionContext()); + if(_expr->isConstant()) { + return constantFold(context); + } + return this; +} + +const ASTNode *XQCastableAs::getExpression() const { + return _expr; +} + +const SequenceType *XQCastableAs::getSequenceType() const { + return _exprType; +} + +void XQCastableAs::setExpression(ASTNode *item) { + _expr = item; +} + +XQCastableAs::CastableAsResult::CastableAsResult(const XQCastableAs *di) + : SingleResult(di), + _di(di) +{ +} + +Item::Ptr XQCastableAs::CastableAsResult::getSingleResult(DynamicContext *context) const +{ + // The semantics of the cast expression are as follows: + // 1. Atomization is performed on the input expression. + Result toBeCasted(_di->getExpression()->collapseTree(context)); + + const Item::Ptr first = toBeCasted->next(context); + + bool result = false; + if(first == NULLRCP) { + // 3. If the result of atomization is an empty sequence: + // 1. If ? is specified after the target type, the result of the cast expression is an empty sequence. + // 2. If ? is not specified after the target type, a type error is raised.[err:XP0004][err:XP0006] + result = _di->getSequenceType()->getOccurrenceIndicator() != SequenceType::EXACTLY_ONE; + } + else { + const Item::Ptr second = toBeCasted->next(context); + + // 2. If the result of atomization is a sequence of more than one atomic value, a type error is raised.[err:XP0004][err:XP0006] + if(second != NULLRCP) { + result = false; + } + else { + if(_di->getSequenceType()->getItemTestType() != SequenceType::ItemType::TEST_ATOMIC_TYPE) + XQThrow(TypeErrorException,X("XQCastableAs::collapseTreeInternal"),X("Cannot cast to a non atomic type")); + // 4. If the result of atomization is a single atomic value, the result of the cast expression depends on the input type and the target type. + // The normative definition of these rules is given in [XQuery 1.0 and XPath 2.0 Functions and Operators]. + result = ((const AnyAtomicType::Ptr)first)->castable(_di->getSequenceType()->getTypeURI(context), _di->getSequenceType()->getConstrainingType()->getName(), context); + } + } + return (const Item::Ptr)context->getItemFactory()->createBoolean(result, context); +} + +std::string XQCastableAs::CastableAsResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); + +} diff --git a/src/ast/XQCommentConstructor.cpp b/src/ast/XQCommentConstructor.cpp new file mode 100644 index 00000000..908cab92 --- /dev/null +++ b/src/ast/XQCommentConstructor.cpp @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQCommentConstructor.cpp,v 1.1 2006/11/03 17:04:20 jpcs Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +XQCommentConstructor::XQCommentConstructor(ASTNode *value, XPath2MemoryManager* mm) + : XQDOMConstructor(mm), + m_value(value) +{ + setType(ASTNode::DOM_CONSTRUCTOR); +} + +Sequence XQCommentConstructor::collapseTreeInternal(DynamicContext *context, int flags) const +{ + Node::Ptr result; + try + { + XMLBuffer value; + getStringValue(m_value, value, context); + + // Check for two dashes in a row, or a dash at the end + bool foundDash = false; + const XMLCh *ptr = value.getRawBuffer(); + const XMLCh *end = ptr + value.getLen(); + while(ptr != end) { + if(*ptr == chDash) { + if(foundDash) break; + foundDash = true; + } + else foundDash = false; + ++ptr; + } + if(foundDash) + XQThrow(ASTException,X("DOM Constructor"),X("It is a dynamic error if the result of the content expression of " + "a computed comment constructor contains two adjacent hyphens or " + "ends with a hyphen. [err:XQDY0072]")); + + result = context->getItemFactory()->createCommentNode(value.getRawBuffer(), context); + } + catch(DOMException& e) { + XQThrow(ASTException,X("DOM Constructor"),e.getMessage()); + } + if(result.notNull()) + return Sequence(result, context->getMemoryManager()); + return Sequence(context->getMemoryManager()); +} + +ASTNode* XQCommentConstructor::staticResolution(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + m_value = new (mm) XQAtomize(m_value, mm); + m_value->setLocationInfo(this); + + m_value = m_value->staticResolution(context); + + return this; +} + +ASTNode* XQCommentConstructor::staticTyping(StaticContext *context) +{ + _src.clear(); + + m_value = m_value->staticTyping(context); + _src.add(m_value->getStaticResolutionContext()); + + _src.getStaticType().flags = StaticType::COMMENT_TYPE; + _src.forceNoFolding(true); + _src.creative(true); + return this; // Never constant fold +} + +const XMLCh* XQCommentConstructor::getNodeType() const +{ + return Node::comment_string; +} + +const ASTNode *XQCommentConstructor::getValue() const +{ + return m_value; +} + +void XQCommentConstructor::setValue(ASTNode *value) +{ + m_value = value; +} + diff --git a/src/ast/XQContextItem.cpp b/src/ast/XQContextItem.cpp new file mode 100644 index 00000000..a0ec36cd --- /dev/null +++ b/src/ast/XQContextItem.cpp @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQContextItem.cpp,v 1.11 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +XQContextItem::XQContextItem(XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr) +{ + setType(ASTNode::CONTEXT_ITEM); +} + +XQContextItem::~XQContextItem() { + //no-op +} + +ASTNode* XQContextItem::staticResolution(StaticContext *context) +{ + return this; +} + +ASTNode *XQContextItem::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.setProperties(StaticResolutionContext::DOCORDER | StaticResolutionContext::GROUPED | + StaticResolutionContext::PEER | StaticResolutionContext::SUBTREE | StaticResolutionContext::SAMEDOC | + StaticResolutionContext::ONENODE | StaticResolutionContext::SELF); + _src.getStaticType() = context->getContextItemType(); + _src.contextItemUsed(true); + return this; +} + +Result XQContextItem::createResult(DynamicContext* context, int flags) const +{ + return new ContextItemResult(this); +} + +XQContextItem::ContextItemResult::ContextItemResult(const LocationInfo *location) + : SingleResult(location) +{ +} + +Item::Ptr XQContextItem::ContextItemResult::getSingleResult(DynamicContext *context) const +{ + const Item::Ptr item = context->getContextItem(); + if(item == NULLRCP) { + XQThrow(DynamicErrorException,X("XQContextItem::ContextItemResult::getSingleResult"), + X("It is an error for the context item to be undefined when using it [err:XPDY0002]")); + } + return item; +} + +std::string XQContextItem::ContextItemResult::asString(DynamicContext *context, int indent) const +{ + return ""; +} diff --git a/src/ast/XQDOMConstructor.cpp b/src/ast/XQDOMConstructor.cpp new file mode 100644 index 00000000..bfe9ab52 --- /dev/null +++ b/src/ast/XQDOMConstructor.cpp @@ -0,0 +1,126 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQDOMConstructor.cpp,v 1.39 2006/11/03 17:04:20 jpcs Exp $ + */ + +#include +#include +#include +#include + +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +XQDOMConstructor::XQDOMConstructor(XPath2MemoryManager* mm) + : ASTNodeImpl(mm) +{ +} + +bool XQDOMConstructor::getStringValue(const VectorOfASTNodes* m_children, XMLBuffer &value, DynamicContext *context) +{ + bool bSomethingFound=false; + for(VectorOfASTNodes::const_iterator itCont = m_children->begin(); + itCont != m_children->end (); ++itCont) { + if(getStringValue(*itCont, value, context)) + bSomethingFound = true; + } + return bSomethingFound; +} + +bool XQDOMConstructor::getStringValue(const ASTNode *child, XMLBuffer &value, DynamicContext *context) +{ + bool bSomethingFound=false; + Result childList = child->collapseTree(context); + Item::Ptr item; + bool addSpace = false; + while((item = childList->next(context)) != NULLRCP) { + if(addSpace) value.append(' '); + else addSpace = true; + value.append(item->asString(context)); + bSomethingFound=true; + } + return bSomethingFound; +} + +void XQDOMConstructor::unescapeEntities(XMLBuffer& buff) const +{ + const XMLCh* value=buff.getRawBuffer(); + unsigned int len=buff.getLen(); + int j=0; + XMLCh* dst=(XMLCh*)value; + for(unsigned int i=0;i= chDigit_0) && (nextCh <= chDigit_9)) + nextVal = (unsigned int)(nextCh - chDigit_0); + else if ((nextCh >= chLatin_A) && (nextCh <= chLatin_F)) + nextVal= (unsigned int)(10 + (nextCh - chLatin_A)); + else if ((nextCh >= chLatin_a) && (nextCh <= chLatin_f)) + nextVal = (unsigned int)(10 + (nextCh - chLatin_a)); + else + XQThrow(ASTException,X("DOM Constructor"),X("Unterminated entity reference [err:XPST0003].")); + if (nextVal >= radix) + XQThrow(ASTException,X("DOM Constructor"),X("Invalid digit inside entity reference [err:XPST0003].")); + else + number = (number * radix) + nextVal; + } + if(!XMLChar1_0::isXMLChar(number)) + XQThrow(ASTException,X("DOM Constructor"),X("Entity reference is not a valid XML character [err:XPST0003].")); + if (number <= 0xFFFD) + dst[j++]=number; + else if (number >= 0x10000 && number <= 0x10FFFF) + { + number -= 0x10000; + dst[j++]= XMLCh((number >> 10) + 0xD800); + dst[j++]= XMLCh((number & 0x3FF) + 0xDC00); + } + i=k; + } else + XQThrow(ASTException,X("DOM Constructor"),X("Invalid entity reference [err:XPST0003].")); + } + else + dst[j++]=value[i]; + } + dst[j++]=0; +} diff --git a/src/ast/XQDebugHook.cpp b/src/ast/XQDebugHook.cpp new file mode 100644 index 00000000..c3868644 --- /dev/null +++ b/src/ast/XQDebugHook.cpp @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQDebugHook.cpp,v 1.15 2006/11/01 16:37:18 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQDebugHook.cpp: implementation of the XQDebugHook class. +////////////////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include +#include +#include +#include + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +XQDebugHook::XQDebugHook(const XMLCh* szFile, unsigned int nLine, unsigned int nColumn, ASTNode* impl, const XMLCh* functionName, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr) +{ + m_impl=impl; + m_szFunctionName=functionName; + setType(ASTNode::DEBUG_HOOK); + setLocationInfo(szFile, nLine, nColumn); +} + +Result XQDebugHook::collapseTree(DynamicContext *context, int flags) const +{ + XQDebugCallback* pDbgCallback=context->getDebugCallback(); + + if(pDbgCallback) + { + if(context->isDebuggingEnabled()) + { + pDbgCallback->IsBreakPointHit(context,getFile(),getLine()); + flags=0; // disable optimizations returning data partially or in a different order + } + if(m_szFunctionName) pDbgCallback->EnterFunction(context,getFile(),m_szFunctionName,getLine(),getColumn()); + } + try + { + Result result=m_impl->collapseTree(context,flags); + if(pDbgCallback) { + Sequence seqRes=result->toSequence(context); + pDbgCallback->ReportResult(context,getFile(), getLine(), getColumn(), seqRes); + if(m_szFunctionName) pDbgCallback->ExitFunction(context,m_szFunctionName); + return seqRes; + } + else + return result; + } + catch(XQException& e) { + if(!e.isErrorReported()) { + if(pDbgCallback && context->isDebuggingEnabled()) + pDbgCallback->ReportFirstError(context, e.getError(), getFile(), getLine()); + e.setErrorReported(); + if(e.getXQueryLine() == 0) + e.setXQueryPosition(this); + } + throw e; + } + // shouldn't get here + assert(0); + return Sequence(context->getMemoryManager()); +} + +ASTNode* XQDebugHook::staticResolution(StaticContext *context) +{ + try { + m_impl=m_impl->staticResolution(context); + } + catch(XQException& e) { + if(e.getXQueryLine() == 0) { + e.setXQueryPosition(this); + } + throw e; + } + return this; +} + +ASTNode* XQDebugHook::staticTyping(StaticContext *context) +{ + try { + m_impl=m_impl->staticTyping(context); + } + catch(XQException& e) { + if(e.getXQueryLine() == 0) { + e.setXQueryPosition(this); + } + throw e; + } + return this; +} + +const StaticResolutionContext &XQDebugHook::getStaticResolutionContext() const +{ + return m_impl->getStaticResolutionContext(); +} + +const XMLCh *XQDebugHook::getFunctionName() const +{ + return m_szFunctionName; +} diff --git a/src/ast/XQDocumentConstructor.cpp b/src/ast/XQDocumentConstructor.cpp new file mode 100644 index 00000000..76810a78 --- /dev/null +++ b/src/ast/XQDocumentConstructor.cpp @@ -0,0 +1,160 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQDocumentConstructor.cpp,v 1.1 2006/11/03 17:04:20 jpcs Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +XQDocumentConstructor::XQDocumentConstructor(ASTNode *value, XPath2MemoryManager* mm) + : XQDOMConstructor(mm), + m_value(value) +{ + setType(ASTNode::DOM_CONSTRUCTOR); +} + +static bool isTextNode(const Node::Ptr &node) +{ + return node->dmNodeKind() == Node::text_string; +} + +Sequence XQDocumentConstructor::collapseTreeInternal(DynamicContext *context, int flags) const +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + try + { + std::vector childList; + + Result oneChild = m_value->collapseTree(context); + Item::Ptr child; + bool lastWasAtomic = false; + while((child = oneChild->next(context)) != NULLRCP) + { + if(child->isNode()) + { + lastWasAtomic = false; + Node::Ptr sourceNode=(Node::Ptr)child; + // If the content sequence contains an attribute node following a node that is not an attribute node, a type + // error is raised [err:XPTY0004]. + if(sourceNode->dmNodeKind()==Node::attribute_string) + XQThrow(ASTException,X("DOM Constructor"), + X("An attribute node cannot be a child of a document [err:XPTY0004].")); + // If the content sequence contains a document node, the document node is replaced in the content + // sequence by its children. + else if(sourceNode->dmNodeKind()==Node::document_string) { + Result children = sourceNode->dmChildren(context, this); + Node::Ptr childNode; + while((childNode = children->next(context)).notNull()) { + // merge consecutive text nodes + if(isTextNode(childNode) && !childList.empty() && isTextNode(childList.back())) { + const XMLCh* buff=XPath2Utils::concatStrings(childList.back()->dmStringValue(context), + childNode->dmStringValue(context), mm); + childList.pop_back(); + childList.push_back(context->getItemFactory()->createTextNode(buff, context)); + } + else + childList.push_back(childNode); + } + } + // Adjacent text nodes in the content sequence are merged into a single text node by concatenating + // their contents, with no intervening blanks. After concatenation, any text node whose content is + // a zero-length string is deleted from the content sequence. + else if(isTextNode(sourceNode) && !childList.empty() && isTextNode(childList.back())) { + const XMLCh* buff=XPath2Utils::concatStrings(childList.back()->dmStringValue(context), + sourceNode->dmStringValue(context), mm); + childList.pop_back(); + childList.push_back(context->getItemFactory()->createTextNode(buff, context)); + } + else { + // if it's a text node, ensure it's not empty + if(!isTextNode(sourceNode) || !XPath2Utils::equals(sourceNode->dmStringValue(context),0)) + childList.push_back(sourceNode); + } + } + else + { + const XMLCh* valueStr=child->asString(context); + if(lastWasAtomic) + { + XMLCh space[]={ ' ', 0 }; + valueStr=XPath2Utils::concatStrings(space,valueStr,mm); + } + lastWasAtomic = true; + // empty strings are stripped + if(valueStr && *valueStr) + { + if(!childList.empty() && isTextNode(childList.back())) { + const XMLCh* buff=XPath2Utils::concatStrings(childList.back()->dmStringValue(context),valueStr,mm); + + childList.pop_back(); + childList.push_back(context->getItemFactory()->createTextNode(buff, context)); + } + else { + childList.push_back(context->getItemFactory()->createTextNode(valueStr, context)); + } + } + } + } + + return Sequence(context->getItemFactory()->createDocumentNode(childList, context), mm); + } + catch(DOMException& e) { + XQThrow(ASTException,X("DocumentConstructor"),e.getMessage()); + } +} + +ASTNode* XQDocumentConstructor::staticResolution(StaticContext *context) +{ + m_value = m_value->staticResolution(context); + return this; +} + +ASTNode* XQDocumentConstructor::staticTyping(StaticContext *context) +{ + _src.clear(); + + m_value = m_value->staticTyping(context); + _src.add(m_value->getStaticResolutionContext()); + + _src.getStaticType().flags = StaticType::DOCUMENT_TYPE; + _src.forceNoFolding(true); + _src.creative(true); + return this; // Never constant fold +} + +const XMLCh* XQDocumentConstructor::getNodeType() const +{ + return Node::document_string; +} + +const ASTNode *XQDocumentConstructor::getValue() const +{ + return m_value; +} + +void XQDocumentConstructor::setValue(ASTNode *value) +{ + m_value = value; +} + diff --git a/src/ast/XQDocumentOrder.cpp b/src/ast/XQDocumentOrder.cpp new file mode 100644 index 00000000..1375b932 --- /dev/null +++ b/src/ast/XQDocumentOrder.cpp @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQDocumentOrder.cpp,v 1.5 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" + +#include +#include +#include + +XQDocumentOrder::XQDocumentOrder(ASTNode* expr, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), + expr_(expr), + unordered_(false) +{ + setType(ASTNode::DOCUMENT_ORDER); +} + +ASTNode* XQDocumentOrder::staticResolution(StaticContext *context) +{ + unordered_ = context->getNodeSetOrdering() == StaticContext::ORDERING_UNORDERED; + + expr_ = expr_->staticResolution(context); + + return this; +} + +ASTNode *XQDocumentOrder::staticTyping(StaticContext *context) +{ + _src.clear(); + + expr_ = expr_->staticTyping(context); + _src.getStaticType() = expr_->getStaticResolutionContext().getStaticType(); + _src.add(expr_->getStaticResolutionContext()); + + // Check if nodes will be returned + if(!_src.getStaticType().containsType(StaticType::NODE_TYPE)) { + return expr_; + } + + // Check if it's already in document order + if((expr_->getStaticResolutionContext().getProperties() & + StaticResolutionContext::DOCORDER) != 0) { + return expr_; + } + + _src.setProperties(expr_->getStaticResolutionContext().getProperties() + | StaticResolutionContext::DOCORDER + | StaticResolutionContext::GROUPED); + + if(expr_->isConstant()) { + return constantFold(context); + } + return this; +} + +Result XQDocumentOrder::createResult(DynamicContext* context, int flags) const +{ + if(unordered_) { + return new UniqueNodesResult(this, expr_->collapseTree(context, flags), context); + } + else { + return new DocumentOrderResult(this, expr_->collapseTree(context, flags), context); + } +} + +void DocumentOrderResult::getResult(Sequence &toFill, DynamicContext *context) const +{ + toFill = parent_->toSequence(context); + parent_ = 0; + toFill.sortIntoDocumentOrder(context); +} + +Item::Ptr UniqueNodesResult::next(DynamicContext *context) +{ + Item::Ptr result = parent_->next(context); + + if(nTypeOfItemsInLastStep_ == 0 && result.notNull()) + nTypeOfItemsInLastStep_ = result->isNode() ? 1 : 2; + + if(nTypeOfItemsInLastStep_ == 1) { + while(result.notNull()) { + if(noDups_.insert(result).second) break; + else result = parent_->next(context); + } + } + + return result; +} diff --git a/src/ast/XQElementConstructor.cpp b/src/ast/XQElementConstructor.cpp new file mode 100644 index 00000000..cc8c9770 --- /dev/null +++ b/src/ast/XQElementConstructor.cpp @@ -0,0 +1,576 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQElementConstructor.cpp,v 1.1 2006/11/03 17:04:20 jpcs Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +static const XMLCh *definePrefix(const XMLCh *szPrefix, const XMLCh *szURI, const XQScopedNamespace &newNSScope, + XQScopedNamespace &locallyDefinedNamespaces, std::vector &attrList, + DynamicContext *context); + +XQElementConstructor::XQElementConstructor(ASTNode* name, VectorOfASTNodes* attrList, VectorOfASTNodes* children, + XPath2MemoryManager* mm) + : XQDOMConstructor(mm), + m_name(name), + m_attrList(attrList), + m_children(children), + m_namespaces(NULL) +{ + setType(ASTNode::DOM_CONSTRUCTOR); +} + +static bool isTextNode(const Node::Ptr &node) +{ + return node->dmNodeKind() == Node::text_string; +} + +Sequence XQElementConstructor::collapseTreeInternal(DynamicContext *context, int flags) const +{ + Node::Ptr result; + try + { + // Add a new scope for the namespace definitions, before we try to assign a URI to the name of the element + XQScopedNamespace locallyDefinedNamespaces(context->getMemoryManager(), NULL); + XQScopedNamespace newNSScope(context->getMemoryManager(), context->getNSResolver()); + AutoNsScopeReset jan(context, &newNSScope); + + std::vector attrList; + if(m_namespaces != 0) { + RefHashTableOfEnumerator nsEnumVal(m_namespaces, false, context->getMemoryManager()); + RefHashTableOfEnumerator nsEnumKey(m_namespaces, false, context->getMemoryManager()); + while(nsEnumVal.hasMoreElements()) + { + XMLCh* uri=&nsEnumVal.nextElement(); + XMLCh* prefix=(XMLCh*)nsEnumKey.nextElementKey(); + locallyDefinedNamespaces.addNamespaceBinding(prefix, uri); + Node::Ptr node; + if(XPath2Utils::equals(prefix, XMLUni::fgZeroLenString)) { + context->setDefaultElementAndTypeNS(uri); + node = context->getItemFactory()->createAttributeNode(XMLUni::fgXMLNSURIName, XMLUni::fgZeroLenString, + XMLUni::fgXMLNSString, uri, context); + } + else { + context->setNamespaceBinding(prefix, uri); + node = context->getItemFactory()->createAttributeNode(XMLUni::fgXMLNSURIName, XMLUni::fgXMLNSString, prefix, uri, + context); + } + + attrList.push_back(node); + } + } + if(m_attrList != 0) { + for(VectorOfASTNodes::const_iterator itAttr = m_attrList->begin(); itAttr != m_attrList->end (); ++itAttr) { + Result oneAttribute = (*itAttr)->collapseTree(context); + Item::Ptr attr; + while((attr = oneAttribute->next(context)) != NULLRCP) { + assert(attr->isNode()); + Node::Ptr node=(Node::Ptr)attr; + + assert(node->dmNodeKind() == Node::attribute_string); + attrList.push_back(node); + } + } + } + + // Now that we have converted our namespace attributes into namespace bindings, resolve the name + Result resName=m_name->collapseTree(context); + AnyAtomicType::Ptr itemName=resName->next(context); + if(itemName==NULLRCP || resName->next(context)!=NULLRCP) + XQThrow(ASTException,X("DOM Constructor"), + X("The name for the element must be a single xs:QName, xs:string or xs:untypedAtomic item [err:XPTY0004]")); + + const XMLCh* nodeUri=NULL, *nodePrefix=NULL, *nodeName=NULL; + if(itemName->getPrimitiveTypeIndex()==AnyAtomicType::QNAME) + { + const ATQNameOrDerived* pQName=(const ATQNameOrDerived*)(const AnyAtomicType*)itemName; + nodeUri=pQName->getURI(); + nodePrefix=pQName->getPrefix(); + nodeName=pQName->getName(); + } + else if(itemName->getPrimitiveTypeIndex()==AnyAtomicType::STRING || + itemName->getPrimitiveTypeIndex()==AnyAtomicType::UNTYPED_ATOMIC) + { + const XMLCh* pString=itemName->asString(context); + if(!XMLChar1_0::isValidQName(pString, XMLString::stringLen(pString))) + XQThrow(ASTException,X("DOM Constructor"), + X("The name for the element cannot be converted to a xs:QName [err:XQDY0074]")); + + nodePrefix=XPath2NSUtils::getPrefix(pString, context->getMemoryManager()); + try + { + nodeUri=context->getUriBoundToPrefix(nodePrefix, this); + } + catch(NamespaceLookupException&) + { + XQThrow(ASTException,X("DOM Constructor"),X("The name for the element cannot be converted to a " + "xs:QName because the prefix is undefined [err:XQDY0074]")); + } + // if the prefix was empty and we didn't find a xmlns=".." declaration in the scope, use the default element/type ns + if((nodePrefix==0 || *nodePrefix==0) && (nodeUri==0 || *nodeUri==0)) + nodeUri=context->getDefaultElementAndTypeNS(); + // keep the specified prefix in the node name + nodeName=pString; + } + else + XQThrow(ASTException,X("DOM Constructor"),X("The name for the element must be either a xs:QName, " + "xs:string or xs:untypedAtomic [err:XPTY0004]")); + + // TODO: what error should we return if the string is empty? + if(nodeName==NULL || *nodeName==0) + XQThrow(ASTException,X("DOM Constructor"),X("The name for the element is empty")); + + std::vector childList; + for (VectorOfASTNodes::const_iterator itCont = m_children->begin(); itCont != m_children->end (); ++itCont) + { + ASTNode* childItem=(*itCont); + Result children=childItem->collapseTree(context); + Item::Ptr child; + bool lastWasAtomic = false; + while((child = children->next(context)) != NULLRCP) + { + if(child->isNode()) + { + lastWasAtomic = false; + Node::Ptr sourceNode = (Node::Ptr)child; + + // DOCUMENT node + if(sourceNode->dmNodeKind() == Node::document_string) + { + Result children = sourceNode->dmChildren(context, this); + Node::Ptr childNode; + while((childNode = children->next(context)).notNull()) { + // merge consecutive text nodes + if(isTextNode(childNode) && !childList.empty() && isTextNode(childList.back())) { + const XMLCh* buff=XPath2Utils::concatStrings(childList.back()->dmStringValue(context), + childNode->dmStringValue(context), + context->getMemoryManager()); + childList.pop_back(); + childList.push_back(context->getItemFactory()->createTextNode(buff, context)); + } + else + childList.push_back(childNode); + } + } + + // ATTRIBUTE node + else if(sourceNode->dmNodeKind() == Node::attribute_string) + { + if(!childList.empty()) + XQThrow(ASTException,X("DOM Constructor"),X("Attribute nodes must be created before the " + "other child nodes of an element [err:XQTY0024]")); + + // check if the attribute has a prefix that has been defined + ATQNameOrDerived::Ptr name = sourceNode->dmNodeName(context); + const XMLCh *szPrefix = ((const ATQNameOrDerived*)name.get())->getPrefix(); + const XMLCh *szURI = ((const ATQNameOrDerived*)name.get())->getURI(); + if(szPrefix!=NULL && *szPrefix!=0) + { + const XMLCh *newPrefix = definePrefix(szPrefix, szURI, newNSScope, locallyDefinedNamespaces, attrList, + context); + if(newPrefix != szPrefix) + { + sourceNode = context->getItemFactory()-> + createAttributeNode(szURI, newPrefix, ((const ATQNameOrDerived*)name.get())->getName(), + sourceNode->dmStringValue(context), context); + } + } + attrList.push_back(sourceNode); + } + + else + { + if(isTextNode(sourceNode) && !childList.empty() && isTextNode(childList.back())) { + const XMLCh* buff=XPath2Utils::concatStrings(childList.back()->dmStringValue(context), + sourceNode->dmStringValue(context), + context->getMemoryManager()); + childList.pop_back(); + childList.push_back(ItemFactory::ElementChild(context->getItemFactory()->createTextNode(buff, context), + /*clone*/false)); + } + else { + ASTNode* pChild=childItem; + if((unsigned int)pChild->getType()==ASTNode::DEBUG_HOOK) + pChild=((XQDebugHook*)pChild)->m_impl; + // if it's a text node, ensure it's not empty + if(!isTextNode(sourceNode) || !XPath2Utils::equals(sourceNode->dmStringValue(context),0)) + // if the node we should add as a child was generated by a DOM constructor, we can skip cloning it + childList.push_back(ItemFactory::ElementChild(sourceNode, (unsigned int)pChild->getType()!= + ASTNode::DOM_CONSTRUCTOR)); + } + } + } + else + { + const XMLCh* valueStr=child->asString(context); + if(lastWasAtomic) + { + XMLCh space[]={ ' ', 0 }; + valueStr=XPath2Utils::concatStrings(space,valueStr,context->getMemoryManager()); + } + lastWasAtomic = true; + // empty strings are stripped + if(valueStr && *valueStr) + { + if(!childList.empty() && isTextNode(childList.back())) { + const XMLCh* buff=XPath2Utils::concatStrings(childList.back()->dmStringValue(context),valueStr, + context->getMemoryManager()); + + childList.pop_back(); + childList.push_back(context->getItemFactory()->createTextNode(buff, context)); + } + else { + childList.push_back(context->getItemFactory()->createTextNode(valueStr, context)); + } + } + } + } + } + result = context->getItemFactory()->createElementNode(nodeUri, nodePrefix, nodeName, attrList, childList, context); + } + catch(DOMException& e) { + XQThrow(ASTException,X("ElementConstructor"),e.getMessage()); + } + if(result.notNull()) + return Sequence(result, context->getMemoryManager()); + return Sequence(context->getMemoryManager()); +} + +ASTNode* XQElementConstructor::staticResolution(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + // Add a new scope for the namespace definitions + XQScopedNamespace newNSScope(context->getMemoryManager(), context->getNSResolver()); + AutoNsScopeReset jan(context, &newNSScope); + unsigned int i; + + if(m_attrList != 0) { + AutoDelete dContext(context->createDynamicContext()); + dContext->setMemoryManager(context->getMemoryManager()); + // process the namespace attributes (they are all at the beginning of the list) + for (VectorOfASTNodes::iterator it=m_attrList->begin();it!=m_attrList->end();) + { + ASTNode* astNode=*it; + if(astNode->getType()==ASTNode::DEBUG_HOOK) + astNode=((XQDebugHook*)astNode)->m_impl; + assert(astNode->getType()==ASTNode::DOM_CONSTRUCTOR && + ((XQDOMConstructor*)astNode)->getNodeType()==Node::attribute_string); + XQDOMConstructor* attrConstructor=(XQDOMConstructor*)astNode; + const ASTNode* dItem=attrConstructor->getName(); + assert(dItem!=NULL && dItem->getType() == ASTNode::LITERAL); + const ItemConstructor* itemConstr=((XQLiteral*)dItem)->getItemConstructor(); + assert(XPath2Utils::equals(itemConstr->getTypeURI(), + SchemaSymbols::fgURI_SCHEMAFORSCHEMA) && + XPath2Utils::equals(itemConstr->getTypeName(), + SchemaSymbols::fgDT_QNAME)); + + // createItem will throw an exception if the prefix is undefined + AnyAtomicType::Ptr atomName; + try + { + atomName = itemConstr->createItem(dContext); + } + catch(XQException& e) + { + // this is a normal attribute, there are no more namespace declarations + break; + } + + const ATQNameOrDerived* pQName=(const ATQNameOrDerived*)atomName.get(); + const XMLCh* XMLNSPrefix=NULL; + if((pQName->getPrefix()==NULL || *pQName->getPrefix()==0) && + XPath2Utils::equals(pQName->getName(),XMLUni::fgXMLNSString)) { + XMLNSPrefix=XMLUni::fgZeroLenString; + } + else if(XPath2Utils::equals(pQName->getPrefix(), XMLUni::fgXMLNSString)) { + XMLNSPrefix=pQName->getName(); + } + else + // no more namespace declaration + break; + // we are a namespace attribute: check that we have a constant value + const VectorOfASTNodes *children=attrConstructor->getChildren(); + const XMLCh* uri=NULL; + if(children->size()==0) { // supporting Namespace 1.1 means unsetting the binding... + uri=XMLUni::fgZeroLenString; + } + else if(children->size()>1 || ((*children)[0]->getType()!=ASTNode::LITERAL && + (*children)[0]->getType()!=ASTNode::SEQUENCE)) { + XQThrow(StaticErrorException,X("DOM Constructor"),X("The value of a namespace declaration attribute must " + "be a literal string [err:XQST0022]")); + } + else { + Item::Ptr nsUri = ((XQLiteral*)(*children)[0])->getItemConstructor()->createItem(dContext); + if(nsUri == NULLRCP) + XQThrow(StaticErrorException,X("DOM Constructor"),X("The value of a namespace declaration attribute must " + "be a literal string [err:XQST0022]")); + uri=nsUri->asString(dContext); + } + if(XMLNSPrefix != XMLUni::fgZeroLenString) { + context->setNamespaceBinding(XMLNSPrefix, uri); + } + else { + context->setDefaultElementAndTypeNS(uri); + } + if(m_namespaces==NULL) + m_namespaces = new (mm) RefHashTableOf< XMLCh >(5, false, mm); + + if(m_namespaces->containsKey(XMLNSPrefix)) + XQThrow(StaticErrorException,X("DOM Constructor"),X("Two namespace declaration attributes specified by a direct ele" + "ment constructor do not have distinct names. [err:XQST0071]")); + m_namespaces->put((void*)mm->getPooledString(XMLNSPrefix), (XMLCh*)mm->getPooledString(uri)); + it=m_attrList->erase(it); + } + + // now run static resolution on the real attributes + for (i=0;isize();i++) { + (*m_attrList)[i] = (*m_attrList)[i]->staticResolution(context); + } + // now that we have added the local namespace declaration, check for duplicate attribute names + std::set attrNames; + for (i=0;isize();i++) + { + ASTNode* astNode=(*m_attrList)[i]; + if(astNode->getType()==ASTNode::DEBUG_HOOK) + astNode=((XQDebugHook*)astNode)->m_impl; + assert(astNode->getType()==ASTNode::DOM_CONSTRUCTOR && + ((XQDOMConstructor*)astNode)->getNodeType()==Node::attribute_string); + XQDOMConstructor* attrConstructor=(XQDOMConstructor*)astNode; + const ASTNode* dItem=attrConstructor->getName(); + if(dItem->getType() == ASTNode::ATOMIZE) { + dItem = ((XQAtomize*)dItem)->getExpression(); + } + assert(dItem->getType()==ASTNode::SEQUENCE); + const ItemConstructor::Vector &ics = ((XQSequence*)dItem)->getItemConstructors(); + assert(ics.size() == 1); + Item::Ptr item = ics[0]->createItem(dContext); + QualifiedName attrName(item->asString(dContext)); + XMLBuffer buff(200, dContext->getMemoryManager()); + if(attrName.getPrefix()!=0 && *attrName.getPrefix()!=0) + { + buff.append(chOpenCurly); + buff.append(dContext->getUriBoundToPrefix(attrName.getPrefix(), this)); + buff.append(chCloseCurly); + } + buff.append(attrName.getName()); + if(attrNames.find(buff.getRawBuffer())!=attrNames.end()) + XQThrow(StaticErrorException,X("DOM Constructor"),X("Two attributes specified by a direct element constructor do not have distinct expanded QNames. [err:XQST0040]")); + attrNames.insert(XMLString::replicate(buff.getRawBuffer(), dContext->getMemoryManager())); + } + } + if(m_name) + { + // verify the namespace prefix used by the node name + if(m_name->getType() == ASTNode::LITERAL) { + const ItemConstructor* itemConstr=((XQLiteral*)m_name)->getItemConstructor(); + // if the type is xs:QName, it was a named constructor, and it must be checked + if(XPath2Utils::equals(itemConstr->getTypeURI(),SchemaSymbols::fgURI_SCHEMAFORSCHEMA) && + XPath2Utils::equals(itemConstr->getTypeName(),SchemaSymbols::fgDT_QNAME)) + { + AutoDelete dContext(context->createDynamicContext()); + dContext->setMemoryManager(context->getMemoryManager()); + // createItem will throw an exception if the prefix is undefined + AnyAtomicType::Ptr atomName; + try + { + atomName = itemConstr->createItem(dContext); + } + catch(XQException& e) + { + XMLBuffer buff(1023, context->getMemoryManager()); + buff.set(e.getError()); + int index=XMLString::indexOf(buff.getRawBuffer(),chOpenSquare); + if(index!=-1) + XMLString::copyString(buff.getRawBuffer()+index, X("[err:XPST0081]")); + else + buff.append(X("[err:XPST0081]")); + XQThrow(StaticErrorException, X("XQElementConstructor::staticResolution"), buff.getRawBuffer()); + } + } + } + // and run static resolution + m_name = new (mm) XQAtomize(m_name, mm); + m_name->setLocationInfo(this); + m_name = m_name->staticResolution(context); + } + + + for (i=0;isize();i++) { + // normalize whitespace and expand entities in string literals + if((*m_children)[i]->getType()==LITERAL) + { + AutoDelete dContext(context->createDynamicContext()); + dContext->setMemoryManager(mm); + XQLiteral *lit = (XQLiteral*)(*m_children)[i]; + Item::Ptr item = lit->getItemConstructor()->createItem(dContext); + if(((AnyAtomicType*)(const Item*)item)->getPrimitiveTypeIndex()==AnyAtomicType::STRING) + { + const XMLCh* str=item->asString(dContext); + XMLBuffer buff(XMLString::stringLen(str)+1, mm); + buff.append(str); + unescapeEntities(buff); + AnyAtomicTypeConstructor *newIC = new (mm) + AnyAtomicTypeConstructor( + SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_STRING, + mm->getPooledString(buff.getRawBuffer()), AnyAtomicType::STRING); + lit->setItemConstructor(newIC); + } + } + (*m_children)[i] = (*m_children)[i]->staticResolution(context); + } + + return this; +} + +ASTNode* XQElementConstructor::staticTyping(StaticContext *context) +{ + _src.clear(); + + // Add a new scope for the namespace definitions + XQScopedNamespace newNSScope(context->getMemoryManager(), context->getNSResolver()); + AutoNsScopeReset jan(context, &newNSScope); + + if(m_namespaces != 0) { + RefHashTableOfEnumerator nsEnumVal(m_namespaces, false, context->getMemoryManager()); + RefHashTableOfEnumerator nsEnumKey(m_namespaces, false, context->getMemoryManager()); + while(nsEnumVal.hasMoreElements()) { + XMLCh *prefix = (XMLCh*)nsEnumKey.nextElementKey(); + XMLCh *uri = &nsEnumVal.nextElement(); + if(XPath2Utils::equals(prefix, XMLUni::fgZeroLenString)) { + context->setDefaultElementAndTypeNS(uri); + } + else { + context->setNamespaceBinding(prefix, uri); + } + } + } + + unsigned int i; + if(m_attrList != 0) { + for(i = 0; i < m_attrList->size(); ++i) { + (*m_attrList)[i] = (*m_attrList)[i]->staticTyping(context); + _src.add((*m_attrList)[i]->getStaticResolutionContext()); + } + } + + if(m_name) { + m_name = m_name->staticTyping(context); + _src.add(m_name->getStaticResolutionContext()); + } + + for(i = 0; i < m_children->size(); ++i) { + (*m_children)[i] = (*m_children)[i]->staticTyping(context); + _src.add((*m_children)[i]->getStaticResolutionContext()); + } + + _src.getStaticType().flags = StaticType::ELEMENT_TYPE; + _src.forceNoFolding(true); + _src.creative(true); + return this; // Never constant fold +} + +const XMLCh *definePrefix(const XMLCh *szPrefix, const XMLCh *szURI, const XQScopedNamespace &newNSScope, + XQScopedNamespace &locallyDefinedNamespaces, std::vector &attrList, + DynamicContext *context) +{ + // check if the attribute has a prefix that has been defined + const XMLCh* associatedURI=locallyDefinedNamespaces.lookupNamespaceURI(szPrefix); + if(associatedURI == NULL) + associatedURI=newNSScope.lookupNamespaceURI(szPrefix); + + if(associatedURI==NULL) // prefix is not defined + { + locallyDefinedNamespaces.addNamespaceBinding(szPrefix,szURI); + attrList.push_back(context->getItemFactory()-> + createAttributeNode(XMLUni::fgXMLNSURIName, XMLUni::fgXMLNSString, szPrefix, szURI, context)); + } + else if(!XPath2Utils::equals(szURI, associatedURI)) // prefix is defined, but it is associated to another URI + { + if(locallyDefinedNamespaces.lookupNamespaceURI(szPrefix)==NULL) // prefix is inherited, override it + { + locallyDefinedNamespaces.addNamespaceBinding(szPrefix,szURI); + attrList.push_back(context->getItemFactory()-> + createAttributeNode(XMLUni::fgXMLNSURIName, XMLUni::fgXMLNSString, szPrefix, szURI, context)); + } + else // prefix is defined here, rename it + { + XMLCh szNumBuff[20]; + const XMLCh *szInitialPrefix = szPrefix; + long index = 1; + while(locallyDefinedNamespaces.lookupNamespaceURI(szPrefix) != NULL) { + static XMLCh szUnderScore[] = { chUnderscore, chNull }; + XMLString::binToText(index++, szNumBuff, 19, 10); + szPrefix = XPath2Utils::concatStrings(szInitialPrefix, szUnderScore, szNumBuff, context->getMemoryManager()); + } + + locallyDefinedNamespaces.addNamespaceBinding(szPrefix,szURI); + attrList.push_back(context->getItemFactory()-> + createAttributeNode(XMLUni::fgXMLNSURIName, XMLUni::fgXMLNSString, szPrefix, szURI, context)); + } + } + + return szPrefix; +} + +const XMLCh* XQElementConstructor::getNodeType() const +{ + return Node::element_string; +} + +const ASTNode *XQElementConstructor::getName() const +{ + return m_name; +} + +const VectorOfASTNodes *XQElementConstructor::getAttributes() const +{ + return m_attrList; +} + +const VectorOfASTNodes *XQElementConstructor::getChildren() const +{ + return m_children; +} + +void XQElementConstructor::setName(ASTNode *name) +{ + m_name = name; +} diff --git a/src/ast/XQFLWOR.cpp b/src/ast/XQFLWOR.cpp new file mode 100644 index 00000000..53679bfb --- /dev/null +++ b/src/ast/XQFLWOR.cpp @@ -0,0 +1,1032 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQFLWOR.cpp,v 1.30 2006/11/01 16:37:18 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQFLWOR.cpp: implementation of the XQFLWOR class. +////////////////////////////////////////////////////////////////////// + +#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 + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +// needed to sort +#include +#include +#include +#include +#include + +using namespace std; + +static XMLCh szForLoopAccumulator[] = { chUnderscore, chUnderscore, + chLatin_R, chLatin_e, + chLatin_t, chLatin_u, + chLatin_r, + chLatin_n, chUnderscore, + chLatin_V, chLatin_a, + chLatin_l, chLatin_u, + chLatin_e, chUnderscore, + chNull }; + +///////////////////////////////////////////////////////////////////// +// SortableItem + +SortableItem::SortableItem() +{ + m_bAscending=1; + m_bIsMax=0; + m_bIsMin=0; + m_context=NULL; + m_item=NULL; + m_collation=NULL; +} + +SortableItem::SortableItem(const SortableItem& other) +{ + m_bAscending=other.m_bAscending; + m_bIsMax=other.m_bIsMax; + m_bIsMin=other.m_bIsMin; + m_context=other.m_context; + m_item=other.m_item; + m_collation=other.m_collation; +} + +bool SortableItem::operator==(const SortableItem& other) const +{ + if(m_bIsMax && other.m_bIsMax) + return true; + if(m_bIsMin && other.m_bIsMin) + return true; + if(!m_bIsMax && !m_bIsMin && !other.m_bIsMax && !other.m_bIsMin) + return Equals::equals(m_item,other.m_item,m_collation,m_context,m_info); + return false; +} + +bool SortableItem::operator>(const SortableItem& other) const +{ + if(other.m_bIsMax || m_bIsMin) + return false; + if(m_bIsMax || other.m_bIsMin) + return true; + return GreaterThan::greater_than(m_item,other.m_item,m_collation,m_context,m_info); +} + +static bool compareHelper(const XQFLWOR::ResultPair &firstArg, const XQFLWOR::ResultPair &secondArg) +{ + XQSort::SortItems::const_iterator it1,it2; + // If V1 and V2 are the values of an ordering expression for input items I1 and I2 respectively, then: + for(it1=firstArg.second.begin(), it2=secondArg.second.begin();it1!=firstArg.second.end() && it2!=secondArg.second.end();++it1,++it2) { + assert((*it1).m_bAscending==(*it2).m_bAscending); + // if they are equal, go to the next ordering key to determine ordering + if((*it1) == (*it2)) + continue; + else if((*it1).m_bAscending) + // a) If the ordering expression is ascending, and if V2 gt V1 is true, then I1 precedes I2 in the output sequence. + return ((*it2) > (*it1)); + else + // b) If the ordering expression is descending, and if V1 gt V2 is true, then I1 precedes I2 in the output sequence. + return ((*it1) > (*it2)); + } + // c) If neither V1 gt V2 nor V2 gt V1 is true, and stable is specified, then the input order of I1 and I2 is preserved in output sequence. + // d) If neither V1 gt V2 nor V2 gt V1 is true, and stable is not specified, then the order of I1 and I2 in the output sequence is implementation-defined. + // These are handled with the choice of sort algorithm below + return false; +} + +const long XQSort::SortSpec::ascending=1; +const long XQSort::SortSpec::descending=2; +const long XQSort::SortSpec::empty_greatest=4; +const long XQSort::SortSpec::empty_least=8; + +XQSort::SortSpec::SortSpec(ASTNode* expr, sortModifier modifier, const XMLCh* collation) + : _expr(expr), + _modifier(modifier), + _collationURI(collation), + _collation(0) +{ +} + +void XQSort::SortSpec::staticResolution(StaticContext *context, StaticResolutionContext &src) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + SequenceType *zero_or_one = new (mm) SequenceType(new (mm) SequenceType::ItemType(SequenceType::ItemType::TEST_ANYTHING), + SequenceType::QUESTION_MARK); + zero_or_one->setLocationInfo(this); + + _expr = new (mm) XQAtomize(_expr, mm); + _expr->setLocationInfo(this); + _expr = new (mm) XQPromoteUntyped(_expr, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_STRING, mm); + _expr->setLocationInfo(this); + _expr = new XQTreatAs(_expr, zero_or_one, mm); + _expr->setLocationInfo(this); + _expr = _expr->staticResolution(context); +} + +void XQSort::SortSpec::staticTyping(StaticContext *context, StaticResolutionContext &src) +{ + _expr = _expr->staticTyping(context); + src.add(_expr->getStaticResolutionContext()); + + if(_collationURI == NULL) + _collation = context->getDefaultCollation(this); + else { + _collation = context->getCollation(_collationURI, this); + } +} + +SortableItem XQSort::SortSpec::buildKey(DynamicContext* context) +{ + Result atomized = _expr->collapseTree(context); + + SortableItem value; + value.m_info = this; + value.m_item = atomized->next(context); + + if(!value.m_item.isNull()) { + // if it's a NaN, it must be treated as if it were the empty sequence + const AnyAtomicType *atom = (const AnyAtomicType*)value.m_item.get(); + if(atom->isNumericValue() && XPath2Utils::equals(atom->asString(context), Numeric::NaN_string)) + value.m_item = NULL; + } + + value.m_bAscending = (_modifier & ascending) && !(_modifier & descending); + + if(value.m_item.isNull()) { + value.m_bIsMax = (_modifier & empty_greatest) && !(_modifier & empty_least); + value.m_bIsMin = !(_modifier & empty_greatest) || (_modifier & empty_least); + } + + value.m_context = context; + value.m_collation = _collation; + + return value; +} + +const ASTNode *XQSort::SortSpec::getExpression() const +{ + return _expr; +} + +XQSort::SortSpec::sortModifier XQSort::SortSpec::getModifier() const +{ + return _modifier; +} + +const XMLCh *XQSort::SortSpec::getCollation() const +{ + return _collationURI; +} + +const Collation *XQSort::SortSpec::getCollationObject() const +{ + return _collation; +} + +void XQSort::SortSpec::setExpression(ASTNode *expr) +{ + _expr = expr; +} + +///////////////////////////////////////////////////////////////////// +// XQSort + +XQSort::XQSort(XQSort::sortType type, VectorOfSortSpec* specList) + : _type(type), + _specList(specList) +{ + +} + +void XQSort::staticResolution(StaticContext *context, StaticResolutionContext &src) +{ + for(VectorOfSortSpec::iterator it = _specList->begin(); it != _specList->end(); ++it) { + (*it)->staticResolution(context, src); + } +} + +void XQSort::staticTyping(StaticContext *context, StaticResolutionContext &src) +{ + for(VectorOfSortSpec::iterator it = _specList->begin(); it != _specList->end(); ++it) { + (*it)->staticTyping(context, src); + } +} + +XQSort::SortItems XQSort::buildKeys(DynamicContext *context) const +{ + // create a vector to hold the data types of the ordering items, and fill it with UNTYPED_ATOMIC + vector orderingItemsTypes; + VectorOfSortSpec::const_iterator it; + for(it=_specList->begin(); it!=_specList->end(); ++it) + orderingItemsTypes.push_back(AnyAtomicType::UNTYPED_ATOMIC); + + XQSort::SortItems keys; + // evaluate all the keys in the new context + vector::iterator typeIt=orderingItemsTypes.begin(); + for(it=_specList->begin(); it!=_specList->end(); ++it,++typeIt) + { + SortableItem orderingItem=(*it)->buildKey(context); + AnyAtomicType::AtomicObjectType keyType=AnyAtomicType::UNTYPED_ATOMIC; + if(orderingItem.m_item!=NULLRCP) + keyType=orderingItem.m_item->getPrimitiveTypeIndex(); + + if(keyType==AnyAtomicType::ANY_SIMPLE_TYPE) + { + orderingItem.m_item=context->getItemFactory()->createString(orderingItem.m_item->asString(context),context); + keyType=orderingItem.m_item->getPrimitiveTypeIndex(); + } + + // check that the types of the ordering items are the same + if(*typeIt==AnyAtomicType::UNTYPED_ATOMIC) + *typeIt=keyType; + else if(keyType!=AnyAtomicType::UNTYPED_ATOMIC && *typeIt!=keyType) + XQThrow3(ItemException, X("XQSort::buildKeys"), X("Ordering item is not of the required type"), *it); + + keys.push_back(orderingItem); + } + + return keys; +} + +XQSort::sortType XQSort::getSortType() const +{ + return _type; +} + +const XQSort::VectorOfSortSpec *XQSort::getSortSpecs() const +{ + return _specList; +} + +///////////////////////////////////////////////////////////////////// +// ProductFactor + +XQFLWOR::ProductFactor::ProductFactor(const XQVariableBinding *vb) + : _vb(vb), + _values(0), + _valuesBuffer(0), + _index(0), + _refVar(0), + _posRefVar(0) +{ +} + +bool XQFLWOR::ProductFactor::initialise(DynamicContext *context) +{ + // Compute the values, if needed + if(_vb->_valuesResultMustBeRecalculated) { + _values = _vb->_allValues->collapseTree(context); + } + else { + if(_valuesBuffer.isNull()) { + _valuesBuffer = _vb->_allValues->collapseTree(context); + } + _values = _valuesBuffer.createResult(); + } + + VariableStore* varStore = context->getVariableStore(); + + // Make debug callback before declaring the variable + if(context->getDebugCallback()) context->getDebugCallback()->IsBreakPointHit(context, _vb->getFile(), _vb->getLine()); + + if(_vb->_bindingType == XQVariableBinding::letBinding) { + // Add a new scope, if needed + if(_vb->_needsNewScope) { + varStore->addLogicalBlockScope(); + } + + // If it's a let binding populate the variable with all of the values + varStore->declareVar(_vb->_vURI, _vb->_vName, _values->toSequence(context), context); + } + else { + const Item::Ptr item = _values->next(context); + + if(item == NULLRCP) { + return false; + } + + // Add a new scope, if needed + if(_vb->_needsNewScope) { + varStore->addLogicalBlockScope(); + } + + // Declare the binding variable, if present + if(_vb->_variable) { + varStore->declareVar(_vb->_vURI, _vb->_vName, Sequence(item, context->getMemoryManager()), context); + _refVar = varStore->getReferenceVar(_vb->_vURI, _vb->_vName, context); + } + + // Declare the positional variable, if present + if(_vb->_positionalVariable) { + _index = 1; + varStore->declareVar(_vb->_pURI, _vb->_pName, + Sequence((const Item::Ptr)context->getItemFactory()->createInteger(_index, context), context->getMemoryManager()), context); + _posRefVar = varStore->getReferenceVar(_vb->_pURI, _vb->_pName, context); + } + } + + return true; +} + +bool XQFLWOR::ProductFactor::next(DynamicContext *context) +{ + if(_vb->_bindingType == XQVariableBinding::letBinding) { + // A let binding never has a next + if(_vb->_needsNewScope) { + context->getVariableStore()->removeScope(); + } + return false; + } + else { + const Item::Ptr item = _values->next(context); + + if(item == NULLRCP) { + if(_vb->_needsNewScope) { + context->getVariableStore()->removeScope(); + } + return false; + } + + // Make debug callback before declaring the variable + if(context->getDebugCallback()) context->getDebugCallback()->IsBreakPointHit(context, _vb->getFile(), _vb->getLine()); + + // Set the binding variable value + if(_vb->_variable) { + _refVar->setValue(Sequence(item, context->getMemoryManager())); + } + + // Set the positional variable value, if present + if(_vb->_positionalVariable) { + ++_index; + _posRefVar->setValue(Sequence((const Item::Ptr)context->getItemFactory()->createInteger(_index, context), context->getMemoryManager())); + } + + return true; + } +} + +bool XQFLWOR::ProductFactor::checkWhere(DynamicContext *context) +{ + return _vb->_where == 0 || _vb->_where->collapseTree(context)->getEffectiveBooleanValue(context, _vb->_where); +} + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +XQFLWOR::XQFLWOR(VectorOfVariableBinding* bindings, ASTNode* where, XQSort* orderBy, ASTNode* returnExpr, XPath2MemoryManager* expr) + : ASTNodeImpl(expr), + _return(returnExpr), + _where(where), + _sort(orderBy) +{ + _bindings=bindings; + setType(ASTNode::FLWOR); +} + +bool XQFLWOR::nextState(ExecutionBindings &ebs, DynamicContext *context, bool initialisationState) const +{ + ExecutionBindings::reverse_iterator rend = ebs.rend(); + ExecutionBindings::reverse_iterator rbegin = ebs.rbegin(); + ExecutionBindings::reverse_iterator it; + + if(initialisationState) { + it = rend; + } + else { + it = rbegin; + } + + // This algorithm works with a REVERSE ITERATOR. + // + // When in the initialisation state, we travel backwards (towards + // the end of the collection), calling initialise() on the ProductFactors. + // + // When not in initialisation state, we travel forwards (towards + // the begining of the collection, calling next() on the ProductFactors. + // + // Everything after the iterator (towards the start of the collection) + // has been initialised. Everything before the iterator (towards the + // end of the collection) still needs to be initialised. When + // ProductFactor::next() returns false, the ProductFactor needs to be + // initialised again, so we enter the initialisation state. + // + // When all the next() methods return false, we have finnished looping, + // and so return false. + + while(true) { + if(initialisationState) { + if(it == rbegin) { + if(checkWhere(context)) { + return true; + } + else { + initialisationState = false; + } + } + else { + --it; + if(!it->initialise(context)) { + initialisationState = false; + ++it; + } + else if(!it->checkWhere(context)) { + // Call next on this one, before continuing with the initialisation + initialisationState = false; + } + } + } + else { + if(it == rend) { + return false; + } + else { + if(it->next(context)) { + if(it->checkWhere(context)) { + initialisationState = true; + } + else { + // Call next on this one again + } + } + else { + ++it; + } + } + } + } +} + +bool XQFLWOR::checkWhere(DynamicContext *context) const +{ + return _where == 0 || _where->collapseTree(context)->getEffectiveBooleanValue(context, _where); +} + +VariableStore::Entry *XQFLWOR::getAccumulator(DynamicContext *context) const +{ + VariableStore* varStore = context->getVariableStore(); + + if(context->isDebuggingEnabled()) { + // find a unique name for the variable to be used as accumulator for the result + // use the line number, plus a counter if more than one "for" is on the same line + XMLCh szNumBuff[20]; + XMLString::binToText(_bindings->front()->getLine(), szNumBuff, 19, 10); + const XMLCh *szInitialAccumulator, *szAccumulatorName; + szInitialAccumulator = szAccumulatorName = XPath2Utils::concatStrings(szForLoopAccumulator, szNumBuff, context->getMemoryManager()); + long index = 1; + while(varStore->getReferenceVar(szAccumulatorName, context, this) != NULL) { + static XMLCh szSpaceParent[] = { chSpace, chOpenParen, chNull }; + XMLString::binToText(index++, szNumBuff, 19, 10); + szAccumulatorName = XPath2Utils::concatStrings(szInitialAccumulator, szSpaceParent, szNumBuff, context->getMemoryManager()); + szAccumulatorName = XPath2Utils::concatStrings(szAccumulatorName, chCloseParen, context->getMemoryManager()); + } + + varStore->declareVar(szAccumulatorName, Sequence(context->getMemoryManager()), context, this); + return varStore->getReferenceVar(szAccumulatorName, context, this); + } + + return 0; +} + +void XQFLWOR::setAccumulator(VariableStore::Entry *refVar, const PreSortResult &toBeSorted, DynamicContext *context) const +{ + if(context->isDebuggingEnabled()) { + Sequence curReturnValue(context->getMemoryManager()); + for(PreSortResult::const_iterator orderIt = toBeSorted.begin(); orderIt != toBeSorted.end(); ++orderIt) + curReturnValue.joinSequence(orderIt->first); + refVar->setValue(curReturnValue); + } +} + +Result XQFLWOR::createResult(DynamicContext* context, int flags) const +{ + return createResultImpl(_bindings->begin(), _bindings->end(), context, flags); +} + +Result XQFLWOR::createResultImpl(VectorOfVariableBinding::const_iterator it, VectorOfVariableBinding::const_iterator end, + DynamicContext* context, int flags) const +{ + if((_sort) || context->isDebuggingEnabled()) { + return new SortingFLWORResult(it, end, this, flags, context); + } + else { + return new FLWORResult(it, end, this, flags); + } +} + +ASTNode* XQFLWOR::staticResolution(StaticContext* context) +{ + staticResolutionImpl(context); + return this; +} + +ASTNode *XQFLWOR::staticTyping(StaticContext *context) +{ + _src.clear(); + + staticTypingImpl(context); + + if(_bindings->empty()) { + return _return->staticTyping(context); + } + return this; +} + +void XQFLWOR::staticResolutionImpl(StaticContext* context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + // Add all the binding variables to the new scope + VectorOfVariableBinding::iterator end = _bindings->end(); + for(VectorOfVariableBinding::iterator it0 = _bindings->begin(); it0 != end; ++it0) { + // Work out the uri and localname of the variable binding + const XMLCh* prefix=XPath2NSUtils::getPrefix((*it0)->_variable, mm); + if(prefix && *prefix) + (*it0)->_vURI = context->getUriBoundToPrefix(prefix, this); + (*it0)->_vName = XPath2NSUtils::getLocalName((*it0)->_variable); + + // call static resolution on the value + if((*it0)->_seqType!=NULL) { + if((*it0)->_bindingType == XQVariableBinding::forBinding) { + // the SequenceType has been specified for each item of the sequence, but we can only apply to the + // sequence itself, so allow it to match multiple matches + (*it0)->_seqType->setOccurrence(SequenceType::STAR); + } + (*it0)->_allValues = new (mm) XQTreatAs((*it0)->_allValues, (*it0)->_seqType, mm); + (*it0)->_allValues->setLocationInfo(this); + } + (*it0)->_allValues = (*it0)->_allValues->staticResolution(context); + + if((*it0)->_positionalVariable != NULL && *((*it0)->_positionalVariable) != 0) { + // Work out the uri and localname of the positional variable binding + const XMLCh* prefix=XPath2NSUtils::getPrefix((*it0)->_positionalVariable, mm); + if(prefix && *prefix) + (*it0)->_pURI = context->getUriBoundToPrefix(prefix, this); + (*it0)->_pName = XPath2NSUtils::getLocalName((*it0)->_positionalVariable); + (*it0)->_pSrc.getStaticType().flags = StaticType::DECIMAL_TYPE; + + if(XPath2Utils::equals((*it0)->_pURI, (*it0)->_vURI) && + XPath2Utils::equals((*it0)->_pName, (*it0)->_vName)) + { + XMLBuffer errMsg; + errMsg.set(X("The positional variable with name {")); + errMsg.append((*it0)->_pURI); + errMsg.append(X("}")); + errMsg.append((*it0)->_pName); + errMsg.append(X(" conflicts with the iteration variable [err:XQST0089]")); + XQThrow(StaticErrorException,X("XQFLWOR::staticResolutionImpl"), errMsg.getRawBuffer()); + } + } + else { + // Make life easier when we execute + (*it0)->_positionalVariable = 0; + } + } + + // Call staticResolution on the where expression, if there is one + if(_where) { + AutoNodeSetOrderingReset orderReset(context); + _where = _where->staticResolution(context); + } + + // Call staticResolution on the sort specifications, if there are some + if(_sort) { + _sort->staticResolution(context, _src); + } + + // Call staticResolution on the return expression + _return = _return->staticResolution(context); +} + +void XQFLWOR::staticTypingImpl(StaticContext* context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + VectorOfVariableBinding *newBindings = + new (getMemoryManager()) VectorOfVariableBinding(XQillaAllocator(getMemoryManager())); + + VariableTypeStore* varStore = context->getVariableTypeStore(); + + // Add all the binding variables to the new scope + VectorOfVariableBinding::iterator end = _bindings->end(); + for(VectorOfVariableBinding::iterator it0 = _bindings->begin(); it0 != end; ++it0) { + varStore->addLogicalBlockScope(); + + // call static resolution on the value + (*it0)->_allValues = (*it0)->_allValues->staticTyping(context); + (*it0)->_src.getStaticType() = (*it0)->_allValues->getStaticResolutionContext().getStaticType(); + + // Declare the variable binding + if((*it0)->_bindingType == XQVariableBinding::letBinding) { + (*it0)->_src.setProperties((*it0)->_allValues->getStaticResolutionContext().getProperties()); + varStore->declareVar((*it0)->_vURI, (*it0)->_vName, (*it0)->_src); + } + else { + (*it0)->_src.setProperties(StaticResolutionContext::DOCORDER | StaticResolutionContext::GROUPED | + StaticResolutionContext::PEER | StaticResolutionContext::SUBTREE | StaticResolutionContext::ONENODE); + varStore->declareVar((*it0)->_vURI, (*it0)->_vName, (*it0)->_src); + } + + if((*it0)->_positionalVariable != NULL) { + (*it0)->_pSrc.getStaticType().flags = StaticType::DECIMAL_TYPE; + + // Declare the positional variable binding + varStore->declareVar((*it0)->_pURI, (*it0)->_pName, (*it0)->_pSrc); + } + } + + // Call staticResolution on the where expression, if there is one + if(_where) { + AutoNodeSetOrderingReset orderReset(context); + _where = calculateSRCForWhere(_where, context); + if(_where) _src.add(_where->getStaticResolutionContext()); + } + + // Call staticResolution on the sort specifications, if there are some + if(_sort) { + _sort->staticTyping(context, _src); + } + + // Call staticResolution on the return expression + _return = _return->staticTyping(context); + _src.getStaticType() = _return->getStaticResolutionContext().getStaticType(); + _src.setProperties(_return->getStaticResolutionContext().getProperties()); + _src.add(_return->getStaticResolutionContext()); + + VectorOfVariableBinding::reverse_iterator rend = _bindings->rend(); + for(VectorOfVariableBinding::reverse_iterator it = _bindings->rbegin(); it != rend; ++it) { + XQVariableBinding *newVB = new (getMemoryManager()) XQVariableBinding(getMemoryManager(), **it); + newVB->setLocationInfo(*it); + + // Statically resolve any binding specific where conditions, if we have them + if(newVB->_where) { + newVB->_where = newVB->_where->staticTyping(context); + _src.add(newVB->_where->getStaticResolutionContext()); + } + + // Remove our variable binding and the scope we added + varStore->removeScope(); + + // Remove our binding variable from the StaticResolutionContext data (removing it if it's not used) + if(!_src.removeVariable(newVB->_vURI, newVB->_vName) && !context->isDebuggingEnabled()) { + newVB->_variable = 0; + } + + // Remove our positional variable from the StaticResolutionContext data (removing it if it's not used) + if(newVB->_positionalVariable && !_src.removeVariable(newVB->_pURI, newVB->_pName) && !context->isDebuggingEnabled()) { + newVB->_positionalVariable = 0; + } + + const StaticResolutionContext &valueSrc = newVB->_allValues->getStaticResolutionContext(); + // if the expression makes use of a variable with the same name of the binding, we need a new scope + if(valueSrc.isVariableUsed(newVB->_vURI, newVB->_vName)) + newVB->_needsNewScope=true; + _src.add(valueSrc); + + VectorOfVariableBinding::reverse_iterator it2; + // Check if previous variable bindings have been used by this value, + for(it2 = it + 1; it2 != rend; ++it2) { + if((*it2)->_variable && valueSrc.isVariableUsed((*it2)->_vURI, (*it2)->_vName)) { + newVB->_valuesResultMustBeRecalculated = true; + break; + } + if((*it2)->_positionalVariable && valueSrc.isVariableUsed((*it2)->_pURI, (*it2)->_pName)) { + newVB->_valuesResultMustBeRecalculated = true; + break; + } + } + // DbXml optimises collection() and doc(), so they have to be recalculated. + // Creative expressions must be re-evaluated to get a new node identity. + if(valueSrc.areDocsOrCollectionsUsed() || valueSrc.isCreative()) { + newVB->_valuesResultMustBeRecalculated = true; + } + + // Check to see if this binding has the same name as any before it + // (4 comparisons, since each binding has two possible variables for it) + for(it2 = it + 1; newVB->_needsNewScope==false && it2 != rend; ++it2) { + if(newVB->_variable && (*it2)->_variable && + XPath2Utils::equals(newVB->_vName, (*it2)->_vName) && XPath2Utils::equals(newVB->_vURI, (*it2)->_vURI)) { + newVB->_needsNewScope = true; + break; + } + if(newVB->_variable && (*it2)->_positionalVariable && + XPath2Utils::equals(newVB->_vName, (*it2)->_pName) && XPath2Utils::equals(newVB->_vURI, (*it2)->_pURI)) { + newVB->_needsNewScope = true; + break; + } + if(newVB->_positionalVariable && (*it2)->_variable && + XPath2Utils::equals(newVB->_pName, (*it2)->_vName) && XPath2Utils::equals(newVB->_pURI, (*it2)->_vURI)) { + newVB->_needsNewScope = true; + break; + } + if(newVB->_positionalVariable && (*it2)->_positionalVariable && + XPath2Utils::equals(newVB->_pName, (*it2)->_pName) && XPath2Utils::equals(newVB->_pURI, (*it2)->_pURI)) { + newVB->_needsNewScope = true; + break; + } + } + + // Add the new VB at the front of the new Bindings + // (If it's a let binding, and it's variable isn't used, don't add it - there's no point) + if(context->isDebuggingEnabled() || newVB->_bindingType != XQVariableBinding::letBinding || newVB->_variable) { + newBindings->insert(newBindings->begin(), newVB); + } + + if(!_src.isUsed()) { + AutoDelete dContext(context->createDynamicContext()); + dContext->setMemoryManager(mm); + Result result = createResultImpl(newBindings->begin(), newBindings->end(), dContext); + + XQSequence *newReturn = XQSequence::constantFold(result, dContext, getMemoryManager(), *it); + if(newReturn != 0) { + // Constant folding succeeded + _return = newReturn; + _return->setLocationInfo(*it); + newBindings->clear(); + } + } + } + + // Overwrite our bindings with the new ones + _bindings = newBindings; +} + +ASTNode *XQFLWOR::calculateSRCForWhere(ASTNode *where, StaticContext *context) +{ + if(context->isDebuggingEnabled()) { + // Don't do anything special if this is a debug build + where = where->staticTyping(context); + } + else { + if(where->getType()==ASTNode::OPERATOR && + XPath2Utils::equals(((XQOperator*)where)->getOperatorName(), And::name)) { + + // If it's an And, treat each argument to the And as a where condition in it's own right + And* fAnd = (And*)where; + unsigned int index = 0; + while(index < fAnd->getNumArgs()) { + ASTNode* subWhere = calculateSRCForWhere(fAnd->getArgument(index), context); + if(subWhere) { + fAnd->setArgument(index, subWhere); + ++index; + } + else { + fAnd->removeArgument(index); + } + } + + if(fAnd->getNumArgs() == 0) { + // Remove the And if it no longer has any arguments + where = 0; + } + } + else { + // Try to send the condition to the outer most condition possible + where = where->staticTyping(context); + const StaticResolutionContext &whereSrc = where->getStaticResolutionContext(); + + VectorOfVariableBinding::reverse_iterator rend = _bindings->rend(); + VectorOfVariableBinding::reverse_iterator rbegin = _bindings->rbegin(); + VectorOfVariableBinding::reverse_iterator it = rbegin; + for(; it != rend; ++it) { + if((*it)->_variable && whereSrc.isVariableUsed((*it)->_vURI, (*it)->_vName)) { + (*it)->addWhereCondition(where); + where = 0; + break; + } + if((*it)->_positionalVariable && whereSrc.isVariableUsed((*it)->_pURI, (*it)->_pName)) { + (*it)->addWhereCondition(where); + where = 0; + break; + } + } + if(it == rend && rbegin != rend) { + // The where condition doesn't use any of the variables from the bindings! + // Put it on the first binding... + (*--it)->addWhereCondition(where); + where = 0; + } + + } + } + + return where; +} + +const VectorOfVariableBinding *XQFLWOR::getBindings() const +{ + return _bindings; +} + +const ASTNode *XQFLWOR::getWhereExpr() const +{ + return _where; +} + +const ASTNode *XQFLWOR::getReturnExpr() const +{ + return _return; +} + +const XQSort *XQFLWOR::getSort() const +{ + return _sort; +} + +void XQFLWOR::setWhereExpr(ASTNode *where) +{ + _where = where; +} + +void XQFLWOR::setReturnExpr(ASTNode *ret) +{ + _return = ret; +} + +XQFLWOR::SortingFLWORResult::SortingFLWORResult(VectorOfVariableBinding::const_iterator it, VectorOfVariableBinding::const_iterator end, + const XQFLWOR *flwor, int flags, DynamicContext *context) + : LazySequenceResult(flwor, context), + _flwor(flwor), + _flags(flags) +{ + for(; it != end; ++it) { + _ebs.push_back(ProductFactor(*it)); + } +} + +void XQFLWOR::SortingFLWORResult::getResult(Sequence &toFill, DynamicContext *context) const +{ + // TODO - instead of sorting at the end, pre-calculate the different + // product factors, and sort them - then use them in order to lazily + // calculate the return values. - jpcs + + VariableStore* varStore = context->getVariableStore(); + + // Initialise and run the execution bindings + varStore->addLogicalBlockScope(); + + VariableStore::Entry *accumulator = _flwor->getAccumulator(context); + bool sorting = (_flwor->getSort() != 0); + + PreSortResult toBeSorted; + if(_flwor->nextState(const_cast(_ebs), context, true)) { + do { + Sequence result(_flwor->getReturnExpr()->collapseTree(context, _flags)->toSequence(context)); + + if(sorting) { + toBeSorted.push_back(ResultPair(result, _flwor->getSort()->buildKeys(context))); + } + else { + toBeSorted.push_back(ResultPair(result, XQSort::SortItems())); + } + + if(accumulator) _flwor->setAccumulator(accumulator, toBeSorted, context); + + } while(_flwor->nextState(const_cast(_ebs), context, false)); + } + varStore->removeScope(); + + if(sorting) { + // Sort the results + switch(_flwor->getSort()->getSortType()) { + case XQSort::stable: { + stable_sort(toBeSorted.begin(), toBeSorted.end(), compareHelper); + break; + } + case XQSort::unstable: { + sort(toBeSorted.begin(), toBeSorted.end(), compareHelper); + break; + } + } + } + + // Concatonate the sorted results + for(PreSortResult::iterator orderIt = toBeSorted.begin(); orderIt != toBeSorted.end(); ++orderIt) + toFill.joinSequence(orderIt->first); +} + +std::string XQFLWOR::SortingFLWORResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} + +XQFLWOR::FLWORResult::FLWORResult(VectorOfVariableBinding::const_iterator it, VectorOfVariableBinding::const_iterator end, + const XQFLWOR *flwor, int flags) + : ResultImpl(flwor), + _flwor(flwor), + _flags(flags), + _toInit(true), + _scope(0), + _returnResult(0) +{ + for(; it != end; ++it) { + _ebs.push_back(ProductFactor(*it)); + } +} + +XQFLWOR::FLWORResult::~FLWORResult() +{ + if(_scope) delete _scope; +} + +Item::Ptr XQFLWOR::FLWORResult::next(DynamicContext *context) +{ + VariableStore* varStore = context->getVariableStore(); + + Scope *oldScope = varStore->getScopeState(); + + if(_toInit) { + _toInit = false; + varStore->addLogicalBlockScope(); + if(_flwor->nextState(_ebs, context, true)) { + _returnResult = _flwor->getReturnExpr()->collapseTree(context, _flags); + } + else { + varStore->removeScope(); + _scope = 0; + return 0; + } + } + else { + if(_scope == 0) { + return 0; + } + varStore->setScopeState(_scope); + _scope = 0; + } + + Item::Ptr result = _returnResult->next(context); + + while(result == NULLRCP) { + context->testInterrupt(); + if(_flwor->nextState(_ebs, context, false)) { + _returnResult = _flwor->getReturnExpr()->collapseTree(context, _flags); + result = _returnResult->next(context); + } + else { + varStore->removeScope(); + _scope = 0; + _returnResult = 0; + return 0; + } + } + + _scope = varStore->getScopeState(); + varStore->setScopeState(oldScope); + + return result; +} + +std::string XQFLWOR::FLWORResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/ast/XQFunction.cpp b/src/ast/XQFunction.cpp new file mode 100644 index 00000000..7ecbc8d9 --- /dev/null +++ b/src/ast/XQFunction.cpp @@ -0,0 +1,264 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQFunction.cpp,v 1.14 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include + +class SequenceTypeTable : public std::map< std::string, std::vector< SequenceType* >* > +{ +public: + ~SequenceTypeTable() + { + for(iterator it=begin();it!=end();it++) + { + std::vector< SequenceType* >* vec=it->second; + for(std::vector< SequenceType* >::iterator it2=vec->begin();it2!=vec->end();it2++) + delete (*it2); + delete vec; + } + } +}; + +static SequenceTypeTable g_SequenceTypeCache; + +/* http://www.w3.org/2005/xpath-functions */ +const XMLCh XQFunction::XMLChFunctionURI[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chColon, XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, + XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, XERCES_CPP_NAMESPACE_QUALIFIER chPeriod, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_3, XERCES_CPP_NAMESPACE_QUALIFIER chPeriod, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_2, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_5, XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +const unsigned int XQFunction::UNLIMITED = 51; // A reasonably large number + +XQFunction::XQFunction(const XMLCh* name, unsigned int argsFrom, unsigned int argsTo, const char* paramDecl, const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), + _fName(name), _fURI(XMLChFunctionURI), + _nArgsFrom(argsFrom), _nArgsTo(argsTo), + _paramDecl(parseParamDecl(paramDecl)), _args(args) +{ + setType(ASTNode::FUNCTION); + + if((argsFrom != UNLIMITED && argsFrom > args.size()) || + (argsTo != UNLIMITED && args.size() > argsTo)) { + + //cerr << "argsFrom: " << argsFrom << endl; + //cerr << "argsTo: " << argsTo << endl; + //cerr << "number of args: " << args.size() << endl; + + XQThrow(FunctionException,X("XQFunction::XQFunction"), X("Wrong number of arguments")); + } + const XMLCh* paramString=memMgr->getPooledString(paramDecl); + if(argsFrom==argsTo) + _signature=paramString; + else + { + // place the optional arguments between [ and ] + static const XMLCh comma[]={ XERCES_CPP_NAMESPACE_QUALIFIER chComma, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + static const XMLCh openSquare[]={ XERCES_CPP_NAMESPACE_QUALIFIER chSpace, XERCES_CPP_NAMESPACE_QUALIFIER chOpenSquare, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + static const XMLCh closSquare[]={ XERCES_CPP_NAMESPACE_QUALIFIER chCloseSquare, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + XERCES_CPP_NAMESPACE_QUALIFIER XMLStringTokenizer tokenizer(paramString,comma); + unsigned int i; + unsigned int nTokens=tokenizer.countTokens(); + _signature=XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString; + + for(i=0;iconvertFunctionArg(*i, context, numericFunction, this); + *i = (*i)->staticResolution(context); + + ++paramNumber; + if(paramNumber >= _paramDecl->size()) { + paramNumber = _paramDecl->size() - 1; + } + } + + return this; +} + +ASTNode *XQFunction::calculateSRCForArguments(StaticContext *context, bool checkTimezone, bool numericFunction) +{ + for(VectorOfASTNodes::iterator i = _args.begin(); i != _args.end(); ++i) { + *i = (*i)->staticTyping(context); + _src.add((*i)->getStaticResolutionContext()); + + if(checkTimezone && (*i)->isDateOrTimeAndHasNoTimezone(context)) + _src.implicitTimezoneUsed(true); + } + + if(!_src.isUsed()) { + return constantFold(context); + } + return this; +} + +Result XQFunction::getParamNumber(unsigned int number, DynamicContext* context, int flags) const +{ + assert(number > 0); + assert(number <= getNumArgs()); + return _args[number - 1]->collapseTree(context, flags); +} + +unsigned int XQFunction::getNumArgs() const +{ + return _args.size(); +} + +std::vector< SequenceType* >* XQFunction::parseParamDecl(const char* paramString) +{ + // check the cache, first + SequenceTypeTable::iterator it=g_SequenceTypeCache.find(paramString); + if(it!=g_SequenceTypeCache.end()) + return it->second; + + // Note: we are going to use the global allocator, as we are going to store this data into a static variable + std::vector< SequenceType* >* params=new std::vector< SequenceType* >; + + // Tokenise param string + XMLCh* string = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::transcode(paramString); + static XMLCh delimiters[]={ XERCES_CPP_NAMESPACE_QUALIFIER chComma, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + XERCES_CPP_NAMESPACE_QUALIFIER XMLStringTokenizer tokenizer(string, delimiters); + while(tokenizer.hasMoreTokens()) + { + XMLCh* toParse=tokenizer.nextToken(); + //create SequenceType from curParam and append to vector + + SequenceType *sequenceType=NULL; + XMLCh* tmpCurParam = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::replicate(toParse); + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::collapseWS(tmpCurParam); + + // get the OccurrenceIndicator + SequenceType::OccurrenceIndicator occurrence=SequenceType::EXACTLY_ONE; + unsigned int len=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(tmpCurParam); + if(len>0) + switch(tmpCurParam[len-1]) + { + case XERCES_CPP_NAMESPACE_QUALIFIER chQuestion: occurrence=SequenceType::QUESTION_MARK; tmpCurParam[len-1]=0; break; + case XERCES_CPP_NAMESPACE_QUALIFIER chAsterisk: occurrence=SequenceType::STAR; tmpCurParam[len-1]=0; break; + case XERCES_CPP_NAMESPACE_QUALIFIER chPlus: occurrence=SequenceType::PLUS; tmpCurParam[len-1]=0; break; + } + + // check if it's a node(), element(), item() or empty() + static XMLCh szNode[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chOpenParen, XERCES_CPP_NAMESPACE_QUALIFIER chCloseParen, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + static XMLCh szElement[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chOpenParen, XERCES_CPP_NAMESPACE_QUALIFIER chCloseParen, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + static XMLCh szItem[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chOpenParen, XERCES_CPP_NAMESPACE_QUALIFIER chCloseParen, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + static XMLCh szEmpty[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_y, XERCES_CPP_NAMESPACE_QUALIFIER chOpenParen, XERCES_CPP_NAMESPACE_QUALIFIER chCloseParen, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + if(XPath2Utils::equals(tmpCurParam, szNode)) + sequenceType=new SequenceType(new SequenceType::ItemType(SequenceType::ItemType::TEST_NODE), occurrence); + else if(XPath2Utils::equals(tmpCurParam, szElement)) + sequenceType=new SequenceType(new SequenceType::ItemType(SequenceType::ItemType::TEST_ELEMENT), occurrence); + else if(XPath2Utils::equals(tmpCurParam, szItem)) + sequenceType=new SequenceType(new SequenceType::ItemType(SequenceType::ItemType::TEST_ANYTHING), occurrence); + else if(XPath2Utils::equals(tmpCurParam, szEmpty)) + sequenceType=new SequenceType(); + else + { + SequenceType::ItemType* test=new SequenceType::ItemType(SequenceType::ItemType::TEST_ATOMIC_TYPE,NULL,new QualifiedName(tmpCurParam)); + if (XPath2Utils::equals(tmpCurParam, ATDurationOrDerived::fgDT_YEARMONTHDURATION) || + XPath2Utils::equals(tmpCurParam, ATDurationOrDerived::fgDT_DAYTIMEDURATION) || + XPath2Utils::equals(tmpCurParam, AnyAtomicType::fgDT_ANYATOMICTYPE) || + XPath2Utils::equals(tmpCurParam, ATUntypedAtomic::fgDT_UNTYPEDATOMIC) ) + // If yearMonthDuration, dayTimeDuration, anyAtomicType or untypedAtomic, we set the URI to be FunctionURI, and use the specified type + test->setTypeURI(FunctionConstructor::XMLChXPath2DatatypesURI); + else + // otherwise it's a atomic type coming from the XMLSchema namespace + test->setTypeURI(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA); + sequenceType = new SequenceType(test, occurrence); + } + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::release(&tmpCurParam); + params->push_back(sequenceType); + } + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::release(&string); + g_SequenceTypeCache[paramString]=params; + + return params; +} + +const VectorOfASTNodes &XQFunction::getArguments() const { + return _args; +} + diff --git a/src/ast/XQFunctionCall.cpp b/src/ast/XQFunctionCall.cpp new file mode 100644 index 00000000..eeefaba3 --- /dev/null +++ b/src/ast/XQFunctionCall.cpp @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQFunctionCall.cpp,v 1.12 2006/11/01 16:37:18 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQFunctionCall.cpp: implementation of the XQFunctionCall class. +////////////////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//////////////////////////////////////////////////////////////////////////////////////// +// +// + +XQFunctionCall::XQFunctionCall(QualifiedName* qname, const VectorOfASTNodes &args, XPath2MemoryManager* expr) + : ASTNodeImpl(expr), + _args(args), + _qname(qname) +{ + setType(ASTNode::FUNCTION_CALL); +} + +Result XQFunctionCall::createResult(DynamicContext* ctx, int flags) const +{ + XQThrow(FunctionException,X("XQFunctionCall::collapseTreeInternal"), X("staticResolution has not been called!!!")); +} + +ASTNode* XQFunctionCall::staticResolution(StaticContext *context) +{ + ASTNode* functionImpl=context->lookUpFunction(_qname->getPrefix(),_qname->getName(), _args, this); + + if(functionImpl==NULL) { + // get the uri for debugging purposes + const XMLCh* uri = context->getUriBoundToPrefix(_qname->getPrefix(), this); + + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(uri) == 0 && XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(_qname->getPrefix()) == 0) + uri=context->getDefaultFuncNS(); + + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer buf; + buf.set(X("Function '")); + buf.append(_qname->getName()); + buf.append(X("' in namespace '")); + if(uri) + buf.append(uri); + buf.append(X("' with ")); + XMLCh szNumBuff[20]; + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::binToText(_args.size(), szNumBuff, 19, 10); + buf.append(szNumBuff); + buf.append(X(" argument is undefined [err:XPST0017]")); + + //cerr << "reason1: " << XERCES_CPP_NAMESPACE_QUALIFIER XMLString::transcode(buf.getRawBuffer()) << endl; + XQThrow(StaticErrorException, X("XQFunctionCall::staticResolution"), buf.getRawBuffer()); + } + functionImpl->setLocationInfo(this); + return functionImpl->staticResolution(context); +} + +ASTNode *XQFunctionCall::staticTyping(StaticContext *context) +{ + // Should never happen + return this; +} + +const QualifiedName *XQFunctionCall::getName() const +{ + return _qname; +} + +const VectorOfASTNodes &XQFunctionCall::getArguments() const +{ + return _args; +} diff --git a/src/ast/XQGlobalVariable.cpp b/src/ast/XQGlobalVariable.cpp new file mode 100644 index 00000000..2a6013e8 --- /dev/null +++ b/src/ast/XQGlobalVariable.cpp @@ -0,0 +1,150 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQGlobalVariable.cpp,v 1.17 2006/11/01 16:37:18 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQGlobalVariable.cpp: implementation of the XQGlobalVariable class. +////////////////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +XQGlobalVariable::XQGlobalVariable(const XMLCh* varQName, SequenceType* seqType, ASTNode* value, XPath2MemoryManager *mm) + : m_szQName(mm->getPooledString(varQName)), + m_szURI(0), + m_szLocalName(0), + m_Type(seqType), + m_Value(value), + _src(mm) +{ +} + +void XQGlobalVariable::execute(DynamicContext* context) const +{ + VariableStore* varStore = context->getVariableStore(); + try { + if(m_Value == NULL) { + // It's an external declaration, so check the user has set the value in the variable store + std::pair value = varStore->getGlobalVar(m_szURI, m_szLocalName, context); + if(!value.first) { + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer errMsg; + errMsg.set(X("A value for the external variable '")); + errMsg.append(m_szQName); + errMsg.append(X("' has not been provided [err:XPTY0002]")); + XQThrow(IllegalArgumentException,X("XQGlobalVariable::collapseTreeInternal"),errMsg.getRawBuffer()); + } + if(m_Type != NULL) { + // Check the external value's type + Result matchesRes = m_Type->matches(value.second, m_Type); + while(matchesRes->next(context).notNull()) {} + } + } + else { + varStore->setGlobalVar(m_szURI, m_szLocalName, m_Value->collapseTree(context)-> + toSequence(context), context); + } + } + catch(const XPath2TypeMatchException &ex) { + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer errMsg; + errMsg.set(X("The value for the global variable '")); + errMsg.append(m_szQName); + errMsg.append(X("' does not match the declared type: ")); + errMsg.append(ex.getError()); + XQThrow(XPath2TypeMatchException,X("XQGlobalVariable::collapseTreeInternal"),errMsg.getRawBuffer()); + } +} + +void XQGlobalVariable::staticResolution(StaticContext* context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + if(m_Type) m_Type->staticResolution(context); + + // variables with no prefix are in no namespace + const XMLCh* prefix=XPath2NSUtils::getPrefix(m_szQName, mm); + if(prefix && *prefix) + m_szURI = context->getUriBoundToPrefix(prefix, this); + m_szLocalName = XPath2NSUtils::getLocalName(m_szQName); + + if(m_Value != NULL) { + if(m_Type != NULL) { + m_Value = new (mm) XQTreatAs(m_Value, m_Type, mm); + m_Value->setLocationInfo(this); + } + m_Value = m_Value->staticResolution(context); + } +} + +void XQGlobalVariable::staticTyping(StaticContext* context) +{ + VariableTypeStore* varStore = context->getVariableTypeStore(); + + if(m_Value != NULL) { + m_Value = m_Value->staticTyping(context); + _src.copy(m_Value->getStaticResolutionContext()); + } + else { + if(m_Type->getItemType() != NULL) { + bool isPrimitive; + m_Type->getItemType()->getStaticType(_src.getStaticType(), context, isPrimitive, m_Type); + } + else { + _src.getStaticType().flags = 0; + } + } + varStore->declareGlobalVar(m_szURI, m_szLocalName, _src); +} + +const XMLCh* XQGlobalVariable::getVariableName() const +{ + return m_szQName; +} + +bool XQGlobalVariable::isExternal() const +{ + return (m_Value==NULL); +} + +void XQGlobalVariable::setVariableExpr(ASTNode* value) +{ + m_Value=value; +} + +const SequenceType *XQGlobalVariable::getSequenceType() const +{ + return m_Type; +} + +const ASTNode *XQGlobalVariable::getVariableExpr() const +{ + return m_Value; +} + +const XMLCh *XQGlobalVariable::getVariableURI() const +{ + return m_szURI; +} + +const XMLCh *XQGlobalVariable::getVariableLocalName() const +{ + return m_szLocalName; +} diff --git a/src/ast/XQIf.cpp b/src/ast/XQIf.cpp new file mode 100644 index 00000000..e0beb034 --- /dev/null +++ b/src/ast/XQIf.cpp @@ -0,0 +1,139 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQIf.cpp,v 1.10 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include +#include + +XQIf::XQIf(ASTNode* test, ASTNode* whenTrue, ASTNode* whenFalse, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), + _test(test), + _whenTrue(whenTrue), + _whenFalse(whenFalse) +{ + setType(ASTNode::IF); +} + +Result XQIf::createResult(DynamicContext* context, int flags) const +{ + return new IfResult(this, flags); +} + +ASTNode* XQIf::staticResolution(StaticContext *context) { + { + AutoNodeSetOrderingReset orderReset(context); + _test = _test->staticResolution(context); + } + + _whenTrue = _whenTrue->staticResolution(context); + _whenFalse = _whenFalse->staticResolution(context); + + return this; +} + +ASTNode *XQIf::staticTyping(StaticContext *context) +{ + _src.clear(); + + _test = _test->staticTyping(context); + + if(_test->isConstant()) { + AutoDelete dContext(context->createDynamicContext()); + dContext->setMemoryManager(context->getMemoryManager()); + if(_test->collapseTree(dContext)->getEffectiveBooleanValue(dContext, this)) { + return _whenTrue->staticTyping(context); + } + else { + return _whenFalse->staticTyping(context); + } + } + else { + _src.add(_test->getStaticResolutionContext()); + + _whenTrue = _whenTrue->staticTyping(context); + _src.getStaticType() = _whenTrue->getStaticResolutionContext().getStaticType(); + _src.setProperties(_whenTrue->getStaticResolutionContext().getProperties()); + _src.add(_whenTrue->getStaticResolutionContext()); + + _whenFalse = _whenFalse->staticTyping(context); + _src.getStaticType().typeUnion(_whenFalse->getStaticResolutionContext().getStaticType()); + _src.setProperties(_src.getProperties() & _whenFalse->getStaticResolutionContext().getProperties()); + _src.add(_whenFalse->getStaticResolutionContext()); + } + + return this; +} + +const ASTNode *XQIf::getTest() const { + return _test; +} + +const ASTNode *XQIf::getWhenTrue() const { + return _whenTrue; +} + +const ASTNode *XQIf::getWhenFalse() const { + return _whenFalse; +} + +void XQIf::setTest(ASTNode *item) +{ + _test = item; +} + +void XQIf::setWhenTrue(ASTNode *item) +{ + _whenTrue = item; +} + +void XQIf::setWhenFalse(ASTNode *item) +{ + _whenFalse = item; +} + +XQIf::IfResult::IfResult(const XQIf *di, int flags) + : ResultImpl(di), + _flags(flags), + _di(di), + _results(0) +{ +} + +Item::Ptr XQIf::IfResult::next(DynamicContext *context) +{ + if(_results.isNull()) { + if(_di->getTest()->collapseTree(context)->getEffectiveBooleanValue(context, this)) { + _results = _di->getWhenTrue()->collapseTree(context, _flags); + } + else { + _results = _di->getWhenFalse()->collapseTree(context, _flags); + } + } + + return _results->next(context); +} + +std::string XQIf::IfResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/ast/XQInstanceOf.cpp b/src/ast/XQInstanceOf.cpp new file mode 100644 index 00000000..fbd6b361 --- /dev/null +++ b/src/ast/XQInstanceOf.cpp @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQInstanceOf.cpp,v 1.12 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +XQInstanceOf::XQInstanceOf(ASTNode* expr, SequenceType* exprType, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), + _expr(expr), + _exprType(exprType) +{ + setType(ASTNode::INSTANCE_OF); +} + +Result XQInstanceOf::createResult(DynamicContext* context, int flags) const +{ + return new InstanceOfResult(this, flags); +} + +ASTNode* XQInstanceOf::staticResolution(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + _exprType->staticResolution(context); + + _expr = new (mm) XQTreatAs(_expr, _exprType, mm); + _expr->setLocationInfo(this); + + { + AutoNodeSetOrderingReset orderReset(context); + _expr = _expr->staticResolution(context); + } + + return this; +} + +ASTNode *XQInstanceOf::staticTyping(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + _src.clear(); + + try { + _expr = _expr->staticTyping(context); + } + catch(const XPath2TypeMatchException &ex) { + // The expression was constant folded, and the type matching failed. + AnyAtomicTypeConstructor *construct = + new (mm) AnyAtomicTypeConstructor(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_BOOLEAN, + SchemaSymbols::fgATTVAL_FALSE, + AnyAtomicType::BOOLEAN); + ASTNode *result = new (mm) XQSequence(construct, mm); + result->setLocationInfo(this); + return result->staticTyping(context); + } + + _src.add(_expr->getStaticResolutionContext()); + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; + + if(_expr->isConstant()) { + return constantFold(context); + } + return this; +} + +const ASTNode *XQInstanceOf::getExpression() const { + return _expr; +} + +const SequenceType *XQInstanceOf::getSequenceType() const { + return _exprType; +} + +void XQInstanceOf::setExpression(ASTNode *item) { + _expr = item; +} + +XQInstanceOf::InstanceOfResult::InstanceOfResult(const XQInstanceOf *di, int flags) + : SingleResult(di), + _flags(flags), + _di(di) +{ +} + +Item::Ptr XQInstanceOf::InstanceOfResult::getSingleResult(DynamicContext *context) const +{ + try { + Result result = _di->getExpression()->collapseTree(context); + while(result->next(context).notNull()) {} + } + catch(const XPath2TypeMatchException &ex) { + return (const Item::Ptr)context->getItemFactory()->createBoolean(false, context); + } + + return (const Item::Ptr)context->getItemFactory()->createBoolean(true, context); +} + +std::string XQInstanceOf::InstanceOfResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/ast/XQLiteral.cpp b/src/ast/XQLiteral.cpp new file mode 100644 index 00000000..bad9701a --- /dev/null +++ b/src/ast/XQLiteral.cpp @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQLiteral.cpp,v 1.11 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +XQLiteral::XQLiteral(ItemConstructor *ic, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), + _itemConstructor(ic) +{ + setType(ASTNode::LITERAL); +} + +/** Returns true if this XQ has no predicates, and is an instance of + XQSequence or XQLiteral. If the literal value of this XQ + is a single DateOrTimeType, then !hasTimezone() on it must return true, + otherwise this method will return false. */ +bool XQLiteral::isDateOrTimeAndHasNoTimezone(StaticContext *context) const +{ + AutoDelete dContext(context->createDynamicContext()); + dContext->setMemoryManager(context->getMemoryManager()); + + Item::Ptr item = _itemConstructor->createItem(dContext); + if(item->isAtomicValue() && + ((const AnyAtomicType::Ptr)item)->isDateOrTimeTypeValue() && + !((const DateOrTimeType::Ptr)item)->hasTimezone()) { + return true; + } + return false; +} + +bool XQLiteral::isSingleNumericConstant(StaticContext *context) const +{ + AutoDelete dContext(context->createDynamicContext()); + dContext->setMemoryManager(context->getMemoryManager()); + + Item::Ptr item = _itemConstructor->createItem(dContext); + if(item->isAtomicValue() && + ((const AnyAtomicType::Ptr)item)->isNumericValue()) { + return true; + } + return false; +} + +ASTNode* XQLiteral::staticResolution(StaticContext *context) { + XPath2MemoryManager *mm = context->getMemoryManager(); + ASTNode *result = new (mm) XQSequence(_itemConstructor, mm); + result->setLocationInfo(this); + return result->staticResolution(context); +} + +ASTNode *XQLiteral::staticTyping(StaticContext *context) +{ + // Should never happen + return this; +} + +Result XQLiteral::createResult(DynamicContext* context, int flags) const +{ + return Sequence(_itemConstructor->createItem(context), context->getMemoryManager()); +} diff --git a/src/ast/XQNav.cpp b/src/ast/XQNav.cpp new file mode 100644 index 00000000..6428c259 --- /dev/null +++ b/src/ast/XQNav.cpp @@ -0,0 +1,462 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQNav.cpp,v 1.22 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +XQNav::XQNav(XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), + _steps(XQillaAllocator(memMgr)), + _sortAdded(false) +{ + setType(NAVIGATION); +} + + +XQNav::~XQNav() +{ + //no-op +} + +Result XQNav::createResult(DynamicContext* context, int flags) const +{ + Steps::const_iterator end = _steps.end(); + Steps::const_iterator it = _steps.begin(); + + Result result(0); + if(it != end) { + ASTNode *step = it->step; + + result = step->collapseTree(context, flags); + StaticType st = step->getStaticResolutionContext().getStaticType(); + + for(++it; it != end; ++it) { + if(st.containsType(StaticType::ANY_ATOMIC_TYPE)) { + result = new IntermediateStepCheckResult(step, result); + } + + step = it->step; + + if(step->getStaticResolutionContext().isContextSizeUsed()) { + // We need the context size, so convert to a Sequence to work it out + Sequence seq(result->toSequence(context)); + result = new NavStepResult(new SequenceResult(step, seq), step, seq.getLength()); + } + else { + result = new NavStepResult(result, step, 0); + } + + st = step->getStaticResolutionContext().getStaticType(); + } + + // the last step allows either nodes or atomic items + if(st.containsType(StaticType::NODE_TYPE) && + st.containsType(StaticType::ANY_ATOMIC_TYPE)) { + result = new LastStepCheckResult(step, result); + } + } + + return result; +} + +void XQNav::addStep(const StepInfo &step) +{ + if(step.step->getType() == NAVIGATION) { + Steps &navSteps = ((XQNav*)step.step)->_steps; + for(Steps::iterator it2 = navSteps.begin(); + it2 != navSteps.end(); ++it2) { + _steps.push_back(*it2); + } + } + else { + _steps.push_back(step); + } +} + +void XQNav::addStepFront(ASTNode* step) +{ + if(step->getType() == NAVIGATION) { + Steps &navSteps = ((XQNav*)step)->_steps; + for(Steps::reverse_iterator it2 = navSteps.rbegin(); + it2 != navSteps.rend(); ++it2) { + _steps.insert(_steps.begin(), *it2); + } + } + else { + _steps.insert(_steps.begin(), step); + } +} + +ASTNode* XQNav::staticResolution(StaticContext *context) +{ + if(!_sortAdded) { + _sortAdded = true; + // Wrap ourselves in a document order sort + XPath2MemoryManager *mm = context->getMemoryManager(); + + ASTNode *result = new (mm) XQDocumentOrder(this, mm); + result->setLocationInfo(_steps.back().step); + + return result->staticResolution(context); + } + + Steps::iterator begin = _steps.begin(); + Steps::iterator end = _steps.end(); + Steps::iterator it = begin; + for(; it != end; ++it) { + // Statically resolve our step + it->step = it->step->staticResolution(context); + } + + return this; +} + +ASTNode* XQNav::staticTyping(StaticContext *context) +{ + _src.clear(); + + AutoContextItemTypeReset contextTypeReset(context, context->getContextItemType()); + + unsigned int props = StaticResolutionContext::DOCORDER | StaticResolutionContext::GROUPED | + StaticResolutionContext::PEER | StaticResolutionContext::SUBTREE | StaticResolutionContext::SAMEDOC | + StaticResolutionContext::ONENODE; + + Steps newSteps(XQillaAllocator(context->getMemoryManager())); + + Steps::iterator begin = _steps.begin(); + Steps::iterator end = _steps.end(); + Steps::iterator it = begin; + for(; it != end; ++it) { + // Statically resolve our step + ASTNode *step = it->step->staticTyping(context); + const StaticResolutionContext &stepSrc = step->getStaticResolutionContext(); + context->setContextItemType(stepSrc.getStaticType()); + + props = combineProperties(props, stepSrc.getProperties()); + + if(stepSrc.areContextFlagsUsed() || _src.isNoFoldingForced() || + stepSrc.getStaticType().containsType(StaticType::ANY_ATOMIC_TYPE) || + !stepSrc.isCreative()) { + if(it != begin) { + // Remove context item usage + _src.addExceptContextFlags(stepSrc); + } + else { + _src.add(stepSrc); + } + } + else { + // Constant fold, by clearing all our previous steps and just having our most recent step. + // This is only possible because the result of steps has to be nodes, and + // duplicates are removed, which means we aren't forced to execute a constant + // step a set number of times. + newSteps.clear(); + _src.add(stepSrc); + } + + if(step->getType() == NAVIGATION) { + Steps &navSteps = ((XQNav*)step)->_steps; + for(Steps::iterator it2 = navSteps.begin(); + it2 != navSteps.end(); ++it2) { + newSteps.push_back(it2->step); + } + } + else { + newSteps.push_back(step); + } + } + + _steps = newSteps; + newSteps.clear(); + + it = _steps.begin(); + end = _steps.end(); + for(; it != end; ++it) { + // Special case, to optimise //foo or //descendant::foo + if(it->step->getType() == STEP) { + XQStep *step = (XQStep*)it->step; + NodeTest *nodetest = (NodeTest*)step->getNodeTest(); + + // Check for a step with a type wildcard + if(nodetest->getTypeWildcard() && (it + 1) != end) { + + bool usesContextPositionOrSize = false; + const ASTNode *peek = (it + 1)->step; + while(peek->getType() == PREDICATE) { + const XQPredicate *pred = (const XQPredicate*)peek; + if(pred->getPredicate()->getStaticResolutionContext().isContextPositionUsed() || + pred->getPredicate()->getStaticResolutionContext().isContextSizeUsed() || + pred->getPredicate()->getStaticResolutionContext().getStaticType().containsType(StaticType::NUMERIC_TYPE)) { + usesContextPositionOrSize = true; + } + peek = pred->getExpression(); + } + + if(peek->getType() == STEP) { + const XQStep *peekstep = (XQStep*)peek; + // If the next node is CHILD or DESCENDANT axis, then + // this step must have children + if(peekstep->getAxis() == XQStep::CHILD || peekstep->getAxis() == XQStep::DESCENDANT) { + + // Check for a descendant-or-self axis + if(step->getAxis() == XQStep::DESCENDANT_OR_SELF) { + if(!usesContextPositionOrSize) { + // This is a descendant-or-self::node()/child::foo that we can optimise into descendant::foo + ++it; + const_cast(peekstep)->setAxis(XQStep::DESCENDANT); + // Set the properties to those for descendant axis + const_cast(peekstep->getStaticResolutionContext()). + setProperties(StaticResolutionContext::SUBTREE | StaticResolutionContext::DOCORDER | + StaticResolutionContext::GROUPED | StaticResolutionContext::SAMEDOC); + } + } + + nodetest->setHasChildren(); + } + // If the next node is ATTRIBUTE axis, then this step needs to be + // an element + else if(peekstep->getAxis() == XQStep::ATTRIBUTE) { + nodetest->setTypeWildcard(false); + nodetest->setNodeType(Node::element_string); + } + } + } + } + + newSteps.push_back(*it); + } + + _steps = newSteps; + + if(!_steps.empty()) { + _src.getStaticType() = _steps.back().step->getStaticResolutionContext().getStaticType(); + } + + _src.setProperties(props); + + if(!_src.isUsed()) { + return constantFold(context); + } + return this; +} + +const XQNav::Steps &XQNav::getSteps() const { + return _steps; +} + +unsigned int XQNav::combineProperties(unsigned int prev_props, unsigned int step_props) +{ + unsigned int new_props = 0; + + if((step_props & StaticResolutionContext::SELF)) { + new_props |= prev_props; + } + + if((prev_props & StaticResolutionContext::ONENODE) && (step_props & StaticResolutionContext::DOCORDER)) { + // If there was only one input node, and the step is in document order + // then we are still in document order + new_props |= StaticResolutionContext::DOCORDER | StaticResolutionContext::GROUPED; + } + + if((prev_props & StaticResolutionContext::DOCORDER) && (prev_props & StaticResolutionContext::PEER) && + (step_props & StaticResolutionContext::DOCORDER) && (step_props & StaticResolutionContext::SUBTREE)) { + // We keep the DOCORDER property, along with a few others that come for free + new_props |= StaticResolutionContext::DOCORDER | StaticResolutionContext::GROUPED | StaticResolutionContext::SUBTREE; + if(step_props & StaticResolutionContext::PEER) { + new_props |= StaticResolutionContext::PEER; + } + } + + if((prev_props & StaticResolutionContext::GROUPED) && (step_props & StaticResolutionContext::SAMEDOC)) { + // If the step keeps in the SAMEDOC, then the GROUPED property is maintained + new_props |= StaticResolutionContext::GROUPED; + } + + if((prev_props & StaticResolutionContext::SUBTREE) && (step_props & StaticResolutionContext::SUBTREE)) { + // If both are SUBTREE, then we still have SUBTREE + new_props |= StaticResolutionContext::SUBTREE; + } + + if((prev_props & StaticResolutionContext::SAMEDOC) && (step_props & StaticResolutionContext::SAMEDOC)) { + // If both are SAMEDOC, then we still have SAMEDOC + new_props |= StaticResolutionContext::SAMEDOC; + } + + if((prev_props & StaticResolutionContext::ONENODE) && (step_props & StaticResolutionContext::ONENODE)) { + // If both are ONENODE, then we still have ONENODE + new_props |= StaticResolutionContext::ONENODE; + } + + return new_props; +} + +///////////////////////////////////// +// NavStepResult +///////////////////////////////////// + +NavStepResult::NavStepResult(const Result &parent, ASTNode *step, unsigned int contextSize) + : ResultImpl(step), + initialised_(false), + parent_(parent), + step_(step), + stepResult_(0), + contextPos_(0), + contextSize_(contextSize), + contextItem_(0) +{ +} + +Item::Ptr NavStepResult::next(DynamicContext *context) +{ + AutoContextInfoReset autoReset(context); + + context->setContextSize(contextSize_); + context->setContextPosition(contextPos_); + context->setContextItem(contextItem_); + + Item::Ptr result = stepResult_->next(context); + while(result.isNull()) { + context->testInterrupt(); + + autoReset.resetContextInfo(); + + contextItem_ = parent_->next(context); + if(contextItem_.isNull()) { + parent_ = 0; + return 0; + } + ++contextPos_; + + context->setContextSize(contextSize_); + context->setContextPosition(contextPos_); + context->setContextItem(contextItem_); + + stepResult_ = step_->collapseTree(context); + result = stepResult_->next(context); + } + + return result; +} + +std::string NavStepResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + if(!parent_.isNull()) { + oss << in << " " << std::endl; + oss << parent_->asString(context, indent + 2); + oss << in << " " << std::endl; + } + oss << PrintAST::print(step_, context, indent + 1); + oss << in << "" << std::endl; + + return oss.str(); +} + +IntermediateStepCheckResult::IntermediateStepCheckResult(const LocationInfo *o, const Result &parent) + : ResultImpl(o), + parent_(parent) +{ +} + +Item::Ptr IntermediateStepCheckResult::next(DynamicContext *context) +{ + Item::Ptr result = parent_->next(context); + + // Check it's a node + if(result != NULLRCP && !result->isNode()) { + XQThrow(TypeErrorException,X("NavStepResult::next"), + X("The result of a step expression (StepExpr) is not a sequence of nodes [err:XPTY0019]")); + } + + return result; +} + +std::string IntermediateStepCheckResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + if(!parent_.isNull()) { + oss << in << " " << std::endl; + oss << parent_->asString(context, indent + 2); + oss << in << " " << std::endl; + } + oss << in << "" << std::endl; + + return oss.str(); +} + +LastStepCheckResult::LastStepCheckResult(const LocationInfo *o, const Result &parent) + : ResultImpl(o), + parent_(parent), + _nTypeOfItemsInLastStep(0) +{ +} + +Item::Ptr LastStepCheckResult::next(DynamicContext *context) +{ + Item::Ptr result = parent_->next(context); + + if(result != NULLRCP) { + // the last step allows either nodes or atomic items + switch(_nTypeOfItemsInLastStep) { + case 0: _nTypeOfItemsInLastStep=result->isNode()?1:2; break; + case 1: if(!result->isNode()) + XQThrow(TypeErrorException,X("LastStepCheckResult::next"), + X("The result of the last step in a path expression contains both nodes and atomic values [err:XPTY0018]")); + break; + case 2: if(result->isNode()) + XQThrow(TypeErrorException,X("LastStepCheckResult::next"), + X("The result of the last step in a path expression contains both nodes and atomic values [err:XPTY0018]")); + break; + } + } + + return result; +} + +std::string LastStepCheckResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + if(!parent_.isNull()) { + oss << in << " " << std::endl; + oss << parent_->asString(context, indent + 2); + oss << in << " " << std::endl; + } + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/ast/XQOperator.cpp b/src/ast/XQOperator.cpp new file mode 100644 index 00000000..ecf1e035 --- /dev/null +++ b/src/ast/XQOperator.cpp @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQOperator.cpp,v 1.12 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +XQOperator::XQOperator(const XMLCh* opName, const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), + _args(args) +{ + _opName=opName; + setType(ASTNode::OPERATOR); +} + +void XQOperator::addArgument(ASTNode* arg) +{ + _args.push_back(arg); +} + +ASTNode* XQOperator::getArgument(unsigned int index) const +{ + assert(index<_args.size()); + return _args[index]; +} + +void XQOperator::setArgument(unsigned int index, ASTNode *arg) +{ + assert(index<_args.size()); + _args[index] = arg; +} + +void XQOperator::removeArgument(unsigned int index) +{ + assert(index<_args.size()); + _args.erase(_args.begin() + index); +} + +unsigned int XQOperator::getNumArgs() const +{ + return _args.size(); +} + +const XMLCh* XQOperator::getOperatorName() const +{ + return _opName; +} + +const VectorOfASTNodes &XQOperator::getArguments() const { + return _args; +} diff --git a/src/ast/XQOrderingChange.cpp b/src/ast/XQOrderingChange.cpp new file mode 100644 index 00000000..470a64d2 --- /dev/null +++ b/src/ast/XQOrderingChange.cpp @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQOrderingChange.cpp,v 1.12 2006/11/01 16:37:18 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQOrderingChange.cpp: implementation of the XQOrderingChange class. +////////////////////////////////////////////////////////////////////// + +#include + +#include +#include + +#include +#include + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +XQOrderingChange::XQOrderingChange(StaticContext::NodeSetOrdering ordering, ASTNode* astNode, XPath2MemoryManager* expr) + : ASTNodeImpl(expr), + m_nOrdering(ordering), + m_pExpr(astNode) +{ + setType(ASTNode::ORDERING_CHANGE); +} + +Result XQOrderingChange::createResult(DynamicContext *context, int flags) const +{ + return m_pExpr->collapseTree(context); +} + +ASTNode* XQOrderingChange::staticResolution(StaticContext* context) +{ + AutoNodeSetOrderingReset orderReset(context, m_nOrdering); + m_pExpr = m_pExpr->staticResolution(context); + return this; +} + +ASTNode *XQOrderingChange::staticTyping(StaticContext *context) +{ + _src.clear(); + m_pExpr = m_pExpr->staticTyping(context); + _src.copy(m_pExpr->getStaticResolutionContext()); + return this; +} + +StaticContext::NodeSetOrdering XQOrderingChange::getOrderingValue() const +{ + return m_nOrdering; +} + +ASTNode* XQOrderingChange::getExpr() const +{ + return m_pExpr; +} + +void XQOrderingChange::setExpr(ASTNode *expr) +{ + m_pExpr = expr; +} diff --git a/src/ast/XQPIConstructor.cpp b/src/ast/XQPIConstructor.cpp new file mode 100644 index 00000000..c0582824 --- /dev/null +++ b/src/ast/XQPIConstructor.cpp @@ -0,0 +1,164 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQPIConstructor.cpp,v 1.1 2006/11/03 17:04:20 jpcs Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +XQPIConstructor::XQPIConstructor(ASTNode* name, ASTNode* value, XPath2MemoryManager* mm) + : XQDOMConstructor(mm), + m_name(name), + m_value(value) +{ + setType(ASTNode::DOM_CONSTRUCTOR); +} + +Sequence XQPIConstructor::collapseTreeInternal(DynamicContext *context, int flags) const +{ + Node::Ptr result; + try + { + Result resName=m_name->collapseTree(context); + AnyAtomicType::Ptr itemName=resName->next(context); + if(itemName==NULLRCP || resName->next(context)!=NULLRCP) + XQThrow(ASTException,X("DOM Constructor"),X("The target for the processing instruction must be a single " + "xs:NCName, xs:string or xs:untypedAtomic item [err:XPTY0004]")); + + const XMLCh* nodeName=NULL; + // the specs specify that a xs:NCName could be returned, but we create a xs:string in that case + if(itemName->getPrimitiveTypeIndex()==AnyAtomicType::STRING || + itemName->getPrimitiveTypeIndex()==AnyAtomicType::UNTYPED_ATOMIC) + { + nodeName=itemName->asString(context); + if(!XMLChar1_0::isValidNCName(nodeName, XMLString::stringLen(nodeName))) + XQThrow(ASTException,X("DOM Constructor"), + X("The target for the processing instruction must be a valid xs:NCName [err:XQDY0041]")); + } + else + XQThrow(ASTException,X("DOM Constructor"),X("The target for the processing instruction must be a single " + "xs:NCName, xs:string or xs:untypedAtomic item [err:XPTY0004]")); + + if(XMLString::compareIString(nodeName, XMLUni::fgXMLString)==0) + XQThrow(ASTException,X("DOM Constructor"), + X("The target for the processing instruction must not be 'XML' [err:XQDY0064]")); + int nIndex=XMLString::indexOf(nodeName, chQuestion); + int nTargetLen=XMLString::stringLen(nodeName); + while(nIndex!=-1) + { + if((nIndex+1)' [err:XQDY0026]")); + nIndex=XMLString::indexOf(nodeName, chQuestion, nIndex+1); + } + + if(nodeName==NULL || *nodeName==0) + XQThrow(ASTException,X("DOM Constructor"),X("The name for the processing instruction is empty")); + XMLBuffer value; + getStringValue(m_value, value, context); + + // Check for the substring "?>" + bool foundQ = false; + const XMLCh *ptr = value.getRawBuffer(); + const XMLCh *end = ptr + value.getLen(); + while(ptr != end) { + if(*ptr == chCloseAngle && foundQ) + XQThrow(ASTException,X("DOM Constructor"), + X("The content for the processing instruction must not contain the string '?>' [err:XQDY0026]")); + else if(*ptr == chQuestion) foundQ = true; + else foundQ = false; + ++ptr; + } + + const XMLCh* piContent=value.getRawBuffer(); + // remove leading whitespace + while(XMLChar1_0::isWhitespace(*piContent)) piContent++; + + result = context->getItemFactory()->createPINode(nodeName, piContent, context); + } + catch(DOMException& e) { + XQThrow(ASTException,X("PIConstructor"),e.getMessage()); + } + if(result.notNull()) + return Sequence(result, context->getMemoryManager()); + return Sequence(context->getMemoryManager()); +} + +ASTNode* XQPIConstructor::staticResolution(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + m_name = new (mm) XQAtomize(m_name, mm); + m_name->setLocationInfo(this); + m_name = m_name->staticResolution(context); + + m_value = new (mm) XQAtomize(m_value, mm); + m_value->setLocationInfo(this); + m_value = m_value->staticResolution(context); + + return this; +} + +ASTNode* XQPIConstructor::staticTyping(StaticContext *context) +{ + _src.clear(); + + m_name = m_name->staticTyping(context); + _src.add(m_name->getStaticResolutionContext()); + + m_value = m_value->staticTyping(context); + _src.add(m_value->getStaticResolutionContext()); + + _src.getStaticType().flags = StaticType::PI_TYPE; + _src.forceNoFolding(true); + _src.creative(true); + return this; // Never constant fold +} + +const XMLCh* XQPIConstructor::getNodeType() const +{ + return Node::processing_instruction_string; +} + +const ASTNode *XQPIConstructor::getName() const +{ + return m_name; +} + +const ASTNode *XQPIConstructor::getValue() const +{ + return m_value; +} + +void XQPIConstructor::setName(ASTNode *name) +{ + m_name = name; +} + +void XQPIConstructor::setValue(ASTNode *value) +{ + m_value = value; +} + diff --git a/src/ast/XQParenthesizedExpr.cpp b/src/ast/XQParenthesizedExpr.cpp new file mode 100644 index 00000000..505cca5b --- /dev/null +++ b/src/ast/XQParenthesizedExpr.cpp @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQParenthesizedExpr.cpp,v 1.11 2006/11/02 15:07:56 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include + +XQParenthesizedExpr::XQParenthesizedExpr(XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), _astNodes(XQillaAllocator(memMgr)) +{ + setType(ASTNode::PARENTHESIZED); +} + +Result XQParenthesizedExpr::createResult(DynamicContext* context, int flags) const +{ + return new ParenthesizedResult(this, flags); +} + +void XQParenthesizedExpr::addItem(ASTNode* di) { + + _astNodes.push_back(di); +} + +ASTNode* XQParenthesizedExpr::staticResolution(StaticContext *context) { + // Return a blank XQSequence if we have no children + if(_astNodes.empty()) { + ASTNode *result = new (getMemoryManager()) XQSequence(getMemoryManager()); + result->setLocationInfo(this); + return result; + } + + // Dissolve ourselves if we have only one child + if(_astNodes.size() == 1) { + return _astNodes.front()->staticResolution(context); + } + + for(VectorOfASTNodes::iterator i = _astNodes.begin(); i != _astNodes.end(); ++i) { + *i = (*i)->staticResolution(context); + } + + return this; +} + +ASTNode* XQParenthesizedExpr::staticTyping(StaticContext *context) { + _src.getStaticType().flags = 0; + + for(VectorOfASTNodes::iterator i = _astNodes.begin(); i != _astNodes.end(); ++i) { + *i = (*i)->staticTyping(context); + _src.getStaticType().typeUnion((*i)->getStaticResolutionContext().getStaticType()); + _src.add((*i)->getStaticResolutionContext()); + } + + if(!_src.isUsed()) { + return constantFold(context); + } + return this; +} + +const VectorOfASTNodes &XQParenthesizedExpr::getChildren() const { + return _astNodes; +} + +XQParenthesizedExpr::ParenthesizedResult::ParenthesizedResult(const XQParenthesizedExpr *di, int flags) + : ResultImpl(di), + _flags(flags), + _di(di), + _i(di->getChildren().begin()), + _result(0) +{ +} + +Item::Ptr XQParenthesizedExpr::ParenthesizedResult::next(DynamicContext *context) +{ + Item::Ptr item = _result->next(context); + + while(item == NULLRCP) { + if(_i != _di->getChildren().end()) { + _result = (*_i++)->collapseTree(context, _flags); + item = _result->next(context); + } + else { + _result = 0; + break; + } + } + + return item; +} + +std::string XQParenthesizedExpr::ParenthesizedResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/ast/XQPredicate.cpp b/src/ast/XQPredicate.cpp new file mode 100644 index 00000000..275393e7 --- /dev/null +++ b/src/ast/XQPredicate.cpp @@ -0,0 +1,351 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQPredicate.cpp,v 1.8 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" + +#include +#include +#include +#include +#include + +XQPredicate::XQPredicate(ASTNode *predicate, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), + expr_(0), + predicate_(predicate) +{ + setType(ASTNode::PREDICATE); +} + +XQPredicate::XQPredicate(ASTNode* expr, ASTNode *predicate, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), + expr_(expr), + predicate_(predicate) +{ + setType(ASTNode::PREDICATE); +} + +ASTNode* XQPredicate::staticResolution(StaticContext *context) +{ + expr_ = expr_->staticResolution(context); + + { + AutoNodeSetOrderingReset orderReset(context); + predicate_ = predicate_->staticResolution(context); + } + + return this; +} + +ASTNode* XQPredicate::staticTyping(StaticContext *context) +{ + _src.clear(); + + XPath2MemoryManager *mm = context->getMemoryManager(); + + expr_ = expr_->staticTyping(context); + _src.copy(expr_->getStaticResolutionContext()); + + if(expr_->getType() == SEQUENCE && + ((XQSequence*)expr_)->getItemConstructors().empty()) { + return expr_; + } + + AutoContextItemTypeReset contextTypeReset(context, expr_->getStaticResolutionContext().getStaticType()); + + predicate_ = predicate_->staticTyping(context); + + const StaticResolutionContext &newSrc = predicate_->getStaticResolutionContext(); + + if(!newSrc.isUsed() && !predicate_->isSingleNumericConstant(context)) { + // It's not a numeric constant + AutoDelete dContext(context->createDynamicContext()); + dContext->setMemoryManager(mm); + if(predicate_->collapseTree(dContext)->getEffectiveBooleanValue(dContext, this)) { + // We have a true predicate + return expr_; + } + else { + // We have a false predicate, which is constant folded to an empty sequence + ASTNode *result = new (mm) XQSequence(mm); + result->setLocationInfo(expr_); + return result; + } + } + + // Remove context item usage + _src.addExceptContextFlags(newSrc); + + if(!_src.isUsed()) { + return constantFold(context); + } + return this; +} + +Result XQPredicate::createResult(DynamicContext* context, int flags) const +{ + const StaticResolutionContext &src = predicate_->getStaticResolutionContext(); + + Result parent = expr_->collapseTree(context, flags); + + unsigned int contextSize = 0; + if(src.isContextSizeUsed()) { + // We need the context size, so convert to a Sequence to work it out + Sequence seq(parent->toSequence(context)); + contextSize = seq.getLength(); + parent = new SequenceResult(this, seq); + } + if(src.getStaticType().isType(StaticType::NUMERIC_TYPE) && + !src.isContextItemUsed() && !src.isContextPositionUsed()) { + // It only contains numeric type results, and doesn't use the context + // item or position + return new NumericPredicateFilterResult(parent, predicate_, contextSize); + } + else if(!src.getStaticType().containsType(StaticType::NUMERIC_TYPE)) { + // It only contains non-numeric results + return new NonNumericPredicateFilterResult(parent, predicate_, contextSize); + } + else { + return new PredicateFilterResult(parent, predicate_, contextSize); + } +} + +ASTNode *XQPredicate::addPredicates(ASTNode *expr, VectorOfPredicates *preds) +{ + VectorOfPredicates::iterator i = preds->begin(); + VectorOfPredicates::iterator end = preds->end(); + for(; i != end; ++i) { + (*i)->setExpression(expr); + expr = *i; + } + return expr; +} + +///////////////////////////////////// +// PredicateFilterResult +///////////////////////////////////// + +XQPredicate::PredicateFilterResult::PredicateFilterResult(const Result &parent, const ASTNode *pred, unsigned int contextSize) + : ResultImpl(pred), + todo_(true), + parent_(parent), + pred_(pred), + contextPos_(0), + contextSize_(contextSize) +{ +} + +Item::Ptr XQPredicate::PredicateFilterResult::next(DynamicContext *context) +{ + AutoContextInfoReset autoReset(context); + + bool contextUsed = pred_->getStaticResolutionContext().isContextItemUsed() || + pred_->getStaticResolutionContext().isContextPositionUsed(); + + Item::Ptr result = 0; + while(result == NULLRCP) { + result = parent_->next(context); + if(result == NULLRCP) { + parent_ = 0; + return 0; + } + + ++contextPos_; + + if(todo_ || contextUsed) { + todo_ = false; + + context->setContextSize(contextSize_); + context->setContextPosition(contextPos_); + context->setContextItem(result); + + Result pred_result = pred_->collapseTree(context); + first_ = pred_result->next(context); + if(first_ != NULLRCP) { + second_ = pred_result->next(context); + } + + autoReset.resetContextInfo(); + } + + // 3.2.2 ... + // The predicate truth value is derived by applying the following rules, in order: + // 1) If the value of the predicate expression is an atomic value of a numeric type, the predicate truth + // value is true if and only if the value of the predicate expression is equal to the context position. + if(first_ != NULLRCP && second_ == NULLRCP && first_->isAtomicValue() && + ((const AnyAtomicType::Ptr)first_)->isNumericValue()) { + const Numeric::Ptr num = (const Numeric::Ptr)first_; + if(!num->equals((const AnyAtomicType::Ptr)context->getItemFactory()->createInteger((long)contextPos_, context), context)) { + result = 0; + } + else if(!contextUsed) { + parent_ = 0; + } + } + else { + // 2) Otherwise, the predicate truth value is the effective boolean value of the predicate expression + if(!ResultImpl::getEffectiveBooleanValue(first_, second_, context, this)) { + result = 0; + } + } + } + + return result; +} + +void XQPredicate::PredicateFilterResult::skip() +{ + parent_->skip(); +} + +std::string XQPredicate::PredicateFilterResult::asString(DynamicContext *context, int indent) const +{ + return "predicatefilterresult"; +} + +///////////////////////////////////// +// NonNumericPredicateFilterResult +///////////////////////////////////// + +XQPredicate::NonNumericPredicateFilterResult::NonNumericPredicateFilterResult(const Result &parent, const ASTNode *pred, unsigned int contextSize) + : ResultImpl(pred), + todo_(true), + parent_(parent), + pred_(pred), + contextPos_(0), + contextSize_(contextSize) +{ +} + +Item::Ptr XQPredicate::NonNumericPredicateFilterResult::next(DynamicContext *context) +{ + AutoContextInfoReset autoReset(context); + + bool contextUsed = pred_->getStaticResolutionContext().isContextItemUsed() || + pred_->getStaticResolutionContext().isContextPositionUsed(); + + Item::Ptr result = 0; + while(result == NULLRCP) { + result = parent_->next(context); + if(result == NULLRCP) { + parent_ = 0; + return 0; + } + + ++contextPos_; + + if(todo_ || contextUsed) { + todo_ = false; + + context->setContextSize(contextSize_); + context->setContextPosition(contextPos_); + context->setContextItem(result); + + // 2) Otherwise, the predicate truth value is the effective boolean value of the predicate expression + if(!pred_->collapseTree(context)->getEffectiveBooleanValue(context, this)) { + result = 0; + if(!contextUsed) { + parent_ = 0; + } + } + + autoReset.resetContextInfo(); + } + } + + return result; +} + +void XQPredicate::NonNumericPredicateFilterResult::skip() +{ + parent_->skip(); +} + +std::string XQPredicate::NonNumericPredicateFilterResult::asString(DynamicContext *context, int indent) const +{ + return "nonnumericpredicatefilterresult"; +} + +///////////////////////////////////// +// NumericPredicateFilterResult +///////////////////////////////////// + +XQPredicate::NumericPredicateFilterResult::NumericPredicateFilterResult(const Result &parent, const ASTNode *pred, unsigned int contextSize) + : ResultImpl(pred), + todo_(true), + parent_(parent), + pred_(pred), + contextSize_(contextSize) +{ +} + +Item::Ptr XQPredicate::NumericPredicateFilterResult::next(DynamicContext *context) +{ + if(todo_) { + todo_ = false; + + ItemFactory* pFactory=context->getItemFactory(); + + AutoContextInfoReset autoReset(context); + context->setContextSize(contextSize_); + + // Set the context item to something other than null, + // since fn:last() checks to see that there is actually + // a context item + context->setContextItem(pFactory->createInteger(1, context)); + + Result pred_result = pred_->collapseTree(context); + Numeric::Ptr first = (Numeric::Ptr)pred_result->next(context); + if(first == NULLRCP) { + // The effective boolean value is therefore false + parent_ = 0; + return 0; + } + + Item::Ptr second = pred_result->next(context); + if(second != NULLRCP) { + // The effective boolean value causes an error - + // so call it to get the correct error + parent_ = 0; + ResultImpl::getEffectiveBooleanValue(first, second, context, this); + return 0; + } + + autoReset.resetContextInfo(); + + int pos = 1; + while(pFactory->createInteger(pos, context)->lessThan(first, context) && parent_->next(context) != NULLRCP) { + pos++; + } + + if(pFactory->createInteger(pos, context)->equals(first, context)) { + Item::Ptr result = parent_->next(context); + parent_ = 0; + return result; + } + + parent_ = 0; + } + + return 0; +} + +void XQPredicate::NumericPredicateFilterResult::skip() +{ + parent_->skip(); +} + +std::string XQPredicate::NumericPredicateFilterResult::asString(DynamicContext *context, int indent) const +{ + return "numericpredicatefilterresult"; +} diff --git a/src/ast/XQQuantified.cpp b/src/ast/XQQuantified.cpp new file mode 100644 index 00000000..a6e50801 --- /dev/null +++ b/src/ast/XQQuantified.cpp @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQQuantified.cpp,v 1.15 2006/11/01 16:37:18 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQQuantified.cpp: implementation of the XQQuantified class. +////////////////////////////////////////////////////////////////////// + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +XQQuantified::XQQuantified(XQQuantified::QuantifierType qType, VectorOfVariableBinding* bindings, ASTNode* returnExpr, XPath2MemoryManager* expr) + : XQFLWOR(bindings, NULL, NULL, returnExpr, expr) +{ + _qType=qType; + setType(ASTNode::FLWOR_QUANTIFIED); +} + +ASTNode *XQQuantified::staticTyping(StaticContext *context) +{ + _src.clear(); + + XQFLWOR::staticTypingImpl(context); + + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; + + if(!_bindings->empty()) { + if(_return->isConstant()) { + AutoDelete dContext(context->createDynamicContext()); + dContext->setMemoryManager(context->getMemoryManager()); + bool value = _return->collapseTree(dContext)->getEffectiveBooleanValue(dContext, _return); + ASTNode *newBlock = new (getMemoryManager()) + XQSequence(dContext->getItemFactory()->createBoolean(value, dContext), + dContext, getMemoryManager()); + newBlock->setLocationInfo(this); + return newBlock->staticResolution(context); + } + return this; + } + else { + return constantFold(context); + } +} + +Result XQQuantified::createResultImpl(VectorOfVariableBinding::const_iterator it, VectorOfVariableBinding::const_iterator end, DynamicContext* context, int flags) const +{ + return new QuantifiedResult(it, end, this); +} + +XQQuantified::QuantifierType XQQuantified::getQuantifierType() const +{ + return _qType; +} + +XQQuantified::QuantifiedResult::QuantifiedResult(VectorOfVariableBinding::const_iterator it, VectorOfVariableBinding::const_iterator end, + const XQQuantified *quantified) + : SingleResult(quantified), + _quantified(quantified) +{ + for(; it != end; ++it) { + _ebs.push_back(ProductFactor(*it)); + } +} + +Item::Ptr XQQuantified::QuantifiedResult::getSingleResult(DynamicContext *context) const +{ + VariableStore* varStore = context->getVariableStore(); + bool defaultResult = (_quantified->getQuantifierType() == some) ? false : true; + + ExecutionBindings &ebs = const_cast(_ebs); // _ebs is mutable + + // Initialise and run the execution bindings + varStore->addLogicalBlockScope(); + if(_quantified->nextState(ebs, context, true)) { + do { + bool result = _quantified->getReturnExpr()->collapseTree(context)->getEffectiveBooleanValue(context, _quantified->getReturnExpr()); + if(defaultResult != result) { + defaultResult = result; + break; + } + } while(_quantified->nextState(ebs, context, false)); + } + varStore->removeScope(); + + return (const Item::Ptr)context->getItemFactory()->createBoolean(defaultResult, context); +} + +std::string XQQuantified::QuantifiedResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/ast/XQSequence.cpp b/src/ast/XQSequence.cpp new file mode 100644 index 00000000..6c71190d --- /dev/null +++ b/src/ast/XQSequence.cpp @@ -0,0 +1,209 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQSequence.cpp,v 1.17 2006/11/17 18:08:07 jpcs Exp $ + */ + +#include + +#include "../config/xqilla_config.h" +#include +#include +#include + +#if defined(WIN32) && !defined(__CYGWIN__) +#define snprintf _snprintf +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +inline ItemConstructor *itemToItemConstructor(const Item::Ptr &item, DynamicContext *context, XPath2MemoryManager *memMgr) +{ + if(item->isNode()) { + XQThrow2(IllegalArgumentException, X("itemToItemConstructor"), X("Cannot create an ItemConstructor for a Node")); + } + else { + const AnyAtomicType *atom = (const AnyAtomicType*)item.get(); + switch(atom->getPrimitiveTypeIndex()) + { + case AnyAtomicType::QNAME: + { + const ATQNameOrDerived *qname = (const ATQNameOrDerived*)atom; + return new (memMgr) ATQNameConstructor(atom->getTypeURI(), + atom->getTypeName(), + qname->getURI(), + qname->getPrefix(), + qname->getName()); + } + case AnyAtomicType::DECIMAL: + case AnyAtomicType::DOUBLE: + case AnyAtomicType::FLOAT: + { + const Numeric *number = (const Numeric*)atom; + if((number->getState()==Numeric::NUM || number->getState()==Numeric::NEG_NUM) && !number->isZero()) + return new (memMgr) NumericTypeConstructor(number->getTypeURI(), + number->getTypeName(), + number->asMAPM(), + number->getPrimitiveTypeIndex(), + memMgr); + else + return new (memMgr) AnyAtomicTypeConstructor(number->getTypeURI(), + number->getTypeName(), + number->asString(context), + number->getPrimitiveTypeIndex()); + } + default: + return new (memMgr) AnyAtomicTypeConstructor(atom->getTypeURI(), + atom->getTypeName(), + atom->asString(context), + atom->getPrimitiveTypeIndex()); + } + } +} + +static const unsigned int CONSTANT_FOLD_LIMIT = 30; + +XQSequence *XQSequence::constantFold(Result &result, DynamicContext *context, XPath2MemoryManager* memMgr, + const LocationInfo *location) +{ + XQSequence *seq = new (memMgr) XQSequence(memMgr); + seq->setLocationInfo(location); + + Item::Ptr item; + while((item = result->next(context)).notNull()) { + if(seq->_itemConstructors.size() > CONSTANT_FOLD_LIMIT) return 0; + seq->_itemConstructors.push_back(itemToItemConstructor(item, context, memMgr)); + } + + return seq; +} + +XQSequence::XQSequence(const Item::Ptr &item, DynamicContext *context, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), _itemConstructors(XQillaAllocator(memMgr)) +{ + setType(ASTNode::SEQUENCE); + _itemConstructors.push_back(itemToItemConstructor(item, context, memMgr)); +} + +XQSequence::XQSequence(ItemConstructor *ic, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), _itemConstructors(XQillaAllocator(memMgr)) +{ + setType(ASTNode::SEQUENCE); + _itemConstructors.push_back(ic); +} + +XQSequence::XQSequence(XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), _itemConstructors(XQillaAllocator(memMgr)) +{ + setType(ASTNode::SEQUENCE); +} + +XQSequence::~XQSequence() +{ + //no-op +} + +ASTNode* XQSequence::staticResolution(StaticContext *context) +{ + return this; +} + +ASTNode *XQSequence::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = 0; + + ItemConstructor::Vector::iterator it = _itemConstructors.begin(); + for(; it != _itemConstructors.end(); ++it) { + _src.getStaticType().typeUnion((*it)->getStaticType()); + } + + return this; +} + +Result XQSequence::createResult(DynamicContext* context, int flags) const +{ + return new SequenceResult(this); +} + +/** Returns true if this XQ has no predicates, and is an instance of + XQSequence or XQLiteral. If the literal value of this XQ + is a single DateOrTimeType, then !hasTimezone() on it must return true, + otherwise this method will return false. */ +bool XQSequence::isDateOrTimeAndHasNoTimezone(StaticContext *context) const +{ + AutoDelete dContext(context->createDynamicContext()); + dContext->setMemoryManager(context->getMemoryManager()); + + ItemConstructor::Vector::const_iterator it = _itemConstructors.begin(); + for(; it != _itemConstructors.end(); ++it) { + Item::Ptr item = (*it)->createItem(dContext); + if(item->isAtomicValue() && + ((const AnyAtomicType::Ptr)item)->isDateOrTimeTypeValue() && + !((const DateOrTimeType::Ptr)item)->hasTimezone()) { + return true; + } + } + return false; +} + +bool XQSequence::isSingleNumericConstant(StaticContext *context) const +{ + if(_itemConstructors.size() == 1) { + AutoDelete dContext(context->createDynamicContext()); + dContext->setMemoryManager(context->getMemoryManager()); + + Item::Ptr item = _itemConstructors[0]->createItem(dContext); + if(item->isAtomicValue() && + ((const AnyAtomicType::Ptr)item)->isNumericValue()) { + return true; + } + } + return false; +} + +XQSequence::SequenceResult::SequenceResult(const XQSequence *seq) + : ResultImpl(seq), + _seq(seq), + _it(seq->getItemConstructors().begin()) +{ +} + +Item::Ptr XQSequence::SequenceResult::next(DynamicContext *context) +{ + Item::Ptr item; + if(_it != _seq->getItemConstructors().end()) { + item = (*_it)->createItem(context); + ++_it; + } + return item; +} + +std::string XQSequence::SequenceResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/ast/XQStep.cpp b/src/ast/XQStep.cpp new file mode 100644 index 00000000..e8b2dc3e --- /dev/null +++ b/src/ast/XQStep.cpp @@ -0,0 +1,205 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQStep.cpp,v 1.16 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +XQStep::XQStep(Axis axis, NodeTest* nodeTest, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), + nodeTest_(nodeTest), + axis_(axis) +{ + setType(ASTNode::STEP); +} + +XQStep::~XQStep() +{ +} + +unsigned int XQStep::getAxisProperties(Axis axis) +{ + unsigned int properties = 0; + // properties depend on the axis of the step + switch (axis) { + case SELF: + properties |= StaticResolutionContext::ONENODE | StaticResolutionContext::SELF; + // Fall through + case CHILD: + case ATTRIBUTE: + case NAMESPACE: + properties |= StaticResolutionContext::SUBTREE | StaticResolutionContext::PEER; + break; + case DESCENDANT: + case DESCENDANT_OR_SELF: + properties |= StaticResolutionContext::SUBTREE; + break; + case FOLLOWING_SIBLING: + case PRECEDING_SIBLING: + properties |= StaticResolutionContext::PEER; + break; + case PARENT: + properties |= StaticResolutionContext::PEER | StaticResolutionContext::ONENODE; + break; + default: + break; + } + properties |= StaticResolutionContext::GROUPED | StaticResolutionContext::SAMEDOC; + + if(isForwardAxis(axis) || axis == PARENT) { + properties |= StaticResolutionContext::DOCORDER; + } + + return properties; +} + +ASTNode* XQStep::staticResolution(StaticContext *context) +{ + nodeTest_->staticResolution(context, this); + return this; +} + +ASTNode *XQStep::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.setProperties(getAxisProperties(axis_)); + _src.contextItemUsed(true); + + bool isExact; + nodeTest_->getStaticType(_src.getStaticType(), context, isExact, this); + + switch(axis_) { + case SELF: + _src.getStaticType().typeIntersect(context->getContextItemType()); + break; + case ATTRIBUTE: + _src.getStaticType().typeIntersect(StaticType::ATTRIBUTE_TYPE); + break; + case NAMESPACE: + _src.getStaticType().typeIntersect(StaticType::NAMESPACE_TYPE); + break; + case CHILD: + case DESCENDANT: + case FOLLOWING: + case FOLLOWING_SIBLING: + case PRECEDING: + case PRECEDING_SIBLING: + _src.getStaticType().typeIntersect(StaticType::ELEMENT_TYPE | StaticType::TEXT_TYPE | StaticType::PI_TYPE | + StaticType::COMMENT_TYPE); + break; + case ANCESTOR: + case PARENT: + _src.getStaticType().typeIntersect(StaticType::DOCUMENT_TYPE | StaticType::ELEMENT_TYPE); + break; + case DESCENDANT_OR_SELF: + case ANCESTOR_OR_SELF: + // Could be any type + break; + } + + return this; +} + +Result XQStep::createResult(DynamicContext* context, int flags) const +{ + return new StepResult(axis_, nodeTest_, this); +} + +bool XQStep::isForwardAxis(Axis axis) +{ + switch(axis) { + case ANCESTOR: + case ANCESTOR_OR_SELF: + case PARENT: + case PRECEDING: + case PRECEDING_SIBLING: + return false; + + case ATTRIBUTE: + case CHILD: + case DESCENDANT: + case DESCENDANT_OR_SELF: + case FOLLOWING: + case FOLLOWING_SIBLING: + case NAMESPACE: + case SELF: + return true; + } + return false; +} + +const NodeTest *XQStep::getNodeTest() const { + return nodeTest_; +} + +void XQStep::setNodeTest(NodeTest *nt) { + nodeTest_ = nt; +} + +XQStep::Axis XQStep::getAxis() const { + return axis_; +} + +void XQStep::setAxis(XQStep::Axis a) { + axis_ = a; +} + +StepResult::StepResult(XQStep::Axis axis, const NodeTest *nt, const LocationInfo *location) + : ResultImpl(location), + toDo_(true), + result_(0), + axis_(axis), + nodeTest_(nt) +{ +} + +Item::Ptr StepResult::next(DynamicContext *context) +{ + if(toDo_) { + toDo_ = false; + + Item::Ptr item = context->getContextItem(); + + if(item == NULLRCP) { + XQThrow(TypeErrorException,X("StepResult::next"), X("It is an error for the context item to be undefined when using it [err:XPDY0002]")); + } + if(!item->isNode()) { + XQThrow(TypeErrorException,X("StepResult::next"), X("An attempt was made to perform an axis step when the Context Item was not a node [err:XPTY0020]")); + } + + result_ = ((Node*)item.get())->getAxisResult(axis_, nodeTest_, context, this); + } + + return result_->next(context); +} + +std::string StepResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/ast/XQTextConstructor.cpp b/src/ast/XQTextConstructor.cpp new file mode 100644 index 00000000..76a4823f --- /dev/null +++ b/src/ast/XQTextConstructor.cpp @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQTextConstructor.cpp,v 1.1 2006/11/03 17:04:20 jpcs Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +XQTextConstructor::XQTextConstructor(bool isCDATA, ASTNode *value, XPath2MemoryManager* mm) + : XQDOMConstructor(mm), + m_nodeType(isCDATA ? Node::cdata_string : Node::text_string), + m_value(value) +{ + setType(ASTNode::DOM_CONSTRUCTOR); +} + +Sequence XQTextConstructor::collapseTreeInternal(DynamicContext *context, int flags) const +{ + Node::Ptr result; + try + { + XMLBuffer value; + if(getStringValue(m_value, value, context)) + result = context->getItemFactory()->createTextNode(value.getRawBuffer(), context); + } + catch(DOMException& e) { + XQThrow(ASTException,X("DOM Constructor"),e.getMessage()); + } + if(result.notNull()) + return Sequence(result, context->getMemoryManager()); + return Sequence(context->getMemoryManager()); +} + +ASTNode* XQTextConstructor::staticResolution(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + m_value = new (mm) XQAtomize(m_value, mm); + m_value->setLocationInfo(this); + + m_value = m_value->staticResolution(context); + + return this; +} + +ASTNode* XQTextConstructor::staticTyping(StaticContext *context) +{ + _src.clear(); + + m_value = m_value->staticTyping(context); + _src.add(m_value->getStaticResolutionContext()); + + _src.getStaticType().flags = StaticType::TEXT_TYPE; + _src.forceNoFolding(true); + _src.creative(true); + return this; // Never constant fold +} + +const XMLCh* XQTextConstructor::getNodeType() const +{ + return m_nodeType; +} + +const ASTNode *XQTextConstructor::getValue() const +{ + return m_value; +} + +void XQTextConstructor::setValue(ASTNode *value) +{ + m_value = value; +} + diff --git a/src/ast/XQTreatAs.cpp b/src/ast/XQTreatAs.cpp new file mode 100644 index 00000000..2a7dd372 --- /dev/null +++ b/src/ast/XQTreatAs.cpp @@ -0,0 +1,155 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQTreatAs.cpp,v 1.14 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +XQTreatAs::XQTreatAs(ASTNode* expr, const SequenceType* exprType, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), + _expr(expr), + _exprType(exprType), + _doTypeCheck(true), + _isTreatAs(false) +{ + setType(ASTNode::TREAT_AS); +} + +Result XQTreatAs::createResult(DynamicContext* context, int flags) const +{ + Result result = _expr->collapseTree(context, flags); + if(_exprType->getOccurrenceIndicator() != SequenceType::STAR || + _exprType->getItemType() == NULL) { + result = _exprType->occurrenceMatches(result, this); + } + if(_doTypeCheck) { + result = _exprType->typeMatches(result, this); + } + return result; +} + +ASTNode* XQTreatAs::staticResolution(StaticContext *context) +{ + _exprType->staticResolution(context); + + if(_exprType->getOccurrenceIndicator() == SequenceType::QUESTION_MARK || + _exprType->getOccurrenceIndicator() == SequenceType::EXACTLY_ONE) { + AutoNodeSetOrderingReset orderReset(context); + _expr = _expr->staticResolution(context); + } + else { + _expr = _expr->staticResolution(context); + } + + return this; +} + +ASTNode *XQTreatAs::staticTyping(StaticContext *context) +{ + _src.clear(); + + _expr = _expr->staticTyping(context); + + // Do as much static time type checking as we can, given the + // limited static typing that we implement + const SequenceType::ItemType *itemType = _exprType->getItemType(); + if(itemType != NULL) { + const StaticType &sType = _expr->getStaticResolutionContext().getStaticType(); + + bool isExact; + itemType->getStaticType(_src.getStaticType(), context, isExact, this); + + if(!sType.containsType(_src.getStaticType().flags) && + (_exprType->getOccurrenceIndicator() == SequenceType::EXACTLY_ONE || + _exprType->getOccurrenceIndicator() == SequenceType::PLUS)) { + // It never matches + XQThrow(XPath2TypeMatchException, X("XQTreatAs::staticResolution"), _isTreatAs ? + X("The type of the expression doesn't match the sequence type specified in the 'treat as' expression" + " [err:XPDY0050]") : + X("ItemType matching failed [err:XPTY0004]")); + } + + if(isExact && sType.isType(_src.getStaticType().flags)) { + if(_exprType->getOccurrenceIndicator() == SequenceType::STAR) { + // It always matches + return _expr; + } + _doTypeCheck = false; + } + + // Get a better static type by looking at our expression's type too + _src.getStaticType().typeIntersect(_expr->getStaticResolutionContext().getStaticType()); + + if(_src.getStaticType().containsType(StaticType::NODE_TYPE)) { + // Copy the properties if we return nodes + _src.setProperties(_expr->getStaticResolutionContext().getProperties()); + } + } + else { + _src.getStaticType().flags = 0; + _doTypeCheck = false; + } + _src.add(_expr->getStaticResolutionContext()); + + if(_expr->isConstant()) { + try + { + return constantFold(context); + } + catch(XQException& e) + { + if(_isTreatAs) + { + XMLBuffer buff(1023, context->getMemoryManager()); + buff.set(e.getError()); + int index=XMLString::indexOf(buff.getRawBuffer(),chOpenSquare); + if(index!=-1) + XMLString::copyString(buff.getRawBuffer()+index, X("[err:XPDY0050]")); + else + buff.append(X("[err:XPDY0050]")); + XQThrow(XPath2TypeMatchException, X("XQTreatAs::staticResolution"), buff.getRawBuffer()); + } + else + throw; + } + } + return this; +} + +const ASTNode *XQTreatAs::getExpression() const { + return _expr; +} + +const SequenceType *XQTreatAs::getSequenceType() const { + return _exprType; +} + +void XQTreatAs::setExpression(ASTNode *item) { + _expr = item; +} diff --git a/src/ast/XQTypeswitch.cpp b/src/ast/XQTypeswitch.cpp new file mode 100644 index 00000000..432e53cb --- /dev/null +++ b/src/ast/XQTypeswitch.cpp @@ -0,0 +1,289 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQTypeswitch.cpp,v 1.15 2006/11/01 16:37:18 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQTypeswitch.cpp: implementation of the XQTypeswitch class. +////////////////////////////////////////////////////////////////////// + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +XQTypeswitch::XQTypeswitch(ASTNode* eval, VectorOfClause* clauses, Clause* defReturn, XPath2MemoryManager* expr) + : ASTNodeImpl(expr) +{ + _expr=eval; + _default=defReturn; + _clauses=clauses; + setType(ASTNode::TYPESWITCH); +} + +Result XQTypeswitch::createResult(DynamicContext *context, int flags) const +{ + return new TypeswitchResult(this, flags); +} + +ASTNode* XQTypeswitch::staticResolution(StaticContext *context) +{ + // Statically resolve the test expression + _expr = _expr->staticResolution(context); + + // Call static resolution on the clauses + for(VectorOfClause::iterator it = _clauses->begin(); it != _clauses->end(); ++it) { + (*it)->_type->staticResolution(context); + (*it)->staticResolution(_expr->getStaticResolutionContext(), context, _src); + } + + _default->staticResolution(_expr->getStaticResolutionContext(), context, _src); + + return this; +} + +ASTNode* XQTypeswitch::staticTyping(StaticContext *context) +{ + _src.clear(); + + // Statically resolve the test expression + _expr = _expr->staticTyping(context); + const StaticResolutionContext &exprSrc = _expr->getStaticResolutionContext(); + + _src.getStaticType().flags = 0; + + if(exprSrc.isUsed()) { + _src.add(exprSrc); + + // Do basic static type checking on the clauses, + // to eliminate ones which will never be matches, + // and find ones which will always be matched. + VectorOfClause newClauses(XQillaAllocator(context->getMemoryManager())); + VectorOfClause::iterator it = _clauses->begin(); + for(; it != _clauses->end(); ++it) { + const SequenceType::ItemType *itemType = (*it)->_type->getItemType(); + if(itemType != NULL) { + const StaticType &sType = _expr->getStaticResolutionContext().getStaticType(); + + bool isExact; + StaticType clauseType; + itemType->getStaticType(clauseType, context, isExact, *it); + + if(isExact && (sType.flags & clauseType.flags) != 0 && + (sType.flags & ~clauseType.flags) == 0 && + (*it)->_type->getOccurrenceIndicator() == SequenceType::STAR) { + // It always matches, so set this clause as the + // default clause and remove all the others + newClauses.clear(); + _default = *it; + _default->_type = 0; + break; + } + else if((sType.flags & clauseType.flags) == 0 && + ((*it)->_type->getOccurrenceIndicator() == SequenceType::EXACTLY_ONE || + (*it)->_type->getOccurrenceIndicator() == SequenceType::PLUS)) { + // It never matches, so don't add it to the new clauses + } + else { + newClauses.push_back(*it); + } + } + } + *_clauses = newClauses; + + // Call static resolution on the new clauses + _src.setProperties((unsigned int)-1); + for(it = _clauses->begin(); it != _clauses->end(); ++it) { + (*it)->staticTyping(_expr->getStaticResolutionContext(), context, _src); + } + + _default->staticTyping(_expr->getStaticResolutionContext(), context, _src); + + return this; + } + else { + // If it's constant, we can narrow it down to the correct clause + AutoDelete dContext(context->createDynamicContext()); + dContext->setMemoryManager(context->getMemoryManager()); + Sequence value = _expr->collapseTree(dContext)->toSequence(dContext); + + Clause *match = 0; + for(VectorOfClause::iterator it=_clauses->begin();it!=_clauses->end();++it) { + try { + (*it)->_type->matches(value, (*it)->_type)->toSequence(dContext); + match = *it; + break; + } + catch(const XPath2TypeMatchException &ex) { + // Well, it doesn't match that one then... + } + } + + // Replace the default with the matched clause and + // remove the remaining clauses, as they don't match + if(match) { + _default = match; + _default->_type = 0; + } + _clauses->clear(); + + // Statically resolve the default clause + _default->staticTyping(_expr->getStaticResolutionContext(), context, _src); + + // Constant fold if possible + if(!_src.isUsed()) { + return constantFold(context); + } + return this; + } +} + +void XQTypeswitch::Clause::staticResolution(const StaticResolutionContext &var_src, StaticContext* context, StaticResolutionContext &src) +{ + _expr = _expr->staticResolution(context); +} + +void XQTypeswitch::Clause::staticTyping(const StaticResolutionContext &var_src, StaticContext* context, + StaticResolutionContext &src) +{ + VariableTypeStore* varStore=context->getVariableTypeStore(); + + if(_variable != 0) { + varStore->addLogicalBlockScope(); + _uri = context->getUriBoundToPrefix(XPath2NSUtils::getPrefix(_variable, context->getMemoryManager()), this); + _name = XPath2NSUtils::getLocalName(_variable); + varStore->declareVar(_uri, _name, var_src); + } + + StaticResolutionContext newSrc(context->getMemoryManager()); + _expr = _expr->staticTyping(context); + newSrc.add(_expr->getStaticResolutionContext()); + + if(_variable != 0) { + // Remove the local variable from the StaticResolutionContext + if(!newSrc.removeVariable(_uri, _name)) { + // If the variable isn't used, don't bother setting it when we execute + _variable = 0; + } + varStore->removeScope(); + } + + src.getStaticType().typeUnion(_expr->getStaticResolutionContext().getStaticType()); + src.setProperties(src.getProperties() & _expr->getStaticResolutionContext().getProperties()); + src.add(newSrc); +} + +const ASTNode *XQTypeswitch::getExpression() const +{ + return _expr; +} + +const XQTypeswitch::Clause *XQTypeswitch::getDefaultClause() const +{ + return _default; +} + +const XQTypeswitch::VectorOfClause *XQTypeswitch::getClauses() const +{ + return _clauses; +} + +void XQTypeswitch::setExpression(ASTNode *expr) +{ + _expr = expr; +} + +XQTypeswitch::TypeswitchResult::TypeswitchResult(const XQTypeswitch *di, int flags) + : ResultImpl(di), + _flags(flags), + _di(di), + _scope(0), + _result(0), + _scopeRemoved(true) +{ +} + +Item::Ptr XQTypeswitch::TypeswitchResult::next(DynamicContext *context) +{ + VariableStore* varStore = context->getVariableStore(); + Scope *oldScope = varStore->getScopeState(); + + if(_result.isNull()) { + // retrieve the value of the operand expression + ResultBuffer value(_di->getExpression()->collapseTree(context)); + + const Clause *clause = 0; + + // find the effective case + for(VectorOfClause::const_iterator it = _di->getClauses()->begin(); + it != _di->getClauses()->end(); ++it) { + try { + (*it)->_type->matches(value.createResult(), (*it)->_type)->toSequence(context); + clause = *it; + break; + } + catch(const XPath2TypeMatchException &ex) { + // Well, it doesn't match that one then... + } + } + + // if no case is satisfied, use the default one + if(clause == 0) { + clause = _di->getDefaultClause(); + } + + // Execute the clause + if(clause->_variable != 0) { + varStore->addLogicalBlockScope(); + varStore->declareVar(clause->_uri, clause->_name, value.createResult()->toSequence(context), context); + _scopeRemoved = false; + } + + _result = clause->_expr->collapseTree(context, _flags); + } + else if(_scope != 0) { + varStore->setScopeState(_scope); + } + + const Item::Ptr item = _result->next(context); + + if(!_scopeRemoved) { + if(item == NULLRCP) { + varStore->removeScope(); + _scope = 0; + } + else { + _scope = varStore->getScopeState(); + varStore->setScopeState(oldScope); + } + } + + return item; +} + +std::string XQTypeswitch::TypeswitchResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/ast/XQValidate.cpp b/src/ast/XQValidate.cpp new file mode 100644 index 00000000..7ecd9d37 --- /dev/null +++ b/src/ast/XQValidate.cpp @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQValidate.cpp,v 1.14 2006/11/01 16:37:18 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQValidate.cpp: implementation of the XQValidate class. +////////////////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//////////////////////////////////////////////////////////////////////////////////////// +// +// + +XQValidate::XQValidate(ASTNode* valExpr, DocumentCache::ValidationMode valMode, XPath2MemoryManager* expr) + : ASTNodeImpl(expr) +{ + _expr=valExpr; + _validationMode=valMode; + setType(ASTNode::VALIDATE); +} + +Sequence XQValidate::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Result toBeValidated = _expr->collapseTree(context); + Item::Ptr first = toBeValidated->next(context); + Item::Ptr second = toBeValidated->next(context); + + if(first.isNull() || !second.isNull() || !first->isNode()) + XQThrow(FunctionException,X("XQValidate::collapseTreeInternal"), + X("The expression to be validated must evaluate to exactly one document or element node [err:XQTY0030].")); + + Node::Ptr node = (Node::Ptr)first; + if(node->dmNodeKind() != Node::element_string && + node->dmNodeKind() != Node::document_string) + XQThrow(FunctionException,X("XQValidate::collapseTreeInternal"), + X("The expression to be validated must evaluate to exactly one document or element node [err:XQTY0030].")); + + // perform validation on this item + Node::Ptr validatedElt = context->validate(node, _validationMode); + if(validatedElt.isNull()) + XQThrow(FunctionException,X("XQValidate::collapseTreeInternal"), X("Unexpected error while validating")); + + return Sequence(validatedElt, context->getMemoryManager()); +} + +ASTNode* XQValidate::staticResolution(StaticContext* ctx) +{ + _expr = _expr->staticResolution(ctx); + return this; +} + +ASTNode *XQValidate::staticTyping(StaticContext *context) +{ + _src.clear(); + + _expr = _expr->staticTyping(context); + _src.add(_expr->getStaticResolutionContext()); + + _src.getStaticType() = _expr->getStaticResolutionContext().getStaticType(); + _src.getStaticType().typeIntersect(StaticType::DOCUMENT_TYPE | StaticType::ELEMENT_TYPE); + + if(_src.getStaticType().isType(StaticType::EMPTY_TYPE)) { + XQThrow(FunctionException, X("XQValidate::collapseTreeInternal"), + X("The expression to be validated must evaluate to exactly one document or element node [err:XQTY0030].")); + } + + _src.forceNoFolding(true); + return this; // Never constant fold +} + +const ASTNode *XQValidate::getExpression() const +{ + return _expr; +} + +DocumentCache::ValidationMode XQValidate::getValidationMode() const +{ + return _validationMode; +} + +void XQValidate::setExpression(ASTNode *expr) +{ + _expr = expr; +} diff --git a/src/ast/XQVariable.cpp b/src/ast/XQVariable.cpp new file mode 100644 index 00000000..f31d38ee --- /dev/null +++ b/src/ast/XQVariable.cpp @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQVariable.cpp,v 1.16 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +XQVariable::XQVariable(const XMLCh *qualifiedName, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), + _uri(0), + _staticProperties(0) +{ + setType(ASTNode::VARIABLE); + + QualifiedName qname(qualifiedName, getMemoryManager()); + _prefix = qname.getPrefix(); + _name = qname.getName(); +} + +XQVariable::XQVariable(const XMLCh *prefix, const XMLCh *name, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), + _uri(0), + _staticProperties(0) +{ + setType(ASTNode::VARIABLE); + + _prefix = getMemoryManager()->getPooledString(prefix); + _name = getMemoryManager()->getPooledString(name); +} + +XQVariable::~XQVariable() +{ +} + +Result XQVariable::createResult(DynamicContext* context, int flags) const +{ + std::pair var = context->getVariableStore()->getVar(_uri, _name, context); + + if(!var.first) { + const XMLCh* qname = XPath2NSUtils::qualifyName(_prefix, _name, context->getMemoryManager()); + const XMLCh* msg = XPath2Utils::concatStrings(X("Variable "), qname, X(" does not exist [err:XPDY0002]"), context->getMemoryManager()); + XQThrow(DynamicErrorException, X("XQVariable::collapseTreeInternal"), msg); + } + + return var.second; +} + +ASTNode* XQVariable::staticResolution(StaticContext *context) +{ + // An unprefixed variable reference is in no namespace. + if(_prefix && *_prefix) + _uri = context->getUriBoundToPrefix(_prefix, this); + return this; +} + +ASTNode *XQVariable::staticTyping(StaticContext *context) +{ + _src.clear(); + + const StaticResolutionContext *var_src = context->getVariableTypeStore()->getVar(_uri, _name); + if(var_src == NULL || (var_src->getProperties() & StaticResolutionContext::UNDEFINEDVAR)!=0) { + const XMLCh* qname = XPath2NSUtils::qualifyName(_prefix, _name, context->getMemoryManager()); + const XMLCh* msg = XPath2Utils::concatStrings(X("Variable "), qname, X(" does not exist [err:XPST0008]"), + context->getMemoryManager()); + XQThrow(StaticErrorException, X("XQVariable::staticResolution"), msg); + } + if((var_src->getProperties() & StaticResolutionContext::FORWARDREF)!=0) { + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer errMsg(1023, context->getMemoryManager()); + errMsg.set(X("Cannot refer to global variable with name {")); + errMsg.append(_uri); + errMsg.append(X("}")); + errMsg.append(_name); + errMsg.append(X(" because it is declared later [err:XQST0054]")); + XQThrow(StaticErrorException,X("XQVariable::staticResolution"), errMsg.getRawBuffer()); + } + _src.setProperties(var_src->getProperties() & ~(StaticResolutionContext::SUBTREE|StaticResolutionContext::SAMEDOC)); + _src.getStaticType() = var_src->getStaticType(); + _src.variableUsed(_uri, _name); + + return this; +} + +const XMLCh *XQVariable::getPrefix() const { + return _prefix; +} + +const XMLCh *XQVariable::getURI() const { + return _uri; +} + +const XMLCh *XQVariable::getName() const { + return _name; +} diff --git a/src/ast/XQVariableBinding.cpp b/src/ast/XQVariableBinding.cpp new file mode 100644 index 00000000..eedf2b97 --- /dev/null +++ b/src/ast/XQVariableBinding.cpp @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQVariableBinding.cpp,v 1.9 2006/11/01 16:37:18 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQVariableBinding.cpp: implementation of the XQVariableBinding class. +////////////////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +XQVariableBinding::XQVariableBinding(XPath2MemoryManager* memMgr, + BindingType bindingType, + const XMLCh* variable, + ASTNode* allValues, + const XMLCh* positionalVariable/*=NULL*/, + SequenceType* seqType/*=NULL*/) + : _bindingType(bindingType), + _variable(memMgr->getPooledString(variable)), + _vURI(0), + _vName(0), + _positionalVariable(positionalVariable ? memMgr->getPooledString(positionalVariable) : 0), + _pURI(0), + _pName(0), + _src(memMgr), + _pSrc(memMgr), + _seqType(seqType), + _allValues(allValues), + _valuesResultMustBeRecalculated(false), + _needsNewScope(false), + _where(0), + _memMgr(memMgr) +{ +} + +XQVariableBinding::XQVariableBinding(XPath2MemoryManager *memMgr, const XQVariableBinding &o) + : _bindingType(o._bindingType), + _variable(o._variable), + _vURI(o._vURI), + _vName(o._vName), + _positionalVariable(o._positionalVariable), + _pURI(o._pURI), + _pName(o._pName), + _src(o._src, memMgr), + _pSrc(o._pSrc, memMgr), + _seqType(o._seqType), + _allValues(o._allValues), + _valuesResultMustBeRecalculated(o._valuesResultMustBeRecalculated), + _needsNewScope(o._needsNewScope), + _where(o._where), + _memMgr(o._memMgr) +{ +} + +void XQVariableBinding::addWhereCondition(ASTNode *condition) +{ + if(!_where) { + // Set the where condition + _where = condition; + } + else if(_where->getType()==ASTNode::OPERATOR && + XPath2Utils::equals(((XQOperator *)_where)->getOperatorName(), And::name)) { + // Add an argument to the existing And + And* fAnd = (And*)_where; + fAnd->addArgument(condition); + } + else { + // Change the where expression to an And, and add the two conditions to it as arguments + VectorOfASTNodes args(2, (ASTNode*)0 ,XQillaAllocator(_memMgr)); + args[0] = _where; + args[1] = condition; + _where = new (_memMgr) And(args, _memMgr); + _where->setLocationInfo(this); + } +} diff --git a/src/axis/AncestorAxis.cpp b/src/axis/AncestorAxis.cpp new file mode 100644 index 00000000..837aeab3 --- /dev/null +++ b/src/axis/AncestorAxis.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: AncestorAxis.cpp,v 1.9 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include + +AncestorAxis::AncestorAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory) + : Axis(info, contextNode, nodeObj, nodeTest, factory), + ancestor_(0) +{ +} + +const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *AncestorAxis::nextNode(DynamicContext *context) +{ + if(toDo_) { + // initialise + toDo_ = false; + ancestor_ = contextNode_; + } + + if(ancestor_ != 0) { + ancestor_ = getParent(ancestor_); + } + + return ancestor_; +} + +std::string AncestorAxis::asString(DynamicContext *context, int indent) const +{ + return getIndent(indent) + ""; +} diff --git a/src/axis/AncestorOrSelfAxis.cpp b/src/axis/AncestorOrSelfAxis.cpp new file mode 100644 index 00000000..91699104 --- /dev/null +++ b/src/axis/AncestorOrSelfAxis.cpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: AncestorOrSelfAxis.cpp,v 1.9 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include + +AncestorOrSelfAxis::AncestorOrSelfAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory) + : Axis(info, contextNode, nodeObj, nodeTest, factory), + ancestor_(0) +{ +} + +const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *AncestorOrSelfAxis::nextNode(DynamicContext *context) +{ + if(toDo_) { + // initialise + toDo_ = false; + ancestor_ = contextNode_; + } + else if(ancestor_ != 0) { + ancestor_ = getParent(ancestor_); + } + + return ancestor_; +} + +std::string AncestorOrSelfAxis::asString(DynamicContext *context, int indent) const +{ + return getIndent(indent) + ""; +} diff --git a/src/axis/AttributeAxis.cpp b/src/axis/AttributeAxis.cpp new file mode 100644 index 00000000..d4e6d42c --- /dev/null +++ b/src/axis/AttributeAxis.cpp @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: AttributeAxis.cpp,v 1.9 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +AttributeAxis::AttributeAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory) + : Axis(info, contextNode, nodeObj, nodeTest, factory), + nodeMap_(contextNode->getAttributes()), + i_(0) +{ +} + +const DOMNode *AttributeAxis::nextNode(DynamicContext *context) +{ + const DOMNode *result = 0; + if(nodeMap_ != 0) { + unsigned int nLen=nodeMap_->getLength(); + if(i_==0 && nodeTest_!=0 && nodeTest_->getItemType()==0 && + !nodeTest_->getNamespaceWildcard() && !nodeTest_->getNameWildcard()) + { + const XMLCh* uri=nodeTest_->getNodeUri(); + if(uri==0) + result=nodeMap_->getNamedItem(nodeTest_->getNodeName()); + else + result=nodeMap_->getNamedItemNS(uri,nodeTest_->getNodeName()); + i_=nLen; + } + while(result == 0 && i_ < nLen) { + result = nodeMap_->item(i_); + ++i_; + //Check to see if this attribute starts with "xmlns:" or is equal to "xmlns" + const XMLCh* name=result->getNodeName(); + const XMLCh* xmlns=XMLUni::fgXMLNSString; + while(*name && *xmlns) + { + if(*name++!=*xmlns++) + break; + } + if(*xmlns==0 && (*name==0 || *name==chColon)) + result = 0; + } + } + + return result; +} + +std::string AttributeAxis::asString(DynamicContext *context, int indent) const +{ + return "AttributeAxis"; +} + diff --git a/src/axis/Axis.cpp b/src/axis/Axis.cpp new file mode 100644 index 00000000..7e3ac541 --- /dev/null +++ b/src/axis/Axis.cpp @@ -0,0 +1,214 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Axis.cpp,v 1.11 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include "../dom-api/impl/XPathNamespaceImpl.hpp" + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +AxisNodeFactoryTemplate Axis::gNodeImplFactory = AxisNodeFactoryTemplate(); + +Axis::Axis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory) + : ResultImpl(info), + nodeObj_(nodeObj), + factory_(factory), + contextNode_(contextNode), + nodeTest_(nodeTest), + toDo_(true) +{ +} + +Item::Ptr Axis::next(DynamicContext *context) +{ + const DOMNode *node = 0; + while((node = nextNode(context)) != 0) + { + context->testInterrupt(); + + if(nodeTest_ == 0) return factory_.createNode(node, context); + + SequenceType::ItemType *itemType = nodeTest_->getItemType(); + if(itemType != 0) + { + Node::Ptr result = factory_.createNode(node, context); + if(itemType->matches(result, context, this)) { + return result; + } + } + else + { + switch(node->getNodeType()) + { + case DOMNode::DOCUMENT_NODE: { + if(!nodeTest_->getTypeWildcard() && nodeTest_->getNodeType() != Node::document_string) continue; + if(!nodeTest_->getNameWildcard() || !nodeTest_->getNamespaceWildcard()) continue; + break; + } + case DOMNode::ELEMENT_NODE: { + if(!nodeTest_->getTypeWildcard() && nodeTest_->getNodeType() != Node::element_string) continue; + if(!nodeTest_->getNameWildcard() && !XPath2Utils::equals(node->getLocalName(), nodeTest_->getNodeName())) continue; + if(!nodeTest_->getNamespaceWildcard() && !XPath2Utils::equals(node->getNamespaceURI(), nodeTest_->getNodeUri())) continue; + break; + } + case DOMNode::ATTRIBUTE_NODE: { + if(nodeTest_->getTypeWildcard()) { if(nodeTest_->getHasChildren()) continue; } + else if(nodeTest_->getNodeType() != Node::attribute_string) continue; + if(!nodeTest_->getNameWildcard() && !XPath2Utils::equals(node->getLocalName(), nodeTest_->getNodeName())) continue; + if(!nodeTest_->getNamespaceWildcard() && !XPath2Utils::equals(node->getNamespaceURI(), nodeTest_->getNodeUri())) continue; + break; + } + case DOMNode::CDATA_SECTION_NODE: + case DOMNode::TEXT_NODE: { + if(nodeTest_->getTypeWildcard()) { if(nodeTest_->getHasChildren()) continue; } + else if(nodeTest_->getNodeType() != Node::text_string) continue; + if(!nodeTest_->getNameWildcard() || !nodeTest_->getNamespaceWildcard()) continue; + break; + } + case DOMNode::PROCESSING_INSTRUCTION_NODE: { + if(nodeTest_->getTypeWildcard()) { if(nodeTest_->getHasChildren()) continue; } + else if(nodeTest_->getNodeType() != Node::processing_instruction_string) continue; + if(!nodeTest_->getNameWildcard() && !XPath2Utils::equals(node->getNodeName(), nodeTest_->getNodeName())) continue; + if(!nodeTest_->getNamespaceWildcard()) continue; + break; + } + case DOMNode::COMMENT_NODE: { + if(nodeTest_->getTypeWildcard()) { if(nodeTest_->getHasChildren()) continue; } + else if(nodeTest_->getNodeType() != Node::comment_string) continue; + if(!nodeTest_->getNameWildcard() || !nodeTest_->getNamespaceWildcard()) continue; + break; + } + case DOMXPathNamespace::XPATH_NAMESPACE_NODE: { + if(nodeTest_->getTypeWildcard()) { if(nodeTest_->getHasChildren()) continue; } + else if(nodeTest_->getNodeType() != Node::namespace_string) continue; + if(!nodeTest_->getNameWildcard() && !XPath2Utils::equals(node->getPrefix(), nodeTest_->getNodeName())) continue; + if(!nodeTest_->getNamespaceWildcard() && !XPath2Utils::equals(XMLUni::fgZeroLenString, nodeTest_->getNodeUri())) continue; + break; + } + default: { + continue; + } + } + + return factory_.createNode(node, context); + } + + } + + return 0; +} + +const DOMNode *Axis::getParent(const DOMNode *fNode) +{ + DOMNode *parent = XPath2NSUtils::getParent(fNode); + + // Skip out of entity reference nodes + while(parent != 0 && parent->getNodeType() == DOMNode::ENTITY_REFERENCE_NODE) { + parent = parent->getParentNode(); + } + + return parent; +} + +const DOMNode *Axis::getFirstChild(const DOMNode *fNode) +{ + if(fNode->getNodeType() == DOMNode::ATTRIBUTE_NODE) + return 0; + + DOMNode *result = fNode->getFirstChild(); + if(result == 0) return 0; + + // Skip into the contents of entity reference nodes + while(result->getNodeType() == DOMNode::ENTITY_REFERENCE_NODE) { + result = result->getFirstChild(); + } + + // Skip any other unused types + while(result->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE) { + result = result->getNextSibling(); + } + + return result; +} + +const DOMNode *Axis::getLastChild(const DOMNode *fNode) +{ + if(fNode->getNodeType() == DOMNode::ATTRIBUTE_NODE) + return 0; + + DOMNode *result = fNode->getLastChild(); + if(result == 0) return 0; + + // Skip into the contents of entity reference nodes + while(result->getNodeType() == DOMNode::ENTITY_REFERENCE_NODE) { + result = result->getLastChild(); + } + + // Skip any other unused types + while(result->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE) { + result = result->getPreviousSibling(); + } + + return result; +} + +const DOMNode *Axis::getNextSibling(const DOMNode *fNode) +{ + DOMNode *result = fNode->getNextSibling(); + + if(result == 0) { + // Skip out of the contents of entity reference nodes + DOMNode *parent = fNode->getParentNode(); + while(result == 0 && parent != 0 && parent->getNodeType() == DOMNode::ENTITY_REFERENCE_NODE) { + result = parent->getNextSibling(); + parent = parent->getParentNode(); + } + } + + // Skip any other unused types + while(result != 0 && result->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE) { + result = result->getNextSibling(); + } + + return result; +} + +const DOMNode *Axis::getPreviousSibling(const DOMNode *fNode) +{ + DOMNode *result = fNode->getPreviousSibling(); + + if(result == 0) { + // Skip out of the contents of entity reference nodes + DOMNode *parent = fNode->getParentNode(); + while(result == 0 && parent != 0 && parent->getNodeType() == DOMNode::ENTITY_REFERENCE_NODE) { + result = parent->getPreviousSibling(); + parent = parent->getParentNode(); + } + } + + // Skip any other unused types + while(result != 0 && result->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE) { + result = result->getPreviousSibling(); + } + + return result; +} + diff --git a/src/axis/ChildAxis.cpp b/src/axis/ChildAxis.cpp new file mode 100644 index 00000000..13c03534 --- /dev/null +++ b/src/axis/ChildAxis.cpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ChildAxis.cpp,v 1.9 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include + +ChildAxis::ChildAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory) + : Axis(info, contextNode, nodeObj, nodeTest, factory), + child_(0) +{ +} + +const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *ChildAxis::nextNode(DynamicContext *context) +{ + if(toDo_) { + // initialise + toDo_ = false; + child_ = getFirstChild(contextNode_); + } + else if(child_ != 0) { + child_ = getNextSibling(child_); + } + + return child_; +} + +std::string ChildAxis::asString(DynamicContext *context, int indent) const +{ + return getIndent(indent) + ""; +} diff --git a/src/axis/DescendantAxis.cpp b/src/axis/DescendantAxis.cpp new file mode 100644 index 00000000..eef11193 --- /dev/null +++ b/src/axis/DescendantAxis.cpp @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DescendantAxis.cpp,v 1.9 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include + +DescendantAxis::DescendantAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory) + : Axis(info, contextNode, nodeObj, nodeTest, factory), + descendant_(0) +{ +} + +const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *DescendantAxis::nextNode(DynamicContext *context) +{ + if(toDo_) { + // initialise + toDo_ = false; + descendant_ = getFirstChild(contextNode_); + } + else if(descendant_ != 0) { + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *result = getFirstChild(descendant_); + + while(result == 0) { + result = getNextSibling(descendant_); + if(result == 0) { + descendant_ = getParent(descendant_); + if(descendant_ == contextNode_) break; + } + } + + descendant_ = result; + } + + return descendant_; +} + +std::string DescendantAxis::asString(DynamicContext *context, int indent) const +{ + return getIndent(indent) + ""; +} diff --git a/src/axis/DescendantOrSelfAxis.cpp b/src/axis/DescendantOrSelfAxis.cpp new file mode 100644 index 00000000..2fe31aa0 --- /dev/null +++ b/src/axis/DescendantOrSelfAxis.cpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DescendantOrSelfAxis.cpp,v 1.9 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include + +DescendantOrSelfAxis::DescendantOrSelfAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory) + : Axis(info, contextNode, nodeObj, nodeTest, factory), + descendant_(0) +{ +} + +const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *DescendantOrSelfAxis::nextNode(DynamicContext *context) +{ + if(toDo_) { + // initialise + toDo_ = false; + descendant_ = contextNode_; + } + else if(descendant_ != 0) { + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *result = getFirstChild(descendant_); + + while(result == 0 && descendant_ != contextNode_) { + result = getNextSibling(descendant_); + if(result == 0) { + descendant_ = getParent(descendant_); + } + } + + descendant_ = result; + } + + return descendant_; +} + +std::string DescendantOrSelfAxis::asString(DynamicContext *context, int indent) const +{ + return getIndent(indent) + ""; +} diff --git a/src/axis/FollowingAxis.cpp b/src/axis/FollowingAxis.cpp new file mode 100644 index 00000000..06c8629e --- /dev/null +++ b/src/axis/FollowingAxis.cpp @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FollowingAxis.cpp,v 1.9 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include + +#include +#include + +FollowingAxis::FollowingAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory) + : Axis(info, contextNode, nodeObj, nodeTest, factory), + node_(0) +{ +} + +const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *FollowingAxis::nextNode(DynamicContext *context) +{ + if(toDo_) { + // initialise + toDo_ = false; + node_ = contextNode_; + } + + if(node_ != 0) { + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *result = 0; + + if(node_ != contextNode_) { + result = getFirstChild(node_); + } + + while(result == 0 && node_ != 0) { + result = getNextSibling(node_); + if(result == 0) { + node_ = getParent(node_); + } + } + + node_ = result; + } + + return node_; +} + +std::string FollowingAxis::asString(DynamicContext *context, int indent) const +{ + return getIndent(indent) + ""; +} diff --git a/src/axis/FollowingSiblingAxis.cpp b/src/axis/FollowingSiblingAxis.cpp new file mode 100644 index 00000000..556f36ff --- /dev/null +++ b/src/axis/FollowingSiblingAxis.cpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FollowingSiblingAxis.cpp,v 1.9 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include + +FollowingSiblingAxis::FollowingSiblingAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory) + : Axis(info, contextNode, nodeObj, nodeTest, factory), + node_(0) +{ +} + +const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *FollowingSiblingAxis::nextNode(DynamicContext *context) +{ + if(toDo_) { + // initialise + toDo_ = false; + node_ = getNextSibling(contextNode_); + } + else if(node_ != 0) { + node_ = getNextSibling(node_); + } + + return node_; +} + +std::string FollowingSiblingAxis::asString(DynamicContext *context, int indent) const +{ + return getIndent(indent) + ""; +} diff --git a/src/axis/NamespaceAxis.cpp b/src/axis/NamespaceAxis.cpp new file mode 100644 index 00000000..b1210a37 --- /dev/null +++ b/src/axis/NamespaceAxis.cpp @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: NamespaceAxis.cpp,v 1.15 2006/11/27 17:51:17 amassari Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include + +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +NamespaceAxis::NamespaceAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory) + : Axis(info, contextNode, nodeObj, nodeTest, factory), + node_(contextNode), + originalNode_(contextNode), + nodeMap_(node_->getAttributes()), + i_(0), + defNsTested_(false), + defXmlNs_(false) +{ +} + +const DOMNode *NamespaceAxis::nextNode(DynamicContext *context) +{ + const DOMNode *result = 0; + + while(node_!=0 && result == 0) { + if(nodeMap_ == 0 || i_ >= nodeMap_->getLength()) { + node_ = XPath2NSUtils::getParent(node_); + if(node_ != 0) { + nodeMap_ = node_->getAttributes(); + i_ = 0; + // check if this node has a namespace, but the prefix is not declared in the attribute map + const XMLCh* uri=node_->getNamespaceURI(); + const XMLCh* prefix=node_->getPrefix(); + if(uri && *uri && + nodeMap_->getNamedItemNS(XMLUni::fgXMLNSString, prefix)==0 && + done_.insert(prefix).second) + { + return context->getItemFactory()->createNamespaceNode(prefix, uri, originalNode_, context); + } + continue; + } + else { + nodeMap_ = 0; + break; + } + } + + DOMNode *tmpAttr = nodeMap_->item(i_); + ++i_; + + const XMLCh* attrName = tmpAttr->getNodeName(); + + // Check to see if this attribute starts with xmlns + if(!XMLString::startsWith(attrName, XMLUni::fgXMLNSString)) { + continue; + } + + // Get uri + const XMLCh* uri = tmpAttr->getNodeValue(); + + // Figure out prefix + const XMLCh* prefix = 0; + if(XMLString::stringLen(attrName) != 5) { + // A prefix was given + + // If the name doesn't start with xmlns: (and its not xmlns) then skip it + // XXX: Is this necessary/allowed? + if(attrName[5] != chColon) { + continue; + } + + prefix = attrName + 6; + } + + // If the uri is empty, the prefix has been unset; add it to the map of "already reported" prefixes and go on + if(uri == 0 || *uri==0) { + done_.insert(prefix); + continue; + } + + // Add namespace, if not already there + if(done_.insert(prefix).second) { + result = context->getItemFactory()->createNamespaceNode(prefix, uri, originalNode_, context); + } + } + + if(result==0 && !defNsTested_) + { + defNsTested_=true; + if(context->getDefaultElementAndTypeNS()!=0 && done_.insert(0).second) + result = context->getItemFactory()->createNamespaceNode(NULL, context->getDefaultElementAndTypeNS(), originalNode_, context); + } + if(result==0 && !defXmlNs_) + { + defXmlNs_=true; + // Output the obligatory namespace node for the "xml" prefix + result = context->getItemFactory()->createNamespaceNode(XMLUni::fgXMLString, XMLUni::fgXMLURIName, originalNode_, context); + } + return result; +} + +std::string NamespaceAxis::asString(DynamicContext *context, int indent) const +{ + return "NamespaceNodesResult"; +} + diff --git a/src/axis/NodeTest.cpp b/src/axis/NodeTest.cpp new file mode 100644 index 00000000..a30547bd --- /dev/null +++ b/src/axis/NodeTest.cpp @@ -0,0 +1,271 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: NodeTest.cpp,v 1.13 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +#include + +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +NodeTest::NodeTest() + : _name(0), + _uri(0), + _prefix(0), + _type(0), + _wildcardName(false), + _wildcardNamespace(false), + _wildcardType(false), + _usePrefix(false), + _hasChildren(false), + _itemType(0) +{ +} + +NodeTest::~NodeTest() { + delete _itemType; +} + +void *NodeTest::getInterface(const XMLCh *name) const +{ + return 0; +} + +void NodeTest::getStaticType(StaticType &st, const StaticContext *context, + bool &isExact, const LocationInfo *location) const +{ + if(_itemType) { + _itemType->getStaticType(st, context, isExact, location); + } + else { + if(_wildcardType) { + if(_hasChildren) { + st.flags = StaticType::ELEMENT_TYPE | StaticType::DOCUMENT_TYPE; + } + else { + st.flags = StaticType::NODE_TYPE; + } + } + else if(_type == Node::document_string) { + st.flags = StaticType::DOCUMENT_TYPE; + } + else if(_type == Node::element_string) { + st.flags = StaticType::ELEMENT_TYPE; + } + else if(_type == Node::attribute_string) { + st.flags = StaticType::ATTRIBUTE_TYPE; + } + else if(_type == Node::processing_instruction_string) { + st.flags = StaticType::PI_TYPE; + } + else if(_type == Node::comment_string) { + st.flags = StaticType::COMMENT_TYPE; + } + else if(_type == Node::text_string || + _type == Node::cdata_string) { + st.flags = StaticType::TEXT_TYPE; + } + + if(_wildcardName && _wildcardNamespace) + isExact = true; + else isExact = false; + } +} + +Result NodeTest::filterResult(const Result &toFilter, const LocationInfo *info) const +{ + return new FilterResult(info, toFilter, this); +} + +bool NodeTest::filterNode(Node::Ptr node, DynamicContext* context, const LocationInfo *info) const +{ + if(_itemType) return _itemType->matches(node, context, info); + else return checkNodeType(node) && checkNodeName(node, context); +} + +bool NodeTest::checkNodeType(Node::Ptr node) const +{ + assert(node.notNull()); + + if(_wildcardType) { + if(_hasChildren) { + return node->dmNodeKind() == Node::element_string || node->dmNodeKind() == Node::document_string; + } + else return true; + } + + return node->dmNodeKind() == _type; +} + +bool NodeTest::checkNodeName(Node::Ptr node, const DynamicContext *context) const +{ + ATQNameOrDerived::Ptr name = node->dmNodeName(context); + + const XMLCh *uri = _uri; + if(uri == 0 && node->dmNodeKind() == Node::element_string) { + uri = context->getDefaultElementAndTypeNS(); + } + + return (_wildcardName || (name.notNull() && XPath2Utils::equals(((ATQNameOrDerived*)name.get())->getName(), _name))) + && (_wildcardNamespace || (name.notNull() && XPath2Utils::equals(((ATQNameOrDerived*)name.get())->getURI(), uri))); +} + + +void NodeTest::setNodeName(const XMLCh* name) +{ + _name = name; +} + +void NodeTest::setNodePrefix(const XMLCh* prefix) +{ + _prefix=prefix; + _usePrefix=true; +} + +void NodeTest::setNodeUri(const XMLCh* uri) +{ + _uri = uri; + _usePrefix=false; +} + +void NodeTest::setNodeType(const XMLCh *type) +{ + _type = type; +} + +void NodeTest::setNameWildcard(bool value) +{ + _wildcardName = value; +} + +void NodeTest::setNamespaceWildcard(bool value) +{ + _wildcardNamespace = value; +} + +void NodeTest::setTypeWildcard(bool value) +{ + _wildcardType = value; +} + +bool NodeTest::getHasChildren() const +{ + return _hasChildren; +} + +void NodeTest::setHasChildren(bool value) +{ + _hasChildren = value; +} + + +const XMLCh *NodeTest::getNodeType() const +{ + return _type; +} + +const XMLCh* NodeTest::getNodeUri() const +{ + return _uri; +} + +const XMLCh* NodeTest::getNodePrefix() const +{ + return _prefix; +} + +const XMLCh* NodeTest::getNodeName() const +{ + return _name; +} + +bool NodeTest::getNameWildcard() const +{ + return _wildcardName; +} + +bool NodeTest::getNamespaceWildcard() const +{ + return _wildcardNamespace; +} + +bool NodeTest::getTypeWildcard() const +{ + return _wildcardType; +} + + +bool NodeTest::isNodeTypeSet() const +{ + return _type != 0; +} + +void NodeTest::staticResolution(StaticContext *context, const LocationInfo *location) +{ + if(isNodePrefixSet()) { + setNodeUri(context->getUriBoundToPrefix(getNodePrefix(), location)); + } + if(!_wildcardNamespace && _uri == 0 && + !_wildcardType && _type == Node::element_string) { + _uri = context->getDefaultElementAndTypeNS(); + } +} + +bool NodeTest::isNodePrefixSet() const { + return _usePrefix; +} + +SequenceType::ItemType* NodeTest::getItemType() const { + return _itemType; +} + +void NodeTest::setItemType(SequenceType::ItemType* type) { + _itemType=type; +} + +///////////////////////////////////// +// FilterResult +///////////////////////////////////// + +NodeTest::FilterResult::FilterResult(const LocationInfo *info, const Result &toFilter, const NodeTest *nodeTest) + : ResultImpl(info), + toFilter_(toFilter), + nodeTest_(nodeTest) +{ +} + +Item::Ptr NodeTest::FilterResult::next(DynamicContext *context) +{ + Node::Ptr result = 0; + while((result = toFilter_->next(context)).notNull() && !nodeTest_->filterNode(result, context, this)) {} + + return result; +} + +std::string NodeTest::FilterResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/axis/ParentAxis.cpp b/src/axis/ParentAxis.cpp new file mode 100644 index 00000000..7f22aa3d --- /dev/null +++ b/src/axis/ParentAxis.cpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ParentAxis.cpp,v 1.9 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +ParentAxis::ParentAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory) + : Axis(info, contextNode, nodeObj, nodeTest, factory) +{ +} + +const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *ParentAxis::nextNode(DynamicContext *context) +{ + if(toDo_) { + // initialise + toDo_ = false; + return getParent(contextNode_); + } + else { + return 0; + } +} + +std::string ParentAxis::asString(DynamicContext *context, int indent) const +{ + return getIndent(indent) + ""; +} diff --git a/src/axis/PrecedingAxis.cpp b/src/axis/PrecedingAxis.cpp new file mode 100644 index 00000000..46a44aad --- /dev/null +++ b/src/axis/PrecedingAxis.cpp @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: PrecedingAxis.cpp,v 1.9 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include + +#include +#include + +PrecedingAxis::PrecedingAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory) + : Axis(info, contextNode, nodeObj, nodeTest, factory), + parent_(0), + node_(0) +{ +} + +const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *PrecedingAxis::nextNode(DynamicContext *context) +{ + if(toDo_) { + // initialise + toDo_ = false; + node_ = contextNode_; + parent_ = getParent(node_); + } + + if(node_ != 0) { + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *result = + getPreviousSibling(node_); + + while(result == 0) { + node_ = getParent(node_); + if(node_ != 0 && node_ == parent_) { + parent_ = getParent(parent_); + result = getPreviousSibling(node_); + } + else { + break; + } + } + + while(result != 0) { + node_ = result; + result = getLastChild(node_); + } + } + + return node_; +} + +std::string PrecedingAxis::asString(DynamicContext *context, int indent) const +{ + return getIndent(indent) + ""; +} diff --git a/src/axis/PrecedingSiblingAxis.cpp b/src/axis/PrecedingSiblingAxis.cpp new file mode 100644 index 00000000..45991345 --- /dev/null +++ b/src/axis/PrecedingSiblingAxis.cpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: PrecedingSiblingAxis.cpp,v 1.9 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +PrecedingSiblingAxis::PrecedingSiblingAxis(const LocationInfo *info, const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, const Node *nodeObj, + const NodeTest *nodeTest, const AxisNodeFactory &factory) + : Axis(info, contextNode, nodeObj, nodeTest, factory), + sibling_(0) +{ +} + +const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *PrecedingSiblingAxis::nextNode(DynamicContext *context) +{ + if(toDo_) { + // initialise + toDo_ = false; + sibling_ = getPreviousSibling(contextNode_); + } + else if(sibling_ != 0) { + sibling_ = getPreviousSibling(sibling_); + } + + return sibling_; +} + +std::string PrecedingSiblingAxis::asString(DynamicContext *context, int indent) const +{ + return getIndent(indent) + ""; +} diff --git a/src/axis/SelfAxis.cpp b/src/axis/SelfAxis.cpp new file mode 100644 index 00000000..e747c5b8 --- /dev/null +++ b/src/axis/SelfAxis.cpp @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: SelfAxis.cpp,v 1.9 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include + +SelfAxis::SelfAxis(const LocationInfo *info, Node::Ptr contextNode) + : ResultImpl(info), + toDo_(true), + contextNode_(contextNode) +{ +} + +Item::Ptr SelfAxis::next(DynamicContext *context) +{ + if(toDo_) { + toDo_ = false; + return contextNode_; + } + else { + return 0; + } +} + +std::string SelfAxis::asString(DynamicContext *context, int indent) const +{ + return getIndent(indent) + ""; +} diff --git a/src/config/xqilla_config.h b/src/config/xqilla_config.h new file mode 100644 index 00000000..21565967 --- /dev/null +++ b/src/config/xqilla_config.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: xqilla_config.h,v 1.5 2006/11/01 16:37:18 jpcs Exp $ + */ + +#if defined(WIN32) && !defined(__CYGWIN__) +#include "xqilla_config_win32.h" +#else +#include "xqilla_config_unix.h" +#endif diff --git a/src/config/xqilla_config_unix.h.in b/src/config/xqilla_config_unix.h.in new file mode 100644 index 00000000..9f2199e9 --- /dev/null +++ b/src/config/xqilla_config_unix.h.in @@ -0,0 +1,175 @@ +/* src/config/xqilla_config_unix.h.in. Generated from configure.in by autoheader. */ + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +#undef CRAY_STACKSEG_END + +/* Define to 1 if using `alloca.c'. */ +#undef C_ALLOCA + +/* Define to 1 if you want a debugging version. */ +#undef DEBUG + +/* Define to 1 if you have the `alarm' function. */ +#undef HAVE_ALARM + +/* Define to 1 if you have `alloca', as a function or macro. */ +#undef HAVE_ALLOCA + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#undef HAVE_ALLOCA_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the `floor' function. */ +#undef HAVE_FLOOR + +/* Define to 1 if you have the `ftime' function. */ +#undef HAVE_FTIME + +/* Define to 1 if you have the `gettimeofday' function. */ +#undef HAVE_GETTIMEOFDAY + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the `nsl' library (-lnsl). */ +#undef HAVE_LIBNSL + +/* Define to 1 if you have the `pthread' library (-lpthread). */ +#undef HAVE_LIBPTHREAD + +/* Define to 1 if you have the `socket' library (-lsocket). */ +#undef HAVE_LIBSOCKET + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MALLOC_H + +/* Define to 1 if you have the `memmove' function. */ +#undef HAVE_MEMMOVE + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `memset' function. */ +#undef HAVE_MEMSET + +/* Define to 1 if you have the `pow' function. */ +#undef HAVE_POW + +/* Define to 1 if the system has the type `ptrdiff_t'. */ +#undef HAVE_PTRDIFF_T + +/* Define to 1 if building on QNX. */ +#undef HAVE_QNX + +/* Define to 1 if you have the `sqrt' function. */ +#undef HAVE_SQRT + +/* Define to 1 if stdbool.h conforms to C99. */ +#undef HAVE_STDBOOL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDDEF_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `strchr' function. */ +#undef HAVE_STRCHR + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strstr' function. */ +#undef HAVE_STRSTR + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIMEB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the `tzset' function. */ +#undef HAVE_TZSET + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_WCHAR_H + +/* Define to 1 if the system has the type `_Bool'. */ +#undef HAVE__BOOL + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define to 1 if you can safely include both and . */ +#undef TIME_WITH_SYS_TIME + +/* Define to 1 if your declares `struct tm'. */ +#undef TM_IN_SYS_TIME + +/* Version number of package */ +#undef VERSION + +/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a + `char[]'. */ +#undef YYTEXT_POINTER + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define to `unsigned' if does not define. */ +#undef size_t diff --git a/src/config/xqilla_config_win32.h b/src/config/xqilla_config_win32.h new file mode 100644 index 00000000..358d84f9 --- /dev/null +++ b/src/config/xqilla_config_win32.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: xqilla_config_win32.h,v 1.6 2006/11/01 16:37:18 jpcs Exp $ + */ + +#ifndef _XQILLA_CONFIG_H +#define _XQILLA_CONFIG_H + +/** BEGIN CONFIG.H **/ +/* Configure-style definitions for Windows. */ + +/* Define to empty if the keyword does not work. */ +/* MS VC++ supports const */ +#undef const + +/* Define if your processor stores words with the most significant + byte first (like Motorola and SPARC, unlike Intel and VAX). */ +/* Intel & Alpha architechtures are small endian */ +#undef WORDS_BIGENDIAN + +// Warning 4064: switch statement contains 'default' but no 'case' labels +// +// Warning 4251: We have a lot of std::vector objects inside exported classes, and VC++ complains about it +// "class 'std::vector >' needs to have dll-interface to be used by clients of class 'YYYY'" +// +// Warning 4786: "identifier was truncated to '255' characters in the browser information" +// +// Warning 4101: "unreferenced local variable" +// +// Warning 4290: C++ exception specification ignored except to indicate a function is not __declspec(nothrow) +#pragma warning(disable: 4065 4251 4786 4101 4290) + +#define WIN32_LEAN_AND_MEAN +#include + +/** END CONFIG.H **/ +#endif + diff --git a/src/context/XQScopedNamespace.cpp b/src/context/XQScopedNamespace.cpp new file mode 100644 index 00000000..f99041b8 --- /dev/null +++ b/src/context/XQScopedNamespace.cpp @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQScopedNamespace.cpp,v 1.6 2006/11/01 16:37:18 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQScopedNamespace.cpp: implementation of the XQScopedNamespace class. +////////////////////////////////////////////////////////////////////// + +#include +#include + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +XQScopedNamespace::XQScopedNamespace(XPath2MemoryManager* memMgr, const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* prevScope) : + XQillaNSResolverImpl(memMgr, NULL) +{ + _prevScope=prevScope; + _ctxNode=NULL; +} + +XQScopedNamespace::~XQScopedNamespace() +{ + +} + +void XQScopedNamespace::setNodeContext(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* node) +{ + _ctxNode=node; +} + +const XMLCh* XQScopedNamespace::lookupNamespaceURI(const XMLCh* prefix) const +{ + const XMLCh* resolvedURI = _namespaceBindings.get((void*)prefix); + if(resolvedURI != NULL) { + if(XPath2Utils::equals(resolvedURI, g_nsBlocker)) + return NULL; + else + return resolvedURI; + } + if(_ctxNode) + { + resolvedURI=_ctxNode->lookupNamespaceURI(prefix); + if(resolvedURI) + return resolvedURI; + } + if(_prevScope) + return _prevScope->lookupNamespaceURI(prefix); + return NULL; +} + +const XMLCh* XQScopedNamespace::lookupPrefix(const XMLCh* uri) const +{ + const XMLCh* nsPrefix=XQillaNSResolverImpl::lookupPrefix(uri); + if(nsPrefix!=NULL) + return nsPrefix; + if(_ctxNode) + { + nsPrefix=_ctxNode->lookupNamespacePrefix(uri, false); + if(nsPrefix) + return nsPrefix; + } + if(_prevScope) + return _prevScope->lookupPrefix(uri); + return NULL; +} diff --git a/src/context/impl/CodepointCollation.cpp b/src/context/impl/CodepointCollation.cpp new file mode 100644 index 00000000..f1bd9517 --- /dev/null +++ b/src/context/impl/CodepointCollation.cpp @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: CodepointCollation.cpp,v 1.9 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include +#include +#include + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CodepointCollation::CodepointCollation() +{ +} + +static XMLCh codepointName[]= /* http://www.w3.org/2005/xpath-functions/collation/codepoint */ +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chColon, XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, + XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, XERCES_CPP_NAMESPACE_QUALIFIER chPeriod, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_3, XERCES_CPP_NAMESPACE_QUALIFIER chPeriod, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_2, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_5, XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +/*static*/ const XMLCh* CodepointCollation::getCodepointCollationName() +{ + return codepointName; +} + +const XMLCh* CodepointCollation::getCollationName() const +{ + return getCodepointCollationName(); +} + +int CodepointCollation::compare(const XMLCh* string1, const XMLCh* string2) const +{ + if(string1 == string2) return 0; + + if(string1 == 0) return *string2 == 0 ? 0 : -1; // string2 == 0 is handled by the first line + if(string2 == 0) return *string1 == 0 ? 0 : 1; // string1 == 0 is handled by the first line + + int diff; + while((diff = int(*string1) - int(*string2)) == 0) { + // If either has ended, then they both ended, so equal + if(*string1 == 0) break; + + // Move upwards for the next round + ++string1; + ++string2; + } + return diff < 0 ? -1 : (diff > 0 ? 1 : 0); +} diff --git a/src/context/impl/CollationImpl.cpp b/src/context/impl/CollationImpl.cpp new file mode 100644 index 00000000..cf26965d --- /dev/null +++ b/src/context/impl/CollationImpl.cpp @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: CollationImpl.cpp,v 1.10 2006/11/17 18:08:07 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +CollationImpl::CollationImpl(XPath2MemoryManager* memMgr, CollationHelper* helper) +{ + _memMgr=memMgr; + _helper=helper; +} + +const XMLCh* CollationImpl::getCollationName() const +{ + return _helper->getCollationName(); +} + +int CollationImpl::compare(const XMLCh* const string1, const XMLCh* const string2) const +{ + return _helper->compare(string1,string2); +} + +Sequence CollationImpl::sort(Sequence data, const DynamicContext* context) const +{ + // build a sequence made of strings + Sequence stringSeq = Sequence(data.getLength(), context->getMemoryManager()); + for(Sequence::iterator it=data.begin(); it!=data.end(); ++it) { + const XMLCh *str = (*it)->asString(context); + stringSeq.addItem(context->getItemFactory()->createString(str, context).get()); + } + + stringSeq.sortWithCollation(this, context); + + return stringSeq; +} diff --git a/src/context/impl/ItemFactoryImpl.cpp b/src/context/impl/ItemFactoryImpl.cpp new file mode 100644 index 00000000..af3dd5c9 --- /dev/null +++ b/src/context/impl/ItemFactoryImpl.cpp @@ -0,0 +1,793 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ItemFactoryImpl.cpp,v 1.21 2006/11/17 18:08:07 jpcs Exp $ + */ + +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../../dom-api/impl/XPathNamespaceImpl.hpp" + +#include +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +ItemFactoryImpl::ItemFactoryImpl(const DocumentCache* dc, MemoryManager* memMgr) + : datatypeLookup_(dc, memMgr), + outputDocument_(0), + memMgr_(memMgr) +{ +} + +ItemFactoryImpl::~ItemFactoryImpl() +{ +} + +DOMDocument *ItemFactoryImpl::getOutputDocument(const DynamicContext *context) const +{ + // Lazily create the output document + if(outputDocument_ == NULLRCP) { + outputDocument_ = new NodeImpl(context->createNewDocument(), context); + } + return (DOMDocument*)outputDocument_->getDOMNode(); +} + +Node::Ptr ItemFactoryImpl::cloneNode(const Node::Ptr node, const DynamicContext *context) const +{ + DOMNode* xNode=(DOMNode*)node->getInterface(Node::gXerces); + assert(xNode!=NULL); + if(xNode->getNodeType()==DOMNode::DOCUMENT_NODE) + { + DOMDocument *document = context->createNewDocument(); + + DOMNode* child=xNode->getFirstChild(); + while(child) + { + DOMNode *newChild = document->importNode(child,true); + if(child->getNodeType()==DOMNode::ELEMENT_NODE) + XPath2Utils::copyElementType(document, (DOMElement*)newChild, (const DOMElement*)child); + if(context->getDebugCallback()) context->getDebugCallback()->ReportClonedNode(const_cast(context), child, newChild); + document->appendChild(newChild); + child=child->getNextSibling(); + } + return new NodeImpl(document, context); + } + else if(xNode->getNodeType()==DOMXPathNamespace::XPATH_NAMESPACE_NODE) + { + // TODO + XQThrow2(ASTException,X("ItemFactoryImpl::cloneNode"),X("Cannot clone a namespace node")); + return NULL; + } + else + { + DOMDocument* mainDoc=getOutputDocument(context); + DOMNode* newNode=mainDoc->importNode(xNode, true); + if(xNode->getNodeType()==DOMNode::ATTRIBUTE_NODE) + XPath2Utils::copyAttributeType(mainDoc, (DOMAttr*)newNode, (const DOMAttr*)xNode); + else if(xNode->getNodeType()==DOMNode::ELEMENT_NODE) + XPath2Utils::copyElementType(mainDoc, (DOMElement*)newNode, (const DOMElement*)xNode); + if(context->getDebugCallback()) context->getDebugCallback()->ReportClonedNode(const_cast(context), xNode, newNode); + return new NodeImpl(newNode, context); + } +} + +Node::Ptr ItemFactoryImpl::createTextNode(const XMLCh *value, const DynamicContext *context) const +{ + return new NodeImpl(getOutputDocument(context)->createTextNode(value), context); +} + +Node::Ptr ItemFactoryImpl::createCommentNode(const XMLCh *value, const DynamicContext *context) const +{ + return new NodeImpl(getOutputDocument(context)->createComment(value), context); +} + +Node::Ptr ItemFactoryImpl::createPINode(const XMLCh *name, const XMLCh *value, const DynamicContext *context) const +{ + return new NodeImpl(getOutputDocument(context)->createProcessingInstruction(name, value), context); +} + +Node::Ptr ItemFactoryImpl::createAttributeNode(const XMLCh *uri, const XMLCh *prefix, const XMLCh *name, const XMLCh *value, const DynamicContext *context) const +{ + // check if it's an ID + bool isID=false; + static XMLCh xmlID[]={ chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_i, chLatin_d, chNull }; + static XMLCh xml[]={ chLatin_x, chLatin_m, chLatin_l, chNull }; + static XMLCh ID[]={ chLatin_i, chLatin_d, chNull }; + if(XPath2Utils::equals(uri, XMLUni::fgXMLURIName) && + (XPath2Utils::equals(name, xmlID) || (XPath2Utils::equals(prefix, xml) && XPath2Utils::equals(name, ID)))) + { + // If the attribute name is xml:id, the string value and typed value of the attribute are further normalized by + // discarding any leading and trailing space (#x20) characters, and by replacing sequences of space (#x20) characters + // by a single space (#x20) character. + XMLCh* copyStr=(XMLCh*)context->getMemoryManager()->allocate((XMLString::stringLen(value)+1)*sizeof(XMLCh)); + XMLString::copyString(copyStr, value); + XMLString::collapseWS(copyStr, context->getMemoryManager()); + value=copyStr; + isID=true; + } + + DOMAttr *attr = getOutputDocument(context)->createAttributeNS(uri, name); + if(prefix != 0 && !XPath2Utils::equals(XMLUni::fgZeroLenString, prefix)) + attr->setPrefix(prefix); + attr->setNodeValue(value); +/* + // to mark it as an ID requires access to the internal headers of Xerces; maybe we can fake it's an ID inside + // Node::dmIsId, or maybe we can change Xerces to automatically turn on the bit when he sees the xml:id name.... + DOMAttrNSImpl *attr = (DOMAttrNSImpl*)getOutputDocument(context)->createAttributeNS(uri, name); + castToNodeImpl(attr)->isIdAttr(isID); // TODO: add it to the ID map of the document?? +*/ + return new NodeImpl(attr, context); +} + +Node::Ptr ItemFactoryImpl::createElementNode(const XMLCh *uri, const XMLCh *prefix, const XMLCh *name, + const std::vector &attrList, const std::vector &childList, + const DynamicContext *context) const +{ + StaticContext::ConstructionMode constrMode=context->getConstructionMode(); + bool nsPreserveMode=context->getPreserveNamespaces(); + bool nsInheritMode=context->getInheritNamespaces(); + + DOMDocument *document = getOutputDocument(context); + DOMElement *element = document->createElementNS(uri, name); + if(prefix != 0 && !XPath2Utils::equals(XMLUni::fgZeroLenString, prefix)) + element->setPrefix(prefix); + + for(std::vector::const_iterator a = attrList.begin(); a != attrList.end(); ++a) { + const NodeImpl *nodeImpl = (const NodeImpl *)(*a)->getInterface(Item::gXQilla); + assert(nodeImpl != 0); + + const DOMNode* attr=nodeImpl->getDOMNode(); + DOMAttr* exists=element->getAttributeNodeNS(attr->getNamespaceURI(), attr->getLocalName()); + if(exists!=0) + XQThrow2(ASTException,X("ItemFactoryImpl::createElementNode"),X("An element has two attributes with the same expanded name [err:XQDY0025]")); + + DOMAttr* imported = (DOMAttr*)document->importNode(const_cast(attr),true); + if(constrMode == StaticContext::CONSTRUCTION_MODE_PRESERVE) + XPath2Utils::copyAttributeType(document, imported, (const DOMAttr*)attr); + if(context->getDebugCallback()) context->getDebugCallback()->ReportClonedNode(const_cast(context), attr, imported); + + element->setAttributeNodeNS(imported); + } + + std::vector inScopePrefixes; + if(!nsInheritMode) + { + DOMNode* elt=element; + while(elt!=NULL) + { + // check if this node has a namespace, but the prefix is not declared in the attribute map + const XMLCh* uri=elt->getNamespaceURI(); + if(uri && *uri) + { + const XMLCh* prefix=elt->getPrefix(); + if (!XPath2Utils::containsString(inScopePrefixes, prefix)) + inScopePrefixes.push_back(prefix); + } + DOMNamedNodeMap* attrMap=elt->getAttributes(); + for(XMLSize_t i=0;igetLength();i++) + { + DOMNode* attr=attrMap->item(i); + if(XPath2Utils::equals(attr->getPrefix(), XMLUni::fgXMLNSString) || XPath2Utils::equals(attr->getNodeName(), XMLUni::fgXMLNSString)) + { + const XMLCh* prefix=attr->getPrefix()==NULL?XMLUni::fgZeroLenString:attr->getLocalName(); + if (!XPath2Utils::containsString(inScopePrefixes, prefix)) + inScopePrefixes.push_back(prefix); + } + } + elt=elt->getParentNode(); + } + } + + for(std::vector::const_iterator i = childList.begin(); i != childList.end(); ++i) { + const NodeImpl *nodeImpl = (const NodeImpl *)(*i)->getInterface(Item::gXQilla); + assert(nodeImpl != 0); + + DOMNode *newChild = NULL; + if(nodeImpl->getDOMNode()->getOwnerDocument() == document) { + if(i->clone) { + newChild = nodeImpl->getDOMNode()->cloneNode(true); + if(constrMode == StaticContext::CONSTRUCTION_MODE_PRESERVE && nodeImpl->dmNodeKind()==Node::element_string) + XPath2Utils::copyElementType(newChild->getOwnerDocument(), (DOMElement*)newChild, (DOMElement*)nodeImpl->getDOMNode()); + if(context->getDebugCallback()) context->getDebugCallback()->ReportClonedNode(const_cast(context), nodeImpl->getDOMNode(), newChild); + } + else { + newChild = const_cast(nodeImpl->getDOMNode()); + } + } + else { + newChild = document->importNode(const_cast(nodeImpl->getDOMNode()),true); + if(constrMode == StaticContext::CONSTRUCTION_MODE_PRESERVE && nodeImpl->dmNodeKind()==Node::element_string) + XPath2Utils::copyElementType(newChild->getOwnerDocument(), (DOMElement*)newChild, (DOMElement*)nodeImpl->getDOMNode()); + if(context->getDebugCallback()) context->getDebugCallback()->ReportClonedNode(const_cast(context), nodeImpl->getDOMNode(), newChild); + } + + if(!nsPreserveMode && newChild->getNodeType()==DOMNode::ELEMENT_NODE) + { + DOMElement* childElem=(DOMElement*)newChild; + // it's an error if the data type is namespace sensitive, e.g. QName or NOTATION + try + { + const DOMTypeInfo *psviType=childElem->getTypeInfo(); + if(psviType) + { + const XMLCh* typeURI=psviType->getNamespace(); + const XMLCh* typeName=psviType->getName(); + if(XPath2Utils::equals(typeURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) && + ( + XPath2Utils::equals(typeName, SchemaSymbols::fgDT_QNAME) || + XPath2Utils::equals(typeName, XMLUni::fgNotationString) + ) + ) + XQThrow2(ASTException,X("ItemFactoryImpl::createElementNode"),X("An element has a content that is namespace sensitive, and cannot be copied when copy-namespace is set to no-preserve [err:XQTY0086]")); + } + } catch(DOMException&) { + } + + DOMNamedNodeMap* attrMap=childElem->getAttributes(); + for(XMLSize_t i=0;igetLength();) + { + bool bPreserved=true; + DOMNode* attr=attrMap->item(i); + try + { + const DOMTypeInfo *psviType=((DOMAttr*)attr)->getTypeInfo(); + if(psviType) + { + const XMLCh* typeURI=psviType->getNamespace(); + const XMLCh* typeName=psviType->getName(); + if(XPath2Utils::equals(typeURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) && + ( + XPath2Utils::equals(typeName, SchemaSymbols::fgDT_QNAME) || + XPath2Utils::equals(typeName, XMLUni::fgNotationString) + ) + ) + XQThrow2(ASTException,X("ItemFactoryImpl::createElementNode"),X("An element has a content that is namespace sensitive, and cannot be copied when copy-namespace is set to no-preserve [err:XQTY0086]")); + } + } catch(DOMException&) { + } + + if(XPath2Utils::equals(attr->getPrefix(), XMLUni::fgXMLNSString) || XPath2Utils::equals(attr->getNodeName(), XMLUni::fgXMLNSString)) + { + const XMLCh* prefix=attr->getPrefix()==NULL?XMLUni::fgZeroLenString:attr->getLocalName(); + // copy this namespace only if needed by the element name... + if(!XPath2Utils::equals(childElem->getPrefix(), prefix)) + { + bPreserved=false; + //... or by its attributes + for(XMLSize_t j=0;jgetLength();j++) + if(XPath2Utils::equals(attrMap->item(j)->getPrefix(), prefix)) + { + bPreserved=true; + break; + } + if(!bPreserved) + attrMap->removeNamedItemNS(attr->getNamespaceURI(), attr->getLocalName()); + } + } + if(bPreserved) + i++; + } + } + + if(!nsInheritMode && newChild->getNodeType()==DOMNode::ELEMENT_NODE) + { + DOMNamedNodeMap* attrMap=newChild->getAttributes(); + // add empty namespace declarations for all the inherited namespaces + for(std::vector::iterator it=inScopePrefixes.begin();it!=inScopePrefixes.end();it++) + { + const XMLCh* prefix=(*it); + if(prefix==0 || *prefix==0) + prefix=XMLUni::fgXMLNSString; + if(attrMap->getNamedItemNS(XMLUni::fgXMLNSURIName, prefix)==NULL && !XPath2Utils::equals(newChild->getPrefix(), prefix)) + { + const XMLCh* fullName=NULL; + if((*it)==0 || (*it)[0]==0) + fullName=XMLUni::fgXMLNSString; + else + fullName=XPath2Utils::concatStrings(XMLUni::fgXMLNSColonString, *it, context->getMemoryManager()); + DOMAttr *attr = getOutputDocument(context)->createAttributeNS(XMLUni::fgXMLNSURIName, fullName); + attrMap->setNamedItemNS(attr); + } + } + } + + element->appendChild(newChild); + } + + if(constrMode == StaticContext::CONSTRUCTION_MODE_PRESERVE) + XPath2Utils::setElementType(document, element, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, SchemaSymbols::fgATTVAL_ANYTYPE); + + return new NodeImpl(element, context); +} + +Node::Ptr ItemFactoryImpl::createDocumentNode(const std::vector &childList, const DynamicContext *context) const +{ + StaticContext::ConstructionMode constrMode=context->getConstructionMode(); + bool nsPreserveMode=context->getPreserveNamespaces(); + + DOMDocument *document = context->createNewDocument(); + + for(std::vector::const_iterator i = childList.begin(); i != childList.end(); ++i) { + const NodeImpl *nodeImpl = (const NodeImpl *)(*i)->getInterface(Item::gXQilla); + assert(nodeImpl != 0); + + DOMNode *newChild = document->importNode(const_cast(nodeImpl->getDOMNode()),true); + if(constrMode == StaticContext::CONSTRUCTION_MODE_PRESERVE && nodeImpl->dmNodeKind()==Node::element_string) + XPath2Utils::copyElementType(newChild->getOwnerDocument(), (DOMElement*)newChild, (DOMElement*)nodeImpl->getDOMNode()); + if(context->getDebugCallback()) context->getDebugCallback()->ReportClonedNode(const_cast(context), nodeImpl->getDOMNode(), newChild); + + if(!nsPreserveMode && newChild->getNodeType()==DOMNode::ELEMENT_NODE) + { + DOMElement* childElem=(DOMElement*)newChild; + // it's an error if the data type is namespace sensitive, e.g. QName or NOTATION + try + { + const DOMTypeInfo *psviType=childElem->getTypeInfo(); + if(psviType) + { + const XMLCh* typeURI=psviType->getNamespace(); + const XMLCh* typeName=psviType->getName(); + if(XPath2Utils::equals(typeURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) && + ( + XPath2Utils::equals(typeName, SchemaSymbols::fgDT_QNAME) || + XPath2Utils::equals(typeName, XMLUni::fgNotationString) + ) + ) + XQThrow2(ASTException,X("ItemFactoryImpl::createElementNode"),X("An element has a content that is namespace sensitive, and cannot be copied when copy-namespace is set to no-preserve [err:XQTY0086]")); + } + } catch(DOMException&) { + } + + DOMNamedNodeMap* attrMap=childElem->getAttributes(); + for(XMLSize_t i=0;igetLength();) + { + bool bPreserved=true; + DOMNode* attr=attrMap->item(i); + try + { + const DOMTypeInfo *psviType=((DOMAttr*)attr)->getTypeInfo(); + if(psviType) + { + const XMLCh* typeURI=psviType->getNamespace(); + const XMLCh* typeName=psviType->getName(); + if(XPath2Utils::equals(typeURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) && + ( + XPath2Utils::equals(typeName, SchemaSymbols::fgDT_QNAME) || + XPath2Utils::equals(typeName, XMLUni::fgNotationString) + ) + ) + XQThrow2(ASTException,X("ItemFactoryImpl::createElementNode"),X("An element has a content that is namespace sensitive, and cannot be copied when copy-namespace is set to no-preserve [err:XQTY0086]")); + } + } catch(DOMException&) { + } + + if(XPath2Utils::equals(attr->getPrefix(), XMLUni::fgXMLNSString) || XPath2Utils::equals(attr->getNodeName(), XMLUni::fgXMLNSString)) + { + const XMLCh* prefix=attr->getPrefix()==NULL?XMLUni::fgZeroLenString:attr->getLocalName(); + // copy this namespace only if needed by the element name... + if(!XPath2Utils::equals(childElem->getPrefix(), prefix)) + { + bPreserved=false; + //... or by its attributes + for(XMLSize_t j=0;jgetLength();j++) + if(XPath2Utils::equals(attrMap->item(j)->getPrefix(), prefix)) + { + bPreserved=true; + break; + } + if(!bPreserved) + attrMap->removeNamedItemNS(attr->getNamespaceURI(), attr->getLocalName()); + } + } + if(bPreserved) + i++; + } + } + + document->appendChild(newChild); + } + + return new NodeImpl(document, context); +} + +const DOMNode* ItemFactoryImpl::createNamespaceNode(const XMLCh* prefix, const XMLCh* uri, const DOMNode* parentNode, const DynamicContext *context) const +{ + if(parentNode->getNodeType()!=DOMNode::ELEMENT_NODE) + return NULL; + + DOMDocument *ownerDocument = parentNode->getOwnerDocument(); + return new ((DOMDocumentImpl *)ownerDocument, (DOMDocumentImpl::NodeObjectType)XPathNamespaceImpl::XPATH_NAMESPACE_OBJECT) XPathNamespaceImpl(prefix, uri, static_cast(const_cast(parentNode)), ownerDocument); +} + +AnyAtomicType::AtomicObjectType ItemFactoryImpl::getPrimitiveTypeIndex(const XMLCh* typeURI, const XMLCh* typeName, bool &isPrimitive) const +{ + const DatatypeFactory* dtf = datatypeLookup_.lookupDatatype(typeURI, typeName, isPrimitive); + return dtf->getPrimitiveTypeIndex(); +} + +ATQNameOrDerived::Ptr ItemFactoryImpl::createQName(const XMLCh* uri, + const XMLCh *prefix, + const XMLCh* name, + const DynamicContext* context + ) { + return createQNameOrDerived( + SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_QNAME, + uri, + prefix, + name, + context + ); +} + +ATDoubleOrDerived::Ptr ItemFactoryImpl::createDouble(const MAPM value, const DynamicContext* context) { + return createDoubleOrDerived( + SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_DOUBLE, + value, context); +} + +ATDoubleOrDerived::Ptr ItemFactoryImpl::createDouble(const XMLCh* value, const DynamicContext* context) { + return (ATDoubleOrDerived*)datatypeLookup_.getDoubleFactory()->createInstance(value, context).get(); +} + +ATFloatOrDerived::Ptr ItemFactoryImpl::createFloat(const MAPM value, const DynamicContext* context) { + return createFloatOrDerived( + SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_FLOAT, + value, context); +} + +ATFloatOrDerived::Ptr ItemFactoryImpl::createFloat(const XMLCh* value, const DynamicContext* context) { + return (ATFloatOrDerived*)datatypeLookup_.getFloatFactory()->createInstance(value, context).get(); +} + +ATDecimalOrDerived::Ptr ItemFactoryImpl::createDecimal(const MAPM value, const DynamicContext* context) { + return createDecimalOrDerived( + SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_DECIMAL, + value, context); +} + +ATDecimalOrDerived::Ptr ItemFactoryImpl::createDecimal(const XMLCh* value, const DynamicContext* context) { + return (ATDecimalOrDerived*)datatypeLookup_.getDecimalFactory()->createInstance(value, context).get(); +} + +ATDecimalOrDerived::Ptr ItemFactoryImpl::createInteger(const int value, const DynamicContext* context) { + return context->getMemoryManager()->createInteger(value); +} + +ATDecimalOrDerived::Ptr ItemFactoryImpl::createInteger(const MAPM value, const DynamicContext* context) { + return createDecimalOrDerived( + SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER, + value, context); +} + +ATDecimalOrDerived::Ptr ItemFactoryImpl::createInteger(const XMLCh* value, const DynamicContext* context) { + return createDecimalOrDerived( + SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER, + value, context); +} + +ATBooleanOrDerived::Ptr ItemFactoryImpl::createBoolean(bool value, const DynamicContext* context) { + return createBooleanOrDerived( + SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_BOOLEAN, + value, context); +} + +ATBooleanOrDerived::Ptr ItemFactoryImpl::createBoolean(const XMLCh* value, const DynamicContext* context) { + return (ATBooleanOrDerived*)datatypeLookup_.getBooleanFactory()->createInstance(value, context).get(); +} + +ATDecimalOrDerived::Ptr ItemFactoryImpl::createNonNegativeInteger(const MAPM value, const DynamicContext* context) { + return createDecimalOrDerived( + SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_NONNEGATIVEINTEGER, + value, context); +} + +ATDurationOrDerived::Ptr ItemFactoryImpl::createDayTimeDuration(const XMLCh* value, const DynamicContext* context) { + return (ATDurationOrDerived*)datatypeLookup_.getDurationFactory()-> + createInstance(FunctionConstructor::XMLChXPath2DatatypesURI, + ATDurationOrDerived::fgDT_DAYTIMEDURATION, value, context).get(); +} + +ATDurationOrDerived::Ptr ItemFactoryImpl::createDayTimeDuration(const MAPM &seconds, const DynamicContext* context) +{ + return new ATDurationOrDerivedImpl(FunctionConstructor::XMLChXPath2DatatypesURI, + ATDurationOrDerived::fgDT_DAYTIMEDURATION, + 0, seconds, context); +} + +ATDurationOrDerived::Ptr ItemFactoryImpl::createYearMonthDuration(const XMLCh* value, const DynamicContext* context) { + return (ATDurationOrDerived*)datatypeLookup_.getDurationFactory()-> + createInstance(FunctionConstructor::XMLChXPath2DatatypesURI, + ATDurationOrDerived::fgDT_YEARMONTHDURATION, value, context).get(); +} + +ATDurationOrDerived::Ptr ItemFactoryImpl::createYearMonthDuration(const MAPM &months, const DynamicContext* context) +{ + return new ATDurationOrDerivedImpl(FunctionConstructor::XMLChXPath2DatatypesURI, + ATDurationOrDerived::fgDT_YEARMONTHDURATION, + months, 0, context); +} + +ATDateOrDerived::Ptr ItemFactoryImpl::createDate(const XMLCh* value, const DynamicContext* context) { + return (ATDateOrDerived*)datatypeLookup_.getDateFactory()->createInstance(value, context).get(); +} + +ATDateTimeOrDerived::Ptr ItemFactoryImpl::createDateTime(const XMLCh* value, const DynamicContext* context) { + return (ATDateTimeOrDerived*)datatypeLookup_.getDateTimeFactory()->createInstance(value, context).get(); +} + +ATTimeOrDerived::Ptr ItemFactoryImpl::createTime(const XMLCh* value, const DynamicContext* context) { + return (ATTimeOrDerived*)datatypeLookup_.getTimeFactory()->createInstance(value, context).get(); +} + +ATAnyURIOrDerived::Ptr ItemFactoryImpl::createAnyURI(const XMLCh* value, const DynamicContext* context) { + return datatypeLookup_.getAnyURIFactory()->createInstance(value, context); +} + +ATStringOrDerived::Ptr ItemFactoryImpl::createString(const XMLCh* value, const DynamicContext* context) { + return (ATStringOrDerived*)datatypeLookup_.getStringFactory()->createInstance(value, context).get(); +} + +////////////////////////// +// All creation methods // +////////////////////////// + + +AnyAtomicType::Ptr ItemFactoryImpl::createDerivedFromAtomicType(AnyAtomicType::AtomicObjectType typeIndex, const XMLCh* value, + const DynamicContext* context) +{ + return datatypeLookup_.lookupDatatype(typeIndex)->createInstance(value, context); +} + +AnyAtomicType::Ptr ItemFactoryImpl::createDerivedFromAtomicType(AnyAtomicType::AtomicObjectType typeIndex, const XMLCh* typeURI, + const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) +{ + return datatypeLookup_.lookupDatatype(typeIndex)->createInstance(typeURI, typeName, value, context); +} + +AnyAtomicType::Ptr ItemFactoryImpl::createDerivedFromAtomicType(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, const DynamicContext* context) { + bool isPrimitive; + const DatatypeFactory* dtf = datatypeLookup_.lookupDatatype(typeURI, typeName, isPrimitive); + if(isPrimitive) { + return dtf->createInstance(value, context); + } + else { + return dtf->createInstance(typeURI, typeName, value, context); + } +} + +/** create a xs:boolean */ +ATBooleanOrDerived::Ptr ItemFactoryImpl::createBooleanOrDerived(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + const DynamicContext* context) { + return (const ATBooleanOrDerived*)datatypeLookup_.getBooleanFactory()->createInstance(typeURI, typeName, value, context).get(); +} + +/** create a xs:boolean with a bool value */ +ATBooleanOrDerived::Ptr ItemFactoryImpl::createBooleanOrDerived(const XMLCh* typeURI, + const XMLCh* typeName, + bool value, + const DynamicContext* context) { + // No need to validate + return new ATBooleanOrDerivedImpl(typeURI, typeName, value, context); +} + +/** create a xs:date */ +ATDateOrDerived::Ptr ItemFactoryImpl::createDateOrDerived(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + const DynamicContext* context){ + return (const ATDateOrDerived*)datatypeLookup_.getDateFactory()->createInstance(typeURI, typeName, value, context).get(); +} + + +/** create a xs:dateTime */ +ATDateTimeOrDerived::Ptr ItemFactoryImpl::createDateTimeOrDerived(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + const DynamicContext* context){ + return (const ATDateTimeOrDerived*)datatypeLookup_.getDateTimeFactory()->createInstance(typeURI, typeName, value, context).get(); +} + +/** create a xs:decimal */ +ATDecimalOrDerived::Ptr ItemFactoryImpl::createDecimalOrDerived(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + const DynamicContext* context){ + return (const ATDecimalOrDerived*)datatypeLookup_.getDecimalFactory()->createInstance(typeURI, typeName, value, context).get(); +} + +/** create a xs:decimal with a MAPM */ +ATDecimalOrDerived::Ptr ItemFactoryImpl::createDecimalOrDerived(const XMLCh* typeURI, + const XMLCh* typeName, + const MAPM value, + const DynamicContext* context){ + // No need to validate + return new ATDecimalOrDerivedImpl(typeURI, typeName, value, context); +} + + +/** create a xs:double */ +ATDoubleOrDerived::Ptr ItemFactoryImpl::createDoubleOrDerived(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + const DynamicContext* context){ + if(XPath2Utils::equals(value, Numeric::NAN_string)) { + value= Numeric::NaN_string; + } + return (const ATDoubleOrDerived*)datatypeLookup_.getDoubleFactory()->createInstance(typeURI, typeName, value, context).get(); +} + +/** create a xs:double with a MAPM */ +ATDoubleOrDerived::Ptr ItemFactoryImpl::createDoubleOrDerived(const XMLCh* typeURI, + const XMLCh* typeName, + const MAPM value, + const DynamicContext* context){ + // No need to validate + return new ATDoubleOrDerivedImpl(typeURI, typeName, value, context); +} + + +/** create a xs:duration */ +ATDurationOrDerived::Ptr ItemFactoryImpl::createDurationOrDerived(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + const DynamicContext* context){ + return (const ATDurationOrDerived::Ptr)datatypeLookup_.getDurationFactory()->createInstance(typeURI, typeName, value, context); +} + +/** create a xs:float */ +ATFloatOrDerived::Ptr ItemFactoryImpl::createFloatOrDerived(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + const DynamicContext* context){ + if(XMLString::equals(value, Numeric::NAN_string)) { + value= Numeric::NaN_string; + } + return (const ATFloatOrDerived::Ptr)datatypeLookup_.getFloatFactory()->createInstance(typeURI, typeName, value, context); + +} + +/** create a xs:float with a MAPM */ +ATFloatOrDerived::Ptr ItemFactoryImpl::createFloatOrDerived(const XMLCh* typeURI, + const XMLCh* typeName, + const MAPM value, + const DynamicContext* context) { + // No need to validate + return new ATFloatOrDerivedImpl(typeURI, typeName, value, context); +} + +/** create a xs:gDay */ +ATGDayOrDerived::Ptr ItemFactoryImpl::createGDayOrDerived(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + const DynamicContext* context) { + return (const ATGDayOrDerived::Ptr)datatypeLookup_.getGDayFactory()->createInstance(typeURI, typeName, value, context); +} + +/** create a xs:gMonth */ +ATGMonthOrDerived::Ptr ItemFactoryImpl::createGMonthOrDerived(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + const DynamicContext* context) { + return (const ATGMonthOrDerived::Ptr)datatypeLookup_.getGMonthFactory()->createInstance(typeURI, typeName, value, context); + +} + + +/** create a xs:gMonthDay */ +ATGMonthDayOrDerived::Ptr ItemFactoryImpl::createGMonthDayOrDerived(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + const DynamicContext* context) { + return (const ATGMonthDayOrDerived::Ptr)datatypeLookup_.getGMonthDayFactory()->createInstance(typeURI, typeName, value, context); +} + +/** create a xs:gYear */ +ATGYearOrDerived::Ptr ItemFactoryImpl::createGYearOrDerived(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + const DynamicContext* context) { + return (const ATGYearOrDerived::Ptr)datatypeLookup_.getGYearFactory()->createInstance(typeURI, typeName, value, context); +} + + +/** create a xs:gYearMonth */ +ATGYearMonthOrDerived::Ptr ItemFactoryImpl::createGYearMonthOrDerived(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + const DynamicContext* context) { + return (const ATGYearMonthOrDerived::Ptr)datatypeLookup_.getGYearMonthFactory()->createInstance(typeURI, typeName, value, context); +} + +/** create a xs:QName with two parameters */ +ATQNameOrDerived::Ptr ItemFactoryImpl::createQNameOrDerived(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* uri, + const XMLCh* prefix, + const XMLCh* name, + const DynamicContext* context) { + + ATQNameOrDerivedImpl* tmp = new ATQNameOrDerivedImpl(typeURI, typeName, uri, prefix, name, context); + + const DatatypeFactory* dtf_anyURI = datatypeLookup_.getAnyURIFactory(); + if(dtf_anyURI->checkInstance(uri, context->getMemoryManager())) { + const DatatypeFactory* dtf_NCName = datatypeLookup_.getStringFactory(); + if (dtf_NCName->checkInstance(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, SchemaSymbols::fgDT_NCNAME, name, context->getMemoryManager())) { + return tmp; + } else { + // this call will obviously fail, but it is better for error reporting, + // since we actually get the XMLException's error message + return (const ATQNameOrDerived::Ptr )dtf_NCName-> + createInstance(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, SchemaSymbols::fgDT_NCNAME, name, context); + } + } else { + // this call will obviously fail, but it is better for error reporting, + // since we actually get the XMLException's error message + return (const ATQNameOrDerived::Ptr )dtf_anyURI->createInstance(uri, context); + } +} + + +/** create a xs:string */ +ATStringOrDerived::Ptr ItemFactoryImpl::createStringOrDerived(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + const DynamicContext* context) { + return (const ATStringOrDerived::Ptr)datatypeLookup_.getStringFactory()->createInstance(typeURI, typeName, value, context); +} + +/** create a xs:time */ +ATTimeOrDerived::Ptr ItemFactoryImpl::createTimeOrDerived(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + const DynamicContext* context){ + return (const ATTimeOrDerived::Ptr)datatypeLookup_.getTimeFactory()->createInstance(typeURI, typeName, value, context); +} + +/** create an xdt:untypedAtomic */ +ATUntypedAtomic::Ptr ItemFactoryImpl::createUntypedAtomic(const XMLCh* value, const DynamicContext* context) { + return (const ATUntypedAtomic::Ptr)datatypeLookup_.getUntypedAtomicFactory()->createInstance(value, context); +} diff --git a/src/context/impl/VarHashEntryImpl.cpp b/src/context/impl/VarHashEntryImpl.cpp new file mode 100644 index 00000000..b9c9e969 --- /dev/null +++ b/src/context/impl/VarHashEntryImpl.cpp @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: VarHashEntryImpl.cpp,v 1.8 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include diff --git a/src/context/impl/VarStoreImpl.cpp b/src/context/impl/VarStoreImpl.cpp new file mode 100644 index 00000000..f3e6f1dd --- /dev/null +++ b/src/context/impl/VarStoreImpl.cpp @@ -0,0 +1,301 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: VarStoreImpl.cpp,v 1.12 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include +#include "VarStoreImpl.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +VarStoreImpl::VarStoreImpl(XPath2MemoryManager* memMgr) + : _store(memMgr) +{ +} + +VarStoreImpl::~VarStoreImpl() +{ + /* nothing to do */ +} + +void VarStoreImpl::clear() +{ + _store.clear(); +} + +void VarStoreImpl::addLocalScope() +{ + _store.addScope(Scope::LOCAL_SCOPE); +} + +void VarStoreImpl::addLogicalBlockScope() +{ + _store.addScope(Scope::LOGICAL_BLOCK_SCOPE); +} + +void VarStoreImpl::removeScope() +{ + _store.removeScope(); +} + +VariableStore::MyScope *VarStoreImpl::getScopeState() +{ + return _store.getCurrentScope(); +} + +void VarStoreImpl::setScopeState(VariableStore::MyScope *state) +{ + _store.setCurrentScope(state); +} + +const XMLCh* VarStoreImpl::getVariableNsURI(const XMLCh* qName, const StaticContext* context, + const LocationInfo *location) const +{ + const XMLCh* uri=NULL; + const XMLCh* prefix=XPath2NSUtils::getPrefix(qName, context->getMemoryManager()); + if(prefix && *prefix) + uri = context->getUriBoundToPrefix(prefix, location); + return uri; +} + +void VarStoreImpl::setGlobalVar(const XMLCh* ident, + const Sequence& value, + const StaticContext* context, + const LocationInfo *location) +{ + _store.setGlobalVar(getVariableNsURI(ident, context, location), XPath2NSUtils::getLocalName(ident), value); +} + +void VarStoreImpl::setGlobalVar(const XMLCh* namespaceURI, + const XMLCh* name, + const Sequence &value, + const StaticContext* context) +{ + _store.setGlobalVar(namespaceURI, name, value); +} + +void VarStoreImpl::setVar(const XMLCh* ident, + const Sequence &value, + const StaticContext* context, + const LocationInfo *location) +{ + _store.setVar(getVariableNsURI(ident, context, location), XPath2NSUtils::getLocalName(ident), value); +} + +void VarStoreImpl::setVar(const XMLCh* namespaceURI, + const XMLCh* name, + const Sequence &value, + const StaticContext* context) +{ + _store.setVar(namespaceURI, name, value); +} + +void VarStoreImpl::declareVar(const XMLCh* ident, + const Sequence &value, + const StaticContext* context, + const LocationInfo *location) +{ + _store.declareVar(getVariableNsURI(ident, context, location), XPath2NSUtils::getLocalName(ident), value); +} + +void VarStoreImpl::declareVar(const XMLCh* namespaceURI, + const XMLCh* name, + const Sequence &value, + const StaticContext* context) +{ + _store.declareVar(namespaceURI, name, value); +} + +const std::pair VarStoreImpl::getVar(const XMLCh* ident, + const StaticContext* context, + const LocationInfo *location) const +{ + return getVar(getVariableNsURI(ident, context, location), XPath2NSUtils::getLocalName(ident), context); +} + +const std::pair VarStoreImpl::getVar(const XMLCh* namespaceURI, + const XMLCh* name, + const StaticContext* context) const +{ + VariableStore::Entry* result = _store.getVar(namespaceURI, name); + if(result) + return std::pair(true, result->getValue()); + return std::pair(false, Sequence(context->getMemoryManager())); +} + +VariableStore::Entry* VarStoreImpl::getReferenceVar(const XMLCh* ident, + const StaticContext* context, + const LocationInfo *location) const +{ + return _store.getVar(getVariableNsURI(ident, context, location), XPath2NSUtils::getLocalName(ident)); +} + +/** Returns a null VarHashEntry if unsuccessful */ +VariableStore::Entry* VarStoreImpl::getReferenceVar(const XMLCh* namespaceURI, + const XMLCh* name, + const StaticContext* context) const +{ + return _store.getVar(namespaceURI, name); +} + +/** Change getGlobalVar to return a null Sequence, rather than + a pair with sucess boolean... */ +const std::pair VarStoreImpl::getGlobalVar(const XMLCh* ident, + const StaticContext* context, + const LocationInfo *location) const +{ + return getGlobalVar(getVariableNsURI(ident, context, location), XPath2NSUtils::getLocalName(ident), context); +} + +const std::pair VarStoreImpl::getGlobalVar(const XMLCh* namespaceURI, + const XMLCh* name, + const StaticContext* context) const +{ + VariableStore::Entry* result = _store.getGlobalVar(namespaceURI, name); + if(result) + return std::pair(true, result->getValue()); + return std::pair(false, Sequence(context->getMemoryManager())); +} + +void VarStoreImpl::delVar(const XMLCh* ident, + const StaticContext* context, + const LocationInfo *location) +{ + _store.delVar(getVariableNsURI(ident, context, location), XPath2NSUtils::getLocalName(ident)); +} + +void VarStoreImpl::delVar( const XMLCh* namespaceURI, const XMLCh* name, const StaticContext* context ) +{ + _store.delVar(namespaceURI, name); +} + +void VarStoreImpl::delGlobalVar(const XMLCh* ident, + const StaticContext* context, + const LocationInfo *location) +{ + _store.delGlobalVar(getVariableNsURI(ident, context, location), XPath2NSUtils::getLocalName(ident)); +} + +void VarStoreImpl::delGlobalVar( const XMLCh* namespaceURI, const XMLCh* name, const StaticContext* context ) +{ + _store.delGlobalVar(namespaceURI, name); +} + + +XMLCh* VarStoreImpl::print(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr) const +{ + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer buf(1023, memMgr); + buf.set(X("\n")); + const Scope* index=_store.getCurrentScope(); + if(index==NULL) + index=_store.getGlobalScope(); + + XQContextImpl xp2c(memMgr, 0, 0); + + while(index) + { + buf.append(X("getType()) { + case Scope::GLOBAL_SCOPE: { + buf.append(X("global")); + break; + } + case Scope::LOCAL_SCOPE: { + buf.append(X("local")); + break; + } + case Scope::LOGICAL_BLOCK_SCOPE: { + buf.append(X("logical_block")); + break; + } + } + buf.append(X("\">\n")); + + std::vector< std::pair > vars = index->getVars(); + for(std::vector< std::pair >::iterator it=vars.begin();it!=vars.end();it++) + { + buf.append(X("first)); + buf.append(X("\" name=\"")); + buf.append(it->second); + buf.append(X("\">")); + + VarHashEntry* pEntry=const_cast*>(index)->get(it->first,it->second); + + Sequence value(pEntry->getValue()); + unsigned int len=value.getLength(); + if(len>0) { + if(len==1) + buf.append(value.first()->asString(&xp2c)); + else { + XMLCh szOpenParen[]={ XERCES_CPP_NAMESPACE_QUALIFIER chOpenParen, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + XMLCh szCloseParen[]={ XERCES_CPP_NAMESPACE_QUALIFIER chCloseParen, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + XMLCh szComma[]={ XERCES_CPP_NAMESPACE_QUALIFIER chComma, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + buf.append(szOpenParen); + Sequence::iterator end = value.end(); + for(Sequence::iterator i = value.begin(); i != end;) { + buf.append((*i)->asString(&xp2c)); + if(++i != end) + buf.append(szComma); + } + buf.append(szCloseParen); + } + } + + buf.append(X("\n")); + } + + buf.append(X("\n")); + if(index==_store.getGlobalScope()) + break; + else + { + index=const_cast*>(index)->getNext(); + if(index==NULL) + index=_store.getGlobalScope(); + } + } + buf.append(X("\n")); + + XMLCh* result = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::replicate(buf.getRawBuffer()); + return result; +} + +std::vector< std::pair > VarStoreImpl::getVars() const +{ + std::vector< std::pair > result; + // List the local scopes + const Scope* index=_store.getCurrentScope(); + while(index) + { + std::vector< std::pair > tmp=index->getVars(); + for(std::vector< std::pair >::iterator it=tmp.begin();it!=tmp.end();it++) + result.push_back(std::pair(_store.lookUpNamespace(it->first),it->second)); + // stop the search when we are going out of scope + if(index->getType() == Scope::LOCAL_SCOPE) + break; + index=const_cast*>(index)->getNext(); + } + // Check the global scope + std::vector< std::pair > tmp=_store.getGlobalScope()->getVars(); + for(std::vector< std::pair >::iterator it=tmp.begin();it!=tmp.end();it++) + result.push_back(std::pair(_store.lookUpNamespace(it->first),it->second)); + + return result; +} diff --git a/src/context/impl/VarStoreImpl.hpp b/src/context/impl/VarStoreImpl.hpp new file mode 100644 index 00000000..f179e0f1 --- /dev/null +++ b/src/context/impl/VarStoreImpl.hpp @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: VarStoreImpl.hpp,v 1.10 2006/11/01 16:37:18 jpcs Exp $ + */ + +/* + VarStoreImpl - Implementation of the variable store class +*/ + +#ifndef _VARSTOREIMPL_HPP +#define _VARSTOREIMPL_HPP + +#include + +#include +#include +#include +#include +#include +#include + +class XPath2MemoryManager; + +/** implementation of the variable store. */ +class XQILLA_API VarStoreImpl : public VariableStore +{ +public: + /** constructor. automatically creates a global store for the + global variables. */ + VarStoreImpl(XPath2MemoryManager* memMgr); + /// destructor + ~VarStoreImpl(); + + /** Clears all variable values and added scopes from the store */ + void clear(); + + /** Adds a new scope to the store. Add a LOCAL_SCOPE scope at the + beginning of *procedural* methods, and a LOGICAL_BLOCK_SCOPE + scope at the beginning of logical block methods. */ + void addLocalScope(); + void addLogicalBlockScope(); + /** Removes the top level scope from the store. To be called at + the end of methods to implement scoping. */ + void removeScope(); + + /// Returns an encapsulation of the state of the variable store. + VariableStore::MyScope *getScopeState(); + /// Sets the variable store to a previous state. + void setScopeState(VariableStore::MyScope *state); + + /** Declares and/or sets a variable in the top level scope. */ + void setVar(const XMLCh* ident, + const Sequence &value, + const StaticContext* context, + const LocationInfo *location); + void setVar(const XMLCh* namespaceURI, + const XMLCh* name, + const Sequence &value, + const StaticContext* context); + /** Declares and/or sets a variable in the global scope. */ + void setGlobalVar(const XMLCh* ident, + const Sequence &value, + const StaticContext* context, + const LocationInfo *location); + void setGlobalVar(const XMLCh* namespaceURI, + const XMLCh* name, + const Sequence &value, + const StaticContext* context); + + + ///Declares a var in the top level scope + void declareVar(const XMLCh* ident, + const Sequence &value, + const StaticContext* context, + const LocationInfo *location); + void declareVar(const XMLCh* namespaceURI, + const XMLCh* name, + const Sequence &value, + const StaticContext* context); + + + /** Looks up the value of a variable in the current scope. + Returns a boolean (true if successful), and the Sequence + value of the variable*/ + const std::pair getVar(const XMLCh* ident, + const StaticContext* context, + const LocationInfo *location) const; + const std::pair getVar(const XMLCh* namespaceURI, + const XMLCh* name, + const StaticContext* context) const; + /** Looks up the value of a variable in the current scope. + Returns the VariableStore::Entry for the variable, or null*/ + VariableStore::Entry* getReferenceVar(const XMLCh* ident, + const StaticContext* context, + const LocationInfo *location) const; + VariableStore::Entry* getReferenceVar(const XMLCh* namespaceURI, + const XMLCh* name, + const StaticContext* context) const; + /** Looks up the value of a variable in the current scope. + Returns a boolean (true if successful), and the Sequence + value of the variable*/ + const std::pair getGlobalVar(const XMLCh* ident, + const StaticContext* context, + const LocationInfo *location) const; + const std::pair getGlobalVar(const XMLCh* namespaceURI, + const XMLCh* name, + const StaticContext* context) const; + + + /** Deletes a variable from the current scope. */ + void delVar(const XMLCh* ident, + const StaticContext* context, + const LocationInfo *location); + void delVar(const XMLCh* namespaceURI, + const XMLCh* name, + const StaticContext* context); + /** Deletes a variable from the global scope. */ + void delGlobalVar(const XMLCh* ident, + const StaticContext* context, + const LocationInfo *location); + void delGlobalVar(const XMLCh* namespaceURI, + const XMLCh* name, + const StaticContext* context); + + /** Gives human readable representation of the variable store */ + XMLCh* print(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr) const; + + /** Returns a vector with the names of the variable currently in scope */ + std::vector< std::pair > getVars() const; + + const XMLCh* getVariableNsURI(const XMLCh* qName, const StaticContext* context, const LocationInfo *location) const; + +private: + VariableStoreTemplate _store; +}; + +#endif // _VARSTOREIMPL_HPP + + + diff --git a/src/context/impl/VarTypeStoreImpl.cpp b/src/context/impl/VarTypeStoreImpl.cpp new file mode 100644 index 00000000..a3bea170 --- /dev/null +++ b/src/context/impl/VarTypeStoreImpl.cpp @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: VarTypeStoreImpl.cpp,v 1.8 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include +#include "VarTypeStoreImpl.hpp" +#include +#include +#include +#include + +VarTypeStoreImpl::VarTypeStoreImpl(XPath2MemoryManager* memMgr) + : _store(memMgr) +{ +} + +VarTypeStoreImpl::~VarTypeStoreImpl() +{ + /* nothing to do */ +} + +void VarTypeStoreImpl::clear() +{ + _store.clear(); +} + +void VarTypeStoreImpl::addLocalScope() +{ + _store.addScope(Scope::LOCAL_SCOPE); +} + +void VarTypeStoreImpl::addLogicalBlockScope() +{ + _store.addScope(Scope::LOGICAL_BLOCK_SCOPE); +} + +void VarTypeStoreImpl::removeScope() +{ + _store.removeScope(); +} + +void VarTypeStoreImpl::declareGlobalVar(const XMLCh* namespaceURI, + const XMLCh* name, + const StaticResolutionContext &src) +{ + _store.setGlobalVar(namespaceURI, name, &src); +} + +void VarTypeStoreImpl::declareVar(const XMLCh* namespaceURI, + const XMLCh* name, + const StaticResolutionContext &src) +{ + _store.declareVar(namespaceURI, name, &src); +} + +const StaticResolutionContext *VarTypeStoreImpl::getVar(const XMLCh* namespaceURI, + const XMLCh* name) const +{ + VarHashEntry* result = _store.getVar(namespaceURI, name); + if(result) + return result->getValue(); + return 0; +} + +const StaticResolutionContext* VarTypeStoreImpl::getGlobalVar(const XMLCh* namespaceURI, + const XMLCh* name) const +{ + VarHashEntry* result = _store.getGlobalVar(namespaceURI, name); + if(result) + return result->getValue(); + return 0; +} diff --git a/src/context/impl/VarTypeStoreImpl.hpp b/src/context/impl/VarTypeStoreImpl.hpp new file mode 100644 index 00000000..a2c0710f --- /dev/null +++ b/src/context/impl/VarTypeStoreImpl.hpp @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: VarTypeStoreImpl.hpp,v 1.7 2006/11/01 16:37:18 jpcs Exp $ + */ + +/* + VarStoreImpl - Implementation of the variable store class +*/ + +#ifndef _VARTYPESTOREIMPL_HPP +#define _VARTYPESTOREIMPL_HPP + +#include + +#include +#include +#include +#include +#include + +class XPath2MemoryManager; + +/** implementation of the variable type store. */ +class XQILLA_API VarTypeStoreImpl : public VariableTypeStore +{ +public: + /** constructor. automatically creates a global store for the + global variables. */ + VarTypeStoreImpl(XPath2MemoryManager* memMgr); + /// destructor + ~VarTypeStoreImpl(); + + /** Clears all variable values and added scopes from the store */ + virtual void clear(); + + /** Adds a new scope to the store. Add a LOCAL_SCOPE scope at the + beginning of *procedural* methods, and a LOGICAL_BLOCK_SCOPE + scope at the beginning of logical block methods. */ + virtual void addLocalScope(); + virtual void addLogicalBlockScope(); + /** Removes the top level scope from the store. To be called at + the end of methods to implement scoping. */ + virtual void removeScope(); + + /** Declares and/or sets a variable in the global scope. */ + virtual void declareGlobalVar(const XMLCh* namespaceURI, + const XMLCh* name, + const StaticResolutionContext &src); + + /** Looks up the value of a variable in the current scope. + Returns a boolean (true if successful), and the SequenceType + value of the variable*/ + virtual const StaticResolutionContext* getGlobalVar(const XMLCh* namespaceURI, + const XMLCh* name) const; + + ///Declares a var in the top level scope + virtual void declareVar(const XMLCh* namespaceURI, + const XMLCh* name, + const StaticResolutionContext &src); + + /** Looks up the value of a variable in the current scope. + Returns a boolean (true if successful), and the SequenceType + value of the variable*/ + virtual const StaticResolutionContext* getVar(const XMLCh* namespaceURI, + const XMLCh* name) const; + +private: + VariableStoreTemplate _store; +}; + +#endif diff --git a/src/context/impl/XQContextImpl.cpp b/src/context/impl/XQContextImpl.cpp new file mode 100644 index 00000000..dd6360a8 --- /dev/null +++ b/src/context/impl/XQContextImpl.cpp @@ -0,0 +1,833 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQContextImpl.cpp,v 1.29 2006/11/01 16:37:18 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQContextImpl.cpp: implementation of the XQContextImpl class. +////////////////////////////////////////////////////////////////////// + +#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 "../../dom-api/impl/XPathDocumentImpl.hpp" + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////// + +const XMLCh XMLChXS[] = { XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; +const XMLCh XMLChXSI[] = { XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; +const XMLCh XMLChFN[] = { XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; +const XMLCh XMLChXDT[] = { XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; +const XMLCh XMLChLOCAL[] = { XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +static CodepointCollation g_codepointCollation; + +XQContextImpl::XQContextImpl(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr, + XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool* xmlgr, + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* contextNode) + : _createdWith(memMgr), + _internalMM(memMgr), + _varTypeStore(0), + _functionTable(0), + _collations(XQillaAllocator(&_internalMM)), + _constructionMode(CONSTRUCTION_MODE_PRESERVE), + _bPreserveBoundarySpace(false), + _varStore(0), + _documentMap(3,false,&_internalMM), + _uriMap(3,false, new (&_internalMM) XERCES_CPP_NAMESPACE_QUALIFIER HashPtr(), &_internalMM), + _resolvers(XQillaAllocator(&_internalMM)), + _moduleResolver(0) +{ + _memMgr = &_internalMM; + _firstDocRefCount=new (&_internalMM) DocRefCount(); + + //////////////////// + // static context // + //////////////////// + _contextItemType.flags = StaticType::ITEM_TYPE; + _xpath1Compatibility = false; // according to Formal Semantics, § 4.1.1 + _ordering = ORDERING_ORDERED; + + _globalNSResolver = new (&_internalMM) XQillaNSResolverImpl(&_internalMM, 0); // resolve acc.to null node + _nsResolver = _globalNSResolver; + + _defaultElementNS = 0; + // by default, the default namespace for functions is the XPath2 namespace + _functionNS = XQFunction::XMLChFunctionURI; + + if(xmlgr) + _docCache=new (&_internalMM) DocumentCacheImpl(&_internalMM, xmlgr); + else + _docCache=new (&_internalMM) DocumentCacheImpl(&_internalMM); + + if(_varStore==NULL) + _varStore=_internalMM.createVariableStore(); + if(_varTypeStore==NULL) + _varTypeStore=_internalMM.createVariableTypeStore(); + if(_functionTable==NULL) + _functionTable=_internalMM.createFunctionTable(); + + _itemFactory = new (&_internalMM) ItemFactoryImpl(_docCache, &_internalMM); + + // insert the default collation + addCollation(_internalMM.createCollation(&g_codepointCollation)); + setDefaultCollation(g_codepointCollation.getCollationName()); + + _flworOrderingMode = FLWOR_ORDER_EMPTY_LEAST; // implementation-defined + + _bInheritNamespaces = true; + _bPreserveNamespaces = true; + + if(contextNode==0) + _baseURI=0; + else { + if(contextNode->getNodeType() == XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::DOCUMENT_NODE) { + _baseURI = _internalMM.getPooledString(contextNode->getBaseURI()); + } else { + _baseURI = _internalMM.getPooledString(contextNode->getOwnerDocument()->getBaseURI()); + } + } + + //////////////////////// + // Evaluation context // + //////////////////////// + + if(contextNode!=NULL) + setExternalContextNode(contextNode); + else + _contextItem = NULL; + + _contextPosition = 1; + _contextSize = 1; + time(&_currentTime); + + // implicit timezone - lazily set in getImplicitTimezone + _implicitTimezone = 0; + + // XQuery stuff + m_pDebugCallback = NULL; + m_bEnableDebugging = false; + + // XQuery defines these predefined namespace bindings + setNamespaceBinding(XMLChXS, XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA); + setNamespaceBinding(XMLChXSI, XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_XSI); + setNamespaceBinding(XMLChFN, XQFunction::XMLChFunctionURI); + setNamespaceBinding(XMLChXDT, FunctionConstructor::XMLChXPath2DatatypesURI); + setNamespaceBinding(XMLChLOCAL, XQUserFunction::XMLChXQueryLocalFunctionsURI); +} + +XQContextImpl::~XQContextImpl() +{ + _varStore->clear(); + _varTypeStore->clear(); + _contextItem = 0; + _implicitTimezone = 0; + + delete _varStore; + delete _varTypeStore; + delete _itemFactory; + + DocRefCount *drc; + while(_firstDocRefCount != 0) { + drc = _firstDocRefCount; + _firstDocRefCount = _firstDocRefCount->next; + _internalMM.deallocate(drc); + } +} + +DynamicContext *XQContextImpl::createModuleContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr) const +{ + DynamicContext* moduleCtx = new (memMgr) XQContextImpl(memMgr); + // force the context to use our memory manager + moduleCtx->setMemoryManager(getMemoryManager()); + // propagate debug settings + moduleCtx->enableDebugging(isDebuggingEnabled()); + return moduleCtx; +} + +DynamicContext *XQContextImpl::createDynamicContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr) const +{ + return new (memMgr) XQDynamicContextImpl(this, memMgr); +} + +void XQContextImpl::setMemoryManager(XPath2MemoryManager* memMgr) +{ + _memMgr = memMgr; +} + +void XQContextImpl::setNamespaceBinding(const XMLCh* prefix, const XMLCh* uri) +{ + if(XPath2Utils::equals(prefix,XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXMLNSString) || + XPath2Utils::equals(prefix,XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXMLString)) + XQThrow2(StaticErrorException,X("XQContextImpl::setNamespaceBinding"),X("The prefixes 'xmlns' and 'xml' cannot be used in a namespace declaration [err:XQST0070]")); + if(XPath2Utils::equals(uri,XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXMLURIName)) + XQThrow2(StaticErrorException,X("XQContextImpl::setNamespaceBinding"),X("The 'http://www.w3.org/XML/1998/namespace' namespace cannot be bound to any prefix [err:XQST0070]")); + + ((XQillaNSResolverImpl*)_nsResolver)->addNamespaceBinding(prefix,uri); +} + +void XQContextImpl::setPreserveBoundarySpace(bool value) +{ + _bPreserveBoundarySpace=value; +} + +bool XQContextImpl::getPreserveBoundarySpace() const +{ + return _bPreserveBoundarySpace; +} + +void XQContextImpl::setInheritNamespaces(bool value) +{ + _bInheritNamespaces=value; +} + +bool XQContextImpl::getInheritNamespaces() const +{ + return _bInheritNamespaces; +} + +void XQContextImpl::setPreserveNamespaces(bool value) +{ + _bPreserveNamespaces=value; +} + +bool XQContextImpl::getPreserveNamespaces() const +{ + return _bPreserveNamespaces; +} + +void XQContextImpl::setDebugCallback(XQDebugCallback* callback) +{ + m_pDebugCallback=callback; +} + +XQDebugCallback* XQContextImpl::getDebugCallback() const +{ + return m_pDebugCallback; +} + +void XQContextImpl::enableDebugging(bool enable/*=true*/) +{ + m_bEnableDebugging=enable; +} + +bool XQContextImpl::isDebuggingEnabled() const +{ + return m_bEnableDebugging; +} + +void XQContextImpl::incrementDocumentRefCount(const XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* document) const +{ + assert(document != 0); + + XQContextImpl* me=const_cast(this); + + DocRefCount *found = _firstDocRefCount; + while(found->doc != 0 && found->doc != document) { + found = found->next; + } + + if(found->doc == 0) { + found->doc = document; + found->next = new (&me->_internalMM) DocRefCount(); + } + else { + ++found->ref_count; + } +} + +void XQContextImpl::decrementDocumentRefCount(const XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* document) const +{ + assert(document != 0); + + XQContextImpl* me=const_cast(this); + + DocRefCount *prev = 0; + DocRefCount *found = _firstDocRefCount; + while(found->doc != 0 && found->doc != document) { + prev = found; + found = found->next; + } + + if(found->doc != 0) { + if(--found->ref_count == 0) { + if(prev == 0) { + me->_firstDocRefCount = found->next; + } + else { + prev->next = found->next; + } + me->_internalMM.deallocate(found); + XMLCh *uri = me->_uriMap.get((void*)document); + if(uri != 0) { + me->_uriMap.removeKey((void*)document); + me->_documentMap.removeKey((void*)uri); + } + releaseDocument(const_cast(document)); + } + } +} + +XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* XQContextImpl::retrieveDocument(const XMLCh* uri) +{ + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc = _documentMap.get((void*)uri); + return doc; +} + +void XQContextImpl::storeDocument(const XMLCh* uri, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* document) +{ + uri=_internalMM.getPooledString(uri); + _documentMap.put((void*)uri, document); + _uriMap.put((void*)document, const_cast(uri)); +} + +void XQContextImpl::clearDynamicContext() +{ + _nsResolver = _globalNSResolver; + _contextItem = 0; + _contextSize = 1; + _contextPosition = 1; + _varStore->clear(); + _implicitTimezone = 0; + _resolvers.clear(); + _moduleResolver = 0; + _documentMap.removeAll(); + _uriMap.removeAll(); + time(&_currentTime); +} + +const StaticType &XQContextImpl::getContextItemType() const +{ + return _contextItemType; +} + +void XQContextImpl::setContextItemType(const StaticType &st) +{ + _contextItemType = st; +} + +bool XQContextImpl::getXPath1CompatibilityMode() const +{ + return _xpath1Compatibility; +} + +void XQContextImpl::setXPath1CompatibilityMode(bool newMode) +{ + _xpath1Compatibility=newMode; +} + +const XMLCh* XQContextImpl::getDefaultFuncNS() const +{ + return _functionNS; +} + +void XQContextImpl::setDefaultFuncNS(const XMLCh* newNS) +{ + _functionNS=newNS; +} + +const XMLCh* XQContextImpl::getBaseURI() const +{ + return _baseURI; +} + +void XQContextImpl::setBaseURI(const XMLCh* newURI) +{ + _baseURI = _internalMM.getPooledString(newURI); +} + +StaticContext::ConstructionMode XQContextImpl::getConstructionMode() const +{ + return _constructionMode; +} + +void XQContextImpl::setConstructionMode(ConstructionMode newMode) +{ + _constructionMode=newMode; +} + +StaticContext::NodeSetOrdering XQContextImpl::getNodeSetOrdering() const +{ + return _ordering; +} + +void XQContextImpl::setNodeSetOrdering(NodeSetOrdering newOrder) +{ + _ordering=newOrder; +} + +StaticContext::FLWOROrderingMode XQContextImpl::getDefaultFLWOROrderingMode() const +{ + return _flworOrderingMode; +} + +void XQContextImpl::setDefaultFLWOROrderingMode(StaticContext::FLWOROrderingMode newMode) +{ + _flworOrderingMode=newMode; +} + +time_t XQContextImpl::getCurrentTime() const +{ + return _currentTime; +} + +void XQContextImpl::setCurrentTime(time_t newTime) +{ + _currentTime=newTime; +} + +ATDurationOrDerived::Ptr XQContextImpl::getImplicitTimezone() const { + if(_implicitTimezone == NULLRCP) { + // validate tzone + Timezone tzone(ContextUtils::getTimezone()); + // c-style the const away since we are in a const method + ((XQContextImpl*)this)->_implicitTimezone = tzone.asDayTimeDuration(this); + } + + return _implicitTimezone; +} + +void XQContextImpl::setImplicitTimezone(const ATDurationOrDerived::Ptr &timezoneAsDuration) { + // validate the timezone -- will trow if invalid + Timezone timezone(timezoneAsDuration, this); + this->_implicitTimezone = timezoneAsDuration; +} + +void XQContextImpl::setNSResolver(const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* resolver) { + _nsResolver = resolver; +} + +const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* XQContextImpl::getNSResolver() const { + return _nsResolver; +} + +const XMLCh* XQContextImpl::getUriBoundToPrefix(const XMLCh* prefix, const LocationInfo *location) const +{ + const XMLCh* uri = _nsResolver->lookupNamespaceURI(prefix); + + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(uri) == 0 && XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(prefix) > 0){ + const XMLCh* msg = XPath2Utils::concatStrings(X("No namespace for prefix \'"), prefix, X("\' [err:XPST0081]"), getMemoryManager()); + XQThrow3(NamespaceLookupException, X("XQContextImpl::getUriBoundToPrefix"), msg, location); + } + + return uri; +} + +const XMLCh* XQContextImpl::getPrefixBoundToUri(const XMLCh* uri) const +{ + return _nsResolver->lookupPrefix(uri); +} + +void XQContextImpl::setContextItem(const Item::Ptr &item) +{ + _contextItem = item; +} + +void XQContextImpl::setExternalContextNode(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node) +{ + // bump the document reference count, so that it will never reach zero... + incrementDocumentRefCount(XPath2Utils::getOwnerDoc(node)); + setContextItem(new NodeImpl(node, this)); +} + +void XQContextImpl::addCustomFunction(FuncFactory *func) +{ + _functionTable->insertFunction(func); +} + +void XQContextImpl::setContextSize(unsigned int size) +{ + _contextSize = size; +} + +void XQContextImpl::setContextPosition(unsigned int pos) +{ + _contextPosition = pos; +} + +Item::Ptr XQContextImpl::getContextItem() const +{ + return _contextItem; +} + +VariableStore* XQContextImpl::getVariableStore() +{ + return _varStore; +} + +VariableTypeStore* XQContextImpl::getVariableTypeStore() +{ + return _varTypeStore; +} + +unsigned int XQContextImpl::getContextSize() const +{ + return _contextSize; +} + +unsigned int XQContextImpl::getContextPosition() const +{ + return _contextPosition; +} + +XPath2MemoryManager* XQContextImpl::getMemoryManager() const +{ + return _memMgr; +} + +const XMLCh* XQContextImpl::getDefaultElementAndTypeNS() const +{ + return _defaultElementNS; +} + +void XQContextImpl::setDefaultElementAndTypeNS(const XMLCh* newNS) { + _defaultElementNS = newNS; +} + +void XQContextImpl::addCollation(Collation* collation) +{ + _collations.push_back(collation); +} + +void XQContextImpl::setDefaultCollation(const XMLCh* URI) +{ + _defaultCollation=getMemoryManager()->getPooledString(URI); +} + +Collation* XQContextImpl::getCollation(const XMLCh* URI, const LocationInfo *location) const +{ + if(!XERCES_CPP_NAMESPACE_QUALIFIER XMLUri::isValidURI(false, URI)) + { + const XMLCh* baseURI=getBaseURI(); + if(baseURI && *baseURI) + { + try + { + XERCES_CPP_NAMESPACE_QUALIFIER XMLUri base(baseURI, getMemoryManager()); + XERCES_CPP_NAMESPACE_QUALIFIER XMLUri full(&base, URI, getMemoryManager()); + URI = getMemoryManager()->getPooledString(full.getUriText()); + } + catch(XERCES_CPP_NAMESPACE_QUALIFIER XMLException &e) + { + //if can't build, assume it's because there was an invalid base URI, so use the original URI + } + } + } + for(std::vector >::const_iterator it= _collations.begin(); it!=_collations.end(); ++it) + if(XPath2Utils::equals((*it)->getCollationName(), URI)) + return (*it); + const XMLCh* msg = XPath2Utils::concatStrings(X("The requested collation ('"), URI, X("') is not defined [err:FOCH0002]"), getMemoryManager()); + + XQThrow3(ContextException, X("XQContextImpl::getCollation"), msg, location); + return NULL; +} + +Collation* XQContextImpl::getDefaultCollation(const LocationInfo *location) const +{ + return getCollation(_defaultCollation, location); +} + +ASTNode* XQContextImpl::lookUpFunction(const XMLCh* prefix, const XMLCh* name, VectorOfASTNodes& v, + const LocationInfo *location) const +{ + const XMLCh* uri; + + //look at default namespace + if(prefix == 0) { + uri = getDefaultFuncNS(); + } + else { + uri = getUriBoundToPrefix(prefix, location); + + //not bound to anything - error + if(uri == 0) { + const XMLCh* msg = XPath2Utils::concatStrings(X("The prefix '"), prefix , X("' is not bound to a uri in the current context"), getMemoryManager()); + XQThrow3(NamespaceLookupException, X("XQContextImpl::lookUpFunction"), msg, location); + } + } + + ASTNode* functionImpl=_functionTable->lookUpFunction(uri, name, v, getMemoryManager()); + + if(functionImpl == NULL && v.size() == 1) { + // maybe it's not a function, but a datatype + try { + bool isPrimitive; + _itemFactory->getPrimitiveTypeIndex(uri, name, isPrimitive); + functionImpl = new (getMemoryManager()) + FunctionConstructor(uri, name, v, getMemoryManager()); + } + catch(TypeNotFoundException&) { + // ignore this exception: it means the type has not been found + } + } + return functionImpl; +} + +XERCES_CPP_NAMESPACE::DOMDocument *XQContextImpl::createNewDocument() const +{ + return new (getMemoryManager()) XPathDocumentImpl(getMemoryManager()); +} + +void XQContextImpl::releaseDocument(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc) const +{ + doc->release(); +} + +void XQContextImpl::setXMLEntityResolver(XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* const handler) +{ + _docCache->setXMLEntityResolver(handler); +} + +XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* XQContextImpl::getXMLEntityResolver() const +{ + return _docCache->getXMLEntityResolver(); +} + +void XQContextImpl::registerURIResolver(URIResolver *resolver) +{ + if(resolver != 0) { + _resolvers.push_back(resolver); + } +} + +Sequence XQContextImpl::resolveDocument(const XMLCh* uri, const LocationInfo *location) +{ + Sequence result(getMemoryManager()); + + // Check the URIResolver objects + bool found = false; + std::vector >::reverse_iterator end = _resolvers.rend(); + for(std::vector >::reverse_iterator i = _resolvers.rbegin(); + !found && i != end; ++i) { + found = (*i)->resolveDocument(result, uri, this); + } + + if(!found) { + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc = 0; + + // Resolve the uri against the base uri + const XMLCh *systemId = uri; + XERCES_CPP_NAMESPACE_QUALIFIER XMLURL urlTmp(&_internalMM); + if(urlTmp.setURL(getBaseURI(), uri, urlTmp)) { + systemId = _internalMM.getPooledString(urlTmp.getURLText()); + } + + // Check in the cache + doc = retrieveDocument(systemId); + + // Check to see if we can locate and parse the document + if(!doc) { + try { + doc = _docCache->loadXMLDocument(uri, this); + storeDocument(systemId, doc); + } + catch(const XMLParseException& e) { + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer errMsg; + errMsg.set(X("Error parsing resource: ")); + errMsg.append(uri); + errMsg.append(X(". Error message: ")); + errMsg.append(e.getError()); + errMsg.append(X(" [err:FODC0002]")); + XQThrow3(XMLParseException,X("XQContextImpl::resolveDocument"), errMsg.getRawBuffer(), location); + } + } + + if(doc) { + result.addItem(new NodeImpl(doc, this)); + } + else { + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer errMsg; + errMsg.set(X("Error retrieving resource: ")); + errMsg.append(uri); + errMsg.append(X(" [err:FODC0002]")); + XQThrow3(XMLParseException,X("XQContextImpl::resolveDocument"), errMsg.getRawBuffer(), location); + } + } + + return result; +} + +Sequence XQContextImpl::resolveCollection(const XMLCh* uri, const LocationInfo *location) +{ + Sequence result(getMemoryManager()); + + // Check the URIResolver objects + bool found = false; + std::vector >::reverse_iterator end = _resolvers.rend(); + for(std::vector >::reverse_iterator i = _resolvers.rbegin(); + !found && i != end; ++i) { + found = (*i)->resolveCollection(result, uri, this); + } + + if(!found) { + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc = 0; + + // Resolve the uri against the base uri + const XMLCh *systemId = uri; + XERCES_CPP_NAMESPACE_QUALIFIER XMLURL urlTmp(&_internalMM); + if(urlTmp.setURL(getBaseURI(), uri, urlTmp)) { + systemId = _internalMM.getPooledString(urlTmp.getURLText()); + } + + // Check in the cache + doc = retrieveDocument(systemId); + + // Check to see if we can locate and parse the document + if(!doc) { + try { + doc = _docCache->loadXMLDocument(uri, this); + storeDocument(systemId, doc); + } + catch(const XMLParseException& e) { + doc = 0; + } + } + + if(doc) { + result.addItem(new NodeImpl(doc, this)); + } + else { + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer errMsg; + errMsg.set(X("Error retrieving resource: ")); + errMsg.append(uri); + errMsg.append(X(" [err:FODC0004]")); + XQThrow3(XMLParseException,X("XQContextImpl::resolveCollection"), errMsg.getRawBuffer(), location); + } + } + + return result; +} + +Sequence XQContextImpl::resolveDefaultCollection() +{ + Sequence result(getMemoryManager()); + std::vector >::reverse_iterator end = _resolvers.rend(); + for(std::vector >::reverse_iterator i = _resolvers.rbegin(); i != end; ++i) { + if((*i)->resolveDefaultCollection(result, this)) { + break; + } + } + return result; +} + +void XQContextImpl::setModuleResolver(ModuleResolver *resolver) +{ + _moduleResolver=resolver; +} + +ModuleResolver * XQContextImpl::getModuleResolver() const +{ + return _moduleResolver; +} + +VectorOfStrings* XQContextImpl::resolveModuleURI(const XMLCh* uri) const +{ + VectorOfStrings* vect=new (getMemoryManager()) VectorOfStrings(XQillaAllocator(getMemoryManager())); + _moduleResolver->resolveModuleLocation(vect, uri, this); + return vect; +} + +/* + * returns true if the type represented by uri:typename is an instance of uriToCheck:typeNameToCheck + * + * ie: to check + * xs:integer instance of xs:decimal, + * call + * isTypeOrDerivedFromType("xs", "integer", "xs", "decimal") + * (except of course, call with URIs, not prefixes!) + */ +bool XQContextImpl::isTypeOrDerivedFromType(const XMLCh* uri, const XMLCh* typeName, const XMLCh* uriToCheck, const XMLCh* typeNameToCheck) const +{ + return _docCache->isTypeOrDerivedFromType(uri,typeName,uriToCheck,typeNameToCheck); +} + +void XQContextImpl::addSchemaLocation(const XMLCh* uri, VectorOfStrings* locations) +{ + _docCache->addSchemaLocation(uri, locations, this); +} + +const DocumentCache* XQContextImpl::getDocumentCache() const +{ + return _docCache; +} + +void XQContextImpl::setDocumentCache(DocumentCache* docCache) +{ + _docCache = docCache; +} + +Node::Ptr XQContextImpl::validate(const Node::Ptr &node, DocumentCache::ValidationMode valMode) +{ + return _docCache->validate(node, valMode, this); +} + +ItemFactory *XQContextImpl::getItemFactory() const +{ + return _itemFactory; +} + +void XQContextImpl::setItemFactory(ItemFactory *factory) +{ + _itemFactory = factory; +} + +void XQContextImpl::trace(const XMLCh* message1, const XMLCh* message2) { + char* msg1=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::transcode(message1); + char* msg2=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::transcode(message2); + std::cerr << msg1 << " " << msg2 << std::endl; + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::release(&msg1); + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::release(&msg2); +} diff --git a/src/context/impl/XQDynamicContextImpl.cpp b/src/context/impl/XQDynamicContextImpl.cpp new file mode 100644 index 00000000..c925e854 --- /dev/null +++ b/src/context/impl/XQDynamicContextImpl.cpp @@ -0,0 +1,521 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQDynamicContextImpl.cpp,v 1.26 2006/11/01 16:37:18 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQContext.cpp: implementation of the XQContext class. +////////////////////////////////////////////////////////////////////// + +#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 "../../dom-api/impl/XPathDocumentImpl.hpp" + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +XQDynamicContextImpl::XQDynamicContextImpl(const StaticContext *staticContext, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr) + : _staticContext(staticContext), + _createdWith(memMgr), + _internalMM(memMgr), + _nsResolver(staticContext->getNSResolver()), + _defaultCollation(0), + _defaultElementNS(staticContext->getDefaultElementAndTypeNS()), + _contextItem(0), + _contextPosition(1), + _contextSize(1), + _implicitTimezone(0), + _resolvers(XQillaAllocator(&_internalMM)), + _docCache(staticContext->getDocumentCache()->createDerivedCache(&_internalMM)), + _documentMap(3,false,&_internalMM), + _uriMap(3,false, new (&_internalMM) XERCES_CPP_NAMESPACE_QUALIFIER HashPtr(), &_internalMM) +{ + time(&_currentTime); + _memMgr = &_internalMM; + _firstDocRefCount=new (&_internalMM) DocRefCount(); + _varStore = _internalMM.createVariableStore(); + _itemFactory = new (&_internalMM) ItemFactoryImpl(_docCache, &_internalMM); + + m_pDebugCallback = NULL; + m_bEnableDebugging = false; +} + +XQDynamicContextImpl::~XQDynamicContextImpl() +{ + _contextItem = 0; + _implicitTimezone = 0; + + delete _varStore; + delete _itemFactory; + + DocRefCount *drc; + while(_firstDocRefCount != 0) { + drc = _firstDocRefCount; + _firstDocRefCount = _firstDocRefCount->next; + _internalMM.deallocate(drc); + } +} + +DynamicContext *XQDynamicContextImpl::createModuleContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr) const +{ + return _staticContext->createModuleContext(memMgr); +} + +DynamicContext *XQDynamicContextImpl::createDynamicContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr) const +{ + return _staticContext->createDynamicContext(memMgr); +} + +void XQDynamicContextImpl::setMemoryManager(XPath2MemoryManager* memMgr) +{ + _memMgr = memMgr; +} + +void XQDynamicContextImpl::setDebugCallback(XQDebugCallback* callback) +{ + m_pDebugCallback=callback; +} + +XQDebugCallback* XQDynamicContextImpl::getDebugCallback() const +{ + return m_pDebugCallback; +} + +void XQDynamicContextImpl::enableDebugging(bool enable/*=true*/) +{ + m_bEnableDebugging=enable; +} + +bool XQDynamicContextImpl::isDebuggingEnabled() const +{ + return m_bEnableDebugging; +} + +void XQDynamicContextImpl::incrementDocumentRefCount(const XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* document) const +{ + assert(document != 0); + + XQDynamicContextImpl* me=const_cast(this); + + DocRefCount *found = _firstDocRefCount; + while(found->doc != 0 && found->doc != document) { + found = found->next; + } + + if(found->doc == 0) { + found->doc = document; + found->next = new (&me->_internalMM) DocRefCount(); + } + else { + ++found->ref_count; + } +} + +void XQDynamicContextImpl::decrementDocumentRefCount(const XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* document) const +{ + assert(document != 0); + + XQDynamicContextImpl* me=const_cast(this); + + DocRefCount *prev = 0; + DocRefCount *found = _firstDocRefCount; + while(found->doc != 0 && found->doc != document) { + prev = found; + found = found->next; + } + + if(found->doc != 0) { + if(--found->ref_count == 0) { + if(prev == 0) { + me->_firstDocRefCount = found->next; + } + else { + prev->next = found->next; + } + me->_internalMM.deallocate(found); + XMLCh *uri = me->_uriMap.get((void*)document); + if(uri != 0) { + me->_uriMap.removeKey((void*)document); + me->_documentMap.removeKey((void*)uri); + } + releaseDocument(const_cast(document)); + } + } +} + +XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* XQDynamicContextImpl::retrieveDocument(const XMLCh* uri) +{ + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc = _documentMap.get((void*)uri); + return doc; +} + +void XQDynamicContextImpl::storeDocument(const XMLCh* uri, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* document) +{ + uri=_internalMM.getPooledString(uri); + _documentMap.put((void*)uri, document); + _uriMap.put((void*)document, const_cast(uri)); +} + +void XQDynamicContextImpl::clearDynamicContext() +{ + _nsResolver = _staticContext->getNSResolver(); + _contextItem = 0; + _contextSize = 1; + _contextPosition = 1; + _varStore->clear(); + _implicitTimezone = 0; + _resolvers.clear(); + _documentMap.removeAll(); + _uriMap.removeAll(); + time(&_currentTime); +} + +const DocumentCache *XQDynamicContextImpl::getDocumentCache() const +{ + return _docCache; +} + +void XQDynamicContextImpl::setDocumentCache(DocumentCache* docCache) +{ + _docCache=docCache; +} + +void XQDynamicContextImpl::setContextItem(const Item::Ptr &item) +{ + _contextItem = item; +} + +void XQDynamicContextImpl::setExternalContextNode(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node) +{ + // bump the document reference count, so that it will never reach zero... + incrementDocumentRefCount(XPath2Utils::getOwnerDoc(node)); + setContextItem(new NodeImpl(node, this)); +} + +void XQDynamicContextImpl::setContextSize(unsigned int size) +{ + _contextSize = size; +} + +void XQDynamicContextImpl::setContextPosition(unsigned int pos) +{ + _contextPosition = pos; +} + +Item::Ptr XQDynamicContextImpl::getContextItem() const +{ + return _contextItem; +} + +unsigned int XQDynamicContextImpl::getContextSize() const +{ + return _contextSize; +} + +unsigned int XQDynamicContextImpl::getContextPosition() const +{ + return _contextPosition; +} + +VariableStore* XQDynamicContextImpl::getVariableStore() +{ + return _varStore; +} + +time_t XQDynamicContextImpl::getCurrentTime() const +{ + return _currentTime; +} + +void XQDynamicContextImpl::setCurrentTime(time_t newTime) +{ + _currentTime=newTime; +} + +ATDurationOrDerived::Ptr XQDynamicContextImpl::getImplicitTimezone() const { + if(_implicitTimezone == NULLRCP) { + // validate tzone + Timezone tzone(ContextUtils::getTimezone()); + // c-style the const away since we are in a const method + ((XQDynamicContextImpl*)this)->_implicitTimezone = tzone.asDayTimeDuration(this); +} + + return _implicitTimezone; +} + +void XQDynamicContextImpl::setImplicitTimezone(const ATDurationOrDerived::Ptr &timezoneAsDuration) { + // validate the timezone -- will trow if invalid + Timezone timezone(timezoneAsDuration, this); + this->_implicitTimezone = timezoneAsDuration; +} + +XPath2MemoryManager* XQDynamicContextImpl::getMemoryManager() const +{ + return _memMgr; +} + +const XMLCh* XQDynamicContextImpl::getDefaultElementAndTypeNS() const +{ + return _defaultElementNS; +} + +void XQDynamicContextImpl::setDefaultElementAndTypeNS(const XMLCh* newNS) { + _defaultElementNS = newNS; +} + +XERCES_CPP_NAMESPACE::DOMDocument *XQDynamicContextImpl::createNewDocument() const +{ + return new (getMemoryManager()) XPathDocumentImpl(getMemoryManager()); +} + +void XQDynamicContextImpl::releaseDocument(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc) const +{ + doc->release(); +} + +void XQDynamicContextImpl::registerURIResolver(URIResolver *resolver) +{ + if(resolver != 0) { + _resolvers.push_back(resolver); + } +} + +Sequence XQDynamicContextImpl::resolveDocument(const XMLCh* uri, const LocationInfo *location) +{ + Sequence result(getMemoryManager()); + + // Check the URIResolver objects + bool found = false; + std::vector >::reverse_iterator end = _resolvers.rend(); + for(std::vector >::reverse_iterator i = _resolvers.rbegin(); + !found && i != end; ++i) { + found = (*i)->resolveDocument(result, uri, this); + } + + if(!found) { + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc = 0; + + // Resolve the uri against the base uri + const XMLCh *systemId = uri; + XERCES_CPP_NAMESPACE_QUALIFIER XMLURL urlTmp(&_internalMM); + if(urlTmp.setURL(getBaseURI(), uri, urlTmp)) { + systemId = _internalMM.getPooledString(urlTmp.getURLText()); + } + + // Check in the cache + doc = retrieveDocument(systemId); + + // Check to see if we can locate and parse the document + if(!doc) { + try { + doc = _docCache->loadXMLDocument(uri, this); + storeDocument(systemId, doc); + } + catch(const XMLParseException& e) { + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer errMsg; + errMsg.set(X("Error parsing resource: ")); + errMsg.append(uri); + errMsg.append(X(". Error message: ")); + errMsg.append(e.getError()); + errMsg.append(X(" [err:FODC0002]")); + XQThrow3(XMLParseException,X("XQDynamicContextImpl::resolveDocument"), errMsg.getRawBuffer(), location); + } + } + + if(doc) { + result.addItem(new NodeImpl(doc, this)); + } + else { + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer errMsg; + errMsg.set(X("Error retrieving resource: ")); + errMsg.append(uri); + errMsg.append(X(" [err:FODC0002]")); + XQThrow3(XMLParseException,X("XQDynamicContextImpl::resolveDocument"), errMsg.getRawBuffer(), location); + } + } + + return result; +} + +Sequence XQDynamicContextImpl::resolveCollection(const XMLCh* uri, const LocationInfo *location) +{ + Sequence result(getMemoryManager()); + + // Check the URIResolver objects + bool found = false; + std::vector >::reverse_iterator end = _resolvers.rend(); + for(std::vector >::reverse_iterator i = _resolvers.rbegin(); + !found && i != end; ++i) { + found = (*i)->resolveCollection(result, uri, this); + } + + if(!found) { + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc = 0; + + // Resolve the uri against the base uri + const XMLCh *systemId = uri; + XERCES_CPP_NAMESPACE_QUALIFIER XMLURL urlTmp(&_internalMM); + if(urlTmp.setURL(getBaseURI(), uri, urlTmp)) { + systemId = _internalMM.getPooledString(urlTmp.getURLText()); + } + + // Check in the cache + doc = retrieveDocument(systemId); + + // Check to see if we can locate and parse the document + if(!doc) { + try { + doc = _docCache->loadXMLDocument(uri, this); + storeDocument(systemId, doc); + } + catch(const XMLParseException& e) { + doc = 0; + } + } + + if(doc) { + result.addItem(new NodeImpl(doc, this)); + } + else { + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer errMsg; + errMsg.set(X("Error retrieving resource: ")); + errMsg.append(uri); + errMsg.append(X(" [err:FODC0004]")); + XQThrow3(XMLParseException,X("XQDynamicContextImpl::resolveCollection"), errMsg.getRawBuffer(), location); + } + } + + return result; +} + +Sequence XQDynamicContextImpl::resolveDefaultCollection() +{ + Sequence result(getMemoryManager()); + std::vector >::reverse_iterator end = _resolvers.rend(); + for(std::vector >::reverse_iterator i = _resolvers.rbegin(); i != end; ++i) { + if((*i)->resolveDefaultCollection(result, this)) { + break; + } + } + return result; +} + +VectorOfStrings* XQDynamicContextImpl::resolveModuleURI(const XMLCh* uri) const +{ + return _staticContext->resolveModuleURI(uri); +} + +Node::Ptr XQDynamicContextImpl::validate(const Node::Ptr &node, DocumentCache::ValidationMode valMode) +{ + return _docCache->validate(node, valMode, this); +} + +ItemFactory *XQDynamicContextImpl::getItemFactory() const +{ + return _itemFactory; +} + +void XQDynamicContextImpl::setItemFactory(ItemFactory *factory) +{ + _itemFactory = factory; +} + +void XQDynamicContextImpl::trace(const XMLCh* message1, const XMLCh* message2) { + char* msg1=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::transcode(message1); + char* msg2=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::transcode(message2); + std::cerr << msg1 << " " << msg2 << std::endl; + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::release(&msg1); + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::release(&msg2); +} + +void XQDynamicContextImpl::setNamespaceBinding(const XMLCh* prefix, const XMLCh* uri) +{ + ((XQillaNSResolverImpl*)_nsResolver)->addNamespaceBinding(prefix,uri); +} + +void XQDynamicContextImpl::setNSResolver(const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* resolver) { + _nsResolver = resolver; +} + +const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* XQDynamicContextImpl::getNSResolver() const { + return _nsResolver; +} + +const XMLCh* XQDynamicContextImpl::getUriBoundToPrefix(const XMLCh* prefix, const LocationInfo *location) const +{ + const XMLCh* uri = _nsResolver->lookupNamespaceURI(prefix); + + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(uri) == 0 && XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(prefix) > 0){ + const XMLCh* msg = XPath2Utils::concatStrings(X("No namespace for prefix \'"), prefix, X("\' [err:XPST0081]"), getMemoryManager()); + XQThrow3(NamespaceLookupException, X("XQDynamicContextImpl::getUriBoundToPrefix"), msg, location); + } + + return uri; +} + +const XMLCh* XQDynamicContextImpl::getPrefixBoundToUri(const XMLCh* uri) const +{ + return _nsResolver->lookupPrefix(uri); +} + +void XQDynamicContextImpl::setXMLEntityResolver(XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* const handler) +{ + _docCache->setXMLEntityResolver(handler); +} + +XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* XQDynamicContextImpl::getXMLEntityResolver() const +{ + return _docCache->getXMLEntityResolver(); +} + +void XQDynamicContextImpl::setDefaultCollation(const XMLCh* URI) +{ + _defaultCollation=getMemoryManager()->getPooledString(URI); +} + +Collation* XQDynamicContextImpl::getDefaultCollation(const LocationInfo *location) const +{ + if(_defaultCollation == 0) { + return _staticContext->getDefaultCollation(location); + } + else { + return getCollation(_defaultCollation, location); + } +} diff --git a/src/context/impl/XQRemoteDebugger.cpp b/src/context/impl/XQRemoteDebugger.cpp new file mode 100644 index 00000000..3803576a --- /dev/null +++ b/src/context/impl/XQRemoteDebugger.cpp @@ -0,0 +1,946 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQRemoteDebugger.cpp,v 1.15.2.1 2006/12/08 15:19:12 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQRemoteDebugger.cpp: implementation of the XQRemoteDebugger class. +////////////////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +static const XMLCh gHTTPString[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chColon, XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, + XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +static const XMLCh gSlash[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +const XMLCh XQRemoteDebugger::g_szHandshake[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +const XMLCh XQRemoteDebugger::g_szBreakpoint[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_B, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_k, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +const XMLCh XQRemoteDebugger::g_szEnterFunction[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_F, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +const XMLCh XQRemoteDebugger::g_szExitFunction[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_F, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +const XMLCh XQRemoteDebugger::g_szError[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +const XMLCh XQRemoteDebugger::g_szQueryText[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_q, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_y, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +const XMLCh XQRemoteDebugger::g_szResult[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +const XMLCh XQRemoteDebugger::g_szVariables[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_v, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_b, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +const XMLCh XQRemoteDebugger::g_szExpression[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +const XMLCh XQRemoteDebugger::g_szFile[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +const XMLCh XQRemoteDebugger::g_szLine[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +const XMLCh XQRemoteDebugger::g_szColumn[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +const XMLCh XQRemoteDebugger::g_szFunction[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +const XMLCh XQRemoteDebugger::g_szSessionId[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_I, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +const XMLCh XQRemoteDebugger::g_szQuit[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_q, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +const XMLCh XQRemoteDebugger::g_szMessage[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +const XMLCh XQRemoteDebugger::g_szText[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +XQRemoteDebugger::XQRemoteDebugger(const XMLCh* lpchHostName, XPath2MemoryManager* memMgr) : + m_filePool(7, memMgr), + m_szSessionId(NULL), + m_bEnableComm(true), + m_szLastFileSeen(NULL), + m_nLastLineSeen(0), + m_urlBuffer(1023,memMgr), + m_messageBuffer(24*1024, memMgr), + m_messageFormatter("utf-8", &m_messageBuffer, XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes, XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::UnRep_CharRef, memMgr), + m_pMemMgr(memMgr) +{ + m_szHostName=XPath2Utils::concatStrings(gHTTPString,lpchHostName,gSlash,m_pMemMgr); + // force an exception if the host name is not a valid URL + XERCES_CPP_NAMESPACE_QUALIFIER XMLURL query(m_szHostName); + + // throw an exception also if there is no support for HTTP client + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgNetAccessor==NULL) + XQSimpleThrow(X("Xerces-C++ has not been compiled with HTTP support"),NULL,0,0); + + m_backMappingInfo=new (memMgr) XERCES_CPP_NAMESPACE_QUALIFIER ValueHashTableOf(197, new (memMgr) XERCES_CPP_NAMESPACE_QUALIFIER HashPtr(), memMgr); +} + +XQRemoteDebugger::~XQRemoteDebugger() +{ +} + +void XQRemoteDebugger::SendNotification(DynamicContext* context, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer& command, const char* postData/*=NULL*/) +{ + if(m_szSessionId==NULL) + { + try + { + XERCES_CPP_NAMESPACE_QUALIFIER XMLURL query(m_szHostName, g_szHandshake); + XERCES_CPP_NAMESPACE_QUALIFIER BinInputStream* answer=query.makeNewStream(); + XERCES_CPP_NAMESPACE_QUALIFIER Janitor janStream(answer); + XMLByte sessId[20]; + unsigned int recvd=answer->readBytes(sessId,19); + sessId[recvd]=0; + // check if the debugger refuses us + if(recvd==0 || strcmp((const char*)sessId,"\r\n")==0) + { + m_bEnableComm=false; + return; + } + m_szSessionId=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::transcode((const char*)sessId,m_pMemMgr); + } + catch(XERCES_CPP_NAMESPACE_QUALIFIER MalformedURLException&) + { + } + catch(XERCES_CPP_NAMESPACE_QUALIFIER NetAccessorException&) + { + // if we cannot establish a connection now, just give up (maybe the server has not been started) + m_bEnableComm=false; + return; + } + } + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::indexOf(command.getRawBuffer(),XERCES_CPP_NAMESPACE_QUALIFIER chQuestion,0,m_pMemMgr)==-1) + command.append(XERCES_CPP_NAMESPACE_QUALIFIER chQuestion); + else + command.append(XERCES_CPP_NAMESPACE_QUALIFIER chAmpersand); + command.append(g_szSessionId); + command.append(XERCES_CPP_NAMESPACE_QUALIFIER chEqual); + command.append(m_szSessionId); + try + { + XERCES_CPP_NAMESPACE_QUALIFIER XMLURL query(m_szHostName, command.getRawBuffer()); + XERCES_CPP_NAMESPACE_QUALIFIER XMLNetHTTPInfo httpInfo; + char extraHeaders[40]="Content-Length: "; + if(postData!=NULL) + { + httpInfo.fHTTPMethod=XERCES_CPP_NAMESPACE_QUALIFIER XMLNetHTTPInfo::POST; + int postDataLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(postData); + char number[10]; + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::binToText(postDataLen,number,9,10,m_pMemMgr); + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::catString(extraHeaders,number); + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::catString(extraHeaders,"\r\n"); + httpInfo.fHeaders=extraHeaders; + httpInfo.fHeadersLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(extraHeaders); + httpInfo.fPayload=postData; + httpInfo.fPayloadLen=postDataLen; + } + XERCES_CPP_NAMESPACE_QUALIFIER BinInputStream* answer=XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgNetAccessor->makeNew(query,&httpInfo); + XERCES_CPP_NAMESPACE_QUALIFIER Janitor janStream(answer); + // Possible answers + // a) GO + // b) CONT + // b) STOP + // c) GET_VARIABLES_IN_SCOPE + // d) EVALUATE_EXPRESSION + XMLByte data[2048]; + unsigned int recvd=answer->readBytes(data,2047); + data[recvd]=0; + char* firstNL=strstr((char*)data,"\r\n"); + char* arguments=NULL; + if(firstNL) + { + *firstNL=0; + arguments=firstNL+2; + } + + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::equals((const char*)data,"GO")) + m_bEnableComm=false; + else if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::equals((const char*)data,"STOP")) + XQSimpleThrow(X("Debugging aborted"),m_szLastFileSeen,m_nLastLineSeen,0); + else if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::equals((const char*)data,"GET_VARIABLES_IN_SCOPE")) + { + VariableStore* varStore=context->getVariableStore(); + m_messageBuffer.reset(); + static const char* header=""; + static const unsigned int headerLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(header); + static const char* c1=""; + static const unsigned int c3Len=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(c3); + static const char* c4=""; + static const unsigned int c4Len=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(c4); + m_messageBuffer.writeChars((const XMLByte*)header,headerLen,&m_messageFormatter); + // always add the context item + m_messageBuffer.writeChars((const XMLByte*)c1,c1Len,&m_messageFormatter); + m_messageBuffer.writeChars((const XMLByte*)c2,c2Len,&m_messageFormatter); + m_messageBuffer.writeChars((const XMLByte*)".",1,&m_messageFormatter); + m_messageBuffer.writeChars((const XMLByte*)c3,c3Len,&m_messageFormatter); + const Item::Ptr ctx=context->getContextItem(); + if(ctx!=NULLRCP) + SerializeItem(context, ctx, false); + m_messageBuffer.writeChars((const XMLByte*)c4,c4Len,&m_messageFormatter); + // and now the local variables + std::vector< std::pair > vec=varStore->getVars(); + for(std::vector< std::pair >::iterator it=vec.begin();it!=vec.end();it++) + { + m_messageBuffer.writeChars((const XMLByte*)c1,c1Len,&m_messageFormatter); + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::AttrEscapes + << it->first + << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes; + m_messageBuffer.writeChars((const XMLByte*)c2,c2Len,&m_messageFormatter); + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::AttrEscapes + << it->second + << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes; + m_messageBuffer.writeChars((const XMLByte*)c3,c3Len,&m_messageFormatter); + std::pair varValue=context->getVariableStore()->getVar(it->first,it->second,context); + if(varValue.first) + SerializeSequence(context, varValue.second, false); + m_messageBuffer.writeChars((const XMLByte*)c4,c4Len,&m_messageFormatter); + } + static const char* footer=""; + static const unsigned int footerLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(footer); + m_messageBuffer.writeChars((const XMLByte*)footer,footerLen,&m_messageFormatter); + + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer cmd(50,m_pMemMgr); + cmd.set(g_szVariables); + SendNotification(context, cmd, (const char*)m_messageBuffer.getRawBuffer()); + } + else if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::equals((const char*)data,"EVALUATE_EXPRESSION")) + { + unsigned int argLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(arguments); + unsigned int unicodeQueryLen=argLen; + XMLCh* unicodeQuery=(XMLCh*)m_pMemMgr->allocate((argLen+1)*sizeof(XMLCh)); + unsigned int bytesEaten=0; + unsigned char* charSizes=(unsigned char*)m_pMemMgr->allocate(argLen); + const_cast(m_messageFormatter.getTranscoder())->transcodeFrom((const XMLByte*)arguments,argLen,unicodeQuery,unicodeQueryLen,bytesEaten,charSizes); + m_pMemMgr->deallocate(charSizes); + + m_messageBuffer.reset(); + bool oldDebuggingVal=context->isDebuggingEnabled(); + context->enableDebugging(false); + XQDebugCallback* oldDbgCallback=context->getDebugCallback(); + context->setDebugCallback(NULL); + + // the new query will try to access the VariableTypeStore to find the types of the variables; so we need to + // populate it with dummy values + context->getVariableTypeStore()->addLocalScope(); + + StaticResolutionContext dummy_src(context->getMemoryManager()); + std::vector< std::pair > vec=context->getVariableStore()->getVars(); + for(std::vector< std::pair >::iterator it=vec.begin();it!=vec.end();it++) + context->getVariableTypeStore()->declareVar(it->first, it->second, dummy_src); + + try + { + AutoDelete pQuery(XQilla::parse(unicodeQuery, XQilla::XQUERY, context)); + Sequence result=pQuery->execute(context)->toSequence(context); + + static const char* header=""; + static const unsigned int headerLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(header); + m_messageBuffer.writeChars((const XMLByte*)header,headerLen,&m_messageFormatter); + SerializeSequence(context, result, false); + static const char* footer=""; + static const unsigned int footerLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(footer); + m_messageBuffer.writeChars((const XMLByte*)footer,footerLen,&m_messageFormatter); + } + catch(XQException& e) + { + static const char* header=""; + static const unsigned int headerLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(header); + m_messageBuffer.writeChars((const XMLByte*)header,headerLen,&m_messageFormatter); + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::CharEscapes + << e.getError(); + static const char* footer=""; + static const unsigned int footerLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(footer); + m_messageBuffer.writeChars((const XMLByte*)footer,footerLen,&m_messageFormatter); + } + context->getVariableTypeStore()->removeScope(); + context->enableDebugging(oldDebuggingVal); + context->setDebugCallback(oldDbgCallback); + + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer cmd(500,m_pMemMgr); + cmd.set(g_szExpression); + cmd.append(XERCES_CPP_NAMESPACE_QUALIFIER chQuestion); + cmd.append(g_szText); + cmd.append(XERCES_CPP_NAMESPACE_QUALIFIER chEqual); + Encode(unicodeQuery,cmd); + + m_pMemMgr->deallocate(unicodeQuery); + + SendNotification(context, cmd, (const char*)m_messageBuffer.getRawBuffer()); + } + } + catch(XERCES_CPP_NAMESPACE_QUALIFIER MalformedURLException&) + { + } + catch(XERCES_CPP_NAMESPACE_QUALIFIER NetAccessorException&) + { + // we lost the connection, but let's keep trying... + } +} + +void XQRemoteDebugger::Encode(const XMLCh* data, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer& buffer) +{ + unsigned int len=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(data); + for(unsigned int index=0;indexcontainsKey(original)) + m_backMappingInfo->put((void*)clone, m_backMappingInfo->get(original,m_pMemMgr)); + + if(original->getNodeType()==XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ELEMENT_NODE) + { + const XERCES_CPP_NAMESPACE_QUALIFIER DOMElement* cloneElem=(const XERCES_CPP_NAMESPACE_QUALIFIER DOMElement*)clone; + const XERCES_CPP_NAMESPACE_QUALIFIER DOMElement* origElem=(const XERCES_CPP_NAMESPACE_QUALIFIER DOMElement*)original; + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNamedNodeMap* attrs=origElem->getAttributes(); + for(XMLSize_t i=0;igetLength();i++) + { + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* attr=attrs->item(i); + if(m_backMappingInfo->containsKey(attr)) + { + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* cloneAttr=cloneElem->getAttributeNode(attr->getNodeName()); + if(cloneAttr) m_backMappingInfo->put((void*)cloneAttr, m_backMappingInfo->get(attr,m_pMemMgr)); + } + } + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* cloneChild=cloneElem->getFirstChild(); + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* origChild=origElem->getFirstChild(); + while(cloneChild!= NULL && origChild!=NULL) + { + ReportClonedNode(context,origChild,cloneChild); + cloneChild=cloneChild->getNextSibling(); + origChild=origChild->getNextSibling(); + } + } +} + +void XQRemoteDebugger::ReportResult(DynamicContext* context, const XMLCh* file, unsigned int nLine, unsigned int nColumn, Sequence& result) +{ + if(!m_bEnableComm) + return; + unsigned int fileID=m_filePool.addOrFind(file); + unsigned int location= (nLine & 0x00FFFFFF) | (fileID << 24); + for(Sequence::iterator it=result.begin();it!=result.end();it++) + { + Item::Ptr data=(*it); + if(data==NULLRCP) + continue; + // special case for nodes: associate the info to the underlying DOMNode object + if(data->isNode()) + { + const NodeImpl *nodeImpl = (const NodeImpl*)data->getInterface(Item::gXQilla); + if(nodeImpl == 0) { + m_backMappingInfo->put((void*)(const Item*)data, location); + } + else { + const XERCES_CPP_NAMESPACE::DOMNode* node = nodeImpl->getDOMNode(); + if(node!=NULL) + m_backMappingInfo->put((void*)node, location); + } + } + else + m_backMappingInfo->put((void*)(const Item*)data, location); + } +} + +void XQRemoteDebugger::ReportFirstError(DynamicContext* context, const XMLCh* error, const XMLCh* file, unsigned int nLine) +{ + if(!m_bEnableComm) + return; + XMLCh tmpBuff[21]; + m_urlBuffer.reset(); + m_urlBuffer.set(g_szError); + m_urlBuffer.append(XERCES_CPP_NAMESPACE_QUALIFIER chQuestion); + m_urlBuffer.append(g_szFile); + m_urlBuffer.append(XERCES_CPP_NAMESPACE_QUALIFIER chEqual); + Encode(file,m_urlBuffer); + m_urlBuffer.append(XERCES_CPP_NAMESPACE_QUALIFIER chAmpersand); + m_urlBuffer.append(g_szLine); + m_urlBuffer.append(XERCES_CPP_NAMESPACE_QUALIFIER chEqual); + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::binToText(nLine,tmpBuff,20,10,m_pMemMgr); + m_urlBuffer.append(tmpBuff); + m_urlBuffer.append(XERCES_CPP_NAMESPACE_QUALIFIER chAmpersand); + m_urlBuffer.append(g_szMessage); + m_urlBuffer.append(XERCES_CPP_NAMESPACE_QUALIFIER chEqual); + Encode(error,m_urlBuffer); + SendNotification(context,m_urlBuffer); +} + +void XQRemoteDebugger::NotifyQueryBegin(DynamicContext* context, const XMLCh* query) +{ + if(!m_bEnableComm) + return; + m_urlBuffer.reset(); + m_urlBuffer.set(g_szQueryText); + + unsigned int queryLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(query); + // let's start with an optimistic buffer, and grow it if necessary + unsigned int bufferLen=queryLen+1; + XMLByte* buffer=NULL; + while(true) + { + buffer=(XMLByte*)m_pMemMgr->allocate(bufferLen); + unsigned int charsEaten=0; + const_cast(m_messageFormatter.getTranscoder())->transcodeTo(query,queryLen,buffer,bufferLen,charsEaten,XERCES_CPP_NAMESPACE_QUALIFIER XMLTranscoder::UnRep_RepChar); + if(charsEaten==queryLen) + break; + m_pMemMgr->deallocate(buffer); + bufferLen*=2; + } + SendNotification(context,m_urlBuffer, (const char*)buffer); + m_pMemMgr->deallocate(buffer); +} + +void XQRemoteDebugger::NotifyQueryEnd(DynamicContext* context, Sequence& result) +{ + if(!m_bEnableComm) + return; + + m_urlBuffer.reset(); + m_urlBuffer.set(g_szResult); + + m_messageBuffer.reset(); + static const char* header=""; + static const unsigned int headerLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(header); + m_messageBuffer.writeChars((const XMLByte*)header,headerLen,&m_messageFormatter); + SerializeSequence(context, result, true); + static const char* footer=""; + static const unsigned int footerLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(footer); + m_messageBuffer.writeChars((const XMLByte*)footer,footerLen,&m_messageFormatter); + + SendNotification(context,m_urlBuffer, (const char*)m_messageBuffer.getRawBuffer()); +} + +void XQRemoteDebugger::SerializeItem(DynamicContext* context, const Item::Ptr item, bool bAddBackMapInfo) +{ + static const char* header="isNode()) + { + static const char* c4=" type=\"node\" subtype=\""; + static const unsigned int c4Len=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(c4); + static const char* c5="\">"; + static const unsigned int c5Len=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(c5); + m_messageBuffer.writeChars((const XMLByte*)c4,c4Len,&m_messageFormatter); + + Node::Ptr node=(Node::Ptr)item; + if(node->dmNodeKind() == Node::text_string) + { + static const char* c="text"; + static const unsigned int cLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(c); + m_messageBuffer.writeChars((const XMLByte*)c,cLen,&m_messageFormatter); + m_messageBuffer.writeChars((const XMLByte*)c5,c5Len,&m_messageFormatter); + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::CharEscapes + << node->dmStringValue(context); + } + else if(node->dmNodeKind() == Node::processing_instruction_string) + { + static const char* c="pi\" name=\""; + static const unsigned int cLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(c); + m_messageBuffer.writeChars((const XMLByte*)c,cLen,&m_messageFormatter); + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::AttrEscapes + << node->dmNodeName(context)->asString(context) + << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes; + m_messageBuffer.writeChars((const XMLByte*)c5,c5Len,&m_messageFormatter); + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::CharEscapes + << node->dmStringValue(context); + } + else if(node->dmNodeKind() == Node::document_string) + { + static const char* c="document"; + static const unsigned int cLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(c); + m_messageBuffer.writeChars((const XMLByte*)c,cLen,&m_messageFormatter); + m_messageBuffer.writeChars((const XMLByte*)c5,c5Len,&m_messageFormatter); + SerializeNode(context, node, bAddBackMapInfo); + } +// case XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::DOCUMENT_FRAGMENT_NODE: +// { +// static const char* c="fragment"; +// static const unsigned int cLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(c); +// m_messageBuffer.writeChars((const XMLByte*)c,cLen,&m_messageFormatter); +// m_messageBuffer.writeChars((const XMLByte*)c5,c5Len,&m_messageFormatter); +// SerializeNode(node, bAddBackMapInfo); +// } +// break; + else if(node->dmNodeKind() == Node::element_string) + { + static const char* c="element"; + static const unsigned int cLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(c); + m_messageBuffer.writeChars((const XMLByte*)c,cLen,&m_messageFormatter); + m_messageBuffer.writeChars((const XMLByte*)c5,c5Len,&m_messageFormatter); + SerializeNode(context, node, bAddBackMapInfo); + } + else if(node->dmNodeKind() == Node::attribute_string) + { + static const char* c="attribute\" name=\""; + static const unsigned int cLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(c); + m_messageBuffer.writeChars((const XMLByte*)c,cLen,&m_messageFormatter); + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::AttrEscapes + << node->dmNodeName(context)->asString(context) + << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes; + m_messageBuffer.writeChars((const XMLByte*)c5,c5Len,&m_messageFormatter); + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::CharEscapes + << node->dmStringValue(context); + } +// case XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::CDATA_SECTION_NODE: +// { +// static const char* c="cdata"; +// static const unsigned int cLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(c); +// m_messageBuffer.writeChars((const XMLByte*)c,cLen,&m_messageFormatter); +// m_messageBuffer.writeChars((const XMLByte*)c5,c5Len,&m_messageFormatter); +// m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::CharEscapes +// << node->getNodeValue(); +// } +// break; + else if(node->dmNodeKind() == Node::comment_string) + { + static const char* c="comment"; + static const unsigned int cLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(c); + m_messageBuffer.writeChars((const XMLByte*)c,cLen,&m_messageFormatter); + m_messageBuffer.writeChars((const XMLByte*)c5,c5Len,&m_messageFormatter); + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::CharEscapes + << node->dmStringValue(context); + } + else + { + static const char* c="unknown"; + static const unsigned int cLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(c); + m_messageBuffer.writeChars((const XMLByte*)c,cLen,&m_messageFormatter); + m_messageBuffer.writeChars((const XMLByte*)c5,c5Len,&m_messageFormatter); + } + } + else + { + if(bAddBackMapInfo && m_backMappingInfo->containsKey((void*)(const Item*)item)) + { + static const char* c1=" xqe:backMapFile=\""; + static const unsigned int c1Len=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(c1); + static const char* c2="\" xqe:backMapLine=\""; + static const unsigned int c2Len=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(c2); + static const char* c3="\""; + static const unsigned int c3Len=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(c3); + unsigned int location=m_backMappingInfo->get((void*)(const Item*)item,m_pMemMgr); + unsigned int nLine = (location & 0x00FFFFFF); + unsigned int fileID= location >> 24; + const XMLCh* fileName = m_filePool.getValueForId(fileID); + m_messageBuffer.writeChars((const XMLByte*)c1,c1Len,&m_messageFormatter); + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::AttrEscapes + << fileName + << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes; + m_messageBuffer.writeChars((const XMLByte*)c2,c2Len,&m_messageFormatter); + XMLCh tmpBuff[21]; + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::binToText(nLine,tmpBuff,20,10,m_pMemMgr); + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::AttrEscapes + << tmpBuff + << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes; + m_messageBuffer.writeChars((const XMLByte*)c3,c3Len,&m_messageFormatter); + } + static const char* c4=" type=\"atomic\""; + static const unsigned int c4Len=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(c4); + m_messageBuffer.writeChars((const XMLByte*)c4,c4Len,&m_messageFormatter); + const AnyAtomicType::Ptr atom=(const AnyAtomicType::Ptr)item; + static const char* c5=" namespaceURI=\""; + static const unsigned int c5Len=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(c5); + m_messageBuffer.writeChars((const XMLByte*)c5,c5Len,&m_messageFormatter); + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::AttrEscapes + << atom->getTypeURI() + << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes; + static const char* c6="\" typeName=\""; + static const unsigned int c6Len=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(c6); + m_messageBuffer.writeChars((const XMLByte*)c6,c6Len,&m_messageFormatter); + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::AttrEscapes + << atom->getTypeName() + << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes; + static const char* c7="\">"; + static const unsigned int c7Len=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(c7); + m_messageBuffer.writeChars((const XMLByte*)c7,c7Len,&m_messageFormatter); + + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::CharEscapes + << item->asString(context); + } + static const char* footer=""; + static const unsigned int footerLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(footer); + m_messageBuffer.writeChars((const XMLByte*)footer,footerLen,&m_messageFormatter); +} + +void XQRemoteDebugger::SerializeSequence(DynamicContext* context, Sequence& seq, bool bAddBackMapInfo) +{ + for(Sequence::iterator it=seq.begin(); it!=seq.end(); it++) + SerializeItem(context, *it, bAddBackMapInfo); +} + +void XQRemoteDebugger::SerializeNode(DynamicContext *context, const Node::Ptr &node, bool bAddBackMapInfo) +{ + const XMLCh* nodeName = node->dmNodeName(context)->asString(context); + const XMLCh* nodeValue = node->dmStringValue(context); + + if(node->dmNodeKind() == Node::text_string) { + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::CharEscapes + << nodeValue; + } + else if(node->dmNodeKind() == Node::processing_instruction_string) { + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes + << XERCES_CPP_NAMESPACE_QUALIFIER chOpenAngle + << XERCES_CPP_NAMESPACE_QUALIFIER chQuestion + << nodeName; + if (nodeValue && *nodeValue) + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER chSpace + << nodeValue; + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER chQuestion + << XERCES_CPP_NAMESPACE_QUALIFIER chCloseAngle; + } + else if(node->dmNodeKind() == Node::document_string) { + // don't write the BOM, or we will produce invalid XML + Result children = node->dmChildren(context, 0); + Node::Ptr child; + while((child = children->next(context)).notNull()) + { + SerializeNode(context, child, bAddBackMapInfo); + } + } + else if(node->dmNodeKind() == Node::element_string) { + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes + << XERCES_CPP_NAMESPACE_QUALIFIER chOpenAngle + << nodeName; + if(bAddBackMapInfo && m_backMappingInfo->containsKey(node)) + { + static const XMLCh backMapFile[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_q, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chColon, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_b, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_k, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_M, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_F, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + static const XMLCh backMapLine[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_q, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chColon, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_b, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_k, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_M, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_L, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + + unsigned int location=m_backMappingInfo->get(node,m_pMemMgr); + unsigned int nLine = (location & 0x00FFFFFF); + unsigned int fileID= location >> 24; + const XMLCh* fileName = m_filePool.getValueForId(fileID); + XMLCh tmpBuff[21]; + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::binToText(nLine,tmpBuff,20,10,m_pMemMgr); + + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER chSpace + << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes + << backMapFile + << XERCES_CPP_NAMESPACE_QUALIFIER chEqual + << XERCES_CPP_NAMESPACE_QUALIFIER chDoubleQuote + << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::AttrEscapes + << fileName + << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes + << XERCES_CPP_NAMESPACE_QUALIFIER chDoubleQuote + << XERCES_CPP_NAMESPACE_QUALIFIER chSpace + << backMapLine + << XERCES_CPP_NAMESPACE_QUALIFIER chEqual + << XERCES_CPP_NAMESPACE_QUALIFIER chDoubleQuote + << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::AttrEscapes + << tmpBuff + << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes + << XERCES_CPP_NAMESPACE_QUALIFIER chDoubleQuote; + } + Result attributes = node->dmAttributes(context, 0); + Node::Ptr attr; + while((attr = attributes->next(context)).notNull()) { + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER chSpace; + SerializeNode(context, attr, bAddBackMapInfo); + } + Result children = node->dmChildren(context, 0); + Node::Ptr child = children->next(context); + if (child.notNull()) + { + // There are children. Close start-tag, and output children. + // No escapes are legal here + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes + << XERCES_CPP_NAMESPACE_QUALIFIER chCloseAngle; + + while (child.notNull()) + { + SerializeNode(context, child, bAddBackMapInfo); + child = children->next(context); + } + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes + << XERCES_CPP_NAMESPACE_QUALIFIER chOpenAngle + << XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash + << nodeName + << XERCES_CPP_NAMESPACE_QUALIFIER chCloseAngle; + } + else + { + // There were no children. Output the short form close of + // the element start tag, making it an empty-element tag. + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes + << XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash + << XERCES_CPP_NAMESPACE_QUALIFIER chCloseAngle; + } + } + else if(node->dmNodeKind() == Node::attribute_string) { + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes + << nodeName + << XERCES_CPP_NAMESPACE_QUALIFIER chEqual + << XERCES_CPP_NAMESPACE_QUALIFIER chDoubleQuote + << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::AttrEscapes + << nodeValue + << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes + << XERCES_CPP_NAMESPACE_QUALIFIER chDoubleQuote; + } +// case XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::CDATA_SECTION_NODE: +// m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes +// << XERCES_CPP_NAMESPACE_QUALIFIER chOpenAngle +// << XERCES_CPP_NAMESPACE_QUALIFIER chBang +// << XERCES_CPP_NAMESPACE_QUALIFIER chOpenSquare +// << XERCES_CPP_NAMESPACE_QUALIFIER chLatin_C +// << XERCES_CPP_NAMESPACE_QUALIFIER chLatin_D +// << XERCES_CPP_NAMESPACE_QUALIFIER chLatin_A +// << XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T +// << XERCES_CPP_NAMESPACE_QUALIFIER chLatin_A +// << XERCES_CPP_NAMESPACE_QUALIFIER chOpenSquare +// << nodeValue +// << XERCES_CPP_NAMESPACE_QUALIFIER chCloseSquare +// << XERCES_CPP_NAMESPACE_QUALIFIER chCloseSquare +// << XERCES_CPP_NAMESPACE_QUALIFIER chCloseAngle; +// break; + else if(node->dmNodeKind() == Node::comment_string) { + m_messageFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes + << XERCES_CPP_NAMESPACE_QUALIFIER chOpenAngle + << XERCES_CPP_NAMESPACE_QUALIFIER chBang + << XERCES_CPP_NAMESPACE_QUALIFIER chDash + << XERCES_CPP_NAMESPACE_QUALIFIER chDash + << nodeValue + << XERCES_CPP_NAMESPACE_QUALIFIER chDash + << XERCES_CPP_NAMESPACE_QUALIFIER chDash + << XERCES_CPP_NAMESPACE_QUALIFIER chCloseAngle; + } +// case XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::DOCUMENT_TYPE_NODE: +// // don't write it, or we get an invalid XML +// break; + else { + // XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ENTITY_REFERENCE_NODE + // XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ENTITY_NODE + } +} + diff --git a/src/dom-api/XPath2NodeSerializer.cpp b/src/dom-api/XPath2NodeSerializer.cpp new file mode 100644 index 00000000..f3f61cc1 --- /dev/null +++ b/src/dom-api/XPath2NodeSerializer.cpp @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XPath2NodeSerializer.cpp,v 1.8 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include "XPath2NodeSerializer.hpp" + +#include +#include +#include +#include +#include + +XPath2NodeSerializer::XPath2NodeSerializer(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const manager) : XERCES_CPP_NAMESPACE_QUALIFIER DOMWriterImpl(manager) { +} + +XPath2NodeSerializer::~XPath2NodeSerializer() { + // nothing to do +} + + +bool XPath2NodeSerializer::customNodeSerialize(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* const nodeToWrite, int level) { + + switch (nodeToWrite->getNodeType ()) { + case XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNamespace::XPATH_NAMESPACE_NODE: + { + const XMLCh* localName = nodeToWrite->getLocalName(); + const XMLCh* namespaceURI = nodeToWrite->getNamespaceURI(); + + *fFormatter << XERCES_CPP_NAMESPACE_QUALIFIER XMLFormatter::NoEscapes + << XERCES_CPP_NAMESPACE_QUALIFIER chOpenSquare + << localName + << XERCES_CPP_NAMESPACE_QUALIFIER chEqual + << XERCES_CPP_NAMESPACE_QUALIFIER chDoubleQuote + << namespaceURI + << XERCES_CPP_NAMESPACE_QUALIFIER chDoubleQuote + << XERCES_CPP_NAMESPACE_QUALIFIER chCloseSquare; + + return true; + break; + + } + default: + { + return false; + break; + } + } + +} diff --git a/src/dom-api/XPath2NodeSerializer.hpp b/src/dom-api/XPath2NodeSerializer.hpp new file mode 100644 index 00000000..9be6ce9d --- /dev/null +++ b/src/dom-api/XPath2NodeSerializer.hpp @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XPath2NodeSerializer.hpp,v 1.4 2006/11/01 16:37:18 jpcs Exp $ + */ + +#ifndef __XPATH2NODESERIALIZER_HPP +#define __XPATH2NODESERIALIZER_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN + +class DOMNode; +class XMLFormatter; + +XERCES_CPP_NAMESPACE_END + +class XQILLA_API XPath2NodeSerializer: public XERCES_CPP_NAMESPACE_QUALIFIER DOMWriterImpl { +public: + /** @name Constructor */ + //@{ + + /** + * Constructor. + * + * Constructs an XPath2NodeSerializer + * + */ + XPath2NodeSerializer(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const manager = XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager); + + // ----------------------------------------------------------------------- + // All constructors are hidden, just the destructor is available + // ----------------------------------------------------------------------- + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~XPath2NodeSerializer(); + //@} + +protected: + + virtual bool customNodeSerialize(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* const nodeToWrite, int level); + +}; + +#endif // __XPATH2NODESERIALIZER_HPP + diff --git a/src/dom-api/XQillaImplementation.cpp b/src/dom-api/XQillaImplementation.cpp new file mode 100644 index 00000000..b2f8ffe8 --- /dev/null +++ b/src/dom-api/XQillaImplementation.cpp @@ -0,0 +1,174 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQillaImplementation.cpp,v 1.6 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include "XQillaImplementation.hpp" +#include +#include "impl/XQillaDocumentImpl.hpp" +#include "impl/XQillaBuilderImpl.hpp" +#include "impl/XQillaXMLGrammarPoolImpl.hpp" + +#include "XPath2NodeSerializer.hpp" + +#include +#include +#include +#include +#include + +#include +#include +#include + +const XMLCh XQillaImplementation::gXQilla[] = // Points to "XPath2" +{XERCES_CPP_NAMESPACE_QUALIFIER chLatin_X, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_P, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_2, XERCES_CPP_NAMESPACE_QUALIFIER chNull}; + +const XMLCh XQillaImplementation::g3_0[] = // Points to "3.0" + {XERCES_CPP_NAMESPACE_QUALIFIER chDigit_3, XERCES_CPP_NAMESPACE_QUALIFIER chPeriod, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0, XERCES_CPP_NAMESPACE_QUALIFIER chNull}; + +XQillaImplementation::XQillaImplementation() { + domImpl = XERCES_CPP_NAMESPACE_QUALIFIER DOMImplementation::getImplementation(); +} + +XQillaImplementation::~XQillaImplementation() { + // nothing to do +} + +// ----------------------------------------------------------------------- +// Singleton DOMImplementationImpl +// ----------------------------------------------------------------------- +XQillaImplementation * XQillaImplementation::gDomimp = 0; + +//static +void XQillaImplementation::initialize() +{ + if (gDomimp) + delete gDomimp; + gDomimp = new XQillaImplementation(); + XERCES_CPP_NAMESPACE_QUALIFIER DOMImplementationRegistry::addSource( + gDomimp); +} + +void XQillaImplementation::terminate() +{ + if (gDomimp) + delete gDomimp; + gDomimp = 0; +} + +XQillaImplementation* XQillaImplementation::getDOMImplementationImpl() { + // initialized by XQillaImplementation::initialize() + return gDomimp; +} + +bool XQillaImplementation::hasFeature(const XMLCh * feature, const XMLCh * version) const +{ + if (!feature) + return false; + + if (XERCES_CPP_NAMESPACE_QUALIFIER XMLString::compareIString(feature, gXQilla) == 0 + && (version == 0 || !*version || XERCES_CPP_NAMESPACE_QUALIFIER XMLString::equals(version, g3_0))) + return true; + + return domImpl->hasFeature(feature, version); +} + +XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* XQillaImplementation::createDocument(const XMLCh *namespaceURI, + const XMLCh *qualifiedName, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentType *doctype, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const manager) +{ + return new (manager) XQillaDocumentImpl(namespaceURI, qualifiedName, doctype, manager); +} + + +XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* XQillaImplementation::createDocument(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const manager) +{ + return new (manager) XQillaDocumentImpl(manager); +} + +XERCES_CPP_NAMESPACE_QUALIFIER DOMWriter* XQillaImplementation::createDOMWriter(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const manager) +{ + return new (manager) XPath2NodeSerializer(manager); +} + +XERCES_CPP_NAMESPACE_QUALIFIER DOMBuilder* XQillaImplementation::createDOMBuilder(const short mode, + const XMLCh* const schemaType, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const manager, + XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool* const gramPool) +{ + XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool *temp = 0; + + if(!gramPool) { + temp = new (manager) XQillaXMLGrammarPoolImpl(manager); + } + else { + temp = gramPool; + } + + + if (mode == XERCES_CPP_NAMESPACE_QUALIFIER DOMImplementationLS::MODE_ASYNCHRONOUS) + throw XERCES_CPP_NAMESPACE_QUALIFIER DOMException(XERCES_CPP_NAMESPACE_QUALIFIER DOMException::NOT_SUPPORTED_ERR, 0); + + XERCES_CPP_NAMESPACE_QUALIFIER DOMBuilder *tmp = new (manager) XQillaBuilderImpl(0, manager, temp); + tmp->setProperty(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXercesParserUseDocumentFromImplementation, (void*)gXQilla); + tmp->setFeature(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXercesCacheGrammarFromParse, true); + + return tmp; +} + + + +XERCES_CPP_NAMESPACE_QUALIFIER DOMImplementation* XQillaImplementation::getDOMImplementation(const XMLCh* features) const +{ + XERCES_CPP_NAMESPACE_QUALIFIER DOMImplementation* impl = XQillaImplementation::getDOMImplementationImpl(); + + XERCES_CPP_NAMESPACE_QUALIFIER XMLStringTokenizer tokenizer(features); + const XMLCh* feature = 0; + + while (feature || tokenizer.hasMoreTokens()) { + + if (!feature) + feature = tokenizer.nextToken(); + + const XMLCh* version = 0; + const XMLCh* token = tokenizer.nextToken(); + + if (token && XERCES_CPP_NAMESPACE_QUALIFIER XMLString::isDigit(token[0])) + version = token; + + if (!impl->hasFeature(feature, version)) + return 0; + + if (!version) + feature = token; + } + return impl; +} + + +XERCES_CPP_NAMESPACE_QUALIFIER DOMInputSource* XQillaImplementation::createDOMInputSource() +{ + throw XERCES_CPP_NAMESPACE_QUALIFIER DOMException(XERCES_CPP_NAMESPACE_QUALIFIER DOMException::NOT_SUPPORTED_ERR, 0); + return 0; +} + +XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentType *XQillaImplementation::createDocumentType(const XMLCh *qualifiedName, + const XMLCh * publicId, const XMLCh *systemId) +{ + return domImpl->createDocumentType(qualifiedName, publicId, systemId); +} + +//Introduced in DOM Level 3 +XERCES_CPP_NAMESPACE_QUALIFIER DOMImplementation* XQillaImplementation::getInterface(const XMLCh* feature){ + throw XERCES_CPP_NAMESPACE_QUALIFIER DOMException(XERCES_CPP_NAMESPACE_QUALIFIER DOMException::NOT_SUPPORTED_ERR, 0); + return 0; +} diff --git a/src/dom-api/XQillaImplementation.hpp b/src/dom-api/XQillaImplementation.hpp new file mode 100644 index 00000000..e2414870 --- /dev/null +++ b/src/dom-api/XQillaImplementation.hpp @@ -0,0 +1,229 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQillaImplementation.hpp,v 1.4 2006/11/01 16:37:18 jpcs Exp $ + */ + +#ifndef __XQILLAIMPLEMENTATION_HPP +#define __XQILLAIMPLEMENTATION_HPP + +#include +#include +#include + +class XPath2MemoryManager; + +XERCES_CPP_NAMESPACE_BEGIN +class XMLGrammarPool; + +XERCES_CPP_NAMESPACE_END + +/** + * The XQillaImplentation class implements the + * DOMImplementation interface and the + * DOMImplementationSource interface and provides a number of methods + * for performing operations that are independent of any particular instance + * of the document object model. + */ + +class XQILLA_API XQillaImplementation: public XERCES_CPP_NAMESPACE_QUALIFIER DOMImplementation, + public XERCES_CPP_NAMESPACE_QUALIFIER DOMImplementationSource +{ +protected: + XQillaImplementation(); +public: + /** @name Destructor */ + //@{ + /** + * Destructor + * + */ + virtual ~XQillaImplementation(); + //@} + + /** Factory method for getting a XQillaImplementation object. + * The XQilla implementation retains ownership of the returned object. + * Application code should NOT delete it. + */ + static XQillaImplementation* getDOMImplementationImpl(); + + /** Initialize the XQillaImplementation + */ + static void initialize(); + + /** Terminate the XQillaImplementation + */ + static void terminate(); + + /** + * Test if the DOM implementation implements a specific feature. + * @param feature The name of the feature to test (case-insensitive). The + * values used by DOM features are defined throughout the DOM Level 2 + * specifications and listed in the section. The name must be an XML + * name. To avoid possible conflicts, as a convention, names referring + * to features defined outside the DOM specification should be made + * unique. + * @param version This is the version number of the feature to test. In + * Level 3, the string can be either "3.0", "2.0" or "1.0". If the version is + * not specified, supporting any version of the feature causes the + * method to return true. + * @return true if the feature is implemented in the + * specified version, false otherwise. + * @since DOM Level 1 + */ + virtual bool hasFeature(const XMLCh * feature, const XMLCh * version) const; + + /** + * Creates a DOMDocument object of the specified type with its document + * element. + * @param namespaceURI The namespace URI of the document element to + * create. + * @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 + * ownerDocument attribute is set to the document + * being created. + * @return A new DOMDocument object. + * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified qualified name + * contains an illegal character. + *
NAMESPACE_ERR: Raised if the qualifiedName is + * malformed, if the qualifiedName has a prefix and the + * namespaceURI is null, or if the + * qualifiedName has a prefix that is "xml" and the + * namespaceURI is different from " + * http://www.w3.org/XML/1998/namespace" , or if the DOM + * implementation does not support the "XML" feature but + * a non-null namespace URI was provided, since namespaces were + * defined by XML. + *
WRONG_DOCUMENT_ERR: Raised if doctype has already + * been used with a different document or was created from a different + * implementation. + *
NOT_SUPPORTED_ERR: May be raised by DOM implementations which do + * not support the "XML" feature, if they choose not to support this + * method. Other features introduced in the future, by the DOM WG or + * in extensions defined by other groups, may also demand support for + * this method; please consult the definition of the feature to see if + * it requires this method. + * @since DOM Level 2 + */ + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* createDocument(const XMLCh *namespaceURI, + const XMLCh *qualifiedName, + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentType *doctype, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const manager = XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager); + + /** + * Non-standard extension + * + * Create a completely empty document that has neither a root element or a doctype node. + */ + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* createDocument(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const manager = XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager); + + /** + * Create a new DOMWriter. DOMWriters are used to serialize a DOM tree + * back into an XML document. + * + * @return The newly created DOMWriter object. + * + * @see DOMWriter + * @since DOM Level 3 + */ + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMWriter* createDOMWriter(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const manager = XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager); + + + /** + * We create our own DOMBulider that creates a XQillaDocument. It also sets various parser options so we can + * use the grammars correctly. Please note that if you pass your own XMLGrammarPool in then the special + * XQuery types will not be available during parse + **/ + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMBuilder* createDOMBuilder(const short mode, + const XMLCh* const schemaType, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const manager = XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager, + XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool* const gramPool = 0); + + + + /** + * A method to request a DOM implementation. + * + * @param features A string that specifies which features are required. + * This is a space separated list in which each feature is specified + * by its name optionally followed by a space and a version number. + * This is something like: "XPath2 3.0" + * @return An implementation that has the desired features, or + * null if this source has none. + * @since DOM Level 3 + */ + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMImplementation* getDOMImplementation(const XMLCh* features) const; + + /** + * Throws DOMException NOT_SUPPORTED_ERR + * + * @exception DOMException NOT_SUPPORTED_ERR: Raised if this function is not + * supported by implementation + * + * @see DOMInputSource + * @since DOM Level 3 + */ + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMInputSource* createDOMInputSource(); + + /** + * 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 DOMDocumentType node with + * ownerDocument set to null. + * @exception DOMException + * INVALID_CHARACTER_ERR: Raised if the specified qualified name + * contains an illegal character. + *
NAMESPACE_ERR: Raised if the qualifiedName is + * malformed. + *
NOT_SUPPORTED_ERR: May be raised by DOM implementations which do + * not support the "XML" feature, if they choose not to + * support this method. Other features introduced in the future, by + * the DOM WG or in extensions defined by other groups, may also + * demand support for this method; please consult the definition of + * the feature to see if it requires this method. + * @since DOM Level 2 + */ + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentType *createDocumentType(const XMLCh *qualifiedName,const XMLCh * publicId, const XMLCh *systemId); + + /** + * This method makes available a DOMImplementation's + * specialized interface (see ). + * + * Throws a DOMException NOT_SUPPORTED_ERR + * + * @since DOM Level 3 + */ + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMImplementation* getInterface(const XMLCh* feature); + + /** The "XPath2" feature + */ + static const XMLCh gXQilla[]; + + /** The "3.0" version + */ + static const XMLCh g3_0[]; + + XERCES_CPP_NAMESPACE_QUALIFIER DOMImplementation *domImpl; +private: + static XQillaImplementation* gDomimp; +}; + +#endif // __XQILLAIMPLEMENTATION_HPP + diff --git a/src/dom-api/impl/XPath2ResultImpl.cpp b/src/dom-api/impl/XPath2ResultImpl.cpp new file mode 100644 index 00000000..8f792a94 --- /dev/null +++ b/src/dom-api/impl/XPath2ResultImpl.cpp @@ -0,0 +1,443 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XPath2ResultImpl.cpp,v 1.7 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include "XPath2ResultImpl.hpp" +#include "XQillaExpressionImpl.hpp" +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +using namespace std; +XERCES_CPP_NAMESPACE_USE; + +string typeName(XPath2Result::ResultType type) { + switch(type) { + case XPath2Result::FIRST_RESULT: return "FIRST_RESULT"; + case XPath2Result::ITERATOR_RESULT: return "ITERATOR_RESULT"; + case XPath2Result::SNAPSHOT_RESULT: return "SNAPSHOT_RESULT"; + } + return ""; +} + +string errorMessage(XPath2Result::ResultType requestedType, + XPath2Result::ResultType resultType) { + return typeName(requestedType) + " was requested from a XPath2Result of type " + typeName(resultType); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +XPath2ResultImpl::XPath2ResultImpl(DOMNode* contextNode, + DynamicContext *staticContext, + MemoryManager* memMgr, + XQillaExpressionImpl *exprImpl) + : _createdWith(memMgr), + _context(staticContext->createDynamicContext(_createdWith)), + _currentItem(0), + _exprToDelete(exprImpl) +{ + //Check for illegal contextNode types + if(contextNode != 0) { + //More illegal types here? + switch (contextNode->getNodeType()) { + case DOMNode::ENTITY_REFERENCE_NODE: + throw DOMException(DOMException::NOT_SUPPORTED_ERR, X("Context node of illegal type.")); + break; + } + _context->setExternalContextNode(contextNode); + } +} + +XPath2ResultImpl::~XPath2ResultImpl() { + delete _context; + if(_exprToDelete) _exprToDelete->release(); +} + +const DOMTypeInfo *XPath2ResultImpl::getTypeInfo() const +{ + if(_currentItem.isNull()) return 0; + return this; +} + +bool XPath2ResultImpl::isNode() const { + return !_currentItem.isNull() && _currentItem->isNode(); +} + +/// DOMTypeInfo method +const XMLCh* XPath2ResultImpl::getName() const +{ + if(_currentItem.isNull()) return 0; + return _currentItem->getTypeName(); +} + +/// DOMTypeInfo method +const XMLCh* XPath2ResultImpl::getNamespace() const +{ + if(_currentItem.isNull()) return 0; + return _currentItem->getTypeURI(); +} + +int XPath2ResultImpl::asInt() const +{ + if(_currentItem.isNull()) { + throw DOMException(DOMException::INVALID_STATE_ERR, XMLString::transcode("There is no current result in the result")); + } + + if(_currentItem->isNode()) { + throw XQillaException(DOMXPathException::TYPE_ERR, X("Cannot convert result to int")); + } + + AnyAtomicType::Ptr atom = (const AnyAtomicType::Ptr)_currentItem; + Item::Ptr integer; + try { + integer = atom->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER, _context); + } catch (XPath2TypeCastException &e) { + throw XQillaException(DOMXPathException::TYPE_ERR, X("Cannot convert result to int")); + } + + return atoi(UTF8(integer->asString(_context))); +} + +double XPath2ResultImpl::asDouble() const +{ + if(_currentItem.isNull()) { + throw DOMException(DOMException::INVALID_STATE_ERR, XMLString::transcode("There is no current result in the result")); + } + + if(_currentItem->isNode()) { + throw XQillaException(DOMXPathException::TYPE_ERR, X("Cannot convert result to double")); + } + + AnyAtomicType::Ptr atom = (const AnyAtomicType::Ptr)_currentItem; + Item::Ptr doubleValue; + try { + doubleValue = atom->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_DOUBLE, _context); + } catch (XPath2TypeCastException &e) { + throw XQillaException(DOMXPathException::TYPE_ERR, X("Cannot convert result to double")); + } + + return atof(UTF8(doubleValue->asString(_context))); +} + +const XMLCh* XPath2ResultImpl::asString() const +{ + if(_currentItem.isNull()) { + throw DOMException(DOMException::INVALID_STATE_ERR, XMLString::transcode("There is no current result in the result")); + } + + if(_currentItem->isNode()) { + throw XQillaException(DOMXPathException::TYPE_ERR, X("Cannot convert result to a string")); + } + + return _currentItem->asString(_context); +} + +bool XPath2ResultImpl::asBoolean() const +{ + if(_currentItem.isNull()) { + throw DOMException(DOMException::INVALID_STATE_ERR, XMLString::transcode("There is no current result in the result")); + } + + if(_currentItem->isNode()) { + throw XQillaException(DOMXPathException::TYPE_ERR, X("Cannot convert result to a boolean")); + } + + AnyAtomicType::Ptr atom = (const AnyAtomicType::Ptr)_currentItem; + Item::Ptr boolean; + try { + boolean = atom->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_BOOLEAN, _context); + } catch (XPath2TypeCastException &e) { + throw XQillaException(DOMXPathException::TYPE_ERR, X("Cannot convert result to a boolean")); + } + return ((const ATBooleanOrDerived*)boolean.get())->isTrue(); +} + +const DOMNode* XPath2ResultImpl::asNode() const +{ + if(_currentItem.isNull()) { + throw DOMException(DOMException::INVALID_STATE_ERR, XMLString::transcode("There is no current result in the result")); + } + + if(!_currentItem->isNode()) { + throw XQillaException(DOMXPathException::TYPE_ERR, X("The requested result is not a node")); + } + + const DOMNode *node = (const DOMNode*)_currentItem->getInterface(Node::gXerces); + if(node == 0) { + // Should never happen + throw XQillaException(DOMXPathException::TYPE_ERR, X("The requested result not a XQilla implementation node")); + } + + return node; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +XPath2FirstResultImpl::XPath2FirstResultImpl(const XQQuery *expression, + DOMNode* contextNode, + DynamicContext *staticContext, + MemoryManager* memMgr, + XQillaExpressionImpl *exprImpl) + : XPath2ResultImpl(contextNode, staticContext, memMgr, exprImpl) +{ + try { + _currentItem = expression->execute(_context)->next(_context); + } + catch(const XQException &e) { + if(XQillaException::getDebug()) { + e.printDebug( X("Caught exception at Interface") ); + } + throw XQillaException(DOMXPathException::TYPE_ERR, e.getError()); + } + catch(const XQillaException &) { + // rethrow it + throw; + } + catch(DOMException &e) { + throw XQillaException(DOMXPathException::TYPE_ERR, X("XQillaExpressionImpl::evaluateToSequence(): DOMException!")); + } + catch(XMLException &e) { + throw XQillaException(DOMXPathException::TYPE_ERR, e.getMessage()); + } + catch (...) { + throw XQillaException(DOMXPathException::TYPE_ERR, X("XQillaExpressionImpl::evaluateToSequence(): Unknown exception caught.")); + } +} + +XPath2FirstResultImpl::~XPath2FirstResultImpl() { +} + +void XPath2FirstResultImpl::release() +{ + this->~XPath2FirstResultImpl(); + _createdWith->deallocate(this); +} + +XPath2Result::ResultType XPath2FirstResultImpl::getResultType() const { + return XPath2Result::FIRST_RESULT; +} + +bool XPath2FirstResultImpl::getInvalidIteratorState() const { + return false; +} + +unsigned long XPath2FirstResultImpl::getSnapshotLength() const { + string error = errorMessage(XPath2Result::SNAPSHOT_RESULT, XPath2Result::FIRST_RESULT); + throw XQillaException(DOMXPathException::TYPE_ERR, X(error.c_str())); +} + +bool XPath2FirstResultImpl::iterateNext() { + string error = errorMessage(XPath2Result::ITERATOR_RESULT, XPath2Result::FIRST_RESULT); + throw XQillaException(DOMXPathException::TYPE_ERR, X(error.c_str())); +} + +bool XPath2FirstResultImpl::snapshotItem(unsigned long index) { + string error = errorMessage(XPath2Result::SNAPSHOT_RESULT, XPath2Result::FIRST_RESULT); + throw XQillaException(DOMXPathException::TYPE_ERR, X(error.c_str())); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +XPath2SnapshotResultImpl::XPath2SnapshotResultImpl(const XQQuery *expression, + DOMNode* contextNode, + DynamicContext *staticContext, + MemoryManager* memMgr, + XQillaExpressionImpl *exprImpl) + : XPath2ResultImpl(contextNode, staticContext, memMgr, exprImpl), + _sequence(0) +{ + try { + _sequence = new (_createdWith) Sequence(expression->execute(_context)->toSequence(_context)); + } + catch(const XQException &e) { + if(XQillaException::getDebug()) { + e.printDebug( X("Caught exception at Interface") ); + } + throw XQillaException(DOMXPathException::TYPE_ERR, e.getError()); + } + catch(const XQillaException &) { + // rethrow it + throw; + } + catch(DOMException &e) { + throw XQillaException(DOMXPathException::TYPE_ERR, X("XQillaExpressionImpl::evaluateToSequence(): DOMException!")); + } + catch(XMLException &e) { + throw XQillaException(DOMXPathException::TYPE_ERR, e.getMessage()); + } + catch (...) { + throw XQillaException(DOMXPathException::TYPE_ERR, X("XQillaExpressionImpl::evaluateToSequence(): Unknown exception caught.")); + } +} + +XPath2SnapshotResultImpl::~XPath2SnapshotResultImpl() { + // the destructor will try to access the context, that XPath2ResultImpl is about to delete + if(_sequence) delete _sequence; +} + +void XPath2SnapshotResultImpl::release() +{ + this->~XPath2SnapshotResultImpl(); + _createdWith->deallocate(this); +} + +XPath2Result::ResultType XPath2SnapshotResultImpl::getResultType() const { + return XPath2Result::SNAPSHOT_RESULT; +} + +bool XPath2SnapshotResultImpl::getInvalidIteratorState() const { + return false; +} + +unsigned long XPath2SnapshotResultImpl::getSnapshotLength() const { + return _sequence->getLength(); +} + +bool XPath2SnapshotResultImpl::iterateNext() { + string error = errorMessage(XPath2Result::ITERATOR_RESULT, XPath2Result::SNAPSHOT_RESULT); + throw XQillaException(DOMXPathException::TYPE_ERR, X(error.c_str())); +} + +bool XPath2SnapshotResultImpl::snapshotItem(unsigned long index) { + //Reached end of set, return false + if(index >= _sequence->getLength()) { + _currentItem = 0; + return false; + } + + // this method is const, need to cast that away + _currentItem = _sequence->item(index); + return true; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +XPath2IteratorResultImpl::XPath2IteratorResultImpl(const XQQuery *expression, + DOMNode* contextNode, + DynamicContext *staticContext, + MemoryManager* memMgr, + XQillaExpressionImpl *exprImpl) + : XPath2ResultImpl(contextNode, staticContext, memMgr, exprImpl), + _results(0), + _documentRoot(0), + _changes(0) +{ + if(contextNode != 0) { + if(contextNode->getNodeType() == DOMNode::DOCUMENT_NODE) { + _documentRoot = (DOMDocumentImpl*)contextNode; + } + else { + _documentRoot = (DOMDocumentImpl*)contextNode->getOwnerDocument(); + } + _changes =_documentRoot->changes(); + } + + try { + _results = expression->execute(_context); + } + catch(const XQException &e) { + if(XQillaException::getDebug()) { + e.printDebug( X("Caught exception at Interface") ); + } + throw XQillaException(DOMXPathException::TYPE_ERR, e.getError()); + } + catch(const XQillaException &) { + // rethrow it + throw; + } + catch(DOMException &e) { + throw XQillaException(DOMXPathException::TYPE_ERR, X("XQillaExpressionImpl::evaluateToSequence(): DOMException!")); + } + catch(XMLException &e) { + throw XQillaException(DOMXPathException::TYPE_ERR, e.getMessage()); + } + catch (...) { + throw XQillaException(DOMXPathException::TYPE_ERR, X("XQillaExpressionImpl::evaluateToSequence(): Unknown exception caught.")); + } +} + +XPath2IteratorResultImpl::~XPath2IteratorResultImpl() +{ + // the destructor will try to access the context, that XPath2ResultImpl is about to delete + if(!_results.isNull()) _results = 0; +} + +void XPath2IteratorResultImpl::release() +{ + this->~XPath2IteratorResultImpl(); + _createdWith->deallocate(this); +} + +XPath2Result::ResultType XPath2IteratorResultImpl::getResultType() const +{ + return XPath2Result::ITERATOR_RESULT; +} + +bool XPath2IteratorResultImpl::getInvalidIteratorState() const +{ + return _documentRoot != 0 && _documentRoot->changes() != _changes; +} + +bool XPath2IteratorResultImpl::iterateNext() +{ + // check for document changes + if(getInvalidIteratorState()) { + throw DOMException(DOMException::INVALID_STATE_ERR, XMLString::transcode("Document has changed")); + }//if + + _currentItem = _results->next(_context); + + if(_currentItem.isNull()) { + _results = 0; + return false; + } + + return true; +} + +unsigned long XPath2IteratorResultImpl::getSnapshotLength() const +{ + string error = errorMessage(XPath2Result::SNAPSHOT_RESULT, XPath2Result::ITERATOR_RESULT); + throw XQillaException(DOMXPathException::TYPE_ERR, X(error.c_str())); +} + +bool XPath2IteratorResultImpl::snapshotItem(unsigned long index) +{ + string error = errorMessage(XPath2Result::SNAPSHOT_RESULT, XPath2Result::ITERATOR_RESULT); + throw XQillaException(DOMXPathException::TYPE_ERR, X(error.c_str())); +} diff --git a/src/dom-api/impl/XPath2ResultImpl.hpp b/src/dom-api/impl/XPath2ResultImpl.hpp new file mode 100644 index 00000000..9ecc1d1e --- /dev/null +++ b/src/dom-api/impl/XPath2ResultImpl.hpp @@ -0,0 +1,137 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XPath2ResultImpl.hpp,v 1.4 2006/11/01 16:37:18 jpcs Exp $ + */ + +#ifndef __XPATH2RESULTIMPL_HPP +#define __XPATH2RESULTIMPL_HPP + +#include +#include + +#include +#include + +#include + +class DynamicContext; +class XQQuery; +class XQillaExpressionImpl; + +class XQILLA_API XPath2ResultImpl : public XPath2Result, XERCES_CPP_NAMESPACE_QUALIFIER DOMTypeInfo +{ +public: + XPath2ResultImpl(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* contextNode, + DynamicContext *staticContext, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr, + XQillaExpressionImpl *exprImpl = 0); + + virtual ~XPath2ResultImpl(); + + virtual bool isNode() const; + virtual const XERCES_CPP_NAMESPACE_QUALIFIER DOMTypeInfo *getTypeInfo() const; + + + virtual int asInt() const; + virtual double asDouble() const; + virtual const XMLCh* asString() const; + virtual bool asBoolean() const; + virtual const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* asNode() const; + + /// DOMTypeInfo method + virtual const XMLCh* getName() const; + /// DOMTypeInfo method + virtual const XMLCh* getNamespace() const; + +protected: + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* _createdWith; + + DynamicContext* _context; + Item::Ptr _currentItem; + + XQillaExpressionImpl *_exprToDelete; +}; + +class XQILLA_API XPath2FirstResultImpl : public XPath2ResultImpl +{ +public: + + XPath2FirstResultImpl(const XQQuery *expression, + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* contextNode, + DynamicContext *staticContext, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr, + XQillaExpressionImpl *exprImpl = 0); + + virtual ~XPath2FirstResultImpl(); + virtual void release(); + + virtual ResultType getResultType() const; + + virtual bool getInvalidIteratorState() const; + virtual bool iterateNext(); + + virtual unsigned long getSnapshotLength() const; + virtual bool snapshotItem(unsigned long index); +}; + +class XQILLA_API XPath2SnapshotResultImpl : public XPath2ResultImpl +{ +public: + + XPath2SnapshotResultImpl(const XQQuery *expression, + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* contextNode, + DynamicContext *staticContext, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr, + XQillaExpressionImpl *exprImpl = 0); + + virtual ~XPath2SnapshotResultImpl(); + virtual void release(); + + virtual ResultType getResultType() const; + + virtual bool getInvalidIteratorState() const; + virtual bool iterateNext(); + + virtual unsigned long getSnapshotLength() const; + virtual bool snapshotItem(unsigned long index); + +private: + Sequence *_sequence; +}; + +class XQILLA_API XPath2IteratorResultImpl : public XPath2ResultImpl +{ +public: + XPath2IteratorResultImpl(const XQQuery *expression, + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* contextNode, + DynamicContext *staticContext, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr, + XQillaExpressionImpl *exprImpl = 0); + + virtual ~XPath2IteratorResultImpl(); + virtual void release(); + + virtual ResultType getResultType() const; + + virtual bool getInvalidIteratorState() const; + virtual bool iterateNext(); + + virtual unsigned long getSnapshotLength() const; + virtual bool snapshotItem(unsigned long index); + +private: + Result _results; + + const XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl* _documentRoot; + int _changes; +}; + +#endif diff --git a/src/dom-api/impl/XPathDocumentImpl.cpp b/src/dom-api/impl/XPathDocumentImpl.cpp new file mode 100644 index 00000000..739d1806 --- /dev/null +++ b/src/dom-api/impl/XPathDocumentImpl.cpp @@ -0,0 +1,201 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XPathDocumentImpl.cpp,v 1.3 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include "XPathDocumentImpl.hpp" +#include +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +//Main constructor +XPathDocumentImpl::XPathDocumentImpl(MemoryManager* memMgr) + : DOMDocumentImpl(memMgr), + fMyDocType(NULL), + fMyDocElement(NULL) +{ + setVersion(XMLUni::fgVersion1_1); +}//constructor + + +//Destructor +XPathDocumentImpl::~XPathDocumentImpl() +{ + //Nothing +}//destructor + +DOMNode *XPathDocumentImpl::insertBefore(DOMNode *newChild, DOMNode *refChild) +{ + // if the newChild is a documenttype node created from domimplementation, set the ownerDoc first + if ((newChild->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE) && !newChild->getOwnerDocument()) + ((DOMDocumentTypeImpl*)newChild)->setOwnerDocument(this); + + if(newChild==NULL) + throw DOMException(DOMException::HIERARCHY_REQUEST_ERR,0, getMemoryManager()); + + DOMNodeImpl *thisNodeImpl = castToNodeImpl(this); + if (thisNodeImpl->isReadOnly()) + throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, getMemoryManager()); + + DOMNode* thisNode = castToNode(&fParent); + if (newChild->getOwnerDocument() != thisNode) + throw DOMException(DOMException::WRONG_DOCUMENT_ERR, 0, getMemoryManager()); + + // refChild must in fact be a child of this node (or 0) + if (refChild!=0 && refChild->getParentNode() != thisNode) + throw DOMException(DOMException::NOT_FOUND_ERR,0, getMemoryManager()); + + // if the new node has to be placed before itself, we don't have to do anything + // (even worse, we would crash if we continue, as we assume they are two distinct nodes) + if (refChild!=0 && newChild->isSameNode(refChild)) + return newChild; + + if (newChild->getNodeType() == DOMNode::DOCUMENT_FRAGMENT_NODE) + { + // SLOW BUT SAFE: We could insert the whole subtree without + // juggling so many next/previous pointers. (Wipe out the + // parent's child-list, patch the parent pointers, set the + // ends of the list.) But we know some subclasses have special- + // case behavior they add to insertBefore(), so we don't risk it. + // This approch also takes fewer bytecodes. + + while(newChild->hasChildNodes()) // Move + insertBefore(newChild->getFirstChild(),refChild); + } + + else + { + DOMNode *oldparent=newChild->getParentNode(); + if(oldparent!=0) + oldparent->removeChild(newChild); + + // Attach up + castToNodeImpl(newChild)->fOwnerNode = thisNode; + castToNodeImpl(newChild)->isOwned(true); + + // Attach before and after + // Note: fFirstChild.previousSibling == lastChild!! + if (fParent.fFirstChild == 0) { + // this our first and only child + fParent.fFirstChild = newChild; + castToNodeImpl(newChild)->isFirstChild(true); + // castToChildImpl(newChild)->previousSibling = newChild; + DOMChildNode *newChild_ci = castToChildImpl(newChild); + newChild_ci->previousSibling = newChild; + } else { + if (refChild == 0) { + // this is an append + DOMNode *lastChild = castToChildImpl(fParent.fFirstChild)->previousSibling; + castToChildImpl(lastChild)->nextSibling = newChild; + castToChildImpl(newChild)->previousSibling = lastChild; + castToChildImpl(fParent.fFirstChild)->previousSibling = newChild; + } else { + // this is an insert + if (refChild == fParent.fFirstChild) { + // at the head of the list + castToNodeImpl(fParent.fFirstChild)->isFirstChild(false); + castToChildImpl(newChild)->nextSibling = fParent.fFirstChild; + castToChildImpl(newChild)->previousSibling = castToChildImpl(fParent.fFirstChild)->previousSibling; + castToChildImpl(fParent.fFirstChild)->previousSibling = newChild; + fParent.fFirstChild = newChild; + castToNodeImpl(newChild)->isFirstChild(true); + } else { + // somewhere in the middle + DOMNode *prev = castToChildImpl(refChild)->previousSibling; + castToChildImpl(newChild)->nextSibling = refChild; + castToChildImpl(prev)->nextSibling = newChild; + castToChildImpl(refChild)->previousSibling = newChild; + castToChildImpl(newChild)->previousSibling = prev; + } + } + } + } + + changed(); + + Ranges* ranges = getRanges(); + if ( ranges != 0) { + XMLSize_t sz = ranges->size(); + if (sz != 0) { + for (XMLSize_t i =0; ielementAt(i)->updateRangeForInsertedNode(newChild); + } + } + } + + // If insert succeeded, cache the kid appropriately + if(newChild->getNodeType() == DOMNode::ELEMENT_NODE) + fMyDocElement=(DOMElement *)newChild; + else if(newChild->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE) + fMyDocType=(DOMDocumentType *)newChild; + + return newChild; +} + +DOMNode* XPathDocumentImpl::replaceChild(DOMNode *newChild, DOMNode *oldChild) { + DOMDocumentType* tempDocType = fMyDocType; + DOMElement* tempDocElement = fMyDocElement; + + if(oldChild->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE) + fMyDocType=0; + else if(oldChild->getNodeType() == DOMNode::ELEMENT_NODE) + fMyDocElement=0; + + try { + insertBefore(newChild, oldChild); + // changed() already done. + + if((oldChild->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE) + || (oldChild->getNodeType() == DOMNode::ELEMENT_NODE)) + return fParent.removeChild(oldChild); + else + return removeChild(oldChild); + } + catch(const OutOfMemoryException&) + { + throw; + } + catch(...) { + fMyDocType = tempDocType; + fMyDocElement = tempDocElement; + throw; + } +} + +DOMNode *XPathDocumentImpl::removeChild(DOMNode *oldChild) +{ + fParent.removeChild(oldChild); + + // If remove succeeded, un-cache the kid appropriately + if(oldChild->getNodeType() == DOMNode::ELEMENT_NODE) + fMyDocElement=0; + else if(oldChild->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE) + fMyDocType=0; + + return oldChild; +} + +DOMDocumentType *XPathDocumentImpl::getDoctype() const +{ + return fMyDocType; +} + +DOMElement *XPathDocumentImpl::getDocumentElement() const +{ + return fMyDocElement; +} diff --git a/src/dom-api/impl/XPathDocumentImpl.hpp b/src/dom-api/impl/XPathDocumentImpl.hpp new file mode 100644 index 00000000..549a34ec --- /dev/null +++ b/src/dom-api/impl/XPathDocumentImpl.hpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XPathDocumentImpl.hpp,v 1.2 2006/11/01 16:37:18 jpcs Exp $ + */ + +#ifndef __XPATHDOCUMENTIMPL_HPP +#define __XPATHDOCUMENTIMPL_HPP + +#include + +#include +#include + +class XQILLA_API XPathDocumentImpl : public XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl +{ +public: + //Main constructor + XPathDocumentImpl(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr); + virtual ~XPathDocumentImpl(); + + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* insertBefore(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *newChild, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *refChild); + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* removeChild(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *oldChild); + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* replaceChild(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *newChild, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *oldChild); + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentType* getDoctype() const; + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMElement* getDocumentElement() const; + +protected: + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentType* fMyDocType; + XERCES_CPP_NAMESPACE_QUALIFIER DOMElement* fMyDocElement; + +}; + + + +#endif diff --git a/src/dom-api/impl/XPathNamespaceImpl.cpp b/src/dom-api/impl/XPathNamespaceImpl.cpp new file mode 100644 index 00000000..78081440 --- /dev/null +++ b/src/dom-api/impl/XPathNamespaceImpl.cpp @@ -0,0 +1,417 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XPathNamespaceImpl.cpp,v 1.8 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include "XPathNamespaceImpl.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//Main constructor +XPathNamespaceImpl::XPathNamespaceImpl(const XMLCh* const nsPrefix, + const XMLCh* const nsUri, XERCES_CPP_NAMESPACE_QUALIFIER DOMElement *owner, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *docOwner) + : fNode(docOwner) +{ + XERCES_CPP_NAMESPACE_QUALIFIER DOMNodeImpl *argImpl = XERCES_CPP_NAMESPACE_QUALIFIER castToNodeImpl(this); + argImpl->fOwnerNode = owner; + argImpl->isOwned(true); + argImpl->setIsLeafNode(true); + + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl *docImpl = (XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl *)docOwner; + uri = docImpl->getPooledString(nsUri); + prefix = docImpl->getPooledString(nsPrefix); + + // this->ownerElement = owner; +}//constructor + + +//Copy constructor +XPathNamespaceImpl::XPathNamespaceImpl(const XPathNamespaceImpl &other) + : fNode(other.fNode), uri(other.uri), prefix(other.prefix) +{ +}//copy constructor + + +//Destructor +XPathNamespaceImpl::~XPathNamespaceImpl() +{ + //Nothing +}//destructor + + +XERCES_CPP_NAMESPACE_QUALIFIER DOMNode * XPathNamespaceImpl::cloneNode(bool deep) const +{ + throw XERCES_CPP_NAMESPACE_QUALIFIER DOMException::NOT_SUPPORTED_ERR; +}//cloneNode + +const XMLCh *XPathNamespaceImpl::getNodeName() const +{ + return prefix; +}//getNodeName + +short XPathNamespaceImpl::getNodeType() const +{ + // return XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::XPATH_NAMESPACE_NODE; + return XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNamespace::XPATH_NAMESPACE_NODE; +}//getNodeType + +const XMLCh *XPathNamespaceImpl::getPrefix() const +{ + return prefix; +}//getPrefix + + +const XMLCh *XPathNamespaceImpl::getNamespaceURI() const +{ + return uri; +}//getNamespaceURI + +XERCES_CPP_NAMESPACE_QUALIFIER DOMElement *XPathNamespaceImpl::getOwnerElement() const +{ + return (XERCES_CPP_NAMESPACE_QUALIFIER DOMElement *) (fNode.isOwned() ? fNode.fOwnerNode : 0); +}//getOwnerElement + +const XMLCh *XPathNamespaceImpl::getNodeValue() const +{ + return 0; +}//getNodeVale + +void XPathNamespaceImpl::setNodeValue(const XMLCh *value) +{ + throw XERCES_CPP_NAMESPACE_QUALIFIER DOMException(XERCES_CPP_NAMESPACE_QUALIFIER DOMException::NO_MODIFICATION_ALLOWED_ERR, 0); +}//setNodeValue + + +void* XPathNamespaceImpl::setUserData(const XMLCh* key, void* data, XERCES_CPP_NAMESPACE_QUALIFIER DOMUserDataHandler* handler) +{ + throw XERCES_CPP_NAMESPACE_QUALIFIER DOMException(XERCES_CPP_NAMESPACE_QUALIFIER DOMException::NO_MODIFICATION_ALLOWED_ERR, 0); +} + +void XPathNamespaceImpl::setPrefix(const XMLCh *prefix) +{ + throw XERCES_CPP_NAMESPACE_QUALIFIER DOMException(XERCES_CPP_NAMESPACE_QUALIFIER DOMException::NO_MODIFICATION_ALLOWED_ERR, 0); +}//setPrefix + + + +short XPathNamespaceImpl::compareTreePosition(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* other) const { + + //note: order of namespace nodes currently has issues (number 51). For our purposes + //namespace nodes belong to the element on which they were originally declared + //this is proberbly incorecct but easiest to implement. Will change when the idea + //is firmed up REVISIT + + // Questions of clarification for this method - to be answered by the + // DOM WG. Current assumptions listed - LM + // + // 1. How do ENTITY nodes compare? + // Current assumption: TREE_POSITION_DISCONNECTED, as ENTITY nodes + // aren't really 'in the tree' + // + // 2. How do NOTATION nodes compare? + // Current assumption: TREE_POSITION_DISCONNECTED, as NOTATION nodes + // aren't really 'in the tree' + // + // 3. Are TREE_POSITION_ANCESTOR and TREE_POSITION_DESCENDANT + // only relevant for nodes that are "part of the document tree"? + // + // + // + // Is the element node "outer" considered an ancestor of "myattr"? + // Current assumption: No. + // + // 4. How do children of ATTRIBUTE nodes compare (with eachother, or + // with children of other attribute nodes with the same element) + // Current assumption: Children of ATTRIBUTE nodes are treated as if + // they are the attribute node itself, unless the 2 nodes + // are both children of the same attribute. + // + // 5. How does an ENTITY_REFERENCE node compare with it's children? + // Given the DOM, it should precede its children as an ancestor. + // Given "document order", does it represent the same position? + // Current assumption: An ENTITY_REFERENCE node is an ancestor of its + // children. + // + // 6. How do children of a DocumentFragment compare? + // Current assumption: If both nodes are part of the same document + // fragment, there are compared as if they were part of a document. + + + + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* thisNode = this; + + // If the nodes are the same... + if (thisNode == other) + return (XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::TREE_POSITION_SAME_NODE | XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::TREE_POSITION_EQUIVALENT); + + // If either node is of type ENTITY or NOTATION, compare as disconnected + short thisType = thisNode->getNodeType(); + short otherType = other->getNodeType(); + + // If either node is of type ENTITY or NOTATION, compare as disconnected + if (thisType == XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ENTITY_NODE || + thisType == XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::NOTATION_NODE || + otherType == XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ENTITY_NODE || + otherType == XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::NOTATION_NODE ) { + return XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::TREE_POSITION_DISCONNECTED; + } + + //if it is a custom node and bigger than us we must ask it for the order + if(otherType > XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNamespace::XPATH_NAMESPACE_NODE) { + XERCES_CPP_NAMESPACE_QUALIFIER DOMNodeImpl tmp(0); + return tmp.reverseTreeOrderBitPattern(other->compareTreePosition(this)); + } + + // Find the ancestor of each node, and the distance each node is from + // its ancestor. + // During this traversal, look for ancestor/descendent relationships + // between the 2 nodes in question. + // We do this now, so that we get this info correct for attribute nodes + // and their children. + + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node; + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *thisAncestor = this; + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *otherAncestor = other; + int thisDepth=0; + int otherDepth=0; + for (node = this; node != 0; node = node->getParentNode()) { + thisDepth +=1; + if (node == other) + // The other node is an ancestor of this one. + return (XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::TREE_POSITION_ANCESTOR | XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::TREE_POSITION_PRECEDING); + thisAncestor = node; + } + + for (node=other; node != 0; node = node->getParentNode()) { + otherDepth +=1; + if (node == this) + // The other node is a descendent of the reference node. + return (XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::TREE_POSITION_DESCENDANT | XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::TREE_POSITION_FOLLOWING); + otherAncestor = node; + } + + + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *otherNode = other; + + short thisAncestorType = thisAncestor->getNodeType(); + short otherAncestorType = otherAncestor->getNodeType(); + + // if the ancestor is an attribute, get owning element. + // we are now interested in the owner to determine position. + + if (thisAncestorType == XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ATTRIBUTE_NODE) { + thisNode = ((XERCES_CPP_NAMESPACE_QUALIFIER DOMAttrImpl *)thisAncestor)->getOwnerElement(); + } + + if (thisAncestorType == XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNamespace::XPATH_NAMESPACE_NODE) { + thisNode = ((XPathNamespaceImpl *)thisAncestor)->getOwnerElement(); + } + + if (otherAncestorType == XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ATTRIBUTE_NODE) { + otherNode = ((XERCES_CPP_NAMESPACE_QUALIFIER DOMAttrImpl *)otherAncestor)->getOwnerElement(); + } + + if (otherAncestorType == XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNamespace::XPATH_NAMESPACE_NODE) { + otherNode = ((XPathNamespaceImpl *)otherAncestor)->getOwnerElement(); + } + + + // Before proceeding, we should check if both ancestor nodes turned + // out to be attributes for the same element + if (thisAncestorType == XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ATTRIBUTE_NODE && + otherAncestorType == XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ATTRIBUTE_NODE && + thisNode==otherNode) + return XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::TREE_POSITION_EQUIVALENT; + + //now do the same for namespace nodes + if (thisAncestorType == XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNamespace::XPATH_NAMESPACE_NODE && + otherAncestorType == XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNamespace::XPATH_NAMESPACE_NODE && + thisNode==otherNode) + return XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::TREE_POSITION_EQUIVALENT; + + //now do comparison between attrs + if (thisAncestorType == XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNamespace::XPATH_NAMESPACE_NODE && + otherAncestorType == XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ATTRIBUTE_NODE && + thisNode==otherNode) + return XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::TREE_POSITION_FOLLOWING; + + //now do comparison between attrs + if (thisAncestorType == XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ATTRIBUTE_NODE && + otherAncestorType == XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNamespace::XPATH_NAMESPACE_NODE && + thisNode==otherNode) + return XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::TREE_POSITION_PRECEDING; + + + // Now, find the ancestor of the owning element, if the original + // ancestor was an attribute + + if (thisAncestorType == XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ATTRIBUTE_NODE || thisAncestorType == XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNamespace::XPATH_NAMESPACE_NODE) { + thisDepth=0; + for (node=thisNode; node != 0; node = node->getParentNode()) { + thisDepth +=1; + if (node == otherNode) + // The other node is an ancestor of the owning element + return XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::TREE_POSITION_PRECEDING; + thisAncestor = node; + } + for (node=otherNode; node != 0; node = node->getParentNode()) { + if (node == thisNode) + // The other node is an ancestor of the owning element + return XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::TREE_POSITION_FOLLOWING; + } + } + + // Now, find the ancestor of the owning element, if the original + // ancestor was an attribute + if (otherAncestorType == XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ATTRIBUTE_NODE || otherAncestorType == XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNamespace::XPATH_NAMESPACE_NODE) { + otherDepth=0; + for (node=otherNode; node != 0; node = node->getParentNode()) { + otherDepth +=1; + if (node == thisNode) + // The other node is a descendent of the reference + // node's element + return XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::TREE_POSITION_FOLLOWING; + otherAncestor = node; + } + for (node=thisNode; node != 0; node = node->getParentNode()) { + if (node == otherNode) + // The other node is an ancestor of the owning element + return XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::TREE_POSITION_PRECEDING; + } + } + + // thisAncestor and otherAncestor must be the same at this point, + // otherwise, we are not in the same tree or document fragment + if (thisAncestor != otherAncestor) + return XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::TREE_POSITION_DISCONNECTED; + + // Determine which node is of the greatest depth. + if (thisDepth > otherDepth) { + for (int i= 0 ; i < thisDepth - otherDepth; i++) + thisNode = thisNode->getParentNode(); + } + else { + for (int i = 0; i < otherDepth - thisDepth; i++) + otherNode = otherNode->getParentNode(); + } + + // We now have nodes at the same depth in the tree. Find a common + // ancestor. + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *thisNodeP, *otherNodeP; + for (thisNodeP = thisNode->getParentNode(), + otherNodeP = otherNode->getParentNode(); + thisNodeP != otherNodeP;) { + thisNode = thisNodeP; + otherNode = otherNodeP; + thisNodeP = thisNodeP->getParentNode(); + otherNodeP = otherNodeP->getParentNode(); + } + + // See whether thisNode or otherNode is the leftmost + for (XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *current = thisNodeP->getFirstChild(); + current != 0; + current = current->getNextSibling()) { + if (current == otherNode) { + return XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::TREE_POSITION_PRECEDING; + } + else if (current == thisNode) { + return XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::TREE_POSITION_FOLLOWING; + } + } + // REVISIT: shouldn't get here. Should probably throw an + // exception + return 0; +} + +//Should be moved into XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument +//Produce a new XPathNamespace object or give one back from the internal map +XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNamespace *XPathNamespaceImpl::createXPathNamespace(const XMLCh* const prefix, const XMLCh* const uri, XERCES_CPP_NAMESPACE_QUALIFIER DOMElement *owner) +{ + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *ownerDocument = owner->getOwnerDocument(); + return new ((XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl *)ownerDocument, (XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl::NodeObjectType)XPathNamespaceImpl::XPATH_NAMESPACE_OBJECT) XPathNamespaceImpl(prefix, uri, owner, ownerDocument); +} + + +void XPathNamespaceImpl::release() { + if (fNode.isOwned() && !fNode.isToBeReleased()) + throw XERCES_CPP_NAMESPACE_QUALIFIER DOMException(XERCES_CPP_NAMESPACE_QUALIFIER DOMException::INVALID_ACCESS_ERR,0); + + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl* doc = (XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl*) getOwnerDocument(); + if (doc) { + fNode.callUserDataHandlers(XERCES_CPP_NAMESPACE_QUALIFIER DOMUserDataHandler::NODE_DELETED, 0, 0); + doc->release(this, (XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl::NodeObjectType)XPathNamespaceImpl::XPATH_NAMESPACE_OBJECT); + } + else { + // shouldn't reach here + throw XERCES_CPP_NAMESPACE_QUALIFIER DOMException(XERCES_CPP_NAMESPACE_QUALIFIER DOMException::INVALID_ACCESS_ERR,0); + } + +} + +const XMLCh* XPathNamespaceImpl::getTextContent() const { + return getNamespaceURI(); +} + +const XMLCh* XPathNamespaceImpl::getLocalName() const { + return this->getPrefix(); +} + +// +// Functions inherited from Node +// + + XERCES_CPP_NAMESPACE_QUALIFIER DOMNamedNodeMap* XPathNamespaceImpl::getAttributes() const {return fNode.getAttributes (); }; + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* XPathNamespaceImpl::getOwnerDocument() const {return getOwnerElement()->getOwnerDocument(); }; + bool XPathNamespaceImpl::hasAttributes() const {return fNode.hasAttributes(); }; + bool XPathNamespaceImpl::isEqualNode(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* arg) const {return fNode.isEqualNode(arg); }; + + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* XPathNamespaceImpl::appendChild(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *newChild) {return fNode.appendChild (newChild); }; + XERCES_CPP_NAMESPACE_QUALIFIER DOMNodeList* XPathNamespaceImpl::getChildNodes() const {return fNode.getChildNodes (); }; + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* XPathNamespaceImpl::getFirstChild() const {return fNode.getFirstChild (); }; + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* XPathNamespaceImpl::getLastChild() const {return fNode.getLastChild (); }; + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* XPathNamespaceImpl::getNextSibling() const {return fNode.getNextSibling (); }; + +//The exception is wrong - we need to sort out all these methods when we can compile again. + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* XPathNamespaceImpl::getParentNode() const {return fNode.getParentNode ();}; + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* XPathNamespaceImpl::getPreviousSibling() const {return fNode.getParentNode ();}; + bool XPathNamespaceImpl::hasChildNodes() const {return fNode.hasChildNodes ();}; + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* XPathNamespaceImpl::insertBefore(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *newChild, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *refChild) + {return fNode.insertBefore (newChild, refChild); }; + void XPathNamespaceImpl::normalize() {fNode.normalize (); }; + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* XPathNamespaceImpl::removeChild(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *oldChild) {return fNode.removeChild (oldChild); }; + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* XPathNamespaceImpl::replaceChild(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *newChild, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *oldChild) + {return fNode.replaceChild (newChild, oldChild); }; + bool XPathNamespaceImpl::isSupported(const XMLCh *feature, const XMLCh *version) const + {return fNode.isSupported (feature, version); }; + bool XPathNamespaceImpl::isSameNode(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* other) const {return fNode.isSameNode(other); }; + void* XPathNamespaceImpl::getUserData(const XMLCh* key) const {return fNode.getUserData(key); }; + void XPathNamespaceImpl::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); }; +#if _XERCES_VERSION >= 20100 + const XMLCh* XPathNamespaceImpl::lookupNamespacePrefix(const XMLCh* namespaceURI, bool useDefault) const {return fNode.lookupNamespacePrefix(namespaceURI, useDefault); }; + bool XPathNamespaceImpl::isDefaultNamespace(const XMLCh* namespaceURI) const {return fNode.isDefaultNamespace(namespaceURI); }; + const XMLCh* XPathNamespaceImpl::lookupNamespaceURI(const XMLCh* prefix) const {return fNode.lookupNamespaceURI(prefix); }; +#else + const XMLCh* XPathNamespaceImpl::lookupNamespacePrefix(const XMLCh* namespaceURI, bool useDefault) {return fNode.lookupNamespacePrefix(namespaceURI, useDefault); }; + bool XPathNamespaceImpl::isDefaultNamespace(const XMLCh* namespaceURI) {return fNode.isDefaultNamespace(namespaceURI); }; + const XMLCh* XPathNamespaceImpl::lookupNamespaceURI(const XMLCh* prefix) {return fNode.lookupNamespaceURI(prefix); }; +#endif + + const XMLCh* XPathNamespaceImpl::getBaseURI() const {return fNode.getBaseURI(); }; + + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* XPathNamespaceImpl::getInterface(const XMLCh* feature) {return fNode.getInterface(feature); }; diff --git a/src/dom-api/impl/XPathNamespaceImpl.hpp b/src/dom-api/impl/XPathNamespaceImpl.hpp new file mode 100644 index 00000000..3645c614 --- /dev/null +++ b/src/dom-api/impl/XPathNamespaceImpl.hpp @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XPathNamespaceImpl.hpp,v 1.7 2006/11/01 16:37:18 jpcs Exp $ + */ + +#ifndef __XPATHNAMESPACEIMPL_HPP +#define __XPATHNAMESPACEIMPL_HPP + +#include + +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN +class DOMElement; +class DOMDocument; +XERCES_CPP_NAMESPACE_END + + +class XQILLA_API XPathNamespaceImpl : public XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNamespace +{ +public: + XERCES_CPP_NAMESPACE_QUALIFIER DOMNodeImpl fNode; + const XMLCh *uri; + const XMLCh *prefix; + + enum XPathObjectType { + XPATH_NAMESPACE_OBJECT = 13 + }; + +public: + //Main constructor + XPathNamespaceImpl(const XMLCh* const prefix, const XMLCh* const uri, XERCES_CPP_NAMESPACE_QUALIFIER DOMElement *owner, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *docOwner); + XPathNamespaceImpl(const XPathNamespaceImpl &other); + virtual ~XPathNamespaceImpl(); + + static XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNamespace *createXPathNamespace(const XMLCh* const prefix, const XMLCh* const uri, XERCES_CPP_NAMESPACE_QUALIFIER DOMElement *owner); + + // Declare functions from DOMNode. They all must be implemented by this class + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* appendChild(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *newChild) ; + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* cloneNode(bool deep) const ; + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNamedNodeMap* getAttributes() const ; + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNodeList* getChildNodes() const ; + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* getFirstChild() const ; + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* getLastChild() const ; + virtual const XMLCh* getLocalName() const ; + virtual const XMLCh* getNamespaceURI() const ; + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* getNextSibling() const ; + virtual const XMLCh* getNodeName() const ; + virtual short getNodeType() const ; + virtual const XMLCh* getNodeValue() const ; + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* getOwnerDocument() const ; + virtual const XMLCh* getPrefix() const ; + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* getParentNode() const ; + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* getPreviousSibling() const ; + virtual bool hasChildNodes() const ; + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* insertBefore(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *newChild, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *refChild) ; + virtual void normalize() ; + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* removeChild(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *oldChild) ; + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* replaceChild(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *newChild, XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *oldChild) ; + virtual void setNodeValue(const XMLCh *nodeValue) ; + virtual bool isSupported(const XMLCh *feature, const XMLCh *version) const ; + virtual bool hasAttributes() const ; + virtual void setPrefix(const XMLCh * prefix) ; + virtual void* setUserData(const XMLCh* key, void* data, XERCES_CPP_NAMESPACE_QUALIFIER DOMUserDataHandler* handler) ; + virtual void* getUserData(const XMLCh* key) const ; + virtual bool isSameNode(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* other) const; + virtual bool isEqualNode(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* arg) const; + virtual const XMLCh* getBaseURI() const ; + virtual short compareTreePosition(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* other) const ; + virtual const XMLCh* getTextContent() const ; + virtual void setTextContent(const XMLCh* textContent) ; + virtual const XMLCh* lookupNamespacePrefix(const XMLCh* namespaceURI, bool useDefault) const ; + virtual bool isDefaultNamespace(const XMLCh* namespaceURI) const; + virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const ; + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* getInterface(const XMLCh* feature) ; + virtual void release(); + + + virtual XERCES_CPP_NAMESPACE_QUALIFIER DOMElement *getOwnerElement() const; +}; + + + +#endif diff --git a/src/dom-api/impl/XQillaBuilderImpl.cpp b/src/dom-api/impl/XQillaBuilderImpl.cpp new file mode 100644 index 00000000..61d6a16d --- /dev/null +++ b/src/dom-api/impl/XQillaBuilderImpl.cpp @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQillaBuilderImpl.cpp,v 1.7 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include "XQillaBuilderImpl.hpp" +#include "XQillaDocumentImpl.hpp" +#include "XQillaXMLGrammarPoolImpl.hpp" +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh XQillaBuilderImpl::gXQilla[] = // Points to "XPath2" +{XERCES_CPP_NAMESPACE_QUALIFIER chLatin_X, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_P, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_2, XERCES_CPP_NAMESPACE_QUALIFIER chNull}; + + + + +XQillaBuilderImpl::XQillaBuilderImpl( XERCES_CPP_NAMESPACE_QUALIFIER XMLValidator* const valToAdopt + , XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const manager + , XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool* const gramPool) : + +DOMBuilderImpl(valToAdopt, manager, gramPool) +{ + delete fGrammarResolver; delete fScanner; + // re-init using this grammar resolver + fGrammarResolver = new (fMemoryManager) XQillaGrammarResolver(fGrammarPool, fMemoryManager); + fURIStringPool = fGrammarResolver->getStringPool(); + + // Create a scanner and tell it what validator to use. Then set us + // as the document event handler so we can fill the DOM document. + fScanner = XERCES_CPP_NAMESPACE_QUALIFIER XMLScannerResolver::getDefaultScanner(fValidator, fGrammarResolver, fMemoryManager); + fScanner->setDocHandler(this); + fScanner->setDocTypeHandler(this); + fScanner->setURIStringPool(fURIStringPool); +} + +// --------------------------------------------------------------------------- +// DOMBuilderImpl: Parsing methods +// --------------------------------------------------------------------------- +XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* XQillaBuilderImpl::parse(const XERCES_CPP_NAMESPACE_QUALIFIER DOMInputSource& source) +{ + initParser(); + + XERCES_CPP_NAMESPACE_QUALIFIER Wrapper4DOMInputSource isWrapper((XERCES_CPP_NAMESPACE_QUALIFIER DOMInputSource*) &source, false, getMemoryManager()); + + AbstractDOMParser::parse(isWrapper); + + return getDocumentAndAddGrammar(); + +} + +void XQillaBuilderImpl::initParser() { + //set it here in case someone has messed it up. + setProperty(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXercesParserUseDocumentFromImplementation, (void*)gXQilla); +} + + +XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* XQillaBuilderImpl::getDocumentAndAddGrammar() { + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc = 0; + + if (getFeature(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXercesUserAdoptsDOMDocument)) + doc = adoptDocument(); + else + doc = getDocument(); + if(doc == 0) { + return 0; + } + + //we copy this gramamr and reset the parser one in the process. + XQillaXMLGrammarPoolImpl *gr = new (getMemoryManager()) XQillaXMLGrammarPoolImpl(getMemoryManager()); + + XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOfEnumerator< XERCES_CPP_NAMESPACE_QUALIFIER Grammar> enumerator + = getGrammarResolver()->getCachedGrammarEnumerator(); + + XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool *oldGrPool = getGrammarResolver()->getGrammarPool(); + while(enumerator.hasMoreElements()) { + XERCES_CPP_NAMESPACE_QUALIFIER Grammar &g = enumerator.nextElement(); + gr->cacheGrammar(oldGrPool->orphanGrammar(g.getGrammarDescription()->getGrammarKey())); + } + + ((XQillaDocumentImpl*)doc)->setGrammarPool(gr); + return doc; +} + +XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* XQillaBuilderImpl::parseURI(const XMLCh* const systemId) +{ + initParser(); + AbstractDOMParser::parse(systemId); + return getDocumentAndAddGrammar(); +} + +XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* XQillaBuilderImpl::parseURI(const char* const systemId) +{ + initParser(); + AbstractDOMParser::parse(systemId); + return getDocumentAndAddGrammar(); +} diff --git a/src/dom-api/impl/XQillaBuilderImpl.hpp b/src/dom-api/impl/XQillaBuilderImpl.hpp new file mode 100644 index 00000000..b60ad0f2 --- /dev/null +++ b/src/dom-api/impl/XQillaBuilderImpl.hpp @@ -0,0 +1,141 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQillaBuilderImpl.hpp,v 1.5 2006/11/01 16:37:18 jpcs Exp $ + */ + +#ifndef __XQILLADOMBUILDERIMPL_HPP +#define __XQILLADOMBUILDERIMPL_HPP + +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN +class DOMInputSource; +class XMLGrammarPool; +class MemoryManager; +class XMLValidator; +XERCES_CPP_NAMESPACE_END + +class XQillaBuilderImpl : public XERCES_CPP_NAMESPACE_QUALIFIER DOMBuilderImpl +{ +public: + + /** @name Constructors and Destructor */ + //@{ + /** Construct a DOMBuilderImpl, with an optional validator + * + * Constructor with an instance of validator class to use for + * validation. If you don't provide a validator, a default one will + * be created for you in the scanner. + * + * @param gramPool Pointer to the grammar pool instance from + * external application. + * The parser does NOT own it. + * + * @param valToAdopt Pointer to the validator instance to use. The + * parser is responsible for freeing the memory. + */ + XQillaBuilderImpl + ( + XERCES_CPP_NAMESPACE_QUALIFIER XMLValidator* const valToAdopt = 0 + , XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const manager = XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager + , XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool* const gramPool = 0 + ); + + + /** + *

"Experimental - subject to change"

+ * + * Parse via an input source object + * + * This method invokes the parsing process on the XML file specified + * by the DOMInputSource parameter. This API is borrowed from the + * SAX Parser interface. + * + * @param source A const reference to the DOMInputSource object which + * points to the XML file to be parsed. + * @return If the DOMBuilder is a synchronous DOMBuilder the newly created + * and populated Document is returned. If the DOMBuilder is + * asynchronous then null is returned since the + * document object is not yet parsed when this method returns. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOMException A DOM exception as per DOM spec. + * + * @see DOMInputSource#DOMInputSource + * @see #setEntityResolver + * @see #setErrorHandler + */ + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* parse(const XERCES_CPP_NAMESPACE_QUALIFIER DOMInputSource& source); + + /** + *

"Experimental - subject to change"

+ * + * Parse via a file path or URL + * + * This method invokes the parsing process on the XML file specified by + * the Unicode string parameter 'systemId'. + * + * @param systemId A const XMLCh pointer to the Unicode string which + * contains the path to the XML file to be parsed. + * @return If the DOMBuilder is a synchronous DOMBuilder the newly created + * and populated Document is returned. If the DOMBuilder is + * asynchronous then null is returned since the + * document object is not yet parsed when this method returns. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOM_DOMException A DOM exception as per DOM spec. + * + * @see #parse(DOMInputSource,...) + */ + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* parseURI(const XMLCh* const systemId); + + /** + *

"Experimental - subject to change"

+ * + * Parse via a file path or URL (in the local code page) + * + * This method invokes the parsing process on the XML file specified by + * the native char* string parameter 'systemId'. + * + * @param systemId A const char pointer to a native string which + * contains the path to the XML file to be parsed. + * @return If the DOMBuilder is a synchronous DOMBuilder the newly created + * and populated Document is returned. If the DOMBuilder is + * asynchronous then null is returned since the + * document object is not yet parsed when this method returns. + * @exception SAXException Any SAX exception, possibly + * wrapping another exception. + * @exception XMLException An exception from the parser or client + * handler code. + * @exception DOM_DOMException A DOM exception as per DOM spec. + * + * @see #parse(DOMInputSource,...) + */ + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* parseURI(const char* const systemId); + + + static const XMLCh gXQilla[]; + + +private: + void initParser(); + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* getDocumentAndAddGrammar(); +}; //XQillaBuilderImpl + + +#endif //__XQILLADOMBUILDERIMPL_HPP + + diff --git a/src/dom-api/impl/XQillaDocumentImpl.cpp b/src/dom-api/impl/XQillaDocumentImpl.cpp new file mode 100644 index 00000000..35a74855 --- /dev/null +++ b/src/dom-api/impl/XQillaDocumentImpl.cpp @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQillaDocumentImpl.cpp,v 1.8 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include "XQillaDocumentImpl.hpp" + +#include "XQillaExpressionImpl.hpp" +#include + +#include +#include +#include + +#include "../../context/impl/VarStoreImpl.hpp" +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +XQillaDocumentImpl::XQillaDocumentImpl(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr) + : XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl(memMgr), _memMgr(memMgr), _xmlGrammarPool(0) +{ + // Nothing +}//constructor + +XQillaDocumentImpl::XQillaDocumentImpl(const XMLCh *fNamespaceURI, const XMLCh *qualifiedName, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentType *doctype, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const memMgr) + : XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl(fNamespaceURI, qualifiedName, doctype, memMgr), _memMgr(memMgr), _xmlGrammarPool(0) +{ + // Nothing +} + +XQillaDocumentImpl::~XQillaDocumentImpl() +{ + // Nothing +}//destructor + +// weak version, create a context within +const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathExpression* XQillaDocumentImpl::createExpression(const XMLCh* expression, + const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* resolver) + throw (XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathException, XERCES_CPP_NAMESPACE_QUALIFIER DOMException) +{ + return new (&_memMgr) XQillaExpressionImpl(expression, &_memMgr, resolver, _xmlGrammarPool); +} + +// weak version, create context within +void* XQillaDocumentImpl::evaluate(const XMLCh* expression, + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* contextNode, + const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* resolver, + unsigned short type, + void* reuseableResult) + throw (XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathException, XERCES_CPP_NAMESPACE_QUALIFIER DOMException) +{ + XQillaExpressionImpl *expr = new (&_memMgr) XQillaExpressionImpl(expression, &_memMgr, resolver, _xmlGrammarPool); + return expr->evaluateOnce(contextNode, type, reuseableResult); +} + +/** Create an NSResolver */ +const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* XQillaDocumentImpl::createNSResolver(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* nodeResolver) { + return _memMgr.createNSResolver(nodeResolver); +} + +void XQillaDocumentImpl::setGrammarPool(XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool *xmlGrammarPool) { + _xmlGrammarPool = xmlGrammarPool; +} + +XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool *XQillaDocumentImpl::getGrammarPool() { + return _xmlGrammarPool; +} diff --git a/src/dom-api/impl/XQillaDocumentImpl.hpp b/src/dom-api/impl/XQillaDocumentImpl.hpp new file mode 100644 index 00000000..a1965d3e --- /dev/null +++ b/src/dom-api/impl/XQillaDocumentImpl.hpp @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQillaDocumentImpl.hpp,v 1.5 2006/11/01 16:37:18 jpcs Exp $ + */ + +#ifndef __XQILLADOCUMENTIMPL_HPP +#define __XQILLADOCUMENTIMPL_HPP + +#include + +#include +#include + +#include +#include +#include +#include + + +class DynamicContext; +class XPath2Result; + +XERCES_CPP_NAMESPACE_BEGIN +class XMLGrammarPool; +XERCES_CPP_NAMESPACE_END + +class XQillaDocumentImpl : public XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl +{ +public: + XQillaDocumentImpl(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr); + XQillaDocumentImpl(const XMLCh *fNamespaceURI, const XMLCh *qualifiedName, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentType *doctype, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const memMgr); + ~XQillaDocumentImpl(); + + // weak version, need to create a context from scratch inside + virtual const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathExpression* createExpression(const XMLCh* expression, + const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* resolver) + throw (XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathException, XERCES_CPP_NAMESPACE_QUALIFIER DOMException); + + // create an NS Resolver + virtual const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* createNSResolver(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* nodeResolver); + + // weak version, need to create a context from scratch inside + virtual void* evaluate(const XMLCh* expression, + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* contextNode, + const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* resolver, + unsigned short type, + void* reuseableResult) + throw (XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathException, XERCES_CPP_NAMESPACE_QUALIFIER DOMException); + + virtual void setGrammarPool(XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool *xmlGrammarPool); + virtual XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool *getGrammarPool(); + +protected: + /// Used for creating objects returned from DOMXPathEvaluator methods + ProxyMemoryManager _memMgr; + + XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool *_xmlGrammarPool; + +}; //XQillaDocumentImpl + + +#endif //__XQILLADOCUMENTIMPL_HPP diff --git a/src/dom-api/impl/XQillaExpressionImpl.cpp b/src/dom-api/impl/XQillaExpressionImpl.cpp new file mode 100644 index 00000000..435d810c --- /dev/null +++ b/src/dom-api/impl/XQillaExpressionImpl.cpp @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQillaExpressionImpl.cpp,v 1.10.2.1 2006/12/08 15:19:12 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include "XQillaExpressionImpl.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include "XPath2ResultImpl.hpp" +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +XQillaExpressionImpl::XQillaExpressionImpl(const XMLCh *expression, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr, + const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver *nsr, + XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool *xmlGP) + : _createdWith(memMgr) +{ + _staticContext = new (_createdWith) XQContextImpl(_createdWith, xmlGP); + if(nsr != 0) _staticContext->setNSResolver(nsr); + _compiledExpression = XQilla::parse(expression, XQilla::XPATH2, _staticContext, NULL, XQilla::NO_ADOPT_CONTEXT, + _createdWith); +} + +XQillaExpressionImpl::~XQillaExpressionImpl() +{ + delete _staticContext; + delete _compiledExpression; +} + +void XQillaExpressionImpl::release() +{ + this->~XQillaExpressionImpl(); + _createdWith->deallocate(this); +} + +void* XQillaExpressionImpl::evaluate(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* contextNode, + unsigned short type, + void*) const +{ + switch((XPath2Result::ResultType)type) { + case XPath2Result::FIRST_RESULT: { + return new (_createdWith) XPath2FirstResultImpl(_compiledExpression, contextNode, + _staticContext, _createdWith); + break; + } + case XPath2Result::ITERATOR_RESULT: { + return new (_createdWith) XPath2IteratorResultImpl(_compiledExpression, contextNode, + _staticContext, _createdWith); + break; + } + case XPath2Result::SNAPSHOT_RESULT: { + return new (_createdWith) XPath2SnapshotResultImpl(_compiledExpression, contextNode, + _staticContext, _createdWith); + break; + } + } + return 0; +} + +void* XQillaExpressionImpl::evaluateOnce(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* contextNode, + unsigned short type, + void*) +{ + switch((XPath2Result::ResultType)type) { + case XPath2Result::FIRST_RESULT: { + return new (_createdWith) XPath2FirstResultImpl(_compiledExpression, contextNode, + _staticContext, _createdWith, this); + break; + } + case XPath2Result::ITERATOR_RESULT: { + return new (_createdWith) XPath2IteratorResultImpl(_compiledExpression, contextNode, + _staticContext, _createdWith, this); + break; + } + case XPath2Result::SNAPSHOT_RESULT: { + return new (_createdWith) XPath2SnapshotResultImpl(_compiledExpression, contextNode, + _staticContext, _createdWith, this); + break; + } + } + return 0; +} diff --git a/src/dom-api/impl/XQillaExpressionImpl.hpp b/src/dom-api/impl/XQillaExpressionImpl.hpp new file mode 100644 index 00000000..3fdacf7e --- /dev/null +++ b/src/dom-api/impl/XQillaExpressionImpl.hpp @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQillaExpressionImpl.hpp,v 1.4 2006/11/01 16:37:18 jpcs Exp $ + */ + +#ifndef __XQILLAEXPRESSIONIMPL_HPP +#define __XQILLAEXPRESSIONIMPL_HPP + +#include +#include +#include + +class XPath2Result; +class DynamicContext; +class XPath2MemoryManager; +class XQQuery; + +XERCES_CPP_NAMESPACE_BEGIN +class XMLGrammarPool; +class DOMNode; +class DOMDocument; +class DOMException; +class DOMXPathNSResolver; +XERCES_CPP_NAMESPACE_END + +class XQILLA_API XQillaExpressionImpl : public XQillaExpression +{ +public: + + XQillaExpressionImpl(const XMLCh *expression, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr, + const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver *nsr, + XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool *xmlGP); + virtual ~XQillaExpressionImpl(); + + virtual void* evaluate(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* contextNode, + unsigned short type, + void* reuseableResult) const; + virtual void* evaluateOnce(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* contextNode, + unsigned short type, + void* reuseableResult); + + virtual void release(); + + const XQQuery *getCompiledExpression() const { return _compiledExpression; } + void setCompiledExpression(XQQuery *expr) { _compiledExpression = expr; } + +private: + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* _createdWith; + + DynamicContext *_staticContext; + XQQuery* _compiledExpression; +}; //XQillaExpressionImpl + + +#endif //__XQILLAEXPRESSIONIMPL_HPP + diff --git a/src/dom-api/impl/XQillaNSResolverImpl.cpp b/src/dom-api/impl/XQillaNSResolverImpl.cpp new file mode 100644 index 00000000..86ba1904 --- /dev/null +++ b/src/dom-api/impl/XQillaNSResolverImpl.cpp @@ -0,0 +1,134 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQillaNSResolverImpl.cpp,v 1.7 2006/11/01 16:37:18 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh XQillaNSResolverImpl::g_nsBlocker[]={ XERCES_CPP_NAMESPACE_QUALIFIER chOpenSquare, XERCES_CPP_NAMESPACE_QUALIFIER chOpenSquare, + XERCES_CPP_NAMESPACE_QUALIFIER chCloseSquare, XERCES_CPP_NAMESPACE_QUALIFIER chCloseSquare, + XERCES_CPP_NAMESPACE_QUALIFIER chOpenCurly, XERCES_CPP_NAMESPACE_QUALIFIER chCloseCurly, + XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +XQillaNSResolverImpl::XQillaNSResolverImpl(XPath2MemoryManager* memMgr, + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *resolverNode) : + _namespaceBindings(6, false, memMgr), + _resolverNode(resolverNode), + _memMgr(memMgr) +{ + + // "xml" is always bound to "http://www.w3.org/XML/1998/namespace" + _namespaceBindings.put((void*)XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXMLString,(XMLCh*)XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXMLURIName); + + // "xmlns" is always bound to "http://www.w3.org/2000/xmlns/" + _namespaceBindings.put((void*)XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXMLNSString,(XMLCh*)XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXMLNSURIName); + +}//constructor + + +XQillaNSResolverImpl::~XQillaNSResolverImpl() +{ + //Nothing +}//destructor + +const XMLCh* XQillaNSResolverImpl::lookupNamespaceURI(const XMLCh* prefix) const +{ + const XERCES_CPP_NAMESPACE_QUALIFIER DOMElement *parent = XPath2NSUtils::returnOwnerElement(_resolverNode); + + while(!parent == 0 && parent->getNodeType() != XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::DOCUMENT_NODE) { + const XMLCh* uri = parent->getAttributeNS(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXMLNSURIName, prefix); + + if (uri != NULL && *uri != 0) { + return uri; + } + + //get the parent of the parent + parent = static_cast(parent->getParentNode()); + } + + const XMLCh* resolvedURI = _namespaceBindings.get((void*)prefix); + if(resolvedURI != NULL) { + if(XPath2Utils::equals(resolvedURI, g_nsBlocker)) + return NULL; + else + return resolvedURI; + } + + return NULL; + +}//lookupNamespaceURI + +const XMLCh* XQillaNSResolverImpl::lookupPrefix(const XMLCh* uri) const { + const XERCES_CPP_NAMESPACE_QUALIFIER DOMElement *parent = XPath2NSUtils::returnOwnerElement(_resolverNode); + + while(!parent == 0 && parent->getNodeType() != XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::DOCUMENT_NODE) { + + XERCES_CPP_NAMESPACE_QUALIFIER DOMNamedNodeMap *nodeList = parent->getAttributes(); + + for(unsigned int i = 0; i < nodeList->getLength(); i++) { + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *attr = nodeList->item(i); + + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::equals(attr->getNamespaceURI(), + XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXMLNSURIName)) { + + if(XPath2Utils::equals(attr->getNodeValue(), uri)) { + if(attr->getPrefix() != 0) { + return attr->getLocalName(); + } + } + + } + } + + //get the parent of the parent + parent = static_cast(parent->getParentNode()); + } + + // if we are here, it is that we found nothing in the resolverNode + XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOfEnumerator iterValue((XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf*)&_namespaceBindings); + XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOfEnumerator iterKey((XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf*)&_namespaceBindings); + while(iterValue.hasMoreElements()) { + XMLCh* key=(XMLCh*)iterKey.nextElementKey(); + if(XPath2Utils::equals(&iterValue.nextElement(), uri)) { + return key; + } + } + + return 0; + +} + +void XQillaNSResolverImpl::addNamespaceBinding(const XMLCh* prefix, const XMLCh* uri) { + if(uri==0 || *uri==0) + uri=g_nsBlocker; + _namespaceBindings.put((void*)_memMgr->getPooledString(prefix),(XMLCh*)_memMgr->getPooledString(uri)); +} + +void XQillaNSResolverImpl::release() { + this->~XQillaNSResolverImpl(); + _memMgr->deallocate(this); +} + +XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *XQillaNSResolverImpl::getResolverNode(void) +{ + return _resolverNode; +}//getResolverNode + + diff --git a/src/dom-api/impl/XQillaXMLGrammarPoolImpl.cpp b/src/dom-api/impl/XQillaXMLGrammarPoolImpl.cpp new file mode 100644 index 00000000..a3921cef --- /dev/null +++ b/src/dom-api/impl/XQillaXMLGrammarPoolImpl.cpp @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQillaXMLGrammarPoolImpl.cpp,v 1.6 2006/11/01 16:37:19 jpcs Exp $ + */ + + +#include "../../config/xqilla_config.h" +#include "XQillaXMLGrammarPoolImpl.hpp" +#include +#include + +XQillaXMLGrammarPoolImpl::XQillaXMLGrammarPoolImpl(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const memMgr) : XMLGrammarPoolImpl(memMgr) +{}; + +bool XQillaXMLGrammarPoolImpl::cacheGrammar(XERCES_CPP_NAMESPACE_QUALIFIER Grammar* const gramToCache) +{ + try { + return XMLGrammarPoolImpl::cacheGrammar(gramToCache); + } + catch(XERCES_CPP_NAMESPACE_QUALIFIER RuntimeException& e) { + //do nothing - return false because the grammar was not accepted + return false; + } + return false; +} diff --git a/src/dom-api/impl/XQillaXMLGrammarPoolImpl.hpp b/src/dom-api/impl/XQillaXMLGrammarPoolImpl.hpp new file mode 100644 index 00000000..6e517999 --- /dev/null +++ b/src/dom-api/impl/XQillaXMLGrammarPoolImpl.hpp @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQillaXMLGrammarPoolImpl.hpp,v 1.5 2006/11/01 16:37:19 jpcs Exp $ + */ + +#ifndef __XQILLAXMLGRAMMARPOOLIMPL_HPP +#define __XQILLAXMLGRAMMARPOOLIMPL_HPP + +#include +#include + + +XERCES_CPP_NAMESPACE_BEGIN +class Grammar; +class MemoryManager; +XERCES_CPP_NAMESPACE_END + +class XQillaXMLGrammarPoolImpl : public XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPoolImpl +{ +public: + + XQillaXMLGrammarPoolImpl(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const memMgr); + + /** + * This method is overriden to not throw exceptions when a repeated grammar is found, but just ignore them + **/ + virtual bool cacheGrammar(XERCES_CPP_NAMESPACE_QUALIFIER Grammar* const gramToCache); +}; + +#endif diff --git a/src/exceptions/InvalidLexicalSpaceException.hpp b/src/exceptions/InvalidLexicalSpaceException.hpp new file mode 100644 index 00000000..af17a001 --- /dev/null +++ b/src/exceptions/InvalidLexicalSpaceException.hpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: InvalidLexicalSpaceException.hpp,v 1.9 2006/11/01 16:37:19 jpcs Exp $ + */ + +/* + + Invalid Lexical Space Exception: thrown when a value is not in the appropriate lexical space + +*/ + +#ifndef _INVALIDLEXICALSPACEEXCEPTION_HPP +#define _INVALIDLEXICALSPACEEXCEPTION_HPP + +#include + +#include +#include + +class XQILLA_API InvalidLexicalSpaceException : public XQException +{ +public: + + InvalidLexicalSpaceException(const XMLCh *functionName, const XMLCh *reason, const LocationInfo *info, const char *file, int line) + : XQException(X("InvalidLexicalSpaceException"), functionName, reason, info, file, line) {}; +}; + +#endif // _INVALIDLEXICALSPACEEXCEPTION_HPP diff --git a/src/exceptions/MiscException.hpp b/src/exceptions/MiscException.hpp new file mode 100644 index 00000000..5e8687f8 --- /dev/null +++ b/src/exceptions/MiscException.hpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: MiscException.hpp,v 1.9 2006/11/01 16:37:19 jpcs Exp $ + */ + +/* + + XPath2ErrorException - handles cases in the specification where the `error value' is returned + +*/ + +#ifndef _MISCEXCEPTION_HPP +#define _MISCEXCEPTION_HPP + +#include + +#include +#include + +/** exception class for miscellaneous errors */ +class XQILLA_API MiscException : public XQException +{ +public: + + MiscException(const XMLCh *functionName, const XMLCh *reason, const LocationInfo *info, const char *file, int line) + : XQException(X("MiscException"), functionName, reason, info, file, line) {}; +}; + +#endif // _MISCEXCEPTION_HPP diff --git a/src/exceptions/XQException.cpp b/src/exceptions/XQException.cpp new file mode 100644 index 00000000..4313320b --- /dev/null +++ b/src/exceptions/XQException.cpp @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQException.cpp,v 1.7 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include + +#include +#include +#include +#include + +// This is only for Windows, to force export of +// symbols for the two exceptions -- they are not used +// elsewhere within XQilla at this time +#include +#include +void __exceptionDummy() { + try { + // do something that won't be optimized away + ::strcmp("a","b"); + } + catch (QueryTimeoutException &qte) {} + catch (QueryInterruptedException &qie) {} +} + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +XQException::XQException(const XMLCh *reason, const XMLCh* file, unsigned int line, unsigned int column, const char *cppFile, unsigned int cppLine) + : m_type(XMLString::transcode("XQException")), + m_error(XMLString::replicate(reason)), + m_cppFunction(XMLString::transcode("XQuery")), + m_cppFile(cppFile), + m_cppLine(cppLine), + m_xqLine(line), + m_xqColumn(column), + m_xqFile(XMLString::replicate(file)), + m_errorReported(false) +{ +} + +XQException::XQException(const XMLCh* const type, const XMLCh* const functionName, const XMLCh* const reason, const LocationInfo *info, const char *cppFile, unsigned int cppLine) + : m_type(XMLString::replicate(type)), + m_error(XMLString::replicate(reason)), + m_cppFunction(XMLString::replicate(functionName)), + m_cppFile(cppFile), + m_cppLine(cppLine), + m_xqLine(0), + m_xqColumn(0), + m_xqFile(0), + m_errorReported(false) +{ + if(info != 0) setXQueryPosition(info); +} + +XQException::XQException(const XQException &o) + : m_type(XMLString::replicate(o.m_type)), + m_error(XMLString::replicate(o.m_error)), + m_cppFunction(XMLString::replicate(o.m_cppFunction)), + m_cppFile(o.m_cppFile), + m_cppLine(o.m_cppLine), + m_xqLine(o.m_xqLine), + m_xqColumn(o.m_xqColumn), + m_xqFile(XMLString::replicate(o.m_xqFile)), + m_errorReported(o.m_errorReported) +{ +} + +XQException::~XQException() +{ + XMLString::release(&m_type); + XMLString::release(&m_error); + XMLString::release(&m_cppFunction); + XMLString::release(&m_xqFile); +} + +void XQException::setXQueryPosition(const XMLCh *file, unsigned int line, unsigned int column) +{ + XMLString::release(&m_xqFile); + m_xqFile = XMLString::replicate(file); + m_xqLine = line; + m_xqColumn = column; +} + +void XQException::setXQueryPosition(const LocationInfo *info) +{ + XMLString::release(&m_xqFile); + m_xqFile = XMLString::replicate(info->getFile()); + m_xqLine = info->getLine(); + m_xqColumn = info->getColumn(); +} + +void XQException::printDebug(const XMLCh* const context) const +{ + std::cerr << std::endl; + std::cerr << "===================" << std::endl; + std::cerr << UTF8(context) << std::endl << std::endl; + std::cerr << "Type: " << UTF8(m_type) << std::endl; + std::cerr << "Reason: " << UTF8(m_error) << std::endl; + std::cerr << "XQuery Location: " << UTF8(m_xqFile) << ":" << m_xqLine << ":" << m_xqColumn << std::endl; + std::cerr << "C++ Location: " << UTF8(m_cppFunction) << ", " << m_cppFile << ":" << m_cppLine << std::endl; + std::cerr << "===================" << std::endl; + +} diff --git a/src/exceptions/XQillaException.cpp b/src/exceptions/XQillaException.cpp new file mode 100644 index 00000000..a941b6e6 --- /dev/null +++ b/src/exceptions/XQillaException.cpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQillaException.cpp,v 1.5 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +bool XQillaException::_debug = false; + +XQillaException::XQillaException(const XQillaException &other): XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathException(other.code, XERCES_CPP_NAMESPACE_QUALIFIER XMLString::replicate(other.msg)) +{ + // nothing to do +} + + +XQillaException::~XQillaException() { + msg = 0; +} + +/*static*/ void XQillaException::setDebug(bool flag) +{ + _debug = flag; +} + +/*static*/ bool XQillaException::getDebug(void) +{ + return _debug; +} + +XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathException::ExceptionCode XQillaException::getCode(void) const +{ + return code; +}//getCode + +const XMLCh* XQillaException::getString(void) const +{ + return msg; +}//getString diff --git a/src/framework/BaseMemoryManager.cpp b/src/framework/BaseMemoryManager.cpp new file mode 100644 index 00000000..10fb1158 --- /dev/null +++ b/src/framework/BaseMemoryManager.cpp @@ -0,0 +1,295 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: BaseMemoryManager.cpp,v 1.8 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +#include +#include +#include +#include +#include +#include "../context/impl/VarStoreImpl.hpp" +#include "../context/impl/VarTypeStoreImpl.hpp" +#include "../functions/FunctionLookupImpl.hpp" +#include + +#include + +static const unsigned int CHUNK_SIZE = 32 * 1024; + +BaseMemoryManager::~BaseMemoryManager() +{ +} + +void BaseMemoryManager::reset() +{ + releaseAll(); + initialise(); +} + +void BaseMemoryManager::initialise() +{ + fCurrentBlock = 0; + objectsAllocated_ = 0; + totalMemoryAllocated_ = 0; + fStringPool = new (this) StringPool(this); + fIntegerPool = 0; + +} + +void BaseMemoryManager::releaseAll() +{ + if (fIntegerPool) + fIntegerPool->cleanup(); + // Run backwards through the linked list, deleting the blocks of memory + while(fCurrentBlock) { + MemList *prev = fCurrentBlock->prev; + internal_deallocate((char *)fCurrentBlock); + fCurrentBlock = prev; + } +} + +void *BaseMemoryManager::allocate(size_t amount) +{ +#if ALLOCATE_IN_CHUNKS + size_t memSize = amount + sizeof(MemAlloc); + + if(fCurrentBlock == 0 || fCurrentBlock->remaining < memSize) { + size_t chunkSize = sizeof(MemList); + if(memSize > CHUNK_SIZE) { + chunkSize += memSize; + } + else { + chunkSize += CHUNK_SIZE; + } + + char *newBlock = 0; + try { + newBlock = (char*)internal_allocate(chunkSize); + } + catch (...) {} + if(!newBlock) { + throw XQillaException(XQillaException::RUNTIME_ERR, X("BaseMemoryManager::allocate(): Out of memory")); + } + + ++objectsAllocated_; + totalMemoryAllocated_ += chunkSize; + + MemList *newMemList = (MemList*)newBlock; + newMemList->prev = fCurrentBlock; + newMemList->next = 0; + newMemList->size = chunkSize; + newMemList->remaining = chunkSize - sizeof(MemList); + newMemList->allocCount = 0; + + if(fCurrentBlock) { + fCurrentBlock->next = newMemList; + } + fCurrentBlock = newMemList; + } + + fCurrentBlock->remaining -= memSize; + ++fCurrentBlock->allocCount; + + // Carve memory from the end of the current chunk + char *mem = ((char*)fCurrentBlock) + sizeof(MemList) + + fCurrentBlock->remaining; + + MemAlloc *alloc = (MemAlloc*)mem; + alloc->list = fCurrentBlock; + + return (void*)(mem + sizeof(MemAlloc)); +#else + char *newBlock = 0; + try { + newBlock = (char*)internal_allocate(amount + sizeof(MemList)); + } + catch (...) {} + if(!newBlock) { + throw XQillaException(XQillaException::RUNTIME_ERR, X("BaseMemoryManager::allocate(): Out of memory")); + } + + ++objectsAllocated_; + totalMemoryAllocated_ += amount; + + MemList *newMemList = (MemList *)newBlock; + newMemList->prev = fCurrentBlock; + newMemList->next = 0; + newMemList->size = amount; +#if DEBUG_MEMORY + newMemList->magic = DEBUG_MEMORY_ALLOCD; +#endif + + if(fCurrentBlock) { +#if DEBUG_MEMORY + if (fCurrentBlock->magic != DEBUG_MEMORY_ALLOCD) + throw XQillaException(XQillaException::RUNTIME_ERR, X("BaseMemoryManager::allocate(): Corrupt block list")); +#endif + fCurrentBlock->next = newMemList; + } + fCurrentBlock = newMemList; + + return (void *)(newBlock + sizeof(MemList)); +#endif +} + +void BaseMemoryManager::deallocate(void* p) +{ + if(p) { +#if ALLOCATE_IN_CHUNKS + MemAlloc *alloc = (MemAlloc*)(((char*)p) - sizeof(MemAlloc)); + MemList *oldMemList = alloc->list; + + --oldMemList->allocCount; + if(oldMemList->allocCount == 0) { + // Decouple the old block from the list + if(oldMemList->prev) { + oldMemList->prev->next = oldMemList->next; + } + if(oldMemList->next) { + oldMemList->next->prev = oldMemList->prev; + } + else { + // If the old block doesn't have a next, it must currently be fCurrentBlock + fCurrentBlock = oldMemList->prev; + } + + --objectsAllocated_; + totalMemoryAllocated_ -= oldMemList->size; + + internal_deallocate((void*)oldMemList); + } +#else + char *oldBlock = ((char *)p) - sizeof(MemList); + MemList *oldMemList = (MemList *)oldBlock; +#if DEBUG_MEMORY + if (oldMemList->magic != DEBUG_MEMORY_ALLOCD) { + if (oldMemList->magic == DEBUG_MEMORY_FREED) + throw XQillaException(XQillaException::RUNTIME_ERR, X("BaseMemoryManager::deallocate(): Trying to free free'd memory")); + else + throw XQillaException(XQillaException::RUNTIME_ERR, X("BaseMemoryManager::deallocate(): Trying to free unalloc'd memory")); + } else + oldMemList->magic = DEBUG_MEMORY_FREED; +#endif + + // Decouple the old block from the list + if(oldMemList->prev) { +#if DEBUG_MEMORY + if (oldMemList->prev->magic != DEBUG_MEMORY_ALLOCD) { + if (oldMemList->prev->magic == DEBUG_MEMORY_FREED) + throw XQillaException(XQillaException::RUNTIME_ERR, X("BaseMemoryManager::deallocate(): Free'd memory found on list")); + else + throw XQillaException(XQillaException::RUNTIME_ERR, X("BaseMemoryManager::deallocate(): stray memory found on list")); + } +#endif + oldMemList->prev->next = oldMemList->next; + } + if(oldMemList->next) { +#if DEBUG_MEMORY + if (oldMemList->next->magic != DEBUG_MEMORY_ALLOCD) { + if (oldMemList->next->magic == DEBUG_MEMORY_FREED) + throw XQillaException(XQillaException::RUNTIME_ERR, X("BaseMemoryManager::deallocate(): Free'd memory found on list (next)")); + else + throw XQillaException(XQillaException::RUNTIME_ERR, X("BaseMemoryManager::deallocate(): stray memory found on list (next)")); + } +#endif + oldMemList->next->prev = oldMemList->prev; + } + else { + // If the old block doesn't have a next, it must currently be fCurrentBlock + fCurrentBlock = oldMemList->prev; + } +#if DEBUG_MEMORY + if (fCurrentBlock && fCurrentBlock->magic != DEBUG_MEMORY_ALLOCD) { + if (fCurrentBlock->magic == DEBUG_MEMORY_FREED) + throw XQillaException(XQillaException::RUNTIME_ERR, X("BaseMemoryManager::deallocate(): Free'd memory found on list (fCurrent)")); + else + throw XQillaException(XQillaException::RUNTIME_ERR, X("BaseMemoryManager::deallocate(): stray memory found on list (fCurrent)")); + } +#endif + --objectsAllocated_; + totalMemoryAllocated_ -= oldMemList->size; + + internal_deallocate(oldBlock); +#endif + } +} + +const XMLCh *BaseMemoryManager::getPooledString(const XMLCh *src) +{ + return fStringPool->getPooledString(src); +} + +const XMLCh *BaseMemoryManager::getPooledString(const char *src) +{ + return fStringPool->getPooledString(src); +} + +void BaseMemoryManager::dumpStatistics() const +{ + std::cout << "Memory statistics:" << std::endl; + + fStringPool->dumpStatistics(); + + std::cout << "\tAllocated objects: " << objectsAllocated_ << std::endl; + std::cout << "\tTotal Memory Allocated: " << totalMemoryAllocated_ << std::endl; +} + +/** create a collation */ +Collation* BaseMemoryManager::createCollation(CollationHelper* helper) { + return new (this) CollationImpl(this,helper); +} + +/** create a resolver */ +XQillaNSResolver* BaseMemoryManager::createNSResolver(DOMNode *resolverNode) { + return new (this) XQillaNSResolverImpl(this, resolverNode); +} + +/** create a store for variables */ +VariableStore* BaseMemoryManager::createVariableStore() { + return new (this) VarStoreImpl(this); +} + +/** create a store for variables */ +VariableTypeStore* BaseMemoryManager::createVariableTypeStore() { + return new (this) VarTypeStoreImpl(this); +} + +/** create a function table */ +FunctionLookup* BaseMemoryManager::createFunctionTable() { + return new (this) FunctionLookupImpl(this); +} + +/** create a ATDecimalOrDerived for the given integer */ +ATDecimalOrDerived* BaseMemoryManager::createInteger(int value) { + if (!fIntegerPool) + fIntegerPool = new (this) RefHashTableOf(53,true, new (this) HashPtr(),this); + + ATDecimalOrDerived* itemValue=fIntegerPool->get((const void*)value); + if(itemValue!=NULL) + return itemValue; + itemValue=new ATDecimalOrDerivedImpl(value); + itemValue->incrementRefCount(); + fIntegerPool->put((void*)value, itemValue); + return itemValue; +} diff --git a/src/framework/ProxyMemoryManager.cpp b/src/framework/ProxyMemoryManager.cpp new file mode 100644 index 00000000..d3d565ae --- /dev/null +++ b/src/framework/ProxyMemoryManager.cpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ProxyMemoryManager.cpp,v 1.7 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +ProxyMemoryManager::ProxyMemoryManager(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *parent) + : parent_(parent) +{ + initialise(); +} + +ProxyMemoryManager::~ProxyMemoryManager() +{ + releaseAll(); +} + +void *ProxyMemoryManager::internal_allocate(size_t size) +{ + return parent_->allocate(size); +} + +void ProxyMemoryManager::internal_deallocate(void *p) +{ + parent_->deallocate(p); +} + diff --git a/src/framework/ReferenceCounted.cpp b/src/framework/ReferenceCounted.cpp new file mode 100644 index 00000000..4a726326 --- /dev/null +++ b/src/framework/ReferenceCounted.cpp @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ReferenceCounted.cpp,v 1.7 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +// ReferenceCounted::ReferenceCounted(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *mm) +// : _ref_count(0), +// _ref_mm(mm) +// { +// // Do nothing +// } + +// ReferenceCounted::~ReferenceCounted() +// { +// // Do nothing +// } + +// void ReferenceCounted::incrementRefCount() const +// { +// ++const_cast(_ref_count); +// } + +// void ReferenceCounted::decrementRefCount() const +// { +// if(--const_cast(_ref_count) == 0) { +// if(_ref_mm == 0) { +// delete this; +// } +// else { +// this->~ReferenceCounted(); +// operator delete((void*)this, _ref_mm); +// } +// } +// } diff --git a/src/framework/StringPool.cpp b/src/framework/StringPool.cpp new file mode 100644 index 00000000..d505a1bf --- /dev/null +++ b/src/framework/StringPool.cpp @@ -0,0 +1,204 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: StringPool.cpp,v 1.7 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +static const unsigned int initialModulus = 233; +static const unsigned int lengthThreshold = 100; + +StringPool::StringPool(MemoryManager *mm) + : _mm(mm), + _bucketList(0), + _modulus(initialModulus), + _count(0), + _hits(0), + _misses(0), + _toobig(0) +{ + _bucketList = (Bucket**)_mm->allocate(_modulus * sizeof(Bucket*)); + memset(_bucketList, 0, _modulus * sizeof(Bucket*)); +} + +StringPool::~StringPool() +{ + Bucket *bucket, *next; + for(unsigned int i = 0; i < _modulus; ++i) { + bucket = _bucketList[i]; + while(bucket != 0) { + next = bucket->next; + _mm->deallocate((void*)bucket->value); + _mm->deallocate(bucket); + bucket = next; + } + } + _mm->deallocate(_bucketList); +} + +const XMLCh *StringPool::getPooledString(const XMLCh *src) +{ + if(src == 0) return 0; + if(*src == 0) return XMLUni::fgZeroLenString; + + // strings longer than lengthThreshold bytes are not pooled, as it is not probable they can be recycled + const XMLCh* pszTmp = src + 1; + while(*pszTmp) ++pszTmp; + unsigned int length = (unsigned int)(pszTmp - src); + + if(length > lengthThreshold) { + ++_toobig; + return replicate(src, length); + } + + unsigned int hashVal = hash(src); + unsigned int modHashVal = hashVal % _modulus; + + const Bucket *bucket = _bucketList[modHashVal]; + while(bucket) { + if(bucket->length == length && + XPath2Utils::equals(bucket->value, src)) { + break; + } + bucket = bucket->next; + } + + if(bucket) { + ++_hits; + return bucket->value; + } + else { + ++_misses; + if(_count >= (_modulus * 3 / 4)) { + resize(); + modHashVal = hashVal % _modulus; + } + + const XMLCh *result = replicate(src, length); + _bucketList[modHashVal] = new (_mm->allocate(sizeof(Bucket))) + Bucket(result, length, hashVal, _bucketList[modHashVal]); + ++_count; + + return result; + } +} + +const XMLCh *StringPool::getPooledString(const char *src) +{ + if(src == 0) return 0; + if(*src == 0) return XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString; + + XMLCh *transcoded = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::transcode(src, _mm); + if(!transcoded) return 0; + + // strings longer than lengthThreshold bytes are not pooled, as it is not probable they can be recycled + const XMLCh* pszTmp = transcoded + 1; + while(*pszTmp) ++pszTmp; + unsigned int length = (unsigned int)(pszTmp - transcoded); + + if(length > lengthThreshold) { + ++_toobig; + return transcoded; + } + + unsigned int hashVal = hash(transcoded); + unsigned int modHashVal = hashVal % _modulus; + + const Bucket *bucket = _bucketList[modHashVal]; + while(bucket) { + if(bucket->length == length && + XPath2Utils::equals(bucket->value, transcoded)) { + break; + } + bucket = bucket->next; + } + + if(bucket) { + ++_hits; + _mm->deallocate(transcoded); + return bucket->value; + } + else { + ++_misses; + if(_count >= (_modulus * 3 / 4)) { + resize(); + modHashVal = hashVal % _modulus; + } + + _bucketList[modHashVal] = new (_mm->allocate(sizeof(Bucket))) + Bucket(transcoded, length, hashVal, _bucketList[modHashVal]); + ++_count; + + return transcoded; + } +} + +void StringPool::resize() +{ + unsigned int new_modulus = (_modulus << 1) + 1; + Bucket **new_bucketList = (Bucket**)_mm->allocate(new_modulus * sizeof(Bucket*)); + memset(new_bucketList, 0, new_modulus * sizeof(Bucket*)); + + unsigned int modHashVal; + Bucket *bucket, *next; + for(unsigned int i = 0; i < _modulus; ++i) { + bucket = _bucketList[i]; + while(bucket != 0) { + next = bucket->next; + + modHashVal = bucket->hashValue % new_modulus; + bucket->next = new_bucketList[modHashVal]; + new_bucketList[modHashVal] = bucket; + + bucket = next; + } + } + + _mm->deallocate(_bucketList); + _bucketList = new_bucketList; + _modulus = new_modulus; +} + +void StringPool::dumpStatistics() const +{ + std::cout << "\tStringPool count: " << _count << std::endl; + std::cout << "\tStringPool hits: " << _hits << std::endl; + std::cout << "\tStringPool misses: " << _misses << std::endl; + std::cout << "\tStringPool too big: " << _toobig << std::endl; + std::cout << "\tStringPool modulo: " << _modulus << std::endl; + unsigned int zero=0, maxn=0; + for(unsigned int i=0;i<_modulus;i++) + if(_bucketList[i]==NULL) + zero++; + else + { + unsigned int n=0; + const Bucket *bucket = _bucketList[i]; + while(bucket) { + n++; + bucket = bucket->next; + } + if (n > maxn) + maxn = n; + } + std::cout << "\tStringPool empty buckets: " << zero << std::endl; + std::cout << "\tStringPool max buckets: " << maxn << std::endl; +} diff --git a/src/framework/XPath2MemoryManagerImpl.cpp b/src/framework/XPath2MemoryManagerImpl.cpp new file mode 100644 index 00000000..ef004b9f --- /dev/null +++ b/src/framework/XPath2MemoryManagerImpl.cpp @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XPath2MemoryManagerImpl.cpp,v 1.7 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +XPath2MemoryManagerImpl::XPath2MemoryManagerImpl() +{ + initialise(); +} + +XPath2MemoryManagerImpl::~XPath2MemoryManagerImpl() +{ + releaseAll(); +} + +#ifdef WIN_USE_HEAP +void *XPath2MemoryManagerImpl::allocate(size_t amount) +{ + ++objectsAllocated_; + totalMemoryAllocated_ += amount; + return HeapAlloc(fHeap,HEAP_NO_SERIALIZE|HEAP_ZERO_MEMORY,amount); +} + +void XPath2MemoryManagerImpl::deallocate(void* p) +{ + --objectsAllocated_; + totalMemoryAllocated_ -= HeapSize(fHeap,HEAP_NO_SERIALIZE,p); + HeapFree(fHeap,HEAP_NO_SERIALIZE,p); +} + +void XPath2MemoryManagerImpl::initialise() +{ + fHeap=HeapCreate(HEAP_NO_SERIALIZE,128*1024,0); + BaseMemoryManager::initialise(); +} + +void XPath2MemoryManagerImpl::releaseAll() +{ + BaseMemoryManager::releaseAll(); + HeapDestroy(fHeap); +} + +#else + +void *XPath2MemoryManagerImpl::internal_allocate(size_t size) +{ + return new char[size]; +} + +void XPath2MemoryManagerImpl::internal_deallocate(void *p) +{ + delete [] ((char *)p); +} + +#endif + diff --git a/src/fulltext/DefaultTokenStore.cpp b/src/fulltext/DefaultTokenStore.cpp new file mode 100644 index 00000000..7f99f716 --- /dev/null +++ b/src/fulltext/DefaultTokenStore.cpp @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DefaultTokenStore.cpp,v 1.3 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +DefaultTokenStore::DefaultTokenStore(const Node::Ptr &node, const Tokenizer *tokenizer, + DynamicContext *context) + : tokens_(73, /*adoptElems*/true, context->getMemoryManager()), + numTokens_(0), + mm_(context->getMemoryManager()), + buffer_(1023, context->getMemoryManager()) +{ + TokenStream::Ptr stream = tokenizer->tokenize(node, context); + TokenInfo::Ptr token; + while((token = stream->next()).notNull()) { + ++numTokens_; + buffer_.reset(); + Normalizer::caseFoldAndRemoveDiacritics(token->getWord(), buffer_); + + TokenEntry *entry = tokens_.get(buffer_.getRawBuffer()); + if(entry == 0) { + entry = new TokenEntry(); + tokens_.put((void*)mm_->getPooledString(buffer_.getRawBuffer()), entry); + } + entry->addToken(token); + } +} + +DefaultTokenStore::DefaultTokenStore(XPath2MemoryManager *mm) + : tokens_(3, /*adoptElems*/true, mm), + numTokens_(0), + mm_(mm), + buffer_(0, mm) +{ +} + +TokenStream::Ptr DefaultTokenStore::findTokens(const XMLCh *searchString) const +{ + buffer_.reset(); + Normalizer::caseFoldAndRemoveDiacritics(searchString, buffer_); + + const TokenEntry *entry = tokens_.get(buffer_.getRawBuffer()); + if(entry == 0) return 0; + return entry->getTokenStream(); +} diff --git a/src/fulltext/DefaultTokenizer.cpp b/src/fulltext/DefaultTokenizer.cpp new file mode 100644 index 00000000..4144bd4a --- /dev/null +++ b/src/fulltext/DefaultTokenizer.cpp @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DefaultTokenizer.cpp,v 1.2 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +TokenStream::Ptr DefaultTokenizer::tokenize(const Node::Ptr &node, DynamicContext *context) const +{ + return new DefaultTokenStream(node->dmStringValue(context), context->getMemoryManager()); +} + +TokenStream::Ptr DefaultTokenizer::tokenize(const XMLCh *str, XPath2MemoryManager *mm) const +{ + return new DefaultTokenStream(str, mm); +} + +DefaultTokenizer::DefaultTokenStream::DefaultTokenStream(const XMLCh *str, XPath2MemoryManager *mm) + : string_(XMLString::replicate(str, mm)), + current_(string_), + tokenStart_(0), + position_(0), + sentence_(0), + paragraph_(0), + seenEndOfSentence_(false), + mm_(mm) +{ +} + +DefaultTokenizer::DefaultTokenStream::~DefaultTokenStream() +{ + mm_->deallocate(string_); +} + +#define REPORT_TOKEN \ + if(tokenStart_ != 0) { \ + *current_ = 0; \ + result = new DefaultTokenInfo(mm_->getPooledString(tokenStart_), position_, sentence_, paragraph_); \ + ++position_; \ + tokenStart_ = 0; \ + } + + +TokenInfo::Ptr DefaultTokenizer::DefaultTokenStream::next() +{ + TokenInfo::Ptr result(0); + while(result.isNull()) { + switch(*current_) { + case '\n': { + REPORT_TOKEN; + if(seenEndOfSentence_) { + ++paragraph_; + seenEndOfSentence_ = false; + } + break; + } + case '!': + case '?': + case ':': + case '.': { + REPORT_TOKEN; + if(!seenEndOfSentence_) { + ++sentence_; + seenEndOfSentence_ = true; + } + break; + } + case '\r': + case '\t': + case ' ': + case '"': + case '\'': + case '`': + case ';': + case ',': { + REPORT_TOKEN; + break; + } + case 0: { + REPORT_TOKEN; + return result; + } + default: { + if(tokenStart_ == 0) { + tokenStart_ = current_; + seenEndOfSentence_ = false; + } + break; + } + } + + ++current_; + } + + return result; +} diff --git a/src/fulltext/FTAnd.cpp b/src/fulltext/FTAnd.cpp new file mode 100644 index 00000000..c9366704 --- /dev/null +++ b/src/fulltext/FTAnd.cpp @@ -0,0 +1,202 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTAnd.cpp,v 1.4 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +using namespace std; + +FTAnd::FTAnd(XPath2MemoryManager *memMgr) + : FTSelection(AND, memMgr), + args_(memMgr) +{ +} + +FTAnd::FTAnd(FTSelection *left, FTSelection *right, XPath2MemoryManager *memMgr) + : FTSelection(AND, memMgr), + args_(memMgr) +{ + args_.push_back(left); + args_.push_back(right); +} + +FTSelection *FTAnd::staticResolution(StaticContext *context) +{ + for(VectorOfFTSelections::iterator i = args_.begin(); + i != args_.end(); ++i) { + *i = (*i)->staticResolution(context); + } + + return this; +} + +FTSelection *FTAnd::staticTyping(StaticContext *context) +{ + src_.clear(); + + for(VectorOfFTSelections::iterator i = args_.begin(); + i != args_.end(); ++i) { + *i = (*i)->staticTyping(context); + src_.add((*i)->getStaticResolutionContext()); + } + + return this; +} + +FTSelection *FTAnd::optimize(FTContext *ftcontext, bool execute) const +{ + XPath2MemoryManager *mm = ftcontext->context->getMemoryManager(); + + FTAnd *ftand = new (mm) FTAnd(mm); + ftand->setLocationInfo(this); + + for(VectorOfFTSelections::const_iterator i = args_.begin(); + i != args_.end(); ++i) { + FTSelection *arg = (*i)->optimize(ftcontext, execute); + if(arg == 0) return 0; + ftand->addArg(arg); + } + + if(ftand->args_.empty()) { + return 0; + } + if(ftand->args_.size() == 1) { + return ftand->args_.back(); + } + + return ftand; +} + +AllMatches::Ptr FTAnd::execute(FTContext *ftcontext) const +{ + FTConjunctionMatches *conjunction = new FTConjunctionMatches(this); + AllMatches::Ptr result(conjunction); + + for(VectorOfFTSelections::const_iterator i = args_.begin(); + i != args_.end(); ++i) { + conjunction->addMatches((*i)->execute(ftcontext)); + } + + return result; +} + +BufferedMatches::BufferedMatches(const LocationInfo *info, const AllMatches::Ptr matches) + : AllMatches(info), + matches_(matches), + buffer_(), + it_(buffer_.begin()) +{ +} + +Match::Ptr BufferedMatches::current() +{ + if(it_ == buffer_.begin()) return 0; + Match::Ptr match = *--it_; + ++it_; + return match; +} + +Match::Ptr BufferedMatches::next(DynamicContext *context) +{ + if(it_ != buffer_.end()) return *it_++; + + if(matches_.notNull()) { + Match::Ptr match = matches_->next(context); + if(match.isNull()) { + matches_ = 0; + } + else { + buffer_.push_back(match); + return match; + } + } + + return 0; +} + +void BufferedMatches::reset() +{ + it_ = buffer_.begin(); +} + +FTConjunctionMatches::FTConjunctionMatches(const LocationInfo *info) + : AllMatches(info), + toDo_(true) +{ +} + +void FTConjunctionMatches::addMatches(const AllMatches::Ptr &m) +{ + args_.push_back(m.notNull() ? new BufferedMatches(this, m) : 0); +} + +Match::Ptr FTConjunctionMatches::next(DynamicContext *context) +{ + // TBD need to check for StringInclude / StringExclude contradictions + + vector::reverse_iterator rend = args_.rend(); + vector::reverse_iterator rbegin = args_.rbegin(); + vector::reverse_iterator it; + + bool initialisationState = false; + if(toDo_) { + toDo_ = false; + initialisationState = true; + } + + if(initialisationState) { + it = rend; + } + else { + it = rbegin; + } + + while(true) { + if(initialisationState) { + if(it == rbegin) { + break; + } + else { + --it; + (*it)->reset(); + if((*it)->next(context).isNull()) { + initialisationState = false; + ++it; + } + } + } + else { + if(it == rend) { + args_.clear(); + return 0; + } + else { + if((*it)->next(context).notNull()) { + initialisationState = true; + } + else { + ++it; + } + } + } + } + + Match::Ptr result = new Match(); + for(vector::iterator i = args_.begin(); + i != args_.end(); ++i) { + result->add((*i)->current()); + } + + return result; +} diff --git a/src/fulltext/FTContains.cpp b/src/fulltext/FTContains.cpp new file mode 100644 index 00000000..d2115469 --- /dev/null +++ b/src/fulltext/FTContains.cpp @@ -0,0 +1,161 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTContains.cpp,v 1.4 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +FTContains::FTContains(ASTNode *argument, FTSelection *selection, ASTNode *ignore, XPath2MemoryManager* memMgr) + : ASTNodeImpl(memMgr), + argument_(argument), + selection_(selection), + ignore_(ignore) +{ + setType(ASTNode::FTCONTAINS); +} + +FTContains::~FTContains() +{ + //no-op +} + +ASTNode* FTContains::staticResolution(StaticContext *context) +{ + argument_ = argument_->staticResolution(context); + selection_ = selection_->staticResolution(context); + + if(ignore_ != NULL) { + ignore_ = ignore_->staticResolution(context); + } + + return this; +} + +ASTNode *FTContains::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; + + argument_ = argument_->staticTyping(context); + _src.add(argument_->getStaticResolutionContext()); + + selection_ = selection_->staticTyping(context); + _src.add(selection_->getStaticResolutionContext()); + + { + AutoDelete dContext(context->createDynamicContext()); + dContext->setMemoryManager(context->getMemoryManager()); + DefaultTokenizer tokenizer; + FTContext ftcontext(&tokenizer, 0, dContext); + selection_ = selection_->optimize(&ftcontext, /*execute*/false); + } + + if(ignore_ != NULL) { + ignore_ = ignore_->staticTyping(context); + _src.add(ignore_->getStaticResolutionContext()); + } + + return this; +} + +Result FTContains::createResult(DynamicContext* context, int flags) const +{ + return new FTContainsResult(this); +} + +FTContains::FTContainsResult::FTContainsResult(const FTContains *parent) + : SingleResult(parent), + parent_(parent) +{ +} + +Item::Ptr FTContains::FTContainsResult::getSingleResult(DynamicContext *context) const +{ + // TBD deal with ignore nodes + + DefaultTokenizer tokenizer; + + Result argNodes = parent_->getArgument()->collapseTree(context); + Item::Ptr item; + while((item = argNodes->next(context)).notNull()) { + if(!item->isNode()) + XQThrow(XPath2TypeMatchException, X("FTContains::FTContainsResult::getSingleResult"), + X("The argument to ftcontains contains non nodes [err:XPTY0004]")); + + FTContext ftcontext(&tokenizer, new DefaultTokenStore((Node*)item.get(), &tokenizer, context), context); + + FTSelection *optimizedSelection = parent_->getSelection()->optimize(&ftcontext, /*execute*/true); + + AllMatches::Ptr matches = optimizedSelection->execute(&ftcontext); + if(matches.notNull()) { + StringMatches::const_iterator i; + StringMatches::const_iterator end; + + Match::Ptr match(0); + while((match = matches->next(context)).notNull()) { + + bool fail = false; + i = match->getStringIncludes().begin(); + end = match->getStringIncludes().end(); + for(; i != end; ++i) { + if(i->startToken && i->tokenInfo->getPosition() != + ftcontext.tokenStore->getStartTokenPosition()) { + fail = true; + break; + } + if(i->endToken && i->tokenInfo->getPosition() != + ftcontext.tokenStore->getEndTokenPosition()) { + fail = true; + break; + } + } + + if(fail) continue; + + i = match->getStringExcludes().begin(); + end = match->getStringExcludes().end(); + for(; i != end; ++i) { + if(i->startToken && i->tokenInfo->getPosition() != + ftcontext.tokenStore->getStartTokenPosition()) { + continue; + } + if(i->endToken && i->tokenInfo->getPosition() != + ftcontext.tokenStore->getEndTokenPosition()) { + continue; + } + fail = true; + break; + } + + if(fail) continue; + + return context->getItemFactory()->createBoolean(true, context); + } + } + } + + return context->getItemFactory()->createBoolean(false, context); +} + +std::string FTContains::FTContainsResult::asString(DynamicContext *context, int indent) const +{ + return ""; +} diff --git a/src/fulltext/FTContent.cpp b/src/fulltext/FTContent.cpp new file mode 100644 index 00000000..60905471 --- /dev/null +++ b/src/fulltext/FTContent.cpp @@ -0,0 +1,163 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTContent.cpp,v 1.4 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include + +FTSelection *FTContent::staticResolution(StaticContext *context) +{ + arg_ = arg_->staticResolution(context); + return this; +} + +FTSelection *FTContent::staticTyping(StaticContext *context) +{ + src_.clear(); + + arg_ = arg_->staticTyping(context); + src_.add(arg_->getStaticResolutionContext()); + + return this; +} + +FTSelection *FTContent::optimize(FTContext *ftcontext, bool execute) const +{ + XPath2MemoryManager *mm = ftcontext->context->getMemoryManager(); + + FTSelection *newarg = arg_->optimize(ftcontext, execute); + if(newarg == 0) return 0; + + if(type_ == ENTIRE_CONTENT) { + newarg = new (mm) FTDistanceLiteral(newarg, FTRange::EXACTLY, 0, 0, FTOption::WORDS, mm); + newarg->setLocationInfo(this); + newarg = new (mm) FTContent(newarg, AT_START, mm); + newarg->setLocationInfo(this); + newarg = new (mm) FTContent(newarg, AT_END, mm); + newarg->setLocationInfo(this); + } + else { + newarg = new (mm) FTContent(newarg, type_, mm); + newarg->setLocationInfo(this); + } + + return newarg; +} + +AllMatches::Ptr FTContent::execute(FTContext *ftcontext) const +{ + switch(type_) { + case AT_START: + return new FTContentAtStartMatches(this, arg_->execute(ftcontext)); + case AT_END: + return new FTContentAtEndMatches(this, arg_->execute(ftcontext)); + default: + // ENTIRE_CONTENT is handled by optimize() + assert(0); + break; + } + return 0; +} + +Match::Ptr FTContentAtStartMatches::next(DynamicContext *context) +{ + if(arg_.isNull()) return 0; + + StringMatches::const_iterator smallest; + Match::Ptr match(0); + while(match.isNull()) { + match = arg_->next(context); + if(match.isNull()) { + arg_ = 0; + return 0; + } + + StringMatches::const_iterator i = match->getStringIncludes().begin(); + StringMatches::const_iterator end = match->getStringIncludes().end(); + if(i != end) { + smallest = i; + for(++i; i != end; ++i) { + if(i->tokenInfo->getPosition() < smallest->tokenInfo->getPosition()) { + smallest = i; + } + } + } + else { + match = 0; + } + } + + Match::Ptr result = new Match(); + StringMatches::const_iterator i = match->getStringIncludes().begin(); + StringMatches::const_iterator end = match->getStringIncludes().end(); + for(; i != end; ++i) { + if(i == smallest) { + StringMatch sm(*i); + sm.startToken = true; + result->addStringInclude(sm); + } + else { + result->addStringInclude(*i); + } + } + result->addStringExcludes(match->getStringExcludes()); + + return result; +} + +Match::Ptr FTContentAtEndMatches::next(DynamicContext *context) +{ + if(arg_.isNull()) return 0; + + StringMatches::const_iterator largest; + Match::Ptr match(0); + while(match.isNull()) { + match = arg_->next(context); + if(match.isNull()) { + arg_ = 0; + return 0; + } + + StringMatches::const_iterator i = match->getStringIncludes().begin(); + StringMatches::const_iterator end = match->getStringIncludes().end(); + if(i != end) { + largest = i; + for(++i; i != end; ++i) { + if(i->tokenInfo->getPosition() > largest->tokenInfo->getPosition()) { + largest = i; + } + } + } + else { + match = 0; + } + } + + Match::Ptr result = new Match(); + StringMatches::const_iterator i = match->getStringIncludes().begin(); + StringMatches::const_iterator end = match->getStringIncludes().end(); + for(; i != end; ++i) { + if(i == largest) { + StringMatch sm(*i); + sm.endToken = true; + result->addStringInclude(sm); + } + else { + result->addStringInclude(*i); + } + } + result->addStringExcludes(match->getStringExcludes()); + + return result; +} diff --git a/src/fulltext/FTDistance.cpp b/src/fulltext/FTDistance.cpp new file mode 100644 index 00000000..86b64b9b --- /dev/null +++ b/src/fulltext/FTDistance.cpp @@ -0,0 +1,261 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTDistance.cpp,v 1.4 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +FTSelection *FTDistance::staticResolution(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + SequenceType *seqType = new (mm) SequenceType(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER, + SequenceType::EXACTLY_ONE, mm); + seqType->setLocationInfo(this); + + arg_ = arg_->staticResolution(context); + + range_.arg1 = new (mm) XQAtomize(range_.arg1, mm); + range_.arg1->setLocationInfo(this); + range_.arg1 = new (mm) XQTreatAs(range_.arg1, seqType, mm); + range_.arg1->setLocationInfo(this); + range_.arg1 = range_.arg1->staticResolution(context); + + if(range_.arg2 != NULL) { + range_.arg2 = new (mm) XQAtomize(range_.arg2, mm); + range_.arg2->setLocationInfo(this); + range_.arg2 = new (mm) XQTreatAs(range_.arg2, seqType, mm); + range_.arg2->setLocationInfo(this); + range_.arg2 = range_.arg2->staticResolution(context); + } + + return this; +} + +FTSelection *FTDistance::staticTyping(StaticContext *context) +{ + src_.clear(); + + arg_ = arg_->staticTyping(context); + src_.add(arg_->getStaticResolutionContext()); + + range_.arg1 = range_.arg1->staticTyping(context); + src_.add(range_.arg1->getStaticResolutionContext()); + + if(range_.arg2 != NULL) { + range_.arg2 = range_.arg2->staticTyping(context); + src_.add(range_.arg2->getStaticResolutionContext()); + } + + return this; +} + +FTSelection *FTDistance::optimize(FTContext *ftcontext, bool execute) const +{ + XPath2MemoryManager *mm = ftcontext->context->getMemoryManager(); + + if(execute || range_.arg1->isConstant()) { + Result rangeResult = range_.arg1->collapseTree(ftcontext->context); + Numeric::Ptr num = (Numeric::Ptr)rangeResult->next(ftcontext->context); + long distance = ::atol(UTF8(num->asString(ftcontext->context))); + + switch(range_.type) { + case FTRange::EXACTLY: { + FTSelection *result = new (mm) FTDistanceLiteral(arg_, FTRange::EXACTLY, distance, 0, unit_, mm); + result->setLocationInfo(this); + return result->optimize(ftcontext, execute); + } + case FTRange::AT_LEAST: { + FTSelection *result = new (mm) FTDistanceLiteral(arg_, FTRange::AT_LEAST, distance, 0, unit_, mm); + result->setLocationInfo(this); + return result->optimize(ftcontext, execute); + } + case FTRange::AT_MOST: { + FTSelection *result = new (mm) FTDistanceLiteral(arg_, FTRange::AT_MOST, distance, 0, unit_, mm); + result->setLocationInfo(this); + return result->optimize(ftcontext, execute); + } + case FTRange::FROM_TO: { + Result rangeResult2 = range_.arg2->collapseTree(ftcontext->context); + Numeric::Ptr num2 = (Numeric::Ptr)rangeResult2->next(ftcontext->context); + long distance2 = ::atol(UTF8(num->asString(ftcontext->context))); + + FTSelection *result = new (mm) FTDistanceLiteral(arg_, FTRange::FROM_TO, distance, distance2, unit_, mm); + result->setLocationInfo(this); + return result->optimize(ftcontext, execute); + } + } + } + + FTSelection *newarg = arg_->optimize(ftcontext, execute); + if(newarg == 0) return 0; + + if(newarg->getType() == WORD) { + return newarg; + } + + newarg = new (mm) FTDistance(range_, unit_, newarg, mm); + newarg->setLocationInfo(this); + return newarg; +} + +AllMatches::Ptr FTDistance::execute(FTContext *ftcontext) const +{ + assert(0); + return 0; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +FTSelection *FTDistanceLiteral::staticResolution(StaticContext *context) +{ + arg_ = arg_->staticResolution(context); + return this; +} + +FTSelection *FTDistanceLiteral::staticTyping(StaticContext *context) +{ + src_.clear(); + + arg_ = arg_->staticTyping(context); + src_.add(arg_->getStaticResolutionContext()); + + return this; +} + +FTSelection *FTDistanceLiteral::optimize(FTContext *ftcontext, bool execute) const +{ + XPath2MemoryManager *mm = ftcontext->context->getMemoryManager(); + + FTSelection *newarg = arg_->optimize(ftcontext, execute); + if(newarg == 0) return 0; + + if(newarg->getType() == WORD) { + return newarg; + } + + newarg = new (mm) FTDistanceLiteral(newarg, type_, distance_, distance2_, unit_, mm); + newarg->setLocationInfo(this); + return newarg; +} + +AllMatches::Ptr FTDistanceLiteral::execute(FTContext *ftcontext) const +{ + switch(type_) { + case FTRange::EXACTLY: { + return new FTDistanceExactlyMatches(this, distance_, unit_, arg_->execute(ftcontext)); + } + case FTRange::AT_LEAST: { + return new FTDistanceAtLeastMatches(this, distance_, unit_, arg_->execute(ftcontext)); + } + case FTRange::AT_MOST: { + return new FTDistanceAtMostMatches(this, distance_, unit_, arg_->execute(ftcontext)); + } + case FTRange::FROM_TO: { + return new FTDistanceFromToMatches(this, distance_, distance2_, unit_, arg_->execute(ftcontext)); + } + default: + assert(0); + break; + } + return 0; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +static bool lessThanCompareFn(const StringMatch &first, const StringMatch &second) +{ + return first.tokenInfo->getPosition() < second.tokenInfo->getPosition(); +} + +Match::Ptr FTDistanceMatches::next(DynamicContext *context) +{ + if(arg_.isNull()) return 0; + + Match::Ptr match(0); + while(match.isNull()) { + match = arg_->next(context); + if(match.isNull()) { + arg_ = 0; + return 0; + } + + if(match->getStringIncludes().size() > 1) { + StringMatches sMatches = match->getStringIncludes(); + std::sort(sMatches.begin(), sMatches.end(), lessThanCompareFn); + + StringMatches::iterator end = sMatches.end(); + StringMatches::iterator a = sMatches.begin(); + StringMatches::iterator b = a; ++b; + for(; b != end; ++a, ++b) { + unsigned int actual = FTOption::tokenDistance(a->tokenInfo, b->tokenInfo, unit_); + if(!distanceMatches(actual)) { + match = 0; + break; + } + } + } + } + + Match::Ptr result = new Match(); + result->addStringIncludes(match->getStringIncludes()); + + for(StringMatches::const_iterator i = match->getStringExcludes().begin(); + i != match->getStringExcludes().end(); ++i) { + for(StringMatches::const_iterator j = match->getStringIncludes().begin(); + j != match->getStringIncludes().end(); ++j) { + unsigned int actual = FTOption::tokenDistance(i->tokenInfo, j->tokenInfo, unit_); + if(distanceMatches(actual)) { + result->addStringExclude(*i); + break; + } + } + } + + return result; +} + +bool FTDistanceExactlyMatches::distanceMatches(unsigned int actual) const +{ + return actual == distance_; +} + +bool FTDistanceAtLeastMatches::distanceMatches(unsigned int actual) const +{ + return actual >= distance_; +} + +bool FTDistanceAtMostMatches::distanceMatches(unsigned int actual) const +{ + return actual <= distance_; +} + +bool FTDistanceFromToMatches::distanceMatches(unsigned int actual) const +{ + return distance_ <= actual && actual <= distance2_; +} diff --git a/src/fulltext/FTMildnot.cpp b/src/fulltext/FTMildnot.cpp new file mode 100644 index 00000000..fec677ec --- /dev/null +++ b/src/fulltext/FTMildnot.cpp @@ -0,0 +1,107 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTMildnot.cpp,v 1.4 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include + +FTMildnot::FTMildnot(FTSelection *left, FTSelection *right, XPath2MemoryManager *memMgr) + : FTSelection(FTSelection::MILD_NOT, memMgr), + left_(left), + right_(right) +{ +} + +FTSelection *FTMildnot::staticResolution(StaticContext *context) +{ + left_ = left_->staticResolution(context); + right_ = right_->staticResolution(context); + return this; +} + +FTSelection *FTMildnot::staticTyping(StaticContext *context) +{ + src_.clear(); + + left_ = left_->staticTyping(context); + src_.add(left_->getStaticResolutionContext()); + + right_ = right_->staticTyping(context); + src_.add(right_->getStaticResolutionContext()); + + return this; +} + +FTSelection *FTMildnot::optimize(FTContext *ftcontext, bool execute) const +{ + XPath2MemoryManager *mm = ftcontext->context->getMemoryManager(); + + FTSelection *newleft = left_->optimize(ftcontext, execute); + if(newleft == 0) return 0; + + FTSelection *newright = right_->optimize(ftcontext, execute); + if(newright == 0) return newleft; + + FTSelection *result = new (mm) FTMildnot(newleft, newright, mm); + result->setLocationInfo(this); + return result; +} + +AllMatches::Ptr FTMildnot::execute(FTContext *ftcontext) const +{ + AllMatches::Ptr leftMatches = left_->execute(ftcontext); + AllMatches::Ptr rightMatches = right_->execute(ftcontext); + return new FTMildnotMatches(this, leftMatches, rightMatches); +} + +Match::Ptr FTMildnotMatches::next(DynamicContext *context) +{ + if(left_.isNull()) return 0; + + if(right_.notNull()) { + Match::Ptr match(0); + while((match = right_->next(context)).notNull()) { + if(!match->getStringExcludes().empty()) + XQThrow(XPath2ErrorException, X("FTMildnotMatches::next"), + X("Invalid expression on the right-hand side of a not-in")); + + StringMatches::const_iterator end = match->getStringIncludes().end(); + for(StringMatches::const_iterator i = match->getStringIncludes().begin(); + i != end; ++i) { + badTokens_.insert(i->tokenInfo->getPosition()); + } + } + right_ = 0; + } + + Match::Ptr match(0); + while(match.isNull()) { + match = left_->next(context); + if(match.isNull()) { + left_ = 0; + return 0; + } + + StringMatches::const_iterator end = match->getStringIncludes().end(); + for(StringMatches::const_iterator i = match->getStringIncludes().begin(); + i != end; ++i) { + if(badTokens_.find(i->tokenInfo->getPosition()) != badTokens_.end()) { + match = 0; + break; + } + } + } + + return match; +} diff --git a/src/fulltext/FTOr.cpp b/src/fulltext/FTOr.cpp new file mode 100644 index 00000000..5fa62d24 --- /dev/null +++ b/src/fulltext/FTOr.cpp @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTOr.cpp,v 1.4 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +using namespace std; + +FTOr::FTOr(XPath2MemoryManager *memMgr) + : FTSelection(FTSelection::OR, memMgr), + args_(memMgr) +{ +} + +FTOr::FTOr(FTSelection *left, FTSelection *right, XPath2MemoryManager *memMgr) + : FTSelection(FTSelection::OR, memMgr), + args_(memMgr) +{ + args_.push_back(left); + args_.push_back(right); +} + +FTSelection *FTOr::staticResolution(StaticContext *context) +{ + for(VectorOfFTSelections::iterator i = args_.begin(); + i != args_.end(); ++i) { + *i = (*i)->staticResolution(context); + } + + return this; +} + +FTSelection *FTOr::staticTyping(StaticContext *context) +{ + src_.clear(); + + for(VectorOfFTSelections::iterator i = args_.begin(); + i != args_.end(); ++i) { + *i = (*i)->staticTyping(context); + src_.add((*i)->getStaticResolutionContext()); + } + + return this; +} + +FTSelection *FTOr::optimize(FTContext *ftcontext, bool execute) const +{ + XPath2MemoryManager *mm = ftcontext->context->getMemoryManager(); + + FTOr *ftor = new (mm) FTOr(mm); + ftor->setLocationInfo(this); + + for(VectorOfFTSelections::const_iterator i = args_.begin(); + i != args_.end(); ++i) { + FTSelection *arg = (*i)->optimize(ftcontext, execute); + if(arg != 0) + ftor->addArg(arg); + } + + if(ftor->args_.empty()) { + return 0; + } + if(ftor->args_.size() == 1) { + return ftor->args_.back(); + } + + return ftor; +} + +AllMatches::Ptr FTOr::execute(FTContext *ftcontext) const +{ + FTDisjunctionMatches *disjunction = new FTDisjunctionMatches(this); + AllMatches::Ptr result(disjunction); + + for(VectorOfFTSelections::const_iterator i = args_.begin(); + i != args_.end(); ++i) { + disjunction->addMatches((*i)->execute(ftcontext)); + } + + return result; +} + +FTDisjunctionMatches::FTDisjunctionMatches(const LocationInfo *info) + : AllMatches(info), + toDo_(true) +{ +} + +Match::Ptr FTDisjunctionMatches::next(DynamicContext *context) +{ + // TBD AllMatches normalization + + if(toDo_) { + toDo_ = false; + it_ = args_.begin(); + } + + Match::Ptr result(0); + while(it_ != args_.end()) { + result = (*it_)->next(context); + if(result.isNull()) { + *it_ = 0; + ++it_; + } + else { + break; + } + } + + return result; +} diff --git a/src/fulltext/FTOrder.cpp b/src/fulltext/FTOrder.cpp new file mode 100644 index 00000000..2ac6c96f --- /dev/null +++ b/src/fulltext/FTOrder.cpp @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTOrder.cpp,v 1.4 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +FTSelection *FTOrder::staticResolution(StaticContext *context) +{ + arg_ = arg_->staticResolution(context); + return this; +} + +FTSelection *FTOrder::staticTyping(StaticContext *context) +{ + src_.clear(); + + arg_ = arg_->staticTyping(context); + src_.add(arg_->getStaticResolutionContext()); + + return this; +} + +FTSelection *FTOrder::optimize(FTContext *ftcontext, bool execute) const +{ + XPath2MemoryManager *mm = ftcontext->context->getMemoryManager(); + + FTSelection *newarg = arg_->optimize(ftcontext, execute); + if(newarg == 0) return 0; + + if(newarg->getType() == WORD) { + return newarg; + } + + newarg = new (mm) FTOrder(newarg, mm); + newarg->setLocationInfo(this); + return newarg; +} + +AllMatches::Ptr FTOrder::execute(FTContext *ftcontext) const +{ + return new FTOrderMatches(this, arg_->execute(ftcontext)); +} + +Match::Ptr FTOrderMatches::next(DynamicContext *context) +{ + if(arg_.isNull()) return 0; + + Match::Ptr match(0); + while(match.isNull()) { + match = arg_->next(context); + if(match.isNull()) { + arg_ = 0; + return 0; + } + + StringMatches::const_iterator begin = match->getStringIncludes().begin(); + StringMatches::const_iterator end = match->getStringIncludes().end(); + StringMatches::const_iterator i, j; + for(i = begin; i != end && match.notNull(); ++i) { + for(j = i, ++j; j != end; ++j) { + if((i->queryPos > j->queryPos && i->tokenInfo->getPosition() < j->tokenInfo->getPosition()) || + (i->queryPos < j->queryPos && i->tokenInfo->getPosition() > j->tokenInfo->getPosition())) { + match = 0; + break; + } + } + } + } + + Match::Ptr result = new Match(); + result->addStringIncludes(match->getStringIncludes()); + + StringMatches::const_iterator e_end = match->getStringExcludes().end(); + StringMatches::const_iterator e = match->getStringExcludes().begin(); + StringMatches::const_iterator i_begin = match->getStringIncludes().begin(); + StringMatches::const_iterator i_end = match->getStringIncludes().end(); + StringMatches::const_iterator i; + for(; e != e_end; ++e) { + for(i = i_begin; i != i_end; ++i) { + if((i->queryPos <= e->queryPos && i->tokenInfo->getPosition() <= e->tokenInfo->getPosition()) || + (i->queryPos >= e->queryPos && i->tokenInfo->getPosition() >= e->tokenInfo->getPosition())) { + result->addStringExclude(*e); + } + } + } + + return result; +} diff --git a/src/fulltext/FTScope.cpp b/src/fulltext/FTScope.cpp new file mode 100644 index 00000000..6dc4f870 --- /dev/null +++ b/src/fulltext/FTScope.cpp @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTScope.cpp,v 1.4 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +#include + +using namespace std; + +FTSelection *FTScope::staticResolution(StaticContext *context) +{ + arg_ = arg_->staticResolution(context); + return this; +} + +FTSelection *FTScope::staticTyping(StaticContext *context) +{ + src_.clear(); + + arg_ = arg_->staticTyping(context); + src_.add(arg_->getStaticResolutionContext()); + + return this; +} + +FTSelection *FTScope::optimize(FTContext *ftcontext, bool execute) const +{ + XPath2MemoryManager *mm = ftcontext->context->getMemoryManager(); + + FTSelection *newarg = arg_->optimize(ftcontext, execute); + if(newarg == 0) return 0; + + if(newarg->getType() == WORD) { + return newarg; + } + + newarg = new (mm) FTScope(newarg, type_, unit_, mm); + newarg->setLocationInfo(this); + return newarg; +} + +AllMatches::Ptr FTScope::execute(FTContext *ftcontext) const +{ + switch(type_) { + case SAME: + return new FTScopeSameMatches(this, unit_, arg_->execute(ftcontext)); + case DIFFERENT: + return new FTScopeDifferentMatches(this, unit_, arg_->execute(ftcontext)); + default: + assert(0); + break; + } + return 0; +} + +Match::Ptr FTScopeSameMatches::next(DynamicContext *context) +{ + if(arg_.isNull()) return 0; + + unsigned int unitValue = 0; + Match::Ptr match(0); + while(match.isNull()) { + match = arg_->next(context); + if(match.isNull()) { + arg_ = 0; + return 0; + } + + StringMatches::const_iterator i = match->getStringIncludes().begin(); + StringMatches::const_iterator end = match->getStringIncludes().end(); + if(i != end) { + unitValue = FTOption::tokenUnit(i->tokenInfo, unit_); + for(++i; i != end; ++i) { + if(FTOption::tokenUnit(i->tokenInfo, unit_) != unitValue) { + match = 0; + break; + } + } + } + else { + // If there are no StringIncludes, the match gets returned as-is. + return match; + } + } + + Match::Ptr result = new Match(); + result->addStringIncludes(match->getStringIncludes()); + + StringMatches::const_iterator end = match->getStringExcludes().end(); + for(StringMatches::const_iterator i = match->getStringExcludes().begin(); + i != end; ++i) { + if(FTOption::tokenUnit(i->tokenInfo, unit_) == unitValue) { + result->addStringExclude(*i); + } + } + + return result; +} + +Match::Ptr FTScopeDifferentMatches::next(DynamicContext *context) +{ + if(arg_.isNull()) return 0; + + set unitValuesSeen; + Match::Ptr match(0); + while(match.isNull()) { + match = arg_->next(context); + if(match.isNull()) { + arg_ = 0; + return 0; + } + + unitValuesSeen.clear(); + StringMatches::const_iterator end = match->getStringIncludes().end(); + StringMatches::const_iterator i = match->getStringIncludes().begin(); + for(; i != end; ++i) { + if(!unitValuesSeen.insert(FTOption::tokenUnit(i->tokenInfo, unit_)).second) { + match = 0; + break; + } + } + } + + Match::Ptr result = new Match(); + result->addStringIncludes(match->getStringIncludes()); + + StringMatches::const_iterator end = match->getStringExcludes().end(); + StringMatches::const_iterator i = match->getStringExcludes().begin(); + for(; i != end; ++i) { + if(unitValuesSeen.find(FTOption::tokenUnit(i->tokenInfo, unit_)) != unitValuesSeen.end()) { + result->addStringExclude(*i); + } + } + + return result; +} diff --git a/src/fulltext/FTUnaryNot.cpp b/src/fulltext/FTUnaryNot.cpp new file mode 100644 index 00000000..7ebcf5f5 --- /dev/null +++ b/src/fulltext/FTUnaryNot.cpp @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTUnaryNot.cpp,v 1.4 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +FTUnaryNot::FTUnaryNot(FTSelection *arg, XPath2MemoryManager *memMgr) + : FTSelection(FTSelection::UNARY_NOT, memMgr), + arg_(arg) +{ +} + +FTSelection *FTUnaryNot::staticResolution(StaticContext *context) +{ + arg_ = arg_->staticResolution(context); + return this; +} + +FTSelection *FTUnaryNot::staticTyping(StaticContext *context) +{ + src_.clear(); + + arg_ = arg_->staticTyping(context); + src_.add(arg_->getStaticResolutionContext()); + + return this; +} + +FTSelection *FTUnaryNot::optimize(FTContext *ftcontext, bool execute) const +{ + XPath2MemoryManager *mm = ftcontext->context->getMemoryManager(); + + FTSelection *newarg = arg_->optimize(ftcontext, execute); + if(newarg == 0) return 0; + + newarg = new (mm) FTUnaryNot(newarg, mm); + newarg->setLocationInfo(this); + return newarg; +} + +AllMatches::Ptr FTUnaryNot::execute(FTContext *ftcontext) const +{ + return new FTUnaryNotMatches(this, arg_->execute(ftcontext)); +} + +Match::Ptr FTUnaryNotMatches::next(DynamicContext *context) +{ + // TBD need to check for StringInclude / StringExclude contradictions + + if(toDo_) { + toDo_ = false; + + Match::Ptr result = new Match(); + + if(arg_.notNull()) { + Match::Ptr match(0); + while((match = arg_->next(context)).notNull()) { + result->addStringExcludes(match->getStringIncludes()); + result->addStringIncludes(match->getStringExcludes()); + } + } + + arg_ = 0; + return result; + } + return 0; +} diff --git a/src/fulltext/FTWindow.cpp b/src/fulltext/FTWindow.cpp new file mode 100644 index 00000000..f6efaa05 --- /dev/null +++ b/src/fulltext/FTWindow.cpp @@ -0,0 +1,209 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTWindow.cpp,v 1.4 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +FTSelection *FTWindow::staticResolution(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + SequenceType *seqType = new (mm) SequenceType(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER, + SequenceType::EXACTLY_ONE, mm); + seqType->setLocationInfo(this); + + arg_ = arg_->staticResolution(context); + + expr_ = new (mm) XQAtomize(expr_, mm); + expr_->setLocationInfo(this); + expr_ = new (mm) XQTreatAs(expr_, seqType, mm); + expr_->setLocationInfo(this); + expr_ = expr_->staticResolution(context); + + return this; +} + +FTSelection *FTWindow::staticTyping(StaticContext *context) +{ + src_.clear(); + + arg_ = arg_->staticTyping(context); + src_.add(arg_->getStaticResolutionContext()); + + expr_ = expr_->staticTyping(context); + src_.add(expr_->getStaticResolutionContext()); + + return this; +} + +FTSelection *FTWindow::optimize(FTContext *ftcontext, bool execute) const +{ + XPath2MemoryManager *mm = ftcontext->context->getMemoryManager(); + + if(execute || expr_->isConstant()) { + Result rangeResult = expr_->collapseTree(ftcontext->context); + Numeric::Ptr num = (Numeric::Ptr)rangeResult->next(ftcontext->context); + + long distance = ::atol(UTF8(num->asString(ftcontext->context))); + + FTSelection *result = new (mm) FTWindowLiteral(arg_, (unsigned int)distance, unit_, mm); + result->setLocationInfo(this); + return result->optimize(ftcontext, execute); + } + + FTSelection *newarg = arg_->optimize(ftcontext, execute); + if(newarg == 0) return 0; + + if(newarg->getType() == WORD) { + return newarg; + } + + newarg = new (mm) FTWindow(newarg, expr_, unit_, mm); + newarg->setLocationInfo(this); + return newarg; +} + +AllMatches::Ptr FTWindow::execute(FTContext *ftcontext) const +{ + assert(0); + return 0; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +FTSelection *FTWindowLiteral::staticResolution(StaticContext *context) +{ + arg_ = arg_->staticResolution(context); + return this; +} + +FTSelection *FTWindowLiteral::staticTyping(StaticContext *context) +{ + src_.clear(); + + arg_ = arg_->staticTyping(context); + src_.add(arg_->getStaticResolutionContext()); + + return this; +} + +FTSelection *FTWindowLiteral::optimize(FTContext *ftcontext, bool execute) const +{ + XPath2MemoryManager *mm = ftcontext->context->getMemoryManager(); + + FTSelection *newarg = arg_->optimize(ftcontext, execute); + if(newarg == 0) return 0; + + if(newarg->getType() == WORD) { + return newarg; + } + + newarg = new (mm) FTWindowLiteral(newarg, distance_, unit_, mm); + newarg->setLocationInfo(this); + return newarg; +} + +AllMatches::Ptr FTWindowLiteral::execute(FTContext *ftcontext) const +{ + return new FTWindowMatches(this, distance_, unit_, arg_->execute(ftcontext)); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +Match::Ptr FTWindowMatches::next(DynamicContext *context) +{ + if(arg_.isNull()) return 0; + + unsigned int unitVal; + while(match_.isNull()) { + match_ = arg_->next(context); + if(match_.isNull()) { + arg_ = 0; + return 0; + } + + StringMatches::const_iterator end = match_->getStringIncludes().end(); + StringMatches::const_iterator i = match_->getStringIncludes().begin(); + if(i != end) { + unsigned int includeMin = FTOption::tokenUnit(i->tokenInfo, unit_); + unsigned int includeMax = includeMin; + for(++i; i != end; ++i) { + unitVal = FTOption::tokenUnit(i->tokenInfo, unit_); + if(unitVal < includeMin) { + includeMin = unitVal; + } + else if(unitVal > includeMax) { + includeMax = unitVal; + } + } + + if((includeMax - includeMin + 1) <= distance_) { + unsigned int tokenStart = 0; + if(includeMax > distance_) { + tokenStart = includeMax - distance_ + 1; + } + unsigned int tokenEnd = includeMin + distance_ - 1; + + excludeValues_.clear(); + end = match_->getStringIncludes().end(); + i = match_->getStringIncludes().begin(); + for(; i != end; ++i) { + unitVal = FTOption::tokenUnit(i->tokenInfo, unit_); + if(tokenStart <= unitVal && unitVal <= tokenEnd) { + excludeValues_.insert(unitVal); + } + } + if(excludeValues_.empty()) { + // Add a dummy value, so we return a match + excludeValues_.insert(includeMin); + } + excludeIt_ = excludeValues_.begin(); + break; + } + } + + match_ = 0; + } + + Match::Ptr result = new Match(); + result->addStringIncludes(match_->getStringIncludes()); + + for(StringMatches::const_iterator i = match_->getStringExcludes().begin(); + i != match_->getStringExcludes().end(); ++i) { + unitVal = FTOption::tokenUnit(i->tokenInfo, unit_); + if(*excludeIt_ <= unitVal && unitVal <= (*excludeIt_ + distance_ - 1)) { + result->addStringExclude(*i); + } + } + + ++excludeIt_; + if(excludeIt_ == excludeValues_.end()) { + match_ = 0; + } + + return result; +} diff --git a/src/fulltext/FTWords.cpp b/src/fulltext/FTWords.cpp new file mode 100644 index 00000000..bb0987f5 --- /dev/null +++ b/src/fulltext/FTWords.cpp @@ -0,0 +1,258 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FTWords.cpp,v 1.4 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +FTWords::FTWords(ASTNode *expr, FTAnyallOption option, XPath2MemoryManager *memMgr) + : FTSelection(FTSelection::WORDS, memMgr), + expr_(expr), + option_(option) +{ +} + +FTSelection *FTWords::staticResolution(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + SequenceType *seqType = new (mm) SequenceType(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_STRING, + SequenceType::STAR, mm); + seqType->setLocationInfo(this); + + expr_ = new (mm) XQAtomize(expr_, mm); + expr_->setLocationInfo(this); + expr_ = new (mm) XQTreatAs(expr_, seqType, mm); + expr_->setLocationInfo(this); + expr_ = expr_->staticResolution(context); + + return this; +} + +FTSelection *FTWords::staticTyping(StaticContext *context) +{ + src_.clear(); + + expr_ = expr_->staticTyping(context); + src_.add(expr_->getStaticResolutionContext()); + + return this; +} + +FTSelection *FTWords::optimize(FTContext *ftcontext, bool execute) const +{ + if(execute || expr_->isConstant()) { + Result strings = expr_->collapseTree(ftcontext->context); + + switch(option_) { + case ANY_WORD: { + return optimizeAnyWord(strings, ftcontext)-> + optimize(ftcontext, execute); + } + case ALL_WORDS: { + return optimizeAllWords(strings, ftcontext)-> + optimize(ftcontext, execute); + } + case PHRASE: { + return optimizePhrase(strings, ftcontext)-> + optimize(ftcontext, execute); + } + case ANY: { + return optimizeAny(strings, ftcontext)-> + optimize(ftcontext, execute); + } + case ALL: { + return optimizeAll(strings, ftcontext)-> + optimize(ftcontext, execute); + } + default: + assert(0); + break; + } + } + + return const_cast(this); +} + +FTSelection *FTWords::optimizeAnyWord(Result strings, FTContext *ftcontext) const +{ + XPath2MemoryManager *mm = ftcontext->context->getMemoryManager(); + + FTOr *ftor = new (mm) FTOr(mm); + ftor->setLocationInfo(this); + + Item::Ptr item; + while((item = strings->next(ftcontext->context)).notNull()) { + TokenStream::Ptr stream = ftcontext->tokenizer-> + tokenize(item->asString(ftcontext->context), ftcontext->context->getMemoryManager()); + TokenInfo::Ptr token; + while((token = stream->next()).notNull()) { + FTSelection *word = new (mm) FTWord(token->getWord(), mm); + word->setLocationInfo(this); + ftor->addArg(word); + } + } + + return ftor; +} + +FTSelection *FTWords::optimizeAllWords(Result strings, FTContext *ftcontext) const +{ + XPath2MemoryManager *mm = ftcontext->context->getMemoryManager(); + + FTAnd *ftand = new (mm) FTAnd(mm); + ftand->setLocationInfo(this); + + Item::Ptr item; + while((item = strings->next(ftcontext->context)).notNull()) { + TokenStream::Ptr stream = ftcontext->tokenizer-> + tokenize(item->asString(ftcontext->context), ftcontext->context->getMemoryManager()); + TokenInfo::Ptr token; + while((token = stream->next()).notNull()) { + FTSelection *word = new (mm) FTWord(token->getWord(), mm); + word->setLocationInfo(this); + ftand->addArg(word); + } + } + + return ftand; +} + +FTSelection *FTWords::optimizePhrase(Result strings, FTContext *ftcontext) const +{ + XPath2MemoryManager *mm = ftcontext->context->getMemoryManager(); + + FTSelection *result = new (mm) FTOrder(optimizeAllWords(strings, ftcontext), mm); + result->setLocationInfo(this); + + result = new (mm) FTDistanceLiteral(result, FTRange::EXACTLY, 0, 0, FTOption::WORDS, mm); + result->setLocationInfo(this); + + return result; +} + +FTSelection *FTWords::optimizeAny(Result strings, FTContext *ftcontext) const +{ + XPath2MemoryManager *mm = ftcontext->context->getMemoryManager(); + + FTOr *ftor = new (mm) FTOr(mm); + ftor->setLocationInfo(this); + + Item::Ptr item; + while((item = strings->next(ftcontext->context)).notNull()) { + ftor->addArg(optimizePhrase(Sequence(item), ftcontext)); + } + + return ftor; +} + +FTSelection *FTWords::optimizeAll(Result strings, FTContext *ftcontext) const +{ + XPath2MemoryManager *mm = ftcontext->context->getMemoryManager(); + + FTAnd *ftand = new (mm) FTAnd(mm); + ftand->setLocationInfo(this); + + Item::Ptr item; + while((item = strings->next(ftcontext->context)).notNull()) { + ftand->addArg(optimizePhrase(Sequence(item), ftcontext)); + } + + return ftand; +} + +AllMatches::Ptr FTWords::execute(FTContext *ftcontext) const +{ + assert(0); + return 0; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +FTWord::FTWord(const XMLCh *queryString, XPath2MemoryManager *memMgr) + : FTSelection(WORD, memMgr), + queryString_(queryString) +{ +} + +FTSelection *FTWord::staticResolution(StaticContext *context) +{ + return this; +} + +FTSelection *FTWord::staticTyping(StaticContext *context) +{ + src_.clear(); + return this; +} + +FTSelection *FTWord::optimize(FTContext *context, bool execute) const +{ + return const_cast(this); +} + +AllMatches::Ptr FTWord::execute(FTContext *ftcontext) const +{ + return new FTStringSearchMatches(this, queryString_, ftcontext); +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +FTStringSearchMatches::FTStringSearchMatches(const LocationInfo *info, const XMLCh *queryString, FTContext *ftcontext) + : AllMatches(info), + queryString_(queryString), + queryPos_(ftcontext->queryPos++), + tokenStream_(ftcontext->tokenStore->findTokens(queryString)) +{ +} + +Match::Ptr FTStringSearchMatches::next(DynamicContext *context) +{ + if(tokenStream_.isNull()) return 0; + + TokenInfo::Ptr token = tokenStream_->next(); + if(token.isNull()) { + tokenStream_ = 0; + return 0; + } + + // TBD query position + Match::Ptr match = new Match(); + match->addStringInclude(queryString_, queryPos_, token); + return match; +} + +AllMatches::Ptr FTStringSearchMatches::optimize() +{ + return this; +} diff --git a/src/functions/FuncFactory.cpp b/src/functions/FuncFactory.cpp new file mode 100644 index 00000000..0900fd00 --- /dev/null +++ b/src/functions/FuncFactory.cpp @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FuncFactory.cpp,v 1.7 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +FuncFactory::FuncFactory() +{ +} + +FuncFactory::~FuncFactory() +{ +} + + diff --git a/src/functions/FuncFactoryTemplate.hpp b/src/functions/FuncFactoryTemplate.hpp new file mode 100644 index 00000000..9cc490d9 --- /dev/null +++ b/src/functions/FuncFactoryTemplate.hpp @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FuncFactoryTemplate.hpp,v 1.8 2006/11/01 16:37:19 jpcs Exp $ + */ + +/* + Factory template class +*/ + +#ifndef _FUNCFACTORYTEMPLATE_HPP +#define _FUNCFACTORYTEMPLATE_HPP + +#include + +#include + +///Macro used to facilitate the creation of functions +template +class FuncFactoryTemplate : public FuncFactory +{ +public: + + FuncFactoryTemplate() + { + } + + virtual ASTNode *createInstance(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) const + { + return new (memMgr) TYPE(args, memMgr); + } + + virtual const XMLCh *getName() const + { + return TYPE::name; + } + + virtual const XMLCh *getURI() const + { + return TYPE::XMLChFunctionURI; + } + + virtual unsigned int getMinArgs() const + { + return TYPE::minArgs; + } + + virtual unsigned int getMaxArgs() const + { + return TYPE::maxArgs; + } +}; + +#endif diff --git a/src/functions/FunctionAbs.cpp b/src/functions/FunctionAbs.cpp new file mode 100644 index 00000000..f0cf8da8 --- /dev/null +++ b/src/functions/FunctionAbs.cpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionAbs.cpp,v 1.12 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include + +const XMLCh FunctionAbs::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_b, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionAbs::minArgs = 1; +const unsigned int FunctionAbs::maxArgs = 1; + +/* + * fn:abs($arg as numeric?) as numeric? + */ + +FunctionAbs::FunctionAbs(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : NumericFunction(name, minArgs, maxArgs, "anyAtomicType?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::NUMERIC_TYPE; +} + +Sequence FunctionAbs::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Numeric::Ptr numericArg = getNumericParam(1, context); + + //If the argument is the empty sequence, the empty sequence is returned. + if(numericArg.isNull()) { + return Sequence(context->getMemoryManager()); + } + + if(numericArg->isNaN()) + return Sequence(numericArg, context->getMemoryManager()); + + if(numericArg->isNegative()) + return Sequence(numericArg->invert(context), context->getMemoryManager()); + return Sequence(numericArg, context->getMemoryManager()); +} diff --git a/src/functions/FunctionAdjustDateTimeToTimezone.cpp b/src/functions/FunctionAdjustDateTimeToTimezone.cpp new file mode 100644 index 00000000..306e1b2c --- /dev/null +++ b/src/functions/FunctionAdjustDateTimeToTimezone.cpp @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionAdjustDateTimeToTimezone.cpp,v 1.13 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include "../utils/DateUtils.hpp" +#include +#include +#include +#include +#include + +const XMLCh FunctionAdjustDateTimeToTimezone::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_j, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_z, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionAdjustDateTimeToTimezone::minArgs = 1; +const unsigned int FunctionAdjustDateTimeToTimezone::maxArgs = 2; + +/* + * fn:adjust-dateTime-to-timezone($arg as xs:dateTime?) as xs:dateTime? + * fn:adjust-dateTime-to-timezone($arg as xs:dateTime?, $timezone as xdt:dayTimeDuration?) as xs:dateTime? + */ + +FunctionAdjustDateTimeToTimezone::FunctionAdjustDateTimeToTimezone(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "dateTime?, dayTimeDuration?", args, memMgr) +{ +} + +ASTNode* FunctionAdjustDateTimeToTimezone::staticResolution(StaticContext *context) { + return resolveArguments(context); +} + +ASTNode *FunctionAdjustDateTimeToTimezone::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DATE_TIME_TYPE; + if(getNumArgs() == 1) { + _src.implicitTimezoneUsed(true); + } + return calculateSRCForArguments(context); +} + +Sequence FunctionAdjustDateTimeToTimezone::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + //If $srcval is the empty sequence, then the result is the empty sequence. + Sequence op1 = getParamNumber(1, context)->toSequence(context); + if (op1.isEmpty()) { + return Sequence(memMgr); + } + + const ATDateTimeOrDerived* dateTime = (const ATDateTimeOrDerived*)(const Item*)op1.first(); + + //If $timezone is not specified, then $timezone is the value of the implicit timezone in the evaluation context. + ATDurationOrDerived::Ptr timezoneAsDuration = 0; + + if (getNumArgs() > 1) { + Sequence op2 = getParamNumber(2, context)->toSequence(context); + if (op2.isEmpty()) { + // unset the timezone + return Sequence(dateTime->setTimezone(0, context), memMgr); + } else { + timezoneAsDuration = (const ATDurationOrDerived::Ptr )op2.first(); + Timezone::Ptr timezone = new Timezone(timezoneAsDuration, context); + if(!timezoneAsDuration->equals(timezone->asDayTimeDuration(context), context)) { + XQThrow(FunctionException, X("FunctionAdjustDateTimeToTimeZone::collapseTreeInternal"),X("Invalid timezone value [err:FODT0003]")); + } + } + } + else { + timezoneAsDuration = context->getImplicitTimezone(); + } + + return Sequence(dateTime->addTimezone(timezoneAsDuration, context), memMgr); +} diff --git a/src/functions/FunctionAdjustDateToTimezone.cpp b/src/functions/FunctionAdjustDateToTimezone.cpp new file mode 100644 index 00000000..4a1f78e0 --- /dev/null +++ b/src/functions/FunctionAdjustDateToTimezone.cpp @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionAdjustDateToTimezone.cpp,v 1.13 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include "../utils/DateUtils.hpp" +#include +#include +#include +#include +#include + +const XMLCh FunctionAdjustDateToTimezone::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_j, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_z, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionAdjustDateToTimezone::minArgs = 1; +const unsigned int FunctionAdjustDateToTimezone::maxArgs = 2; + +/* + * fn:adjust-date-to-timezone($arg as xs:date?) as xs:date? + * fn:adjust-date-to-timezone($arg as xs:date?, $timezone as xdt:dayTimeDuration?) as xs:date? + */ + +FunctionAdjustDateToTimezone::FunctionAdjustDateToTimezone(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "date?, dayTimeDuration?", args, memMgr) +{ +} + +ASTNode* FunctionAdjustDateToTimezone::staticResolution(StaticContext *context) { + return resolveArguments(context); +} + +ASTNode *FunctionAdjustDateToTimezone::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DATE_TYPE; + if(getNumArgs() == 1) { + _src.implicitTimezoneUsed(true); + } + return calculateSRCForArguments(context); +} + +Sequence FunctionAdjustDateToTimezone::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + //If $srcval is the empty sequence, then the result is the empty sequence. + Sequence op1 = getParamNumber(1, context)->toSequence(context); + if (op1.isEmpty()) { + return Sequence(memMgr); + } + + const ATDateOrDerived* date = (const ATDateOrDerived*)(const Item*)op1.first(); + + //If $timezone is not specified, then $timezone is the value of the implicit timezone in the evaluation context. + ATDurationOrDerived::Ptr timezoneAsDuration = 0; + + if (getNumArgs() > 1) { + Sequence op2 = getParamNumber(2, context)->toSequence(context); + if (op2.isEmpty()) { + // unset the timezone + return Sequence(date->setTimezone(0, context), memMgr); + } else { + timezoneAsDuration = (const ATDurationOrDerived::Ptr )op2.first(); + Timezone::Ptr timezone = new Timezone(timezoneAsDuration, context); + if(!timezoneAsDuration->equals(timezone->asDayTimeDuration(context), context)) { + XQThrow(FunctionException, X("FunctionAdjustDateToTimeZone::collapseTreeInternal"),X("Invalid timezone value [err:FODT0003]")); + } + } + } + else { + timezoneAsDuration = context->getImplicitTimezone(); + } + + return Sequence(date->addTimezone(timezoneAsDuration, context), memMgr); +} diff --git a/src/functions/FunctionAdjustTimeToTimezone.cpp b/src/functions/FunctionAdjustTimeToTimezone.cpp new file mode 100644 index 00000000..c4e6a9f7 --- /dev/null +++ b/src/functions/FunctionAdjustTimeToTimezone.cpp @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionAdjustTimeToTimezone.cpp,v 1.13 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include "../utils/DateUtils.hpp" +#include +#include +#include +#include +#include + +const XMLCh FunctionAdjustTimeToTimezone::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_j, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_z, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionAdjustTimeToTimezone::minArgs = 1; +const unsigned int FunctionAdjustTimeToTimezone::maxArgs = 2; + +/* + * fn:adjust-time-to-timezone($arg as xs:time?) as xs:time? + * fn:adjust-time-to-timezone($arg as xs:time?, $timezone as xdt:dayTimeDuration?) as xs:time? + */ + +FunctionAdjustTimeToTimezone::FunctionAdjustTimeToTimezone(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "time?, dayTimeDuration?", args, memMgr) +{ +} + +ASTNode* FunctionAdjustTimeToTimezone::staticResolution(StaticContext *context) { + return resolveArguments(context); +} + +ASTNode *FunctionAdjustTimeToTimezone::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::TIME_TYPE; + if(getNumArgs() == 1) { + _src.implicitTimezoneUsed(true); + } + return calculateSRCForArguments(context); +} + +Sequence FunctionAdjustTimeToTimezone::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + //If $srcval is the empty sequence, then the result is the empty sequence. + Sequence op1 = getParamNumber(1, context)->toSequence(context); + if (op1.isEmpty()) { + return Sequence(memMgr); + } + const ATTimeOrDerived* time = (const ATTimeOrDerived*)(const Item*)op1.first(); + + //If $timezone is not specified, then $timezone is the value of the implicit timezone in the evaluation context. + ATDurationOrDerived::Ptr timezoneAsDuration = 0; + + if (getNumArgs() > 1) { + Sequence op2 = getParamNumber(2, context)->toSequence(context); + if (op2.isEmpty()) { + // unset the timezone + return Sequence(time->setTimezone(0, context), memMgr); + } else { + timezoneAsDuration = (const ATDurationOrDerived::Ptr )op2.first(); + Timezone::Ptr timezone = new Timezone(timezoneAsDuration, context); + if(!timezoneAsDuration->equals(timezone->asDayTimeDuration(context), context)) { + XQThrow(FunctionException, X("FunctionAdjustTimeToTimeZone::collapseTreeInternal"),X("Invalid timezone value [err:FODT0003]")); + } + } + } + else { + timezoneAsDuration = context->getImplicitTimezone(); + } + + return Sequence(time->addTimezone(timezoneAsDuration, context), memMgr); + +} diff --git a/src/functions/FunctionAvg.cpp b/src/functions/FunctionAvg.cpp new file mode 100644 index 00000000..77073872 --- /dev/null +++ b/src/functions/FunctionAvg.cpp @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionAvg.cpp,v 1.15 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionAvg::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_v, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionAvg::minArgs = 1; +const unsigned int FunctionAvg::maxArgs = 1; + +/** + * fn:avg($arg as xdt:anyAtomicType*) as xdt:anyAtomicType? +**/ + +FunctionAvg::FunctionAvg(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : AggregateFunction(name, minArgs, maxArgs, "anyAtomicType*", args, memMgr) +{ + // TBD - could do better here - jpcs + _src.getStaticType().flags = StaticType::TYPED_ATOMIC_TYPE; +} + +Sequence FunctionAvg::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Sequence sequence(context->getMemoryManager()); + try { + sequence = validateSequence(getParamNumber(1,context)->toSequence(context), context); + } catch (IllegalArgumentException &e) { + XQThrow(IllegalArgumentException, X("FunctionAvg::collapseTreeInternal()"), X("Invalid argument to fn:avg() function [err:FORG0006].")); + } + + if(sequence.isEmpty()) + return Sequence(context->getMemoryManager()); + + // check for types that don't support addition and division by an integer + const AnyAtomicType::Ptr atom = (const AnyAtomicType::Ptr )sequence.first(); + if(!atom->isNumericValue() && + atom->getPrimitiveTypeIndex() != AnyAtomicType::DAY_TIME_DURATION && + atom->getPrimitiveTypeIndex() != AnyAtomicType::YEAR_MONTH_DURATION) + XQThrow(IllegalArgumentException, X("FunctionAvg::collapseTreeInternal()"), X("Invalid argument to fn:avg() function [err:FORG0006].")); + + if(sequence.getLength() == 1) + return sequence; + + AnyAtomicType::Ptr sum; + try { + sum = (AnyAtomicType::Ptr)FunctionSum::sum(sequence, context, this); + } + catch(IllegalArgumentException &) { + XQThrow(IllegalArgumentException, X("FunctionAvg::collapseTreeInternal()"), X("Invalid argument to fn:avg() function [err:FORG0006].")); + } + + Numeric::Ptr count = context->getItemFactory()->createDecimal((long)sequence.getLength(), context); + + if(sum->isNumericValue()) { + return Sequence(((Numeric*)sum.get())->divide(count, context), context->getMemoryManager()); + } + else { + // It must be a duration type + return Sequence(((ATDurationOrDerived*)sum.get())->divide(count, context), context->getMemoryManager()); + } +} diff --git a/src/functions/FunctionBaseURI.cpp b/src/functions/FunctionBaseURI.cpp new file mode 100644 index 00000000..5a474716 --- /dev/null +++ b/src/functions/FunctionBaseURI.cpp @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionBaseURI.cpp,v 1.13 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include + +const XMLCh FunctionBaseURI::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_b, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionBaseURI::minArgs = 0; +const unsigned int FunctionBaseURI::maxArgs = 1; + +/** + * fn:base-uri() as xs:anyURI? + * fn:base-uri($arg as node()?) as xs:anyURI? +**/ + +FunctionBaseURI::FunctionBaseURI(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "node()?", args, memMgr) +{ +} + +ASTNode* FunctionBaseURI::staticResolution(StaticContext *context) { + if(!_args.empty() && (*_args.begin())->getType()==ASTNode::CONTEXT_ITEM) + _args.clear(); + return resolveArguments(context); +} + +ASTNode *FunctionBaseURI::staticTyping(StaticContext *context) +{ + _src.clear(); + + if(_args.empty()) + _src.contextItemUsed(true); + _src.getStaticType().flags = StaticType::ANY_URI_TYPE; + return calculateSRCForArguments(context); +} + +Sequence FunctionBaseURI::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Node::Ptr node = NULL; + if(getNumArgs() == 1) + { + Sequence arg1=getParamNumber(1,context)->toSequence(context); + if(arg1.isEmpty()) + return Sequence(context->getMemoryManager()); + node = (const Node::Ptr )arg1.first(); + } + else + { + const Item::Ptr item = context->getContextItem(); + if(item==NULLRCP) + XQThrow(FunctionException, X("FunctionBaseURI::collapseTreeInternal"),X("Undefined context item in fn:base-uri [err:XPDY0002]")); + if(!item->isNode()) + XQThrow(FunctionException, X("FunctionBaseURI::collapseTreeInternal"),X("The context item is not a node [err:XPTY0004]")); + node = (const Node::Ptr )item; + } + return node->dmBaseURI(context); +} diff --git a/src/functions/FunctionBoolean.cpp b/src/functions/FunctionBoolean.cpp new file mode 100644 index 00000000..ba8da421 --- /dev/null +++ b/src/functions/FunctionBoolean.cpp @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionBoolean.cpp,v 1.13 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionBoolean::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_b, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionBoolean::minArgs = 1; +const unsigned int FunctionBoolean::maxArgs = 1; + +/** + * fn:boolean($arg as item()*) as xs:boolean +**/ + +FunctionBoolean::FunctionBoolean(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "item()*", args, memMgr) +{ +} + +ASTNode* FunctionBoolean::staticResolution(StaticContext *context) { + AutoNodeSetOrderingReset orderReset(context); + return resolveArguments(context); +} + +ASTNode *FunctionBoolean::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; + return calculateSRCForArguments(context); +} + +Sequence FunctionBoolean::collapseTreeInternal(DynamicContext* context, int flags) const +{ + bool result = getParamNumber(1,context)->getEffectiveBooleanValue(context, this); + return Sequence(context->getItemFactory()->createBoolean(result, context), + context->getMemoryManager()); +} diff --git a/src/functions/FunctionCeiling.cpp b/src/functions/FunctionCeiling.cpp new file mode 100644 index 00000000..1ec75010 --- /dev/null +++ b/src/functions/FunctionCeiling.cpp @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionCeiling.cpp,v 1.12 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include + +const XMLCh FunctionCeiling::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionCeiling::minArgs = 1; +const unsigned int FunctionCeiling::maxArgs = 1; + +/* + * fn:ceiling($arg as numeric?) as numeric? + */ + +FunctionCeiling::FunctionCeiling(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : NumericFunction(name, minArgs, maxArgs, "anyAtomicType?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::NUMERIC_TYPE; +} + +Sequence FunctionCeiling::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Numeric::Ptr numericArg = getNumericParam(1, context); + + //If the argument is the empty sequence, the empty sequence is returned. + if(numericArg.isNull()) { + return Sequence(context->getMemoryManager()); + } + + if(numericArg->isNaN() || numericArg->isInfinite()) + return Sequence(numericArg, context->getMemoryManager()); + return Sequence(numericArg->ceiling(context), context->getMemoryManager()); +} diff --git a/src/functions/FunctionCodepointEqual.cpp b/src/functions/FunctionCodepointEqual.cpp new file mode 100644 index 00000000..f67a1a27 --- /dev/null +++ b/src/functions/FunctionCodepointEqual.cpp @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionCodepointEqual.cpp,v 1.14 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionCodepointEqual::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_q, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, + XERCES_CPP_NAMESPACE_QUALIFIER chNull }; +const unsigned int FunctionCodepointEqual::minArgs = 2; +const unsigned int FunctionCodepointEqual::maxArgs = 2; + +/** + * fn:codepoint-equal($comparand1 as xs:string?, $comparand2 as xs:string?) as xs:boolean? +**/ + +FunctionCodepointEqual::FunctionCodepointEqual(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "string?,string?", args, memMgr) +{ +} + +ASTNode* FunctionCodepointEqual::staticResolution(StaticContext *context) +{ + collation_ = context->getCollation(CodepointCollation::getCodepointCollationName(), this); + + return resolveArguments(context); +} + +ASTNode *FunctionCodepointEqual::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; + + return calculateSRCForArguments(context); +} + +Sequence FunctionCodepointEqual::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Item::Ptr str1 = getParamNumber(1,context)->next(context); + Item::Ptr str2 = getParamNumber(2,context)->next(context); + if(str1.isNull() || str2.isNull()) + return Sequence(context->getMemoryManager()); + + const XMLCh* string1 = str1->asString(context); + const XMLCh* string2 = str2->asString(context); + + return Sequence(context->getItemFactory()->createBoolean(collation_->compare(string1,string2)==0, context), + context->getMemoryManager()); +} diff --git a/src/functions/FunctionCodepointsToString.cpp b/src/functions/FunctionCodepointsToString.cpp new file mode 100644 index 00000000..45e45bf2 --- /dev/null +++ b/src/functions/FunctionCodepointsToString.cpp @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionCodepointsToString.cpp,v 1.13 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionCodepointsToString::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionCodepointsToString::minArgs = 1; +const unsigned int FunctionCodepointsToString::maxArgs = 1; + +/** + * fn:codepoints-to-string($srcval as integer*) => string + * Creates a string from a sequence of codepoints. +**/ + +FunctionCodepointsToString::FunctionCodepointsToString(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "integer*", args, memMgr) // 1 argument +{ + _src.getStaticType().flags = StaticType::STRING_TYPE; +} + +Sequence FunctionCodepointsToString::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer result(1023, context->getMemoryManager()); + Sequence arg = getParamNumber(1,context)->toSequence(context); + Sequence::iterator end = arg.end(); + for(Sequence::iterator i = arg.begin(); i != end; ++i) { + XMLInt32 ch=((const ATDecimalOrDerived::Ptr)*i)->treatAsCodepoint(context); + if ( ch >= 0x10000) + { + XMLCh one, two; + XERCES_CPP_NAMESPACE_QUALIFIER RegxUtil::decomposeToSurrogates(ch, one, two); + result.append(one); + result.append(two); + } + else + result.append((XMLCh)ch); + } + unsigned int len=result.getLen(); + const XMLCh* str=result.getRawBuffer(); + for(unsigned int j=0;jgetItemFactory()->createString(str, context), + context->getMemoryManager()); +} + diff --git a/src/functions/FunctionCollection.cpp b/src/functions/FunctionCollection.cpp new file mode 100644 index 00000000..ee68e6fd --- /dev/null +++ b/src/functions/FunctionCollection.cpp @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionCollection.cpp,v 1.18 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include + +const XMLCh FunctionCollection::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionCollection::minArgs = 0; +const unsigned int FunctionCollection::maxArgs = 1; + +/** + * fn:collection() as node()* + * fn:collection($arg as xs:string?) as node()* +**/ + +FunctionCollection::FunctionCollection(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "string?", args, memMgr) +{ +} + +ASTNode* FunctionCollection::staticResolution(StaticContext *context) +{ + return resolveArguments(context); +} + +ASTNode *FunctionCollection::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.setProperties(StaticResolutionContext::DOCORDER | StaticResolutionContext::GROUPED | + StaticResolutionContext::PEER | StaticResolutionContext::SUBTREE); + _src.getStaticType().flags = StaticType::NODE_TYPE; + _src.availableCollectionsUsed(true); + return calculateSRCForArguments(context); +} + +Sequence FunctionCollection::collapseTreeInternal(DynamicContext* context, int flags) const +{ + //args 0 - URI to resolve + if(getNumArgs()==0) + return context->resolveDefaultCollection(); + + Sequence arg = getParamNumber(1, context)->toSequence(context); + if(arg.isEmpty()) + return context->resolveDefaultCollection(); + + const XMLCh* currentUri = arg.first()->asString(context); + if(!XPath2Utils::isValidURI(currentUri, context->getMemoryManager())) + XQThrow(FunctionException, X("FunctionCollection::collapseTreeInternal"), X("Invalid URI format [err:FODC0002]")); + + return context->resolveCollection(currentUri, this); +} diff --git a/src/functions/FunctionCompare.cpp b/src/functions/FunctionCompare.cpp new file mode 100644 index 00000000..bfde0069 --- /dev/null +++ b/src/functions/FunctionCompare.cpp @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionCompare.cpp,v 1.14 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionCompare::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionCompare::minArgs = 2; +const unsigned int FunctionCompare::maxArgs = 3; + +/** + * fn:compare($comparand1 as xs:string?, $comparand2 as xs:string?) as xs:integer? + * fn:compare($comparand1 as xs:string?, $comparand2 as xs:string?, $collation as xs:string) as xs:integer? +**/ + +FunctionCompare::FunctionCompare(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string?,string?,string", args, memMgr) +{ + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; +} + +Sequence FunctionCompare::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Sequence str1 = getParamNumber(1,context)->toSequence(context); + Sequence str2 = getParamNumber(2,context)->toSequence(context); + if(str1.isEmpty() || str2.isEmpty()) + return Sequence(context->getMemoryManager()); + + Collation* collation = NULL; + if(getNumArgs()>2) { + Sequence collArg = getParamNumber(3,context)->toSequence(context); + const XMLCh* collName = collArg.first()->asString(context); + try { + context->getItemFactory()->createAnyURI(collName, context); + } catch(XPath2ErrorException &e) { + XQThrow(FunctionException, X("FunctionCompare::collapseTreeInternal"), X("Invalid argument to compare function")); + } + collation = context->getCollation(collName, this); + if(collation == NULL) + XQThrow(FunctionException,X("FunctionCompare::collapseTreeInternal"),X("Collation object is not available")); + } + else + collation = context->getDefaultCollation(this); + if(collation == NULL) + collation = context->getCollation(CodepointCollation::getCodepointCollationName(), this); + + const XMLCh* string1 = str1.first()->asString(context); + const XMLCh* string2 = str2.first()->asString(context); + Sequence result(context->getItemFactory()->createInteger(collation->compare(string1,string2), context), context->getMemoryManager()); + + return result; +} diff --git a/src/functions/FunctionConcat.cpp b/src/functions/FunctionConcat.cpp new file mode 100644 index 00000000..e92b7437 --- /dev/null +++ b/src/functions/FunctionConcat.cpp @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionConcat.cpp,v 1.11 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionConcat::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionConcat::minArgs = 2; +const unsigned int FunctionConcat::maxArgs = UNLIMITED; + +/** + * fn:concat($arg1 as xdt:anyAtomicType?, $arg2 as xdt:anyAtomicType?, ...) as xs:string +**/ + + +FunctionConcat::FunctionConcat(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "anyAtomicType?", args, memMgr) // Between 2 and UNLIMITED arguments +{ + _src.getStaticType().flags = StaticType::STRING_TYPE; +} + +Sequence FunctionConcat::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer result(1023, context->getMemoryManager()); + for(unsigned int i = 1; i <= getNumArgs(); ++i) { + Sequence item = getParamNumber(i,context)->toSequence(context); + if(!item.isEmpty()) { + result.append(item.first()->asString(context)); + } + } + const ATStringOrDerived::Ptr strResult = context->getItemFactory()->createString(result.getRawBuffer(), context); + + return Sequence(strResult, context->getMemoryManager()); +} diff --git a/src/functions/FunctionConstructor.cpp b/src/functions/FunctionConstructor.cpp new file mode 100644 index 00000000..d0ee5c96 --- /dev/null +++ b/src/functions/FunctionConstructor.cpp @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionConstructor.cpp,v 1.20 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include + +#include +#include + +/** + * pref:TYPE($arg as xdt:anyAtomicType) as pref:TYPE +**/ + + /* http://www.w3.org/2001/XMLSchema */ +const XMLCh FunctionConstructor::XMLChXPath2DatatypesURI[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chColon, XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, + XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, XERCES_CPP_NAMESPACE_QUALIFIER chPeriod, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_3, XERCES_CPP_NAMESPACE_QUALIFIER chPeriod, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_2, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_1, XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_X, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_M, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_L, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_S, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +FunctionConstructor::FunctionConstructor(const XMLCh* nsURI, const XMLCh* typeName, + const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) +: ConstantFoldingFunction( typeName, 1, 1, "item()", args, memMgr) +{ + _fURI = nsURI; +} + +ASTNode* FunctionConstructor::staticResolution(StaticContext *context) +{ + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::equals(_fName, XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgNotationString) && + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::equals(_fURI, XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) + XQThrow(StaticErrorException,X("FunctionConstructor::staticResolution"), X("Only subtypes of xs:NOTATION items can be created [err:XPST0017]")); + + XPath2MemoryManager *mm = context->getMemoryManager(); + + SequenceType *seqType = new (mm) SequenceType(_fURI, _fName, SequenceType::QUESTION_MARK, mm); + seqType->setLocationInfo(this); + + ASTNode *result = new (mm) XQCastAs(_args[0], seqType, mm); + result->setLocationInfo(this); + + return result->staticResolution(context); +} + +ASTNode *FunctionConstructor::staticTyping(StaticContext *context) +{ + // Should never be called + return this; +} + diff --git a/src/functions/FunctionContains.cpp b/src/functions/FunctionContains.cpp new file mode 100644 index 00000000..961cf9cf --- /dev/null +++ b/src/functions/FunctionContains.cpp @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionContains.cpp,v 1.13 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionContains::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionContains::minArgs = 2; +const unsigned int FunctionContains::maxArgs = 3; + +/** + * fn:contains($arg1 as xs:string?, $arg2 as xs:string?) as xs:boolean + * fn:contains($arg1 as xs:string?, $arg2 as xs:string?, $collation as xs:string) as xs:boolean +**/ + +FunctionContains::FunctionContains(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string?,string?,string", args, memMgr) +{ + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; +} + +Sequence FunctionContains::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Sequence str1 = getParamNumber(1,context)->toSequence(context); + Sequence str2 = getParamNumber(2,context)->toSequence(context); + + Collation* collation = NULL; + if(getNumArgs()>2) { + Sequence collArg = getParamNumber(3,context)->toSequence(context); + const XMLCh* collName = collArg.first()->asString(context); + try { + context->getItemFactory()->createAnyURI(collName, context); + } catch(XPath2ErrorException &e) { + XQThrow(FunctionException, X("FunctionContains::collapseTreeInternal"), X("Invalid collationURI")); + } + collation=context->getCollation(collName, this); + if(collation==NULL) + XQThrow(FunctionException,X("FunctionContains::collapseTreeInternal"),X("Collation object is not available")); + } + else + collation=context->getCollation(CodepointCollation::getCodepointCollationName(), this); + + const XMLCh* container = XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString; + if(!str1.isEmpty()) + container=str1.first()->asString(context); + const XMLCh* pattern = XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString; + if(!str2.isEmpty()) + pattern=str2.first()->asString(context); + + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(pattern)==0) + return Sequence(context->getItemFactory()->createBoolean(true, context), context->getMemoryManager()); + else if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(container)==0) + return Sequence(context->getItemFactory()->createBoolean(false, context), context->getMemoryManager()); + + bool contains = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::patternMatch(container, pattern) > -1; + return Sequence(context->getItemFactory()->createBoolean(contains, context), context->getMemoryManager()); +} diff --git a/src/functions/FunctionCount.cpp b/src/functions/FunctionCount.cpp new file mode 100644 index 00000000..3d42f518 --- /dev/null +++ b/src/functions/FunctionCount.cpp @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionCount.cpp,v 1.13 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionCount::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionCount::minArgs = 1; +const unsigned int FunctionCount::maxArgs = 1; + +/** + * fn:count($arg as item()*) as xs:integer +**/ + +FunctionCount::FunctionCount(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "item()*", args, memMgr) +{ +} + +ASTNode* FunctionCount::staticResolution(StaticContext *context) { + AutoNodeSetOrderingReset orderReset(context); + return resolveArguments(context); +} + +ASTNode *FunctionCount::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; + return calculateSRCForArguments(context); +} + +Sequence FunctionCount::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Result arg = getParamNumber(1,context); + + long length = 0; + while(arg->next(context).notNull()) { + ++length; + } + + return Sequence(context->getItemFactory()->createInteger(length, context), context->getMemoryManager()); +} + diff --git a/src/functions/FunctionCurrentDate.cpp b/src/functions/FunctionCurrentDate.cpp new file mode 100644 index 00000000..fb7ac12c --- /dev/null +++ b/src/functions/FunctionCurrentDate.cpp @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionCurrentDate.cpp,v 1.11 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include "../utils/DateUtils.hpp" +#include + +const XMLCh FunctionCurrentDate::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionCurrentDate::minArgs = 0; +const unsigned int FunctionCurrentDate::maxArgs = 0; + +/** + * fn:current-date() as xs:date +**/ + +FunctionCurrentDate::FunctionCurrentDate(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "empty()", args, memMgr) +{ +} + +ASTNode* FunctionCurrentDate::staticResolution(StaticContext *context) { + return resolveArguments(context); +} + +ASTNode *FunctionCurrentDate::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DATE_TYPE; + _src.currentTimeUsed(true); + return calculateSRCForArguments(context); +} + +Sequence FunctionCurrentDate::collapseTreeInternal(DynamicContext* context, int flags) const +{ + return Sequence(DateUtils::getCurrentDate(context), context->getMemoryManager()); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionCurrentDateTime.cpp b/src/functions/FunctionCurrentDateTime.cpp new file mode 100644 index 00000000..d65368ea --- /dev/null +++ b/src/functions/FunctionCurrentDateTime.cpp @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionCurrentDateTime.cpp,v 1.11 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include "../utils/DateUtils.hpp" +#include + +const XMLCh FunctionCurrentDateTime::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionCurrentDateTime::minArgs = 0; +const unsigned int FunctionCurrentDateTime::maxArgs = 0; + +/** + * fn:current-dateTime() as xs:dateTime +**/ + +FunctionCurrentDateTime::FunctionCurrentDateTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "empty()", args, memMgr) +{ +} + +ASTNode* FunctionCurrentDateTime::staticResolution(StaticContext *context) { + return resolveArguments(context); +} + +ASTNode *FunctionCurrentDateTime::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DATE_TIME_TYPE; + _src.currentTimeUsed(true); + return calculateSRCForArguments(context); +} + +Sequence FunctionCurrentDateTime::collapseTreeInternal(DynamicContext* context, int flags) const +{ + return Sequence(DateUtils::getCurrentDateTime(context), context->getMemoryManager()); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionCurrentTime.cpp b/src/functions/FunctionCurrentTime.cpp new file mode 100644 index 00000000..c5d27c1b --- /dev/null +++ b/src/functions/FunctionCurrentTime.cpp @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionCurrentTime.cpp,v 1.13 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include "../utils/DateUtils.hpp" +#include // for sprintf + +const XMLCh FunctionCurrentTime::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionCurrentTime::minArgs = 0; +const unsigned int FunctionCurrentTime::maxArgs = 0; + +/** + * fn:current-time() as xs:time +**/ + +FunctionCurrentTime::FunctionCurrentTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "empty()", args, memMgr) +{ +} + +ASTNode* FunctionCurrentTime::staticResolution(StaticContext *context) { + return resolveArguments(context); +} + +ASTNode *FunctionCurrentTime::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::TIME_TYPE; + _src.currentTimeUsed(true); + return calculateSRCForArguments(context); +} + +Sequence FunctionCurrentTime::collapseTreeInternal(DynamicContext* context, int flags) const +{ + return Sequence(DateUtils::getCurrentTime(context), context->getMemoryManager()); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionData.cpp b/src/functions/FunctionData.cpp new file mode 100644 index 00000000..d70385fa --- /dev/null +++ b/src/functions/FunctionData.cpp @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionData.cpp,v 1.12 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include + +const XMLCh FunctionData::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionData::minArgs = 1; +const unsigned int FunctionData::maxArgs = 1; + +/* + * fn:data($arg as item()*) as xdt:anyAtomicType* + */ + +FunctionData::FunctionData(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "item()*", args, memMgr) +{ +} + +ASTNode* FunctionData::staticResolution(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + ASTNode *result = new (mm) XQAtomize(_args.front(), mm); + result->setLocationInfo(this); + + return result->staticResolution(context); +} + +ASTNode *FunctionData::staticTyping(StaticContext *context) +{ + // Should never happen + return this; +} + +Result FunctionData::createResult(DynamicContext* context, int flags) const +{ + // Should never happen + assert(0); + return 0; +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionDateTime.cpp b/src/functions/FunctionDateTime.cpp new file mode 100644 index 00000000..e669e5d0 --- /dev/null +++ b/src/functions/FunctionDateTime.cpp @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionDateTime.cpp,v 1.17 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +const XMLCh FunctionDateTime::name[] = { + chLatin_d, chLatin_a, chLatin_t, + chLatin_e, chLatin_T, chLatin_i, + chLatin_m, chLatin_e, chNull }; +const unsigned int FunctionDateTime::minArgs = 2; +const unsigned int FunctionDateTime::maxArgs = 2; + +/** + * fn:dateTime($arg1 as xs:date?, $arg2 as xs:time?) as xs:dateTime? +**/ + +FunctionDateTime::FunctionDateTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "date?, time?", args, memMgr) +{ +} + +ASTNode* FunctionDateTime::staticResolution(StaticContext *context) +{ + return resolveArguments(context, /*checkTimezone*/true); +} + +ASTNode *FunctionDateTime::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DATE_TIME_TYPE; + return calculateSRCForArguments(context, /*checkTimezone*/true); +} + +Sequence FunctionDateTime::collapseTreeInternal(DynamicContext* context, int flags) const +{ + ATDateOrDerived::Ptr date = (const ATDateOrDerived *)getParamNumber(1, context)->next(context).get(); + if(date.isNull()) + return Sequence(context->getMemoryManager()); + ATTimeOrDerived::Ptr time = (const ATTimeOrDerived *)getParamNumber(2, context)->next(context).get(); + if(time.isNull()) + return Sequence(context->getMemoryManager()); + + Timezone::Ptr finalTZ; + // determine the timezone of the result + if(date->hasTimezone()) { + finalTZ=date->getTimezone(); + if(time->hasTimezone()) { + const Timezone::Ptr timeTZ=time->getTimezone(); + if(!timeTZ->equals(finalTZ)) + XQThrow(FunctionException, X("FunctionDateTime::collapseTreeInternal"), + X("Both arguments to fn:dateTime have a timezone specified [err:FORG0008]")); + } + } + else if(time->hasTimezone()) + finalTZ=time->getTimezone(); + + Timezone::Ptr nulltz; + date = date->setTimezone(nulltz, context); + time = time->setTimezone(nulltz, context); + + // convert to a xs:dateTime string + XMLBuffer buff(64, context->getMemoryManager()); + buff.append(date->asString(context)); + buff.append(chLatin_T); + buff.append(time->asString(context)); + if(finalTZ != NULLRCP) + buff.append(finalTZ->asString(context)); + + return Sequence(context->getItemFactory()->createDateTime(buff.getRawBuffer(), context), + context->getMemoryManager()); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionDayFromDate.cpp b/src/functions/FunctionDayFromDate.cpp new file mode 100644 index 00000000..9b4eb692 --- /dev/null +++ b/src/functions/FunctionDayFromDate.cpp @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionDayFromDate.cpp,v 1.13 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionDayFromDate::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_y, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionDayFromDate::minArgs = 1; +const unsigned int FunctionDayFromDate::maxArgs = 1; + +/* + * fn:day-from-date($arg as xs:date?) as xs:integer? + */ + +FunctionDayFromDate::FunctionDayFromDate(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "date?", args, memMgr) +{ +} + +ASTNode* FunctionDayFromDate::staticResolution(StaticContext *context) +{ + return resolveArguments(context, /*checkTimezone*/true); +} + +ASTNode *FunctionDayFromDate::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; + return calculateSRCForArguments(context, /*checkTimezone*/true); +} + +Sequence FunctionDayFromDate::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Item::Ptr arg = getParamNumber(1, context)->next(context); + if(arg.isNull()) return Sequence(memMgr); + + return Sequence(((const ATDateOrDerived*)arg.get())->getDays(context), memMgr); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionDayFromDateTime.cpp b/src/functions/FunctionDayFromDateTime.cpp new file mode 100644 index 00000000..407f890d --- /dev/null +++ b/src/functions/FunctionDayFromDateTime.cpp @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionDayFromDateTime.cpp,v 1.13 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionDayFromDateTime::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_y, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionDayFromDateTime::minArgs = 1; +const unsigned int FunctionDayFromDateTime::maxArgs = 1; + +/* + * fn:day-from-dateTime($arg as xs:dateTime?) as xs:integer? + */ + +FunctionDayFromDateTime::FunctionDayFromDateTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "dateTime?", args, memMgr) +{ +} + +ASTNode* FunctionDayFromDateTime::staticResolution(StaticContext *context) +{ + return resolveArguments(context, /*checkTimezone*/true); +} + +ASTNode *FunctionDayFromDateTime::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; + return calculateSRCForArguments(context, /*checkTimezone*/true); +} + +Sequence FunctionDayFromDateTime::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Item::Ptr arg = getParamNumber(1, context)->next(context); + if(arg.isNull()) return Sequence(memMgr); + + return Sequence(((const ATDateTimeOrDerived*)arg.get())->getDays(context), memMgr); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionDaysFromDuration.cpp b/src/functions/FunctionDaysFromDuration.cpp new file mode 100644 index 00000000..8264472e --- /dev/null +++ b/src/functions/FunctionDaysFromDuration.cpp @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionDaysFromDuration.cpp,v 1.13 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionDaysFromDuration::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_y, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionDaysFromDuration::minArgs = 1; +const unsigned int FunctionDaysFromDuration::maxArgs = 1; + +/* + * fn:days-from-Duration($arg as xs:duration?) as xs:integer? + */ + +FunctionDaysFromDuration::FunctionDaysFromDuration(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "duration?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; +} + +Sequence FunctionDaysFromDuration::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Item::Ptr arg = getParamNumber(1, context)->next(context); + if(arg.isNull()) return Sequence(memMgr); + + return Sequence(((const ATDurationOrDerived*)arg.get())->getDays(context), memMgr); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionDeepEqual.cpp b/src/functions/FunctionDeepEqual.cpp new file mode 100644 index 00000000..408cc4c8 --- /dev/null +++ b/src/functions/FunctionDeepEqual.cpp @@ -0,0 +1,242 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionDeepEqual.cpp,v 1.14 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include "../exceptions/InvalidLexicalSpaceException.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +const XMLCh FunctionDeepEqual::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_q, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionDeepEqual::minArgs = 2; +const unsigned int FunctionDeepEqual::maxArgs = 3; + +/** + * fn:deep-equal($parameter1 as item()*, $parameter2 as item()*) as xs:boolean + * fn:deep-equal($parameter1 as item()*, $parameter2 as item()*, $collation as string) as xs:boolean +**/ + +FunctionDeepEqual::FunctionDeepEqual(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "item()*,item()*,string", args, memMgr) +{ + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; +} + +/*static*/ bool FunctionDeepEqual::deep_equal(Sequence seq1, Sequence seq2, Collation* collation, DynamicContext* context, const LocationInfo *info) +{ + // if both of the arguments are the empty sequence, return true + if(seq1.isEmpty() && seq2.isEmpty()) { + return true; + } + + // if one, but not both, of the arguments is the empty sequence, return false + if(seq1.isEmpty() != seq2.isEmpty()) { + return false; + } + + // Check if they have the same number of items + if(seq1.getLength()!=seq2.getLength()) { + return false; + } + + // Check if items in corresponding positions in the two sequences compare equal if they are values + // or if they have deep equality if they are nodes + Sequence::iterator end1 = seq1.end(); + for(Sequence::iterator it1 = seq1.begin(), it2 = seq2.begin(); it1 != end1; ++it1, ++it2) + { + const Item::Ptr item1 = *it1; + const Item::Ptr item2 = *it2; + + if(item1->isNode() && item2->isNode()) + { + if(!node_deep_equal((const Node::Ptr )item1, (const Node::Ptr )item2, collation, context, info)) { + return false; + } + } + else if(item1->isAtomicValue() && item2->isAtomicValue()) { + AnyAtomicType::Ptr atom1 = (const AnyAtomicType::Ptr )item1; + AnyAtomicType::Ptr atom2 = (const AnyAtomicType::Ptr )item2; + // if both are NaN, they are equal + if(atom1->isNumericValue() && atom2->isNumericValue() && + ((Numeric::Ptr)atom1)->isNaN() && ((Numeric::Ptr)atom2)->isNaN()) + return true; + // need to manually convert xdt:untypedAtomic to xs:string + if(atom1->getPrimitiveTypeIndex() == AnyAtomicType::UNTYPED_ATOMIC) + atom1 = atom1->castAs(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, context); + if(atom2->getPrimitiveTypeIndex() == AnyAtomicType::UNTYPED_ATOMIC) + atom2 = atom2->castAs(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, context); + try { + if(!Equals::equals(atom1,atom2,collation,context, info)) { + return false; + } + } catch (XPath2ErrorException &e) { + return false; + } catch (IllegalArgumentException &e) { + return false; + } + } else { + // one item is a node, the other is an atomic value + return false; + } + } + return true; +} + + +/*static*/ bool FunctionDeepEqual::node_deep_equal(const Node::Ptr &node1, const Node::Ptr &node2, Collation* collation, DynamicContext* context, const LocationInfo *info) +{ + // If the two nodes are of different node-kinds, the result is false. + if(!(XPath2Utils::equals(node1->dmNodeKind(), node2->dmNodeKind()))) { + return false; + } + // If the two nodes have names, and the names are different when compared as expanded-QNames, + // the result is false. + ATQNameOrDerived::Ptr qname1 = node1->dmNodeName(context); + ATQNameOrDerived::Ptr qname2 = node2->dmNodeName(context); + if((qname1.isNull() && qname2.notNull()) || (qname1.notNull() && qname2.isNull())) { + return false; + } + if(qname1.notNull() && qname2.notNull() && !qname1->equals(qname2, context)) { + return false; + } + + // If the two nodes are text nodes, comment nodes, processing instruction nodes, or namespace nodes, + // then the result is true if and only if the two nodes have equal string-values, when compared using + // the selected collation. + const XMLCh* nodeType=node1->dmNodeKind(); + if(XPath2Utils::equals(nodeType, Node::text_string) || + XPath2Utils::equals(nodeType, Node::comment_string) || + XPath2Utils::equals(nodeType, Node::processing_instruction_string) || + XPath2Utils::equals(nodeType, Node::namespace_string)) { + + const XMLCh *node1str = node1->dmStringValue(context); + const XMLCh *node2str = node2->dmStringValue(context); + + return context->getDefaultCollation(info)->compare(node1str, node2str) == 0; + } + + if(XPath2Utils::equals(nodeType, Node::attribute_string)) { + return deep_equal(node1->dmTypedValue(context), node2->dmTypedValue(context), collation, context, info); + } + + // If either node has attributes, then the result is false if either node has an attribute that is not + // deep-equal to an attribute of the other node, using the selected collation. + Sequence attrs1 = node1->dmAttributes(context, info)->toSequence(context); + Sequence attrs2 = node2->dmAttributes(context, info)->toSequence(context); + if(attrs1.getLength() != attrs2.getLength()) return false; + + for(Sequence::iterator i = attrs1.begin(); i != attrs1.end(); ++i) { + bool result = false; + for(Sequence::iterator j = attrs2.begin(); j != attrs2.end(); ++j) { + result = node_deep_equal((const Node::Ptr)*i, (const Node::Ptr)*j, collation, context, info); + if(result) break; + } + if(!result) return false; + } + // If neither node has element children, then the result is true only if the other node also has simple + // content, and if the simple content of the two nodes (that is, the result of the xf:data function) is + // equal under the rules for the xf:deep-equal function, using the selected collation. + // (Note: attributes always have simple content.) + Result children1 = node1->dmChildren(context, info); + Result children2 = node2->dmChildren(context, info); + bool bHasSubElements1 = false, bHasSubElements2 = false; + + Sequence sChildren1 = Sequence(context->getMemoryManager()); + Sequence sChildren2 = Sequence(context->getMemoryManager()); + + if(!children1.isNull() && !children2.isNull()) + { + Node::Ptr child; + while((child = children1->next(context)).notNull()) { + if(child->dmNodeKind() == Node::element_string) { + bHasSubElements1=true; + sChildren1.addItem(child); + } + else if(child->dmNodeKind() == Node::text_string) { + sChildren1.addItem(child); + } + } + while((child = children2->next(context)).notNull()) { + if(child->dmNodeKind() == Node::element_string) { + bHasSubElements2=true; + sChildren2.addItem(child); + } + else if(child->dmNodeKind() == Node::text_string) { + sChildren2.addItem(child); + } + } + } + if(!bHasSubElements1 && !bHasSubElements2) { + return deep_equal(node1->dmTypedValue(context),node2->dmTypedValue(context), collation, context, info); + } + return deep_equal(sChildren1,sChildren2,collation,context, info); +} + +Sequence FunctionDeepEqual::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Sequence arg1=getParamNumber(1,context)->toSequence(context); + Sequence arg2=getParamNumber(2,context)->toSequence(context); + + Collation* collation=NULL; + if(getNumArgs()>2) { + Sequence collArg = getParamNumber(3,context)->toSequence(context); + const XMLCh* collName = collArg.first()->asString(context); + try { + context->getItemFactory()->createAnyURI(collName, context); + } catch(InvalidLexicalSpaceException &e) { + XQThrow(FunctionException, X("FunctionDeepEqual::collapseTreeInternal"), X("Invalid collationURI")); + } + collation=context->getCollation(collName, this); + if(collation==NULL) + XQThrow(FunctionException,X("FunctionDeepEqual::collapseTreeInternal"),X("Collation object is not available")); + } + else + collation=context->getDefaultCollation(this); + if(collation==NULL) + collation=context->getCollation(CodepointCollation::getCodepointCollationName(), this); + + bool bEqual=deep_equal(arg1, arg2, collation, context, this); + + return Sequence(context->getItemFactory()->createBoolean(bEqual, context), + context->getMemoryManager()); +} + + + + diff --git a/src/functions/FunctionDefaultCollation.cpp b/src/functions/FunctionDefaultCollation.cpp new file mode 100644 index 00000000..934d13d7 --- /dev/null +++ b/src/functions/FunctionDefaultCollation.cpp @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionDefaultCollation.cpp,v 1.11 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionDefaultCollation::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionDefaultCollation::minArgs = 0; +const unsigned int FunctionDefaultCollation::maxArgs = 0; + +/** + * fn:default-collation() as xs:string +**/ + +FunctionDefaultCollation::FunctionDefaultCollation(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "empty()", args, memMgr) +{ + _src.getStaticType().flags = StaticType::STRING_TYPE; +} + +Sequence FunctionDefaultCollation::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Collation* collation = context->getDefaultCollation(this); + if(collation != NULL) + return Sequence(context->getItemFactory()->createString(collation->getCollationName(), context), + context->getMemoryManager()); + + return Sequence(context->getItemFactory()->createString(CodepointCollation::getCodepointCollationName(), context), + context->getMemoryManager()); +} diff --git a/src/functions/FunctionDistinctValues.cpp b/src/functions/FunctionDistinctValues.cpp new file mode 100644 index 00000000..95154ae7 --- /dev/null +++ b/src/functions/FunctionDistinctValues.cpp @@ -0,0 +1,251 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionDistinctValues.cpp,v 1.17 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +const XMLCh FunctionDistinctValues::name[] = { + chLatin_d, chLatin_i, chLatin_s, + chLatin_t, chLatin_i, chLatin_n, + chLatin_c, chLatin_t, chDash, + chLatin_v, chLatin_a, chLatin_l, + chLatin_u, chLatin_e, chLatin_s, + chNull +}; +const unsigned int FunctionDistinctValues::minArgs = 1; +const unsigned int FunctionDistinctValues::maxArgs = 2; + +/** + * fn:distinct-values($arg as xdt:anyAtomicType*) as xdt:anyAtomicType* + * fn:distinct-values($arg as xdt:anyAtomicType*, $collation as xs:string) as xdt:anyAtomicType* +**/ + +FunctionDistinctValues::FunctionDistinctValues(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "anyAtomicType*, string", args, memMgr) +{ +} + +ASTNode* FunctionDistinctValues::staticResolution(StaticContext *context) +{ + // Could set ordering to unordered here - jpcs +// AutoNodeSetOrderingReset orderReset(context); + return resolveArguments(context); +} + +ASTNode *FunctionDistinctValues::staticTyping(StaticContext *context) +{ + _src.clear(); + + ASTNode *result = calculateSRCForArguments(context); + if(result == this) { + _src.getStaticType() = _args.front()->getStaticResolutionContext().getStaticType(); + } + return result; +} + +static inline AnyAtomicType::AtomicObjectType getSortType(const AnyAtomicType::Ptr &a) +{ + switch(a->getPrimitiveTypeIndex()) { + case AnyAtomicType::ANY_URI: + case AnyAtomicType::UNTYPED_ATOMIC: + case AnyAtomicType::STRING: return AnyAtomicType::STRING; + + case AnyAtomicType::DECIMAL: + case AnyAtomicType::FLOAT: + case AnyAtomicType::DOUBLE: return AnyAtomicType::DOUBLE; + + case AnyAtomicType::DAY_TIME_DURATION: + case AnyAtomicType::YEAR_MONTH_DURATION: + case AnyAtomicType::DURATION: return AnyAtomicType::DURATION; + + case AnyAtomicType::BASE_64_BINARY: return AnyAtomicType::BASE_64_BINARY; + case AnyAtomicType::BOOLEAN: return AnyAtomicType::BOOLEAN; + case AnyAtomicType::DATE: return AnyAtomicType::DATE; + case AnyAtomicType::DATE_TIME: return AnyAtomicType::DATE_TIME; + case AnyAtomicType::G_DAY: return AnyAtomicType::G_DAY; + case AnyAtomicType::G_MONTH: return AnyAtomicType::G_MONTH; + case AnyAtomicType::G_MONTH_DAY: return AnyAtomicType::G_MONTH_DAY; + case AnyAtomicType::G_YEAR: return AnyAtomicType::G_YEAR; + case AnyAtomicType::G_YEAR_MONTH: return AnyAtomicType::G_YEAR_MONTH; + case AnyAtomicType::HEX_BINARY: return AnyAtomicType::HEX_BINARY; + case AnyAtomicType::NOTATION: return AnyAtomicType::NOTATION; + case AnyAtomicType::QNAME: return AnyAtomicType::QNAME; + case AnyAtomicType::TIME: return AnyAtomicType::TIME; + + default: break; + } + + assert(false); // Not supported + return AnyAtomicType::STRING; +} + +struct dvCompare +{ + dvCompare(const Collation *collation, const DynamicContext *context) + : collation_(collation), context_(context) {} + + bool operator()(const AnyAtomicType::Ptr &a, const AnyAtomicType::Ptr &b) const + { + AnyAtomicType::AtomicObjectType atype = getSortType(a); + AnyAtomicType::AtomicObjectType btype = getSortType(b); + + if(atype != btype) return atype < btype; + + // Items are comparable + switch(atype) { + case AnyAtomicType::STRING: + return collation_->compare(a->asString(context_), b->asString(context_)) < 0; + case AnyAtomicType::DOUBLE: + return ((const Numeric *)a.get())->compare((const Numeric *)b.get(), context_) < 0; + case AnyAtomicType::DURATION: + return ((const ATDurationOrDerived *)a.get())->compare((const ATDurationOrDerived *)b.get(), context_) < 0; + case AnyAtomicType::BASE_64_BINARY: + return ((const ATBase64BinaryOrDerived *)a.get())->compare((const ATBase64BinaryOrDerived *)b.get(), context_) < 0; + case AnyAtomicType::BOOLEAN: + return ((const ATBooleanOrDerived *)a.get())->compare((const ATBooleanOrDerived *)b.get(), context_) < 0; + case AnyAtomicType::DATE: + return ((const ATDateOrDerived *)a.get())->compare((const ATDateOrDerived *)b.get(), context_) < 0; + case AnyAtomicType::DATE_TIME: + return ((const ATDateTimeOrDerived *)a.get())->compare((const ATDateTimeOrDerived *)b.get(), context_) < 0; + case AnyAtomicType::G_DAY: + return ((const ATGDayOrDerived *)a.get())->compare((const ATGDayOrDerived *)b.get(), context_) < 0; + case AnyAtomicType::G_MONTH: + return ((const ATGMonthOrDerived *)a.get())->compare((const ATGMonthOrDerived *)b.get(), context_) < 0; + case AnyAtomicType::G_MONTH_DAY: + return ((const ATGMonthDayOrDerived *)a.get())->compare((const ATGMonthDayOrDerived *)b.get(), context_) < 0; + case AnyAtomicType::G_YEAR: + return ((const ATGYearOrDerived *)a.get())->compare((const ATGYearOrDerived *)b.get(), context_) < 0; + case AnyAtomicType::G_YEAR_MONTH: + return ((const ATGYearMonthOrDerived *)a.get())->compare((const ATGYearMonthOrDerived *)b.get(), context_) < 0; + case AnyAtomicType::HEX_BINARY: + return ((const ATHexBinaryOrDerived *)a.get())->compare((const ATHexBinaryOrDerived *)b.get(), context_) < 0; + case AnyAtomicType::NOTATION: + return ((const ATNotationOrDerived *)a.get())->compare((const ATNotationOrDerived *)b.get(), context_) < 0; + case AnyAtomicType::QNAME: + return ((const ATQNameOrDerived *)a.get())->compare((const ATQNameOrDerived *)b.get(), context_) < 0; + case AnyAtomicType::TIME: + return ((const ATTimeOrDerived *)a.get())->compare((const ATTimeOrDerived *)b.get(), context_) < 0; + default: break; + } + + assert(false); + return false; + } + + const Collation *collation_; + const DynamicContext *context_; +}; + +typedef std::set DistinctSet; + +class DistinctValueResult : public ResultImpl +{ +public: + DistinctValueResult(const FunctionDistinctValues *fdv, const DynamicContext *context); + ~DistinctValueResult(); + Item::Ptr next(DynamicContext *context); + std::string asString(DynamicContext *context, int indent) const; +private: + const FunctionDistinctValues *fdv_; + Result parent_; + bool toDo_; + + DistinctSet *alreadySeen_; +}; + +DistinctValueResult::DistinctValueResult(const FunctionDistinctValues *fdv, const DynamicContext *context) + : ResultImpl(fdv), + fdv_(fdv), + parent_(0), + toDo_(true), + alreadySeen_(0) +{ +} + +DistinctValueResult::~DistinctValueResult() +{ + delete alreadySeen_; +} + +Item::Ptr DistinctValueResult::next(DynamicContext *context) +{ + if(toDo_) { + toDo_ = false; + parent_ = fdv_->getParamNumber(1, context); + + Collation *collation; + if(fdv_->getNumArgs() > 1) { + const XMLCh* collName = fdv_->getParamNumber(2, context)->next(context)->asString(context); + try { + context->getItemFactory()->createAnyURI(collName, context); + } catch(XPath2ErrorException &e) { + XQThrow(FunctionException, X("FunctionDistinctValues::DistinctValueResult::next"), X("Invalid collationURI")); + } + collation = context->getCollation(collName, this); + } + else + collation = context->getDefaultCollation(this); + + alreadySeen_ = new DistinctSet(dvCompare(collation, context)); + } + + AnyAtomicType::Ptr item; + while(true) { + item = (const AnyAtomicType *)parent_->next(context).get(); + if(item == NULLRCP) { + parent_ = 0; + return 0; + } + + if(alreadySeen_->insert(item).second) + return item; + } + + return 0; +} + +std::string DistinctValueResult::asString(DynamicContext *context, int indent) const +{ + return ""; +} + +Result FunctionDistinctValues::createResult(DynamicContext* context, int flags) const +{ + return new DistinctValueResult(this, context); +} + diff --git a/src/functions/FunctionDoc.cpp b/src/functions/FunctionDoc.cpp new file mode 100644 index 00000000..8a992878 --- /dev/null +++ b/src/functions/FunctionDoc.cpp @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionDoc.cpp,v 1.17 2006/11/01 16:37:19 jpcs Exp $ + */ +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionDoc::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionDoc::minArgs = 1; +const unsigned int FunctionDoc::maxArgs = 1; + +/** + * fn:doc($uri as xs:string?) as document? + **/ +FunctionDoc::FunctionDoc(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "string?", args, memMgr) +{ +} + +ASTNode* FunctionDoc::staticResolution(StaticContext *context) +{ + return resolveArguments(context); +} + +ASTNode *FunctionDoc::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.setProperties(StaticResolutionContext::DOCORDER | StaticResolutionContext::GROUPED | + StaticResolutionContext::PEER | StaticResolutionContext::SUBTREE | StaticResolutionContext::ONENODE); + _src.getStaticType().flags = StaticType::DOCUMENT_TYPE; + _src.availableDocumentsUsed(true); + + return calculateSRCForArguments(context); +} + +Sequence FunctionDoc::collapseTreeInternal(DynamicContext* context, int flags) const { + Sequence uriArg = getParamNumber(1,context)->toSequence(context); + + if (uriArg.isEmpty()) { + return Sequence(context->getMemoryManager()); + } + + const XMLCh* uri = uriArg.first()->asString(context); + // on Windows, we can have URIs using \ instead of /; let's normalize them + XMLCh backSlash[]={ XERCES_CPP_NAMESPACE_QUALIFIER chBackSlash, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::findAny(uri,backSlash)) + { + XMLCh* newUri=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::replicate(uri,context->getMemoryManager()); + for(unsigned int i=0;igetMemoryManager())) + XQThrow(FunctionException, X("FunctionDoc::collapseTreeInternal"), X("Invalid argument to fn:doc function [err:FODC0005]")); + + try { + return context->resolveDocument(uri, this); + } + //TODO: once DocumentCacheImpl can throw different errors, we should be able to throw the correct corresponding error messages. + catch(XMLParseException &e) { + XQThrow(FunctionException, X("FunctionDoc::collapseTreeInternal"), e.getError()); + } + return Sequence(context->getMemoryManager()); +} diff --git a/src/functions/FunctionDocAvailable.cpp b/src/functions/FunctionDocAvailable.cpp new file mode 100644 index 00000000..3ed9ff98 --- /dev/null +++ b/src/functions/FunctionDocAvailable.cpp @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionDocAvailable.cpp,v 1.15 2006/11/01 16:37:19 jpcs Exp $ + */ +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionDocAvailable::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_v, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_b, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionDocAvailable::minArgs = 1; +const unsigned int FunctionDocAvailable::maxArgs = 1; + +/** + * fn:doc-available($uri as xs:string?) as xs:boolean + **/ +FunctionDocAvailable::FunctionDocAvailable(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "string?", args, memMgr) +{ +} + +ASTNode* FunctionDocAvailable::staticResolution(StaticContext *context) { + return resolveArguments(context); +} + +ASTNode *FunctionDocAvailable::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; + _src.availableDocumentsUsed(true); + return calculateSRCForArguments(context); +} + +Sequence FunctionDocAvailable::collapseTreeInternal(DynamicContext* context, int flags) const { + Sequence uriArg = getParamNumber(1,context)->toSequence(context); + + if (uriArg.isEmpty()) { + return Sequence(context->getMemoryManager()); + } + + const XMLCh* uri = uriArg.first()->asString(context); + // on Windows, we can have URIs using \ instead of /; let's normalize them + XMLCh backSlash[]={ XERCES_CPP_NAMESPACE_QUALIFIER chBackSlash, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::findAny(uri,backSlash)) + { + XMLCh* newUri=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::replicate(uri,context->getMemoryManager()); + for(unsigned int i=0;igetMemoryManager())) + XQThrow(FunctionException, X("FunctionDocAvailable::collapseTreeInternal"), X("Invalid argument to fn:doc-available function [err:FODC0005]")); + + bool bSuccess=false; + try { + bSuccess = !context->resolveDocument(uri, this).isEmpty(); + } + catch(...) { + } + return Sequence(context->getItemFactory()->createBoolean(bSuccess, context), context->getMemoryManager()); +} diff --git a/src/functions/FunctionDocumentURI.cpp b/src/functions/FunctionDocumentURI.cpp new file mode 100644 index 00000000..4ed4bf80 --- /dev/null +++ b/src/functions/FunctionDocumentURI.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionDocumentURI.cpp,v 1.9 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include + +const XMLCh FunctionDocumentURI::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionDocumentURI::minArgs = 1; +const unsigned int FunctionDocumentURI::maxArgs = 1; + +/* + * fn:document-uri($arg as node()?) as xs:anyURI? + */ + +FunctionDocumentURI::FunctionDocumentURI(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "node()?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::ANY_URI_TYPE; +} + +Sequence FunctionDocumentURI::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Sequence arg = getParamNumber(1,context)->toSequence(context); + if(arg.isEmpty()) + return Sequence(context->getMemoryManager()); + return ((Node*)(const Item*)arg.first())->dmDocumentURI(context); +} diff --git a/src/functions/FunctionEmpty.cpp b/src/functions/FunctionEmpty.cpp new file mode 100644 index 00000000..f3494ce8 --- /dev/null +++ b/src/functions/FunctionEmpty.cpp @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionEmpty.cpp,v 1.12 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionEmpty::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_y, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionEmpty::minArgs = 1; +const unsigned int FunctionEmpty::maxArgs = 1; + +/* + * fn:empty($arg as item()*) as xs:boolean + */ + +FunctionEmpty::FunctionEmpty(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "item()*", args, memMgr) +{ +} + +ASTNode* FunctionEmpty::staticResolution(StaticContext *context) { + AutoNodeSetOrderingReset orderReset(context); + return resolveArguments(context); +} + +ASTNode *FunctionEmpty::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; + return calculateSRCForArguments(context); +} + +Sequence FunctionEmpty::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Result items = getParamNumber(1,context); + return Sequence(context->getItemFactory()->createBoolean(items->next(context) == NULLRCP, context), + context->getMemoryManager()); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionEncodeForUri.cpp b/src/functions/FunctionEncodeForUri.cpp new file mode 100644 index 00000000..8db13a15 --- /dev/null +++ b/src/functions/FunctionEncodeForUri.cpp @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionEncodeForUri.cpp,v 1.7 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +#include +#include +#include + +const XMLCh FunctionEncodeForUri::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionEncodeForUri::minArgs = 1; +const unsigned int FunctionEncodeForUri::maxArgs = 1; + +static const XMLCh RESERVED_CHARACTERS[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chUnderscore, XERCES_CPP_NAMESPACE_QUALIFIER chPeriod, + XERCES_CPP_NAMESPACE_QUALIFIER chTilde, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +static const XMLCh HEX_DIGITS[16] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_1, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_2, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_3, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_4, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_5, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_6, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_7, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_8, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_9, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_A, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_B, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_C, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_D, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_E, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_F +}; + +/* + fn:encode-for-uri($uri-part as xs:string?) as xs:string + */ + +FunctionEncodeForUri::FunctionEncodeForUri(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::STRING_TYPE; +} + +Sequence FunctionEncodeForUri::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Sequence uriPart=getParamNumber(1,context)->toSequence(context); + if(uriPart.isEmpty()) + return Sequence(context->getItemFactory()->createString(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context), context->getMemoryManager()); + + const XMLCh* source = uriPart.first()->asString(context); + unsigned len=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(source); + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer outString(len+1, context->getMemoryManager()); + XERCES_CPP_NAMESPACE_QUALIFIER XMLUTF8Transcoder utf8Trans(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgUTF8EncodingString, 10, context->getMemoryManager()); + for(unsigned i=0;i> 4]); + outString.append(HEX_DIGITS[utf8Str[j] & 0xF]); + } + } + } + + return Sequence(context->getItemFactory()->createString(outString.getRawBuffer(), context), context->getMemoryManager()); +} diff --git a/src/functions/FunctionEndsWith.cpp b/src/functions/FunctionEndsWith.cpp new file mode 100644 index 00000000..a7625716 --- /dev/null +++ b/src/functions/FunctionEndsWith.cpp @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionEndsWith.cpp,v 1.13 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +const XMLCh FunctionEndsWith::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionEndsWith::minArgs = 2; +const unsigned int FunctionEndsWith::maxArgs = 3; + +/* + * fn:ends-with($arg1 as xs:string?, $arg2 as xs:string?) as xs:boolean + * fn:ends-with($arg1 as xs:string?, $arg2 as xs:string?, $collation as xs:string) as xs:boolean + */ + +FunctionEndsWith::FunctionEndsWith(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string?,string?,string", args, memMgr) +{ + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; +} + +Sequence FunctionEndsWith::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Sequence sourceString=getParamNumber(1,context)->toSequence(context); + Sequence findString=getParamNumber(2,context)->toSequence(context); + + const XMLCh* source = XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString; + if(!sourceString.isEmpty()) + source=sourceString.first()->asString(context); + const XMLCh* find = XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString; + if(!findString.isEmpty()) + find=findString.first()->asString(context); + + // If the value of $operand1 is the zero-length string and the value of $operand2 is not the zero-length string, + // then the function returns false. + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(source)==0 && XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(find)>0) + return Sequence(context->getItemFactory()->createBoolean(false, context), context->getMemoryManager()); + // If the value of $operand2 is the zero-length string, then the function returns true + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(find)==0) + return Sequence(context->getItemFactory()->createBoolean(true, context), context->getMemoryManager()); + + Collation* collation=NULL; + if(getNumArgs()>2) { + Sequence collArg = getParamNumber(3,context)->toSequence(context); + const XMLCh* collName = collArg.first()->asString(context); + try { + context->getItemFactory()->createAnyURI(collName, context); + } catch(XPath2ErrorException &e) { + XQThrow(FunctionException, X("FunctionEndsWith::collapseTreeInternal"), X("Invalid collationURI")); + } + collation=context->getCollation(collName, this); + } + else + collation=context->getDefaultCollation(this); + + // Returns a boolean indicating whether or not the value of $operand1 ends with a string that is equal to the value + // of $operand2 according to the specified collation + + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(find)>XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(source)) + return Sequence(context->getItemFactory()->createBoolean(false, context), context->getMemoryManager()); + int i,j; + for(i = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(source)-1, j=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(find)-1; i >=0 && j >=0; i--,j--) + { + const XMLCh *string1 = XPath2Utils::subString(source, i,1, context->getMemoryManager()); + const XMLCh *string2 = XPath2Utils::subString(find, j, 1, context->getMemoryManager()); + bool result = (collation->compare(string1, string2)!=0); + + if(result) { + return Sequence(context->getItemFactory()->createBoolean(false, context), context->getMemoryManager()); + } + } + + return Sequence(context->getItemFactory()->createBoolean(true, context), context->getMemoryManager()); +} diff --git a/src/functions/FunctionError.cpp b/src/functions/FunctionError.cpp new file mode 100644 index 00000000..11783956 --- /dev/null +++ b/src/functions/FunctionError.cpp @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionError.cpp,v 1.14 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include + +const XMLCh FunctionError::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionError::minArgs = 0; +const unsigned int FunctionError::maxArgs = 3; + +/* + * fn:error() as none + * fn:error($error as xs:QName) as none + * fn:error($error as xs:QName?, $description as xs:string) as none + * fn:error($error as xs:QName?, $description as xs:string, $error-object as item()*) as none + */ + +FunctionError::FunctionError(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "QName?, string, item()*", args, memMgr) +{ +} + +ASTNode* FunctionError::staticResolution(StaticContext *context) +{ + return resolveArguments(context); +} + +ASTNode *FunctionError::staticTyping(StaticContext *context) +{ + _src.clear(); + + // we need to specify ITEM_TYPE, or a sequence type applied on us will always fail + _src.getStaticType().flags = StaticType::ITEM_TYPE; + _src.forceNoFolding(true); + return calculateSRCForArguments(context); +} + +Sequence FunctionError::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer exc_name(1023, context->getMemoryManager()); + exc_name.set(X("User-requested error")); + switch(getNumArgs()) + { + case 0: break; + case 3: // TODO: extra storage in the exception object for the user object + case 2: { + Sequence arg=getParamNumber(2,context)->toSequence(context); + exc_name.append(X(": ")); + exc_name.append(arg.first()->asString(context)); + } + case 1: { + Sequence arg=getParamNumber(1,context)->toSequence(context); + if(arg.isEmpty()) + { + if(getNumArgs()==1) + XQThrow(XPath2ErrorException, X("FunctionError::collapseTreeInternal"), X("ItemType matching failed [err:XPTY0004]")); + } + else + { + exc_name.append(X(" [")); + exc_name.append(arg.first()->asString(context)); + exc_name.append(X("]")); + } + } + } + exc_name.append(X(" [err:FOER0000]")); + XQThrow(XPath2ErrorException, X("FunctionError::collapseTreeInternal"), exc_name.getRawBuffer()); +} + + diff --git a/src/functions/FunctionEscapeHtmlUri.cpp b/src/functions/FunctionEscapeHtmlUri.cpp new file mode 100644 index 00000000..953726e2 --- /dev/null +++ b/src/functions/FunctionEscapeHtmlUri.cpp @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionEscapeHtmlUri.cpp,v 1.6 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +#include +#include +#include + +const XMLCh FunctionEscapeHtmlUri::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionEscapeHtmlUri::minArgs = 1; +const unsigned int FunctionEscapeHtmlUri::maxArgs = 1; + +static const XMLCh HEX_DIGITS[16] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_1, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_2, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_3, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_4, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_5, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_6, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_7, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_8, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_9, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_A, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_B, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_C, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_D, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_E, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_F +}; + +/* + fn:escape-html-uri($uri as xs:string?) as xs:string + */ + +FunctionEscapeHtmlUri::FunctionEscapeHtmlUri(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::STRING_TYPE; +} + +Sequence FunctionEscapeHtmlUri::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Sequence uriPart=getParamNumber(1,context)->toSequence(context); + if(uriPart.isEmpty()) + return Sequence(context->getItemFactory()->createString(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context), context->getMemoryManager()); + + const XMLCh* source = uriPart.first()->asString(context); + unsigned len=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(source); + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer outString(len+1, context->getMemoryManager()); + XERCES_CPP_NAMESPACE_QUALIFIER XMLUTF8Transcoder utf8Trans(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgUTF8EncodingString, 10, context->getMemoryManager()); + for(unsigned i=0;i=32 && source[i]<=126) + outString.append(source[i]); + else + { + XMLByte utf8Str[8]; + unsigned int charsEaten; + unsigned int nLen=utf8Trans.transcodeTo(&source[i], 1, utf8Str, 7, charsEaten, XERCES_CPP_NAMESPACE_QUALIFIER XMLTranscoder::UnRep_RepChar); + for(unsigned int j=0;j> 4]); + outString.append(HEX_DIGITS[utf8Str[j] & 0xF]); + } + } + } + + return Sequence(context->getItemFactory()->createString(outString.getRawBuffer(), context), context->getMemoryManager()); +} diff --git a/src/functions/FunctionExactlyOne.cpp b/src/functions/FunctionExactlyOne.cpp new file mode 100644 index 00000000..e7b9e2a7 --- /dev/null +++ b/src/functions/FunctionExactlyOne.cpp @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionExactlyOne.cpp,v 1.12 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include + +const XMLCh FunctionExactlyOne::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_y, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionExactlyOne::minArgs = 1; +const unsigned int FunctionExactlyOne::maxArgs = 1; + +/* + * fn:exactly-one($arg as item()*) as item() + */ + +FunctionExactlyOne::FunctionExactlyOne(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "item()*", args, memMgr) +{ + // TBD - could do better here - jpcs + _src.getStaticType().flags = StaticType::ITEM_TYPE; +} + +Result FunctionExactlyOne::createResult(DynamicContext* context, int flags) const +{ + return new ExactlyOneResult(this, flags); +} + +FunctionExactlyOne::ExactlyOneResult::ExactlyOneResult(const FunctionExactlyOne *func, int flags) + : ResultImpl(func), + _flags(flags), + _func(func), + _arg(0), + _argNo(0) +{ +} + +Item::Ptr FunctionExactlyOne::ExactlyOneResult::next(DynamicContext *context) +{ + if(_arg.isNull()) { + _arg = _func->getParamNumber(1, context); + } + + const Item::Ptr result = _arg->next(context); + ++_argNo; + + if(_argNo == 1 && result == NULLRCP) { + XQThrow(FunctionException, X("FunctionExactlyOne::ExactlyOneResult::next"),X("fn:exactly-one called with a sequence containing no items [err:FORG0005]")); + } + if(_argNo == 2 && result != NULLRCP) { + XQThrow(FunctionException, X("FunctionExactlyOne::ExactlyOneResult::next"),X("fn:exactly-one called with a sequence containing more than one item [err:FORG0005]")); + } + + return result; +} + +std::string FunctionExactlyOne::ExactlyOneResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/functions/FunctionExists.cpp b/src/functions/FunctionExists.cpp new file mode 100644 index 00000000..e77d2f46 --- /dev/null +++ b/src/functions/FunctionExists.cpp @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionExists.cpp,v 1.12 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionExists::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionExists::minArgs = 1; +const unsigned int FunctionExists::maxArgs = 1; + +/* + * fn:exists($arg as item()*) as xs:boolean + */ + +FunctionExists::FunctionExists(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "item()*", args, memMgr) +{ +} + +ASTNode* FunctionExists::staticResolution(StaticContext *context) { + AutoNodeSetOrderingReset orderReset(context); + return resolveArguments(context); +} + +ASTNode *FunctionExists::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; + return calculateSRCForArguments(context); +} + +Sequence FunctionExists::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Result items = getParamNumber(1,context); + return Sequence(context->getItemFactory()->createBoolean(items->next(context) != NULLRCP, context), + context->getMemoryManager()); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionFalse.cpp b/src/functions/FunctionFalse.cpp new file mode 100644 index 00000000..02c33a9d --- /dev/null +++ b/src/functions/FunctionFalse.cpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionFalse.cpp,v 1.10 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include + +const XMLCh FunctionFalse::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionFalse::minArgs = 0; +const unsigned int FunctionFalse::maxArgs = 0; + +/* + * fn:false() as xs:boolean + */ + +FunctionFalse::FunctionFalse(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "empty()", args, memMgr) +{ + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; +} + +Sequence FunctionFalse::collapseTreeInternal(DynamicContext* context, int flags) const +{ + return Sequence(context->getItemFactory()->createBoolean(false, context), + context->getMemoryManager()); +} diff --git a/src/functions/FunctionFloor.cpp b/src/functions/FunctionFloor.cpp new file mode 100644 index 00000000..5ffdfae6 --- /dev/null +++ b/src/functions/FunctionFloor.cpp @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionFloor.cpp,v 1.12 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include + +const XMLCh FunctionFloor::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionFloor::minArgs = 1; +const unsigned int FunctionFloor::maxArgs = 1; + +/* + * fn:floor($arg as numeric?) as numeric? + */ + +FunctionFloor::FunctionFloor(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : NumericFunction(name, minArgs, maxArgs, "anyAtomicType?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::NUMERIC_TYPE; +} + +Sequence FunctionFloor::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Numeric::Ptr numericArg = getNumericParam(1, context); + + //If the argument is the empty sequence, the empty sequence is returned. + if(numericArg.isNull()) { + return Sequence(context->getMemoryManager()); + } + + if(numericArg->isNaN() || numericArg->isInfinite()) + return Sequence(numericArg, context->getMemoryManager()); + return Sequence(numericArg->floor(context), context->getMemoryManager()); +} diff --git a/src/functions/FunctionHoursFromDateTime.cpp b/src/functions/FunctionHoursFromDateTime.cpp new file mode 100644 index 00000000..e04e3d0b --- /dev/null +++ b/src/functions/FunctionHoursFromDateTime.cpp @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionHoursFromDateTime.cpp,v 1.13 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionHoursFromDateTime::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionHoursFromDateTime::minArgs = 1; +const unsigned int FunctionHoursFromDateTime::maxArgs = 1; + +/* + * fn:hours-from-dateTime($arg as xs:dateTime?) as xs:integer? + */ + +FunctionHoursFromDateTime::FunctionHoursFromDateTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "dateTime?", args, memMgr) +{ +} + +ASTNode* FunctionHoursFromDateTime::staticResolution(StaticContext *context) +{ + return resolveArguments(context, /*checkTimezone*/true); +} + +ASTNode *FunctionHoursFromDateTime::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; + return calculateSRCForArguments(context, /*checkTimezone*/true); +} + +Sequence FunctionHoursFromDateTime::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Item::Ptr arg = getParamNumber(1, context)->next(context); + if(arg.isNull()) return Sequence(memMgr); + + return Sequence(((const ATDateTimeOrDerived*)arg.get())->getHours(context), memMgr); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionHoursFromDuration.cpp b/src/functions/FunctionHoursFromDuration.cpp new file mode 100644 index 00000000..48f0b2f2 --- /dev/null +++ b/src/functions/FunctionHoursFromDuration.cpp @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionHoursFromDuration.cpp,v 1.13 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionHoursFromDuration::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionHoursFromDuration::minArgs = 1; +const unsigned int FunctionHoursFromDuration::maxArgs = 1; + +/* + * fn:hours-from-duration($arg as xs:duration?) as xs:integer? + */ + +FunctionHoursFromDuration::FunctionHoursFromDuration(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "duration?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; +} + +Sequence FunctionHoursFromDuration::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Item::Ptr arg = getParamNumber(1, context)->next(context); + if(arg.isNull()) return Sequence(memMgr); + + return Sequence(((const ATDurationOrDerived*)arg.get())->getHours(context), memMgr); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionHoursFromTime.cpp b/src/functions/FunctionHoursFromTime.cpp new file mode 100644 index 00000000..a3e8fec1 --- /dev/null +++ b/src/functions/FunctionHoursFromTime.cpp @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionHoursFromTime.cpp,v 1.13 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionHoursFromTime::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionHoursFromTime::minArgs = 1; +const unsigned int FunctionHoursFromTime::maxArgs = 1; + +/* + * fn:hours-from-time($arg as xs:time?) as xs:integer? + */ + +FunctionHoursFromTime::FunctionHoursFromTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "time?", args, memMgr) +{ +} + +ASTNode* FunctionHoursFromTime::staticResolution(StaticContext *context) +{ + return resolveArguments(context, /*checkTimezone*/true); +} + +ASTNode *FunctionHoursFromTime::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; + return calculateSRCForArguments(context, /*checkTimezone*/true); +} + +Sequence FunctionHoursFromTime::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Item::Ptr arg = getParamNumber(1, context)->next(context); + if(arg.isNull()) return Sequence(memMgr); + + return Sequence(((const ATTimeOrDerived*)arg.get())->getHours(context), memMgr); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionId.cpp b/src/functions/FunctionId.cpp new file mode 100644 index 00000000..8cc32f50 --- /dev/null +++ b/src/functions/FunctionId.cpp @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionId.cpp,v 1.15 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionId::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionId::minArgs = 1; +const unsigned int FunctionId::maxArgs = 2; + +/** + * fn:id($arg as xs:string*) as element()* + * fn:id($arg as xs:string*, $node as node()) as element()* +**/ + +FunctionId::FunctionId(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "string*, node()", args, memMgr) +{ +} + +ASTNode* FunctionId::staticResolution(StaticContext *context) { + if(_args.size()==2 && _args.back()->getType()==ASTNode::CONTEXT_ITEM) + _args.pop_back(); + return resolveArguments(context); +} + +ASTNode *FunctionId::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::ELEMENT_TYPE; + if(_args.size()==1) + _src.contextItemUsed(true); + return calculateSRCForArguments(context); +} + +Sequence FunctionId::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Node::Ptr ctxNode; + if(getNumArgs() == 2) + { + Sequence arg=getParamNumber(2,context)->toSequence(context); + ctxNode=arg.first(); + } + else + { + const Item::Ptr item = context->getContextItem(); + if(item==NULLRCP) + XQThrow(FunctionException, X("FunctionId::collapseTreeInternal"),X("Undefined context item in fn:id [err:XPDY0002]")); + if(!item->isNode()) + XQThrow(FunctionException, X("FunctionId::collapseTreeInternal"),X("The context item is not a node [err:XPTY0004]")); + ctxNode=item; + } + + Node::Ptr root = FunctionRoot::root(ctxNode, context); + if(root->dmNodeKind() != Node::document_string) { + XQThrow(FunctionException,X("FunctionId::collapseTreeInternal"), X("Current context doesn't belong to a document [err:FODC0001]")); + } + + Sequence strings = getParamNumber(1, context)->toSequence(context); + if(strings.isEmpty()) + return Sequence(context->getMemoryManager()); + + std::vector values; + + //get the list of id values we're looking for by iterating over each string in the sequence + for (Sequence::iterator stringIt = strings.begin(); stringIt != strings.end(); ++stringIt) { + const XMLCh *str = (*stringIt)->asString(context); + std::vector idList = XPath2Utils::getVal(str, context->getMemoryManager()); + + //for each list obtained from a string check that each id is unique to the full list and if so add it + for (std::vector::iterator listIt=idList.begin(); listIt!=idList.end(); ++listIt) { + if (!XPath2Utils::containsString(values, *listIt)) + values.push_back(*listIt); + } + } + + Sequence result(context->getMemoryManager()); + std::vector returnedVals; + + std::vector resultStack; + resultStack.push_back(root->dmChildren(context, this)); + Node::Ptr child = resultStack.back()->next(context); + while(child.notNull()) { + if(child->dmNodeKind() == Node::element_string) { + bool added = false; + if(child->dmIsId(context)->isTrue()) { + // child is of type xs:ID + const XMLCh* id = child->dmStringValue(context); + if(XPath2Utils::containsString(values, id) && + !XPath2Utils::containsString(returnedVals, id)) { + returnedVals.push_back(id); + result.addItem(child); + added = true; + } + } + + if(!added) { + Result attrs = child->dmAttributes(context, this); + Node::Ptr att; + while((att = (Node::Ptr)attrs->next(context)).notNull()) { + if(att->dmIsId(context)->isTrue()) { + // att is of type xs:ID + const XMLCh* id = att->dmStringValue(context); + if(XPath2Utils::containsString(values, id) && + !XPath2Utils::containsString(returnedVals, id)) { + returnedVals.push_back(id); + result.addItem(child); + break; + } + } + } + } + } + + resultStack.push_back(child->dmChildren(context, this)); + while(!resultStack.empty() && (child = resultStack.back()->next(context)).isNull()) { + resultStack.pop_back(); + } + } + + return result; +} + diff --git a/src/functions/FunctionIdref.cpp b/src/functions/FunctionIdref.cpp new file mode 100644 index 00000000..ae67f0b8 --- /dev/null +++ b/src/functions/FunctionIdref.cpp @@ -0,0 +1,156 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionIdref.cpp,v 1.16 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include "../exceptions/InvalidLexicalSpaceException.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionIdref::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionIdref::minArgs = 1; +const unsigned int FunctionIdref::maxArgs = 2; + +/** + * fn:idref($arg as xs:string*) as node()* + * fn:idref($arg as xs:string*, $node as node()) as node()* + **/ + +FunctionIdref::FunctionIdref(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "string*, node()", args, memMgr) +{ +} + +ASTNode* FunctionIdref::staticResolution(StaticContext *context) { + if(_args.size()==2 && _args.back()->getType()==ASTNode::CONTEXT_ITEM) + _args.pop_back(); + return resolveArguments(context); +} + +ASTNode *FunctionIdref::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::NODE_TYPE; + if(_args.size()==1) + _src.contextItemUsed(true); + return calculateSRCForArguments(context); +} + +Sequence FunctionIdref::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Node::Ptr ctxNode; + if(getNumArgs() == 2) + { + Sequence arg=getParamNumber(2,context)->toSequence(context); + ctxNode=arg.first(); + } + else + { + const Item::Ptr item = context->getContextItem(); + if(item==NULLRCP) + XQThrow(FunctionException, X("FunctionIdref::collapseTreeInternal"),X("Undefined context item in fn:idref [err:XPDY0002]")); + if(!item->isNode()) + XQThrow(FunctionException, X("FunctionIdref::collapseTreeInternal"),X("The context item is not a node [err:XPTY0004]")); + ctxNode=item; + } + + Node::Ptr root = FunctionRoot::root(ctxNode, context); + + if(root->dmNodeKind() != Node::document_string) { + XQThrow(FunctionException,X("FunctionIdref::collapseTreeInternal"), X("Current context doesn't belong to a document [err:FODC0001]")); + } + + Sequence strings = getParamNumber(1, context)->toSequence(context); + if(strings.isEmpty()) + return Sequence(context->getMemoryManager()); + + std::vector values; + + //get the list of idref values we're looking for by iterating over each string in the sequence + for (Sequence::iterator stringIt = strings.begin(); stringIt != strings.end(); ++stringIt) { + const XMLCh *str = (*stringIt)->asString(context); + + //for each string check that it is lexically a xs:ID, if not ignore it + bool validID = true; + try { + context->getItemFactory()->createStringOrDerived(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgIDString, str, context); + } catch (InvalidLexicalSpaceException &e) { + validID = false; + } + if (validID) { + values.push_back(str); + } + } + + Sequence result(context->getMemoryManager()); + + std::vector resultStack; + resultStack.push_back(root->dmChildren(context, this)); + Node::Ptr child = resultStack.back()->next(context); + while(child.notNull()) { + if(child->dmNodeKind() == Node::element_string) { + if(child->dmIsIdRefs(context)->isTrue()) { + // child is of type xs:ID + const XMLCh* id = child->dmStringValue(context); + std::vector vals = XPath2Utils::getVal(id, context->getMemoryManager()); + for(std::vector::iterator val = vals.begin(); + val != vals.end(); ++val) { + if(XPath2Utils::containsString(values, *val)) { + result.addItem(child); + break; + } + } + } + + Result attrs = child->dmAttributes(context, this); + Node::Ptr att; + while((att = (Node::Ptr)attrs->next(context)).notNull()) { + if(att->dmIsIdRefs(context)->isTrue()) { + // att is of type xs:ID + const XMLCh* id = att->dmStringValue(context); + std::vector vals = XPath2Utils::getVal(id, context->getMemoryManager()); + for(std::vector::iterator val = vals.begin(); + val != vals.end(); ++val) { + if(XPath2Utils::containsString(values, *val)) { + result.addItem(att); + break; + } + } + } + } + } + + resultStack.push_back(child->dmChildren(context, this)); + while(!resultStack.empty() && (child = resultStack.back()->next(context)).isNull()) { + resultStack.pop_back(); + } + } + + return result; +} diff --git a/src/functions/FunctionImplicitTimezone.cpp b/src/functions/FunctionImplicitTimezone.cpp new file mode 100644 index 00000000..ff5b84c3 --- /dev/null +++ b/src/functions/FunctionImplicitTimezone.cpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionImplicitTimezone.cpp,v 1.11 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include + +/*implicit-timezone*/ +const XMLCh FunctionImplicitTimezone::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_z, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionImplicitTimezone::minArgs = 0; +const unsigned int FunctionImplicitTimezone::maxArgs = 0; + + +/** + * fn:implicit-timezone() as xdt:dayTimeDuration +**/ + +FunctionImplicitTimezone::FunctionImplicitTimezone(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "empty()", args, memMgr) +{ +} + +ASTNode* FunctionImplicitTimezone::staticResolution(StaticContext *context) { + return resolveArguments(context); +} + +ASTNode *FunctionImplicitTimezone::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DAY_TIME_DURATION_TYPE; + _src.implicitTimezoneUsed(true); + return calculateSRCForArguments(context); +} + +Sequence FunctionImplicitTimezone::collapseTreeInternal(DynamicContext* context, int flags) const +{ + return Sequence(context->getImplicitTimezone(), context->getMemoryManager()); +} diff --git a/src/functions/FunctionInScopePrefixes.cpp b/src/functions/FunctionInScopePrefixes.cpp new file mode 100644 index 00000000..aee71c44 --- /dev/null +++ b/src/functions/FunctionInScopePrefixes.cpp @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionInScopePrefixes.cpp,v 1.12 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +/** + * fn:in-scope-prefixes($element as element) as xs:string* +**/ + +const XMLCh FunctionInScopePrefixes::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionInScopePrefixes::minArgs = 1; +const unsigned int FunctionInScopePrefixes::maxArgs = 1; + + +FunctionInScopePrefixes::FunctionInScopePrefixes(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "element()", args, memMgr) +{ + _src.getStaticType().flags = StaticType::STRING_TYPE; +} + +Sequence FunctionInScopePrefixes::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Sequence arg1 = getParamNumber(1,context)->toSequence(context); + Node::Ptr node = (Node::Ptr)arg1.first(); + + Sequence returnSeq(context->getMemoryManager()); + + Result namespaces = node->dmNamespaceNodes(context, this); + Node::Ptr ns; + while((ns = (Node::Ptr)namespaces->next(context)).notNull()) { + ATQNameOrDerived::Ptr name = ns->dmNodeName(context); + if(name.isNull()) { + returnSeq.addItem(context->getItemFactory()->createString(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context)); + } + else { + returnSeq.addItem(context->getItemFactory()->createString(((const ATQNameOrDerived*)name.get())->getName(), context)); + } + } + + return returnSeq; +} diff --git a/src/functions/FunctionIndexOf.cpp b/src/functions/FunctionIndexOf.cpp new file mode 100644 index 00000000..3e25cbf2 --- /dev/null +++ b/src/functions/FunctionIndexOf.cpp @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionIndexOf.cpp,v 1.14 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionIndexOf::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionIndexOf::minArgs = 2; +const unsigned int FunctionIndexOf::maxArgs = 3; + +/** + * fn:index-of($seqParam as xdt:anyAtomicType*, $srchParam as xdt:anyAtomicType) as xs:integer* + * fn:index-of($seqParam as xdt:anyAtomicType*, $srchParam as xdt:anyAtomicType, $collation as xs:string) as xs:integer* +**/ + +FunctionIndexOf::FunctionIndexOf(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "anyAtomicType*, anyAtomicType, string", args, memMgr) +{ + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; +} + +Sequence FunctionIndexOf::indexOf(Sequence &list, const Item::Ptr &item, Collation* collation, DynamicContext* context) const +{ + Sequence result = Sequence(list.getLength(),context->getMemoryManager()); + int index = 1; + AnyAtomicType::Ptr atom=(const AnyAtomicType::Ptr )item; + // need to manually convert xdt:untypedAtomic to xs:string + if(atom->getPrimitiveTypeIndex() == AnyAtomicType::UNTYPED_ATOMIC) + atom = atom->castAs(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, context); + for(Sequence::iterator i = list.begin(); i != list.end(); ++i,++index) { + AnyAtomicType::Ptr current = (const AnyAtomicType::Ptr )*i; + try { + // need to manually convert xdt:untypedAtomic to xs:string + if(current->getPrimitiveTypeIndex() == AnyAtomicType::UNTYPED_ATOMIC) + current = current->castAs(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, context); + + if(Equals::equals(current,atom,collation,context,this)) + result.addItem(context->getItemFactory()->createInteger(index, context)); + } catch (IllegalArgumentException &e) { + // if eq is not defined, they are different + } catch (XPath2ErrorException &e) { + // if eq is not defined, they are different + } + } + return result; +} + + +Sequence FunctionIndexOf::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + Sequence list=getParamNumber(1,context)->toSequence(context); + if(list.isEmpty()) return Sequence(memMgr); + const Item::Ptr srchparam = (const Item::Ptr )getParamNumber(2,context)->next(context); + + Collation* collation=NULL; + if (getNumArgs() > 2) { + const XMLCh* collName=getParamNumber(3,context)->next(context)->asString(context); + try { + context->getItemFactory()->createAnyURI(collName, context); + } catch(XPath2ErrorException &e) { + XQThrow(FunctionException, X("FunctionIndexOf::collapseTreeInternal"), X("Invalid collationURI")); + } + collation=context->getCollation(collName, this); + } + else + collation = context->getDefaultCollation(this); + return indexOf(list, srchparam, collation, context); +} diff --git a/src/functions/FunctionInsertBefore.cpp b/src/functions/FunctionInsertBefore.cpp new file mode 100644 index 00000000..441e25e8 --- /dev/null +++ b/src/functions/FunctionInsertBefore.cpp @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionInsertBefore.cpp,v 1.13 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionInsertBefore::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_b, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionInsertBefore::minArgs = 3; +const unsigned int FunctionInsertBefore::maxArgs = 3; + +/** + * fn:insert-before($target as item()*, $position as xs:integer, $inserts as item()*) as item()* + */ + +FunctionInsertBefore::FunctionInsertBefore(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "item()*, integer, item()*", args, memMgr) +{ +} + +ASTNode* FunctionInsertBefore::staticResolution(StaticContext *context) +{ + return resolveArguments(context); +} + +ASTNode *FunctionInsertBefore::staticTyping(StaticContext *context) +{ + _src.clear(); + + ASTNode *result = calculateSRCForArguments(context); + if(result == this) { + _src.getStaticType() = _args[0]->getStaticResolutionContext().getStaticType(); + _src.getStaticType().typeUnion(_args[2]->getStaticResolutionContext().getStaticType()); + } + return result; +} + +Result FunctionInsertBefore::createResult(DynamicContext* context, int flags) const +{ + return new InsertBeforeResult(this); +} + +FunctionInsertBefore::InsertBeforeResult::InsertBeforeResult(const FunctionInsertBefore *func) + : ResultImpl(func), + _func(func), + _position(0), + _one(0), + _i(0), + _insertsDone(false), + _target(0), + _inserts(0) +{ +} + +Item::Ptr FunctionInsertBefore::InsertBeforeResult::next(DynamicContext *context) +{ + if(_position == NULLRCP) { + _position = ((const ATDecimalOrDerived::Ptr )_func->getParamNumber(2, context)->next(context)); + _one = context->getItemFactory()->createInteger(1, context); + _i = _one; + _target = _func->getParamNumber(1, context); + + if(!_position->greaterThan(_one, context)) { + _inserts = _func->getParamNumber(3, context); + } + } + + Item::Ptr result = 0; + while(result == NULLRCP) { + if(!_inserts.isNull()) { + result = _inserts->next(context); + if(result == NULLRCP) { + _inserts = 0; + _insertsDone = true; + } + } + else { + result = _target->next(context); + if(!_insertsDone) { + _i = _i->add(_one, context); + if(result == NULLRCP || _position->equals((const AnyAtomicType::Ptr)_i, context)) { + _inserts = _func->getParamNumber(3, context); + } + } + else if(result == NULLRCP) { + break; + } + } + } + + return result; +} + +std::string FunctionInsertBefore::InsertBeforeResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/functions/FunctionIriToUri.cpp b/src/functions/FunctionIriToUri.cpp new file mode 100644 index 00000000..e67e3c96 --- /dev/null +++ b/src/functions/FunctionIriToUri.cpp @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionIriToUri.cpp,v 1.8 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +#include +#include +#include + +const XMLCh FunctionIriToUri::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionIriToUri::minArgs = 1; +const unsigned int FunctionIriToUri::maxArgs = 1; + +static const XMLCh HEX_DIGITS[16] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_1, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_2, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_3, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_4, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_5, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_6, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_7, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_8, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_9, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_A, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_B, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_C, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_D, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_E, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_F +}; + +static bool isUCSCharOrIPrivate(XMLCh ch) +{ + // TODO: handle non-BMP characters + + //ucschar = %xA0-D7FF / %xF900-FDCF / %xFDF0-FFEF + // / %x10000-1FFFD / %x20000-2FFFD / %x30000-3FFFD + // / %x40000-4FFFD / %x50000-5FFFD / %x60000-6FFFD + // / %x70000-7FFFD / %x80000-8FFFD / %x90000-9FFFD + // / %xA0000-AFFFD / %xB0000-BFFFD / %xC0000-CFFFD + // / %xD0000-DFFFD / %xE1000-EFFFD + + //iprivate = %xE000-F8FF / %xF0000-FFFFD / %x100000-10FFFD + return (ch>0xA0 && ch<0xD7FF) || (ch>0xF900 && ch<0xFDCF) || (ch>0xFDF0 && ch<0xFFEF) || (ch>0xE000 && ch<0xF8FF); +} + +/* + fn:iri-to-uri($uri-part as xs:string?) as xs:string + */ + +FunctionIriToUri::FunctionIriToUri(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::STRING_TYPE; +} + +Sequence FunctionIriToUri::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Sequence uriPart=getParamNumber(1,context)->toSequence(context); + if(uriPart.isEmpty()) + return Sequence(context->getItemFactory()->createString(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context), context->getMemoryManager()); + + const XMLCh* source = uriPart.first()->asString(context); + unsigned len=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(source); + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer outString(len+1, context->getMemoryManager()); + XERCES_CPP_NAMESPACE_QUALIFIER XMLUTF8Transcoder utf8Trans(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgUTF8EncodingString, 10, context->getMemoryManager()); + for(unsigned i=0;i> 4]); + outString.append(HEX_DIGITS[utf8Str[j] & 0xF]); + } + } + else + outString.append(source[i]); + } + + return Sequence(context->getItemFactory()->createString(outString.getRawBuffer(), context), context->getMemoryManager()); +} diff --git a/src/functions/FunctionLang.cpp b/src/functions/FunctionLang.cpp new file mode 100644 index 00000000..966458f8 --- /dev/null +++ b/src/functions/FunctionLang.cpp @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionLang.cpp,v 1.16 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionLang::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionLang::minArgs = 1; +const unsigned int FunctionLang::maxArgs = 2; + +/** + * fn:lang($testlang as xs:string?) as xs:boolean + * fn:lang($testlang as xs:string?, $node as node()) as xs:boolean +**/ + +FunctionLang::FunctionLang(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "string?,node()", args, memMgr) +{ +} + +ASTNode* FunctionLang::staticResolution(StaticContext *context) { + if(_args.size() == 2 && _args[1]->getType() == ASTNode::CONTEXT_ITEM) + _args.pop_back(); + return resolveArguments(context); +} + +ASTNode *FunctionLang::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; + if(_args.size()==1) + _src.contextItemUsed(true); + return calculateSRCForArguments(context); +} + +Sequence FunctionLang::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Sequence arg1=getParamNumber(1, context)->toSequence(context); + const XMLCh *param1 = XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString; + if(!arg1.isEmpty()) + param1=arg1.first()->asString(context); + + const XMLCh* xmlLangValue = XPath2Utils::toLower(param1, context->getMemoryManager()); + bool isSubLang = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::indexOf(xmlLangValue, XERCES_CPP_NAMESPACE_QUALIFIER chDash) > 0; + + Node::Ptr ctxNode; + if(getNumArgs() == 2) + { + Sequence arg=getParamNumber(2,context)->toSequence(context); + ctxNode=arg.first(); + } + else + { + const Item::Ptr item = context->getContextItem(); + if(item==NULLRCP) + XQThrow(FunctionException, X("FunctionLang::collapseTreeInternal"),X("Undefined context item in fn:lang [err:XPDY0002]")); + if(!item->isNode()) + XQThrow(FunctionException, X("FunctionLang::collapseTreeInternal"),X("The context item is not a node [err:XPTY0004]")); + ctxNode=item; + } + + static const XMLCh xmlLang[] = { XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, + XERCES_CPP_NAMESPACE_QUALIFIER chNull}; + + static const XMLCh* xmlLangNamespace = XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXMLURIName; + + Node::Ptr node = ctxNode; + while(node.notNull()) + { + Result attrs = node->dmAttributes(context, this); + Node::Ptr att; + while((att = (Node::Ptr)attrs->next(context)).notNull()) { + ATQNameOrDerived::Ptr name = att->dmNodeName(context); + if(name.notNull()) { + const XMLCh *node_uri = ((const ATQNameOrDerived*)name.get())->getURI(); + const XMLCh *node_name = ((const ATQNameOrDerived*)name.get())->getName(); + + if(XPath2Utils::equals(xmlLang, node_name) && + XPath2Utils::equals(xmlLangNamespace, node_uri)) { + const XMLCh *value = att->dmStringValue(context); + + const XMLCh* asLower = XPath2Utils::toLower(value, context->getMemoryManager()); + int dashLocation = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::indexOf(asLower, XERCES_CPP_NAMESPACE_QUALIFIER chDash); + + if(dashLocation!=-1 && !isSubLang) { + asLower = XPath2Utils::subString(asLower, 0, dashLocation, memMgr); + } + + return Sequence(context->getItemFactory()->createBoolean(XPath2Utils::equals(asLower, xmlLangValue), context), memMgr); + } + } + } + + node = node->dmParent(context); + } + + return Sequence(context->getItemFactory()->createBoolean(false, context), memMgr); +} diff --git a/src/functions/FunctionLast.cpp b/src/functions/FunctionLast.cpp new file mode 100644 index 00000000..dec2387f --- /dev/null +++ b/src/functions/FunctionLast.cpp @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionLast.cpp,v 1.15 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionLast::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionLast::minArgs = 0; +const unsigned int FunctionLast::maxArgs = 0; + +/** + * fn:last() as xs:integer +**/ + +FunctionLast::FunctionLast(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "empty()", args, memMgr) +{ +} + +ASTNode* FunctionLast::staticResolution(StaticContext *context) { + return resolveArguments(context); +} + +ASTNode *FunctionLast::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; + _src.contextSizeUsed(true); + return calculateSRCForArguments(context); +} + +Sequence FunctionLast::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + if(context->getContextItem()==NULLRCP) + XQThrow(FunctionException,X("FunctionPosition::collapseTreeInternal"), X("Undefined context item in fn:last [err:XPDY0002]")); + return Sequence(context->getItemFactory()->createInteger((long)context->getContextSize(), context), memMgr); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionLocalNameFromQName.cpp b/src/functions/FunctionLocalNameFromQName.cpp new file mode 100644 index 00000000..c763831d --- /dev/null +++ b/src/functions/FunctionLocalNameFromQName.cpp @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionLocalNameFromQName.cpp,v 1.11 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionLocalNameFromQName::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_Q, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_N, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionLocalNameFromQName::minArgs = 1; +const unsigned int FunctionLocalNameFromQName::maxArgs = 1; + +/** + * fn:local-name-from-QName($arg as xs:QName?) as xs:NCNAME? +**/ + +FunctionLocalNameFromQName::FunctionLocalNameFromQName(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "QName?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::STRING_TYPE; +} + +Sequence FunctionLocalNameFromQName::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Sequence arg=getParamNumber(1,context)->toSequence(context); + if(arg.isEmpty()) + return Sequence(context->getMemoryManager()); + return Sequence(context->getItemFactory()->createStringOrDerived(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_NCNAME, + ((const ATQNameOrDerived*)arg.first().get())->getName(), + context), + context->getMemoryManager()); +} diff --git a/src/functions/FunctionLocalname.cpp b/src/functions/FunctionLocalname.cpp new file mode 100644 index 00000000..cec18d1f --- /dev/null +++ b/src/functions/FunctionLocalname.cpp @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionLocalname.cpp,v 1.15 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionLocalname::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionLocalname::minArgs = 0; +const unsigned int FunctionLocalname::maxArgs = 1; + +/** + * fn:local-name() as xs:string + * fn:local-name($arg as node()?) as xs:string +**/ + +FunctionLocalname::FunctionLocalname(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "node()?", args, memMgr) +{ +} + +ASTNode* FunctionLocalname::staticResolution(StaticContext *context) { + if(!_args.empty() && (*_args.begin())->getType()==ASTNode::CONTEXT_ITEM) + _args.clear(); + return resolveArguments(context); +} + +ASTNode *FunctionLocalname::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::STRING_TYPE; + if(_args.empty()) { + _src.contextItemUsed(true); + } + return calculateSRCForArguments(context); +} + +Sequence FunctionLocalname::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Node::Ptr ctxNode; + if(getNumArgs() == 1) { + Sequence arg=getParamNumber(1,context)->toSequence(context); + if(arg.isEmpty()) + return Sequence(context->getItemFactory()->createString(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context), memMgr); + ctxNode=arg.first(); + } + else { + const Item::Ptr item = context->getContextItem(); + if(item==NULLRCP) + XQThrow(FunctionException, X("FunctionLocalName::collapseTreeInternal"),X("Undefined context item in fn:local-name [err:XPDY0002]")); + if(!item->isNode()) + XQThrow(FunctionException, X("FunctionLocalName::collapseTreeInternal"),X("The context item is not a node [err:XPTY0004]")); + ctxNode=item; + } + + ATQNameOrDerived::Ptr name = ctxNode->dmNodeName(context); + if(name.notNull()) + return Sequence(context->getItemFactory()->createString(((const ATQNameOrDerived*)name.get())->getName(), context), memMgr); + + return Sequence(context->getItemFactory()->createString(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context), memMgr); +} + + + + + diff --git a/src/functions/FunctionLookupImpl.cpp b/src/functions/FunctionLookupImpl.cpp new file mode 100644 index 00000000..e6534295 --- /dev/null +++ b/src/functions/FunctionLookupImpl.cpp @@ -0,0 +1,483 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionLookupImpl.cpp,v 1.13 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include "FunctionLookupImpl.hpp" +#include +#include + +FunctionLookupImpl::FunctionLookupImpl(XPath2MemoryManager* memMgr) : + _uriPool(17, memMgr), + _funcTable(197, false, memMgr), + _memMgr(memMgr) +{ + createTable(); +} + +FunctionLookupImpl::~FunctionLookupImpl() +{ +} + +void FunctionLookupImpl::replaceFunction(FuncFactory *func) +{ + unsigned int nMax=func->getMaxArgs(); + unsigned int uriId=_uriPool.addOrFind(func->getURI()); + for(unsigned int i=func->getMinArgs(); i<=nMax; i++) + { + unsigned int secondaryKey=uriId | (i << 16); + _funcTable.put((void*)func->getName(), secondaryKey, func); + } +} + +void FunctionLookupImpl::insertFunction(FuncFactory *func) +{ + unsigned int nMax=func->getMaxArgs(); + unsigned int uriId=_uriPool.addOrFind(func->getURI()); + for(unsigned int i=func->getMinArgs(); i<=nMax; i++) + { + unsigned int secondaryKey=uriId | (i << 16); + if(_funcTable.containsKey((void*)func->getName(), secondaryKey)) + { + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer buf(1023,_memMgr); + buf.set(X("Multiple functions have the same expanded QName {")); + buf.append(func->getURI()); + buf.append(X("}")); + buf.append(func->getName()); + buf.append(X("/")); + XMLCh szInt[10]; + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::binToText(i,szInt,9,10,_memMgr); + buf.append(szInt); + buf.append(X(" [err:XQST0034].")); + XQThrow2(StaticErrorException,X("FunctionLookupImpl::insertFunction"), buf.getRawBuffer()); + } + _funcTable.put((void*)func->getName(), secondaryKey, func); + } +} + +ASTNode* FunctionLookupImpl::lookUpFunction(const XMLCh* URI, const XMLCh* fname, + const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) const +{ + if(!_uriPool.exists(URI)) + return NULL; + unsigned int secondaryKey=_uriPool.getId(URI) | (args.size() << 16); + const FuncFactory* pFactory=_funcTable.get((void*)fname, secondaryKey); + if(pFactory) + return pFactory->createInstance(args, memMgr); + return NULL; +} + +bool equalNsAndName1(const std::pair& first, const std::pair& second) +{ + return (XERCES_CPP_NAMESPACE::XMLString::equals(first.first, second.first) && + XERCES_CPP_NAMESPACE::XMLString::equals(first.second, second.second)); +} + +std::vector< std::pair > FunctionLookupImpl::getFunctions() const +{ + std::vector< std::pair > retVal; + XERCES_CPP_NAMESPACE_QUALIFIER RefHash2KeysTableOfEnumerator iterator(const_cast* >(&_funcTable)); + while(iterator.hasMoreElements()) + { + FuncFactory& entry=iterator.nextElement(); + retVal.push_back(std::pair(entry.getURI(), entry.getName())); + } + retVal.erase(std::unique(retVal.begin(), retVal.end(), equalNsAndName1), retVal.end()); + return retVal; +} + +std::vector< FuncFactory* > FunctionLookupImpl::getFunctionFactories() const +{ + std::vector< FuncFactory* > retVal; + XERCES_CPP_NAMESPACE_QUALIFIER RefHash2KeysTableOfEnumerator iterator(const_cast* >(&_funcTable)); + while(iterator.hasMoreElements()) + { + FuncFactory& entry=iterator.nextElement(); + retVal.push_back(&entry); + } + retVal.erase(std::unique(retVal.begin(), retVal.end()), retVal.end()); + return retVal; +} + + +////////////////////////////////////////////////////////////////////////// + +#include "FuncFactoryTemplate.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 +#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 +#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 + +void FunctionLookupImpl::createTable() +{ + // From the XPath2 Function & Operators list + + // Accessors: + // fn:node-name + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:nilled + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:string + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:data + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:base-uri + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:document-uri + insertFunction(new (_memMgr) FuncFactoryTemplate()); + + + // Debug Functions: + // fn:error + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:trace + insertFunction(new (_memMgr) FuncFactoryTemplate()); + + // Special Constructor Functions: + // fn:dateTime + insertFunction(new (_memMgr) FuncFactoryTemplate()); + + // Functions on numeric values: + // fn:abs + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:ceiling + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:floor + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:round + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:round-half-to-even + insertFunction(new (_memMgr) FuncFactoryTemplate()); + + // Functions on strings + // fn:codepoints-to-string + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:string-to-codepoints + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:compare + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:codepoint-equal + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:concat + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:string-join + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:substring + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:string-length + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:normalize-space + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:normalize-unicode + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:upper-case + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:lower-case + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:translate + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:encode-for-uri + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:iri-to-uri + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:escape-html-uri + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:contains + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:starts-with + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:ends-with + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:substring-before + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:substring-after + insertFunction(new (_memMgr) FuncFactoryTemplate()); + + // fn:matches + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:replace + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:tokenize + insertFunction(new (_memMgr) FuncFactoryTemplate()); + + // Functions on boolean values + // fn:true + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:false + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:not + insertFunction(new (_memMgr) FuncFactoryTemplate()); + + // Functions on date values + // fn:years-from-duration + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:months-from-duration + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:days-from-duration + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:hours-from-duration + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:minutes-from-duration + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:seconds-from-duration + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:year-from-dateTime + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:month-from-dateTime + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:day-from-dateTime + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:hours-from-dateTime + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:minutes-from-dateTime + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:seconds-from-dateTime + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:timezone-from-dateTime + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:year-from-date + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:month-from-date + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:day-from-date + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:timezone-from-date + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:hours-from-time + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:minutes-from-time + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:seconds-from-time + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:timezone-from-time + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:adjust-dateTime-to-timezone + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:adjust-date-to-timezone + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:adjust-time-to-timezone + insertFunction(new (_memMgr) FuncFactoryTemplate()); + + // Functions on QName values + // fn:resolve-QName + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:QName + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:prefix-from-QName + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:local-name-from-QName + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:namespace-uri-from-QName + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:namespace-uri-for-prefix + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:in-scope-prefixes + insertFunction(new (_memMgr) FuncFactoryTemplate()); + + // Functions on anyURI values + // fn:resolve-URI + insertFunction(new (_memMgr) FuncFactoryTemplate()); + + // Functions on nodes + // fn:name + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:local-name + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:namespace-uri + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:number + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:lang + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:root + insertFunction(new (_memMgr) FuncFactoryTemplate()); + + // Functions on sequences + // fn::zero-or-one + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn::one-or-more + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn::exactly-one + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:boolean + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:index-of + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:empty + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:exists + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:distinct-values + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:insert-before + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:remove + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:reverse + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:subsequence + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:unordered + insertFunction(new (_memMgr) FuncFactoryTemplate()); + + // fn:deep-equal + insertFunction(new (_memMgr) FuncFactoryTemplate()); + + // fn:count + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:avg + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:max + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:min + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:sum + insertFunction(new (_memMgr) FuncFactoryTemplate()); + + // fn:id + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:idref + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:doc + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:doc-available + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:collection + insertFunction(new (_memMgr) FuncFactoryTemplate()); + + // Context functions + // fn:position + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:last + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:current-dateTime + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:current-date + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:current-time + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:implicit-timezone + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:default-collation + insertFunction(new (_memMgr) FuncFactoryTemplate()); + // fn:static-base-uri + insertFunction(new (_memMgr) FuncFactoryTemplate()); + +} diff --git a/src/functions/FunctionLookupImpl.hpp b/src/functions/FunctionLookupImpl.hpp new file mode 100644 index 00000000..84f6ca9a --- /dev/null +++ b/src/functions/FunctionLookupImpl.hpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionLookupImpl.hpp,v 1.9 2006/11/01 16:37:19 jpcs Exp $ + */ + +#ifndef _FLOOKUPIMPL_HPP +#define _FLOOKUPIMPL_HPP + +#include + +#include +#include +#include + +/** class implementing a lookup table for functions */ +class XQILLA_API FunctionLookupImpl : public FunctionLookup +{ +public: + FunctionLookupImpl(XPath2MemoryManager* memMgr); + virtual ~FunctionLookupImpl(); + + ///insert a new function factory + virtual void insertFunction(FuncFactory *func); + + /// replaces the implementation of an existing function + virtual void replaceFunction(FuncFactory *func); + + ///returns the approriate Function object + virtual ASTNode* lookUpFunction(const XMLCh* URI, const XMLCh* fname, const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) const; + + /// returns all the defined functions + virtual std::vector< std::pair > getFunctions() const; + virtual std::vector< FuncFactory* > getFunctionFactories() const; + +protected: + ///function to create the table + void createTable(); + +private: + XERCES_CPP_NAMESPACE_QUALIFIER XMLStringPool _uriPool; + XERCES_CPP_NAMESPACE_QUALIFIER RefHash2KeysTableOf< FuncFactory > _funcTable; + XPath2MemoryManager* _memMgr; +}; + + + + +#endif diff --git a/src/functions/FunctionLowerCase.cpp b/src/functions/FunctionLowerCase.cpp new file mode 100644 index 00000000..74d78925 --- /dev/null +++ b/src/functions/FunctionLowerCase.cpp @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionLowerCase.cpp,v 1.13 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +const XMLCh FunctionLowerCase::name[] = { + chLatin_l, chLatin_o, chLatin_w, + chLatin_e, chLatin_r, chDash, + chLatin_c, chLatin_a, chLatin_s, + chLatin_e, chNull +}; +const unsigned int FunctionLowerCase::minArgs = 1; +const unsigned int FunctionLowerCase::maxArgs = 1; + +/* + * fn:lower-case($arg as xs:string?) as xs:string + */ + +FunctionLowerCase::FunctionLowerCase(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::STRING_TYPE; +} + +Sequence FunctionLowerCase::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager *memMgr = context->getMemoryManager(); + + Item::Ptr arg = getParamNumber(1, context)->next(context); + if(arg.isNull()) { + return Sequence(context->getItemFactory()->createString(XMLUni::fgZeroLenString, context), memMgr); + } + + XMLBuffer buf(1023, context->getMemoryManager()); + Normalizer::lowerCase(arg->asString(context), buf); + return Sequence(context->getItemFactory()->createString(buf.getRawBuffer(), context), memMgr); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionMatches.cpp b/src/functions/FunctionMatches.cpp new file mode 100644 index 00000000..3c997812 --- /dev/null +++ b/src/functions/FunctionMatches.cpp @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionMatches.cpp,v 1.16 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +const XMLCh FunctionMatches::name[] = { + chLatin_m, chLatin_a, chLatin_t, + chLatin_c, chLatin_h, chLatin_e, + chLatin_s, chNull +}; +const unsigned int FunctionMatches::minArgs = 2; +const unsigned int FunctionMatches::maxArgs = 3; + +/** + * fn:matches($input as xs:string?, $pattern as xs:string) as xs:boolean + * fn:matches($input as xs:string?, $pattern as xs:string, $flags as xs:string) as xs:boolean + */ + +FunctionMatches::FunctionMatches(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string?, string, string", args, memMgr) +{ + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; +} + +Sequence FunctionMatches::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + const XMLCh* input = XMLUni::fgZeroLenString; + Item::Ptr inputItem = getParamNumber(1,context)->next(context); + if(inputItem.notNull()) + input=inputItem->asString(context); + const XMLCh* pattern = getParamNumber(2,context)->next(context)->asString(context); + // If the value of $operand1 is the zero-length string and the value of $operand2 is not the zero-length string, + // then the function returns false. + if(XMLString::stringLen(input)==0 && XMLString::stringLen(pattern)>0) + return Sequence(context->getItemFactory()->createBoolean(false, context), memMgr); + // If the value of $operand2 is the zero-length string, then the function returns true + if(XMLString::stringLen(pattern)==0) + return Sequence(context->getItemFactory()->createBoolean(true, context), memMgr); + + const XMLCh* options = XMLUni::fgZeroLenString; + if(getNumArgs()>2) + options=getParamNumber(3,context)->next(context)->asString(context); + + //Check that the options are valid - throw an exception if not (can have s,m,i and x) + //Note: Are allowed to duplicate the letters. + const XMLCh* cursor=options; + for(; *cursor != 0; ++cursor){ + switch(*cursor) { + case chLatin_s: + case chLatin_m: + case chLatin_i: + case chLatin_x: + break; + default: + XQThrow(FunctionException, X("FunctionMatches::collapseTreeInternal"),X("Invalid regular expression flags [err:FORX0001].")); + } + } + + //Build the Regular Expression + try { + // Always turn off head character optimisation, since it is broken + XMLBuffer optionsBuf(1023, context->getMemoryManager()); + optionsBuf.set(options); + optionsBuf.append(chLatin_H); + + RegularExpression regEx(pattern, optionsBuf.getRawBuffer(), memMgr); + return Sequence(context->getItemFactory()->createBoolean(regEx.matches(input), context), memMgr); + } catch (ParseException &e){ + XMLBuffer buf(1023, memMgr); + buf.set(X("Invalid regular expression: ")); + buf.append(e.getMessage()); + buf.append(X(" [err:FORX0002]")); + XQThrow(FunctionException, X("FunctionMatches::collapseTreeInternal"), buf.getRawBuffer()); + } catch (XMLException &e){ + XQThrow(FunctionException, X("FunctionMatches::collapseTreeInternal"), e.getMessage()); + } + + //do not get here + +} diff --git a/src/functions/FunctionMax.cpp b/src/functions/FunctionMax.cpp new file mode 100644 index 00000000..0f167882 --- /dev/null +++ b/src/functions/FunctionMax.cpp @@ -0,0 +1,117 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionMax.cpp,v 1.18 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +const XMLCh FunctionMax::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionMax::minArgs = 1; +const unsigned int FunctionMax::maxArgs = 2; + +/** + * fn:max($arg as xdt:anyAtomicType*) as xdt:anyAtomicType? + * fn:max($arg as xdt:anyAtomicType*, $collation as string) as xdt:anyAtomicType? +**/ + +FunctionMax::FunctionMax(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : AggregateFunction(name, minArgs, maxArgs, "anyAtomicType*, string", args, memMgr) +{ +} + +ASTNode* FunctionMax::staticResolution(StaticContext *context) { + AutoNodeSetOrderingReset orderReset(context); + return resolveArguments(context); +} + +ASTNode *FunctionMax::staticTyping(StaticContext *context) +{ + _src.clear(); + + // TBD - could do better here - jpcs + _src.getStaticType().flags = StaticType::TYPED_ATOMIC_TYPE; + return calculateSRCForArguments(context); +} + +Sequence FunctionMax::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Sequence sequence(memMgr); + try { + sequence = validateSequence(getParamNumber(1,context)->toSequence(context), context); + } catch (IllegalArgumentException &e) { + XQThrow(IllegalArgumentException, X("FunctionMax::collapseTreeInternal"), X("Invalid argument to fn:max() function [err:FORG0006].")); + } + + // Return the empty sequence if the sequence is empty + if(sequence.isEmpty()) { + return Sequence(memMgr); + } + if(sequence.getLength()==1 && isNumericNaN(sequence.first())) + return sequence; + + Collation* collation=NULL; + if (getNumArgs()>1) { + Sequence collArg = getParamNumber(2,context)->toSequence(context); + const XMLCh* collName = collArg.first()->asString(context); + try { + context->getItemFactory()->createAnyURI(collName, context); + } catch(XPath2ErrorException &e) { + XQThrow(FunctionException, X("FunctionMax::collapseTreeInternal"), X("Invalid collationURI")); + } + collation=context->getCollation(collName, this); + } + else + collation=context->getDefaultCollation(this); + + Sequence::iterator i = sequence.begin(); + AnyAtomicType::Ptr maxItem = (const AnyAtomicType *)i->get(); + ++i; + // if we have just one item, force entering the 'for' loop, or we will not test if the type had a total order + if(i == sequence.end()) --i; + for(; i != sequence.end(); ++i) { + const AnyAtomicType *atomic = (const AnyAtomicType *)i->get(); + try { + if(GreaterThan::greater_than(atomic, maxItem, collation, context, this)) + maxItem = atomic; + } + catch (IllegalArgumentException &e) { + XQThrow(IllegalArgumentException, X("FunctionMax::collapseTreeInternal"), + X("Invalid argument to fn:max() function [err:FORG0006].")); + } + catch (XPath2ErrorException &e) { + XQThrow(IllegalArgumentException, X("FunctionMax::collapseTreeInternal"), + X("Invalid argument to fn:max() function [err:FORG0006].")); + } + } + return Sequence(maxItem, memMgr); +} diff --git a/src/functions/FunctionMin.cpp b/src/functions/FunctionMin.cpp new file mode 100644 index 00000000..d830cc36 --- /dev/null +++ b/src/functions/FunctionMin.cpp @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionMin.cpp,v 1.19 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionMin::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionMin::minArgs = 1; +const unsigned int FunctionMin::maxArgs = 2; + +/** + * fn:min($arg as xdt:anyAtomicType*) as xdt:anyAtomicType? + * fn:min($arg as xdt:anyAtomicType*, $collation as string) as xdt:anyAtomicType? +**/ + +FunctionMin::FunctionMin(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : AggregateFunction(name, minArgs, maxArgs, "anyAtomicType*, string", args, memMgr) +{ +} + +ASTNode* FunctionMin::staticResolution(StaticContext *context) { + AutoNodeSetOrderingReset orderReset(context); + return resolveArguments(context); +} + +ASTNode *FunctionMin::staticTyping(StaticContext *context) +{ + _src.clear(); + + // TBD - could do better here - jpcs + _src.getStaticType().flags = StaticType::TYPED_ATOMIC_TYPE; + return calculateSRCForArguments(context); +} + +Sequence FunctionMin::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Sequence sequence(memMgr); + try { + sequence = validateSequence(getParamNumber(1,context)->toSequence(context), context); + } catch (IllegalArgumentException &e) { + XQThrow(IllegalArgumentException, X("FunctionMin::collapseTreeInternal"), X("Invalid argument to fn:min() function [err:FORG0006].")); + } + + // Return the empty sequence if the sequence is empty + if(sequence.isEmpty()) { + return Sequence(memMgr); + } + if(sequence.getLength()==1 && isNumericNaN(sequence.first())) + return sequence; + + Collation* collation=NULL; + if (getNumArgs()>1) { + Sequence collArg = getParamNumber(2,context)->toSequence(context); + const XMLCh* collName = collArg.first()->asString(context); + try { + context->getItemFactory()->createAnyURI(collName, context); + } catch(XPath2ErrorException &e) { + XQThrow(FunctionException, X("FunctionMin::collapseTreeInternal"), X("Invalid collationURI")); + } + collation=context->getCollation(collName, this); + } + else + collation=context->getDefaultCollation(this); + + Sequence::iterator i = sequence.begin(); + AnyAtomicType::Ptr minItem = (const AnyAtomicType *)i->get(); + ++i; + // if we have just one item, force entering the 'for' loop, or we will not test if the type had a total order + if(i == sequence.end()) --i; + for (; i != sequence.end(); ++i) { + const AnyAtomicType *atomic = (const AnyAtomicType *)i->get(); + try { + if(LessThan::less_than(atomic, minItem, collation, context, this)) + minItem = atomic; + } + catch (IllegalArgumentException &e) { + XQThrow(IllegalArgumentException, X("FunctionMin::collapseTreeInternal"), + X("Invalid argument to fn:min() function [err:FORG0006].")); + } + catch (XPath2ErrorException &e) { + XQThrow(IllegalArgumentException, X("FunctionMin::collapseTreeInternal"), + X("Invalid argument to fn:min() function [err:FORG0006].")); + } + } + return Sequence(minItem, memMgr); +} diff --git a/src/functions/FunctionMinutesFromDateTime.cpp b/src/functions/FunctionMinutesFromDateTime.cpp new file mode 100644 index 00000000..be622b43 --- /dev/null +++ b/src/functions/FunctionMinutesFromDateTime.cpp @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionMinutesFromDateTime.cpp,v 1.13 2006/11/01 16:37:19 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionMinutesFromDateTime::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionMinutesFromDateTime::minArgs = 1; +const unsigned int FunctionMinutesFromDateTime::maxArgs = 1; + +/* + * fn:minutes-from-dateTime($arg as xs:dateTime?) as xs:integer? + */ + +FunctionMinutesFromDateTime::FunctionMinutesFromDateTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "dateTime?", args, memMgr) +{ +} + +ASTNode* FunctionMinutesFromDateTime::staticResolution(StaticContext *context) +{ + return resolveArguments(context, /*checkTimezone*/true); +} + +ASTNode *FunctionMinutesFromDateTime::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; + return calculateSRCForArguments(context, /*checkTimezone*/true); +} + +Sequence FunctionMinutesFromDateTime::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Item::Ptr arg = getParamNumber(1, context)->next(context); + if(arg.isNull()) return Sequence(memMgr); + + return Sequence(((const ATDateTimeOrDerived*)arg.get())->getMinutes(context), memMgr); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionMinutesFromDuration.cpp b/src/functions/FunctionMinutesFromDuration.cpp new file mode 100644 index 00000000..1ea7bd1a --- /dev/null +++ b/src/functions/FunctionMinutesFromDuration.cpp @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionMinutesFromDuration.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionMinutesFromDuration::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionMinutesFromDuration::minArgs = 1; +const unsigned int FunctionMinutesFromDuration::maxArgs = 1; + +/* + * fn:minutes-from-duration($arg as xs:duration?) as xs:integer? + */ + +FunctionMinutesFromDuration::FunctionMinutesFromDuration(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "duration?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; +} + +Sequence FunctionMinutesFromDuration::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Item::Ptr arg = getParamNumber(1, context)->next(context); + if(arg.isNull()) return Sequence(memMgr); + + return Sequence(((const ATDurationOrDerived*)arg.get())->getMinutes(context), memMgr); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionMinutesFromTime.cpp b/src/functions/FunctionMinutesFromTime.cpp new file mode 100644 index 00000000..42feb662 --- /dev/null +++ b/src/functions/FunctionMinutesFromTime.cpp @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionMinutesFromTime.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionMinutesFromTime::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionMinutesFromTime::minArgs = 1; +const unsigned int FunctionMinutesFromTime::maxArgs = 1; + +/* + * fn:minutes-from-time($arg as xs:time?) as xs:integer? + */ + +FunctionMinutesFromTime::FunctionMinutesFromTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "time?", args, memMgr) +{ +} + +ASTNode* FunctionMinutesFromTime::staticResolution(StaticContext *context) +{ + return resolveArguments(context, /*checkTimezone*/true); +} + +ASTNode *FunctionMinutesFromTime::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; + return calculateSRCForArguments(context, /*checkTimezone*/true); +} + +Sequence FunctionMinutesFromTime::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Item::Ptr arg = getParamNumber(1, context)->next(context); + if(arg.isNull()) return Sequence(memMgr); + + return Sequence(((const ATTimeOrDerived*)arg.get())->getMinutes(context), memMgr); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionMonthFromDate.cpp b/src/functions/FunctionMonthFromDate.cpp new file mode 100644 index 00000000..10fa9a7d --- /dev/null +++ b/src/functions/FunctionMonthFromDate.cpp @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionMonthFromDate.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionMonthFromDate::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionMonthFromDate::minArgs = 1; +const unsigned int FunctionMonthFromDate::maxArgs = 1; + +/* + * fn:month-from-date($arg as xs:date?) as xs:integer? + */ + +FunctionMonthFromDate::FunctionMonthFromDate(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "date?", args, memMgr) +{ +} + +ASTNode* FunctionMonthFromDate::staticResolution(StaticContext *context) +{ + return resolveArguments(context, /*checkTimezone*/true); +} + +ASTNode *FunctionMonthFromDate::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; + return calculateSRCForArguments(context, /*checkTimezone*/true); +} + +Sequence FunctionMonthFromDate::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Item::Ptr arg = getParamNumber(1, context)->next(context); + if(arg.isNull()) return Sequence(memMgr); + + return Sequence(((const ATDateOrDerived*)arg.get())->getMonths(context), memMgr); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionMonthFromDateTime.cpp b/src/functions/FunctionMonthFromDateTime.cpp new file mode 100644 index 00000000..85eeaaab --- /dev/null +++ b/src/functions/FunctionMonthFromDateTime.cpp @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionMonthFromDateTime.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionMonthFromDateTime::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionMonthFromDateTime::minArgs = 1; +const unsigned int FunctionMonthFromDateTime::maxArgs = 1; + +/* + * fn:month-from-dateTime($arg as xs:dateTime?) as xs:integer? + */ + +FunctionMonthFromDateTime::FunctionMonthFromDateTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "dateTime?", args, memMgr) +{ +} + +ASTNode* FunctionMonthFromDateTime::staticResolution(StaticContext *context) +{ + return resolveArguments(context, /*checkTimezone*/true); +} + +ASTNode *FunctionMonthFromDateTime::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; + return calculateSRCForArguments(context, /*checkTimezone*/true); +} + +Sequence FunctionMonthFromDateTime::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Item::Ptr arg = getParamNumber(1, context)->next(context); + if(arg.isNull()) return Sequence(memMgr); + + return Sequence(((const ATDateTimeOrDerived*)arg.get())->getMonths(context), memMgr); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionMonthsFromDuration.cpp b/src/functions/FunctionMonthsFromDuration.cpp new file mode 100644 index 00000000..40ce7bcf --- /dev/null +++ b/src/functions/FunctionMonthsFromDuration.cpp @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionMonthsFromDuration.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionMonthsFromDuration::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionMonthsFromDuration::minArgs = 1; +const unsigned int FunctionMonthsFromDuration::maxArgs = 1; + +/* + * fn:months-from-duration($arg as xs:duration?) as xs:integer? + */ + +FunctionMonthsFromDuration::FunctionMonthsFromDuration(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "duration?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; +} + +Sequence FunctionMonthsFromDuration::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Item::Ptr arg = getParamNumber(1, context)->next(context); + if(arg.isNull()) return Sequence(memMgr); + + return Sequence(((const ATDurationOrDerived*)arg.get())->getMonths(context), memMgr); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionName.cpp b/src/functions/FunctionName.cpp new file mode 100644 index 00000000..dcd5e780 --- /dev/null +++ b/src/functions/FunctionName.cpp @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionName.cpp,v 1.15 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionName::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionName::minArgs = 0; +const unsigned int FunctionName::maxArgs = 1; + +/** + * fn:name() as xs:string + * fn:name($arg as node()?) as xs:string +**/ + +FunctionName::FunctionName(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "node()?", args, memMgr) +{ +} + +ASTNode* FunctionName::staticResolution(StaticContext *context) { + if(!_args.empty() && (*_args.begin())->getType()==ASTNode::CONTEXT_ITEM) + _args.clear(); + return resolveArguments(context); +} + +ASTNode *FunctionName::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::STRING_TYPE; + if(_args.empty()) { + _src.contextItemUsed(true); + } + return calculateSRCForArguments(context); +} + +Sequence FunctionName::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Node::Ptr ctxNode; + if(getNumArgs() == 1) + { + Sequence arg=getParamNumber(1,context)->toSequence(context); + if(arg.isEmpty()) + return Sequence(context->getItemFactory()->createString(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context), memMgr); + ctxNode=arg.first(); + } + else + { + const Item::Ptr item = context->getContextItem(); + if(item==NULLRCP) + XQThrow(FunctionException, X("FunctionName::collapseTreeInternal"),X("Undefined context item in fn:name [err:XPDY0002]")); + if(!item->isNode()) + XQThrow(FunctionException, X("FunctionName::collapseTreeInternal"),X("The context item is not a node [err:XPTY0004]")); + ctxNode=item; + } + + return Sequence(FunctionString::string(ctxNode->dmNodeName(context), context), memMgr); +} + + + + + + + diff --git a/src/functions/FunctionNamespaceURIForPrefix.cpp b/src/functions/FunctionNamespaceURIForPrefix.cpp new file mode 100644 index 00000000..1888b5a1 --- /dev/null +++ b/src/functions/FunctionNamespaceURIForPrefix.cpp @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionNamespaceURIForPrefix.cpp,v 1.12 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +const XMLCh FunctionNamespaceURIForPrefix::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionNamespaceURIForPrefix::minArgs = 2; +const unsigned int FunctionNamespaceURIForPrefix::maxArgs = 2; + +/** + * fn:namespace-uri-for-prefix($prefix as xs:string?, $element as element()) as xs:anyURI? +**/ + +/** Returns the namespace URI of one of the in-scope namespaces for $element, identified + * by its namespace prefix. +**/ + +FunctionNamespaceURIForPrefix::FunctionNamespaceURIForPrefix(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string?, element()", args, memMgr) +{ + _src.getStaticType().flags = StaticType::ANY_URI_TYPE; +} + +Sequence FunctionNamespaceURIForPrefix::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Item::Ptr first=getParamNumber(1, context)->next(context); + const XMLCh* prefix = 0; + if(first.notNull()) + prefix=first->asString(context); + + if(XPath2Utils::equals(prefix, XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString)) { + prefix = 0; + } + + Node::Ptr node = (Node::Ptr)getParamNumber(2,context)->next(context); + + Result namespaces = node->dmNamespaceNodes(context, this); + Node::Ptr ns; + while((ns = (Node::Ptr)namespaces->next(context)).notNull()) { + ATQNameOrDerived::Ptr name = ns->dmNodeName(context); + if(name.isNull()) { + if(prefix == 0) { + return Sequence(context->getItemFactory()->createAnyURI(ns->dmStringValue(context), context), context->getMemoryManager()); + } + } + else { + if(XPath2Utils::equals(((const ATQNameOrDerived*)name.get())->getName(), prefix)) { + return Sequence(context->getItemFactory()->createAnyURI(ns->dmStringValue(context), context), context->getMemoryManager()); + } + } + } + + return Sequence(context->getMemoryManager()); +} + diff --git a/src/functions/FunctionNamespaceURIFromQName.cpp b/src/functions/FunctionNamespaceURIFromQName.cpp new file mode 100644 index 00000000..a229d6c9 --- /dev/null +++ b/src/functions/FunctionNamespaceURIFromQName.cpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionNamespaceURIFromQName.cpp,v 1.10 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include + +const XMLCh FunctionNamespaceURIFromQName::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_Q, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_N, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionNamespaceURIFromQName::minArgs = 1; +const unsigned int FunctionNamespaceURIFromQName::maxArgs = 1; + +/** + * fn:namespace-uri-from-QName($arg as xs:QName?) as xs:anyURI? +**/ + +FunctionNamespaceURIFromQName::FunctionNamespaceURIFromQName(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "QName?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::ANY_URI_TYPE; +} + +Sequence FunctionNamespaceURIFromQName::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Sequence arg=getParamNumber(1,context)->toSequence(context); + if(arg.isEmpty()) + return Sequence(context->getMemoryManager()); + return Sequence(context->getItemFactory()->createAnyURI(((const ATQNameOrDerived*)arg.first().get())->getURI(), context), + context->getMemoryManager()); +} diff --git a/src/functions/FunctionNamespaceUri.cpp b/src/functions/FunctionNamespaceUri.cpp new file mode 100644 index 00000000..ec73b6d8 --- /dev/null +++ b/src/functions/FunctionNamespaceUri.cpp @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionNamespaceUri.cpp,v 1.14 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionNamespaceUri::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionNamespaceUri::minArgs = 0; +const unsigned int FunctionNamespaceUri::maxArgs = 1; + +/** + * fn:namespace-uri() as xs:anyURI + * fn:namespace-uri($arg as node()?) as xs:anyURI +**/ + +FunctionNamespaceUri::FunctionNamespaceUri(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "node()?", args, memMgr) +{ +} + +ASTNode* FunctionNamespaceUri::staticResolution(StaticContext *context) { + if(!_args.empty() && (*_args.begin())->getType()==ASTNode::CONTEXT_ITEM) + _args.clear(); + return resolveArguments(context); +} + +ASTNode *FunctionNamespaceUri::staticTyping(StaticContext *context) +{ + _src.clear(); + + if(_args.empty()) { + _src.contextItemUsed(true); + } + _src.getStaticType().flags = StaticType::ANY_URI_TYPE; + return calculateSRCForArguments(context); +} + +Sequence FunctionNamespaceUri::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Node::Ptr ctxNode; + if(getNumArgs() == 1) + { + Sequence arg=getParamNumber(1,context)->toSequence(context); + if(arg.isEmpty()) + return Sequence(context->getItemFactory()->createAnyURI(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context), memMgr); + ctxNode=arg.first(); + } + else + { + const Item::Ptr item = context->getContextItem(); + if(item==NULLRCP) + XQThrow(FunctionException, X("FunctionNamespaceUri::collapseTreeInternal"),X("Undefined context item in fn:namespace-uri [err:XPDY0002]")); + if(!item->isNode()) + XQThrow(FunctionException, X("FunctionNamespaceUri::collapseTreeInternal"),X("The context item is not a node [err:XPTY0004]")); + ctxNode=item; + } + + ATQNameOrDerived::Ptr name = ctxNode->dmNodeName(context); + if(name.notNull()) + return Sequence(context->getItemFactory()->createAnyURI(((const ATQNameOrDerived*)name.get())->getURI(), context), memMgr); + + return Sequence(context->getItemFactory()->createAnyURI(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context), memMgr); +} diff --git a/src/functions/FunctionNilled.cpp b/src/functions/FunctionNilled.cpp new file mode 100644 index 00000000..4a401d88 --- /dev/null +++ b/src/functions/FunctionNilled.cpp @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionNilled.cpp,v 1.11 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionNilled::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionNilled::minArgs = 1; +const unsigned int FunctionNilled::maxArgs = 1; + +/* + * fn:nilled($arg as node()?) as boolean? + */ + +FunctionNilled::FunctionNilled(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "node()?", args, memMgr) +{ +} + +ASTNode* FunctionNilled::staticResolution(StaticContext *context) { + return resolveArguments(context); +} + +ASTNode *FunctionNilled::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; + return calculateSRCForArguments(context); +} + +Sequence FunctionNilled::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Sequence arg = getParamNumber(1, context)->toSequence(context); + // If the argument is the empty sequence, returns the empty sequence + if(arg.isEmpty()) + return Sequence(context->getMemoryManager()); + + Node::Ptr node=(Node::Ptr)arg.first(); + return Sequence(node->dmNilled(context), context->getMemoryManager()); +} diff --git a/src/functions/FunctionNodeName.cpp b/src/functions/FunctionNodeName.cpp new file mode 100644 index 00000000..2171fd12 --- /dev/null +++ b/src/functions/FunctionNodeName.cpp @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionNodeName.cpp,v 1.10 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include + +const XMLCh FunctionNodeName::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionNodeName::minArgs = 1; +const unsigned int FunctionNodeName::maxArgs = 1; + +/* + * fn:node-name($arg as node()?) as xs:QName? + */ + +FunctionNodeName::FunctionNodeName(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "node()?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::QNAME_TYPE; +} + +Sequence FunctionNodeName::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Sequence items=getParamNumber(1,context)->toSequence(context); + if(items.isEmpty()) + return Sequence(context->getMemoryManager()); + const Node::Ptr node = (const Node::Ptr )items.first(); + return Sequence(node->dmNodeName(context), context->getMemoryManager()); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionNormalizeSpace.cpp b/src/functions/FunctionNormalizeSpace.cpp new file mode 100644 index 00000000..2f21a950 --- /dev/null +++ b/src/functions/FunctionNormalizeSpace.cpp @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionNormalizeSpace.cpp,v 1.12 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionNormalizeSpace::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_z, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionNormalizeSpace::minArgs = 0; +const unsigned int FunctionNormalizeSpace::maxArgs = 1; + +/** + * fn:normalize-space() as xs:string + * fn:normalize-space($arg as xs:string?) as xs:string +**/ + +FunctionNormalizeSpace::FunctionNormalizeSpace(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "string?", args, memMgr) +{ +} + +const XMLCh* FunctionNormalizeSpace::getString(DynamicContext* context) const { + XPath2MemoryManager* memMgr = context->getMemoryManager(); + //setup xf:string with empty args + VectorOfASTNodes args=VectorOfASTNodes(XQillaAllocator(memMgr)); + FunctionString stringGrabber(args, memMgr); + //call xf:string and extract result + return stringGrabber.collapseTree(context)->next(context)->asString(context); +} + +ASTNode* FunctionNormalizeSpace::staticResolution(StaticContext *context) { + return resolveArguments(context); +} + +ASTNode *FunctionNormalizeSpace::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::STRING_TYPE; + if(_args.empty()) { + _src.contextItemUsed(true); + } + return calculateSRCForArguments(context); +} + +Sequence FunctionNormalizeSpace::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + const XMLCh* str; + if (getNumArgs() == 0) { + str = getString(context); + } else { + Sequence strParm=getParamNumber(1,context)->toSequence(context); + if(strParm.isEmpty()) + return Sequence(context->getItemFactory()->createString(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context), memMgr); + + str = strParm.first()->asString(context); + } + const XMLCh* result = NULL; + + int whitespace = 0; + for(unsigned int i = 0; i < XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(str); i++) + { + XMLCh ch = str[i]; + + if((ch == 0x9) || (ch == 0xA) || (ch == 0xD) || (ch == 0x20)) + { + whitespace++; + ch = 0x20; + } + else + { + whitespace = 0; + } + if(whitespace < 2) + { + result = XPath2Utils::concatStrings(result, ch, memMgr); + } + } + + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(result)>0) + { + XMLCh first = result[0]; + if((first == 0x9) || (first == 0xA) || (first == 0xD) || (first == 0x20)) { + result = XPath2Utils::deleteData(result, 0, 1, memMgr); + } + } + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(result)>0) + { + XMLCh last = result[XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(result) - 1]; + if((last == 0x9) || (last == 0xA) || (last == 0xD) || (last == 0x20)) { + result = XPath2Utils::deleteData(result, XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(result) -1, 1, memMgr); + } + } + return Sequence(context->getItemFactory()->createString(result, context), memMgr); +} + diff --git a/src/functions/FunctionNormalizeUnicode.cpp b/src/functions/FunctionNormalizeUnicode.cpp new file mode 100644 index 00000000..1bd49f2f --- /dev/null +++ b/src/functions/FunctionNormalizeUnicode.cpp @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionNormalizeUnicode.cpp,v 1.17 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +const XMLCh FunctionNormalizeUnicode::name[] = { + chLatin_n, chLatin_o, chLatin_r, + chLatin_m, chLatin_a, chLatin_l, + chLatin_i, chLatin_z, chLatin_e, + chDash, chLatin_u, chLatin_n, + chLatin_i, chLatin_c, chLatin_o, + chLatin_d, chLatin_e, chNull +}; +const unsigned int FunctionNormalizeUnicode::minArgs = 1; +const unsigned int FunctionNormalizeUnicode::maxArgs = 2; + +/** + * fn:normalize-unicode($arg as xs:string?) as xs:string + * fn:normalize-unicode($arg as xs:string?, $normalizationForm as xs:string) as xs:string + **/ + +FunctionNormalizeUnicode::FunctionNormalizeUnicode(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string?,string", args, memMgr) +{ + _src.getStaticType().flags = StaticType::STRING_TYPE; +} + +Sequence FunctionNormalizeUnicode::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + Sequence strParm=getParamNumber(1,context)->toSequence(context); + if(strParm.isEmpty()) { + return Sequence(context->getItemFactory()->createString(XMLUni::fgZeroLenString, context), memMgr); + } + + const XMLCh *str = strParm.first()->asString(context); + + static const XMLCh fg_NFC[] = { chLatin_N, chLatin_F, chLatin_C, chNull }; + static const XMLCh fg_NFD[] = { chLatin_N, chLatin_F, chLatin_D, chNull }; + static const XMLCh fg_NFKC[] = { chLatin_N, chLatin_F, chLatin_K, chLatin_C, chNull }; + static const XMLCh fg_NFKD[] = { chLatin_N, chLatin_F, chLatin_K, chLatin_D, chNull }; + static const XMLCh fg_fully[] = { chLatin_F, chLatin_U, chLatin_L, + chLatin_L, chLatin_Y, chDash, + chLatin_N, chLatin_O, chLatin_R, + chLatin_M, chLatin_A, chLatin_L, + chLatin_I, chLatin_Z, chLatin_E, + chLatin_D, chNull }; + + const XMLCh* normalization = fg_NFC; + if(getNumArgs()==2) + { + Sequence normParam=getParamNumber(2,context)->toSequence(context); + const XMLCh *src = normParam.first()->asString(context); + normalization = XPath2Utils::toUpper(src, memMgr); + + if (XMLString::stringLen(normalization) > 0) + { + unsigned int i; + // remove leading spaces + for(i = 0; i < XMLString::stringLen(normalization); i++) + { + XMLCh ch = normalization[i]; + if((ch != 0x9) && (ch != 0xA) && (ch != 0xD) && (ch != 0x20)) + break; + } + const XMLCh *frontChop = XPath2Utils::subString(normalization, i,XMLString::stringLen(normalization)-i, memMgr); + + // remove trailing spaces + for(i = XMLString::stringLen(frontChop)-1; i !=0 ; i--) + { + XMLCh ch = frontChop[i]; + if((ch != 0x9) && (ch != 0xA) && (ch != 0xD) && (ch != 0x20)) + break; + } + normalization = XPath2Utils::subString(frontChop, 0, i+1, memMgr); + } + } + + if(XMLString::stringLen(normalization) == 0) { + return Sequence(context->getItemFactory()->createString(str, context), memMgr); + } + else { + XMLBuffer buf(1023, context->getMemoryManager()); + + if(XPath2Utils::equals(normalization, fg_NFC)) { + Normalizer::normalizeC(str, buf); + } + else if(XPath2Utils::equals(normalization, fg_NFD)) { + Normalizer::normalizeD(str, buf); + } + else if(XPath2Utils::equals(normalization, fg_NFKC)) { + Normalizer::normalizeKC(str, buf); + } + else if(XPath2Utils::equals(normalization, fg_NFKD)) { + Normalizer::normalizeKD(str, buf); + } + else if(XPath2Utils::equals(normalization, fg_fully)) { + XQThrow(FunctionException, X("FunctionNormalizeUnicode::collapseTreeInternal"), X("Unsupported normalization form [err:FOCH0003].")); + } + else { + XQThrow(FunctionException, X("FunctionNormalizeUnicode::collapseTreeInternal"), X("Invalid normalization form [err:FOCH0003].")); + } + + return Sequence(context->getItemFactory()->createString(buf.getRawBuffer(), context), memMgr); + } + + // Never reached + return Sequence(memMgr); +} diff --git a/src/functions/FunctionNot.cpp b/src/functions/FunctionNot.cpp new file mode 100644 index 00000000..51634ae7 --- /dev/null +++ b/src/functions/FunctionNot.cpp @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionNot.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include + +const XMLCh FunctionNot::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionNot::minArgs = 1; +const unsigned int FunctionNot::maxArgs = 1; + +/** + * fn:not($arg as item()*) as xs:boolean +**/ + +FunctionNot::FunctionNot(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "item()*", args, memMgr) +{ +} + +ASTNode* FunctionNot::staticResolution(StaticContext *context) { + AutoNodeSetOrderingReset orderReset(context); + return resolveArguments(context); +} + +ASTNode *FunctionNot::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; + return calculateSRCForArguments(context); +} + +Sequence FunctionNot::collapseTreeInternal(DynamicContext* context, int flags) const +{ + bool result = !getParamNumber(1,context)->getEffectiveBooleanValue(context, this); + XPath2MemoryManager* memMgr = context->getMemoryManager(); + return Sequence(context->getItemFactory()->createBoolean(result, context), memMgr); +} diff --git a/src/functions/FunctionNumber.cpp b/src/functions/FunctionNumber.cpp new file mode 100644 index 00000000..ad7a2bdf --- /dev/null +++ b/src/functions/FunctionNumber.cpp @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionNumber.cpp,v 1.16 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +const XMLCh FunctionNumber::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_b, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionNumber::minArgs = 0; +const unsigned int FunctionNumber::maxArgs = 1; + +/** + * fn:number() as xs:double + * fn:number($arg as anyAtomicType?) as xs:double +**/ + +FunctionNumber::FunctionNumber(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "anyAtomicType?", args, memMgr) +{ +} + +ASTNode* FunctionNumber::staticResolution(StaticContext *context) +{ + if(!_args.empty() && (*_args.begin())->getType()==ASTNode::CONTEXT_ITEM) + _args.clear(); + return resolveArguments(context); +} + +ASTNode *FunctionNumber::staticTyping(StaticContext *context) +{ + _src.clear(); + + if(_args.empty()) { + _src.contextItemUsed(true); + } + _src.getStaticType().flags = StaticType::DOUBLE_TYPE; + return calculateSRCForArguments(context); +} + +Sequence FunctionNumber::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Item::Ptr item = 0; + if(getNumArgs() == 0) { + item = context->getContextItem(); + if(item == NULLRCP) { + XQThrow(FunctionException, X("FunctionNumber::collapseTreeInternal"), X("Undefined context item in fn:number [err:XPDY0002]")); + } + + if(item->isNode()) + { + Sequence typedValue = ((Node *)item.get())->dmTypedValue(context); + if(typedValue.getLength() < 1) { + XQThrow(XPath2TypeMatchException, X("FunctionNumber::collapseTreeInternal"), + X("SequenceType matching failed: the sequence does not contain items [err:XPTY0004]")); + } + if(typedValue.getLength() > 1) { + XQThrow(XPath2TypeMatchException, X("FunctionNumber::collapseTreeInternal"), + X("SequenceType matching failed: the sequence contains more than one item [err:XPTY0004]")); + } + item = typedValue.first(); + } + } + else { + item = getParamNumber(1, context)->next(context); + } + + return Sequence(number((const AnyAtomicType::Ptr )item, context), memMgr); +} + +Item::Ptr FunctionNumber::number(const AnyAtomicType::Ptr &item, DynamicContext *context) +{ + if(item == NULLRCP) { + return (const Item::Ptr)context->getItemFactory()->createDouble(Numeric::NaN_string, context); + } + else { + try { + return (const Item::Ptr)item->castAs(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_DOUBLE, context); + } catch (XPath2TypeCastException &e) { + return (const Item::Ptr)context->getItemFactory()->createDouble(Numeric::NaN_string, context); + } + } +} diff --git a/src/functions/FunctionOneOrMore.cpp b/src/functions/FunctionOneOrMore.cpp new file mode 100644 index 00000000..f65679d7 --- /dev/null +++ b/src/functions/FunctionOneOrMore.cpp @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionOneOrMore.cpp,v 1.12 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include + +const XMLCh FunctionOneOrMore::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionOneOrMore::minArgs = 1; +const unsigned int FunctionOneOrMore::maxArgs = 1; + +/* + * fn:one-or-more($arg as item()*) as item()+ + */ + +FunctionOneOrMore::FunctionOneOrMore(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "item()*", args, memMgr) +{ + // TBD - could do better here - jpcs + _src.getStaticType().flags = StaticType::ITEM_TYPE; +} + +Result FunctionOneOrMore::createResult(DynamicContext* context, int flags) const +{ + return new OneOrMoreResult(this, flags); +} + +FunctionOneOrMore::OneOrMoreResult::OneOrMoreResult(const FunctionOneOrMore *func, int flags) + : ResultImpl(func), + _flags(flags), + _func(func), + _arg(0), + _argNo(0) +{ +} + +Item::Ptr FunctionOneOrMore::OneOrMoreResult::next(DynamicContext *context) +{ + if(_arg.isNull()) { + _arg = _func->getParamNumber(1, context); + } + + const Item::Ptr result = _arg->next(context); + ++_argNo; + + if(_argNo == 1 && result == NULLRCP) { + XQThrow(FunctionException, X("FunctionOneOrMore::OneOrMoreResult::next"),X("fn:one-or-more called with a sequence containing no items [err:FORG0004]")); + } + + return result; +} + +std::string FunctionOneOrMore::OneOrMoreResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/functions/FunctionPosition.cpp b/src/functions/FunctionPosition.cpp new file mode 100644 index 00000000..130beca8 --- /dev/null +++ b/src/functions/FunctionPosition.cpp @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionPosition.cpp,v 1.15 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionPosition::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionPosition::minArgs = 0; +const unsigned int FunctionPosition::maxArgs = 0; + +/** + * fn:position() as xs:integer +**/ + +FunctionPosition::FunctionPosition(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "empty()", args, memMgr) +{ +} + +ASTNode* FunctionPosition::staticResolution(StaticContext *context) { + return resolveArguments(context); +} + +ASTNode *FunctionPosition::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; + _src.contextPositionUsed(true); + return calculateSRCForArguments(context); +} + +Sequence FunctionPosition::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + if(context->getContextItem()==NULLRCP) + XQThrow(FunctionException,X("FunctionPosition::collapseTreeInternal"), X("Undefined context item in fn:position [err:XPDY0002]")); + return Sequence(context->getItemFactory()->createInteger((long)context->getContextPosition(), context), memMgr); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionPrefixFromQName.cpp b/src/functions/FunctionPrefixFromQName.cpp new file mode 100644 index 00000000..bc7328ad --- /dev/null +++ b/src/functions/FunctionPrefixFromQName.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionPrefixFromQName.cpp,v 1.12 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionPrefixFromQName::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_Q, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_N, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionPrefixFromQName::minArgs = 1; +const unsigned int FunctionPrefixFromQName::maxArgs = 1; + +/** + * fn:prefix-from-QName($arg as xs:QName?) as xs:NCNAME? +**/ + +FunctionPrefixFromQName::FunctionPrefixFromQName(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "QName?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::STRING_TYPE; +} + +Sequence FunctionPrefixFromQName::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Sequence arg=getParamNumber(1,context)->toSequence(context); + if(arg.isEmpty()) + return Sequence(context->getMemoryManager()); + const XMLCh* prefix=((const ATQNameOrDerived*)(const Item*)arg.first())->getPrefix(); + if(prefix && *prefix) + return Sequence(context->getItemFactory()->createStringOrDerived(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_NCNAME, + prefix, + context), + context->getMemoryManager()); + return Sequence(context->getMemoryManager()); +} diff --git a/src/functions/FunctionQName.cpp b/src/functions/FunctionQName.cpp new file mode 100644 index 00000000..11babfb6 --- /dev/null +++ b/src/functions/FunctionQName.cpp @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionQName.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +const XMLCh FunctionQName::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_Q, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_N, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionQName::minArgs = 2; +const unsigned int FunctionQName::maxArgs = 2; + +/** + * fn:QName($paramURI as xs:string?, $paramLocal as xs:string) as xs:QName +**/ + +/** Returns a QName with the URI given in $paramURI and the localname + * given in $paramLocal **/ + +FunctionQName::FunctionQName(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string?, string", args, memMgr) +{ + _src.getStaticType().flags = StaticType::QNAME_TYPE; +} + +Sequence FunctionQName::collapseTreeInternal(DynamicContext* context, int flags) const { + Sequence paramURIseq = getParamNumber(1, context)->toSequence(context); + Sequence paramLocalseq = getParamNumber(2, context)->toSequence(context); + + const XMLCh* uri = NULL; + if(!paramURIseq.isEmpty()) + uri=paramURIseq.first()->asString(context); + const XMLCh* local = paramLocalseq.first()->asString(context); + if(!XERCES_CPP_NAMESPACE_QUALIFIER XMLChar1_0::isValidQName(local, XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(local))) + XQThrow(FunctionException,X("FunctionQName::collapseTreeInternal"),X("The second argument to fn:QName is not a valid xs:QName [err:FOCA0002]")); + + const XMLCh* prefix = XPath2NSUtils::getPrefix(local, context->getMemoryManager()); + if((uri==NULL || *uri==0) && !(prefix==NULL || *prefix==0)) + XQThrow(FunctionException,X("FunctionQName::collapseTreeInternal"),X("The second argument to fn:QName specifies a prefix, but the specified uri is empty [err:FOCA0002]")); + + local = XPath2NSUtils::getLocalName(local); + //Construct QName here + Sequence result(context->getItemFactory()->createQName(uri, prefix, local, context), + context->getMemoryManager()); + + return result; +} + + diff --git a/src/functions/FunctionRemove.cpp b/src/functions/FunctionRemove.cpp new file mode 100644 index 00000000..5625ce64 --- /dev/null +++ b/src/functions/FunctionRemove.cpp @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionRemove.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionRemove::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_v, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionRemove::minArgs = 2; +const unsigned int FunctionRemove::maxArgs = 2; + +/** + * fn:remove($target as item()*, $position as xs:integer) as item()* + */ + +FunctionRemove::FunctionRemove(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "item()*, integer", args, memMgr) +{ +} + +ASTNode* FunctionRemove::staticResolution(StaticContext *context) +{ + return resolveArguments(context); +} + +ASTNode *FunctionRemove::staticTyping(StaticContext *context) +{ + _src.clear(); + + ASTNode *result = calculateSRCForArguments(context); + if(result == this) { + _src.getStaticType() = _args[0]->getStaticResolutionContext().getStaticType(); + } + return result; +} + +Result FunctionRemove::createResult(DynamicContext* context, int flags) const +{ + return new RemoveResult(this); +} + +FunctionRemove::RemoveResult::RemoveResult(const FunctionRemove *func) + : ResultImpl(func), + _func(func), + _position(0), + _one(0), + _i(0), + _removeDone(false), + _target(0) +{ +} + +Item::Ptr FunctionRemove::RemoveResult::next(DynamicContext *context) +{ + if(_position == NULLRCP) { + _position = ((const ATDecimalOrDerived::Ptr )_func->getParamNumber(2, context)->next(context)); + _one = context->getItemFactory()->createInteger(1, context); + _i = _one; + _target = _func->getParamNumber(1, context); + } + + if(!_removeDone) { + if(_position->equals((const AnyAtomicType::Ptr)_i, context)) { + _target->next(context); + _removeDone = true; + } + else { + _i = _i->add(_one, context); + } + } + + return _target->next(context); +} + +std::string FunctionRemove::RemoveResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/functions/FunctionReplace.cpp b/src/functions/FunctionReplace.cpp new file mode 100644 index 00000000..650bd8d9 --- /dev/null +++ b/src/functions/FunctionReplace.cpp @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionReplace.cpp,v 1.17 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +const XMLCh FunctionReplace::name[] = { + chLatin_r, chLatin_e, chLatin_p, + chLatin_l, chLatin_a, chLatin_c, + chLatin_e, chNull +}; +const unsigned int FunctionReplace::minArgs = 3; +const unsigned int FunctionReplace::maxArgs = 4; + +/** + * fn:replace($input as xs:string?, $pattern as xs:string, $replacement as xs:string) as xs:string + * fn:replace($input as xs:string?, $pattern as xs:string, $replacement as xs:string, $flags as xs:string) as xs:string + */ + +FunctionReplace::FunctionReplace(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string?, string, string, string", args, memMgr) +{ + _src.getStaticType().flags = StaticType::STRING_TYPE; +} + +Sequence FunctionReplace::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + const XMLCh* input = XMLUni::fgZeroLenString; + Item::Ptr inputString = getParamNumber(1,context)->next(context); + if(inputString.notNull()) + input = inputString->asString(context); + const XMLCh *pattern = getParamNumber(2,context)->next(context)->asString(context); + const XMLCh *replacement = getParamNumber(3,context)->next(context)->asString(context); + + bool notEscaped = true; + const XMLCh* ptr; + for (ptr = replacement; *ptr != chNull; ptr++) + { + if ((*ptr == chDollarSign) && notEscaped) { + ptr++; + + //check that after the $ is a digit + if (!XMLString::isDigit(*ptr)) + XQThrow(FunctionException, X("FunctionReplace::collapseTreeInternal"), X("Invalid replacement pattern [err:FORX0004]")); + } else { + //if you have a slash and then a character that's not a $ or \, + //then it's an invalid replace string + if (!notEscaped && (*ptr != chDollarSign && *ptr != chBackSlash)) + XQThrow(FunctionException, X("FunctionReplace::collapseTreeInternal"), X("Invalid replacement pattern [err:FORX0004]")); + + if (*ptr == chBackSlash) + notEscaped = false; + else + notEscaped = true; + } + } + if(!notEscaped) + XQThrow(FunctionException, X("FunctionReplace::collapseTreeInternal"), X("Invalid replacement pattern [err:FORX0004]")); + + const XMLCh *options = XMLUni::fgZeroLenString; + if(getNumArgs()>3) + options=getParamNumber(4,context)->next(context)->asString(context); + + //Check that the options are valid - throw an exception if not (can have s,m,i and x) + //Note: Are allowed to duplicate the letters. + const XMLCh* cursor=options; + for(; *cursor != 0; ++cursor){ + switch(*cursor) { + case chLatin_s: + case chLatin_m: + case chLatin_i: + case chLatin_x: + break; + default: + XQThrow(FunctionException, X("FunctionReplace::collapseTreeInternal"),X("Invalid regular expression flags [err:FORX0001].")); + } + } + + const XMLCh* result=NULL; + //Now attempt to replace + try { + // Always turn off head character optimisation, since it is broken + XMLBuffer optionsBuf(1023, context->getMemoryManager()); + optionsBuf.set(options); + optionsBuf.append(chLatin_H); + + RegularExpression regEx(pattern, optionsBuf.getRawBuffer(), memMgr); + result = regEx.replace(input, replacement); + } catch (ParseException &e){ + XMLBuffer buf(1023, memMgr); + buf.set(X("Invalid regular expression: ")); + buf.append(e.getMessage()); + buf.append(X(" [err:FORX0002]")); + XQThrow(FunctionException, X("FunctionReplace::collapseTreeInternal"), buf.getRawBuffer()); + } catch (RuntimeException &e){ + if(e.getCode()==XMLExcepts::Regex_RepPatMatchesZeroString) + XQThrow(FunctionException, X("FunctionReplace::collapseTreeInternal"), X("The pattern matches the zero-length string [err:FORX0003]")); + else if(e.getCode()==XMLExcepts::Regex_InvalidRepPattern) + XQThrow(FunctionException, X("FunctionReplace::collapseTreeInternal"), X("Invalid replacement pattern [err:FORX0004]")); + else + XQThrow(FunctionException, X("FunctionReplace::collapseTreeInternal"), e.getMessage()); + } + + return Sequence(context->getItemFactory()->createString(result, context), memMgr); +} diff --git a/src/functions/FunctionResolveQName.cpp b/src/functions/FunctionResolveQName.cpp new file mode 100644 index 00000000..32ab6ed6 --- /dev/null +++ b/src/functions/FunctionResolveQName.cpp @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionResolveQName.cpp,v 1.14 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +const XMLCh FunctionResolveQName::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_v, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_Q, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_N, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionResolveQName::minArgs = 2; +const unsigned int FunctionResolveQName::maxArgs = 2; + +/** + * fn:resolve-QName($qname as xs:string?, $element as element()) as xs:QName? +**/ + +/** Returns an QName with the lexical form given in the first argument. The + * prefix is resolved using the in-scope namespaces for a given element. **/ +FunctionResolveQName::FunctionResolveQName(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string?, element()", args, memMgr) +{ + _src.getStaticType().flags = StaticType::QNAME_TYPE; +} + +Sequence FunctionResolveQName::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Sequence arg1=getParamNumber(1, context)->toSequence(context); + if(arg1.isEmpty()) + return Sequence(memMgr); + + const XMLCh* paramQName = arg1.first()->asString(context); + if(!XERCES_CPP_NAMESPACE_QUALIFIER XMLChar1_0::isValidQName(paramQName, XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(paramQName))) + XQThrow(FunctionException,X("FunctionResolveQName::collapseTreeInternal"),X("The first argument to fn:resolve-QName is not a valid xs:QName [err:FOCA0002]")); + + const XMLCh* prefix = XPath2NSUtils::getPrefix(paramQName, memMgr); + const XMLCh* localName = XPath2NSUtils::getLocalName(paramQName); + + Sequence arg2=getParamNumber(2, context)->toSequence(context); + Node::Ptr node = (Node::Ptr)arg2.first(); + + bool noPrefix = XPath2Utils::equals(prefix, XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString); + const XMLCh* namespaceURI = 0; + + Result namespaces = node->dmNamespaceNodes(context, this); + Node::Ptr ns; + while((ns = (Node::Ptr)namespaces->next(context)).notNull()) { + ATQNameOrDerived::Ptr name = ns->dmNodeName(context); + if(name.isNull()) { + if(noPrefix) { + namespaceURI = ns->dmStringValue(context); + break; + } + } + else if(XPath2Utils::equals(((const ATQNameOrDerived*)name.get())->getName(), prefix)) { + namespaceURI = ns->dmStringValue(context); + break; + } + } + + if(!noPrefix && namespaceURI == 0) { + XQThrow(FunctionException, X("FunctionResolveQName::collapseTreeInternal"),X("No namespace found for prefix [err:FONS0004].")); + } + + Sequence result(context->getItemFactory()->createQName(namespaceURI, prefix, localName, context), memMgr); + + return result; +} diff --git a/src/functions/FunctionResolveURI.cpp b/src/functions/FunctionResolveURI.cpp new file mode 100644 index 00000000..fab33e16 --- /dev/null +++ b/src/functions/FunctionResolveURI.cpp @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionResolveURI.cpp,v 1.15 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include "../exceptions/InvalidLexicalSpaceException.hpp" +#include +#include +#include +#include + +const XMLCh FunctionResolveURI::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_v, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionResolveURI::minArgs = 1; +const unsigned int FunctionResolveURI::maxArgs = 2; + +/** + * fn:resolve-uri($relative as xs:string?) as xs:anyURI? + * fn:resolve-uri($relative as xs:string?, $base as xs:string) as xs:anyURI? + **/ + +FunctionResolveURI::FunctionResolveURI(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "string?, string", args, memMgr), + baseURI_(0) +{ +} + +ASTNode* FunctionResolveURI::staticResolution(StaticContext *context) +{ + if (getNumArgs() == 1) { + baseURI_ = context->getBaseURI(); + } + + return resolveArguments(context); +} + +ASTNode *FunctionResolveURI::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::ANY_URI_TYPE; + return calculateSRCForArguments(context); +} + +Sequence FunctionResolveURI::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + Sequence relativeSeq = getParamNumber(1, context)->toSequence(context); + if(relativeSeq.isEmpty()) + return Sequence(memMgr); + + const XMLCh* relativeURI = relativeSeq.first()->asString(context); + try { + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLUri::isValidURI(false, relativeURI)) + return Sequence(context->getItemFactory()->createAnyURI(relativeURI, context), memMgr); + } catch(InvalidLexicalSpaceException &e){ + XQThrow(FunctionException, X("FunctionResolveURI::collapseTreeInternal"), X("Invalid argument to resolve-uri [err:FORG0002]")); + } + + try { + + const XMLCh* baseURI; + if (getNumArgs() == 1) + { + baseURI = baseURI_; + if (!baseURI) + XQThrow(FunctionException, X("FunctionResolveURI::collapseTreeInternal"), + X("Base uri undefined in the static context [err:FONS0005]")); + } + else + { + Sequence baseSeq = getParamNumber(2, context)->toSequence(context); + baseURI = baseSeq.first()->asString(context); + } + + if(!XERCES_CPP_NAMESPACE_QUALIFIER XMLUri::isValidURI(true, relativeURI)) + XQThrow(FunctionException, X("FunctionResolveURI::collapseTreeInternal"), + X("Invalid relative uri argument to resolve-uri [err:FORG0002]")); + if(!XERCES_CPP_NAMESPACE_QUALIFIER XMLUri::isValidURI(false, baseURI)) + XQThrow(FunctionException, X("FunctionResolveURI::collapseTreeInternal"), + X("Invalid base-uri argument to resolve-uri [err:FORG0002]")); + + try { + XERCES_CPP_NAMESPACE_QUALIFIER XMLUri base(baseURI); + + XERCES_CPP_NAMESPACE_QUALIFIER XMLUri full(&base, relativeURI); + + const XMLCh* fullURI = getMemoryManager()->getPooledString(full.getUriText()); + return Sequence(context->getItemFactory()->createAnyURI(fullURI, context), memMgr); + + } catch(InvalidLexicalSpaceException &e){ + XQThrow(FunctionException, X("FunctionResolveURI::collapseTreeInternal"), X("Invalid argument to resolve-uri [err:FORG0002]")); + } + + } catch(XERCES_CPP_NAMESPACE_QUALIFIER XMLException &e) { + //if can't build, assume its cause there was a relative URI given + XQThrow(FunctionException, X("FunctionResolveURI::collapseTreeInternal"), X("Relative URI base argument to resolve-uri [err:FORG0009]")); + } + + //should not get here + assert(0); + +} diff --git a/src/functions/FunctionReverse.cpp b/src/functions/FunctionReverse.cpp new file mode 100644 index 00000000..00b5e9d5 --- /dev/null +++ b/src/functions/FunctionReverse.cpp @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionReverse.cpp,v 1.11 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include + +const XMLCh FunctionReverse::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_v, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; +const unsigned int FunctionReverse::minArgs = 1; +const unsigned int FunctionReverse::maxArgs = 1; + +/** + * fn:reverse($arg as item()*) as item()* + */ + +FunctionReverse::FunctionReverse(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "item()*", args, memMgr) +{ +} + +ASTNode* FunctionReverse::staticResolution(StaticContext *context) +{ + return resolveArguments(context); +} + +ASTNode *FunctionReverse::staticTyping(StaticContext *context) +{ + _src.clear(); + + ASTNode *result = calculateSRCForArguments(context); + if(result == this) { + _src.getStaticType() = _args[0]->getStaticResolutionContext().getStaticType(); + } + return result; +} + +Sequence FunctionReverse::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Sequence origSeq = getParamNumber(1, context)->toSequence(context); + // empty or singleton sequences are identical when reversed + unsigned int len=origSeq.getLength(); + if(len<2) + return origSeq; + + Sequence result(len,memMgr); + for(Sequence::reverse_iterator i=origSeq.rbegin();i!=origSeq.rend();i++) + result.addItem(*i); + + return result; +} diff --git a/src/functions/FunctionRoot.cpp b/src/functions/FunctionRoot.cpp new file mode 100644 index 00000000..29a0cdf9 --- /dev/null +++ b/src/functions/FunctionRoot.cpp @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionRoot.cpp,v 1.14 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionRoot::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionRoot::minArgs = 0; +const unsigned int FunctionRoot::maxArgs = 1; + +/** + * fn:root() as node() + * fn:root($arg as node()?) as node()? +**/ + +FunctionRoot::FunctionRoot(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "node()?", args, memMgr) +{ +} + +/*static*/ Node::Ptr FunctionRoot::root(const Node::Ptr &node, const DynamicContext *context) +{ + Node::Ptr result = node; + Node::Ptr parent = node->dmParent(context); + while(parent.notNull()) { + result = parent; + parent = result->dmParent(context); + } + return result; +} + +ASTNode* FunctionRoot::staticResolution(StaticContext *context) { + if(!_args.empty() && (*_args.begin())->getType()==ASTNode::CONTEXT_ITEM) + _args.clear(); + return resolveArguments(context); +} + +ASTNode *FunctionRoot::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.setProperties(StaticResolutionContext::DOCORDER | StaticResolutionContext::GROUPED | + StaticResolutionContext::PEER | StaticResolutionContext::SAMEDOC | StaticResolutionContext::ONENODE); + _src.getStaticType().flags = StaticType::NODE_TYPE; + + if(_args.empty()) { + _src.contextItemUsed(true); + } + return calculateSRCForArguments(context); +} + +Sequence FunctionRoot::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Node::Ptr node = NULL; + if(getNumArgs() == 1) + { + Sequence arg1=getParamNumber(1,context)->toSequence(context); + if(arg1.isEmpty()) + return Sequence(memMgr); + node = (const Node::Ptr )arg1.first(); + } + else + { + const Item::Ptr item = context->getContextItem(); + if(item==NULLRCP) + XQThrow(FunctionException, X("FunctionRoot::collapseTreeInternal"),X("Undefined context item in fn:root [err:XPDY0002]")); + if(!item->isNode()) + XQThrow(FunctionException, X("FunctionRoot::collapseTreeInternal"),X("The context item is not a node [err:XPTY0004]")); + node = (const Node::Ptr )item; + } + return Sequence(root(node, context), memMgr); +} diff --git a/src/functions/FunctionRound.cpp b/src/functions/FunctionRound.cpp new file mode 100644 index 00000000..c36dba44 --- /dev/null +++ b/src/functions/FunctionRound.cpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionRound.cpp,v 1.12 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include + +const XMLCh FunctionRound::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionRound::minArgs = 1; +const unsigned int FunctionRound::maxArgs = 1; + +/* + * fn:round($arg as numeric?) as numeric? + */ + +FunctionRound::FunctionRound(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : NumericFunction(name, minArgs, maxArgs, "anyAtomicType?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::NUMERIC_TYPE; +} + +Sequence FunctionRound::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Numeric::Ptr numericArg = getNumericParam(1, context); + + //If the argument is the empty sequence, the empty sequence is returned. + if(numericArg.isNull()) { + return Sequence(memMgr); + } + + if(numericArg->isNaN() || numericArg->isInfinite()) + return Sequence(numericArg, memMgr); + return Sequence(numericArg->round(context), memMgr); +} + diff --git a/src/functions/FunctionRoundHalfToEven.cpp b/src/functions/FunctionRoundHalfToEven.cpp new file mode 100644 index 00000000..3d724ca3 --- /dev/null +++ b/src/functions/FunctionRoundHalfToEven.cpp @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionRoundHalfToEven.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include + +const XMLCh FunctionRoundHalfToEven::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_v, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionRoundHalfToEven::minArgs = 1; +const unsigned int FunctionRoundHalfToEven::maxArgs = 2; + +/* + * fn:round-half-to-even($arg as numeric?) as numeric? + * fn:round-half-to-even($arg as numeric?, $precision as xs:integer) as numeric? + */ + +FunctionRoundHalfToEven::FunctionRoundHalfToEven(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : NumericFunction(name, minArgs, maxArgs, "anyAtomicType?, integer", args, memMgr) +{ + _src.getStaticType().flags = StaticType::NUMERIC_TYPE; +} + +Sequence FunctionRoundHalfToEven::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Numeric::Ptr numericArg = getNumericParam(1, context); + + //If the argument is the empty sequence, the empty sequence is returned. + if(numericArg.isNull()) { + return Sequence(memMgr); + } + + if(numericArg->isNaN() || numericArg->isInfinite()) + return Sequence(numericArg, memMgr); + ATDecimalOrDerived::Ptr precision = NULL; + if(getNumArgs() > 1) { + Sequence precisionArg = getParamNumber(2,context)->toSequence(context); + precision = (const ATDecimalOrDerived::Ptr )precisionArg.first(); + } + else + precision = context->getItemFactory()->createInteger(0, context); + + return Sequence(numericArg->roundHalfToEven(precision, context), memMgr); +} diff --git a/src/functions/FunctionSecondsFromDateTime.cpp b/src/functions/FunctionSecondsFromDateTime.cpp new file mode 100644 index 00000000..b9a6d7ae --- /dev/null +++ b/src/functions/FunctionSecondsFromDateTime.cpp @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionSecondsFromDateTime.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionSecondsFromDateTime::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionSecondsFromDateTime::minArgs = 1; +const unsigned int FunctionSecondsFromDateTime::maxArgs = 1; + +/* + * fn:seconds-from-dateTime($arg as xs:dateTime?) as xs:decimal? + */ + +FunctionSecondsFromDateTime::FunctionSecondsFromDateTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "dateTime?", args, memMgr) +{ +} + +ASTNode* FunctionSecondsFromDateTime::staticResolution(StaticContext *context) +{ + return resolveArguments(context, /*checkTimezone*/true); +} + +ASTNode *FunctionSecondsFromDateTime::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; + return calculateSRCForArguments(context, /*checkTimezone*/true); +} + +Sequence FunctionSecondsFromDateTime::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Item::Ptr arg = getParamNumber(1, context)->next(context); + if(arg.isNull()) return Sequence(memMgr); + + return Sequence(((const ATDateTimeOrDerived*)arg.get())->getSeconds(context), memMgr); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionSecondsFromDuration.cpp b/src/functions/FunctionSecondsFromDuration.cpp new file mode 100644 index 00000000..7a081258 --- /dev/null +++ b/src/functions/FunctionSecondsFromDuration.cpp @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionSecondsFromDuration.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionSecondsFromDuration::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionSecondsFromDuration::minArgs = 1; +const unsigned int FunctionSecondsFromDuration::maxArgs = 1; + +/* + * fn:seconds-from-dayTimeDuration($arg as xs:duration?) as xs:decimal? + */ + +FunctionSecondsFromDuration::FunctionSecondsFromDuration(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "duration?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; +} + +Sequence FunctionSecondsFromDuration::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Item::Ptr arg = getParamNumber(1, context)->next(context); + if(arg.isNull()) return Sequence(memMgr); + + return Sequence(((const ATDurationOrDerived*)arg.get())->getSeconds(context), memMgr); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionSecondsFromTime.cpp b/src/functions/FunctionSecondsFromTime.cpp new file mode 100644 index 00000000..7d1e019d --- /dev/null +++ b/src/functions/FunctionSecondsFromTime.cpp @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionSecondsFromTime.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionSecondsFromTime::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionSecondsFromTime::minArgs = 1; +const unsigned int FunctionSecondsFromTime::maxArgs = 1; + +/* + * fn:seconds-from-time($arg as xs:time?) as xs:decimal? + */ + +FunctionSecondsFromTime::FunctionSecondsFromTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "time?", args, memMgr) +{ +} + +ASTNode* FunctionSecondsFromTime::staticResolution(StaticContext *context) +{ + return resolveArguments(context, /*checkTimezone*/true); +} + +ASTNode *FunctionSecondsFromTime::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; + return calculateSRCForArguments(context, /*checkTimezone*/true); +} + +Sequence FunctionSecondsFromTime::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Item::Ptr arg = getParamNumber(1, context)->next(context); + if(arg.isNull()) return Sequence(memMgr); + + return Sequence(((const ATTimeOrDerived*)arg.get())->getSeconds(context), memMgr); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionStartsWith.cpp b/src/functions/FunctionStartsWith.cpp new file mode 100644 index 00000000..6614120b --- /dev/null +++ b/src/functions/FunctionStartsWith.cpp @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionStartsWith.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionStartsWith::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionStartsWith::minArgs = 2; +const unsigned int FunctionStartsWith::maxArgs = 3; + +/** + * fn:starts-with($arg1 as xs:string?, $arg2 as xs:string?) as xs:boolean + * fn:starts-with($arg1 as xs:string?, $arg2 as xs:string?, $collation as xs:string) as xs:boolean +**/ + +FunctionStartsWith::FunctionStartsWith(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string?, string?, string", args, memMgr) +{ + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; +} + +Sequence FunctionStartsWith::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Sequence sourceString=getParamNumber(1,context)->toSequence(context); + Sequence findString=getParamNumber(2,context)->toSequence(context); + + const XMLCh* source = XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString; + if(!sourceString.isEmpty()) + source=sourceString.first()->asString(context); + const XMLCh* find = XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString; + if(!findString.isEmpty()) + find=findString.first()->asString(context); + + // If the value of $operand1 is the zero-length string and the value of $operand2 is not the zero-length string, + // then the function returns false. + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(source)==0 && XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(find)>0) + return Sequence(context->getItemFactory()->createBoolean(false, context), memMgr); + // If the value of $operand2 is the zero-length string, then the function returns true + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(find)==0) + return Sequence(context->getItemFactory()->createBoolean(true, context), memMgr); + + Collation* collation=NULL; + if(getNumArgs()>2) { + Sequence collArg = getParamNumber(3,context)->toSequence(context); + const XMLCh* collName = collArg.first()->asString(context); + try { + context->getItemFactory()->createAnyURI(collName, context); + } catch(XPath2ErrorException &e) { + XQThrow(FunctionException, X("FunctionEndsWith::collapseTreeInternal"), X("Invalid collationURI")); + } + collation=context->getCollation(collName, this); + } + else + collation=context->getDefaultCollation(this); + + // Returns a boolean indicating whether or not the value of $operand1 ends with a string that is equal to the value + // of $operand2 according to the specified collation + + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(find)>XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(source)) { + return Sequence(context->getItemFactory()->createBoolean(false, context), memMgr); + } + const XMLCh* string = XPath2Utils::subString(source, 0,XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(find), memMgr); + bool result = (collation->compare(string,find)==0); + + return Sequence(context->getItemFactory()->createBoolean(result, context), memMgr); +} diff --git a/src/functions/FunctionStaticBaseURI.cpp b/src/functions/FunctionStaticBaseURI.cpp new file mode 100644 index 00000000..dd881273 --- /dev/null +++ b/src/functions/FunctionStaticBaseURI.cpp @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionStaticBaseURI.cpp,v 1.12 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include + +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +const XMLCh FunctionStaticBaseURI::name[] = { + chLatin_s, chLatin_t, chLatin_a, + chLatin_t, chLatin_i, chLatin_c, + chDash, chLatin_b, chLatin_a, + chLatin_s, chLatin_e, chDash, + chLatin_u, chLatin_r, chLatin_i, + chNull +}; +const unsigned int FunctionStaticBaseURI::minArgs = 0; +const unsigned int FunctionStaticBaseURI::maxArgs = 0; + +/** + * fn:static-base-uri() as xs:anyURI? +**/ + +FunctionStaticBaseURI::FunctionStaticBaseURI(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "empty()", args, memMgr) +{ +} + +ASTNode* FunctionStaticBaseURI::staticResolution(StaticContext *context) { + XPath2MemoryManager* mm=context->getMemoryManager(); + + ItemConstructor *item = new (mm) AnyAtomicTypeConstructor(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_ANYURI, + context->getBaseURI(), + AnyAtomicType::ANY_URI); + ASTNode* newBlock = new (mm) XQSequence(item, mm); + newBlock->setLocationInfo(this); + + return newBlock->staticResolution(context); +} + +ASTNode *FunctionStaticBaseURI::staticTyping(StaticContext *context) +{ + // Should never happen + return this; +} + +Sequence FunctionStaticBaseURI::collapseTreeInternal(DynamicContext* context, int flags) const +{ + // Always constant folded + return Sequence(context->getMemoryManager()); +} diff --git a/src/functions/FunctionString.cpp b/src/functions/FunctionString.cpp new file mode 100644 index 00000000..28cf4e65 --- /dev/null +++ b/src/functions/FunctionString.cpp @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionString.cpp,v 1.16 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionString::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionString::minArgs = 0; +const unsigned int FunctionString::maxArgs = 1; + +/** + * fn:string() as xs:string + * fn:string($arg as item()?) as xs:string +**/ + +FunctionString::FunctionString(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "item()?", args, memMgr) +{ +} + +ASTNode* FunctionString::staticResolution(StaticContext *context) { + if(!_args.empty() && (*_args.begin())->getType()==ASTNode::CONTEXT_ITEM) + _args.clear(); + return resolveArguments(context); +} + +ASTNode *FunctionString::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::STRING_TYPE; + if(_args.empty()) { + _src.contextItemUsed(true); + } + return calculateSRCForArguments(context); +} + +Sequence FunctionString::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Item::Ptr item = 0; + if(getNumArgs() == 0) { + item = context->getContextItem(); + if(item == NULLRCP) { + XQThrow(FunctionException, X("FunctionString::collapseTreeInternal"), + X("Undefined context item in fn:string [err:XPDY0002]")); + } + } + else { + item = getParamNumber(1, context)->next(context); + } + + return Sequence(string(item, context), memMgr); +} + +Item::Ptr FunctionString::string(const Item::Ptr &item, DynamicContext *context) +{ + if(item == NULLRCP) { + return context->getItemFactory()->createString(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context); + } + else if(item->isNode()) { + return context->getItemFactory()->createString(((Node*)item.get())->dmStringValue(context), context); + } + else if(item->isAtomicValue()) { + return ((AnyAtomicType*)item.get())->castAs(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, context); + } + assert(false); + return 0; +} diff --git a/src/functions/FunctionStringJoin.cpp b/src/functions/FunctionStringJoin.cpp new file mode 100644 index 00000000..77745f99 --- /dev/null +++ b/src/functions/FunctionStringJoin.cpp @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionStringJoin.cpp,v 1.11 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include + +const XMLCh FunctionStringJoin::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_j, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionStringJoin::minArgs = 2; +const unsigned int FunctionStringJoin::maxArgs = 2; + +/** + * fn:string-join($arg1 as xs:string*, $arg2 as xs:string) as xs:string +**/ + +FunctionStringJoin::FunctionStringJoin(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string*, string", args, memMgr) +{ + _src.getStaticType().flags = StaticType::STRING_TYPE; +} + +Sequence FunctionStringJoin::collapseTreeInternal(DynamicContext* context, int flags) const { + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer result(1023, context->getMemoryManager()); + XPath2MemoryManager* memMgr = context->getMemoryManager(); + Sequence strSeq = getParamNumber(1, context)->toSequence(context); + const XMLCh* strSep = getParamNumber(2,context)->next(context)->asString(context); + + //if the sequence is non-empty, append the 1st string to the result + if(!strSeq.isEmpty()) { + Sequence::iterator end = strSeq.end(); + Sequence::iterator i = strSeq.begin(); + + result.append((*i)->asString(context)); + + //join the last length - 1 strings each prefixed by the separator + for(++i; i != end; ++i) { + result.append(strSep); + result.append((*i)->asString(context)); + } + } + + const ATStringOrDerived::Ptr strResult = context->getItemFactory()->createString(result.getRawBuffer(), context); + return Sequence(strResult, memMgr); +} diff --git a/src/functions/FunctionStringLength.cpp b/src/functions/FunctionStringLength.cpp new file mode 100644 index 00000000..68c78e4d --- /dev/null +++ b/src/functions/FunctionStringLength.cpp @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionStringLength.cpp,v 1.14 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +const XMLCh FunctionStringLength::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionStringLength::minArgs = 0; +const unsigned int FunctionStringLength::maxArgs = 1; + +/** + * fn:string-length() as xs:integer + * fn:string-length($arg as xs:string?) as xs:integer +**/ + +FunctionStringLength::FunctionStringLength(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "string?", args, memMgr) +{ +} + +const XMLCh* FunctionStringLength::getString(DynamicContext* context) const { + XPath2MemoryManager* memMgr = context->getMemoryManager(); + //setup xf:string with empty args + VectorOfASTNodes args=VectorOfASTNodes(XQillaAllocator(context->getMemoryManager())); + FunctionString stringGrabber(args, memMgr); + //call xf:string and extract result + return stringGrabber.collapseTree(context)->next(context)->asString(context); +} + +ASTNode* FunctionStringLength::staticResolution(StaticContext *context) { + return resolveArguments(context); +} + +ASTNode *FunctionStringLength::staticTyping(StaticContext *context) +{ + _src.clear(); + + if(_args.empty()) { + _src.contextItemUsed(true); + } + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; + return calculateSRCForArguments(context); +} + +Sequence FunctionStringLength::collapseTreeInternal(DynamicContext* context, int flags) const +{ + const XMLCh* str; + XPath2MemoryManager* memMgr = context->getMemoryManager(); + if (getNumArgs() == 0) { + str = getString(context); + } else { + + Sequence strParm=getParamNumber(1,context)->toSequence(context); + if(strParm.isEmpty()) + return Sequence(context->getItemFactory()->createInteger(0, context), memMgr); + + str = strParm.first()->asString(context); + } + const XMLCh* cursor=str; + long length=0; + while(*cursor) + { + length++; + if(XERCES_CPP_NAMESPACE_QUALIFIER RegxUtil::isHighSurrogate(*cursor) && + XERCES_CPP_NAMESPACE_QUALIFIER RegxUtil::isLowSurrogate(*(cursor+1))) + cursor++; + cursor++; + } + return Sequence(context->getItemFactory()->createInteger(length, context), memMgr); +} diff --git a/src/functions/FunctionStringToCodepoints.cpp b/src/functions/FunctionStringToCodepoints.cpp new file mode 100644 index 00000000..8eedac26 --- /dev/null +++ b/src/functions/FunctionStringToCodepoints.cpp @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionStringToCodepoints.cpp,v 1.11 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include + +/*string-to-codepoints*/ +const XMLCh FunctionStringToCodepoints::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionStringToCodepoints::minArgs = 1; +const unsigned int FunctionStringToCodepoints::maxArgs = 1; + +/** + * fn:string-to-codepoints( $arg as xs:string?) as xs:integer* +**/ + +FunctionStringToCodepoints::FunctionStringToCodepoints(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string?", args, memMgr) // 1 argument +{ + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; +} + +Sequence FunctionStringToCodepoints::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Sequence param1 = getParamNumber(1,context)->toSequence(context); + if(param1.isEmpty()) return param1; + const ATStringOrDerived::Ptr str = (const ATStringOrDerived::Ptr )param1.first(); + + return str->asCodepoints(context)->toSequence(context); +} diff --git a/src/functions/FunctionSubsequence.cpp b/src/functions/FunctionSubsequence.cpp new file mode 100644 index 00000000..073decc4 --- /dev/null +++ b/src/functions/FunctionSubsequence.cpp @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionSubsequence.cpp,v 1.14 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionSubsequence::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_b, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_q, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionSubsequence::minArgs = 2; +const unsigned int FunctionSubsequence::maxArgs = 3; + +/** + * fn:subsequence($sourceSeq as item()*, $startingLoc as xs:double) as item()* + * fn:subsequence($sourceSeq as item()*, $startingLoc as xs:double, $length as xs:double) as item()* +**/ + +FunctionSubsequence::FunctionSubsequence(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "item()*, double, double", args, memMgr) +{ +} + +ASTNode* FunctionSubsequence::staticResolution(StaticContext *context) +{ + return resolveArguments(context); +} + +ASTNode *FunctionSubsequence::staticTyping(StaticContext *context) +{ + _src.clear(); + + ASTNode *result = calculateSRCForArguments(context); + if(result == this) { + _src.getStaticType() = _args.front()->getStaticResolutionContext().getStaticType(); + } + return result; +} + +Result FunctionSubsequence::createResult(DynamicContext* context, int flags) const +{ + return new SubsequenceResult(this, flags); +} + +FunctionSubsequence::SubsequenceResult::SubsequenceResult(const FunctionSubsequence *func, int flags) + : ResultImpl(func), + _flags(flags), + _func(func), + _end(0), + _one(0), + _i(0), + _source(0) +{ +} + +Item::Ptr FunctionSubsequence::SubsequenceResult::next(DynamicContext *context) +{ + if(_one == NULLRCP) { + _one = context->getItemFactory()->createDouble(1, context); + _source = _func->getParamNumber(1, context); + + _i = _one; + const Numeric::Ptr position = ((const Numeric::Ptr )_func->getParamNumber(2, context)->next(context))->round(context); + if(_func->getNumArgs()>2) + _end = ((const Numeric::Ptr )_func->getParamNumber(3, context)->next(context))->round(context)->add(position, context); + + while(_i->lessThan(position, context) && _source->next(context) != NULLRCP) { + _i = _i->add(_one, context); + } + } + + if(_end != NULLRCP && !_i->lessThan(_end, context)) { + return 0; + } + + _i = _i->add(_one, context); + return _source->next(context); +} + +std::string FunctionSubsequence::SubsequenceResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/functions/FunctionSubstring.cpp b/src/functions/FunctionSubstring.cpp new file mode 100644 index 00000000..1e7a9db5 --- /dev/null +++ b/src/functions/FunctionSubstring.cpp @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionSubstring.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionSubstring::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_b, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionSubstring::minArgs = 2; +const unsigned int FunctionSubstring::maxArgs = 3; + + +/** + * fn:substring($sourceString as xs:string?, $startingLoc as xs:double) as xs:string + * fn:substring($sourceString as xs:string?, $startingLoc as xs:double, $length as xs:double) as xs:string +**/ + +FunctionSubstring::FunctionSubstring(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string?, double, double", args, memMgr) +{ + _src.getStaticType().flags = StaticType::STRING_TYPE; +} + +Sequence FunctionSubstring::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Sequence string=getParamNumber(1, context)->toSequence(context); + if(string.isEmpty()) + return Sequence(context->getItemFactory()->createString(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context), memMgr); + + ATStringOrDerived::Ptr str = (const ATStringOrDerived::Ptr )string.first(); + + Sequence startingLoc=getParamNumber(2,context)->toSequence(context); + ATDoubleOrDerived::Ptr index = (const ATDoubleOrDerived::Ptr )startingLoc.first(); + ATDoubleOrDerived::Ptr subStrLength; + if(getNumArgs()>2) + { + Sequence length=getParamNumber(3,context)->toSequence(context); + subStrLength=(const ATDoubleOrDerived::Ptr )length.first(); + } + else { + subStrLength=(const ATDoubleOrDerived::Ptr )context->getItemFactory()->createDouble((long)((const ATStringOrDerived*)str)->getLength(), context); + } + + return Sequence(((const ATStringOrDerived*)str)->substring(index, subStrLength, context), memMgr); +} diff --git a/src/functions/FunctionSubstringAfter.cpp b/src/functions/FunctionSubstringAfter.cpp new file mode 100644 index 00000000..386ea47e --- /dev/null +++ b/src/functions/FunctionSubstringAfter.cpp @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionSubstringAfter.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionSubstringAfter::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_b, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionSubstringAfter::minArgs = 2; +const unsigned int FunctionSubstringAfter::maxArgs = 3; + +/** + * fn:substring-after($arg1 as xs:string?, $arg2 as xs:string?) as xs:string + * fn:substring-after($arg1 as xs:string?, $arg2 as xs:string?, $collation as xs:string) as xs:string +**/ + +FunctionSubstringAfter::FunctionSubstringAfter(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string?,string?,string", args, memMgr) +{ + _src.getStaticType().flags = StaticType::STRING_TYPE; +} + +Sequence FunctionSubstringAfter::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Sequence str1=getParamNumber(1,context)->toSequence(context); + Sequence str2=getParamNumber(2,context)->toSequence(context); + + Collation* collation=NULL; + if(getNumArgs()>2) { + Sequence collArg = getParamNumber(3,context)->toSequence(context); + const XMLCh* collName=collArg.first()->asString(context); + try { + context->getItemFactory()->createAnyURI(collName, context); + } catch(XPath2ErrorException &e) { + XQThrow(FunctionException, X("FunctionSubstringAfter::collapseTreeInternal"), X("Invalid collationURI")); + } + collation=context->getCollation(collName, this); + } + else + collation=context->getDefaultCollation(this); + + ATStringOrDerived::Ptr container = NULL; + if(str1.isEmpty()) + container=context->getItemFactory()->createString(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context); + else + container=(const ATStringOrDerived::Ptr )str1.first(); + ATStringOrDerived::Ptr pattern = NULL; + if(str2.isEmpty()) + pattern=context->getItemFactory()->createString(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context); + else + pattern=(const ATStringOrDerived::Ptr )str2.first(); + + return Sequence(((const ATStringOrDerived*)container)->substringAfter(pattern, collation, context), memMgr); +} diff --git a/src/functions/FunctionSubstringBefore.cpp b/src/functions/FunctionSubstringBefore.cpp new file mode 100644 index 00000000..e7402b80 --- /dev/null +++ b/src/functions/FunctionSubstringBefore.cpp @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionSubstringBefore.cpp,v 1.14 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionSubstringBefore::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_b, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_b, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionSubstringBefore::minArgs = 2; +const unsigned int FunctionSubstringBefore::maxArgs = 3; + +/** + * fn:substring-before($arg1 as xs:string?, $arg2 as xs:string?) as xs:string + * fn:substring-before($arg1 as xs:string?, $arg2 as xs:string?, $collation as xs:string) as xs:string +**/ + +FunctionSubstringBefore::FunctionSubstringBefore(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string?,string?,string", args, memMgr) +{ + _src.getStaticType().flags = StaticType::STRING_TYPE; +} + +Sequence FunctionSubstringBefore::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Sequence str1=getParamNumber(1,context)->toSequence(context); + Sequence str2=getParamNumber(2,context)->toSequence(context); + + ATStringOrDerived::Ptr container = NULL; + if(str1.isEmpty()) + container=context->getItemFactory()->createString(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context); + else + container=(const ATStringOrDerived::Ptr )str1.first(); + ATStringOrDerived::Ptr pattern = NULL; + if(str2.isEmpty()) + pattern=context->getItemFactory()->createString(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context); + else + pattern=(const ATStringOrDerived::Ptr )str2.first(); + if(pattern->getLength()==0) + return Sequence(pattern, memMgr); + + Collation* collation=NULL; + if(getNumArgs()>2) { + Sequence collArg = getParamNumber(3,context)->toSequence(context); + const XMLCh* collName=collArg.first()->asString(context); + try { + context->getItemFactory()->createAnyURI(collName, context); + } catch(XPath2ErrorException &e) { + XQThrow(FunctionException, X("FunctionSubstringAfter::collapseTreeInternal"), X("Invalid collationURI")); + } + collation=context->getCollation(collName, this); + } + else + collation=context->getDefaultCollation(this); + + return Sequence(((const ATStringOrDerived*)container)->substringBefore(pattern, collation, context), memMgr); +} diff --git a/src/functions/FunctionSum.cpp b/src/functions/FunctionSum.cpp new file mode 100644 index 00000000..6cfa9700 --- /dev/null +++ b/src/functions/FunctionSum.cpp @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionSum.cpp,v 1.16 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionSum::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionSum::minArgs = 1; +const unsigned int FunctionSum::maxArgs = 2; + +/** + * fn:sum($arg as xdt:anyAtomicType*) as xdt:anyAtomicType + * fn:sum($arg as xdt:anyAtomicType*, $zero as xdt:anyAtomicType?) as xdt:anyAtomicType? +**/ + +FunctionSum::FunctionSum(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : AggregateFunction(name, minArgs, maxArgs, "anyAtomicType*,anyAtomicType?", args, memMgr) +{ +} + +ASTNode* FunctionSum::staticResolution(StaticContext *context) { + AutoNodeSetOrderingReset orderReset(context); + return resolveArguments(context); +} + +ASTNode *FunctionSum::staticTyping(StaticContext *context) +{ + _src.clear(); + + // TBD - could do better here - jpcs + _src.getStaticType().flags = StaticType::TYPED_ATOMIC_TYPE; + return calculateSRCForArguments(context); +} + +Sequence FunctionSum::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Sequence sequence(memMgr); + try { + sequence = validateSequence(getParamNumber(1,context)->toSequence(context), context); + } catch (IllegalArgumentException &e) { + XQThrow(IllegalArgumentException, X("FunctionSum::collapseTreeInternal"), X("Invalid argument to fn:sum() function [err:FORG0006]")); + } + + if(sequence.isEmpty()) + if(getNumArgs() == 1) + return Sequence(context->getItemFactory()->createInteger(0, context), memMgr); + else + return getParamNumber(2,context)->toSequence(context); + + // check for types that don't support addition + const AnyAtomicType::Ptr atom = (const AnyAtomicType::Ptr )sequence.first(); + if(!atom->isNumericValue() && + atom->getPrimitiveTypeIndex() != AnyAtomicType::DAY_TIME_DURATION && + atom->getPrimitiveTypeIndex() != AnyAtomicType::YEAR_MONTH_DURATION) + XQThrow(IllegalArgumentException, X("FunctionSum::collapseTreeInternal"), X("Invalid argument to fn:sum() function [err:FORG0006].")); + + return Sequence(sum(sequence, context, this), memMgr); +} + +Item::Ptr FunctionSum::sum(const Sequence &sequence, DynamicContext *context, const LocationInfo *info) +{ + if(sequence.getLength() == 1) + return sequence.first(); + + Sequence::const_iterator i = sequence.begin(); + Item::Ptr sum = *i; + ++i; + + for(; i != sequence.end(); ++i) { + try { + sum = Plus::plus(*i, sum, context, info); + } catch (IllegalArgumentException &e) { + XQThrow3(IllegalArgumentException, X("FunctionSum::collapseTreeInternal"), X("Invalid argument to fn:sum() function"), info); + } + } + + return sum; +} diff --git a/src/functions/FunctionTimezoneFromDate.cpp b/src/functions/FunctionTimezoneFromDate.cpp new file mode 100644 index 00000000..08213afe --- /dev/null +++ b/src/functions/FunctionTimezoneFromDate.cpp @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionTimezoneFromDate.cpp,v 1.10 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionTimezoneFromDate::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_z, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionTimezoneFromDate::minArgs = 1; +const unsigned int FunctionTimezoneFromDate::maxArgs = 1; + +/* + * fn:timezone-from-date($arg as xs:date?) as xdt:dayTimeDuration? + */ + +FunctionTimezoneFromDate::FunctionTimezoneFromDate(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "date?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::DAY_TIME_DURATION_TYPE; +} + +Sequence FunctionTimezoneFromDate::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Sequence arg=getParamNumber(1,context)->toSequence(context); + if(arg.isEmpty()) + return Sequence(memMgr); + + const ATDateOrDerived *date = (const ATDateOrDerived*)(const Item*)arg.first(); + // If $srcval does not contain a timezone, the result is the empty sequence + if (date->hasTimezone() == false) { + return Sequence(memMgr); + } + + const Timezone::Ptr timezone = date->getTimezone(); + return Sequence( (const Item::Ptr )timezone->asDayTimeDuration(context), memMgr ); +} + diff --git a/src/functions/FunctionTimezoneFromDateTime.cpp b/src/functions/FunctionTimezoneFromDateTime.cpp new file mode 100644 index 00000000..85bbc3c3 --- /dev/null +++ b/src/functions/FunctionTimezoneFromDateTime.cpp @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionTimezoneFromDateTime.cpp,v 1.11 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include + +const XMLCh FunctionTimezoneFromDateTime::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_z, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionTimezoneFromDateTime::minArgs = 1; +const unsigned int FunctionTimezoneFromDateTime::maxArgs = 1; + +/* + * fn:timezone-from-dateTime($arg as xs:dateTime?) as xdt:dayTimeDuration? + */ + +FunctionTimezoneFromDateTime::FunctionTimezoneFromDateTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "dateTime?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::DAY_TIME_DURATION_TYPE; +} + +Sequence FunctionTimezoneFromDateTime::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Item::Ptr arg = getParamNumber(1, context)->next(context); + if(arg.isNull()) { + return Sequence(memMgr); + } + + const ATDateTimeOrDerived * dateTime = (const ATDateTimeOrDerived *)arg.get(); + // If $srcval does not contain a timezone, the result is the empty sequence + if(dateTime->hasTimezone() == false) { + return Sequence(memMgr); + } + + return Sequence(dateTime->getTimezone()->asDayTimeDuration(context), memMgr); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionTimezoneFromTime.cpp b/src/functions/FunctionTimezoneFromTime.cpp new file mode 100644 index 00000000..d87fa276 --- /dev/null +++ b/src/functions/FunctionTimezoneFromTime.cpp @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionTimezoneFromTime.cpp,v 1.10 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionTimezoneFromTime::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_z, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionTimezoneFromTime::minArgs = 1; +const unsigned int FunctionTimezoneFromTime::maxArgs = 1; + +/* + * fn:timezone-from-time($arg as xs:time?) as xdt:dayTimeDuration? + */ + +FunctionTimezoneFromTime::FunctionTimezoneFromTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "time?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::DAY_TIME_DURATION_TYPE; +} + +Sequence FunctionTimezoneFromTime::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Sequence arg=getParamNumber(1,context)->toSequence(context); + if(arg.isEmpty()) { + return Sequence(memMgr); + } + + const ATTimeOrDerived* time = (const ATTimeOrDerived*)(const Item*)arg.first(); + // If $srcval does not contain a timezone, the result is the empty sequence + if (time->hasTimezone() == false) { + return Sequence(memMgr); + } + + const Timezone::Ptr timezone = time->getTimezone(); + return Sequence( (const Item::Ptr )timezone->asDayTimeDuration(context), memMgr ); + +} + + diff --git a/src/functions/FunctionTokenize.cpp b/src/functions/FunctionTokenize.cpp new file mode 100644 index 00000000..52c93a43 --- /dev/null +++ b/src/functions/FunctionTokenize.cpp @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionTokenize.cpp,v 1.16 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +const XMLCh FunctionTokenize::name[] = { + chLatin_t, chLatin_o, chLatin_k, + chLatin_e, chLatin_n, chLatin_i, + chLatin_z, chLatin_e, chNull +}; +const unsigned int FunctionTokenize::minArgs = 2; +const unsigned int FunctionTokenize::maxArgs = 3; + +/** + * fn:tokenize($input as xs:string?, $pattern as xs:string) as xs:string* + * fn:tokenize($input as xs:string?, $pattern as xs:string, $flags as xs:string) as xs:string* + */ + +FunctionTokenize::FunctionTokenize(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string?, string, string", args, memMgr) +{ + _src.getStaticType().flags = StaticType::STRING_TYPE; +} + +Sequence FunctionTokenize::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + // If the value of $operand1 is the empty sequence, the empty sequence is returned. + Item::Ptr inputString = getParamNumber(1,context)->next(context); + if(inputString.isNull()) + return Sequence(memMgr); + + const XMLCh *input=inputString->asString(context); + // If the value of $operand1 is the zero-length string, the empty sequence is returned. + if(XPath2Utils::equals(input, XMLUni::fgZeroLenString)) + return Sequence(memMgr); + + const XMLCh *pattern=getParamNumber(2,context)->next(context)->asString(context); + + const XMLCh *options = XMLUni::fgZeroLenString; + if(getNumArgs()>2) + options=getParamNumber(3,context)->next(context)->asString(context); + + //Check that the options are valid - throw an exception if not (can have s,m,i and x) + //Note: Are allowed to duplicate the letters. + const XMLCh* cursor=options; + for(; *cursor != 0; ++cursor){ + switch(*cursor) { + case chLatin_s: + case chLatin_m: + case chLatin_i: + case chLatin_x: + break; + default: + XQThrow(FunctionException, X("FunctionTokenize::collapseTreeInternal"),X("Invalid regular expression flags [err:FORX0001].")); + } + } + + //Now attempt to tokenize + RefArrayVectorOf* toks=NULL; + try { + // Always turn off head character optimisation, since it is broken + XMLBuffer optionsBuf(1023, context->getMemoryManager()); + optionsBuf.set(options); + optionsBuf.append(chLatin_H); + + RegularExpression regEx(pattern, optionsBuf.getRawBuffer(), memMgr); + if(regEx.matches(XMLUni::fgZeroLenString)) + XQThrow(FunctionException, X("FunctionTokenize::collapseTreeInternal"), X("The pattern matches the zero-length string [err:FORX0003]")); + toks = regEx.tokenize(input); + } catch (ParseException &e){ + XMLBuffer buf(1023, memMgr); + buf.set(X("Invalid regular expression: ")); + buf.append(e.getMessage()); + buf.append(X(" [err:FORX0002]")); + XQThrow(FunctionException, X("FunctionTokenize::collapseTreeInternal"), buf.getRawBuffer()); + } catch (RuntimeException &e){ + if(e.getCode()==XMLExcepts::Regex_InvalidRepPattern) + XQThrow(FunctionException, X("FunctionTokenize::collapseTreeInternal"), X("Invalid replacement pattern [err:FORX0004]")); + else + XQThrow(FunctionException, X("FunctionTokenize::collapseTreeInternal"), e.getMessage()); + } + + Sequence resultSeq(toks->size(),memMgr); + + for(unsigned int i = 0; i < toks->size(); ++i){ + resultSeq.addItem(context->getItemFactory()->createString(toks->elementAt(i), context)); + } + + return resultSeq; +} diff --git a/src/functions/FunctionTrace.cpp b/src/functions/FunctionTrace.cpp new file mode 100644 index 00000000..3fb20a85 --- /dev/null +++ b/src/functions/FunctionTrace.cpp @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionTrace.cpp,v 1.10 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include + +const XMLCh FunctionTrace::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionTrace::minArgs = 2; +const unsigned int FunctionTrace::maxArgs = 2; + +/* + * fn:trace($value as item()*, $label as xs:string) as item()* + */ + +FunctionTrace::FunctionTrace(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "item()*, string", args, memMgr) +{ +} + +ASTNode* FunctionTrace::staticResolution(StaticContext *context) { + return resolveArguments(context); +} + +ASTNode *FunctionTrace::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.forceNoFolding(true); + ASTNode *result = calculateSRCForArguments(context); + if(result == this) { + _src.getStaticType() = _args.front()->getStaticResolutionContext().getStaticType(); + } + return result; +} + +Sequence FunctionTrace::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Sequence value = getParamNumber(1, context)->toSequence(context); + Sequence label = getParamNumber(2, context)->toSequence(context); + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer valueStr(1023, context->getMemoryManager()); + unsigned int len=value.getLength(); + if(len>0) + { + if(len==1) + valueStr.set(value.first()->asString(context)); + else + { + XMLCh szOpenParen[]={ XERCES_CPP_NAMESPACE_QUALIFIER chOpenParen, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + XMLCh szCloseParen[]={ XERCES_CPP_NAMESPACE_QUALIFIER chCloseParen, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + XMLCh szComma[]={ XERCES_CPP_NAMESPACE_QUALIFIER chComma, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + valueStr.set(szOpenParen); + Sequence::iterator end = value.end(); + for(Sequence::iterator i = value.begin(); i != end;) { + valueStr.append((*i)->asString(context)); + if(++i != end) + valueStr.append(szComma); + } + valueStr.append(szCloseParen); + } + } + context->trace(label.first()->asString(context),valueStr.getRawBuffer()); + return value; +} + diff --git a/src/functions/FunctionTranslate.cpp b/src/functions/FunctionTranslate.cpp new file mode 100644 index 00000000..a2f61cc8 --- /dev/null +++ b/src/functions/FunctionTranslate.cpp @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionTranslate.cpp,v 1.12 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include + +#include + +const XMLCh FunctionTranslate::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionTranslate::minArgs = 3; +const unsigned int FunctionTranslate::maxArgs = 3; + +/** + * fn:translate($arg as xs:string?, $mapString as xs:string, $transString as xs:string) as xs:string +**/ + +FunctionTranslate::FunctionTranslate(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string?,string,string", args, memMgr) +{ + _src.getStaticType().flags = StaticType::STRING_TYPE; +} + +Sequence FunctionTranslate::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + Sequence str1 = getParamNumber(1,context)->toSequence(context); + + if(str1.isEmpty()) { + return Sequence(context->getItemFactory()->createString(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context), memMgr); + } + + Sequence str2 = getParamNumber(2,context)->toSequence(context); + Sequence str3 = getParamNumber(3,context)->toSequence(context); + + const XMLCh* container = str1.first()->asString(context); + const XMLCh* search = str2.first()->asString(context); + const XMLCh* replace = str3.first()->asString(context); + + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(search)==0) + return Sequence(context->getItemFactory()->createString(container, context), memMgr); + + std::map Change; + const XMLCh* cursorS=search; + const XMLCh* cursorR=replace; + while(*cursorS) + { + XMLInt32 chS=*cursorS; + if(XERCES_CPP_NAMESPACE_QUALIFIER RegxUtil::isHighSurrogate(*cursorS) && + XERCES_CPP_NAMESPACE_QUALIFIER RegxUtil::isLowSurrogate(*(cursorS+1))) + { + chS=XERCES_CPP_NAMESPACE_QUALIFIER RegxUtil::composeFromSurrogate(*cursorS, *(cursorS+1)); + cursorS++; + } + XMLInt32 chR=0; + if(*cursorR) + { + if(XERCES_CPP_NAMESPACE_QUALIFIER RegxUtil::isHighSurrogate(*cursorR) && + XERCES_CPP_NAMESPACE_QUALIFIER RegxUtil::isLowSurrogate(*(cursorR+1))) + { + chR=XERCES_CPP_NAMESPACE_QUALIFIER RegxUtil::composeFromSurrogate(*cursorR, *(cursorR+1)); + cursorR++; + } + else + chR=*cursorR; + } + if(Change.find(chS)==Change.end()) + Change[chS] = chR; + cursorS++; + if(*cursorR) + cursorR++; + } + + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer result(1023, context->getMemoryManager()); + const XMLCh* cursor=container; + while(*cursor) + { + XMLInt32 ch=*cursor; + if(XERCES_CPP_NAMESPACE_QUALIFIER RegxUtil::isHighSurrogate(*cursor) && + XERCES_CPP_NAMESPACE_QUALIFIER RegxUtil::isLowSurrogate(*(cursor+1))) + { + ch=XERCES_CPP_NAMESPACE_QUALIFIER RegxUtil::composeFromSurrogate(*cursor, *(cursor+1)); + cursor++; + } + std::map::iterator it=Change.find(ch); + XMLInt32 newCh=0; + if (it == Change.end()) + newCh=ch; + else + newCh=it->second; + if(newCh!=0) + { + if ( newCh >= 0x10000) + { + XMLCh one, two; + XERCES_CPP_NAMESPACE_QUALIFIER RegxUtil::decomposeToSurrogates(newCh, one, two); + result.append(one); + result.append(two); + } + else + result.append(newCh); + } + cursor++; + } + + return Sequence(context->getItemFactory()->createString(result.getRawBuffer(), context), memMgr); +} diff --git a/src/functions/FunctionTrue.cpp b/src/functions/FunctionTrue.cpp new file mode 100644 index 00000000..9347f049 --- /dev/null +++ b/src/functions/FunctionTrue.cpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionTrue.cpp,v 1.10 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include + +const XMLCh FunctionTrue::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionTrue::minArgs = 0; +const unsigned int FunctionTrue::maxArgs = 0; + +/* + * fn:true() as xs:boolean + */ + +FunctionTrue::FunctionTrue(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "empty()", args, memMgr) +{ + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; +} + +Sequence FunctionTrue::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + return Sequence(context->getItemFactory()->createBoolean(true, context), memMgr); +} diff --git a/src/functions/FunctionUnordered.cpp b/src/functions/FunctionUnordered.cpp new file mode 100644 index 00000000..7256ca39 --- /dev/null +++ b/src/functions/FunctionUnordered.cpp @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionUnordered.cpp,v 1.11 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include + +const XMLCh FunctionUnordered::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionUnordered::minArgs = 1; +const unsigned int FunctionUnordered::maxArgs = 1; + +/** + * fn:unordered($sourceSeq as item()*) as item()* +**/ + +FunctionUnordered::FunctionUnordered(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "item()*", args, memMgr) +{ +} + +ASTNode* FunctionUnordered::staticResolution(StaticContext *context) +{ + AutoNodeSetOrderingReset orderReset(context); + return resolveArguments(context); +} + +ASTNode *FunctionUnordered::staticTyping(StaticContext *context) +{ + _src.clear(); + + ASTNode *result = calculateSRCForArguments(context); + if(result == this) { + _src.getStaticType() = _args.front()->getStaticResolutionContext().getStaticType(); + } + return result; +} + +Result FunctionUnordered::createResult(DynamicContext* context, int flags) const +{ + return getParamNumber(1,context); +} diff --git a/src/functions/FunctionUpperCase.cpp b/src/functions/FunctionUpperCase.cpp new file mode 100644 index 00000000..63ed9f64 --- /dev/null +++ b/src/functions/FunctionUpperCase.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionUpperCase.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +const XMLCh FunctionUpperCase::name[] = { + chLatin_u, chLatin_p, chLatin_p, + chLatin_e, chLatin_r, chDash, + chLatin_c, chLatin_a, chLatin_s, + chLatin_e, chNull +}; +const unsigned int FunctionUpperCase::minArgs = 1; +const unsigned int FunctionUpperCase::maxArgs = 1; + +/* + * fn:upper-case($arg as xs:string?) as xs:string + */ + +FunctionUpperCase::FunctionUpperCase(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "string?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::STRING_TYPE; +} + +Sequence FunctionUpperCase::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager *memMgr = context->getMemoryManager(); + + Item::Ptr arg = getParamNumber(1, context)->next(context); + if(arg.isNull()) { + return Sequence(context->getItemFactory()->createString(XMLUni::fgZeroLenString, context), memMgr); + } + + XMLBuffer buf(1023, context->getMemoryManager()); + Normalizer::upperCase(arg->asString(context), buf); + return Sequence(context->getItemFactory()->createString(buf.getRawBuffer(), context), memMgr); +} diff --git a/src/functions/FunctionYearFromDate.cpp b/src/functions/FunctionYearFromDate.cpp new file mode 100644 index 00000000..914d96fd --- /dev/null +++ b/src/functions/FunctionYearFromDate.cpp @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionYearFromDate.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionYearFromDate::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_y, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionYearFromDate::minArgs = 1; +const unsigned int FunctionYearFromDate::maxArgs = 1; + +/* + * fn:year-from-date($arg as xs:date?) as xs:integer? + */ + +FunctionYearFromDate::FunctionYearFromDate(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "date?", args, memMgr) +{ +} + +ASTNode* FunctionYearFromDate::staticResolution(StaticContext *context) +{ + return resolveArguments(context, /*checkTimezone*/true); +} + +ASTNode *FunctionYearFromDate::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; + return calculateSRCForArguments(context, /*checkTimezone*/true); +} + +Sequence FunctionYearFromDate::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Item::Ptr arg = getParamNumber(1, context)->next(context); + if(arg.isNull()) return Sequence(memMgr); + + return Sequence(((const ATDateOrDerived*)arg.get())->getYears(context), memMgr); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionYearFromDateTime.cpp b/src/functions/FunctionYearFromDateTime.cpp new file mode 100644 index 00000000..2cb9c17f --- /dev/null +++ b/src/functions/FunctionYearFromDateTime.cpp @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionYearFromDateTime.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionYearFromDateTime::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_y, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionYearFromDateTime::minArgs = 1; +const unsigned int FunctionYearFromDateTime::maxArgs = 1; + +/* + * fn:year-from-dateTime($arg as xs:dateTime?) as xs:integer? + */ + +FunctionYearFromDateTime::FunctionYearFromDateTime(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQFunction(name, minArgs, maxArgs, "dateTime?", args, memMgr) +{ +} + +ASTNode* FunctionYearFromDateTime::staticResolution(StaticContext *context) +{ + return resolveArguments(context, /*checkTimezone*/true); +} + +ASTNode *FunctionYearFromDateTime::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; + return calculateSRCForArguments(context, /*checkTimezone*/true); +} + +Sequence FunctionYearFromDateTime::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Item::Ptr arg = getParamNumber(1, context)->next(context); + if(arg.isNull()) return Sequence(memMgr); + + return Sequence(((const ATDateTimeOrDerived*)arg.get())->getYears(context), memMgr); +} + + + + + + + + + + + + + + + + diff --git a/src/functions/FunctionYearsFromDuration.cpp b/src/functions/FunctionYearsFromDuration.cpp new file mode 100644 index 00000000..b55556ff --- /dev/null +++ b/src/functions/FunctionYearsFromDuration.cpp @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionYearsFromDuration.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +const XMLCh FunctionYearsFromDuration::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_y, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionYearsFromDuration::minArgs = 1; +const unsigned int FunctionYearsFromDuration::maxArgs = 1; + +/* + * fn:years-from-duration($arg as xs:duration?) as xs:integer? + */ + +FunctionYearsFromDuration::FunctionYearsFromDuration(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "duration?", args, memMgr) +{ + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; +} + +Sequence FunctionYearsFromDuration::collapseTreeInternal(DynamicContext* context, int flags) const +{ + XPath2MemoryManager* memMgr = context->getMemoryManager(); + + Item::Ptr arg = getParamNumber(1, context)->next(context); + if(arg.isNull()) return Sequence(memMgr); + + return Sequence(((const ATDurationOrDerived*)arg.get())->getYears(context), memMgr); +} + + diff --git a/src/functions/FunctionZeroOrOne.cpp b/src/functions/FunctionZeroOrOne.cpp new file mode 100644 index 00000000..bb3298bf --- /dev/null +++ b/src/functions/FunctionZeroOrOne.cpp @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FunctionZeroOrOne.cpp,v 1.12 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include + +const XMLCh FunctionZeroOrOne::name[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_z, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; +const unsigned int FunctionZeroOrOne::minArgs = 1; +const unsigned int FunctionZeroOrOne::maxArgs = 1; + +/* + * fn:zero-or-one($arg as item()*) as item()? + */ + +FunctionZeroOrOne::FunctionZeroOrOne(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ConstantFoldingFunction(name, minArgs, maxArgs, "item()*", args, memMgr) +{ + // TBD - could do better here - jpcs + _src.getStaticType().flags = StaticType::ITEM_TYPE; +} + +Result FunctionZeroOrOne::createResult(DynamicContext* context, int flags) const +{ + return new ZeroOrOneResult(this, flags); +} + +FunctionZeroOrOne::ZeroOrOneResult::ZeroOrOneResult(const FunctionZeroOrOne *func, int flags) + : ResultImpl(func), + _flags(flags), + _func(func), + _arg(0), + _argNo(0) +{ +} + +Item::Ptr FunctionZeroOrOne::ZeroOrOneResult::next(DynamicContext *context) +{ + if(_arg.isNull()) { + _arg = _func->getParamNumber(1, context); + } + + const Item::Ptr result = _arg->next(context); + ++_argNo; + + if(_argNo == 2 && result != NULLRCP) { + XQThrow(FunctionException, X("FunctionZeroOrOne::ZeroOrOneResult::next"),X("fn:zero-or-one called with a sequence containing more than one item [err:FORG0003]")); + } + + return result; +} + +std::string FunctionZeroOrOne::ZeroOrOneResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/functions/XQUserFunction.cpp b/src/functions/XQUserFunction.cpp new file mode 100644 index 00000000..078e0f2a --- /dev/null +++ b/src/functions/XQUserFunction.cpp @@ -0,0 +1,502 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQUserFunction.cpp,v 1.21 2006/11/01 16:37:20 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQUserFunction.cpp: implementation of the XQUserFunction class. +////////////////////////////////////////////////////////////////////// + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + + /* http://www.w3.org/2005/xquery-local-functions */ +const XMLCh XQUserFunction::XMLChXQueryLocalFunctionsURI[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chColon, XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, + XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, XERCES_CPP_NAMESPACE_QUALIFIER chPeriod, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_3, XERCES_CPP_NAMESPACE_QUALIFIER chPeriod, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_2, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_5, XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_q, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_y, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chDash, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +XQUserFunction::XQUserFunction(const XMLCh* fnName, VectorOfFunctionParameters* params, ASTNode* body, SequenceType* returnValue, StaticContext* ctx) + : m_body(body), + m_szPrefix(NULL), + m_szName(NULL), + m_szSignature(NULL), + m_szFullName(fnName), + m_szURI(NULL), + m_pMemMgr(ctx->getMemoryManager()), + _src(ctx->getMemoryManager()), + m_bCalculatingSRC(false), + m_moduleDocCache(NULL) +{ + int nColon=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::indexOf(fnName,':'); + if(nColon==-1) + { + m_szURI=ctx->getDefaultFuncNS(); + m_szName=m_pMemMgr->getPooledString(fnName); + } + else + { + XMLCh* tempPrefix = new XMLCh[nColon + 1]; + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::subString(tempPrefix, fnName, 0, nColon); + tempPrefix[nColon] = 0; + m_szPrefix = m_pMemMgr->getPooledString(tempPrefix); + delete [] tempPrefix; + m_szURI=ctx->getUriBoundToPrefix(m_szPrefix, this); + m_szName=m_pMemMgr->getPooledString(fnName+nColon+1); + } + if(XPath2Utils::equals(m_szURI, XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXMLURIName) || + XPath2Utils::equals(m_szURI, XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA) || + XPath2Utils::equals(m_szURI, XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_XSI) || + XPath2Utils::equals(m_szURI, XQFunction::XMLChFunctionURI) || + XPath2Utils::equals(m_szURI, FunctionConstructor::XMLChXPath2DatatypesURI)) + { + XQThrow(FunctionException,X("User-defined Function"), X("A user defined function must not be in the namespaces xml, xsd, xsi, fn or xdt [err:XQST0045]")); + } + else if(m_szURI==NULL || *m_szURI==0) + XQThrow(FunctionException,X("User-defined Function"), X("A user defined function must have a non-null namespaces [err:XQST0060]")); + + m_pReturnPattern=returnValue; + m_pParams=params; +} + +const XMLCh* XQUserFunction::getFullName() const +{ + return m_szFullName; +} + +const XMLCh* XQUserFunction::getName() const +{ + return m_szName; +} + +const XMLCh *XQUserFunction::getURI() const +{ + return m_szURI; +} + +unsigned int XQUserFunction::getMinArgs() const +{ + return m_pParams==NULL?0:m_pParams->size(); +} + +unsigned int XQUserFunction::getMaxArgs() const +{ + return m_pParams==NULL?0:m_pParams->size(); +} + +const XQUserFunction::VectorOfFunctionParameters* XQUserFunction::getParams() const +{ + return m_pParams; +} + +const SequenceType* XQUserFunction::getReturnValue() const +{ + return m_pReturnPattern; +} + +void XQUserFunction::setURI(const XMLCh* uri) +{ + m_szURI=uri; +} + +const XMLCh *XQUserFunction::getPrefix() const +{ + return m_szPrefix; +} + +bool XQUserFunction::isExternal() const +{ + return m_body==NULL; +} + +void XQUserFunction::setFunctionBody(ASTNode* value) +{ + m_body=value; +} + +void XQUserFunction::setModuleDocumentCache(DocumentCache* docCache) +{ + m_moduleDocCache=docCache; +} + +const ASTNode *XQUserFunction::getFunctionBody() const +{ + return m_body; +} + +DocumentCache* XQUserFunction::getModuleDocumentCache() const +{ + return m_moduleDocCache; +} + +ASTNode* XQUserFunction::createInstance(const VectorOfASTNodes &args, XPath2MemoryManager* expr) const +{ + XQFunctionEvaluator* fnInstance=new (expr) XQFunctionEvaluator(this, args, expr); + fnInstance->setSignature(m_szSignature); + return fnInstance; +} + +void XQUserFunction::staticResolutionStage1(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + // Resolve the parameter names + if(m_pParams) { + VectorOfFunctionParameters::iterator it; + for (it = m_pParams->begin(); it != m_pParams->end (); ++it) { + (*it)->_uri = context->getUriBoundToPrefix(XPath2NSUtils::getPrefix((*it)->_qname, mm), this); + (*it)->_name = XPath2NSUtils::getLocalName((*it)->_qname); + } + // check for duplicate parameters + for (it = m_pParams->begin(); it != m_pParams->end ()-1; ++it) { + for (VectorOfFunctionParameters::iterator it2 = it+1; it2 != m_pParams->end (); ++it2) { + if(XPath2Utils::equals((*it)->_uri,(*it2)->_uri) && + XPath2Utils::equals((*it)->_name,(*it2)->_name)) { + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer buf; + buf.set(X("User-defined function '")); + buf.append(m_szName); + buf.append(X("' has two parameters named '")); + if((*it)->_uri && *((*it)->_uri)) { + buf.append(X("{")); + buf.append((*it)->_uri); + buf.append(X("}:")); + } + buf.append((*it)->_name); + buf.append(X("' [err:XQST0039]")); + XQThrow(StaticErrorException, X("XQUserFunction::staticResolution"), buf.getRawBuffer()); + } + } + } + } + + // Set up a default StaticType and StaticResolutionContext + if(m_pReturnPattern != NULL) { + if(m_body != NULL) { + m_body = m_pReturnPattern->convertFunctionArg(m_body, context, /*numericfunction*/false, m_pReturnPattern); + } + + const SequenceType::ItemType *itemType = m_pReturnPattern->getItemType(); + if(itemType != 0) { + bool isPrimitive; + itemType->getStaticType(_src.getStaticType(), context, isPrimitive, m_pReturnPattern); + } + else { + _src.getStaticType().flags = 0; + } + } + else { + // Default type is item()* + _src.getStaticType().flags = StaticType::ITEM_TYPE; + } + _src.forceNoFolding(true); +} + +void XQUserFunction::staticResolutionStage2(StaticContext *context) +{ + if(m_body != NULL) { + m_body = m_body->staticResolution(context); + } +} + +void XQUserFunction::staticTyping(StaticContext *context) +{ + // Avoid inifinite recursion for recursive functions + if(m_bCalculatingSRC) return; + m_bCalculatingSRC = true; + + XPath2MemoryManager *mm = context->getMemoryManager(); + + // define the new variables in a new scope and assign them the proper values + VariableTypeStore* varStore=context->getVariableTypeStore(); + varStore->addLocalScope(); + + // Declare the parameters + if(m_pParams) { + VectorOfFunctionParameters::iterator it; + for(it = m_pParams->begin(); it != m_pParams->end (); ++it) { + bool isPrimitive; + (*it)->m_pType->getItemType()->getStaticType((*it)->_src.getStaticType(), context, isPrimitive, (*it)->m_pType); + varStore->declareVar((*it)->_uri, (*it)->_name, (*it)->_src); + } + } + + StaticResolutionContext m_src(mm); + if(m_body != NULL) { + m_body = m_body->staticTyping(context); + m_src.copy(m_body->getStaticResolutionContext()); + } + + // Remove the parameter variables from the stored StaticResolutionContext + if(m_pParams) { + for(VectorOfFunctionParameters::iterator it = m_pParams->begin(); it != m_pParams->end (); ++it) { + if(!m_src.removeVariable((*it)->_uri, (*it)->_name)) { + // The parameter isn't used, so set it to null, so that we don't bother to evaluate it + (*it)->_qname = 0; + } + } + } + + // Swap m_src with our StaticResolutionContext + _src.clear(); + _src.copy(m_src); + + varStore->removeScope(); + + m_bCalculatingSRC = false; +} + +void XQUserFunction::setSignature(const XMLCh* signature) +{ + m_szSignature=m_pMemMgr->getPooledString(signature); +} + +const XMLCh* XQUserFunction::getSignature() +{ + return m_szSignature; +} + +/////////////////////////////////////////////////////////////// +// XQUserFunction::XQFunctionEvaluator + +typedef std::pair ParamBinding; +typedef std::vector VectorOfParamBindings; + +XQUserFunction::XQFunctionEvaluator::XQFunctionEvaluator(const XQUserFunction* funcDef, const VectorOfASTNodes& args, XPath2MemoryManager* expr) + : XQFunction(funcDef->getName(),0,UNLIMITED,"",args,expr) +{ + setType(ASTNode::USER_FUNCTION); + m_pFuncDef = funcDef; + _fURI = funcDef->getURI(); +} + +Result XQUserFunction::XQFunctionEvaluator::createResult(DynamicContext* context, int flags) const +{ + return new FunctionEvaluatorResult(this); +} + +ASTNode* XQUserFunction::XQFunctionEvaluator::staticResolution(StaticContext* context) +{ + unsigned int nDefinedArgs = m_pFuncDef->m_pParams ? m_pFuncDef->m_pParams->size() : 0; + if(_args.size() != nDefinedArgs) { + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer buf; + buf.set(X("Function '")); + buf.append(m_pFuncDef->m_szName); + buf.append(X("' has been called with a number of arguments that doesn't match the function signature")); + XQThrow(FunctionException,X("User-defined Function"), buf.getRawBuffer()); + } + + if(nDefinedArgs > 0) { + VectorOfASTNodes::iterator argIt = _args.begin(); + for(VectorOfFunctionParameters::iterator defIt = m_pFuncDef->m_pParams->begin(); + defIt != m_pFuncDef->m_pParams->end() && argIt != _args.end(); ++defIt, ++argIt) { + if((*defIt)->_qname || context->isDebuggingEnabled()) { + *argIt = (*defIt)->m_pType->convertFunctionArg(*argIt, context, /*numericfunction*/false, *argIt); + *argIt = (*argIt)->staticResolution(context); + } + else { + // Don't resolve the argument, since it isn't used by the function body, but at least run staticResolution to catch static errors + (*argIt)->staticResolution(context); + } + } + } + + return this; +} + +ASTNode* XQUserFunction::XQFunctionEvaluator::staticTyping(StaticContext* context) +{ + _src.clear(); + + if(m_pFuncDef->m_body) { + // See if we can work out a better return type for the user defined function. + // This call will just return if staticTyping is in our call stack. + const_cast(m_pFuncDef)->staticTyping(context); + _src.copy(m_pFuncDef->_src); + } + + unsigned int nDefinedArgs = m_pFuncDef->m_pParams ? m_pFuncDef->m_pParams->size() : 0; + if(nDefinedArgs > 0) { + VectorOfASTNodes::iterator argIt = _args.begin(); + for(VectorOfFunctionParameters::iterator defIt = m_pFuncDef->m_pParams->begin(); + defIt != m_pFuncDef->m_pParams->end() && argIt != _args.end(); ++defIt, ++argIt) { + if((*defIt)->_qname || context->isDebuggingEnabled()) { + *argIt = (*argIt)->staticTyping(context); + _src.add((*argIt)->getStaticResolutionContext()); + } + else { + // Don't resolve the argument, since it isn't used by the function body, but at least run staticResolution to catch static errors + (*argIt)->staticTyping(context); + } + } + } + + // don't constant fold if it's an imported or an external function + if(m_pFuncDef->m_moduleDocCache==NULL && m_pFuncDef->m_body!=0 && !_src.isUsed()) { + return constantFold(context); + } + return this; +} + +XQUserFunction::XQFunctionEvaluator::FunctionEvaluatorResult::FunctionEvaluatorResult(const XQFunctionEvaluator *di) + : ResultImpl(di), + _di(di), + _toDo(true), + _scope(0), + _result(0), + _scopeRemoved(false) +{ +} + +Item::Ptr XQUserFunction::XQFunctionEvaluator::FunctionEvaluatorResult::next(DynamicContext *context) +{ + context->testInterrupt(); + VariableStore* varStore=context->getVariableStore(); + Scope *oldScope = varStore->getScopeState(); + + DocumentCache* docCache=_di->getFunctionDefinition()->getModuleDocumentCache(); + DocumentCache* origDocCache=NULL; + if(docCache!=NULL) + { + origDocCache=const_cast(context->getDocumentCache()); + context->setDocumentCache(docCache); + } + if(_toDo) { + _toDo = false; + + int nDefinedArgs = _di->getFunctionDefinition()->getParams() ? _di->getFunctionDefinition()->getParams()->size() : 0; + + VectorOfParamBindings varValues; + if(nDefinedArgs > 0) { + // the variables should be evaluated in the calling context + // (before the VariableStore::addLocalScope call: after this call, the variables that can be seen are only the local ones) + int index = 0; + for(VectorOfFunctionParameters::const_iterator it = _di->getFunctionDefinition()->getParams()->begin(); + it != _di->getFunctionDefinition()->getParams()->end(); ++it, ++index) { + if((*it)->_qname || context->isDebuggingEnabled()) { + Sequence argValue(_di->getArguments()[index]->collapseTree(context)->toSequence(context)); + varValues.push_back(ParamBinding(*it, argValue)); + } + else { + // Skip evaluation of the parameter, since it isn't used, and debugging isn't enabled + } + } + } + // define the new variables in a new scope and assign them the proper values + varStore->addLocalScope(); + for(VectorOfParamBindings::iterator it2 = varValues.begin(); it2 != varValues.end(); ++it2) { + varStore->declareVar(it2->first->_uri, it2->first->_name, it2->second, context); + } + + if(_di->getFunctionDefinition()->getFunctionBody() == NULL) { + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer buf; + buf.set(X("External function '")); + buf.append(_di->getFunctionDefinition()->getName()); + buf.append(X("' has not been bound to an implementation")); + XQThrow(FunctionException,X("User-defined Function"), buf.getRawBuffer()); + } + + _result = _di->getFunctionDefinition()->getFunctionBody()->collapseTree(context); + } + else if(_scope != 0) { + varStore->setScopeState(_scope); + } + + Item::Ptr item = _result->next(context); + + if(!_scopeRemoved) { + if(item == NULLRCP) { + varStore->removeScope(); + _scope = 0; + } + else { + _scope = varStore->getScopeState(); + varStore->setScopeState(oldScope); + } + } + + // if we had to switch document cache, check that the returned types are known also in the original context; if not, upgrade them to the base type + if(origDocCache!=NULL) + { + if(item!=NULLRCP && !origDocCache->isTypeDefined(item->getTypeURI(), item->getTypeName())) + { + if(item->isNode()) + { + Node::Ptr node=item; + // TODO: change the annotation in the DOM elements and attributes + } + else + { + AnyAtomicType::Ptr atom=item; + const XMLCh* uri=atom->getTypeURI(), *name=atom->getTypeName(); + while(!origDocCache->isTypeDefined(uri, name)) + { + XERCES_CPP_NAMESPACE_QUALIFIER DatatypeValidator* pDV=docCache->getDatatypeValidator(uri, name); + assert(pDV!=NULL); + XERCES_CPP_NAMESPACE_QUALIFIER DatatypeValidator* pBaseDV=pDV->getBaseValidator(); + if(pBaseDV==NULL) + break; + uri=pBaseDV->getTypeUri(); + name=pBaseDV->getTypeLocalName(); + } + item=context->getItemFactory()->createDerivedFromAtomicType(uri, name, atom->asString(context), context); + } + } + context->setDocumentCache(origDocCache); + } + return item; +} + +std::string XQUserFunction::XQFunctionEvaluator::FunctionEvaluatorResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/items/ATDurationOrDerived.cpp b/src/items/ATDurationOrDerived.cpp new file mode 100644 index 00000000..b79d5873 --- /dev/null +++ b/src/items/ATDurationOrDerived.cpp @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATDurationOrDerived.cpp,v 1.10 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +/* dayTimeDuration */ +const XMLCh ATDurationOrDerived::fgDT_DAYTIMEDURATION[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_y, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_D, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +/* + +*/ + +const XMLCh ATDurationOrDerived::pattern_DT_DAYTIMEDURATION[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chOpenSquare, XERCES_CPP_NAMESPACE_QUALIFIER chCaret, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_Y, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_M, XERCES_CPP_NAMESPACE_QUALIFIER chCloseSquare, XERCES_CPP_NAMESPACE_QUALIFIER chAsterisk, + XERCES_CPP_NAMESPACE_QUALIFIER chOpenSquare, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_D, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T, + XERCES_CPP_NAMESPACE_QUALIFIER chCloseSquare,XERCES_CPP_NAMESPACE_QUALIFIER chPeriod, XERCES_CPP_NAMESPACE_QUALIFIER chAsterisk, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +/* yearMonthDuration */ +const XMLCh ATDurationOrDerived::fgDT_YEARMONTHDURATION[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_y, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_M, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_D, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +/* + +*/ + +const XMLCh ATDurationOrDerived::pattern_DT_YEARMONTHDURATION[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chOpenSquare, XERCES_CPP_NAMESPACE_QUALIFIER chCaret, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_D, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T, XERCES_CPP_NAMESPACE_QUALIFIER chCloseSquare, XERCES_CPP_NAMESPACE_QUALIFIER chAsterisk, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; diff --git a/src/items/ATQNameConstructor.cpp b/src/items/ATQNameConstructor.cpp new file mode 100644 index 00000000..9326a670 --- /dev/null +++ b/src/items/ATQNameConstructor.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATQNameConstructor.cpp,v 1.9 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include + +#include "../config/xqilla_config.h" +#include +#include +#include +#include + +#include + +ATQNameConstructor::ATQNameConstructor(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* uri, + const XMLCh* prefix, + const XMLCh* localname) + : _typeURI(typeURI), + _typeName(typeName), + _uri(uri), + _prefix(prefix), + _localname(localname) +{ + _sType.flags = StaticType::QNAME_TYPE; +} + +Item::Ptr ATQNameConstructor::createItem(const DynamicContext* context) const +{ + return new ATQNameOrDerivedImpl(_typeURI, _typeName, _uri, _prefix, _localname, context); +} + +std::string ATQNameConstructor::asString(const DynamicContext* context) const +{ + std::ostringstream s; + + s << ""; + + return s.str(); +} diff --git a/src/items/ATUntypedAtomic.cpp b/src/items/ATUntypedAtomic.cpp new file mode 100644 index 00000000..151bc7b0 --- /dev/null +++ b/src/items/ATUntypedAtomic.cpp @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATUntypedAtomic.cpp,v 1.10 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +/* untypedAtomic */ +const XMLCh ATUntypedAtomic::fgDT_UNTYPEDATOMIC[] = { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_y, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_A, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + diff --git a/src/items/AnyAtomicType.cpp b/src/items/AnyAtomicType.cpp new file mode 100644 index 00000000..b5c80d44 --- /dev/null +++ b/src/items/AnyAtomicType.cpp @@ -0,0 +1,312 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: AnyAtomicType.cpp,v 1.15 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include "../exceptions/InvalidLexicalSpaceException.hpp" +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +/* anyAtomicType */ +const XMLCh AnyAtomicType::fgDT_ANYATOMICTYPE[]= +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_y, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_A, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_y, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +/* http://www.w3.org/2001/XMLSchema,anyAtomicType */ +const XMLCh AnyAtomicType::fgDT_ANYATOMICTYPE_XERCESHASH[]= +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chColon, XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, + XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, XERCES_CPP_NAMESPACE_QUALIFIER chPeriod, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_w, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_3, XERCES_CPP_NAMESPACE_QUALIFIER chPeriod, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_2, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0, + XERCES_CPP_NAMESPACE_QUALIFIER chDigit_1, XERCES_CPP_NAMESPACE_QUALIFIER chForwardSlash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_X, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_M, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_L, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_S, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_h, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chComma, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_y, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_A, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_y, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +const AnyAtomicType::CastTable AnyAtomicType::staticCastTable; + +/* isAtomicValue from Item */ +bool AnyAtomicType::isAtomicValue() const { + return true; +} + +/* isNode from Item */ +bool AnyAtomicType::isNode() const { + return !isAtomicValue(); +} + +/* is this type numeric? Return false by default */ +bool AnyAtomicType::isNumericValue() const { + return false; +} + +/* is this type date or time based? Return false by default */ +bool AnyAtomicType::isDateOrTimeTypeValue() const { + return false; +} + +/* Get the namespace uri of the primitive type (basic type) of this type */ +const XMLCh* AnyAtomicType::getPrimitiveTypeURI() const{ + return XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA; +} + +AnyAtomicType::Ptr AnyAtomicType::castAs(const XMLCh* targetTypeURI, const XMLCh* targetTypeName, const DynamicContext* context) const { + bool isPrimitive; + AtomicObjectType targetIndex = context->getItemFactory()->getPrimitiveTypeIndex(targetTypeURI, targetTypeName, isPrimitive); + + if(!castIsSupported(targetIndex, context)) { + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer buffer(1023, context->getMemoryManager()); + buffer.set(X("Casting from {")); + buffer.append(this->getTypeURI()); + buffer.append(X("}")); + buffer.append(this->getTypeName()); + buffer.append(X(" to {")); + buffer.append(targetTypeURI); + buffer.append(X("}")); + buffer.append(targetTypeName); + buffer.append(X(" is not supported [err:XPTY0004]")); + + XQThrow2(XPath2TypeCastException, X("AnyAtomicType::castAs"), buffer.getRawBuffer()); + } + + try { + return this->castAsInternal(targetIndex, targetTypeURI, targetTypeName, context); + } catch (TypeNotFoundException &e) { + XQThrow2(XPath2TypeCastException, X("AnyAtomicType::castAs"), e.getError()); + } catch (InvalidLexicalSpaceException &e) { + if(this->getPrimitiveTypeIndex() == UNTYPED_ATOMIC || + this->getPrimitiveTypeIndex() == ANY_SIMPLE_TYPE || + this->getPrimitiveTypeIndex() == STRING) { + XQThrow2(XPath2TypeCastException, X("AnyAtomicType::castAs"), X("Invalid lexical value [err:FORG0001]")); + } else if (context->isTypeOrDerivedFromType(targetTypeURI, targetTypeName, this->getPrimitiveTypeURI(), this->getPrimitiveTypeName())) { + XQThrow2(XPath2TypeCastException, X("AnyAtomicType::castAs"), X("Value does not conform to facets [err:FORG0001]")); + } else { + XQThrow2(XPath2TypeCastException, X("AnyAtomicType::castAs"), e.getError()); // should never be here, in theory + } + } catch (NamespaceLookupException &e) { + XQThrow2(XPath2TypeCastException, X("AnyAtomicType::castAs"), e.getError()); + } + +} + +AnyAtomicType::Ptr AnyAtomicType::castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetTypeURI, const XMLCh* targetTypeName, const DynamicContext* context) const { + return context->getItemFactory()->createDerivedFromAtomicType(targetIndex, targetTypeURI, targetTypeName, this->asString(context), context); +} + +/* Test if this type can be cast to the target type */ +bool AnyAtomicType::castable(const XMLCh* targetTypeURI, const XMLCh* targetTypeName, const DynamicContext* context) const { + bool isPrimitive; + AtomicObjectType targetIndex = context->getItemFactory()->getPrimitiveTypeIndex(targetTypeURI, targetTypeName, isPrimitive); + + if(!castIsSupported(targetIndex, context)) { + return false; + } + // validate the data by calling castAs (can't use checkInstance) + try { + this->castAsInternal(targetIndex, targetTypeURI, targetTypeName, context); + } catch (IllegalArgumentException &e) { + return false; + } catch (XPath2TypeCastException &e) { + return false; + } catch (TypeNotFoundException &e) { + return false; + } catch (InvalidLexicalSpaceException &e) { + return false; + } catch (NamespaceLookupException &e) { + return false; + } + return true; +} + +/* Returns true if this typeName and uri match the given typeName and uri */ +bool AnyAtomicType::isOfType(const XMLCh* targetTypeURI, const XMLCh* targetTypeName, const DynamicContext* context) const { + return (XPath2Utils::equals(targetTypeName, this->getTypeName())) && + (XPath2Utils::equals(targetTypeURI, this->getTypeURI())); +} + +/* Returns true if this typeName and uri match the given type name and uri, + * or if any of this type's parents match the given type name and uri */ +bool AnyAtomicType::isInstanceOfType(const XMLCh* targetTypeURI, const XMLCh* targetTypeName, const StaticContext* context) const { + return context->isTypeOrDerivedFromType(this->getTypeURI(), this->getTypeName(), targetTypeURI, targetTypeName); +} + + +/** + * Returns true if + * (a) both the input type and the target type are built-in schema types and + * cast is supported for the combination. + * (b) cast is supported if the input type is a derived atomic type and the + * target type is a supertype of the input type + * (c) cast is supported if the target type is a derived atomic type and the + * input type is xs:string, xs:anySimpleType, or a supertype of the + * target type. + * (d) If a primitive type P1 can be cast into a primitive type P2, then any + * subtype of P1 can be cast into any subtype of P2 + **/ +bool AnyAtomicType::castIsSupported(AtomicObjectType targetIndex, const DynamicContext* context) const { + return staticCastTable.getCell(getPrimitiveTypeIndex(), targetIndex); +} + + +/////////////////// +// methods from // +// CastTable // +/////////////////// + +/* This is the table we will mimic, but we will make it enum safe :-) + * + uA str flt dbl dec int dur yMD dTD dT tim dat gYM gYr gMD gDay gMon bol b64 hxB aURI QN NOT +uA { { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 }, +str { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, +flt { 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, +dbl { 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, +dec { 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, +int { 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, +dur { 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, +yMD { 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, +dTD { 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, +dT { 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, +tim { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, +dat { 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }, +gYM { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, +gYr { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, +gMD { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 }, +gDay { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, +gMon { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, +bool { 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 }, +b64 { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 }, +hxB { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 }, +aURI { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, +QN, { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }, +NOT { 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 } }; +*/ + + +AnyAtomicType::CastTable::CastTable() { + // initialize table to allow casting only between same types + for(int j = 0; j<(int)AnyAtomicType::NumAtomicObjectTypes; j++) + { + for(int k = 0; k<(int)AnyAtomicType::NumAtomicObjectTypes; k++) + { + staticCastTable[j][k] = false; + if(k==AnyAtomicType::ANY_SIMPLE_TYPE) + continue; + staticCastTable[AnyAtomicType::STRING][k] = true; // strings can be cast to anything + if(k!=AnyAtomicType::NOTATION && k!=AnyAtomicType::QNAME) + staticCastTable[AnyAtomicType::UNTYPED_ATOMIC][k] = true; // untypedAtomic can be cast to almost anything + } + staticCastTable[j][j] = true; // you can always cast something to itself + // if the source is not QNAME, allow casting to STRING and UNTYPED_ATOMIC + if(j==AnyAtomicType::QNAME || j==AnyAtomicType::ANY_SIMPLE_TYPE) + continue; + staticCastTable[j][AnyAtomicType::STRING] = true; // almost anything can be cast to string + staticCastTable[j][AnyAtomicType::UNTYPED_ATOMIC] = true; // almost anything can be cast to untypedAtomic + } + + // finally, add special casting rules + staticCastTable[AnyAtomicType::FLOAT][AnyAtomicType::DOUBLE] = true; + staticCastTable[AnyAtomicType::DOUBLE][AnyAtomicType::FLOAT] = true; + + staticCastTable[AnyAtomicType::FLOAT][AnyAtomicType::DECIMAL] = true; + staticCastTable[AnyAtomicType::DECIMAL][AnyAtomicType::FLOAT] = true; + + staticCastTable[AnyAtomicType::FLOAT][AnyAtomicType::BOOLEAN] = true; + staticCastTable[AnyAtomicType::BOOLEAN][AnyAtomicType::FLOAT] = true; + + staticCastTable[AnyAtomicType::DOUBLE][AnyAtomicType::DECIMAL] = true; + staticCastTable[AnyAtomicType::DECIMAL][AnyAtomicType::DOUBLE] = true; + + staticCastTable[AnyAtomicType::DOUBLE][AnyAtomicType::BOOLEAN] = true; + staticCastTable[AnyAtomicType::BOOLEAN][AnyAtomicType::DOUBLE] = true; + + staticCastTable[AnyAtomicType::DECIMAL][AnyAtomicType::BOOLEAN] = true; + staticCastTable[AnyAtomicType::BOOLEAN][AnyAtomicType::DECIMAL] = true; + + staticCastTable[AnyAtomicType::DURATION][AnyAtomicType::YEAR_MONTH_DURATION] = true; + staticCastTable[AnyAtomicType::YEAR_MONTH_DURATION][AnyAtomicType::DURATION] = true; + + staticCastTable[AnyAtomicType::DURATION][AnyAtomicType::DAY_TIME_DURATION] = true; + staticCastTable[AnyAtomicType::DAY_TIME_DURATION][AnyAtomicType::DURATION] = true; + + staticCastTable[AnyAtomicType::DAY_TIME_DURATION][AnyAtomicType::YEAR_MONTH_DURATION] = true; + staticCastTable[AnyAtomicType::YEAR_MONTH_DURATION][AnyAtomicType::DAY_TIME_DURATION] = true; + + staticCastTable[AnyAtomicType::DURATION][AnyAtomicType::DAY_TIME_DURATION] = true; + staticCastTable[AnyAtomicType::DAY_TIME_DURATION][AnyAtomicType::DURATION] = true; + + staticCastTable[AnyAtomicType::DATE_TIME][AnyAtomicType::DATE] = true; + staticCastTable[AnyAtomicType::DATE][AnyAtomicType::DATE_TIME] = true; + + staticCastTable[AnyAtomicType::DATE_TIME][AnyAtomicType::TIME] = true; + + staticCastTable[AnyAtomicType::DATE_TIME][AnyAtomicType::G_YEAR_MONTH] = true; + staticCastTable[AnyAtomicType::DATE_TIME][AnyAtomicType::G_YEAR] = true; + staticCastTable[AnyAtomicType::DATE_TIME][AnyAtomicType::G_MONTH_DAY] = true; + staticCastTable[AnyAtomicType::DATE_TIME][AnyAtomicType::G_DAY] = true; + staticCastTable[AnyAtomicType::DATE_TIME][AnyAtomicType::G_MONTH] = true; + + staticCastTable[AnyAtomicType::DATE][AnyAtomicType::G_YEAR_MONTH] = true; + staticCastTable[AnyAtomicType::DATE][AnyAtomicType::G_YEAR] = true; + staticCastTable[AnyAtomicType::DATE][AnyAtomicType::G_MONTH_DAY] = true; + staticCastTable[AnyAtomicType::DATE][AnyAtomicType::G_DAY] = true; + staticCastTable[AnyAtomicType::DATE][AnyAtomicType::G_MONTH] = true; + + staticCastTable[AnyAtomicType::BASE_64_BINARY][AnyAtomicType::HEX_BINARY] = true; + staticCastTable[AnyAtomicType::HEX_BINARY][AnyAtomicType::BASE_64_BINARY] = true; + + staticCastTable[AnyAtomicType::QNAME][AnyAtomicType::UNTYPED_ATOMIC] = true; + staticCastTable[AnyAtomicType::QNAME][AnyAtomicType::STRING] = true; +/* debug output + * for(int i = 0; i<(int)AnyAtomicType::NumAtomicObjectTypes; i++) { + for(int j = 0; j<(int)AnyAtomicType::NumAtomicObjectTypes; j++) { + cerr << " " << staticCastTable[i][j] << ","< + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include + +AnyAtomicTypeConstructor::AnyAtomicTypeConstructor(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + AnyAtomicType::AtomicObjectType primitiveType) + : _typeURI(typeURI), + _typeName(typeName), + _value(value), + _primitiveType(primitiveType) +{ + _sType.flags = StaticType::getFlagsFor(primitiveType); +} + +Item::Ptr AnyAtomicTypeConstructor::createItem(const DynamicContext* context) const +{ + return context->getItemFactory()->createDerivedFromAtomicType(_primitiveType, _typeURI, _typeName, _value, context); +} + +std::string AnyAtomicTypeConstructor::asString(const DynamicContext* context) const +{ + std::ostringstream s; + + s << ""; + + return s.str(); +} diff --git a/src/items/DatatypeFactory.cpp b/src/items/DatatypeFactory.cpp new file mode 100644 index 00000000..f94c28b9 --- /dev/null +++ b/src/items/DatatypeFactory.cpp @@ -0,0 +1,144 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DatatypeFactory.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include "../exceptions/InvalidLexicalSpaceException.hpp" +#include +#include +#include +#include +#include + +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +DatatypeFactory::DatatypeFactory(const DocumentCache* dc, DatatypeValidator *baseValidator) + : fBaseValidator(baseValidator), + fDocumentCache(dc) +{ +} + +DatatypeFactory::~DatatypeFactory() +{ +} + +AnyAtomicType::Ptr DatatypeFactory::createInstance(const XMLCh* value, + const DynamicContext* context) const +{ + try { + fBaseValidator->validate(value, 0, context->getMemoryManager()); + } catch (XMLException &e) { + XQThrow2(InvalidLexicalSpaceException, X("DatatypeFactory::createInstance"), e.getMessage()); + } + + return createInstanceNoCheck(getPrimitiveTypeURI(), getPrimitiveTypeName(), value, context); +} + +AnyAtomicType::Ptr DatatypeFactory::createInstance(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + const DynamicContext* context) const +{ + DatatypeValidator* validator = + const_cast(fDocumentCache->getDatatypeValidator(typeURI, typeName)); + + if(!validator) { + XMLBuffer buf(1023, context->getMemoryManager()); + buf.append(X("Type ")); + buf.append(typeURI); + buf.append(chColon); + buf.append(typeName); + buf.append(X(" not found")); + XQThrow2(TypeNotFoundException, X("DatatypeFactoryTemplate::createInstance"), buf.getRawBuffer()); + } + + if(validator->getWSFacet()==DatatypeValidator::COLLAPSE && !XMLString::isWSCollapsed(value)) + { + XMLCh* tempValue=XMLString::replicate(value, context->getMemoryManager()); + XMLString::collapseWS(tempValue, context->getMemoryManager()); + value=tempValue; + } + if(validator->getWSFacet()==DatatypeValidator::REPLACE && !XMLString::isWSReplaced(value)) + { + XMLCh* tempValue=XMLString::replicate(value, context->getMemoryManager()); + XMLString::replaceWS(tempValue, context->getMemoryManager()); + value=tempValue; + } + + try { + const XMLCh* valueToValidate=value; + if(validator->getType()==DatatypeValidator::NOTATION) + { + const XMLCh* localPart = XPath2NSUtils::getLocalName(value); + const XMLCh* prefix = XPath2NSUtils::getPrefix(value, context->getMemoryManager()); + const XMLCh* uriStr = (prefix && *prefix) ? context->getUriBoundToPrefix(prefix, 0) : XMLUni::fgZeroLenString; + XMLCh szColon[]={ chColon, chNull }; + valueToValidate=XPath2Utils::concatStrings(uriStr, szColon, localPart, context->getMemoryManager()); + } + validator->validate(valueToValidate, 0, context->getMemoryManager()); + } catch (XMLException &e) { + XMLBuffer buf(1023, context->getMemoryManager()); + buf.append(e.getMessage()); + buf.append(X(" [err:FORG0001]")); + XQThrow2(InvalidLexicalSpaceException, X("DatatypeFactory::createInstance"), buf.getRawBuffer()); + } + + return createInstanceNoCheck(typeURI, typeName, value, context); +} + +bool DatatypeFactory::checkInstance(const XMLCh* value, + MemoryManager *mm) const { + try { + fBaseValidator->validate(value, 0, mm); + } catch (XMLException &e) { + return false; + } + + return true; +} + +bool DatatypeFactory::checkInstance(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + MemoryManager *mm) const { + + DatatypeValidator* validator = + const_cast(fDocumentCache->getDatatypeValidator(typeURI, typeName)); + + if(!validator) { + XMLBuffer buf(1023, mm); + buf.append(X("Type ")); + buf.append(typeURI); + buf.append(chColon); + buf.append(typeName); + buf.append(X(" not found")); + XQThrow2(TypeNotFoundException, X("DatatypeFactoryTemplate::createInstance"), buf.getRawBuffer()); + } + + try { + validator->validate(value, 0, mm); + } catch (XMLException &e) { + return false; + } + + return true; +} diff --git a/src/items/DatatypeFactoryTemplate.hpp b/src/items/DatatypeFactoryTemplate.hpp new file mode 100644 index 00000000..1d2d7653 --- /dev/null +++ b/src/items/DatatypeFactoryTemplate.hpp @@ -0,0 +1,156 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DatatypeFactoryTemplate.hpp,v 1.8 2006/11/01 16:37:20 jpcs Exp $ + */ + +/* + Factory template class for Datatypes +*/ + +#ifndef _DatatypeFactoryTemplate_HPP +#define _DatatypeFactoryTemplate_HPP + +#include +#include +#include +#include +#include +#include "impl/ATStringOrDerivedImpl.hpp" + +class AnyAtomicType; + +///used to facilitate the creation of datatypes +template +class DatatypeFactoryTemplate : public DatatypeFactory +{ +public: + DatatypeFactoryTemplate(const DocumentCache* dc) + : DatatypeFactory(dc, const_cast + (dc->getDatatypeValidator(getPrimitiveTypeURI(), getPrimitiveTypeName()))) {} + + AnyAtomicType::Ptr createInstanceNoCheck(const XMLCh* typeURI, + const XMLCh* typeName, + const XMLCh* value, + const DynamicContext* context) const { + return new TYPE(typeURI, typeName, value, context); + } + + AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const + { + return TYPE::getTypeIndex(); + } + + virtual const XMLCh* getPrimitiveTypeURI() const { + return XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA; + } + + const XMLCh* getPrimitiveTypeName() const { + return TYPE::getPrimitiveName(); + } + +protected: + DatatypeFactoryTemplate(const DocumentCache* dc, XERCES_CPP_NAMESPACE_QUALIFIER DatatypeValidator *val) + : DatatypeFactory(dc, val) {} +}; + +template +class StringDatatypeFactory : public DatatypeFactoryTemplate +{ +public: + StringDatatypeFactory(const DocumentCache* dc) + : DatatypeFactoryTemplate(dc) {} + + virtual const XMLCh* getPrimitiveTypeURI() const { + return XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA; + } + + const XMLCh* getPrimitiveTypeName() const { + return TYPE::getPrimitiveName(); + } + + AnyAtomicType::Ptr createInstance(const XMLCh* value, + const DynamicContext* context) const + { + return createInstanceNoCheck(getPrimitiveTypeURI(), getPrimitiveTypeName(), value, context); + } + + bool checkInstance(const XMLCh* value, + const StaticContext* context) const + { + return true; + } + +protected: + StringDatatypeFactory(const DocumentCache* dc, XERCES_CPP_NAMESPACE_QUALIFIER DatatypeValidator *val) + : DatatypeFactoryTemplate(dc, val) {} +}; + +template +class UntypedAtomicDatatypeFactory : public StringDatatypeFactory +{ +public: + UntypedAtomicDatatypeFactory(const DocumentCache* dc) + : StringDatatypeFactory(dc, const_cast + (dc->getDatatypeValidator(getPrimitiveTypeURI(), getPrimitiveTypeName()))) {} + + virtual const XMLCh* getPrimitiveTypeURI() const { + return FunctionConstructor::XMLChXPath2DatatypesURI; + } + + const XMLCh* getPrimitiveTypeName() const { + return TYPE::getPrimitiveName(); + } + +}; + +template +class DayTimeDurationDatatypeFactory : public DatatypeFactoryTemplate +{ +public: + DayTimeDurationDatatypeFactory(const DocumentCache* dc) + : DatatypeFactoryTemplate(dc) {} + + AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const + { + return AnyAtomicType::DAY_TIME_DURATION; + } + + virtual const XMLCh* getPrimitiveTypeURI() const { + return FunctionConstructor::XMLChXPath2DatatypesURI; + } + + const XMLCh* getPrimitiveTypeName() const { + return ATDurationOrDerived::fgDT_DAYTIMEDURATION; + } +}; + +template +class YearMonthDurationDatatypeFactory : public DatatypeFactoryTemplate +{ +public: + YearMonthDurationDatatypeFactory(const DocumentCache* dc) + : DatatypeFactoryTemplate(dc) {} + + AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const + { + return AnyAtomicType::YEAR_MONTH_DURATION; + } + + virtual const XMLCh* getPrimitiveTypeURI() const { + return FunctionConstructor::XMLChXPath2DatatypesURI; + } + + const XMLCh* getPrimitiveTypeName() const { + return ATDurationOrDerived::fgDT_YEARMONTHDURATION; + } +}; + +#endif // _DatatypeFactoryTemplate_HPP diff --git a/src/items/DatatypeLookup.cpp b/src/items/DatatypeLookup.cpp new file mode 100644 index 00000000..d3c38072 --- /dev/null +++ b/src/items/DatatypeLookup.cpp @@ -0,0 +1,381 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DatatypeLookup.cpp,v 1.14 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include "DatatypeFactoryTemplate.hpp" +#include +#include "impl/ATAnyURIOrDerivedImpl.hpp" +#include "impl/ATAnySimpleTypeImpl.hpp" +#include "impl/ATBase64BinaryOrDerivedImpl.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "impl/ATHexBinaryOrDerivedImpl.hpp" +#include "impl/ATNotationOrDerivedImpl.hpp" +#include +#include "impl/ATStringOrDerivedImpl.hpp" +#include +#include "impl/ATUntypedAtomicImpl.hpp" +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +DatatypeLookup::DatatypeLookup(const DocumentCache* dc, MemoryManager* memMgr) : + fDatatypeTable(30, false, memMgr), + fDocumentCache(dc), + fMemMgr(memMgr) +{ + // create a xs:anySimpleType + anySimpleType_ = new (fMemMgr) DatatypeFactoryTemplate(fDocumentCache); + insertDatatype(anySimpleType_); + + // create a xs:anyURI + anyURI_ = new (fMemMgr) DatatypeFactoryTemplate(fDocumentCache); + insertDatatype(anyURI_); + + // create a xs:base64Binary + base64Binary_ = new (fMemMgr) DatatypeFactoryTemplate(fDocumentCache); + insertDatatype(base64Binary_); + + // create a xs:boolean + boolean_ = new (fMemMgr) DatatypeFactoryTemplate(fDocumentCache); + insertDatatype(boolean_); + + // create a xs:date + date_ = new (fMemMgr) DatatypeFactoryTemplate(fDocumentCache); + insertDatatype(date_); + + // create a xs:dateTime + dateTime_ = new (fMemMgr) DatatypeFactoryTemplate(fDocumentCache); + insertDatatype(dateTime_); + + // create a xdt:dayTimeDuration + dayTimeDuration_ = new (fMemMgr) DayTimeDurationDatatypeFactory(fDocumentCache); + insertDatatype(dayTimeDuration_); + + // create a xs:decimal + decimal_ = new (fMemMgr) DatatypeFactoryTemplate(fDocumentCache); + insertDatatype(decimal_); + + // create a xs:double + double_ = new (fMemMgr) DatatypeFactoryTemplate(fDocumentCache); + insertDatatype(double_); + + // create a xs:duration + duration_ = new (fMemMgr) DatatypeFactoryTemplate(fDocumentCache); + insertDatatype(duration_); + + // create a xs:float + float_ = new (fMemMgr) DatatypeFactoryTemplate(fDocumentCache); + insertDatatype(float_); + + // create a xs:gDay + gDay_ = new (fMemMgr) DatatypeFactoryTemplate(fDocumentCache); + insertDatatype(gDay_); + + // create a xs:gMonth + gMonth_ = new (fMemMgr) DatatypeFactoryTemplate(fDocumentCache); + insertDatatype(gMonth_); + + // create a xs:gMonthDay + gMonthDay_ = new (fMemMgr) DatatypeFactoryTemplate(fDocumentCache); + insertDatatype(gMonthDay_); + + // create a xs:gYear + gYear_ = new (fMemMgr) DatatypeFactoryTemplate(fDocumentCache); + insertDatatype(gYear_); + + // create a xs:gYearMonth + gYearMonth_ = new (fMemMgr) DatatypeFactoryTemplate(fDocumentCache); + insertDatatype(gYearMonth_); + + // create a xs:hexBinary + hexBinary_ = new (fMemMgr) DatatypeFactoryTemplate(fDocumentCache); + insertDatatype(hexBinary_); + + // create a xs:NOTATION + notation_ = new (fMemMgr) DatatypeFactoryTemplate(fDocumentCache); + insertDatatype(notation_); + + // create a xs:QName + qname_ = new (fMemMgr) DatatypeFactoryTemplate(fDocumentCache); + insertDatatype(qname_); + + // create a xs:string + string_ = new (fMemMgr) StringDatatypeFactory(fDocumentCache); + insertDatatype(string_); + + // create a xs:time + time_ = new (fMemMgr) DatatypeFactoryTemplate(fDocumentCache); + insertDatatype(time_); + + // create a xdt:yearMonthDuration + yearMonthDuration_ = new (fMemMgr) YearMonthDurationDatatypeFactory(fDocumentCache); + insertDatatype(yearMonthDuration_); + + // create a xdt:untypedAtomic + untypedAtomic_ = new (fMemMgr) UntypedAtomicDatatypeFactory(fDocumentCache); + insertDatatype(untypedAtomic_); +} + +DatatypeLookup::~DatatypeLookup() +{ + fMemMgr->deallocate(anySimpleType_); + fMemMgr->deallocate(anyURI_); + fMemMgr->deallocate(base64Binary_); + fMemMgr->deallocate(boolean_); + fMemMgr->deallocate(date_); + fMemMgr->deallocate(dateTime_); + fMemMgr->deallocate(dayTimeDuration_); + fMemMgr->deallocate(decimal_); + fMemMgr->deallocate(double_); + fMemMgr->deallocate(duration_); + fMemMgr->deallocate(float_); + fMemMgr->deallocate(gDay_); + fMemMgr->deallocate(gMonth_); + fMemMgr->deallocate(gMonthDay_); + fMemMgr->deallocate(gYear_); + fMemMgr->deallocate(gYearMonth_); + fMemMgr->deallocate(hexBinary_); + fMemMgr->deallocate(notation_); + fMemMgr->deallocate(qname_); + fMemMgr->deallocate(string_); + fMemMgr->deallocate(time_); + fMemMgr->deallocate(yearMonthDuration_); + fMemMgr->deallocate(untypedAtomic_); +} + +void DatatypeLookup::insertDatatype(DatatypeFactory *datatype) +{ + fDatatypeTable.put((void*)datatype->getPrimitiveTypeName(),datatype); +} + +const DatatypeFactory* DatatypeLookup::lookupDatatype(AnyAtomicType::AtomicObjectType typeIndex) const +{ + switch(typeIndex) { + case AnyAtomicType::ANY_SIMPLE_TYPE: return anySimpleType_; + case AnyAtomicType::ANY_URI: return anyURI_; + case AnyAtomicType::BASE_64_BINARY: return base64Binary_; + case AnyAtomicType::BOOLEAN: return boolean_; + case AnyAtomicType::DATE: return date_; + case AnyAtomicType::DATE_TIME: return dateTime_; + case AnyAtomicType::DAY_TIME_DURATION: return dayTimeDuration_; + case AnyAtomicType::DECIMAL: return decimal_; + case AnyAtomicType::DOUBLE: return double_; + case AnyAtomicType::DURATION: return duration_; + case AnyAtomicType::FLOAT: return float_; + case AnyAtomicType::G_DAY: return gDay_; + case AnyAtomicType::G_MONTH: return gMonth_; + case AnyAtomicType::G_MONTH_DAY: return gMonthDay_; + case AnyAtomicType::G_YEAR: return gYear_; + case AnyAtomicType::G_YEAR_MONTH: return gYearMonth_; + case AnyAtomicType::HEX_BINARY: return hexBinary_; + case AnyAtomicType::NOTATION: return notation_; + case AnyAtomicType::QNAME: return qname_; + case AnyAtomicType::STRING: return string_; + case AnyAtomicType::TIME: return time_; + case AnyAtomicType::UNTYPED_ATOMIC: return untypedAtomic_; + case AnyAtomicType::YEAR_MONTH_DURATION: return yearMonthDuration_; + default: break; + } + + return 0; +} + +const DatatypeFactory* DatatypeLookup::lookupDatatype(const XMLCh* typeURI, const XMLCh* typeName, bool &isPrimitive) const +{ + const DatatypeFactory* pFactory=fDatatypeTable.get((void*)typeName); + + // in case we're lucky and we were given a primitive type + if (pFactory) { + if(XPath2Utils::equals(typeURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) || + XPath2Utils::equals(typeName, ATUntypedAtomic::fgDT_UNTYPEDATOMIC) ) { + isPrimitive = true; + return pFactory; + } + } + isPrimitive = false; + + const DatatypeValidator* validator = fDocumentCache->getDatatypeValidator(typeURI, typeName); + const DatatypeValidator* previousValidator = 0; + + while(validator) { + const DatatypeValidator* tempVal = validator->getBaseValidator(); + if(!tempVal) break; + + previousValidator = validator; + validator = tempVal; + } + + if(validator) { + pFactory = fDatatypeTable.get((void*)validator->getTypeLocalName()); + + if(pFactory) { + if(pFactory->getPrimitiveTypeIndex() == AnyAtomicType::DURATION && previousValidator != 0) { + // Find a more specific type for duration, if possible + const DatatypeFactory *tmp = fDatatypeTable.get((void*)previousValidator->getTypeLocalName()); + if(tmp) pFactory = tmp; + } + + return pFactory; + } + } + + XMLBuffer buf(1023, fMemMgr); + buf.append(X("Type ")); + buf.append(typeURI); + buf.append(chColon); + buf.append(typeName); + buf.append(X(" not found [err:XPST0051]")); + XQThrow2(TypeNotFoundException, X("DatatypeLookup::lookupDatatype"), buf.getRawBuffer()); + +} + +DatatypeFactory *DatatypeLookup::getAnySimpleTypeFactory() const +{ + return anySimpleType_; +} + +DatatypeFactory *DatatypeLookup::getAnyURIFactory() const +{ + return anyURI_; +} + +DatatypeFactory *DatatypeLookup::getBase64BinaryFactory() const +{ + return base64Binary_; +} + +DatatypeFactory *DatatypeLookup::getBooleanFactory() const +{ + return boolean_; +} + +DatatypeFactory *DatatypeLookup::getDateFactory() const +{ + return date_; +} + +DatatypeFactory *DatatypeLookup::getDateTimeFactory() const +{ + return dateTime_; +} + +DatatypeFactory *DatatypeLookup::getDayTimeDurationFactory() const +{ + return dayTimeDuration_; +} + +DatatypeFactory *DatatypeLookup::getDecimalFactory() const +{ + return decimal_; +} + +DatatypeFactory *DatatypeLookup::getDoubleFactory() const +{ + return double_; +} + +DatatypeFactory *DatatypeLookup::getDurationFactory() const +{ + return duration_; +} + +DatatypeFactory *DatatypeLookup::getFloatFactory() const +{ + return float_; +} + +DatatypeFactory *DatatypeLookup::getGDayFactory() const +{ + return gDay_; +} + +DatatypeFactory *DatatypeLookup::getGMonthFactory() const +{ + return gMonth_; +} + +DatatypeFactory *DatatypeLookup::getGMonthDayFactory() const +{ + return gMonthDay_; +} + +DatatypeFactory *DatatypeLookup::getGYearFactory() const +{ + return gYear_; +} + +DatatypeFactory *DatatypeLookup::getGYearMonthFactory() const +{ + return gYearMonth_; +} + +DatatypeFactory *DatatypeLookup::getHexBinaryFactory() const +{ + return hexBinary_; +} + +DatatypeFactory *DatatypeLookup::getNotationFactory() const +{ + return notation_; +} + +DatatypeFactory *DatatypeLookup::getQNameFactory() const +{ + return qname_; +} + +DatatypeFactory *DatatypeLookup::getStringFactory() const +{ + return string_; +} + +DatatypeFactory *DatatypeLookup::getTimeFactory() const +{ + return time_; +} + +DatatypeFactory *DatatypeLookup::getYearMonthDurationFactory() const +{ + return yearMonthDuration_; +} + +DatatypeFactory *DatatypeLookup::getUntypedAtomicFactory() const +{ + return untypedAtomic_; +} + diff --git a/src/items/DateOrTimeType.cpp b/src/items/DateOrTimeType.cpp new file mode 100644 index 00000000..062572b4 --- /dev/null +++ b/src/items/DateOrTimeType.cpp @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DateOrTimeType.cpp,v 1.7 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +/* is this type date or time based? Return true by default */ +bool DateOrTimeType::isDateOrTimeTypeValue() const +{ + return true; +} + diff --git a/src/items/Item.cpp b/src/items/Item.cpp new file mode 100644 index 00000000..cd7b28f8 --- /dev/null +++ b/src/items/Item.cpp @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Item.cpp,v 1.8 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include + +const XMLCh Item::gXQilla[] = // Points to "XQilla" +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_X, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_Q, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; diff --git a/src/items/Node.cpp b/src/items/Node.cpp new file mode 100644 index 00000000..4fb80a7d --- /dev/null +++ b/src/items/Node.cpp @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Node.cpp,v 1.9 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +const XMLCh Node::document_string[] = +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e ,XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +const XMLCh Node::element_string[] = +{ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + + +const XMLCh Node::attribute_string[] = +{ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_b, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +const XMLCh Node::text_string[] = +{ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +const XMLCh Node::processing_instruction_string[] = +{ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +const XMLCh Node::comment_string[] = +{ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +const XMLCh Node::namespace_string[] = +{ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +const XMLCh Node::cdata_string[] = +{ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +const XMLCh Node::gXerces[] = // Points to "Xerces" +{ + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_X, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, + XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + diff --git a/src/items/Numeric.cpp b/src/items/Numeric.cpp new file mode 100644 index 00000000..116ed5fa --- /dev/null +++ b/src/items/Numeric.cpp @@ -0,0 +1,351 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Numeric.cpp,v 1.15 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#ifndef min +#define min(a,b) ((a) < (b) ? (a) : (b)) +#endif + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +const XMLCh Numeric::NaN_string[] = +{ chLatin_N, chLatin_a, chLatin_N, chNull }; + +const XMLCh Numeric::NAN_string[] = +{ chLatin_N, chLatin_A, chLatin_N, chNull }; + +const XMLCh Numeric::INF_string[] = +{ chLatin_I, chLatin_N, chLatin_F, chNull }; + +const XMLCh Numeric::NegINF_string[] = +{ chDash, chLatin_I, chLatin_N, chLatin_F, chNull }; + +const XMLCh Numeric::NegZero_string[] = +{ chDash, chDigit_0, chNull }; + +const XMLCh Numeric::PosZero_string[] = +{ chDigit_0, chNull }; + +void Numeric::checkFloatLimits(Numeric::State &state, MAPM &value) +{ + if(state==NUM || state==NEG_NUM) { + int exp=value.exponent(); + if(exp>38 || (exp==38 && value.abs()>MAPM("3.4028235e+38"))) { + state=(state==NEG_NUM)?NEG_INF:INF; + value = MM_Zero; + } + else if(exp<-38 || (exp==-38 && value.abs()308 || (exp==308 && value.abs()>MAPM("1.7976931348623157e+308"))) { + state=(state==NEG_NUM)?NEG_INF:INF; + value = MM_Zero; + } + else if(exp<-308 || (exp==-308 && value.abs()getState(); + MAPM value1 = num1->asMAPM(); + + Numeric::State state2 = num2->getState(); + MAPM value2 = num2->asMAPM(); + + switch(num1->getPrimitiveTypeIndex()) { + case AnyAtomicType::DECIMAL: + switch(num2->getPrimitiveTypeIndex()) { + case AnyAtomicType::DECIMAL: + break; + case AnyAtomicType::FLOAT: + Numeric::checkFloatLimits(state1, value1); + Numeric::checkFloatLimits(state2, value2); + break; + case AnyAtomicType::DOUBLE: + Numeric::checkDoubleLimits(state1, value1); + Numeric::checkDoubleLimits(state2, value2); + break; + default: break; + } + break; + case AnyAtomicType::FLOAT: + switch(num2->getPrimitiveTypeIndex()) { + case AnyAtomicType::DECIMAL: + case AnyAtomicType::FLOAT: + Numeric::checkFloatLimits(state1, value1); + Numeric::checkFloatLimits(state2, value2); + break; + case AnyAtomicType::DOUBLE: + Numeric::checkDoubleLimits(state1, value1); + Numeric::checkDoubleLimits(state2, value2); + break; + default: break; + } + break; + case AnyAtomicType::DOUBLE: + Numeric::checkDoubleLimits(state1, value1); + Numeric::checkDoubleLimits(state2, value2); + break; + default: break; + } + + return compare(state1, value1, state2, value2); +} + +int Numeric::compare(const Numeric::Ptr &other, const DynamicContext *context) const +{ + return ::compare(getState(), asMAPM(), other->getState(), other->asMAPM()); +} + +bool Numeric::equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const +{ + if(!target->isNumericValue()) { + XQThrow2(::IllegalArgumentException,X("Numeric::equals"), + X("Equality operator for given types not supported [err:XPTY0004]")); + } + + const Numeric *otherImpl = (const Numeric*)target.get(); + + if(getState() == NaN || otherImpl->getState() == NaN) return false; + return typePromoteCompare(this, otherImpl) == 0; +} + +/** Returns true if this is less than other, false otherwise */ +bool Numeric::lessThan(const Numeric::Ptr &other, const DynamicContext* context) const +{ + if(getState() == NaN || other->getState() == NaN) return false; + return typePromoteCompare(this, other) < 0; +} + +/** Returns true if this is greater than other, false otherwise */ +bool Numeric::greaterThan(const Numeric::Ptr &other, const DynamicContext* context) const +{ + if(getState() == NaN || other->getState() == NaN) return false; + return typePromoteCompare(this, other) > 0; +} + +AnyAtomicType::Ptr Numeric::castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, + const XMLCh* targetType, const DynamicContext* context) const +{ + switch(targetIndex) { + case DECIMAL: + switch(getState()) { + case NaN: + case INF: + case NEG_INF: + XQThrow2(::IllegalArgumentException, X("Numeric::castAsInternal"), + X("Special values like NaN, INF or -INF cannot be cast to decimal [err:FOCA0002]")); + case NUM: + case NEG_NUM: + if(context->isTypeOrDerivedFromType(targetURI, targetType, + SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER)) { + if(isNegative()) { + return context->getItemFactory()->createDecimalOrDerived(targetURI, targetType, asMAPM().ceil(), context); + } + else { + return context->getItemFactory()->createDecimalOrDerived(targetURI, targetType, asMAPM().floor(), context); + } + } + else { + return context->getItemFactory()->createDecimalOrDerived(targetURI, targetType, asMAPM(), context); + } + } + case FLOAT: + switch(getState()) { + case NaN: + return context->getItemFactory()->createFloatOrDerived(targetURI, targetType, NaN_string, context); + case INF: + return context->getItemFactory()->createFloatOrDerived(targetURI, targetType, INF_string, context); + case NEG_INF: + return context->getItemFactory()->createFloatOrDerived(targetURI, targetType, NegINF_string, context); + case NEG_NUM: + if(isZero()) { + return context->getItemFactory()->createFloatOrDerived(targetURI, targetType, NegZero_string, context); + } + // Fall through + case NUM: + return context->getItemFactory()->createFloatOrDerived(targetURI, targetType, asMAPM(), context); + } + case DOUBLE: + switch(getState()) { + case NaN: + return context->getItemFactory()->createDoubleOrDerived(targetURI, targetType, NaN_string, context); + case INF: + return context->getItemFactory()->createDoubleOrDerived(targetURI, targetType, INF_string, context); + case NEG_INF: + return context->getItemFactory()->createDoubleOrDerived(targetURI, targetType, NegINF_string, context); + case NEG_NUM: + if(isZero()) { + return context->getItemFactory()->createDoubleOrDerived(targetURI, targetType, NegZero_string, context); + } + // Fall through + case NUM: + return context->getItemFactory()->createDoubleOrDerived(targetURI, targetType, asMAPM(), context); + } + case BOOLEAN: + if(isZero() || isNaN()) { + return context->getItemFactory()->createBooleanOrDerived(targetURI, targetType, false, context); + } else { + return context->getItemFactory()->createBooleanOrDerived(targetURI, targetType, true, context); + } + default: + return AnyAtomicType::castAsInternal(targetIndex, targetURI, targetType, context); + } +} + +const XMLCh *Numeric::asDecimalString(int significantDigits, const StaticContext* context) const +{ + return asDecimalString(asMAPM(), significantDigits, context); +} + +const XMLCh *Numeric::asDecimalString(const MAPM &number, int significantDigits, const StaticContext* context) +{ + char obuf[1024]; + if(number.is_integer()) + number.toIntegerString(obuf); + else { + number.toFixPtString(obuf, significantDigits); + + // Note in the canonical representation the decimal point is required + // and there must be at least one digit to the right and one digit to + // the left of the decimal point (which may be 0) + if(strchr(obuf,'.')!=0) { + // remove trailing 0's + char* lastChar=obuf+strlen(obuf)-1; + while(*lastChar=='0') { + *lastChar--=0; + } + // remove decimal point, if there are no digits after it + if(*lastChar=='.') + *lastChar=0; + } + } + return context->getMemoryManager()->getPooledString(obuf); +} + +const XMLCh *Numeric::asDoubleString(int significantDigits, const StaticContext* context) const +{ + State state1 = getState(); + MAPM value1 = asMAPM(); + + switch(getPrimitiveTypeIndex()) { + case FLOAT: + checkFloatLimits(state1, value1); + break; + case DOUBLE: + checkDoubleLimits(state1, value1); + break; + default: break; + } + + return asDoubleString(state1, value1, significantDigits, context); +} + +const XMLCh *Numeric::asDoubleString(State state1, const MAPM &value1, int significantDigits, const StaticContext* context) +{ + switch(state1) { + case NaN: return NaN_string; + case INF: return INF_string; + case NEG_INF: return NegINF_string; + case NEG_NUM: + if(value1.sign() == 0) return NegZero_string; + break; + case NUM: + if(value1.sign() == 0) return PosZero_string; + break; + } + + MAPM absVal = value1.abs(); + MAPM lower("0.000001"), upper("1000000"); + if(absVal < upper && absVal >= lower) { + return asDecimalString(value1, significantDigits, context); + } + else { + char obuf[1024]; + if(significantDigits==7) + { + value1.toString(obuf, 25); + double num=atof(obuf); + sprintf(obuf, "%.*G", min(8,value1.significant_digits()), num); + MAPM val=obuf; + int precision = val.significant_digits() - 1; + if(precision <= 0) precision = 1; + val.toString(obuf, precision); + return context->getMemoryManager()->getPooledString(obuf); + } + else if(significantDigits==16) + { + value1.toString(obuf, 25); + double num=atof(obuf); + sprintf(obuf, "%.*G", min(17,value1.significant_digits()), num); + MAPM val=obuf; + int precision = val.significant_digits() - 1; + if(precision <= 0) precision = 1; + val.toString(obuf, precision); + return context->getMemoryManager()->getPooledString(obuf); + } + int precision = value1.significant_digits() - 1; + if(precision > significantDigits) precision = significantDigits; + if(precision <= 0) precision = 1; + value1.toString(obuf, precision); + return context->getMemoryManager()->getPooledString(obuf); + } + + return 0; +} diff --git a/src/items/NumericTypeConstructor.cpp b/src/items/NumericTypeConstructor.cpp new file mode 100644 index 00000000..4a613458 --- /dev/null +++ b/src/items/NumericTypeConstructor.cpp @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: NumericTypeConstructor.cpp,v 1.3 2006/11/17 18:08:07 jpcs Exp $ + */ + +#include +#include + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include "../exceptions/InvalidLexicalSpaceException.hpp" + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +NumericTypeConstructor::NumericTypeConstructor(const XMLCh* typeURI, + const XMLCh* typeName, + const MAPM& value, + AnyAtomicType::AtomicObjectType primitiveType, + MemoryManager *mm) + : _typeURI(typeURI), + _typeName(typeName), + _primitiveType(primitiveType) +{ + _sType.flags = StaticType::getFlagsFor(_primitiveType); + + memset(&_value, 0, sizeof(_value)); + + const M_APM cval = value.c_struct(); + + _value.m_apm_datalength = cval->m_apm_datalength; + _value.m_apm_exponent = cval->m_apm_exponent; + _value.m_apm_sign = cval->m_apm_sign; + + int len = (cval->m_apm_datalength + 1) >> 1; + _value.m_apm_data = (UCHAR*)mm->allocate(len); + + memcpy(_value.m_apm_data, cval->m_apm_data, len); +} + +Item::Ptr NumericTypeConstructor::createItem(const DynamicContext* context) const +{ + // Use the C API to copy our fake MAPM + MAPM copy; + m_apm_copy(const_cast(copy.c_struct()), const_cast(&_value)); + + Numeric::Ptr retVal; + switch(_primitiveType) { + case AnyAtomicType::DECIMAL: + retVal = context->getItemFactory()->createDecimalOrDerived(_typeURI, _typeName, copy, context); + break; + case AnyAtomicType::FLOAT: + retVal = context->getItemFactory()->createFloatOrDerived(_typeURI, _typeName, copy, context); + break; + case AnyAtomicType::DOUBLE: + retVal = context->getItemFactory()->createDoubleOrDerived(_typeURI, _typeName, copy, context); + break; + default: + assert(false); + break; + } + // check if it's a valid instance + DatatypeValidator* validator=context->getDocumentCache()->getDatatypeValidator(_typeURI, _typeName); + if(!validator) { + XMLBuffer buf(1023, context->getMemoryManager()); + buf.append(X("Type ")); + buf.append(_typeURI); + buf.append(chColon); + buf.append(_typeName); + buf.append(X(" not found")); + XQThrow2(TypeNotFoundException, X("NumericTypeConstructor::createItem"), buf.getRawBuffer()); + } + try { + const XMLCh* valueToValidate=retVal->asString(context); + validator->validate(valueToValidate, 0, context->getMemoryManager()); + } catch (XMLException &e) { + XMLBuffer buf(1023, context->getMemoryManager()); + buf.append(e.getMessage()); + buf.append(X(" [err:FORG0001]")); + XQThrow2(InvalidLexicalSpaceException, X("NumericTypeConstructor::createItem"), buf.getRawBuffer()); + } + return retVal; +} + +std::string NumericTypeConstructor::asString(const DynamicContext* context) const +{ + std::ostringstream s; + + s << "(&_value)); + s << " value=\"" << obuf; + s << "\" typeuri=\"" << UTF8(_typeURI); + s << "\" typename=\"" << UTF8(_typeName); + s << "\"/>"; + + return s.str(); +} diff --git a/src/items/Timezone.cpp b/src/items/Timezone.cpp new file mode 100644 index 00000000..cff52f57 --- /dev/null +++ b/src/items/Timezone.cpp @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Timezone.cpp,v 1.18 2006/11/01 16:37:20 jpcs Exp $ + */ + + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include +#include +#include "../utils/DateUtils.hpp" +#include +#include +#include + +#include +#include +#include + +static const int g_maxHour = 14; + +Timezone::Timezone(const MAPM &seconds) + : seconds_(seconds) +{ + validate(seconds_); +} + +Timezone::Timezone(const ATDurationOrDerived::Ptr &duration, const DynamicContext* context) + : seconds_(duration->asSeconds(context)->asMAPM()) +{ + validate(seconds_); +} + +MAPM Timezone::convert(bool positive, int hour, int minute) +{ + return (hour * DateUtils::g_secondsPerHour + minute * DateUtils::g_secondsPerMinute) * (positive ? +1 : -1); +} + +void Timezone::validate(const MAPM &tz) { + // Check that we have a valid timezone + if(tz.abs() > (g_maxHour * DateUtils::g_secondsPerHour)) { + XQThrow2(XPath2TypeCastException ,X("Timezone::Timezone"), + X("Timezone outside of valid range created [err:FODT0003].")); + } + if(tz.rem(DateUtils::g_secondsPerMinute).sign() != 0) { + XQThrow2(XPath2TypeCastException ,X("Timezone::Timezone"), + X("Timezone must have an integral number of minutes [err:FODT0003].")); + } +} + +bool Timezone::equals(const Timezone::Ptr &other) const +{ + return seconds_ == other->seconds_; +} + +ATDurationOrDerived::Ptr Timezone::asDayTimeDuration(const DynamicContext* context) const +{ + return context->getItemFactory()->createDayTimeDuration(seconds_, context); +} + +const XMLCh* Timezone::asString(const DynamicContext* context) const { + if(seconds_.sign() == 0) + return XPath2Utils::asStr(XERCES_CPP_NAMESPACE_QUALIFIER chLatin_Z,context->getMemoryManager()); + + MAPM hours, minutes; + seconds_.integer_div_rem(DateUtils::g_secondsPerHour, hours, minutes); + minutes = minutes.integer_divide(DateUtils::g_secondsPerMinute); + + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer buffer(1023, context->getMemoryManager()); + if(seconds_.sign() > 0) + buffer.append(XERCES_CPP_NAMESPACE_QUALIFIER chPlus); + else { + buffer.append(XERCES_CPP_NAMESPACE_QUALIFIER chDash); + hours = hours.abs(); + minutes = minutes.abs(); + } + DateUtils::formatNumber(hours,2,buffer); + buffer.append(XERCES_CPP_NAMESPACE_QUALIFIER chColon); + DateUtils::formatNumber(minutes,2,buffer); + + return context->getMemoryManager()->getPooledString(buffer.getRawBuffer()); +} diff --git a/src/items/impl/ATAnySimpleTypeImpl.cpp b/src/items/impl/ATAnySimpleTypeImpl.cpp new file mode 100644 index 00000000..48c161e8 --- /dev/null +++ b/src/items/impl/ATAnySimpleTypeImpl.cpp @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATAnySimpleTypeImpl.cpp,v 1.12 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include "ATAnySimpleTypeImpl.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// We ignore the type URI and typeName passed in, since they are always xdt:anySimpleType +// (you cannot derived from it) +ATAnySimpleTypeImpl:: +ATAnySimpleTypeImpl(const XMLCh*, const XMLCh*, const XMLCh* value, const StaticContext* context) +{ + _value = context->getMemoryManager()->getPooledString(value); +} + +void *ATAnySimpleTypeImpl::getInterface(const XMLCh *name) const +{ + if(name == Item::gXQilla) { + return (void*)this; + } + return 0; +} + +/* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ +const XMLCh* ATAnySimpleTypeImpl::getPrimitiveTypeName() const { + return this->getPrimitiveName(); +} + +const XMLCh* ATAnySimpleTypeImpl::getPrimitiveName() { + return XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_ANYSIMPLETYPE; +} + +/* Get the name of this type (ie "integer" for xs:integer)-- + * same as the primitive type name. AnySimpleType cannot be + * extended */ +const XMLCh* ATAnySimpleTypeImpl::getTypeName() const { + return getPrimitiveTypeName(); +} + +/* Get the namespace URI for this type -- same as the primitive uri + * AnySimpleType cannot be extended */ +const XMLCh* ATAnySimpleTypeImpl::getTypeURI() const { + return getPrimitiveTypeURI(); +} + +AnyAtomicType::AtomicObjectType ATAnySimpleTypeImpl::getTypeIndex() { + return AnyAtomicType::ANY_SIMPLE_TYPE; +} + +AnyAtomicType::Ptr ATAnySimpleTypeImpl::castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const { + switch (targetIndex) { + case DOUBLE: { + const XMLCh* upCase = XPath2Utils::toUpper(_value, context->getMemoryManager()); + return (const AnyAtomicType::Ptr)context->getItemFactory()->createDoubleOrDerived(targetURI, targetType, upCase, context); + } + case FLOAT: { + const XMLCh* upCase = XPath2Utils::toUpper(_value, context->getMemoryManager()); + return (const AnyAtomicType::Ptr)context->getItemFactory()->createFloatOrDerived(targetURI, targetType, upCase, context); + } + default: return AnyAtomicType::castAsInternal(targetIndex, targetURI, targetType, context); + } +} + +/* returns the XMLCh* (canonical) representation of this type */ +const XMLCh* ATAnySimpleTypeImpl::asString(const DynamicContext* context) const { + return _value; +} + +/* returns true if the two objects' URI are equal (string comparison) + * false otherwise */ +bool ATAnySimpleTypeImpl::equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const { + if(this->getPrimitiveTypeIndex() != target->getPrimitiveTypeIndex()) { + XQThrow2(IllegalArgumentException,X("ATAnySimpleTypeImpl::equals"), X("Equality operator for given types not supported [err:XPTY0004]")); + } + return XPath2Utils::equals(target->asString(context), _value); +} + +AnyAtomicType::AtomicObjectType ATAnySimpleTypeImpl::getPrimitiveTypeIndex() const { + return this->getTypeIndex(); +} diff --git a/src/items/impl/ATAnySimpleTypeImpl.hpp b/src/items/impl/ATAnySimpleTypeImpl.hpp new file mode 100644 index 00000000..2312e7dd --- /dev/null +++ b/src/items/impl/ATAnySimpleTypeImpl.hpp @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATAnySimpleTypeImpl.hpp,v 1.7 2006/11/01 16:37:20 jpcs Exp $ + */ + +#ifndef _ATANYSIMPLETYPEIMPL_HPP +#define _ATANYSIMPLETYPEIMPL_HPP + +#include +#include + +#include +class DynamicContext; + +/** + * This class represents the atomic types (ie, the simple types + * which are not list or union types) with type annotation + * xs:anySimpleType */ +class XQILLA_API ATAnySimpleTypeImpl : public ATAnySimpleType +{ + +public: + + /* constructor */ + ATAnySimpleTypeImpl(const XMLCh*, const XMLCh*, const XMLCh* value, const StaticContext* context); + + virtual void *getInterface(const XMLCh *name) const; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const; + + /* returns true if the two objects' URI are equal (string comparison) + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const; + + /* Get the primitive index associated with this type */ + static AnyAtomicType::AtomicObjectType getTypeIndex(); + + /* Get the primitive type name */ + static const XMLCh* getPrimitiveName(); + + /* Get the primitive index associated with this type */ + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const; + +protected: + + /* If possible, cast this type to the target type */ + virtual AnyAtomicType::Ptr castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const; + +private: + + /*The value of this URI*/ + const XMLCh* _value; + +}; + +#endif // _ATANYSIMPLETYPEIMPL_HPP diff --git a/src/items/impl/ATAnyURIOrDerivedImpl.cpp b/src/items/impl/ATAnyURIOrDerivedImpl.cpp new file mode 100644 index 00000000..413ccaaf --- /dev/null +++ b/src/items/impl/ATAnyURIOrDerivedImpl.cpp @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATAnyURIOrDerivedImpl.cpp,v 1.15 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include "ATAnyURIOrDerivedImpl.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +ATAnyURIOrDerivedImpl:: +ATAnyURIOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const StaticContext* context): + _typeName(typeName), + _typeURI(typeURI) { + + _uri = context->getMemoryManager()->getPooledString(value); +} + +void *ATAnyURIOrDerivedImpl::getInterface(const XMLCh *name) const +{ + if(name == Item::gXQilla) { + return (void*)this; + } + return 0; +} + +/* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ +const XMLCh* ATAnyURIOrDerivedImpl::getPrimitiveTypeName() const { + return this->getPrimitiveName(); +} + +const XMLCh* ATAnyURIOrDerivedImpl::getPrimitiveName() { + return XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_ANYURI; +} + +/* Get the name of this type (ie "integer" for xs:integer) */ +const XMLCh* ATAnyURIOrDerivedImpl::getTypeName() const { + return _typeName; +} + +/* Get the namespace URI for this type */ +const XMLCh* ATAnyURIOrDerivedImpl::getTypeURI() const { + return _typeURI; +} + +AnyAtomicType::AtomicObjectType ATAnyURIOrDerivedImpl::getTypeIndex() { + return AnyAtomicType::ANY_URI; +} + +/* If possible, cast this type to the target type */ +AnyAtomicType::Ptr ATAnyURIOrDerivedImpl::castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const { + switch (targetIndex) { + case ANY_SIMPLE_TYPE: + case UNTYPED_ATOMIC: + //anySimpleType and untypedAtomic follow the same casting rules as string. + case STRING: { + return context->getItemFactory()->createDerivedFromAtomicType(targetIndex, targetURI, targetType, _uri, context); + } + default: return AnyAtomicType::castAsInternal(targetIndex, targetURI, targetType, context); + } +} + +/* returns the XMLCh* (canonical) representation of this type */ +const XMLCh* ATAnyURIOrDerivedImpl::asString(const DynamicContext* context) const { + return _uri; +} + +/* returns true if the two objects' URI are equal (string comparison) + * false otherwise */ +bool ATAnyURIOrDerivedImpl::equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const { + if(this->getPrimitiveTypeIndex() != target->getPrimitiveTypeIndex() && + target->getPrimitiveTypeIndex()!=STRING) + { + XQThrow2(IllegalArgumentException,X("ATAnyURIOrDerivedImpl::equals"), X("Equality operator for given types not supported [err:XPTY0004]")); + } + return XPath2Utils::equals(target->asString(context), _uri); +} + +AnyAtomicType::AtomicObjectType ATAnyURIOrDerivedImpl::getPrimitiveTypeIndex() const { + return this->getTypeIndex(); +} diff --git a/src/items/impl/ATAnyURIOrDerivedImpl.hpp b/src/items/impl/ATAnyURIOrDerivedImpl.hpp new file mode 100644 index 00000000..6aa52eaa --- /dev/null +++ b/src/items/impl/ATAnyURIOrDerivedImpl.hpp @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATAnyURIOrDerivedImpl.hpp,v 1.7 2006/11/01 16:37:20 jpcs Exp $ + */ + +#ifndef _ATANYURIORDERIVEDIMPL_HPP +#define _ATANYURIORDERIVEDIMPL_HPP + +#include +#include + +#include +class DynamicContext; + +class XQILLA_API ATAnyURIOrDerivedImpl : public ATAnyURIOrDerived +{ + +public: + + /* constructor */ + ATAnyURIOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const StaticContext* context); + + virtual void *getInterface(const XMLCh *name) const; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const; + + /* returns true if the two objects' URI are equal (string comparison) + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const; + + /* Get the primitive index associated with this type */ + static AnyAtomicType::AtomicObjectType getTypeIndex(); + + /* Get the primitive type name */ + static const XMLCh* getPrimitiveName(); + + /* Get the primitive index associated with this type */ + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const; + +protected: + + /* If possible, cast this type to the target type */ + virtual AnyAtomicType::Ptr castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const; + +private: + + /*The value of this URI*/ + const XMLCh* _uri; + + /* the name of this type */ + const XMLCh* _typeName; + + /* the uri of this type */ + const XMLCh* _typeURI; + +}; + +#endif // _ATANYURIORDERIVEDIMPL_HPP diff --git a/src/items/impl/ATBase64BinaryOrDerivedImpl.cpp b/src/items/impl/ATBase64BinaryOrDerivedImpl.cpp new file mode 100644 index 00000000..5c6a3169 --- /dev/null +++ b/src/items/impl/ATBase64BinaryOrDerivedImpl.cpp @@ -0,0 +1,153 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATBase64BinaryOrDerivedImpl.cpp,v 1.15 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include "ATBase64BinaryOrDerivedImpl.hpp" +#include "ATHexBinaryOrDerivedImpl.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +ATBase64BinaryOrDerivedImpl:: +ATBase64BinaryOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const StaticContext* context): + _typeName(typeName), + _typeURI(typeURI){ + + // check if it's a valid base64 sequence, and then make it canonical by stripping whitespace + MemoryManager* mm = context->getMemoryManager(); + unsigned int srcLen = XMLString::stringLen(value); + XMLByte *dataInByte = (XMLByte*) mm->allocate((srcLen+1) * sizeof(XMLByte)); + ArrayJanitor janFill(dataInByte, mm); + unsigned int i; + for (i = 0; i < srcLen; i++) + dataInByte[i] = (XMLByte)value[i]; + + dataInByte[srcLen] = 0; + + unsigned int length=0, outLength=0; + AutoDeallocate decodedBinary(Base64::decode(dataInByte, &length, mm, Base64::Conf_Schema), mm); + AutoDeallocate encodedBase64(Base64::encode(decodedBinary, length, &outLength, mm), mm); + _base64Data = (XMLCh*) mm->allocate((outLength+1) * sizeof(XMLCh)); + XMLCh* cursor=_base64Data; + for (i = 0; i < outLength; i++) + if(!XMLChar1_0::isWhitespace(encodedBase64[i])) + *cursor++ = encodedBase64[i]; + *cursor = 0; +} + +void *ATBase64BinaryOrDerivedImpl::getInterface(const XMLCh *name) const +{ + if(name == Item::gXQilla) { + return (void*)this; + } + return 0; +} + +/* Get the name of the primitive type (basic type) of this type (ie "decimal" for xs:decimal) */ +const XMLCh* ATBase64BinaryOrDerivedImpl::getPrimitiveTypeName() const { + return this->getPrimitiveName(); +} + +const XMLCh* ATBase64BinaryOrDerivedImpl::getPrimitiveName() { + return SchemaSymbols::fgDT_BASE64BINARY; +} + +/* Get the name of this type (ie "integer" for xs:integer) */ +const XMLCh* ATBase64BinaryOrDerivedImpl::getTypeName() const { + return _typeName; +} + +/* Get the namespace URI for this type */ +const XMLCh* ATBase64BinaryOrDerivedImpl::getTypeURI() const { + return _typeURI; +} + +AnyAtomicType::AtomicObjectType ATBase64BinaryOrDerivedImpl::getTypeIndex() { + return AnyAtomicType::BASE_64_BINARY; +} + +/* If possible, cast this type to the target type */ +AnyAtomicType::Ptr ATBase64BinaryOrDerivedImpl::castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const +{ + static const XMLCh hexDigits[]={ chDigit_0, chDigit_1, + chDigit_2, chDigit_3, + chDigit_4, chDigit_5, + chDigit_6, chDigit_7, + chDigit_8, chDigit_9, + chLatin_A, chLatin_B, + chLatin_C, chLatin_D, + chLatin_E, chLatin_F }; + + switch(targetIndex) { + case HEX_BINARY: { + unsigned int srcLen = XMLString::stringLen(_base64Data); + XMLByte *dataInByte = (XMLByte*) context->getMemoryManager()->allocate((srcLen+1) * sizeof(XMLByte)); + ArrayJanitor janFill(dataInByte, context->getMemoryManager()); + + unsigned int i; + for (i = 0; i < srcLen; i++) + dataInByte[i] = (XMLByte)_base64Data[i]; + + dataInByte[srcLen] = 0; + + unsigned int length=0; + AutoDeallocate decodedBinary(Base64::decode(dataInByte, &length, context->getMemoryManager(), + Base64::Conf_Schema), context->getMemoryManager()); + + XMLBuffer buf(length*2, context->getMemoryManager()); + for(i=0;igetPrimitiveTypeIndex() != target->getPrimitiveTypeIndex()) { + XQThrow2(::IllegalArgumentException,X("ATBase64BinaryOrDerivedImpl::equals"), + X("Equality operator for given types not supported [err:XPTY0004]")); + } + return compare((const ATBase64BinaryOrDerived *)target.get(), context) == 0; +} + +int ATBase64BinaryOrDerivedImpl::compare(const ATBase64BinaryOrDerived::Ptr &other, const DynamicContext *context) const +{ + return XPath2Utils::compare(_base64Data, ((const ATBase64BinaryOrDerivedImpl *)other.get())->_base64Data); +} + +AnyAtomicType::AtomicObjectType ATBase64BinaryOrDerivedImpl::getPrimitiveTypeIndex() const { + return this->getTypeIndex(); +} diff --git a/src/items/impl/ATBase64BinaryOrDerivedImpl.hpp b/src/items/impl/ATBase64BinaryOrDerivedImpl.hpp new file mode 100644 index 00000000..27af8b07 --- /dev/null +++ b/src/items/impl/ATBase64BinaryOrDerivedImpl.hpp @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATBase64BinaryOrDerivedImpl.hpp,v 1.9 2006/11/01 16:37:20 jpcs Exp $ + */ + +#ifndef _ATBASE64BINARYORDERIVEDIMPL_HPP +#define _ATBASE64BINARYORDERIVEDIMPL_HPP + +#include +#include + +#include + +class XPath2MemoryManager; +class AnyAtomicType; + +class XQILLA_API ATBase64BinaryOrDerivedImpl : public ATBase64BinaryOrDerived +{ + +public: + + /* constructor */ + ATBase64BinaryOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const StaticContext* context); + + virtual void *getInterface(const XMLCh *name) const; + + /* Get the name of the primitive type (basic type) of this type (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const; + + /* returns true if the two objects' base 64 binary representation + * are equal (string comparison) false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATBase64BinaryOrDerived::Ptr &other, const DynamicContext *context) const; + + static AnyAtomicType::AtomicObjectType getTypeIndex(); + + /* Get the primitive type name */ + static const XMLCh* getPrimitiveName(); + + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const; + +protected: + + /* If possible, cast this type to the target type */ + virtual AnyAtomicType::Ptr castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const; + +private: + + /*The value of this base 64 value*/ + XMLCh* _base64Data; + + /* the name of this type */ + const XMLCh* _typeName; + + /* the uri of this type */ + const XMLCh* _typeURI; + +}; + +#endif // _ATBASE64BINARYORDERIVEDIMPL_HPP diff --git a/src/items/impl/ATBooleanOrDerivedImpl.cpp b/src/items/impl/ATBooleanOrDerivedImpl.cpp new file mode 100644 index 00000000..4c24968a --- /dev/null +++ b/src/items/impl/ATBooleanOrDerivedImpl.cpp @@ -0,0 +1,160 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATBooleanOrDerivedImpl.cpp,v 1.14 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +ATBooleanOrDerivedImpl:: +ATBooleanOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const StaticContext* context): + _typeName(typeName), + _typeURI(typeURI) { + + // canonical values + static const XMLCh zero[] = {XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + static const XMLCh one[] = {XERCES_CPP_NAMESPACE_QUALIFIER chDigit_1, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + + if( XPath2Utils::equals(value, zero) || XPath2Utils::equals(value, XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgATTVAL_FALSE)) { + _value = false; + } else if(XPath2Utils::equals(value, one) || XPath2Utils::equals(value, XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgATTVAL_TRUE)) { + _value = true; + } else { + XQThrow2(XPath2TypeCastException,X("ATBooleanOrDerivedImpl::ATBooleanOrDerivedImpl"), X("Invalid representation of boolean [err:FORG0001]")); + } +} + +ATBooleanOrDerivedImpl:: +ATBooleanOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, bool value, const StaticContext* context): + _value(value), + _typeName(typeName), + _typeURI(typeURI) +{ } + +void *ATBooleanOrDerivedImpl::getInterface(const XMLCh *name) const +{ + if(name == Item::gXQilla) { + return (void*)this; + } + return 0; +} + +/* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ +const XMLCh* ATBooleanOrDerivedImpl::getPrimitiveTypeName() const { + return this->getPrimitiveName(); +} + +const XMLCh* ATBooleanOrDerivedImpl::getPrimitiveName() { + return XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_BOOLEAN; +} + +/* Get the name of this type (ie "integer" for xs:integer) */ +const XMLCh* ATBooleanOrDerivedImpl::getTypeName() const { + return _typeName; +} + +/* Get the namespace URI for this type */ +const XMLCh* ATBooleanOrDerivedImpl::getTypeURI() const { + return _typeURI; +} + +AnyAtomicType::AtomicObjectType ATBooleanOrDerivedImpl::getTypeIndex() { + return AnyAtomicType::BOOLEAN; +} + +/* If possible, cast this type to the target type */ +AnyAtomicType::Ptr ATBooleanOrDerivedImpl::castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const { + // deviation from spec -- they say to convert to 1.0 and 0.0, but we don't see the point, + // and it doesn't make casting to integer a special case (crioux) + const XMLCh one[] = { XERCES_CPP_NAMESPACE_QUALIFIER chDigit_1, + XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + const XMLCh zero[] = { XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0, + XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + const XMLCh* chValue = _value ? one : zero; + + switch(targetIndex) { + case FLOAT: { + return (const AnyAtomicType::Ptr)context->getItemFactory()->createFloatOrDerived(targetURI, targetType, chValue, context); + } + case DECIMAL: { + return (const AnyAtomicType::Ptr)context->getItemFactory()->createDecimalOrDerived(targetURI, targetType, chValue, context); + } + case DOUBLE: { + return (const AnyAtomicType::Ptr)context->getItemFactory()->createDoubleOrDerived(targetURI, targetType, chValue, context); + } + default: { + return AnyAtomicType::castAsInternal(targetIndex, targetURI, targetType, context); + } + } + +} + +/* returns the XMLCh* (canonical) representation of this type */ +const XMLCh* ATBooleanOrDerivedImpl::asString(const DynamicContext* context) const { + return asString(); +} + +const XMLCh* ATBooleanOrDerivedImpl::asString() const +{ + if(_value) { + return XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgATTVAL_TRUE; + } else { + return XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgATTVAL_FALSE; + } +} + +/* returns true if the two objects have the same boolean value + * false otherwise */ +bool ATBooleanOrDerivedImpl::equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const +{ + if(this->getPrimitiveTypeIndex() != target->getPrimitiveTypeIndex()) { + XQThrow2(IllegalArgumentException,X("ATBooleanOrDerivedImpl::equals"), + X("Equality operator for given types not supported [err:XPTY0004]")); + } + + return compare((const ATBooleanOrDerived*)target.get(), context) == 0; +} + +int ATBooleanOrDerivedImpl::compare(const ATBooleanOrDerived::Ptr &other, const DynamicContext *context) const +{ + return (int)_value - (int)other->isTrue(); +} + +/* returns true if boolean value evaluates to true + * false otherwise */ +bool ATBooleanOrDerivedImpl::isTrue() const { + return _value; +} + +/* returns false if boolean value evaluates to true + * true otherwise */ +bool ATBooleanOrDerivedImpl::isFalse() const { + return !isTrue(); +} + +AnyAtomicType::AtomicObjectType ATBooleanOrDerivedImpl::getPrimitiveTypeIndex() const { + return getTypeIndex(); +} diff --git a/src/items/impl/ATDateOrDerivedImpl.cpp b/src/items/impl/ATDateOrDerivedImpl.cpp new file mode 100644 index 00000000..7f4e05f5 --- /dev/null +++ b/src/items/impl/ATDateOrDerivedImpl.cpp @@ -0,0 +1,567 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATDateOrDerivedImpl.cpp,v 1.22 2006/11/02 15:07:56 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include // for INT_MIN and INT_MAX +#include // for atoi +#include + +#include "../../utils/DateUtils.hpp" + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +ATDateOrDerivedImpl:: +ATDateOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) + : _typeName(typeName), + _typeURI(typeURI) +{ + setDate(value); +} + +// private constructor for internal use() +ATDateOrDerivedImpl::ATDateOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const MAPM &seconds, + const Timezone::Ptr &timezone, bool hasTimezone) + : seconds_(seconds), + timezone_(timezone), + _hasTimezone(hasTimezone), + _typeName(typeName), + _typeURI(typeURI) +{ +} + +void *ATDateOrDerivedImpl::getInterface(const XMLCh *name) const +{ + if(name == Item::gXQilla) { + return (void*)this; + } + return 0; +} + +/* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ +const XMLCh* ATDateOrDerivedImpl::getPrimitiveTypeName() const { + return this->getPrimitiveName(); +} + +const XMLCh* ATDateOrDerivedImpl::getPrimitiveName() { + return SchemaSymbols::fgDT_DATE; +} + +/* Get the name of this type (ie "integer" for xs:integer) */ +const XMLCh* ATDateOrDerivedImpl::getTypeName() const { + return _typeName; +} + +/* Get the namespace URI for this type */ +const XMLCh* ATDateOrDerivedImpl::getTypeURI() const { + return _typeURI; +} + +AnyAtomicType::AtomicObjectType ATDateOrDerivedImpl::getTypeIndex() { + return AnyAtomicType::DATE; +} + +static inline void decomposeSeconds(const MAPM &value, MAPM &year, MAPM &month, MAPM &day) +{ + DateUtils::convertAbsolute2DMY((value/DateUtils::g_secondsPerDay).floor(), day, month, year); +} + +static inline MAPM composeSeconds(MAPM &YY, MAPM &MM, MAPM &DD) +{ + return DateUtils::convertDMY2Absolute(DD, MM, YY) * DateUtils::g_secondsPerDay; +} + +static inline MAPM tzLocalize(bool hasTimezone, const MAPM &value, const Timezone::Ptr &timezone) +{ + if(!hasTimezone) return value; + return value + timezone->asSeconds(); +} + +static inline MAPM tzNormalize(bool hasTimezone, const MAPM &value, const DynamicContext *context) +{ + if(hasTimezone) return value; + return value - context->getImplicitTimezone()->asSeconds(context)->asMAPM(); +} + +/* If possible, cast this type to the target type */ +AnyAtomicType::Ptr ATDateOrDerivedImpl::castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, + const XMLCh* targetType, const DynamicContext* context) const +{ + XMLBuffer buf(1023, context->getMemoryManager()); + + const XMLCh doubleZero[] = { chDigit_0, chDigit_0, chNull }; + + switch (targetIndex) { + case DATE_TIME: { + MAPM year, month, day; + decomposeSeconds(tzLocalize(_hasTimezone, seconds_, timezone_), year, month, day); + + DateUtils::formatNumber(year, 4, buf); + buf.append(chDash); + DateUtils::formatNumber(month, 2, buf); + buf.append(chDash); + DateUtils::formatNumber(day, 2, buf); + buf.append(chLatin_T); + buf.append(doubleZero); + buf.append(chColon); + buf.append(doubleZero); + buf.append(chColon); + buf.append(doubleZero); + + // Add timezone if exists + if (_hasTimezone) { + buf.append(timezone_->asString(context)); + } + return context->getItemFactory()->createDateTimeOrDerived(targetURI, targetType, buf.getRawBuffer(), context); + } + case G_DAY: { + MAPM year, month, day; + decomposeSeconds(tzLocalize(_hasTimezone, seconds_, timezone_), year, month, day); + + buf.append(chDash); + buf.append(chDash); + buf.append(chDash); + DateUtils::formatNumber(day, 2, buf); + if (_hasTimezone) { + buf.append(timezone_->asString(context)); + } + return context->getItemFactory()->createGDayOrDerived(targetURI, targetType, buf.getRawBuffer(), context); + } + case G_MONTH_DAY: { + MAPM year, month, day; + decomposeSeconds(tzLocalize(_hasTimezone, seconds_, timezone_), year, month, day); + + buf.append(chDash); + buf.append(chDash); + DateUtils::formatNumber(month, 2, buf); + buf.append(chDash); + DateUtils::formatNumber(day, 2, buf); + if (_hasTimezone) { + buf.append(timezone_->asString(context)); + } + return context->getItemFactory()->createGMonthDayOrDerived(targetURI, targetType, buf.getRawBuffer(), context); + } + case G_MONTH: { + MAPM year, month, day; + decomposeSeconds(tzLocalize(_hasTimezone, seconds_, timezone_), year, month, day); + + buf.append(chDash); + buf.append(chDash); + DateUtils::formatNumber(month, 2, buf); + if (_hasTimezone) { + buf.append(timezone_->asString(context)); + } + return context->getItemFactory()->createGMonthOrDerived(targetURI, targetType, buf.getRawBuffer(), context); + } + case G_YEAR_MONTH: { + MAPM year, month, day; + decomposeSeconds(tzLocalize(_hasTimezone, seconds_, timezone_), year, month, day); + + DateUtils::formatNumber(year, 4, buf); + buf.append(chDash); + DateUtils::formatNumber(month, 2, buf); + if (_hasTimezone) { + buf.append(timezone_->asString(context)); + } + return context->getItemFactory()->createGYearMonthOrDerived(targetURI, targetType, buf.getRawBuffer(), context); + } + case G_YEAR: { + MAPM year, month, day; + decomposeSeconds(tzLocalize(_hasTimezone, seconds_, timezone_), year, month, day); + + DateUtils::formatNumber(year, 4, buf); + if (_hasTimezone) { + buf.append(timezone_->asString(context)); + } + return context->getItemFactory()->createGYearOrDerived(targetURI, targetType, buf.getRawBuffer(), context); + } + case ANY_SIMPLE_TYPE: + case UNTYPED_ATOMIC: + //anySimpleType and untypedAtomic follow the same casting rules as string. + case STRING: { + return context->getItemFactory()->createDerivedFromAtomicType(targetIndex, targetURI, targetType, asString(context), context); + } + default: { + return AnyAtomicType::castAsInternal(targetIndex, targetURI, targetType, context); + } + } +} + +/* returns the XMLCh* (canonical) representation of this type */ +const XMLCh* ATDateOrDerivedImpl::asString(const DynamicContext* context) const +{ + XMLBuffer buffer(1023, context->getMemoryManager()); + + MAPM year, month, day; + decomposeSeconds(tzLocalize(_hasTimezone, seconds_, timezone_), year, month, day); + + DateUtils::formatNumber(year, 4, buffer); + buffer.append(chDash); + DateUtils::formatNumber(month, 2, buffer); + buffer.append(chDash); + DateUtils::formatNumber(day, 2, buffer); + // Add timezone if exists + if (_hasTimezone) { + buffer.append(timezone_->asString(context)); + } + return context->getMemoryManager()->getPooledString(buffer.getRawBuffer()); +} + +/* returns true if the two objects represent the same date, + * false otherwise */ +bool ATDateOrDerivedImpl::equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const { + if(getPrimitiveTypeIndex() != target->getPrimitiveTypeIndex()) { + XQThrow2(::IllegalArgumentException,X("ATDateOrDerivedImpl::equals"), + X("Equality operator for given types not supported [err:XPTY0004]")); + } + return compare((const ATDateOrDerivedImpl *)target.get(), context) == 0; +} + +int ATDateOrDerivedImpl::compare(const ATDateOrDerived::Ptr &target, const DynamicContext *context) const +{ + const ATDateOrDerivedImpl *other = (const ATDateOrDerivedImpl *)target.get(); + return tzNormalize(_hasTimezone, seconds_, context).compare(tzNormalize(other->_hasTimezone, other->seconds_, context)); +} + +/** + * Returns an integer representing the year component of this object + */ +ATDecimalOrDerived::Ptr ATDateOrDerivedImpl::getYears(const DynamicContext *context) const { + MAPM year, month, day; + decomposeSeconds(tzLocalize(_hasTimezone, seconds_, timezone_), year, month, day); + + return context->getItemFactory()->createInteger(year, context); +} + +/** + * Returns an integer representing the month component of this object + */ +ATDecimalOrDerived::Ptr ATDateOrDerivedImpl::getMonths(const DynamicContext *context) const { + MAPM year, month, day; + decomposeSeconds(tzLocalize(_hasTimezone, seconds_, timezone_), year, month, day); + + return context->getItemFactory()->createNonNegativeInteger(month, context); +} + +/** + * Returns an integer representing the day component of this object + */ +ATDecimalOrDerived::Ptr ATDateOrDerivedImpl::getDays(const DynamicContext *context) const { + MAPM year, month, day; + decomposeSeconds(tzLocalize(_hasTimezone, seconds_, timezone_), year, month, day); + + return context->getItemFactory()->createNonNegativeInteger(day, context); +} + +/** + * Returns the timezone associated with this object, or + * null, if the timezone is not set + */ +const Timezone::Ptr &ATDateOrDerivedImpl::getTimezone() const { + return timezone_; +} + + +/** + * Returns true if the timezone is defined for this object, false otherwise. + */ +bool ATDateOrDerivedImpl::hasTimezone() const { + return _hasTimezone; +} + +/**mrg@decisionsoft.com + * Setter for timezone. Overrides the current timezone. (Not to be + * confused with addTimezone(). If passed NULL, timezone is removed (unset) + */ +ATDateOrDerived::Ptr ATDateOrDerivedImpl::setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const +{ + MAPM result = seconds_; + if(_hasTimezone) result += timezone_->asSeconds(); + if(timezone != NULLRCP) result -= timezone->asSeconds(); + + return new ATDateOrDerivedImpl(_typeURI, _typeName, result, timezone, timezone != NULLRCP); +} + +/** + * Returns an ATDateOrDerived with a timezone added to it + */ +ATDateOrDerived::Ptr ATDateOrDerivedImpl::addTimezone(const ATDurationOrDerived::Ptr &timezone, + const DynamicContext* context) const +{ + Timezone::Ptr tz = new Timezone(timezone, context); + + if(!_hasTimezone) return setTimezone(tz, context); + + // Keep the time components as 00:00:00 + MAPM result = seconds_ + tz->asSeconds(); + result = (result / DateUtils::g_secondsPerDay).floor() * DateUtils::g_secondsPerDay; + result -= tz->asSeconds(); + + return new ATDateOrDerivedImpl(_typeURI, _typeName, result, tz, true); +} + +/** + * Returns a date with the given yearMonthDuration added to it + */ +ATDateOrDerived::Ptr ATDateOrDerivedImpl::addYearMonthDuration(const ATDurationOrDerived::Ptr &yearMonth, + const DynamicContext* context) const +{ + MAPM result = ATDateTimeOrDerivedImpl::addYearMonthDuration(seconds_, yearMonth->asMonths(context)->asMAPM()); + return new ATDateOrDerivedImpl(_typeURI, _typeName, result, timezone_, _hasTimezone); +} + +/** + * Returns a date with the given dayTimeDuration added to it + */ +ATDateOrDerived::Ptr ATDateOrDerivedImpl::addDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, + const DynamicContext* context) const +{ + MAPM result = seconds_ + dayTime->asSeconds(context)->asMAPM(); + result = (result / DateUtils::g_secondsPerDay).floor() * DateUtils::g_secondsPerDay; + return new ATDateOrDerivedImpl(_typeURI, _typeName, result, timezone_, _hasTimezone); +} + +/** + * Returns a date with the given yearMonthDuration subtracted from it + */ +ATDateOrDerived::Ptr ATDateOrDerivedImpl::subtractYearMonthDuration(const ATDurationOrDerived::Ptr &yearMonth, + const DynamicContext* context) const +{ + MAPM result = ATDateTimeOrDerivedImpl::addYearMonthDuration(seconds_, yearMonth->asMonths(context)->asMAPM().neg()); + return new ATDateOrDerivedImpl(_typeURI, _typeName, result, timezone_, _hasTimezone); +} + +/** + * Returns a date with the given dayTimeDuration subtracted from it + */ +ATDateOrDerived::Ptr ATDateOrDerivedImpl::subtractDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, + const DynamicContext* context) const +{ + MAPM result = seconds_ - dayTime->asSeconds(context)->asMAPM(); + result = (result / DateUtils::g_secondsPerDay).floor() * DateUtils::g_secondsPerDay; + return new ATDateOrDerivedImpl(_typeURI, _typeName, result, timezone_, _hasTimezone); +} + +/** + * Returns a dayTimeDuration corresponding to the difference between this + * and the given ATDateOrDerived* + */ +ATDurationOrDerived::Ptr ATDateOrDerivedImpl::subtractDate(const ATDateOrDerived::Ptr &date, + const DynamicContext* context) const +{ + const ATDateOrDerivedImpl *other = (const ATDateOrDerivedImpl *)date.get(); + + MAPM secDiff = tzNormalize(_hasTimezone, seconds_, context) - + tzNormalize(other->_hasTimezone, other->seconds_, context); + + return context->getItemFactory()->createDayTimeDuration(secDiff, context); +} + + +AnyAtomicType::AtomicObjectType ATDateOrDerivedImpl::getPrimitiveTypeIndex() const { + return this->getTypeIndex(); +} + +void ATDateOrDerivedImpl::setDate(const XMLCh* const date) { + unsigned int length = XMLString::stringLen(date); + + if(date == 0) { + XQThrow2(XPath2TypeCastException,X("ATDateOrDerived::setDate"), X("Invalid representation of date [err:FORG0001]")); + } + + // State variables etc. + bool gotDigit = false; + + unsigned int pos = 0; + long int tmpnum = 0; + unsigned int numDigit = 0; + bool negative = false; + + // defaulting values + MAPM YY = 1; + MAPM MM = 0; + MAPM DD = 0; + _hasTimezone = false; + bool zonepos = false; + int zonehh = 0; + int zonemm = 0; + + int state = 0 ; // 0 = year / 1 = month / 2 = day + // 6 = timezonehour / 7 = timezonemin + XMLCh tmpChar; + + bool wrongformat = false; + + if ( length > 0 && date[0] == L'-' ) { + negative = true; + pos = 1; + }else{ + pos = 0; + } + + while ( ! wrongformat && pos < length) { + tmpChar = date[pos]; + pos++; + switch(tmpChar) { + case 0x0030: + case 0x0031: + case 0x0032: + case 0x0033: + case 0x0034: + case 0x0035: + case 0x0036: + case 0x0037: + case 0x0038: + case 0x0039: { + numDigit ++; + tmpnum *= 10; + tmpnum += static_cast(tmpChar - 0x0030); + gotDigit = true; + break; + } + case L'-' : { + if ( gotDigit ) { + if (state == 0 && numDigit >= 4) { + YY = tmpnum; + if (negative) { + YY = YY * -1; + } + tmpnum = 0; + gotDigit = false; + numDigit = 0 ; + } else if (state == 1 && numDigit == 2) { + MM = tmpnum; + tmpnum = 0; + gotDigit = false; + numDigit = 0 ; + } else if ( state == 2 && numDigit == 2) { + DD += tmpnum; + gotDigit = false; + zonepos = false; + _hasTimezone = true; + tmpnum = 0; + state = 5; + numDigit = 0 ; + } else { + wrongformat = true; + } + state ++; + } + break; + } + case L':' : { + if (gotDigit && state == 6 && numDigit == 2) { + zonehh = tmpnum; + tmpnum = 0; + gotDigit = false; + state ++; + numDigit = 0 ; + }else { + wrongformat = true; + } + break; + } + case L'+' : { + if ( gotDigit && state == 2 && numDigit == 2) { + DD += tmpnum; + state = 6; + gotDigit = false; + zonepos = true; + _hasTimezone = true; + tmpnum = 0; + numDigit = 0 ; + } else { + wrongformat = true; + } + break; + } + case L'Z' : { + if (gotDigit && state == 2 && numDigit == 2) { + DD += tmpnum; + state = 8; // final state + _hasTimezone = true; + gotDigit = false; + tmpnum = 0; + numDigit = 0 ; + } else { + wrongformat = true; + } + break; + } + default: + wrongformat = true; + } + } + + if (gotDigit) { + if ( gotDigit && state == 7 && numDigit == 2) { + zonemm = tmpnum; + _hasTimezone = true; + }else if ( gotDigit && state == 2 && numDigit == 2) { + DD += tmpnum; + }else { + wrongformat = true; + } + } + + // Verify date + if ( MM > 12 || YY == 0 || zonehh > 24 || zonemm > 59 ) + wrongformat = true; + else if(DD > DateUtils::maximumDayInMonthFor(YY, MM)) + wrongformat = true; + + if ( wrongformat) + { + XQThrow2(XPath2TypeCastException,X("ATDateOrDerivedImpl::setDate"), X("Invalid representation of date [err:FORG0001]")); + } + + timezone_ = new Timezone(Timezone::convert(zonepos, zonehh, zonemm)); + + seconds_ = composeSeconds(YY, MM, DD); + + if(_hasTimezone) { + // If we have a timezone, then seconds_ needs to be normalized + seconds_ -= timezone_->asSeconds(); + } +} + +MAPM ATDateOrDerivedImpl::parseDate(const XMLCh* const date, const MAPM &implicitTimezone) +{ + ATDateOrDerivedImpl dt(0, 0, date); + if(!dt._hasTimezone) + return dt.seconds_ - implicitTimezone; + return dt.seconds_; +} + diff --git a/src/items/impl/ATDateTimeOrDerivedImpl.cpp b/src/items/impl/ATDateTimeOrDerivedImpl.cpp new file mode 100644 index 00000000..94d161df --- /dev/null +++ b/src/items/impl/ATDateTimeOrDerivedImpl.cpp @@ -0,0 +1,756 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATDateTimeOrDerivedImpl.cpp,v 1.23 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include // for INT_MIN and INT_MAX +#include // for atoi +#include + +#include "../../utils/DateUtils.hpp" + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +ATDateTimeOrDerivedImpl:: +ATDateTimeOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context): + _typeName(typeName), + _typeURI(typeURI) { + + setDateTime(value); +} + +// private constructor for internal use +ATDateTimeOrDerivedImpl::ATDateTimeOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const MAPM &seconds, + const Timezone::Ptr &timezone, bool hasTimezone) + : seconds_(seconds), + timezone_(timezone), + _hasTimezone(hasTimezone), + _typeName(typeName), + _typeURI(typeURI) +{ +} + +void *ATDateTimeOrDerivedImpl::getInterface(const XMLCh *name) const +{ + if(name == Item::gXQilla) { + return (void*)this; + } + return 0; +} + +/* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ +const XMLCh* ATDateTimeOrDerivedImpl::getPrimitiveTypeName() const { + return this->getPrimitiveName(); +} + +const XMLCh* ATDateTimeOrDerivedImpl::getPrimitiveName() { + return SchemaSymbols::fgDT_DATETIME; +} + +/* Get the name of this type (ie "integer" for xs:integer) */ +const XMLCh* ATDateTimeOrDerivedImpl::getTypeName() const { + return _typeName; +} + +/* Get the namespace URI for this type */ +const XMLCh* ATDateTimeOrDerivedImpl::getTypeURI() const { + return _typeURI; +} + +AnyAtomicType::AtomicObjectType ATDateTimeOrDerivedImpl::getTypeIndex() { + return AnyAtomicType::DATE_TIME; +} + +static inline MAPM hourFromSeconds(const MAPM &value) +{ + return DateUtils::modulo(value, DateUtils::g_secondsPerDay).integer_divide(DateUtils::g_secondsPerHour); +} + +static inline MAPM minuteFromSeconds(const MAPM &value) +{ + return DateUtils::modulo(value, DateUtils::g_secondsPerHour).integer_divide(DateUtils::g_secondsPerMinute); +} + +static inline MAPM secondFromSeconds(const MAPM &value) +{ + return DateUtils::modulo(value, DateUtils::g_secondsPerMinute); +} + +static inline void dateFromSeconds(const MAPM &value, MAPM &year, MAPM &month, MAPM &day) +{ + DateUtils::convertAbsolute2DMY((value/DateUtils::g_secondsPerDay).floor(), day, month, year); +} + +static inline void decomposeSeconds(const MAPM &value, MAPM &year, MAPM &month, MAPM &day, + MAPM &hour, MAPM &minute, MAPM &second) +{ + hour = hourFromSeconds(value); + minute = minuteFromSeconds(value); + second = secondFromSeconds(value); + dateFromSeconds(value, year, month, day); +} + +static inline MAPM composeSeconds(MAPM &YY, MAPM &MM, MAPM &DD, + MAPM &hh, MAPM &mm, MAPM &ss) +{ + return DateUtils::convertDMY2Absolute(DD, MM, YY) * DateUtils::g_secondsPerDay + + hh * DateUtils::g_secondsPerHour + + mm * DateUtils::g_secondsPerMinute + + ss; +} + +static inline MAPM tzLocalize(bool hasTimezone, const MAPM &value, const Timezone::Ptr &timezone) +{ + if(!hasTimezone) return value; + return value + timezone->asSeconds(); +} + +static inline MAPM tzNormalize(bool hasTimezone, const MAPM &value, const DynamicContext *context) +{ + if(hasTimezone) return value; + return value - context->getImplicitTimezone()->asSeconds(context)->asMAPM(); +} + +/* If possible, cast this type to the target type */ +AnyAtomicType::Ptr ATDateTimeOrDerivedImpl::castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const { + XMLBuffer buf(1023, context->getMemoryManager()); + + switch (targetIndex) { + case DATE: { + MAPM year, month, day; + dateFromSeconds(tzLocalize(_hasTimezone, seconds_, timezone_), year, month, day); + + DateUtils::formatNumber(year, 4, buf); + buf.append(chDash); + DateUtils::formatNumber(month, 2, buf); + buf.append(chDash); + DateUtils::formatNumber(day, 2, buf); + // Add timezone if exists + if (_hasTimezone) { + buf.append(timezone_->asString(context)); + } + return context->getItemFactory()->createDateOrDerived(targetURI, targetType, buf.getRawBuffer(), context); + } + case G_DAY: { + MAPM year, month, day; + dateFromSeconds(tzLocalize(_hasTimezone, seconds_, timezone_), year, month, day); + + buf.append(chDash); + buf.append(chDash); + buf.append(chDash); + DateUtils::formatNumber(day, 2, buf); + if (_hasTimezone) { + buf.append(timezone_->asString(context)); + } + return context->getItemFactory()->createGDayOrDerived(targetURI, targetType, buf.getRawBuffer(), context); + } + case G_MONTH_DAY: { + MAPM year, month, day; + dateFromSeconds(tzLocalize(_hasTimezone, seconds_, timezone_), year, month, day); + + buf.append(chDash); + buf.append(chDash); + DateUtils::formatNumber(month, 2, buf); + buf.append(chDash); + DateUtils::formatNumber(day, 2, buf); + if (_hasTimezone) { + buf.append(timezone_->asString(context)); + } + return context->getItemFactory()->createGMonthDayOrDerived(targetURI, targetType, buf.getRawBuffer(), context); + } + case G_MONTH: { + MAPM year, month, day; + dateFromSeconds(tzLocalize(_hasTimezone, seconds_, timezone_), year, month, day); + + buf.append(chDash); + buf.append(chDash); + DateUtils::formatNumber(month, 2, buf); + if (_hasTimezone) { + buf.append(timezone_->asString(context)); + } + return context->getItemFactory()->createGMonthOrDerived(targetURI, targetType, buf.getRawBuffer(), context); + } + case TIME: { + MAPM value = tzLocalize(_hasTimezone, seconds_, timezone_); + + MAPM hour = hourFromSeconds(value); + MAPM minute = minuteFromSeconds(value); + MAPM second = secondFromSeconds(value); + + DateUtils::formatNumber(hour, 2, buf); + buf.append(chColon); + DateUtils::formatNumber(minute, 2, buf); + buf.append(chColon); + if(second < 10) + buf.append(chDigit_0); + buf.append(Numeric::asDecimalString(second, ATDecimalOrDerivedImpl::g_nSignificantDigits, context)); + if (_hasTimezone) { + buf.append(timezone_->asString(context)); + } + return context->getItemFactory()->createTimeOrDerived(targetURI, targetType, buf.getRawBuffer(), context); + } + case G_YEAR_MONTH: { + MAPM year, month, day; + dateFromSeconds(tzLocalize(_hasTimezone, seconds_, timezone_), year, month, day); + + DateUtils::formatNumber(year, 4, buf); + buf.append(chDash); + DateUtils::formatNumber(month, 2, buf); + if (_hasTimezone) { + buf.append(timezone_->asString(context)); + } + return context->getItemFactory()->createGYearMonthOrDerived(targetURI, targetType, buf.getRawBuffer(), context); + } + case G_YEAR: { + MAPM year, month, day; + dateFromSeconds(tzLocalize(_hasTimezone, seconds_, timezone_), year, month, day); + + DateUtils::formatNumber(year, 4, buf); + if (_hasTimezone) { + buf.append(timezone_->asString(context)); + } + return context->getItemFactory()->createGYearOrDerived(targetURI, targetType, buf.getRawBuffer(), context); + } + case ANY_SIMPLE_TYPE: + case UNTYPED_ATOMIC: + //anySimpleType and untypedAtomic follow the same casting rules as string. + case STRING: { + return context->getItemFactory()->createDerivedFromAtomicType(targetIndex, targetURI, targetType, asString(context), context); + } + default: { + return AnyAtomicType::castAsInternal(targetIndex, targetURI, targetType, context); + } + } +} + +/* returns the XMLCh* (canonical) representation of this type */ +const XMLCh* ATDateTimeOrDerivedImpl::asString(const DynamicContext* context) const { + XMLBuffer buffer(1023, context->getMemoryManager()); + + MAPM year, month, day, hour, minute, second; + decomposeSeconds(tzLocalize(_hasTimezone, seconds_, timezone_), year, month, day, hour, minute, second); + + DateUtils::formatNumber(year, 4, buffer); + buffer.append(chDash); + DateUtils::formatNumber(month, 2, buffer); + buffer.append(chDash); + DateUtils::formatNumber(day, 2, buffer); + buffer.append(chLatin_T); + DateUtils::formatNumber(hour, 2, buffer); + buffer.append(chColon); + DateUtils::formatNumber(minute, 2, buffer); + buffer.append(chColon); + if(second < MM_Ten) + buffer.append(chDigit_0); + buffer.append(Numeric::asDecimalString(second, ATDecimalOrDerivedImpl::g_nSignificantDigits, context)); + // Add timezone if exists + if(_hasTimezone) { + buffer.append(timezone_->asString(context)); + } + return context->getMemoryManager()->getPooledString(buffer.getRawBuffer()); +} + +/* returns true if the two objects represent the same date, + * false otherwise */ +bool ATDateTimeOrDerivedImpl::equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const { + if(this->getPrimitiveTypeIndex() != target->getPrimitiveTypeIndex()) { + XQThrow2(::IllegalArgumentException,X("ATDateTimeOrDerivedImpl::equals"), + X("Equality operator for given types not supported [err:XPTY0004]")); + } + return compare((const ATDateTimeOrDerivedImpl *)target.get(), context) == 0; +} + +int ATDateTimeOrDerivedImpl::compare(const ATDateTimeOrDerived::Ptr &target, const DynamicContext* context) const +{ + const ATDateTimeOrDerivedImpl *other = (const ATDateTimeOrDerivedImpl *)target.get(); + + return tzNormalize(_hasTimezone, seconds_, context).compare(tzNormalize(other->_hasTimezone, other->seconds_, context)); +} + +/** + * Returns an integer representing the year component of this object + */ +ATDecimalOrDerived::Ptr ATDateTimeOrDerivedImpl::getYears(const DynamicContext *context) const { + MAPM year, month, day; + dateFromSeconds(tzLocalize(_hasTimezone, seconds_, timezone_), year, month, day); + + return context->getItemFactory()->createInteger(year, context); +} + +/** + * Returns an integer representing the month component of this object + */ +ATDecimalOrDerived::Ptr ATDateTimeOrDerivedImpl::getMonths(const DynamicContext *context) const { + MAPM year, month, day; + dateFromSeconds(tzLocalize(_hasTimezone, seconds_, timezone_), year, month, day); + + return context->getItemFactory()->createNonNegativeInteger(month, context); +} + +/** + * Returns an integer representing the day component of this object + */ +ATDecimalOrDerived::Ptr ATDateTimeOrDerivedImpl::getDays(const DynamicContext *context) const { + MAPM year, month, day; + dateFromSeconds(tzLocalize(_hasTimezone, seconds_, timezone_), year, month, day); + + return context->getItemFactory()->createNonNegativeInteger(day, context); +} + +/** + * Returns an integer representing the hour component of this object + */ +ATDecimalOrDerived::Ptr ATDateTimeOrDerivedImpl::getHours(const DynamicContext *context) const { + return context->getItemFactory()-> + createNonNegativeInteger(hourFromSeconds(tzLocalize(_hasTimezone, seconds_, timezone_)), context); +} + +/** + * Returns an integer representing the minute component of this object + */ +ATDecimalOrDerived::Ptr ATDateTimeOrDerivedImpl::getMinutes(const DynamicContext *context) const { + return context->getItemFactory()-> + createNonNegativeInteger(minuteFromSeconds(tzLocalize(_hasTimezone, seconds_, timezone_)), context); +} + +/** + * Returns an decimal representing the second component of this object + */ +ATDecimalOrDerived::Ptr ATDateTimeOrDerivedImpl::getSeconds(const DynamicContext *context) const { + return context->getItemFactory()-> + createDecimal(secondFromSeconds(tzLocalize(_hasTimezone, seconds_, timezone_)), context); +} + +/** + * Returns the timezone associated with this object, or + * null, if the timezone is not set + */ +const Timezone::Ptr &ATDateTimeOrDerivedImpl::getTimezone() const { + return timezone_; +} + +/** + * Returns true if the timezone is defined for this object, false otherwise. + */ +bool ATDateTimeOrDerivedImpl::hasTimezone() const { + return _hasTimezone; +} + +/** + * Setter for timezone. Overrides the current timezone. (Not to be + * confused with addTimezone(). If passed null, timezone is removed (unset) + */ +ATDateTimeOrDerived::Ptr ATDateTimeOrDerivedImpl::setTimezone(const Timezone::Ptr &timezone, + const DynamicContext* context) const +{ + MAPM result = seconds_; + if(_hasTimezone) result += timezone_->asSeconds(); + if(timezone != NULLRCP) result -= timezone->asSeconds(); + + return new ATDateTimeOrDerivedImpl(_typeURI, _typeName, result, timezone, timezone != NULLRCP); +} + +/** + * Returns an ATDateTimeOrDerived with a timezone added to it + */ +ATDateTimeOrDerived::Ptr ATDateTimeOrDerivedImpl::addTimezone(const ATDurationOrDerived::Ptr &timezone, + const DynamicContext* context) const +{ + if(!_hasTimezone) return setTimezone(new Timezone(timezone, context), context); + return new ATDateTimeOrDerivedImpl(_typeURI, _typeName, seconds_, new Timezone(timezone, context), true); +} + +/** + * Returns a date with the given yearMonthDuration added to it + */ +ATDateTimeOrDerived::Ptr ATDateTimeOrDerivedImpl::addYearMonthDuration(const ATDurationOrDerived::Ptr &yearMonth, + const DynamicContext* context) const { + return addYearMonthDuration(yearMonth->asMonths(context)->asMAPM(), context); +} + +/** + * Returns a date with the given yearMonthDuration added to it + */ +ATDateTimeOrDerived::Ptr ATDateTimeOrDerivedImpl::addYearMonthDuration(const MAPM &monthsToAdd, + const DynamicContext* context) const { + return new ATDateTimeOrDerivedImpl(_typeURI, _typeName, addYearMonthDuration(seconds_, monthsToAdd), + timezone_, _hasTimezone); +} + +MAPM ATDateTimeOrDerivedImpl::addYearMonthDuration(const MAPM &seconds, const MAPM &monthsToAdd) +{ + MAPM year, month, day, hour, minute, second; + decomposeSeconds(seconds, year, month, day, hour, minute, second); + + MAPM totalMonths = month + monthsToAdd - MM_One; + + MAPM MM = DateUtils::modulo(totalMonths, 12) + MM_One; + MAPM carry = (totalMonths / 12).floor(); + MAPM finalYears = carry + year; + + assert(year.sign() != 0); // We should never have _YY = 0000 + + MAPM YY; + // Fix year 0000 problem + if(finalYears.sign() <= 0 && year.sign() >= 0) { + YY = finalYears - MM_One; + } + else if(finalYears.sign() >= 0 && year.sign() < 0) { + YY = finalYears + MM_One; + } else { + YY = finalYears; + } + + int maxDay = DateUtils::maximumDayInMonthFor(YY, MM); + if(day > maxDay) + day = maxDay; + + return composeSeconds(YY, MM, day, hour, minute, second); +} + +/** + * Returns a date with the given dayTimeDuration added to it + */ +ATDateTimeOrDerived::Ptr ATDateTimeOrDerivedImpl::addDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, const DynamicContext* context) const { + return addDayTimeDuration(dayTime->asSeconds(context)->asMAPM(), context); +} + +/** + * Returns a date with the given yearMonthDuration subtracted from it + */ +ATDateTimeOrDerived::Ptr ATDateTimeOrDerivedImpl::subtractYearMonthDuration(const ATDurationOrDerived::Ptr &yearMonth, + const DynamicContext* context) const { + return addYearMonthDuration(yearMonth->asMonths(context)->asMAPM().neg(), context); +} + +/** + * Returns a date with the given dayTimeDuration subtracted from it + */ +ATDateTimeOrDerived::Ptr ATDateTimeOrDerivedImpl::subtractDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, + const DynamicContext* context) const { + return addDayTimeDuration(dayTime->asSeconds(context)->asMAPM().neg(), context); +} + +ATDateTimeOrDerived::Ptr ATDateTimeOrDerivedImpl::addDayTimeDuration(const MAPM &secondsToAdd, + const DynamicContext* context) const { + + return new ATDateTimeOrDerivedImpl(_typeURI, _typeName, seconds_ + secondsToAdd, + timezone_, _hasTimezone); +} + +/** + * Returns a dayTimeDuration corresponding to the difference between this + * and the given ATDateTimeOrDerived* + */ +ATDurationOrDerived::Ptr ATDateTimeOrDerivedImpl::subtractDateTimeAsDayTimeDuration(const ATDateTimeOrDerived::Ptr &date, + const DynamicContext* context) const { + const ATDateTimeOrDerivedImpl *other = (const ATDateTimeOrDerivedImpl *)date.get(); + + MAPM secDiff = tzNormalize(_hasTimezone, seconds_, context) - + tzNormalize(other->_hasTimezone, other->seconds_, context); + + return context->getItemFactory()->createDayTimeDuration(secDiff, context); +} + +/** + * Returns a dayTimeDuration corresponding to the difference between this + * and the given ATDateTimeOrDerived* + */ +ATDurationOrDerived::Ptr ATDateTimeOrDerivedImpl::subtractDateTimeAsYearMonthDuration(const ATDateTimeOrDerived::Ptr &date, + const DynamicContext* context) const { + + const ATDateTimeOrDerivedImpl *other = (const ATDateTimeOrDerivedImpl *)date.get(); + + // Call subtractDateTimeAsDayTimeDuration + const ATDurationOrDerived::Ptr dayTimeDiff = subtractDateTimeAsDayTimeDuration(date, context); + + // put it into yearMonthDuration form + MAPM days = dayTimeDiff->getDays(context)->asMAPM(); + + MAPM months = MM_Zero; + // Get number of months + MAPM YY, MM, DD; + dateFromSeconds(tzNormalize(other->_hasTimezone, other->seconds_, context), YY, MM, DD); + + int curYear = DateUtils::asInt(YY); + int curMonth = DateUtils::asInt(MM); + int curDays = DateUtils::asInt(DD) - 1; + while (true) { + int currentDaysInMonth = DateUtils::maximumDayInMonthFor(curYear, curMonth); + int daysToNextMonth = currentDaysInMonth - curDays; + if (days > daysToNextMonth) { + days = days - daysToNextMonth; + ++months; + + ++curMonth; + if(curMonth > 12) { + ++curYear; + curMonth = 1; + curDays = 0; + } + } + else + break; + } + + return context->getItemFactory()->createYearMonthDuration(months, context); +} + +AnyAtomicType::AtomicObjectType ATDateTimeOrDerivedImpl::getPrimitiveTypeIndex() const { + return this->getTypeIndex(); +} + +void ATDateTimeOrDerivedImpl::setDateTime(const XMLCh* const dateTime) { + unsigned int length = XMLString::stringLen(dateTime); + + if(dateTime == 0) { + XQThrow2(XPath2TypeCastException,X("ATDateTimeOrDerivedImpl::setDateTime"), X("Invalid representation of dateTime [err:FORG0001]")); + } + + // State variables etc. + bool gotDot = false; + bool gotDigit = false; + + unsigned int pos = 0; + long int tmpnum = 0; + MAPM decplace = 1; + MAPM tmpdec = 0; + bool negative = false; + + unsigned numDigit = 0; + + // defaulting values + MAPM YY = 0; + MAPM MM = 0; + MAPM DD = 0; + MAPM hh = 0; + MAPM mm = 0; + MAPM ss = 0; + _hasTimezone = false; + + bool zonepos = true; + int zonehh = 0; + int zonemm = 0; + + int state = 0 ; // 0 = year / 1 = month / 2 = day / 3 = hour + // 4 = minutes / 5 = sec / 6 = timezonehour / 7 = timezonemin + XMLCh tmpChar; + + bool wrongformat = false; + + if ( length > 0 && dateTime[0] == L'-' ) { + negative = true; + pos = 1; + }else{ + pos = 0; + } + + while ( ! wrongformat && pos < length) { + tmpChar = dateTime[pos]; + pos++; + switch(tmpChar) { + case L'.': { + if (! gotDot && gotDigit && state == 5 && numDigit == 2) { + gotDot = true; + ss = tmpnum; + gotDigit = false; + tmpnum = 0; + break; + } + wrongformat = true; + break; + } + case 0x0030: + case 0x0031: + case 0x0032: + case 0x0033: + case 0x0034: + case 0x0035: + case 0x0036: + case 0x0037: + case 0x0038: + case 0x0039: { + if ( gotDot && state == 5) { + decplace *= 10; + } else { + numDigit ++; + } + tmpnum *= 10; + tmpnum += static_cast(tmpChar - 0x0030); + gotDigit = true; + break; + } + case L'T' : { + if ( state == 2 && gotDigit && !gotDot && numDigit == 2) { + state ++; + DD = tmpnum; + tmpnum = 0; + gotDigit = false; + numDigit = 0; + } else { + wrongformat = true; + } + break; + } + case L'-' : { + if ( gotDigit ) { + if (state == 0 && numDigit >= 4 ) { + YY = tmpnum; + if (negative) { + YY = YY * -1; + } + tmpnum = 0; + gotDigit = false; + numDigit = 0; + } else if (state == 1 && numDigit == 2) { + MM = tmpnum; + tmpnum = 0; + gotDigit = false; + numDigit = 0; + } else if ( state == 5 && numDigit == 2) { + tmpdec = tmpnum / decplace; + ss += tmpdec; + gotDigit = false; + _hasTimezone = true; + zonepos = false; + tmpnum = 0; + numDigit = 0; + } else { + wrongformat = true; + } + state ++; + } + break; + } + case L'+' : { + if ( gotDigit && state == 5 && numDigit == 2) { + tmpdec = tmpnum / decplace; + ss += tmpdec; + state = 6; + gotDigit = false; + _hasTimezone = true; + zonepos = true; + tmpnum = 0; + numDigit = 0; + } else { + wrongformat = true; + } + break; + } + case L':' : { + if (gotDigit ) { + if (state == 3 && numDigit == 2) { + hh = tmpnum; + tmpnum = 0; + gotDigit = false; + numDigit = 0; + } else if ( state == 4 && numDigit == 2) { + mm = tmpnum; + tmpnum = 0; + gotDigit = false; + numDigit = 0; + } else if ( state == 6 && numDigit == 2) { + zonehh = tmpnum; + tmpnum = 0; + gotDigit = false; + numDigit = 0; + } + state ++; + }else { + wrongformat = true; + } + break; + } + case L'Z' : { + if (gotDigit && state == 5 && numDigit == 2) { + tmpdec = tmpnum / decplace; + ss += tmpdec; + state = 8; // final state + _hasTimezone = true; + gotDigit = false; + tmpnum = 0; + numDigit = 0; + } else { + wrongformat = true; + } + break; + } + default: + wrongformat = true; + } + } + + if (gotDigit) { + if ( gotDigit && state == 7 && numDigit == 2) { + zonemm = tmpnum; + }else if ( gotDigit && state == 5 && numDigit == 2) { + tmpdec = tmpnum / decplace; + ss += tmpdec; + }else { + wrongformat = true; + } + } + + // check time format + if(MM > 12 || YY == 0 || DD > DateUtils::maximumDayInMonthFor(YY, MM) || hh > 24 || mm > 59 || ss > 59 || zonehh > 24 || zonemm > 59 ) + { + wrongformat = true; + } + + if (wrongformat) + { + XQThrow2(XPath2TypeCastException,X("XSDateTimeImpl::setDateTime"), X("Invalid representation of dateTime [err:FORG0001]")); + } + + timezone_ = new Timezone(Timezone::convert(zonepos, zonehh, zonemm)); + + seconds_ = composeSeconds(YY, MM, DD, hh, mm, ss); + + if(_hasTimezone) { + // If we have a timezone, then seconds_ needs to be normalized + seconds_ -= timezone_->asSeconds(); + } +} + +MAPM ATDateTimeOrDerivedImpl::parseDateTime(const XMLCh* const dateTime, const MAPM &implicitTimezone) +{ + ATDateTimeOrDerivedImpl dt(0, 0, dateTime); + if(!dt._hasTimezone) + return dt.seconds_ - implicitTimezone; + return dt.seconds_; +} diff --git a/src/items/impl/ATDecimalOrDerivedImpl.cpp b/src/items/impl/ATDecimalOrDerivedImpl.cpp new file mode 100644 index 00000000..d3b6bfe8 --- /dev/null +++ b/src/items/impl/ATDecimalOrDerivedImpl.cpp @@ -0,0 +1,611 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATDecimalOrDerivedImpl.cpp,v 1.20 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +unsigned int ATDecimalOrDerivedImpl::g_nSignificantDigits=50; + +ATDecimalOrDerivedImpl:: +ATDecimalOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const StaticContext* context): + ATDecimalOrDerived(), + _typeName(typeName), + _typeURI(typeURI) { + + setDecimal(value); + if(this->isInstanceOfType (SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER, context)) { + _isInteger = true; + } else { + _isInteger = false; + } +} + +ATDecimalOrDerivedImpl:: +ATDecimalOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const MAPM value, const StaticContext* context): + ATDecimalOrDerived(), + _typeName(typeName), + _typeURI(typeURI) { + + _decimal = value; + if(this->isInstanceOfType (SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER, context)) { + _isInteger = true; + } else { + _isInteger = false; + } +} + +ATDecimalOrDerivedImpl:: +ATDecimalOrDerivedImpl(int value): + ATDecimalOrDerived(), + _typeName(SchemaSymbols::fgDT_INTEGER), + _typeURI(SchemaSymbols::fgURI_SCHEMAFORSCHEMA) { + + _decimal = value; + _isInteger = true; +} + +void *ATDecimalOrDerivedImpl::getInterface(const XMLCh *name) const +{ + if(name == Item::gXQilla) { + return (void*)this; + } + return 0; +} + +/* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ +const XMLCh* ATDecimalOrDerivedImpl::getPrimitiveTypeName() const { + return getPrimitiveName(); +} + +const XMLCh* ATDecimalOrDerivedImpl::getPrimitiveName() { + return SchemaSymbols::fgDT_DECIMAL; +} + +/* Get the name of this type (ie "integer" for xs:integer) */ +const XMLCh* ATDecimalOrDerivedImpl::getTypeName() const { + return _typeName; +} + +/* Get the namespace URI for this type */ +const XMLCh* ATDecimalOrDerivedImpl::getTypeURI() const { + return _typeURI; +} + +AnyAtomicType::AtomicObjectType ATDecimalOrDerivedImpl::getTypeIndex() { + return AnyAtomicType::DECIMAL; +} + +/* returns the XMLCh* (canonical) representation of this type */ +const XMLCh* ATDecimalOrDerivedImpl::asString(const DynamicContext* context) const +{ + return asDecimalString(g_nSignificantDigits, context); +} + +/* Promote this to the given type, if possible */ +Numeric::Ptr ATDecimalOrDerivedImpl::promoteTypeIfApplicable(const XMLCh* typeURI, const XMLCh* typeName, const DynamicContext* context) const { + // if target is instance of xs:decimal, or if typeName == double or if typeName == float, cast + if( this->isInstanceOfType(typeURI, typeName, context) ) { + return this; // no need to promote, we are already a decimal (or possibly anyAtomicType, anySimpleType, anyType) + } else if( (XPath2Utils::equals(typeName, SchemaSymbols::fgDT_DOUBLE) && + XPath2Utils::equals(typeURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) || + (XPath2Utils::equals(typeName, SchemaSymbols::fgDT_FLOAT) && + XPath2Utils::equals(typeURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) ) { + return (const Numeric::Ptr )this->castAs(typeURI, typeName, context); + } else { + return 0; + } +} + +/** Returns a Numeric object which is the sum of this and other */ +Numeric::Ptr ATDecimalOrDerivedImpl::add(const Numeric::Ptr &other, const DynamicContext* context) const { + if(this->isOfType(other->getTypeURI(), other->getTypeName(), context)) { + // if both are of the same type exactly, we can perform addition + ATDecimalOrDerivedImpl* otherImpl = (ATDecimalOrDerivedImpl*)(const Numeric*)other; + + // if integer, return xs:integer, otherwise xs:decimal + if(_isInteger) { + return context->getItemFactory()->createInteger(_decimal + otherImpl->_decimal, context); + } + return context->getItemFactory()->createDecimal(_decimal + otherImpl->_decimal, context); + } else if(this->getPrimitiveTypeIndex() != other->getPrimitiveTypeIndex()) { + // if other is not a decimal, then we need to promote this to a float or double + return ((const Numeric::Ptr )this->castAs(other->getPrimitiveTypeURI(), other->getPrimitiveTypeName(), context))->add(other, context); + } else if (this->isInstanceOfType(other->getTypeURI(), other->getTypeName(), context)) { + // here we know we have two decimals, and this is 'lower' in the hierarchy than other + // so cast this to other's type + return ((const Numeric::Ptr )this->castAs(other->getTypeURI(), other->getTypeName(), context))->add(other, context); + } else if (other->isInstanceOfType(this->getTypeURI(), this->getTypeName(), context)) { + // here we have two decimals, and this is 'higher' in the hierarchy than other + // so cast other to this' type + return this->add((const Numeric::Ptr )other->castAs(this->getTypeURI(), this->getTypeName(), context), context); + } else { + // we have two separate branches. if either is instance of integer, cast it to integer, otherwise, cast to decimal + // revisit: this is not the prettiest way to do it. You would want to go up the tree one by one instead of + // jumping to integer and decimal + ATDecimalOrDerived::Ptr first; + ATDecimalOrDerived::Ptr second; + if(this->_isInteger) { + first = (const ATDecimalOrDerived::Ptr )this->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER, context); + } else { + first = (const ATDecimalOrDerived::Ptr )this->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_DECIMAL, context); + } + + if(((ATDecimalOrDerivedImpl*)(const Numeric*)other)->_isInteger) { + second = (const ATDecimalOrDerived::Ptr )other->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER, context); + } else { + second = (const ATDecimalOrDerived::Ptr )other->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_DECIMAL, context); + } + return first->add(second, context); + } + + +} + +/** Returns a Numeric object which is the difference of this and + * other */ +Numeric::Ptr ATDecimalOrDerivedImpl::subtract(const Numeric::Ptr &other, const DynamicContext* context) const { + if(this->isOfType(other->getTypeURI(), other->getTypeName(), context)) { + // if both are of the same type exactly, we can perform subtraction + ATDecimalOrDerivedImpl* otherImpl = (ATDecimalOrDerivedImpl*)(const Numeric*)other; + // if integer, return xs:integer, otherwise xs:decimal + if(_isInteger) { + return context->getItemFactory()->createInteger(_decimal - otherImpl->_decimal, context); + } + return context->getItemFactory()->createDecimal(_decimal - otherImpl->_decimal, context); + + } else if(this->getPrimitiveTypeIndex() != other->getPrimitiveTypeIndex()) { + // if other is not a decimal, then we need to promote this to a float or double + return ((const Numeric::Ptr )this->castAs(other->getPrimitiveTypeURI(), other->getPrimitiveTypeName(), context))->subtract(other, context); + } else if (this->isInstanceOfType(other->getTypeURI(), other->getTypeName(), context)) { + // here we know we have two decimals, and this is 'lower' in the hierarchy than other + // so cast this to other's type + return ((const Numeric::Ptr )this->castAs(other->getTypeURI(), other->getTypeName(), context))->subtract(other, context); + } else if (other->isInstanceOfType(this->getTypeURI(), this->getTypeName(), context)) { + // here we have two decimals, and this is 'higher' in the hierarchy than other + // so cast other to this' type + return this->subtract((const Numeric::Ptr )other->castAs(this->getTypeURI(), this->getTypeName(), context), context); + } else { + // we have two separate branches. if either is instance of integer, cast it to integer, otherwise, cast to decimal + // revisit: this is not the prettiest way to do it. You would want to go up the tree one by one instead of + // jumping to integer and decimal + ATDecimalOrDerived::Ptr first; + ATDecimalOrDerived::Ptr second; + if(this->_isInteger) { + first = (const ATDecimalOrDerived::Ptr )this->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER, context); + } else { + first = (const ATDecimalOrDerived::Ptr )this->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_DECIMAL, context); + } + + if(((ATDecimalOrDerivedImpl*)(const Numeric*)other)->_isInteger) { + second = (const ATDecimalOrDerived::Ptr )other->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER, context); + } else { + second = (const ATDecimalOrDerived::Ptr )other->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_DECIMAL, context); + } + return first->subtract(second, context); + } + +} + +/** Returns a Numeric object which is the product of this and other */ +Numeric::Ptr ATDecimalOrDerivedImpl::multiply(const Numeric::Ptr &other, const DynamicContext* context) const { + if(this->isOfType(other->getTypeURI(), other->getTypeName(), context)) { + // if both are of the same type exactly, we can perform multiplication + ATDecimalOrDerivedImpl* otherImpl = (ATDecimalOrDerivedImpl*)(const Numeric*)other; + // if integer, return xs:integer, otherwise xs:decimal + if(_isInteger) { + return context->getItemFactory()->createInteger(_decimal * otherImpl->_decimal, context); + } + return context->getItemFactory()->createDecimal(_decimal * otherImpl->_decimal, context); + + } else if(this->getPrimitiveTypeIndex() != other->getPrimitiveTypeIndex()) { + // if other is not a decimal, then we need to promote this to a float or double + return ((const Numeric::Ptr )this->castAs(other->getPrimitiveTypeURI(), other->getPrimitiveTypeName(), context))->multiply(other, context); + } else if (this->isInstanceOfType(other->getTypeURI(), other->getTypeName(), context)) { + // here we know we have two decimals, and this is 'lower' in the hierarchy than other + // so cast this to other's type + return ((const Numeric::Ptr )this->castAs(other->getTypeURI(), other->getTypeName(), context))->multiply(other, context); + } else if (other->isInstanceOfType(this->getTypeURI(), this->getTypeName(), context)) { + // here we have two decimals, and this is 'higher' in the hierarchy than other + // so cast other to this' type + return this->multiply((const Numeric::Ptr )other->castAs(this->getTypeURI(), this->getTypeName(), context), context); + } else { + // we have two separate branches. if either is instance of integer, cast it to integer, otherwise, cast to decimal + // revisit: this is not the prettiest way to do it. You would want to go up the tree one by one instead of + // jumping to integer and decimal + ATDecimalOrDerived::Ptr first; + ATDecimalOrDerived::Ptr second; + if(this->_isInteger) { + first = (const ATDecimalOrDerived::Ptr )this->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER, context); + } else { + first = (const ATDecimalOrDerived::Ptr )this->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_DECIMAL, context); + } + + if(((ATDecimalOrDerivedImpl*)(const Numeric*)other)->_isInteger) { + second = (const ATDecimalOrDerived::Ptr )other->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER, context); + } else { + second = (const ATDecimalOrDerived::Ptr )other->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_DECIMAL, context); + } + return first->multiply(second, context); + } + +} + +/** Returns a Numeric object which is the quotient of this and other */ +Numeric::Ptr ATDecimalOrDerivedImpl::divide(const Numeric::Ptr &other, const DynamicContext* context) const { + if(this->isOfType(other->getTypeURI(), other->getTypeName(), context)) { + // if both are of the same type exactly, we can perform division + ATDecimalOrDerivedImpl* otherImpl = (ATDecimalOrDerivedImpl*)(const Numeric*)other; + + if(otherImpl->_decimal == MM_Zero) { + XQThrow2(XPath2ErrorException, X("ATDecimalOrDerivedImpl::divide"), X("Division by zero [err:FOAR0001]")); + } + + // return a xs:decimal, regardless of the actual types of the operands + return context->getItemFactory()->createDecimal(_decimal / otherImpl->_decimal, context); + } else if(this->getPrimitiveTypeIndex() != other->getPrimitiveTypeIndex()) { + // if other is not a decimal, then we need to promote this to a float or double + return ((const Numeric::Ptr )this->castAs(other->getPrimitiveTypeURI(), other->getPrimitiveTypeName(), context))->divide(other, context); + } else if (this->isInstanceOfType(other->getTypeURI(), other->getTypeName(), context)) { + // here we know we have two decimals, and this is 'lower' in the hierarchy than other + // so cast this to other's type + return ((const Numeric::Ptr )this->castAs(other->getTypeURI(), other->getTypeName(), context))->divide(other, context); + } else if (other->isInstanceOfType(this->getTypeURI(), this->getTypeName(), context)) { + // here we have two decimals, and this is 'higher' in the hierarchy than other + // so cast other to this' type + return this->divide((const Numeric::Ptr )other->castAs(this->getTypeURI(), this->getTypeName(), context), context); + } else { + // we have two separate branches. if either is instance of integer, cast it to integer, otherwise, cast to decimal + // revisit: this is not the prettiest way to do it. You would want to go up the tree one by one instead of + // jumping to integer and decimal + ATDecimalOrDerived::Ptr first; + ATDecimalOrDerived::Ptr second; + if(this->_isInteger) { + first = (const ATDecimalOrDerived::Ptr )this->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER, context); + } else { + first = (const ATDecimalOrDerived::Ptr )this->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_DECIMAL, context); + } + + if(((ATDecimalOrDerivedImpl*)(const Numeric*)other)->_isInteger) { + second = (const ATDecimalOrDerived::Ptr )other->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER, context); + } else { + second = (const ATDecimalOrDerived::Ptr )other->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_DECIMAL, context); + } + return first->divide(second, context); + } + +} + +/** Returns the arithmetic product of its operands as a Numeric */ +Numeric::Ptr ATDecimalOrDerivedImpl::mod(const Numeric::Ptr &other, const DynamicContext* context) const { + if(this->isOfType(other->getTypeURI(), other->getTypeName(), context)) { + // if both are of the same type exactly, we can perform the modulo + const ATDecimalOrDerivedImpl* otherImpl = (ATDecimalOrDerivedImpl*)(const Numeric*)other; + + if(otherImpl->isZero()) { + XQThrow2(::IllegalArgumentException, X("ATDecimalOrDerivedImpl::mod"), X("Division by zero [err:FOAR0001]")); + } + + MAPM result = _decimal; + MAPM r; + r = result.integer_divide(otherImpl->_decimal); + result -= r * otherImpl->_decimal; + // if integer, return xs:integer, otherwise xs:decimal + if(_isInteger) { + return context->getItemFactory()->createInteger(result, context); + } + return context->getItemFactory()->createDecimal(result, context); + } else if(this->getPrimitiveTypeIndex() != other->getPrimitiveTypeIndex()) { + // if other is not a decimal, then we need to promote this to a float or double + return ((const Numeric::Ptr )this->castAs(other->getPrimitiveTypeURI(), other->getPrimitiveTypeName(), context))->mod(other, context); + } else if (this->isInstanceOfType(other->getTypeURI(), other->getTypeName(), context)) { + // here we know we have two decimals, and this is 'lower' in the hierarchy than other + // so cast this to other's type + return ((const Numeric::Ptr )this->castAs(other->getTypeURI(), other->getTypeName(), context))->mod(other, context); + } else if (other->isInstanceOfType(this->getTypeURI(), this->getTypeName(), context)) { + // here we have two decimals, and this is 'higher' in the hierarchy than other + // so cast other to this' type + return this->mod((const Numeric::Ptr )other->castAs(this->getTypeURI(), this->getTypeName(), context), context); + } else { + // we have two separate branches. if either is instance of integer, cast it to integer, otherwise, cast to decimal + // revisit: this is not the prettiest way to do it. You would want to go up the tree one by one instead of + // jumping to integer and decimal + ATDecimalOrDerived::Ptr first; + ATDecimalOrDerived::Ptr second; + if(this->_isInteger) { + first = (const ATDecimalOrDerived::Ptr )this->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER, context); + } else { + first = (const ATDecimalOrDerived::Ptr )this->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_DECIMAL, context); + } + + if(((ATDecimalOrDerivedImpl*)(const Numeric*)other)->_isInteger) { + second = (const ATDecimalOrDerived::Ptr )other->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER, context); + } else { + second = (const ATDecimalOrDerived::Ptr )other->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_DECIMAL, context); + } + return first->mod(second, context); + } + +} + +/** Returns the floor of this Numeric */ +Numeric::Ptr ATDecimalOrDerivedImpl::floor(const DynamicContext* context) const { + // if integer, return xs:integer, otherwise xs:decimal + if(_isInteger) { + return (const Numeric::Ptr )this->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER, context); + } + return context->getItemFactory()->createDecimal(_decimal.floor(), context); + +} + +/** Returns the ceiling of this Numeric */ +Numeric::Ptr ATDecimalOrDerivedImpl::ceiling(const DynamicContext* context) const { + // if integer, return xs:integer, otherwise xs:decimal + if(_isInteger) { + return (const Numeric::Ptr )this->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER, context); + } + return context->getItemFactory()->createDecimal(_decimal.ceil(), context); + +} + +/** Rounds this Numeric */ +Numeric::Ptr ATDecimalOrDerivedImpl::round(const DynamicContext* context) const { + // if integer, return xs:integer, otherwise xs:decimal + if(_isInteger) { + return (const Numeric::Ptr )this->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER, context); + } + MAPM value = _decimal + 0.5; + return context->getItemFactory()->createDecimal(value.floor(), context); +} + +/** Rounds this Numeric to the given precision, and rounds a half to even */ +Numeric::Ptr ATDecimalOrDerivedImpl::roundHalfToEven(const Numeric::Ptr &precision, const DynamicContext* context) const { + ATDecimalOrDerived::Ptr decimal_precision = (const Numeric::Ptr)precision->castAs(this->getPrimitiveTypeURI(), this->getPrimitiveTypeName(), context); + MAPM exp = MAPM(MM_Ten).pow(((ATDecimalOrDerivedImpl*)(const ATDecimalOrDerived*)decimal_precision)->_decimal); + MAPM value = _decimal * exp; + bool halfVal = false; + + // check if we're rounding on a half value + if((value-0.5) == (value.floor())) { + halfVal = true; + } + value = _decimal * exp + 0.5; + value = value.floor(); + + // if halfVal make sure what we return has the least significant digit even + if (halfVal) { + if(value.is_odd()) { + value = value - 1; + } + } + value = value / exp; + // if integer, return xs:integer, otherwise xs:decimal + if(_isInteger) { + return context->getItemFactory()->createInteger(value, context); + } + return context->getItemFactory()->createDecimal(value, context); +} + +/** Returns the Additive inverse of this Numeric */ +Numeric::Ptr ATDecimalOrDerivedImpl::invert(const DynamicContext* context) const { + if(_isInteger) { + return context->getItemFactory()->createInteger(_decimal.neg(), context); + } + return context->getItemFactory()->createDecimal(_decimal.neg(), context); +} + +/** Returns the absolute value of this Numeric */ +Numeric::Ptr ATDecimalOrDerivedImpl::abs(const DynamicContext* context) const { + return context->getItemFactory()->createDecimal(_decimal.abs(), context); +} + +/** Does this Numeric have value 0? */ +bool ATDecimalOrDerivedImpl::isZero() const { + return _decimal.sign() == 0; +} + +/** Is this Numeric negative? */ +bool ATDecimalOrDerivedImpl::isNegative() const { + return _decimal.sign() < 0; +} + +/** Is this Numeric positive? */ +bool ATDecimalOrDerivedImpl::isPositive() const { + return _decimal.sign() > 0; +} + +/** Treat this decimal (must be integer) as a codepoint **/ +XMLInt32 ATDecimalOrDerivedImpl::treatAsCodepoint(const DynamicContext* context) const { + if(_isInteger) { + char out_string[256]; + _decimal.toIntegerString(out_string); + int integer = atoi(out_string); + XMLInt32 ch = (XMLInt32)integer; + if(integer<=0 || (int)ch != integer) { // negative or lost some info + XQThrow2(XPath2ErrorException, X("ATDecimalOrDerivedImpl::treatAsCodepoint"), X("Codepoint not legal [err:FOCH0001].")); + } + return ch; + } else { + XQThrow2(XPath2ErrorException, X("ATDecimalOrDerivedImpl::treatAsCodepoint"), X("Only integers can be treated as codepoints.")); + } +} + +AnyAtomicType::AtomicObjectType ATDecimalOrDerivedImpl::getPrimitiveTypeIndex() const { + return this->getTypeIndex(); +} + +void ATDecimalOrDerivedImpl::setDecimal(const XMLCh* const value) +{ + _decimal = parseDecimal(value); +} + +MAPM ATDecimalOrDerivedImpl::parseDecimal(const XMLCh* const value) +{ + if(value == NULL) { + XQThrow2(XPath2TypeCastException,X("ATDecimalOrDerivedImpl::setDecimal"), X("Invalid representation of decimal [err:FORG0001]")); + } + + unsigned int length=XMLString::stringLen(value) + 1; + + AutoDeleteArray buffer(new char[length]); + + bool gotPoint = false; + bool gotSign = false; + bool gotDigit = false; + bool stop = false; + bool munchWS = true; + + const XMLCh *src = value; + char *dest = buffer; + XMLCh tmpChar; + while(!stop && *src != 0) { + tmpChar = *src++; + + switch(tmpChar) {/*{{{*/ + + case L'+': { + *dest++ = '+'; + if(gotSign) { + stop = true; + } else { + gotSign = true; + } + break; + } + + case L'-': { + *dest++ = '-'; + if(gotSign) { + stop = true; + } else { + gotSign = true; + } + break; + } + + //This is '.' + case 0x002e: { + *dest++ = '.'; + if(gotPoint) { + stop = true; + } else { + gotPoint = true; + } + break; + } + + /* All the numerals defined by XML standard */ + case 0x0030: + case 0x0031: + case 0x0032: + case 0x0033: + case 0x0034: + case 0x0035: + case 0x0036: + case 0x0037: + case 0x0038: + case 0x0039: { + gotDigit = true; + *dest++ = (char)(tmpChar - 0x0030) + '0'; + break; + } + + // whitespace at start or end of string... + case 0x0020: + case 0x0009: + case 0x000d: + case 0x000a: { + bool endOfWS = false; + while(!endOfWS && *src != 0) { + tmpChar = *src++; + switch(tmpChar) { + case 0x0020: + case 0x0009: + case 0x000d: + case 0x000a: { + break; + } + default: { + endOfWS = true; + --src; + if(munchWS) { + //end of leading whitespace + munchWS = false; + } else { + //trailing whitespace is followed by other characters - so return NaN. + stop = true; + } + } + }//switch + }//while + break; + } + + default: + stop = true; + break; + + }//switch + /*}}}*/ + + }//while + + if(!gotDigit || stop) { + XQThrow2(XPath2TypeCastException,X("ATDecimalOrDerivedImpl::setDecimal"), X("Invalid representation of decimal [err:FORG0001]")); + } + + *dest++ = 0; // Null terminate + return (char*)buffer; +} diff --git a/src/items/impl/ATDoubleOrDerivedImpl.cpp b/src/items/impl/ATDoubleOrDerivedImpl.cpp new file mode 100644 index 00000000..4ea69084 --- /dev/null +++ b/src/items/impl/ATDoubleOrDerivedImpl.cpp @@ -0,0 +1,750 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATDoubleOrDerivedImpl.cpp,v 1.20 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +int ATDoubleOrDerivedImpl::g_nSignificantDigits=25; + +ATDoubleOrDerivedImpl:: +ATDoubleOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const StaticContext* context) + : _typeName(typeName), + _typeURI(typeURI) +{ + setDouble(value); + checkDoubleLimits(_state, _double); +} + +ATDoubleOrDerivedImpl:: +ATDoubleOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const MAPM value, const StaticContext* context): + ATDoubleOrDerived(), + _typeName(typeName), + _typeURI(typeURI) { + + _double = value; + _state = NUM; + if(value.sign() < 0) + _state = NEG_NUM; + checkDoubleLimits(_state, _double); +} + +void *ATDoubleOrDerivedImpl::getInterface(const XMLCh *name) const +{ + if(name == Item::gXQilla) { + return (void*)this; + } + return 0; +} + +/* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ +const XMLCh* ATDoubleOrDerivedImpl::getPrimitiveTypeName() const { + return this->getPrimitiveName(); +} + +const XMLCh* ATDoubleOrDerivedImpl::getPrimitiveName() { + return SchemaSymbols::fgDT_DOUBLE; +} + +/* Get the name of this type (ie "integer" for xs:integer) */ +const XMLCh* ATDoubleOrDerivedImpl::getTypeName() const { + return _typeName; +} + +/* Get the namespace URI for this type */ +const XMLCh* ATDoubleOrDerivedImpl::getTypeURI() const { + return _typeURI; +} + +AnyAtomicType::AtomicObjectType ATDoubleOrDerivedImpl::getTypeIndex() { + return AnyAtomicType::DOUBLE; +} + +/* returns the XMLCh* (canonical) representation of this type */ +const XMLCh* ATDoubleOrDerivedImpl::asString(const DynamicContext* context) const +{ + return asDoubleString(g_nSignificantDigits, context); +} + +/* Promote this to the given type, if possible */ +Numeric::Ptr ATDoubleOrDerivedImpl::promoteTypeIfApplicable(const XMLCh* typeURI, const XMLCh* typeName, const DynamicContext* context) const { + // can only promote if this target is instance of double, and this isInstanceOf target + if(context->isTypeOrDerivedFromType(typeURI, typeName, this->getPrimitiveTypeURI(), this->getPrimitiveTypeName()) && + this->isInstanceOfType(typeURI, typeName, context)) { + return this; // no need to promote, already a double + //return (const Numeric::Ptr )this->castAs(typeURI, typeName, context); + } else { + return 0; + } +} + +/** Returns a Numeric object which is the sum of this and other */ +Numeric::Ptr ATDoubleOrDerivedImpl::add(const Numeric::Ptr &other, const DynamicContext* context) const { + if(this->getPrimitiveTypeIndex() == other->getPrimitiveTypeIndex()) { + // if both are of the same type exactly, we can perform addition + ATDoubleOrDerivedImpl* otherImpl = (ATDoubleOrDerivedImpl*)(const Numeric*)other; + if(otherImpl->_state == NaN) return notANumber(context); + + switch (_state) { + case NaN: return notANumber(context); + case INF: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); // case taken care of above + case NEG_NUM: + case NUM: return infinity(context); // INF + NUM = INF + case INF: return infinity(context); // INF + INF = INF + case NEG_INF: return notANumber(context); // INF + (-INF) = NaN + default: assert(false); return 0; // should never get here + } + } + case NEG_INF: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); //case taken care of above + case NEG_NUM: + case NUM: return negInfinity(context); // -INF + NUM = -INF + case INF: return notANumber(context); // -INF + INF = NaN + case NEG_INF: return negInfinity(context); // -INF + (-INF) = -INF + default: assert(false); return 0; // should never get here + } + } + case NEG_NUM: + case NUM: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); // case taken care of above + case INF: return infinity(context); + case NEG_INF: return negInfinity(context); + case NEG_NUM: + case NUM: + { + // Handle positive and negative zero + if(_double.sign()==0 && otherImpl->_double!=0) + return other; + else if(_double.sign()!=0 && otherImpl->_double==0) + return this; + else if(_double.sign()==0 && otherImpl->_double==0) + { + if(_state==otherImpl->_state) + // sum of two zero of the same sign -> result is equal to any of the two items + return this; + else + // sum of two zero of different sign -> result is equal to +0 + return newDouble(MM_Zero, context); + } + return newDouble(_double + otherImpl->_double, context); + } + default: assert(false); return 0; // should never get here + } + } + default: assert(false); return 0; // should never get here + } + + } else { + // if other is not a double, then we need to promote it to a double + return this->add((const Numeric::Ptr )other->castAs(this->getPrimitiveTypeURI(), this->getPrimitiveTypeName(), context), context); + } +} + +/** Returns a Numeric object which is the difference of this and + * other */ +Numeric::Ptr ATDoubleOrDerivedImpl::subtract(const Numeric::Ptr &other, const DynamicContext* context) const { + if(this->getPrimitiveTypeIndex() == other->getPrimitiveTypeIndex()) { + // if both are of the same type exactly, we can perform subtraction + ATDoubleOrDerivedImpl* otherImpl = (ATDoubleOrDerivedImpl*)(const Numeric*)other; + if(otherImpl->_state == NaN) return notANumber(context); + + switch (_state) { + case NaN: return notANumber(context); + case INF: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); // case taken care of above + case NEG_NUM: + case NUM: return infinity(context); // INF - NUM = INF + case INF: return notANumber(context); // INF - INF = NaN + case NEG_INF: return infinity(context); // INF - (-INF) = INF + default: assert(false); return 0; // should never get here + } + } + case NEG_INF: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); //case taken care of above + case NEG_NUM: + case NUM: return negInfinity(context); // -INF - NUM = -INF + case INF: return negInfinity(context); // -INF - INF = -INF + case NEG_INF: return notANumber(context); // -INF - (-INF) = NaN + default: assert(false); return 0; // should never get here + } + } + case NEG_NUM: + case NUM: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); // case taken care of above + case INF: return negInfinity(context); // NUM - INF = -INF + case NEG_INF: return infinity(context); // NUM - (-INF) = INF + case NEG_NUM: + case NUM: return newDouble(_double - otherImpl->_double, context); + default: assert(false); return 0; // should never get here + } + } + default: assert(false); return 0; // should never get here + } + + } else { + // if other is not a double, then we need to promote it to a double + return this->subtract((const Numeric::Ptr )other->castAs(this->getPrimitiveTypeURI(), this->getPrimitiveTypeName(), context), context); + } +} + +/** Returns a Numeric object which is the product of this and other */ +Numeric::Ptr ATDoubleOrDerivedImpl::multiply(const Numeric::Ptr &other, const DynamicContext* context) const { + if(this->getPrimitiveTypeIndex() == other->getPrimitiveTypeIndex()) { + // if both are of the same type, we can perform multiplication + ATDoubleOrDerivedImpl* otherImpl = (ATDoubleOrDerivedImpl*)(const Numeric*)other; + if(otherImpl->_state == NaN) return notANumber(context); + + switch (_state) { + case NaN: return notANumber(context); + case INF: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); // case taken care of above + case NEG_NUM: + case NUM: return other->isPositive() ? infinity(context) : negInfinity(context); // INF * NUM = +/-INF + case INF: return infinity(context); // INF * INF = INF + case NEG_INF: return negInfinity(context); // INF * (-INF) = -INF + default: assert(false); return 0; // should never get here + } + } + case NEG_INF: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); //case taken care of above + case NEG_NUM: + case NUM: return other->isPositive() ? negInfinity(context) : infinity(context); // -INF * NUM = +/-INF + case INF: return negInfinity(context); // -INF * INF = -INF + case NEG_INF: return infinity(context); // -INF * (-INF) = INF + default: assert(false); return 0; // should never get here + } + } + case NEG_NUM: + case NUM: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); // case taken care of above + case INF: return this->isPositive() ? infinity(context) : negInfinity(context); // NUM * INF = +/-INF + case NEG_INF: return this->isPositive() ? negInfinity(context) : infinity(context); // NUM * (-INF) = +/-INF + case NEG_NUM: + case NUM: + if(other->isZero() || this->isZero()) { + if((this->isNegative() && other->isPositive()) || + (this->isPositive() && other->isNegative())) { + return negZero(context); // 0 / (-NUM) or (-0) / NUM = -0 + } else { + return newDouble(0, context); // 0 / NUM or (-0) / (-NUM) = 0 + } + } + return newDouble(_double * otherImpl->_double, context); + default: assert(false); return 0; // should never get here + } + } + default: assert(false); return 0; // should never get here + } + + } else { + // if other is not a double, then we need to promote it to a double + return this->multiply((const Numeric::Ptr )other->castAs(this->getPrimitiveTypeURI(), this->getPrimitiveTypeName(), context), context); + } +} + +/** Returns a Numeric object which is the quotient of this and other */ +Numeric::Ptr ATDoubleOrDerivedImpl::divide(const Numeric::Ptr &other, const DynamicContext* context) const { + if(this->getPrimitiveTypeIndex() == other->getPrimitiveTypeIndex()) { + // if both are of the same type, we can perform division + ATDoubleOrDerivedImpl* otherImpl = (ATDoubleOrDerivedImpl*)(const Numeric*)other; + if(otherImpl->_state == NaN) return notANumber(context); + switch (_state) { + case NaN: return notANumber(context); + case INF: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); // case taken care of above + case NEG_NUM: + case NUM: return other->isPositive() ? infinity(context) : negInfinity(context); // INF / NUM = +/-INF + case INF: return notANumber(context); // INF / INF = NaN + case NEG_INF: return notANumber(context); // INF / (-INF) = NaN + default: assert(false); return 0; // should never get here + } // switch + }// case + case NEG_INF: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); //case taken care of above + case NEG_NUM: + case NUM: return other->isPositive() ? negInfinity(context) : infinity(context); // -INF / NUM = -INF + case INF: return notANumber(context); // -INF / INF = NaN + case NEG_INF: return notANumber(context); // -INF / (-INF) = NaN + default: assert(false); return 0; // should never get here + } // switch + } // case + case NEG_NUM: + case NUM: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); // case taken care of above + case INF: { // NUM / INF = +/-0 + if(this->isNegative()) { + return negZero(context); + } else { + return newDouble(0, context); + } + }// case + case NEG_INF: { // NUM / -INF = +/-0 + if(this->isPositive()) { + return negZero(context); + } else { + return newDouble(0, context); + } + }// case + case NEG_NUM: + case NUM: { + if(other->isZero()) { + if(this->isZero()) return notANumber(context); + if((this->isNegative() && other->isPositive()) || + (this->isPositive() && other->isNegative())) { + return negInfinity(context); // NUM / (-0) or (-NUM) / 0 = -INF + } else { + return infinity(context); // NUM / 0 or (-NUM) / (-0) = INF + } + } + else if(this->isZero()) + { + if((this->isNegative() && other->isPositive()) || + (this->isPositive() && other->isNegative())) { + return negZero(context); // 0 / (-NUM) or (-0) / NUM = -0 + } else { + return newDouble(0, context); // 0 / NUM or (-0) / (-NUM) = 0 + } + } + return newDouble(_double / otherImpl->_double, context); + }// case + default: assert(false); return 0; // should never get here + }// switch + }// case + default: assert(false); return 0; // should never get here + }// switch + + } else { + // if other is not a double, then we need to promote it to a double + return this->divide((const Numeric::Ptr )other->castAs(this->getPrimitiveTypeURI(), this->getPrimitiveTypeName(), context), context); + } +} + +/** Returns the mod of its operands as a Numeric */ +Numeric::Ptr ATDoubleOrDerivedImpl::mod(const Numeric::Ptr &other, const DynamicContext* context) const { + if(this->getPrimitiveTypeIndex() == other->getPrimitiveTypeIndex()) { + // if both are of the same type, we can perform mod + ATDoubleOrDerivedImpl* otherImpl = (ATDoubleOrDerivedImpl*)(const Numeric*)other; + if(this->isNaN() || otherImpl->isNaN() || this->isInfinite() || otherImpl->isZero()) { + return notANumber(context); + + } else if(otherImpl->isInfinite() || this->isZero()) { + return (const Numeric::Ptr )this->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_DOUBLE, context); + + } else { + MAPM result = _double; + MAPM r; + r = result.integer_divide(otherImpl->_double); + result -= r * otherImpl->_double; + if (result == 0 && isNegative()) + return negZero(context); + return newDouble(result, context); + } + } else { + // if other is not a double, then we need to promote it to a double + return this->mod((const Numeric::Ptr )other->castAs(this->getPrimitiveTypeURI(), this->getPrimitiveTypeName(), context), context); + } +} + +/** Returns the floor of this Numeric */ +Numeric::Ptr ATDoubleOrDerivedImpl::floor(const DynamicContext* context) const { + switch (_state) { + case NaN: return notANumber(context); + case INF: return infinity(context); + case NEG_INF: return negInfinity(context); + case NEG_NUM: + case NUM: { + if (isZero() && isNegative()) + return this; + return newDouble(_double.floor(), context); + } + default: { assert(false); return 0; // should never get here + } + } +} + +/** Returns the ceiling of this Numeric */ +Numeric::Ptr ATDoubleOrDerivedImpl::ceiling(const DynamicContext* context) const { + switch (_state) { + case NaN: return notANumber(context); + case INF: return infinity(context); + case NEG_INF: return negInfinity(context); + case NEG_NUM: + case NUM: { + if (isNegative() && _double >= -0.5) { + return negZero(context); + } + return newDouble(_double.ceil(), context); + } + default: { assert(false); return 0; // should never get here + } + } +} + +/** Rounds this Numeric */ +Numeric::Ptr ATDoubleOrDerivedImpl::round(const DynamicContext* context) const { + switch (_state) { + case NaN: return notANumber(context); + case INF: return infinity(context); + case NEG_INF: return negInfinity(context); + case NEG_NUM: + case NUM: { + if (isNegative() &&_double >= -0.5) { + return negZero(context); + } + MAPM value = _double + 0.5; + return newDouble(value.floor(), context); + } + default: {assert(false); return 0; // should never get here + } + } +} + +/** Rounds this Numeric to the given precision, and rounds a half to even */ +Numeric::Ptr ATDoubleOrDerivedImpl::roundHalfToEven(const Numeric::Ptr &precision, const DynamicContext* context) const { + switch (_state) { + case NaN: return notANumber(context); + case INF: return infinity(context); + case NEG_INF: return negInfinity(context); + case NEG_NUM: + case NUM: break; + default: { assert(false); return 0; // should never get here + } + } + + if (isZero() && isNegative()) + return this; + + ATDoubleOrDerived::Ptr double_precision = (const Numeric::Ptr)precision->castAs(this->getPrimitiveTypeURI(), this->getPrimitiveTypeName(), context); + MAPM exp = MAPM(10).pow(((ATDoubleOrDerivedImpl*)(const ATDoubleOrDerived*)double_precision)->_double); + MAPM value = _double * exp; + bool halfVal = false; + + // check if we're rounding on a half value + if((value-0.5) == (value.floor())) { + halfVal = true; + } + value = _double * exp + 0.5; + value = value.floor(); + + // if halfVal make sure what we return has the least significant digit even + if (halfVal) { + if(value.is_odd()) { + value = value - 1; + } + } + value = value / exp; + + // the spec doesn't actually say to do this, but djf believes this is the correct way to handle rounding of -ve values which will result in 0.0E0 + // if (value == 0 && isNegative()) + // return negZero(context); + return newDouble(value, context); +} + +/** Returns the Additive inverse of this Numeric */ +Numeric::Ptr ATDoubleOrDerivedImpl::invert(const DynamicContext* context) const { + switch (_state) { + case NaN: return this; + case INF: return negInfinity(context); + case NEG_INF: return infinity(context); + case NEG_NUM: + case NUM: + if(this->isZero()) + { + if(this->isNegative()) + return newDouble(0, context); + else + return negZero(context); + } + return newDouble(_double.neg(), context); + default: assert(false); return 0; // should never get here + } +} + +/** Returns the absolute value of this Numeric */ +Numeric::Ptr ATDoubleOrDerivedImpl::abs(const DynamicContext* context) const { + switch (_state) { + case NaN: return this; + case INF: return infinity(context); + case NEG_INF: return infinity(context); + case NEG_NUM: + case NUM: return newDouble(_double.abs(), context); + default: assert(false); return 0; // should never get here + } +} + +/** Does this Numeric have value 0? */ +bool ATDoubleOrDerivedImpl::isZero() const { + switch (_state) { + case NaN: + case INF: + case NEG_INF: return false; + default: /*NUM*/{ + return _double.sign() == 0; + } + } +} + +/** Is this Numeric negative? */ +bool ATDoubleOrDerivedImpl::isNegative() const { + switch (_state) { + case NaN: + case INF: + case NUM: return false; + case NEG_NUM: + case NEG_INF: return true; + } + assert(false); + return false; // should never get here +} + +/** Is this Numeric positive? */ +bool ATDoubleOrDerivedImpl::isPositive() const { + switch (_state) { + case INF: + case NUM: return true; + case NaN: + case NEG_INF: + case NEG_NUM: return false; + } + assert(false); + return false; // should never get here +} + +/* Is this xs:double not a number */ +bool ATDoubleOrDerivedImpl::isNaN() const { + return _state == NaN; +} + + +/* Is this xs:double infinite? */ +bool ATDoubleOrDerivedImpl::isInfinite() const { + return _state == INF || _state == NEG_INF; +} + + +AnyAtomicType::AtomicObjectType ATDoubleOrDerivedImpl::getPrimitiveTypeIndex() const { + return this->getTypeIndex(); +} + +/* returns a new infinity xs:double*/ +ATDoubleOrDerived::Ptr ATDoubleOrDerivedImpl::infinity(const DynamicContext* context) const { + return context->getItemFactory()->createDouble(Numeric::INF_string, context); +} + +/* returns a new negative infinity xs:double*/ +ATDoubleOrDerived::Ptr ATDoubleOrDerivedImpl::negInfinity(const DynamicContext* context) const { + return context->getItemFactory()->createDouble(Numeric::NegINF_string, context); +} + +/* returns a NaN xs:double*/ +ATDoubleOrDerived::Ptr ATDoubleOrDerivedImpl::notANumber(const DynamicContext* context) const { + return context->getItemFactory()->createDouble(Numeric::NaN_string, context); +} + +/* returns a -0 ATDoubleOrDerived*/ +ATDoubleOrDerived::Ptr ATDoubleOrDerivedImpl::negZero(const DynamicContext* context) const { + return context->getItemFactory()->createDouble(Numeric::NegZero_string, context); +} + +/*returns a ATDoubleOrDerived of value value*/ +ATDoubleOrDerived::Ptr ATDoubleOrDerivedImpl::newDouble(MAPM value, const DynamicContext* context) const { + return context->getItemFactory()->createDouble(value, context); +} + +static MAPM parse(const XMLCh* const value, Numeric::State &state) +{ + if(value == NULL) { + // Not a Number + state = Numeric::NaN; + return 0; + } + + unsigned int length=XMLString::stringLen(value) + 1; + + AutoDeleteArray buffer(new char[length]); + + bool gotBase = false; + bool gotPoint = false; + bool gotSign = false; + bool gotDigit = false; + bool stop = false; + bool munchWS = true; + bool isNegative = false; + + const XMLCh *src = value; + char *dest = buffer; + XMLCh tmpChar; + while(!stop && *src != 0) { + tmpChar = *src++; + + switch(tmpChar) { + + case L'+': { + *dest++ = '+'; + if(gotSign || gotDigit) { + stop = true; + } else { + gotSign = true; + } + break; + } + + case L'-': { + *dest++ = '-'; + if(gotSign || gotDigit) { + stop = true; + } else { + gotSign = true; + if(!gotBase) isNegative = true; + } + break; + } + + case 0x0045: + case 0x0065: { + *dest++ = 'e'; + if(!gotDigit || gotBase) { + stop = true; + } else { + gotPoint = false; + gotSign = false; + gotBase = true; + gotDigit = false; + } + break; + } + + //This is '.' + case 0x002e: { + *dest++ = '.'; + if(gotPoint || gotBase) { + stop = true; + } else { + gotPoint = true; + } + break; + } + + case 0x0030: + case 0x0031: + case 0x0032: + case 0x0033: + case 0x0034: + case 0x0035: + case 0x0036: + case 0x0037: + case 0x0038: + case 0x0039: { + gotDigit = true; + *dest++ = (char)(tmpChar - 0x0030) + '0'; + break; + } + + // whitespace at start or end of string... + case 0x0020: + case 0x0009: + case 0x000d: + case 0x000a: { + bool endOfWS = false; + while(!endOfWS && *src != 0) { + tmpChar = *src++; + switch(tmpChar) { + case 0x0020: + case 0x0009: + case 0x000d: + case 0x000a: { + break; + } + default: { + endOfWS = true; + --src; + if(munchWS) { + //end of leading whitespace + munchWS = false; + } else { + //trailing whitespace is followed by other characters - so return NaN. + stop = true; + } + } + } + } + break; + } + + default: + stop = true; + break; + + } + } + + if(!gotDigit || stop) { + if(XPath2Utils::equals(value, Numeric::NegINF_string)) { + state = Numeric::NEG_INF; + } + else if (XPath2Utils::equals(value, Numeric::INF_string)) { + state = Numeric::INF; + } + else { + state = Numeric::NaN; + } + return 0; + } + + *dest++ = 0; // Null terminate + if(isNegative) state = Numeric::NEG_NUM; + else state = Numeric::NUM; + + return (char*)buffer; +} + +void ATDoubleOrDerivedImpl::setDouble(const XMLCh* const value) +{ + _double = parse(value, _state); +} + +MAPM ATDoubleOrDerivedImpl::parseDouble(const XMLCh* const value, State &state) +{ + MAPM result = parse(value, state); + Numeric::checkDoubleLimits(state, result); + return result; +} diff --git a/src/items/impl/ATDurationOrDerivedImpl.cpp b/src/items/impl/ATDurationOrDerivedImpl.cpp new file mode 100644 index 00000000..8027a8de --- /dev/null +++ b/src/items/impl/ATDurationOrDerivedImpl.cpp @@ -0,0 +1,708 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATDurationOrDerivedImpl.cpp,v 1.23 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../../utils/DateUtils.hpp" + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +ATDurationOrDerivedImpl:: +ATDurationOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) + :_isPositive(true), + _typeName(typeName), + _typeURI(typeURI) +{ + setDuration(value); + init(context); +} + +ATDurationOrDerivedImpl:: +ATDurationOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const MAPM &months, const MAPM &seconds, + const DynamicContext* context) + : _isPositive(true), + _months(months), + _seconds(seconds), + _typeName(typeName), + _typeURI(typeURI) +{ + init(context); +} + +void ATDurationOrDerivedImpl::init(const DynamicContext* context) +{ + if(_months.sign() < 0) { + _isPositive = false; + _months = _months.neg(); + } + if(_seconds.sign() < 0) { + _isPositive = false; + _seconds = _seconds.neg(); + } + + if(this->isInstanceOfType (FunctionConstructor::XMLChXPath2DatatypesURI, + ATDurationOrDerived::fgDT_DAYTIMEDURATION, context)) { + _durationType = DAY_TIME_DURATION; + } else if (this->isInstanceOfType (FunctionConstructor::XMLChXPath2DatatypesURI, + ATDurationOrDerived::fgDT_YEARMONTHDURATION, context)) { + _durationType = YEAR_MONTH_DURATION; + } else { + _durationType = DURATION; + } +} + +void *ATDurationOrDerivedImpl::getInterface(const XMLCh *name) const +{ + if(name == Item::gXQilla) { + return (void*)this; + } + return 0; +} + +/* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ +const XMLCh* ATDurationOrDerivedImpl::getPrimitiveTypeName() const +{ + switch(_durationType) { + case DAY_TIME_DURATION: + return fgDT_DAYTIMEDURATION; + case YEAR_MONTH_DURATION: + return fgDT_YEARMONTHDURATION; + default: break; + } + + return this->getPrimitiveName(); +} + +const XMLCh* ATDurationOrDerivedImpl::getPrimitiveName() { + return SchemaSymbols::fgDT_DURATION; +} + +/* Get the name of this type (ie "integer" for xs:integer) */ +const XMLCh* ATDurationOrDerivedImpl::getTypeName() const { + return _typeName; +} + +/* Get the namespace URI for this type */ +const XMLCh* ATDurationOrDerivedImpl::getTypeURI() const { + return _typeURI; +} + +AnyAtomicType::AtomicObjectType ATDurationOrDerivedImpl::getTypeIndex() { + return AnyAtomicType::DURATION; +} + +/* If possible, cast this type to the target type */ +AnyAtomicType::Ptr ATDurationOrDerivedImpl::castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, + const XMLCh* targetType, const DynamicContext* context) const { + XMLBuffer buf(1023, context->getMemoryManager()); + // checking if what we're casting to by using isTypeOrDerivedFrom is expensive so we will + // determine what we are casting to and then what type we actually are. + + if(context->isTypeOrDerivedFromType(targetURI, targetType, + FunctionConstructor::XMLChXPath2DatatypesURI, + ATDurationOrDerived::fgDT_YEARMONTHDURATION)) { + //we're casting to a yearMonthDuration + + if (_durationType == DAY_TIME_DURATION) { + // If ST is xdt:dayTimeDuration and TT is xdt:yearMonthDuration, the cast is permitted and returns a + // xdt:yearMonthDuration with value 0 months. + buf.append(chLatin_P); + buf.append(chDigit_0); + buf.append(chLatin_M); + return context->getItemFactory()->createDurationOrDerived(targetURI, targetType, buf.getRawBuffer(), context); + } else if (_durationType == YEAR_MONTH_DURATION) { + return context->getItemFactory()->createDurationOrDerived(targetURI, targetType, this->asString(context), context); + } else { + //else we're a duration and we must remove the day and time components + if(_months.sign() == 0) { + buf.append(chLatin_P); + buf.append(chDigit_0); + buf.append(chLatin_M); + } else { + if(!_isPositive) { + buf.append(chDash); + } + buf.append(chLatin_P); + + MAPM yrs = _months.integer_divide(12); + MAPM mths = DateUtils::modulo(_months, 12); + if(yrs.sign() != 0) { + buf.append(Numeric::asDecimalString(yrs, ATDecimalOrDerivedImpl::g_nSignificantDigits, context)); + buf.append(chLatin_Y); + } + if(mths.sign() != 0) { + buf.append(Numeric::asDecimalString(mths, ATDecimalOrDerivedImpl::g_nSignificantDigits, context)); + buf.append(chLatin_M); + } + } + return context->getItemFactory()->createDurationOrDerived(targetURI, targetType, buf.getRawBuffer(), context); + } + + } else if (context->isTypeOrDerivedFromType(targetURI, targetType, + FunctionConstructor::XMLChXPath2DatatypesURI, + ATDurationOrDerived::fgDT_DAYTIMEDURATION)) { + //we're casting to a dayTimeDuration + + if (_durationType == YEAR_MONTH_DURATION) { + // If ST is xdt:yearMonthDuration and TT is xdt:dayTimeDuration, the cast is permitted and returns a + // xdt:dayTimeDuration with value 0.0 seconds. + buf.append(chLatin_P); + buf.append(chLatin_T); + buf.append(chDigit_0); + buf.append(chLatin_M); + return context->getItemFactory()->createDurationOrDerived(targetURI, targetType, buf.getRawBuffer(), context); + } else if (_durationType == DAY_TIME_DURATION) { + return context->getItemFactory()->createDurationOrDerived(targetURI, targetType, this->asString(context), context); + } else { + //else we're a duration and we must remove the year and month components + if (_seconds.sign() == 0) { + buf.append(chLatin_P); + buf.append(chLatin_T); + buf.append(chDigit_0); + buf.append(chLatin_S); + } else { + if(!_isPositive) { + buf.append(chDash); + } + buf.append(chLatin_P); + + MAPM days = _seconds.integer_divide(DateUtils::g_secondsPerDay); + MAPM hrs = DateUtils::modulo(_seconds, DateUtils::g_secondsPerDay).integer_divide(DateUtils::g_secondsPerHour); + MAPM mnts = DateUtils::modulo(_seconds, DateUtils::g_secondsPerHour).integer_divide(DateUtils::g_secondsPerMinute); + MAPM secs = DateUtils::modulo(_seconds, DateUtils::g_secondsPerMinute); + if(days.sign() != 0) { + buf.append(Numeric::asDecimalString(days, ATDecimalOrDerivedImpl::g_nSignificantDigits, context)); + buf.append(chLatin_D); + } + + // mandatory center 'T', if the time is not zero + if(hrs.sign() != 0 || mnts.sign() != 0 || secs.sign() != 0) { + buf.append(chLatin_T); + + if(hrs.sign() != 0) { + buf.append(Numeric::asDecimalString(hrs, ATDecimalOrDerivedImpl::g_nSignificantDigits, context)); + buf.append(chLatin_H); + } + if(mnts.sign() != 0) { + buf.append(Numeric::asDecimalString(mnts, ATDecimalOrDerivedImpl::g_nSignificantDigits, context)); + buf.append(chLatin_M); + } + if(secs.sign() != 0) { + buf.append(Numeric::asDecimalString(secs, ATDecimalOrDerivedImpl::g_nSignificantDigits, context)); + buf.append(chLatin_S); + } + } + } + return context->getItemFactory()->createDurationOrDerived(targetURI, targetType, buf.getRawBuffer(), context); + } + + } else { + //else we're casting to a duration or some other type and the base castAs will handle it. + return AnyAtomicType::castAsInternal(targetIndex, targetURI, targetType, context); + } + + return 0; +} + +/* returns the XMLCh* (canonical) representation of this type */ +const XMLCh* ATDurationOrDerivedImpl::asString(const DynamicContext* context) const { + XMLBuffer buffer(1023, context->getMemoryManager()); + + // if the value of this duration is zero, return 'PT0S' or 'P0M' + if(_months.sign() == 0 && _seconds.sign() == 0) { + if(_durationType == YEAR_MONTH_DURATION) { + buffer.append(chLatin_P); + buffer.append(chDigit_0); + buffer.append(chLatin_M); + } else { + buffer.append(chLatin_P); + buffer.append(chLatin_T); + buffer.append(chDigit_0); + buffer.append(chLatin_S); + } + } + else { + if ( !_isPositive ) { + buffer.append(chDash); + } + + // madatory leading 'P' + buffer.append(chLatin_P); + + if(_durationType != DAY_TIME_DURATION) { + MAPM yrs = _months.integer_divide(12); + MAPM mths = DateUtils::modulo(_months, 12); + if(yrs.sign() != 0) { + buffer.append(Numeric::asDecimalString(yrs, ATDecimalOrDerivedImpl::g_nSignificantDigits, context)); + buffer.append(chLatin_Y); + } + if(mths.sign() != 0) { + buffer.append(Numeric::asDecimalString(mths, ATDecimalOrDerivedImpl::g_nSignificantDigits, context)); + buffer.append(chLatin_M); + } + } + + // append the day and time information if this is not a yearMonthDuration + if(_durationType != YEAR_MONTH_DURATION) { + MAPM days = _seconds.integer_divide(DateUtils::g_secondsPerDay); + MAPM hrs = DateUtils::modulo(_seconds, DateUtils::g_secondsPerDay).integer_divide(DateUtils::g_secondsPerHour); + MAPM mnts = DateUtils::modulo(_seconds, DateUtils::g_secondsPerHour).integer_divide(DateUtils::g_secondsPerMinute); + MAPM secs = DateUtils::modulo(_seconds, DateUtils::g_secondsPerMinute); + if(days.sign() != 0) { + buffer.append(Numeric::asDecimalString(days, ATDecimalOrDerivedImpl::g_nSignificantDigits, context)); + buffer.append(chLatin_D); + } + + // mandatory center 'T', if the time is not zero + if(hrs.sign() != 0 || mnts.sign() != 0 || secs.sign() != 0) { + buffer.append(chLatin_T); + + if(hrs.sign() != 0) { + buffer.append(Numeric::asDecimalString(hrs, ATDecimalOrDerivedImpl::g_nSignificantDigits, context)); + buffer.append(chLatin_H); + } + if(mnts.sign() != 0) { + buffer.append(Numeric::asDecimalString(mnts, ATDecimalOrDerivedImpl::g_nSignificantDigits, context)); + buffer.append(chLatin_M); + } + if(secs.sign() != 0) { + buffer.append(Numeric::asDecimalString(secs, ATDecimalOrDerivedImpl::g_nSignificantDigits, context)); + buffer.append(chLatin_S); + } + } + } + } + return context->getMemoryManager()->getPooledString(buffer.getRawBuffer()); +} + +/* returns true if this duration is an instance of a xdt:dayTimeDuration */ +bool ATDurationOrDerivedImpl::isDayTimeDuration() const { + return _durationType == DAY_TIME_DURATION; +} + +/* returns true if this duration is an instance of a xdt:yearMonthDuration */ +bool ATDurationOrDerivedImpl::isYearMonthDuration() const { + return _durationType == YEAR_MONTH_DURATION; +} + +/* returns true if the two objects have the same boolean value + * false otherwise */ +bool ATDurationOrDerivedImpl::equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const +{ + switch(target->getPrimitiveTypeIndex()) { + case DAY_TIME_DURATION: + case YEAR_MONTH_DURATION: + case DURATION: { + return compare((const ATDurationOrDerived*)target.get(), context) == 0; + } + default: + XQThrow2(::IllegalArgumentException,X("ATDurationOrDerivedImpl::equals"), + X("Equality operator for given types not supported [err:XPTY0004]")); + } + return false; +} + +int ATDurationOrDerivedImpl::compare(const ATDurationOrDerived::Ptr &other, const DynamicContext* context) const +{ + const ATDurationOrDerivedImpl* otherImpl = (const ATDurationOrDerivedImpl*)other.get(); + + int cmp = _isPositive - otherImpl->_isPositive; + if(cmp != 0) return cmp; + + cmp = _months.compare(otherImpl->_months) * (_isPositive ? 1 : -1); + if(cmp != 0) return cmp; + + return _seconds.compare(otherImpl->_seconds) * (_isPositive ? 1 : -1); +} + +static inline ATDurationOrDerived::Ptr newDayTimeDuration(const Numeric::Ptr &valueSeconds, + const DynamicContext* context) +{ + if(valueSeconds->getState() != Numeric::NUM && + valueSeconds->getState() != Numeric::NEG_NUM) + XQThrow2(::IllegalArgumentException,X("newDayTimeDuration"), + X("Overflow in duration operation [err:FODT0002]")); + + return context->getItemFactory()->createDayTimeDuration(valueSeconds->asMAPM(), context); +} + +static inline ATDurationOrDerived::Ptr newYearMonthDuration(const Numeric::Ptr &valueMonth, + const DynamicContext* context) +{ + if(valueMonth->getState() != Numeric::NUM && + valueMonth->getState() != Numeric::NEG_NUM) + XQThrow2(::IllegalArgumentException,X("newYearMonthDuration"), + X("Overflow in duration operation [err:FODT0002]")); + + return context->getItemFactory()->createYearMonthDuration(valueMonth->asMAPM(), context); +} + +/** Divide this duration by a number -- only available for xdt:dayTimeDuration + * and xdt:yearMonthDuration */ +ATDurationOrDerived::Ptr ATDurationOrDerivedImpl::divide(const Numeric::Ptr &divisor, + const DynamicContext* context) const { + if(divisor->isNaN()) + XQThrow2(::IllegalArgumentException,X("ATDurationOrDerivedImpl::divide"), + X("Cannot divide a duration by NaN [err:FOCA0005].")); + + if(divisor->isZero()) + XQThrow2(::IllegalArgumentException,X("ATDurationOrDerivedImpl::divide"), + X("Overflow in duration operation [err:FODT0002]")); + + if(_durationType == DAY_TIME_DURATION) { + return newDayTimeDuration(asSeconds(context)->divide(divisor, context), context); + } + else if(_durationType == YEAR_MONTH_DURATION) { + return newYearMonthDuration(asMonths(context)->divide(divisor, context)->round(context), context); + } + else { + // if we are trying to compare anything else -- error // + XQThrow2(::IllegalArgumentException,X("ATDurationOrDerivedImpl::divide"), + X("divide operator for given types not supported")); + } +} + +/** Divide this duration by a duration -- only available for xdt:dayTimeDuration +* and xdt:yearMonthDuration */ +ATDecimalOrDerived::Ptr ATDurationOrDerivedImpl::divide(const ATDurationOrDerived::Ptr &divisor, + const DynamicContext* context) const { + if(_durationType == DAY_TIME_DURATION) { + return this->asSeconds(context)->divide(divisor->asSeconds(context), context); + } + else if(_durationType == YEAR_MONTH_DURATION) { + return this->asMonths(context)->divide(divisor->asMonths(context), context); + } + else { + // if we are trying to compare anything else -- error // + XQThrow2(::IllegalArgumentException,X("ATDurationOrDerivedImpl::divide"), + X("divide operator for given types not supported")); + } +} + +AnyAtomicType::AtomicObjectType ATDurationOrDerivedImpl::getPrimitiveTypeIndex() const { + return _durationType; +} + +/** Multiply this duration by a number -- only available for xdt:dayTimeDuration + * and xdt:yearMonthDuration */ +ATDurationOrDerived::Ptr ATDurationOrDerivedImpl::multiply(const Numeric::Ptr &multiplier, const DynamicContext* context) const { + if(multiplier->isNaN()) + XQThrow2(::IllegalArgumentException,X("ATDurationOrDerivedImpl::multiply"), + X("Cannot multiply a duration by NaN [err:FOCA0005].")); + + if(_durationType == DAY_TIME_DURATION) { + return newDayTimeDuration(asSeconds(context)->multiply(multiplier, context), context); + } + else if(_durationType == YEAR_MONTH_DURATION) { + return newYearMonthDuration(asMonths(context)->multiply(multiplier, context)->round(context), context); + } + else { + // if we are trying to compare anything else -- error // + XQThrow2(::IllegalArgumentException,X("ATDurationOrDerivedImpl::multiply"), + X("multiply operator for given types not supported")); + } + +} + +/** Add a duration to this duration -- only available for xdt:dayTimeDuration + * and xdt:yearMonthDuration */ +ATDurationOrDerived::Ptr ATDurationOrDerivedImpl::add(const ATDurationOrDerived::Ptr &other, const DynamicContext* context) const { + if(this->isDayTimeDuration() && ((const ATDurationOrDerived*)other)->isDayTimeDuration()) { + return newDayTimeDuration(asSeconds(context)->add(other->asSeconds(context), context), context); + } + else if(this->isYearMonthDuration() && ((const ATDurationOrDerived*)other)->isYearMonthDuration() ) { + return newYearMonthDuration(asMonths(context)->add(other->asMonths(context), context), context); + } + else { + XQThrow2(::IllegalArgumentException, X("ATDurationOrDerivedImpl::add"), + X("add operation not supported for given types")); + } +} + +/** Subtract a duration from this duration -- only available for xdt:dayTimeDuration + * and xdt:yearMonthDuration */ +ATDurationOrDerived::Ptr ATDurationOrDerivedImpl::subtract(const ATDurationOrDerived::Ptr &other, const DynamicContext* context) const { + if(this->isDayTimeDuration() && ((const ATDurationOrDerived*)other)->isDayTimeDuration()) { + return newDayTimeDuration(asSeconds(context)->subtract(other->asSeconds(context), context), context); + } else if(this->isYearMonthDuration() && ((const ATDurationOrDerived*)other)->isYearMonthDuration() ) { + return newYearMonthDuration(asMonths(context)->subtract(other->asMonths(context), context), context); + } else { + XQThrow2(::IllegalArgumentException, X("ATDurationOrDerivedImpl::subtract"), + X("subtract operation not supported for given types")); + } +} + +ATDecimalOrDerived::Ptr ATDurationOrDerivedImpl::getYears(const DynamicContext* context) const +{ + MAPM result = _months.integer_divide(12); + if(!_isPositive) result = result.neg(); + return context->getItemFactory()->createInteger(result, context); +} + +ATDecimalOrDerived::Ptr ATDurationOrDerivedImpl::getMonths(const DynamicContext* context) const +{ + MAPM result = DateUtils::modulo(_months, 12); + if(!_isPositive) result = result.neg(); + return context->getItemFactory()->createInteger(result, context); +} + +ATDecimalOrDerived::Ptr ATDurationOrDerivedImpl::getDays(const DynamicContext* context) const +{ + MAPM result = _seconds.integer_divide(DateUtils::g_secondsPerDay); + if(!_isPositive) result = result.neg(); + return context->getItemFactory()->createInteger(result, context); +} + +ATDecimalOrDerived::Ptr ATDurationOrDerivedImpl::getHours(const DynamicContext* context) const +{ + MAPM result = DateUtils::modulo(_seconds, DateUtils::g_secondsPerDay).integer_divide(DateUtils::g_secondsPerHour); + if(!_isPositive) result = result.neg(); + return context->getItemFactory()->createInteger(result, context); +} + +ATDecimalOrDerived::Ptr ATDurationOrDerivedImpl::getMinutes(const DynamicContext* context) const +{ + MAPM result = DateUtils::modulo(_seconds, DateUtils::g_secondsPerHour).integer_divide(DateUtils::g_secondsPerMinute); + if(!_isPositive) result = result.neg(); + return context->getItemFactory()->createInteger(result, context); +} + +ATDecimalOrDerived::Ptr ATDurationOrDerivedImpl::getSeconds(const DynamicContext* context) const +{ + MAPM result = DateUtils::modulo(_seconds, DateUtils::g_secondsPerMinute); + if(!_isPositive) result = result.neg(); + return context->getItemFactory()->createDecimal(result, context); +} + +bool ATDurationOrDerivedImpl::isNegative() const { + return !_isPositive; +} + +/* return this duration in forms of seconds -- only for dayTimeDuration */ +ATDecimalOrDerived::Ptr ATDurationOrDerivedImpl::asSeconds(const DynamicContext* context) const +{ + MAPM result = _seconds; + if(!_isPositive) result = result.neg(); + return context->getItemFactory()->createDecimal(result, context); +} + +ATDecimalOrDerived::Ptr ATDurationOrDerivedImpl::asMonths(const DynamicContext* context) const +{ + MAPM result = _months; + if(!_isPositive) result = result.neg(); + return context->getItemFactory()->createDecimal(result, context); +} + +void ATDurationOrDerivedImpl::setDuration(const XMLCh* const s) +{ + parseDuration(s, _months, _seconds); +} + +void ATDurationOrDerivedImpl::parseDuration(const XMLCh *const s, MAPM &months, MAPM &seconds) +{ + unsigned int length = XMLString::stringLen(s); + + if(s == 0) { + XQThrow2(XPath2TypeCastException,X("XSDurationImpl::setDuration"), X("Invalid representation of duration [err:FORG0001]")); + } + + // State variables etc. + bool gotDot = false; + bool gotDigit = false; + bool stop = false; + bool Texist = false; + unsigned int pos = 0; + long int tmpnum = 0; + double decplace = 1; + double tmpdec = 0; + + // defaulting values + bool isPositive = true; + MAPM year = 0; + MAPM month = 0; + MAPM day = 0; + MAPM hour = 0; + MAPM minute = 0; + MAPM sec = 0; + + int state = 0 ; // 0 = year / 1 = month / 2 = day / 3 = hour / 4 = minutes / 5 = sec + XMLCh tmpChar; + + bool wrongformat = false; + + // check initial 'negative' sign and the P character + + if ( length > 1 && s[0] == L'-' && s[1] == L'P' ) { + isPositive = false; + pos = 2; + } else if ( length > 1 && s[0] == L'P' ) { + isPositive = true; + pos = 1; + } else { + wrongformat = true; + } + + + while ( ! wrongformat && !stop && pos < length) { + tmpChar = s[pos]; + pos++; + switch(tmpChar) { + + // a dot, only will occur when parsing the second + case L'.': { + if (! gotDot && gotDigit) { + gotDot = true; + sec = tmpnum; + gotDigit = false; + tmpnum = 0; + break; + } + wrongformat = true; + break; + } + case 0x0030: + case 0x0031: + case 0x0032: + case 0x0033: + case 0x0034: + case 0x0035: + case 0x0036: + case 0x0037: + case 0x0038: + case 0x0039: { + if ( gotDot ) { + decplace *= 10; + } + tmpnum *= 10; + tmpnum += static_cast(tmpChar - 0x0030); + gotDigit = true; + + break; + } + case L'Y' : { + if ( state == 0 && gotDigit && !gotDot ) { + year = tmpnum; + state = 1; + tmpnum = 0; + gotDigit = false; + } else { + + wrongformat = true; + } + break; + } + case L'M' : { + if ( gotDigit) { + if ( state < 4 && Texist && !gotDot) { + minute = tmpnum; + state = 4; + gotDigit = false; + tmpnum = 0; + break; + } else if ( state < 2 && ! Texist && !gotDot) { + month = tmpnum; + state = 1; + gotDigit = false; + tmpnum = 0; + break; + } + } + + wrongformat = true; + break; + } + case L'D' : { + if ( state < 2 && gotDigit && !gotDot) { + day = tmpnum; + state = 2; + gotDigit = false; + tmpnum = 0; + } else { + + wrongformat = true; + } + break; + + } + case L'T' : { + if ( state < 3 && !gotDigit && !gotDot) { + Texist = true; + } else { + + wrongformat = true; + } + break; + } + case L'H' : { + if ( state < 3 && gotDigit && Texist && !gotDot) { + hour = tmpnum; + state = 3; + gotDigit = false; + tmpnum = 0; + } else { + + wrongformat = true; + } + break; + } + case L'S' : { + if ( state < 5 && gotDigit && Texist) { + tmpdec = tmpnum / decplace; + sec += tmpdec; + state = 5; + gotDigit = false; + tmpnum = 0; + } else { + + wrongformat = true; + } + break; + } + default: + wrongformat = true; + } + } + + // check duration format + if ( wrongformat || (Texist && state < 3) || gotDigit) { + XQThrow2(XPath2TypeCastException,X("ATDurationOrDerivedImpl::setDuration"), X("Invalid representation of duration [err:FORG0001]")); + } + + months = year * 12 + month; + + seconds = day * DateUtils::g_secondsPerDay + + hour * DateUtils::g_secondsPerHour + + minute * DateUtils::g_secondsPerMinute + + sec; + + if(!isPositive) { + months = months.neg(); + seconds = seconds.neg(); + } +} diff --git a/src/items/impl/ATFloatOrDerivedImpl.cpp b/src/items/impl/ATFloatOrDerivedImpl.cpp new file mode 100644 index 00000000..abdc72d6 --- /dev/null +++ b/src/items/impl/ATFloatOrDerivedImpl.cpp @@ -0,0 +1,776 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATFloatOrDerivedImpl.cpp,v 1.20 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +int ATFloatOrDerivedImpl::g_nSignificantDigits=25; + +ATFloatOrDerivedImpl:: +ATFloatOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const StaticContext* context): + ATFloatOrDerived(), + _typeName(typeName), + _typeURI(typeURI) { + + setFloat(value); + // if state is NaN, it could be because it should be INF or -INF + if(_state == NaN) { + if(XPath2Utils::equals(value, Numeric::NegINF_string)) { + _state = NEG_INF; + } else if (XPath2Utils::equals(value, Numeric::INF_string)) { + _state = INF; + } + } + checkFloatLimits(_state, _float); +} + +ATFloatOrDerivedImpl:: +ATFloatOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const MAPM value, const StaticContext* context): + ATFloatOrDerived(), + _typeName(typeName), + _typeURI(typeURI) { + + _float = value; + _state = NUM; + if (value.sign() < 0) + _state = NEG_NUM; + checkFloatLimits(_state, _float); +} + +void *ATFloatOrDerivedImpl::getInterface(const XMLCh *name) const +{ + if(name == Item::gXQilla) { + return (void*)this; + } + return 0; +} + +/* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ +const XMLCh* ATFloatOrDerivedImpl::getPrimitiveTypeName() const { + return this->getPrimitiveName(); +} + +const XMLCh* ATFloatOrDerivedImpl::getPrimitiveName() { + return SchemaSymbols::fgDT_FLOAT; +} + +/* Get the name of this type (ie "integer" for xs:integer) */ +const XMLCh* ATFloatOrDerivedImpl::getTypeName() const { + return _typeName; +} + +/* Get the namespace URI for this type */ +const XMLCh* ATFloatOrDerivedImpl::getTypeURI() const { + return _typeURI; +} + +AnyAtomicType::AtomicObjectType ATFloatOrDerivedImpl::getTypeIndex() { + return AnyAtomicType::FLOAT; +} + +/* returns the XMLCh* (canonical) representation of this type */ +const XMLCh* ATFloatOrDerivedImpl::asString(const DynamicContext* context) const +{ + return asDoubleString(g_nSignificantDigits, context); +} + +/* Promote this to the given type, if possible */ +Numeric::Ptr ATFloatOrDerivedImpl::promoteTypeIfApplicable(const XMLCh* typeURI, const XMLCh* typeName, const DynamicContext* context) const { + // if this isInstanceOf target (and target instanceof xs:float) or if typeName == double, cast + if(this->isInstanceOfType(typeURI, typeName, context) ) { + return this; // no need to promote, already a float (or possibly anyAtomicType, anySimpleType, anyType) + } else if( (XPath2Utils::equals(typeName, SchemaSymbols::fgDT_DOUBLE) && + XPath2Utils::equals(typeURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) ) { + return (const Numeric::Ptr )this->castAs(typeURI, typeName, context); + } else { + return 0; + } +} + +/** Returns a Numeric object which is the sum of this and other */ +Numeric::Ptr ATFloatOrDerivedImpl::add(const Numeric::Ptr &other, const DynamicContext* context) const { + if(other->getPrimitiveTypeIndex() == AnyAtomicType::DECIMAL) { + // if other is a decimal, promote it to xs:float + return this->add((const Numeric::Ptr )other->castAs(this->getPrimitiveTypeURI(), this->getPrimitiveTypeName(), context), context); + } else if (other->getPrimitiveTypeIndex() == AnyAtomicType::DOUBLE) { + // if other is a double, promote this to xs:double + return ((const Numeric::Ptr )this->castAs(other->getPrimitiveTypeURI(), other->getPrimitiveTypeName(), context))->add(other, context); + } else if (other->getPrimitiveTypeIndex() == AnyAtomicType::FLOAT) { + // same primitive type, can make comparison + ATFloatOrDerivedImpl* otherImpl = (ATFloatOrDerivedImpl*)(const Numeric*)other; + if(otherImpl->_state == NaN) return notANumber(context); + + switch (_state) { + case NaN: return notANumber(context); + case INF: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); // case taken care of above + case NEG_NUM: + case NUM: return infinity(context); // INF + NUM = INF + case INF: return infinity(context); // INF + INF = INF + case NEG_INF: return notANumber(context); // INF + (-INF) = NaN + default: assert(false); return 0; // should never get here + } + } + case NEG_INF: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); //case taken care of above + case NEG_NUM: + case NUM: return negInfinity(context); // -INF + NUM = -INF + case INF: return notANumber(context); // -INF + INF = NaN + case NEG_INF: return negInfinity(context); // -INF + (-INF) = -INF + default: assert(false); return 0; // should never get here + } + } + case NEG_NUM: + case NUM: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); // case taken care of above + case INF: return infinity(context); + case NEG_INF: return negInfinity(context); + case NEG_NUM: + case NUM: + { + // Handle positive and negative zero + if(_float.sign()==0 && otherImpl->_float!=0) + return other; + else if(_float.sign()!=0 && otherImpl->_float==0) + return this; + else if(_float.sign()==0 && otherImpl->_float==0) + { + if(_state==otherImpl->_state) + // sum of two zero of the same sign -> result is equal to any of the two items + return this; + else + // sum of two zero of different sign -> result is equal to +0 + return newFloat(MM_Zero, context); + } + return newFloat(_float + otherImpl->_float, context); + } + default: assert(false); return 0; // should never get here + } + } + default: assert(false); return 0; // should never get here + } + } else { + assert(false); // should never get here, numeric types are xs:decimal, xs:float, xs:integer and xs:double + return 0; + } +} + +/** Returns a Numeric object which is the difference of this and + * other */ +Numeric::Ptr ATFloatOrDerivedImpl::subtract(const Numeric::Ptr &other, const DynamicContext* context) const { + if(other->getPrimitiveTypeIndex() == AnyAtomicType::DECIMAL) { + // if other is a decimal, promote it to xs:float + return this->subtract((const Numeric::Ptr )other->castAs(this->getPrimitiveTypeURI(), this->getPrimitiveTypeName(), context), context); + } else if (other->getPrimitiveTypeIndex() == AnyAtomicType::DOUBLE) { + // if other is a double, promote this to xs:double + return ((const Numeric::Ptr )this->castAs(other->getPrimitiveTypeURI(), other->getPrimitiveTypeName(), context))->subtract(other, context); + } else if (other->getPrimitiveTypeIndex() == AnyAtomicType::FLOAT) { + // same primitive type, can make comparison + ATFloatOrDerivedImpl* otherImpl = (ATFloatOrDerivedImpl*)(const Numeric*)other; + if(otherImpl->_state == NaN) return notANumber(context); + + switch (_state) { + case NaN: return notANumber(context); + case INF: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); // case taken care of above + case NEG_NUM: + case NUM: return infinity(context); // INF - NUM = INF + case INF: return notANumber(context); // INF - INF = NaN + case NEG_INF: return infinity(context); // INF - (-INF) = INF + default: assert(false); return 0; // should never get here + } + } + case NEG_INF: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); //case taken care of above + case NEG_NUM: + case NUM: return negInfinity(context); // -INF - NUM = -INF + case INF: return negInfinity(context); // -INF - INF = -INF + case NEG_INF: return notANumber(context); // -INF - (-INF) = NaN + default: assert(false); return 0; // should never get here + } + } + case NEG_NUM: + case NUM: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); // case taken care of above + case INF: return negInfinity(context); // NUM - INF = -INF + case NEG_INF: return infinity(context); // NUM - (-INF) = INF + case NEG_NUM: + case NUM: return newFloat(_float - otherImpl->_float, context); + default: assert(false); return 0; // should never get here + } + } + default: assert(false); return 0; // should never get here + } + } else { + assert(false); // should never get here, numeric types are xs:decimal, xs:float, xs:integer and xs:double + return 0; + } +} + +/** Returns a Numeric object which is the product of this and other */ +Numeric::Ptr ATFloatOrDerivedImpl::multiply(const Numeric::Ptr &other, const DynamicContext* context) const { + if(other->getPrimitiveTypeIndex() == AnyAtomicType::DECIMAL) { + // if other is a decimal, promote it to xs:float + return this->multiply((const Numeric::Ptr )other->castAs(this->getPrimitiveTypeURI(), this->getPrimitiveTypeName(), context), context); + } else if (other->getPrimitiveTypeIndex() == AnyAtomicType::DOUBLE) { + // if other is a double, promote this to xs:double + return ((const Numeric::Ptr )this->castAs(other->getPrimitiveTypeURI(), other->getPrimitiveTypeName(), context))->multiply(other, context); + } else if (other->getPrimitiveTypeIndex() == AnyAtomicType::FLOAT) { + // same primitive type, can make comparison + ATFloatOrDerivedImpl* otherImpl = (ATFloatOrDerivedImpl*)(const Numeric*)other; + if(otherImpl->_state == NaN) return notANumber(context); + + switch (_state) { + case NaN: return notANumber(context); + case INF: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); // case taken care of above + case NEG_NUM: + case NUM: return other->isPositive() ? infinity(context) : negInfinity(context); // INF * NUM = +/-INF + case INF: return infinity(context); // INF * INF = INF + case NEG_INF: return negInfinity(context); // INF * (-INF) = -INF + default: assert(false); return 0; // should never get here + } + } + case NEG_INF: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); //case taken care of above + case NEG_NUM: + case NUM: return other->isPositive() ? negInfinity(context) : infinity(context); // -INF * NUM = +/-INF + case INF: return negInfinity(context); // -INF * INF = -INF + case NEG_INF: return infinity(context); // -INF * (-INF) = INF + default: assert(false); return 0; // should never get here + } + } + case NEG_NUM: + case NUM: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); // case taken care of above + case INF: return this->isPositive() ? infinity(context) : negInfinity(context); // NUM * INF = +/-INF + case NEG_INF: return this->isPositive() ? negInfinity(context) : infinity(context); // NUM * (-INF) = +/-INF + case NEG_NUM: + case NUM: + if(other->isZero() || this->isZero()) { + if((this->isNegative() && other->isPositive()) || + (this->isPositive() && other->isNegative())) { + return negZero(context); // 0 / (-NUM) or (-0) / NUM = -0 + } else { + return newFloat(0, context); // 0 / NUM or (-0) / (-NUM) = 0 + } + } + return newFloat(_float * otherImpl->_float, context); + default: assert(false); return 0; // should never get here + } + } + default: assert(false); return 0; // should never get here + } + } else { + assert(false); // should never get here, numeric types are xs:decimal, xs:float, xs:integer and xs:double + return 0; + } +} + +/** Returns a Numeric object which is the quotient of this and other */ +Numeric::Ptr ATFloatOrDerivedImpl::divide(const Numeric::Ptr &other, const DynamicContext* context) const { + if(other->getPrimitiveTypeIndex() == AnyAtomicType::DECIMAL) { + // if other is a decimal, promote it to xs:float + return this->divide((const Numeric::Ptr )other->castAs(this->getPrimitiveTypeURI(), this->getPrimitiveTypeName(), context), context); + } else if (other->getPrimitiveTypeIndex() == AnyAtomicType::DOUBLE) { + // if other is a double, promote this to xs:double + return ((const Numeric::Ptr )this->castAs(other->getPrimitiveTypeURI(), other->getPrimitiveTypeName(), context))->divide(other, context); + } else if (other->getPrimitiveTypeIndex() == AnyAtomicType::FLOAT) { + // same primitive type, can make comparison + ATFloatOrDerivedImpl* otherImpl = (ATFloatOrDerivedImpl*)(const Numeric*)other; + if(otherImpl->_state == NaN) return notANumber(context); + + switch (_state) { + case NaN: return notANumber(context); + case INF: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); // case taken care of above + case NEG_NUM: + case NUM: return other->isPositive() ? infinity(context) : negInfinity(context); // INF / NUM = +/-INF + case INF: return notANumber(context); // INF / INF = NaN + case NEG_INF: return notANumber(context); // INF / (-INF) = NaN + default: assert(false); return 0; // should never get here + } // switch + }// case + case NEG_INF: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); //case taken care of above + case NEG_NUM: + case NUM: return other->isPositive() ? negInfinity(context) : infinity(context); // -INF / NUM = -INF + case INF: return notANumber(context); // -INF / INF = NaN + case NEG_INF: return notANumber(context); // -INF / (-INF) = NaN + default: assert(false); return 0; // should never get here + } // switch + } // case + case NEG_NUM: + case NUM: { + switch(otherImpl->_state) { + case NaN: return notANumber(context); // case taken care of above + case INF: { // NUM / INF = +/-0 + if(this->isNegative()) { + return negZero(context); + } else { + return newFloat(0, context); + } + }// case + case NEG_INF: { // NUM / -INF = +/-0 + if(this->isPositive()) { + return negZero(context); + } else { + return newFloat(0, context); + } + }// case + case NEG_NUM: + case NUM: { + if(other->isZero()) { + if(this->isZero()) return notANumber(context); + if((this->isNegative() && other->isPositive()) || + (this->isPositive() && other->isNegative())) { + return negInfinity(context); // NUM / (-0) or (-NUM) / 0 = -INF + } else { + return infinity(context); // NUM / 0 or (-NUM) / (-0) = INF + } + } + else if(this->isZero()) + { + if((this->isNegative() && other->isPositive()) || + (this->isPositive() && other->isNegative())) { + return negZero(context); // 0 / (-NUM) or (-0) / NUM = -0 + } else { + return newFloat(0, context); // 0 / NUM or (-0) / (-NUM) = 0 + } + } + return newFloat(_float / otherImpl->_float, context); + }// case + default: assert(false); return 0; // should never get here + }// switch + }// case + default: assert(false); return 0; // should never get here + }// switch + } else { + assert(false); // should never get here, numeric types are xs:decimal, xs:float, xs:integer and xs:double + return 0; + } +} + +/** Returns the mod of its operands as a Numeric */ +Numeric::Ptr ATFloatOrDerivedImpl::mod(const Numeric::Ptr &other, const DynamicContext* context) const { + if(other->getPrimitiveTypeIndex() == AnyAtomicType::DECIMAL) { + // if other is a decimal, promote it to xs:float + return this->mod((const Numeric::Ptr )other->castAs(this->getPrimitiveTypeURI(), this->getPrimitiveTypeName(), context), context); + } else if (other->getPrimitiveTypeIndex() == AnyAtomicType::DOUBLE) { + // if other is a double, promote this to xs:double + return ((const Numeric::Ptr )this->castAs(other->getPrimitiveTypeURI(), other->getPrimitiveTypeName(), context))->mod(other, context); + } else if (other->getPrimitiveTypeIndex() == AnyAtomicType::FLOAT) { + // same primitive type, can make comparison + const ATFloatOrDerivedImpl* otherImpl = (ATFloatOrDerivedImpl*)(const Numeric*)other; + if(this->isNaN() || otherImpl->isNaN() || this->isInfinite() || otherImpl->isZero()) { + return notANumber(context); + } else if(otherImpl->isInfinite() || this->isZero()) { + return (const Numeric::Ptr )this->castAs(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_FLOAT, context); + } else { + MAPM result = _float; + MAPM r; + r = result.integer_divide(otherImpl->_float); + result -= r * otherImpl->_float; + if (result == 0 && isNegative()) + return negZero(context); + return newFloat(result, context); + } + } else { + assert(false); // should never get here, numeric types are xs:decimal, xs:float, xs:integer and xs:double + return 0; + } +} + +/** Returns the floor of this Numeric */ +Numeric::Ptr ATFloatOrDerivedImpl::floor(const DynamicContext* context) const { + switch (_state) { + case NaN: return notANumber(context); + case INF: return infinity(context); + case NEG_INF: return negInfinity(context); + case NEG_NUM: + case NUM: { + if (isZero() && isNegative()) + return negZero(context); + return newFloat(_float.floor(), context); + } + default: { assert(false); return 0; // should never get here + } + } +} + +/** Returns the ceiling of this Numeric */ +Numeric::Ptr ATFloatOrDerivedImpl::ceiling(const DynamicContext* context) const { + switch (_state) { + case NaN: return notANumber(context); + case INF: return infinity(context); + case NEG_INF: return negInfinity(context); + case NEG_NUM: + case NUM: { + if (isNegative() && _float >= -0.5) { + return negZero(context); + } + return newFloat(_float.ceil(), context); + } + default: { assert(false); return 0; // should never get here + } + } +} + +/** Rounds this Numeric */ +Numeric::Ptr ATFloatOrDerivedImpl::round(const DynamicContext* context) const { + switch (_state) { + case NaN: return notANumber(context); + case INF: return infinity(context); + case NEG_INF: return negInfinity(context); + case NEG_NUM: + case NUM: { + if (isNegative() &&_float >= -0.5) { + return negZero(context); + } + MAPM value = _float + 0.5; + return newFloat(value.floor(), context); + } + default: { assert(false); return 0; // should never get here + } + } +} + +/** Rounds this Numeric to the given precision, and rounds a half to even */ +Numeric::Ptr ATFloatOrDerivedImpl::roundHalfToEven(const Numeric::Ptr &precision, const DynamicContext* context) const { + switch (_state) { + case NaN: return notANumber(context); + case INF: return infinity(context); + case NEG_INF: return negInfinity(context); + case NEG_NUM: + case NUM: break; + default: { assert(false); return 0; // should never get here + } + } + + if (isZero() && isNegative()) + return this; + + ATFloatOrDerived::Ptr float_precision = (const Numeric::Ptr)precision->castAs(this->getPrimitiveTypeURI(), this->getPrimitiveTypeName(), context); + MAPM exp = MAPM(10).pow(((ATFloatOrDerivedImpl*)(const ATFloatOrDerived*)float_precision)->_float); + MAPM value = _float * exp; + bool halfVal = false; + + // check if we're rounding on a half value + if((value-0.5) == (value.floor())) { + halfVal = true; + } + value = _float * exp + 0.5; + value = value.floor(); + + // if halfVal make sure what we return has the least significant digit even + if (halfVal) { + if(value.is_odd()) { + value = value - 1; + } + } + value = value / exp; + + // the spec doesn't actually say to do this, but djf believes this is the correct way to handle rounding of -ve values which will result in 0.0E0 + // if (value == 0 && isNegative()) + // return negZero(context); + return newFloat(value, context); +} + +/** Returns the Additive inverse of this Numeric */ +Numeric::Ptr ATFloatOrDerivedImpl::invert(const DynamicContext* context) const { + switch (_state) { + case NaN: return this; + case INF: return negInfinity(context); + case NEG_INF: return infinity(context); + case NEG_NUM: + case NUM: + if(this->isZero()) + { + if(this->isNegative()) + return newFloat(0, context); + else + return negZero(context); + } + return newFloat(_float.neg(), context); + default: assert(false); return 0; // should never get here + } +} + +/** Does this Numeric have value 0? */ +bool ATFloatOrDerivedImpl::isZero() const { + switch (_state) { + case NaN: + case INF: + case NEG_INF: return false; + case NEG_NUM: + case NUM: return _float.sign() == 0; + default: { assert(false); return false; // should never get here + } + } +} + +/** Is this Numeric positive? */ +bool ATFloatOrDerivedImpl::isPositive() const { + switch (_state) { + case INF: + case NUM: return true; + case NaN: + case NEG_INF: + case NEG_NUM: return false; + } + assert(false); + return false; // should never get here +} + +/** Is this Numeric negative? */ +bool ATFloatOrDerivedImpl::isNegative() const { + switch (_state) { + case NaN: + case INF: + case NUM: return false; + case NEG_NUM: + case NEG_INF: return true; + } + assert(false); + return false; // should never get here +} + +/* Is this xs:float not a number */ +bool ATFloatOrDerivedImpl::isNaN() const { + return _state == NaN; +} + + +/* Is this xs:float infinite? */ +bool ATFloatOrDerivedImpl::isInfinite() const { + return _state == INF || _state == NEG_INF; +} + + +AnyAtomicType::AtomicObjectType ATFloatOrDerivedImpl::getPrimitiveTypeIndex() const { + return this->getTypeIndex(); +} + +/* returns a new infinity xs:float*/ +ATFloatOrDerived::Ptr ATFloatOrDerivedImpl::infinity(const DynamicContext* context) const { + return context->getItemFactory()->createFloat(Numeric::INF_string, context); +} + +/* returns a new negative infinity xs:float*/ +ATFloatOrDerived::Ptr ATFloatOrDerivedImpl::negInfinity(const DynamicContext* context) const { + return context->getItemFactory()->createFloat(Numeric::NegINF_string, context); +} + +/* returns a NaN xs:float*/ +ATFloatOrDerived::Ptr ATFloatOrDerivedImpl::notANumber(const DynamicContext* context) const { + return context->getItemFactory()->createFloat(Numeric::NaN_string, context); +} + +/* returns a -0 ATFloatOrDerived*/ +ATFloatOrDerived::Ptr ATFloatOrDerivedImpl::negZero(const DynamicContext* context) const { + return context->getItemFactory()->createFloat(Numeric::NegZero_string, context); +} + +/*returns a ATFloatOrDerived of value value*/ +ATFloatOrDerived::Ptr ATFloatOrDerivedImpl::newFloat(MAPM value, const DynamicContext* context) const { + return context->getItemFactory()->createFloat(value, context); +} + +static MAPM parse(const XMLCh* const value, Numeric::State &state) +{ + if(value == NULL) { + // Not a Number + state = Numeric::NaN; + return 0; + } + + unsigned int length=XMLString::stringLen(value) + 1; + + AutoDeleteArray buffer(new char[length]); + + bool gotBase = false; + bool gotPoint = false; + bool gotSign = false; + bool gotDigit = false; + bool stop = false; + bool munchWS = true; + bool isNegative = false; + + const XMLCh *src = value; + char *dest = buffer; + XMLCh tmpChar; + while(!stop && *src != 0) { + tmpChar = *src++; + + switch(tmpChar) { + + case L'+': { + *dest++ = '+'; + if(gotSign || gotDigit) { + stop = true; + } else { + gotSign = true; + } + break; + } + + case L'-': { + *dest++ = '-'; + if(gotSign || gotDigit) { + stop = true; + } else { + gotSign = true; + if(!gotBase) isNegative = true; + } + break; + } + + case 0x0045: + case 0x0065: { + *dest++ = 'e'; + if(!gotDigit || gotBase) { + stop = true; + } else { + gotPoint = false; + gotSign = false; + gotBase = true; + gotDigit = false; + } + break; + } + + //This is '.' + case 0x002e: { + *dest++ = '.'; + if(gotPoint || gotBase) { + stop = true; + } else { + gotPoint = true; + } + break; + } + + case 0x0030: + case 0x0031: + case 0x0032: + case 0x0033: + case 0x0034: + case 0x0035: + case 0x0036: + case 0x0037: + case 0x0038: + case 0x0039: { + gotDigit = true; + *dest++ = (char)(tmpChar - 0x0030) + '0'; + break; + } + + // whitespace at start or end of string... + case 0x0020: + case 0x0009: + case 0x000d: + case 0x000a: { + bool endOfWS = false; + while(!endOfWS && *src != 0) { + tmpChar = *src++; + switch(tmpChar) { + case 0x0020: + case 0x0009: + case 0x000d: + case 0x000a: { + break; + } + default: { + endOfWS = true; + --src; + if(munchWS) { + //end of leading whitespace + munchWS = false; + } else { + //trailing whitespace is followed by other characters - so return NaN. + stop = true; + } + } + } + } + break; + } + + default: + stop = true; + break; + + } + + } + + if(!gotDigit || stop) { + if(XPath2Utils::equals(value, Numeric::NegINF_string)) { + state = Numeric::NEG_INF; + } + else if (XPath2Utils::equals(value, Numeric::INF_string)) { + state = Numeric::INF; + } + else { + state = Numeric::NaN; + } + return 0; + } + + *dest++ = 0; // Null terminate + if(isNegative) state = Numeric::NEG_NUM; + else state = Numeric::NUM; + + return (char*)buffer; +} + + +void ATFloatOrDerivedImpl::setFloat(const XMLCh* const value) +{ + _float = parse(value, _state); +} + +MAPM ATFloatOrDerivedImpl::parseFloat(const XMLCh* const value, State &state) +{ + MAPM result = parse(value, state); + Numeric::checkFloatLimits(state, result); + return result; +} diff --git a/src/items/impl/ATGDayOrDerivedImpl.cpp b/src/items/impl/ATGDayOrDerivedImpl.cpp new file mode 100644 index 00000000..76daf681 --- /dev/null +++ b/src/items/impl/ATGDayOrDerivedImpl.cpp @@ -0,0 +1,293 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATGDayOrDerivedImpl.cpp,v 1.16 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../../utils/DateUtils.hpp" +#include +#include +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +ATGDayOrDerivedImpl:: +ATGDayOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context): + ATGDayOrDerived(), + _typeName(typeName), + _typeURI(typeURI) { + + setGDay(value); +} + +void *ATGDayOrDerivedImpl::getInterface(const XMLCh *name) const +{ + if(name == Item::gXQilla) { + return (void*)this; + } + return 0; +} + +/* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ +const XMLCh* ATGDayOrDerivedImpl::getPrimitiveTypeName() const { + return this->getPrimitiveName(); +} + +const XMLCh* ATGDayOrDerivedImpl::getPrimitiveName() { + return SchemaSymbols::fgDT_DAY; +} + +/* Get the name of this type (ie "integer" for xs:integer) */ +const XMLCh* ATGDayOrDerivedImpl::getTypeName() const { + return _typeName; +} + +/* Get the namespace URI for this type */ +const XMLCh* ATGDayOrDerivedImpl::getTypeURI() const { + return _typeURI; +} + +AnyAtomicType::AtomicObjectType ATGDayOrDerivedImpl::getTypeIndex() { + return AnyAtomicType::G_DAY; +} + +/* returns the XMLCh* (canonical) representation of this type */ +const XMLCh* ATGDayOrDerivedImpl::asString(const DynamicContext* context) const { + XMLBuffer buffer(1023, context->getMemoryManager()); + buffer.append(chDash); + buffer.append(chDash); + buffer.append(chDash); + DateUtils::formatNumber(_gDay, 2, buffer); + if(_hasTimezone) { + buffer.append(timezone_->asString(context)); + } + return context->getMemoryManager()->getPooledString(buffer.getRawBuffer()); +} + +static inline MAPM referenceDateTime(const MAPM &DD, bool hasTimezone, const Timezone::Ptr &timezone) +{ + MAPM result = DateUtils::convertDMY2Absolute(DD, 12, 1972) * DateUtils::g_secondsPerDay; + + if(hasTimezone) { + result -= timezone->asSeconds(); + } + + return result; + } + +MAPM ATGDayOrDerivedImpl::buildReferenceDateTime(const DynamicContext *context) const +{ + MAPM result = referenceDateTime(_gDay, _hasTimezone, timezone_); + + if(!_hasTimezone) + result -= context->getImplicitTimezone()->asSeconds(context)->asMAPM(); + + return result; +} + +/* Returns true if and only if the xs:dateTimes representing the starting instants of equivalent occurrences of $arg1 and $arg2 + * compare equal. The starting instants of equivalent occurrences of $arg1 and $arg2 are calculated by adding the missing + * components of $arg1 and $arg2 from an xs:dateTime template such as 1972-12-xxT00:00:00. Returns false otherwise. + */ +bool ATGDayOrDerivedImpl::equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const { + if(this->getPrimitiveTypeIndex() != target->getPrimitiveTypeIndex()) { + XQThrow2(::IllegalArgumentException,X("ATGDayOrDerivedImpl::equals"), X("Equality operator for given types not supported [err:XPTY0004]")); + } + return compare((const ATGDayOrDerived *)target.get(), context) == 0; +} + +int ATGDayOrDerivedImpl::compare(const ATGDayOrDerived::Ptr &other, const DynamicContext *context) const +{ + return buildReferenceDateTime(context).compare(((const ATGDayOrDerivedImpl *)other.get())->buildReferenceDateTime(context)); +} + +/** Returns true if a timezone is defined for this. False otherwise.*/ +bool ATGDayOrDerivedImpl::hasTimezone() const { + return _hasTimezone; +} + +/** Sets the timezone to the given timezone.*/ +ATGDayOrDerived::Ptr ATGDayOrDerivedImpl::setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const { + XMLBuffer buffer(1023, context->getMemoryManager()); + + buffer.append(chDash); + buffer.append(chDash); + buffer.append(chDash); + DateUtils::formatNumber(_gDay, 2, buffer); + if(timezone != NULLRCP) + buffer.append(timezone->asString(context)); + return context->getItemFactory()->createGDayOrDerived(this->getTypeURI(), this->getTypeName(), buffer.getRawBuffer(), context); +} + + +AnyAtomicType::AtomicObjectType ATGDayOrDerivedImpl::getPrimitiveTypeIndex() const { + return this->getTypeIndex(); +} + +/* parse the gDay */ +void ATGDayOrDerivedImpl::setGDay(const XMLCh* const value) { + + if(value == NULL) { + XQThrow2(XPath2TypeCastException,X("ATGDayOrDerivedImpl::setGDay"), + X("Invalid representation of gDay [err:FORG0001]")); + } + unsigned int length = XMLString::stringLen(value); + + // State variables etc. + bool gotDigit = false; + unsigned int pos = 0; + long int tmpnum = 0; + + // defaulting values + MAPM DD = 0; + _hasTimezone = false; + bool zonepos = false; + int zonehh = 0; + int zonemm = 0; + + int state = 0 ; // 0 = year / 1 = month / 2 = day / 3 = hour + // 4 = minutes / 5 = sec / 6 = timezonehour / 7 = timezonemin + XMLCh tmpChar; + + bool wrongformat = false; + + if ( length < 5 || value[0] != L'-' || value[1] != L'-' || value[2] != L'-') { + wrongformat = true; + }else{ + pos = 3; + state = 1; + } + + while ( ! wrongformat && pos < length) { + tmpChar = value[pos]; + pos++; + switch(tmpChar) { + case 0x0030: + case 0x0031: + case 0x0032: + case 0x0033: + case 0x0034: + case 0x0035: + case 0x0036: + case 0x0037: + case 0x0038: + case 0x0039: { + tmpnum *= 10; + tmpnum += static_cast(tmpChar - 0x0030); + gotDigit = true; + break; + } + case L':' : { + if (gotDigit && state == 6 ) { + zonehh = tmpnum; + tmpnum = 0; + gotDigit = false; + state ++; + }else { + wrongformat = true; + } + break; + } + case L'-' : { + if ( gotDigit && state == 1 ) { + DD = tmpnum; + state = 6; + gotDigit = false; + _hasTimezone = true; + zonepos = false; + tmpnum = 0; + } else { + wrongformat = true; + } + break; + } + case L'+' : { + if ( gotDigit && state == 1 ) { + DD = tmpnum; + state = 6; + gotDigit = false; + _hasTimezone = true; + zonepos = true; + tmpnum = 0; + } else { + wrongformat = true; + } + break; + } + case L'Z' : { + if (gotDigit && state == 1 ) { + DD = tmpnum; + state = 8; // final state + _hasTimezone = true; + gotDigit = false; + tmpnum = 0; + } else { + wrongformat = true; + } + break; + } + default: + wrongformat = true; + } + } + + if (gotDigit) { + if ( gotDigit && state == 7 ) { + zonemm = tmpnum; + }else if ( gotDigit && state == 1 ) { + DD = tmpnum; + }else { + wrongformat = true; + } + } + + // check time format + if ( DD > 31 || zonehh > 24 || zonemm > 60 ) { + wrongformat = true; + } + + if ( wrongformat) { + XQThrow2(XPath2TypeCastException,X("ATGDayOrDerivedImpl::setGDay"), + X("Invalid representation of gDay [err:FORG0001]")); + } + + timezone_ = new Timezone(Timezone::convert(zonepos, zonehh, zonemm)); + _gDay = DD; + +} + +MAPM ATGDayOrDerivedImpl::parseGDay(const XMLCh* const value, const MAPM &implicitTimezone) +{ + ATGDayOrDerivedImpl dt(0, 0, value); + + MAPM result = referenceDateTime(dt._gDay, dt._hasTimezone, dt.timezone_); + + if(!dt._hasTimezone) + result -= implicitTimezone; + + return result; +} diff --git a/src/items/impl/ATGMonthDayOrDerivedImpl.cpp b/src/items/impl/ATGMonthDayOrDerivedImpl.cpp new file mode 100644 index 00000000..81f01eff --- /dev/null +++ b/src/items/impl/ATGMonthDayOrDerivedImpl.cpp @@ -0,0 +1,322 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATGMonthDayOrDerivedImpl.cpp,v 1.16 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../../utils/DateUtils.hpp" +#include +#include +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +ATGMonthDayOrDerivedImpl:: +ATGMonthDayOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context): + ATGMonthDayOrDerived(), + _typeName(typeName), + _typeURI(typeURI) { + + setGMonthDay(value); +} + +void *ATGMonthDayOrDerivedImpl::getInterface(const XMLCh *name) const +{ + if(name == Item::gXQilla) { + return (void*)this; + } + return 0; +} + +/* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ +const XMLCh* ATGMonthDayOrDerivedImpl::getPrimitiveTypeName() const { + return this->getPrimitiveName(); +} + +const XMLCh* ATGMonthDayOrDerivedImpl::getPrimitiveName() { + return SchemaSymbols::fgDT_MONTHDAY; +} + +/* Get the name of this type (ie "integer" for xs:integer) */ +const XMLCh* ATGMonthDayOrDerivedImpl::getTypeName() const { + return _typeName; +} + +/* Get the namespace URI for this type */ +const XMLCh* ATGMonthDayOrDerivedImpl::getTypeURI() const { + return _typeURI; +} + +AnyAtomicType::AtomicObjectType ATGMonthDayOrDerivedImpl::getTypeIndex() { + return AnyAtomicType::G_MONTH_DAY; +} + +/* returns the XMLCh* (canonical) representation of this type */ +const XMLCh* ATGMonthDayOrDerivedImpl::asString(const DynamicContext* context) const { + XMLBuffer buffer(1023, context->getMemoryManager()); + buffer.append(chDash); + buffer.append(chDash); + DateUtils::formatNumber(_MM, 2, buffer); + buffer.append(chDash); + DateUtils::formatNumber(_DD, 2, buffer); + if(_hasTimezone) { + buffer.append(timezone_->asString(context)); + } + return context->getMemoryManager()->getPooledString(buffer.getRawBuffer()); + +} + +static inline MAPM referenceDateTime(const MAPM &MM, const MAPM &DD, bool hasTimezone, const Timezone::Ptr &timezone) +{ + MAPM result = DateUtils::convertDMY2Absolute(DD, MM, 1972) * DateUtils::g_secondsPerDay; + + if(hasTimezone) { + result -= timezone->asSeconds(); + } + + return result; + } + +MAPM ATGMonthDayOrDerivedImpl::buildReferenceDateTime(const DynamicContext *context) const +{ + MAPM result = referenceDateTime(_MM, _DD, _hasTimezone, timezone_); + + if(!_hasTimezone) + result -= context->getImplicitTimezone()->asSeconds(context)->asMAPM(); + + return result; +} + +/* Returns true if and only if the xs:dateTimes representing the starting instants of equivalent occurrences of $arg1 and $arg2 + * compare equal. The starting instants of equivalent occurrences of $arg1 and $arg2 are calculated by adding the missing + * components of $arg1 and $arg2 from an xs:dateTime template such as 1972-xx-xxT00:00:00. Returns false otherwise. + */ +bool ATGMonthDayOrDerivedImpl::equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const { + if(this->getPrimitiveTypeIndex() != target->getPrimitiveTypeIndex()) { + XQThrow2(::IllegalArgumentException,X("ATGMonthDayOrDerivedImpl::equals"), X("Equality operator for given types not supported [err:XPTY0004]")); + } + return compare((const ATGMonthDayOrDerived *)target.get(), context) == 0; +} + +int ATGMonthDayOrDerivedImpl::compare(const ATGMonthDayOrDerived::Ptr &other, const DynamicContext *context) const +{ + return buildReferenceDateTime(context).compare(((const ATGMonthDayOrDerivedImpl *)other.get())->buildReferenceDateTime(context)); +} + +/** Returns true if a timezone is defined for this. False otherwise.*/ +bool ATGMonthDayOrDerivedImpl::hasTimezone() const { + return _hasTimezone; +} + +/** Sets the timezone to the given timezone.*/ +ATGMonthDayOrDerived::Ptr ATGMonthDayOrDerivedImpl::setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const { + XMLBuffer buffer(1023, context->getMemoryManager()); + + buffer.append(chDash); + buffer.append(chDash); + DateUtils::formatNumber(_MM, 2, buffer); + buffer.append(chDash); + DateUtils::formatNumber(_DD, 2, buffer); + if(timezone != NULLRCP) + buffer.append(timezone->asString(context)); + return context->getItemFactory()->createGMonthDayOrDerived(this->getTypeURI(), this->getTypeName(), buffer.getRawBuffer(), context); +} + + +AnyAtomicType::AtomicObjectType ATGMonthDayOrDerivedImpl::getPrimitiveTypeIndex() const { + return this->getTypeIndex(); +} + +/* parse the gMonthDay */ +void ATGMonthDayOrDerivedImpl::setGMonthDay(const XMLCh* const value) { + + unsigned int length = XMLString::stringLen(value); + + if(value == NULL) { + XQThrow2(XPath2TypeCastException,X("XSGMonthDayImpl::setGMonthDay"), X("Invalid representation of gMonthDay [err:FORG0001]")); + } + + // State variables etc. + + bool gotDigit = false; + + unsigned int pos = 0; + long int tmpnum = 0; + + unsigned int numDigit = 0; + + // defaulting values + MAPM MM = 0; + MAPM DD = 0; + _hasTimezone = false; + bool zonepos = false; + int zonehh = 0; + int zonemm = 0; + + int state = 0 ; // 0 = year / 1 = month / 2 = day / 3 = hour + // 4 = minutes / 5 = sec / 6 = timezonehour / 7 = timezonemin + XMLCh tmpChar; + + // format : --MM-DD([+/-]hh:mm) + + + bool wrongformat = false; + + if ( length < 7 || value[0] != L'-' || value[1] != L'-' || value[4] != L'-') { + wrongformat = true; + }else { + pos = 2; + } + + while ( ! wrongformat && pos < length) { + tmpChar = value[pos]; + pos++; + switch(tmpChar) { + case 0x0030: + case 0x0031: + case 0x0032: + case 0x0033: + case 0x0034: + case 0x0035: + case 0x0036: + case 0x0037: + case 0x0038: + case 0x0039: { + + tmpnum *= 10; + tmpnum += static_cast(tmpChar - 0x0030); + gotDigit = true; + numDigit ++; + break; + + } + case L'-' : { + if ( gotDigit ) { + if (state == 0 && numDigit == 2 ) { + MM = tmpnum; + tmpnum = 0; + gotDigit = false; + pos = 5; + numDigit = 0; + } else if (state == 1 && numDigit == 2) { + DD = tmpnum; + state = 5; + gotDigit = false; + _hasTimezone = true; + zonepos = false; + tmpnum = 0; + numDigit = 0; + } else { + wrongformat = true; + } + state ++; + } else { + wrongformat = true; + } + break; + } + case L'+' : { + if ( gotDigit && state == 1 && numDigit == 2 ) { + DD = tmpnum; + state = 6; + gotDigit = false; + _hasTimezone = true; + zonepos = true; + tmpnum = 0; + numDigit = 0; + } else { + wrongformat = true; + } + break; + } + case L':' : { + if (gotDigit && state == 6 && numDigit == 2 ) { + zonehh = tmpnum; + tmpnum = 0; + gotDigit = false; + state ++; + numDigit = 0; + }else { + wrongformat = true; + } + break; + } + case L'Z' : { + if (gotDigit && state == 1 && numDigit == 2 ) { + DD = tmpnum; + state = 8; // final state + _hasTimezone = true; + gotDigit = false; + tmpnum = 0; + numDigit = 0; + } else { + wrongformat = true; + } + break; + } + default: + wrongformat = true; + } + } + if (gotDigit) { + if ( gotDigit && state == 7 && numDigit == 2) { + zonemm = tmpnum; + }else if ( gotDigit && state == 1 && numDigit == 2) { + DD = tmpnum; + }else { + wrongformat = true; + } + } + + // check time format + + if ( MM > 12 || DD > 31 || zonehh > 24 || zonemm > 60 ) { + wrongformat = true; + } + + if (wrongformat) { + XQThrow2(XPath2TypeCastException,X("XSGMonthDayImpl::setGMonthDay"), X("Invalid representation of gMonthDay [err:FORG0001]")); + } + + // Create Timezone object, clean this up in future + timezone_ = new Timezone(Timezone::convert(zonepos, zonehh, zonemm)); + + _MM = MM; + _DD = DD; +} + +MAPM ATGMonthDayOrDerivedImpl::parseGMonthDay(const XMLCh* const value, const MAPM &implicitTimezone) +{ + ATGMonthDayOrDerivedImpl dt(0, 0, value); + + MAPM result = referenceDateTime(dt._MM, dt._DD, dt._hasTimezone, dt.timezone_); + + if(!dt._hasTimezone) + result -= implicitTimezone; + + return result; +} diff --git a/src/items/impl/ATGMonthOrDerivedImpl.cpp b/src/items/impl/ATGMonthOrDerivedImpl.cpp new file mode 100644 index 00000000..c297aed4 --- /dev/null +++ b/src/items/impl/ATGMonthOrDerivedImpl.cpp @@ -0,0 +1,302 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATGMonthOrDerivedImpl.cpp,v 1.17 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../../utils/DateUtils.hpp" +#include +#include +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +ATGMonthOrDerivedImpl:: +ATGMonthOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context): + ATGMonthOrDerived(), + _typeName(typeName), + _typeURI(typeURI) { + + setGMonth(value); +} + +void *ATGMonthOrDerivedImpl::getInterface(const XMLCh *name) const +{ + if(name == Item::gXQilla) { + return (void*)this; + } + return 0; +} + +/* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ +const XMLCh* ATGMonthOrDerivedImpl::getPrimitiveTypeName() const { + return this->getPrimitiveName(); +} + +const XMLCh* ATGMonthOrDerivedImpl::getPrimitiveName() { + return SchemaSymbols::fgDT_MONTH; +} + +/* Get the name of this type (ie "integer" for xs:integer) */ +const XMLCh* ATGMonthOrDerivedImpl::getTypeName() const { + return _typeName; +} + +/* Get the namespace URI for this type */ +const XMLCh* ATGMonthOrDerivedImpl::getTypeURI() const { + return _typeURI; +} + +AnyAtomicType::AtomicObjectType ATGMonthOrDerivedImpl::getTypeIndex() { + return AnyAtomicType::G_MONTH; +} + +/* returns the XMLCh* (canonical) representation of this type */ +const XMLCh* ATGMonthOrDerivedImpl::asString(const DynamicContext* context) const { + /* --MM format*/ + + XMLBuffer buffer(1023, context->getMemoryManager()); + buffer.append(chDash); + buffer.append(chDash); + DateUtils::formatNumber(_gMonth, 2, buffer); + if(_hasTimezone) { + buffer.append(timezone_->asString(context)); + } + return context->getMemoryManager()->getPooledString(buffer.getRawBuffer()); +} + +static inline MAPM referenceDateTime(const MAPM &MM, bool hasTimezone, const Timezone::Ptr &timezone) +{ + MAPM result = DateUtils::convertDMY2Absolute(DateUtils::maximumDayInMonthFor(1972, MM), MM, 1972) * DateUtils::g_secondsPerDay; + + if(hasTimezone) { + result -= timezone->asSeconds(); + } + + return result; +} + +MAPM ATGMonthOrDerivedImpl::buildReferenceDateTime(const DynamicContext *context) const +{ + MAPM result = referenceDateTime(_gMonth, _hasTimezone, timezone_); + + if(!_hasTimezone) + result -= context->getImplicitTimezone()->asSeconds(context)->asMAPM(); + + return result; +} + +/* Returns true if and only if the xs:dateTimes representing the starting instants of equivalent occurrences of $arg1 and $arg2 + * compare equal. The starting instants of equivalent occurrences of $arg1 and $arg2 are calculated by adding the missing components + * of $arg1 and $arg2 from an xs:dateTime template such as 1972-xx-ddT00:00:00 where dd represents the last day of the month + * component in $arg1 or $arg2. Returns false otherwise. + */ +bool ATGMonthOrDerivedImpl::equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const { + if(this->getPrimitiveTypeIndex() != target->getPrimitiveTypeIndex()) { + XQThrow2(::IllegalArgumentException,X("ATGMonthOrDerivedImpl::equals"), X("Equality operator for given types not supported [err:XPTY0004]")); + } + return compare((const ATGMonthOrDerived *)target.get(), context) == 0; +} + +int ATGMonthOrDerivedImpl::compare(const ATGMonthOrDerived::Ptr &other, const DynamicContext *context) const +{ + return buildReferenceDateTime(context).compare(((const ATGMonthOrDerivedImpl *)other.get())->buildReferenceDateTime(context)); +} + +/** Returns true if a timezone is defined for this. False otherwise.*/ +bool ATGMonthOrDerivedImpl::hasTimezone() const { + return _hasTimezone; +} + +/** Sets the timezone to the given timezone.*/ +ATGMonthOrDerived::Ptr ATGMonthOrDerivedImpl::setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const { + XMLBuffer buffer(1023, context->getMemoryManager()); + + buffer.append(chDash); + buffer.append(chDash); + DateUtils::formatNumber(_gMonth, 2, buffer); + if(timezone != NULLRCP) + buffer.append(timezone->asString(context)); + return context->getItemFactory()->createGMonthOrDerived(this->getTypeURI(), this->getTypeName(), buffer.getRawBuffer(), context); +} + + +AnyAtomicType::AtomicObjectType ATGMonthOrDerivedImpl::getPrimitiveTypeIndex() const { + return this->getTypeIndex(); +} + +/* parse the gMonth */ +void ATGMonthOrDerivedImpl::setGMonth(const XMLCh* const value) { + + unsigned int length = XMLString::stringLen(value); + + if(value == NULL) { + XQThrow2(XPath2TypeCastException,X("XSGMonthImpl::setGMonth"), X("Invalid representation of gMonth [err:FORG0001]")); + } + + // State variables etc. + + bool gotDigit = false; + unsigned int pos = 0; + long int tmpnum = 0; + unsigned int numDigit = 0; + + // defaulting values + MAPM MM = 0; + _hasTimezone = false; + bool zonepos = false; + int zonehh = 0; + int zonemm = 0; + + int state = 0 ; // 0 = year / 1 = month / 2 = day / 3 = hour + // 4 = minutes / 5 = sec / 6 = timezonehour / 7 = timezonemin + XMLCh tmpChar; + + bool wrongformat = false; + + if ( length < 4 || value[0] != L'-' || value[1] != L'-' ) { + wrongformat = true; + }else{ + pos = 2; + state = 1; + } + + while ( ! wrongformat && pos < length) { + tmpChar = value[pos]; + pos++; + switch(tmpChar) { + case 0x0030: + case 0x0031: + case 0x0032: + case 0x0033: + case 0x0034: + case 0x0035: + case 0x0036: + case 0x0037: + case 0x0038: + case 0x0039: { + tmpnum *= 10; + tmpnum += static_cast(tmpChar - 0x0030); + gotDigit = true; + numDigit ++; + break; + } + + case L'-' : { + if ( gotDigit && state == 1 && numDigit == 2) { + MM = tmpnum; + tmpnum = 0; + gotDigit = false; + state = 6; + numDigit = 0; + _hasTimezone = true; + zonepos = false; + } else { + wrongformat = true; + } + break; + } + case L'+' : { + if ( gotDigit && state == 1 && numDigit == 2) { + MM = tmpnum; + tmpnum = 0; + gotDigit = false; + state = 6; + numDigit = 0; + _hasTimezone = true; + zonepos = true; + } else { + wrongformat = true; + } + break; + } + case L':' : { + if (gotDigit && state == 6 && numDigit == 2) { + zonehh = tmpnum; + tmpnum = 0; + gotDigit = false; + state ++; + numDigit = 0; + state = 7; + }else { + wrongformat = true; + } + break; + } + case L'Z' : { + if ( gotDigit && state == 1 && numDigit == 2) { + state = 8; // final state + MM = tmpnum; + _hasTimezone = true; + gotDigit = false; + tmpnum = 0; + numDigit = 0; + } else { + wrongformat = true; + } + break; + } + default: + wrongformat = true; + } + } + + if (gotDigit) { + if ( state == 1 && numDigit == 2) + MM = tmpnum; + else if( state == 7 && numDigit == 2) + zonemm = tmpnum; + else + wrongformat = true; + } + + // check time format + + if ( MM > 12 || zonehh > 24 || zonemm > 60 ) { + wrongformat = true; + } + + if ( wrongformat) { + XQThrow2(XPath2TypeCastException,X("ATGMonthOrDerivedImpl::setGMonth"), X("Invalid representation of gMonth [err:FORG0001]")); + } + + _gMonth = MM; + timezone_ = new Timezone(Timezone::convert(zonepos, zonehh, zonemm)); + +} + +MAPM ATGMonthOrDerivedImpl::parseGMonth(const XMLCh* const value, const MAPM &implicitTimezone) +{ + ATGMonthOrDerivedImpl dt(0, 0, value); + + MAPM result = referenceDateTime(dt._gMonth, dt._hasTimezone, dt.timezone_); + + if(!dt._hasTimezone) + result -= implicitTimezone; + + return result; +} diff --git a/src/items/impl/ATGYearMonthOrDerivedImpl.cpp b/src/items/impl/ATGYearMonthOrDerivedImpl.cpp new file mode 100644 index 00000000..b8b454c4 --- /dev/null +++ b/src/items/impl/ATGYearMonthOrDerivedImpl.cpp @@ -0,0 +1,319 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATGYearMonthOrDerivedImpl.cpp,v 1.17 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../../utils/DateUtils.hpp" +#include +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +ATGYearMonthOrDerivedImpl:: +ATGYearMonthOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context): + ATGYearMonthOrDerived(), + _typeName(typeName), + _typeURI(typeURI) { + + setGYearMonth(value); +} + +void *ATGYearMonthOrDerivedImpl::getInterface(const XMLCh *name) const +{ + if(name == Item::gXQilla) { + return (void*)this; + } + return 0; +} + +/* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ +const XMLCh* ATGYearMonthOrDerivedImpl::getPrimitiveTypeName() const { + return getPrimitiveName(); +} + +const XMLCh* ATGYearMonthOrDerivedImpl::getPrimitiveName() { + return SchemaSymbols::fgDT_YEARMONTH; +} + +/* Get the name of this type (ie "integer" for xs:integer) */ +const XMLCh* ATGYearMonthOrDerivedImpl::getTypeName() const { + return _typeName; +} + +/* Get the namespace URI for this type */ +const XMLCh* ATGYearMonthOrDerivedImpl::getTypeURI() const { + return _typeURI; +} + +AnyAtomicType::AtomicObjectType ATGYearMonthOrDerivedImpl::getTypeIndex() { + return AnyAtomicType::G_YEAR_MONTH; +} + +/* returns the XMLCh* (canonical) representation of this type */ +const XMLCh* ATGYearMonthOrDerivedImpl::asString(const DynamicContext* context) const { + XMLBuffer buffer(1023, context->getMemoryManager()); + + DateUtils::formatNumber(_YY, 4, buffer); + buffer.append(chDash); + DateUtils::formatNumber(_MM, 2, buffer); + if( _hasTimezone) { + buffer.append(timezone_->asString(context)); + } + return context->getMemoryManager()->getPooledString(buffer.getRawBuffer()); +} + +static inline MAPM referenceDateTime(const MAPM &YY, const MAPM &MM, bool hasTimezone, const Timezone::Ptr &timezone) +{ + MAPM result = DateUtils::convertDMY2Absolute(DateUtils::maximumDayInMonthFor(YY, MM), MM, YY) * DateUtils::g_secondsPerDay; + + if(hasTimezone) { + result -= timezone->asSeconds(); + } + + return result; +} + +MAPM ATGYearMonthOrDerivedImpl::buildReferenceDateTime(const DynamicContext *context) const +{ + MAPM result = referenceDateTime(_YY, _MM, _hasTimezone, timezone_); + + if(!_hasTimezone) + result -= context->getImplicitTimezone()->asSeconds(context)->asMAPM(); + + return result; +} + +/* Returns true if and only if the xs:dateTimes representing the starting instants of $arg1 and $arg2 compare equal. + * The starting instants of $arg1 and $arg2 are calculated by adding the missing components of $arg1 and $arg2 from + * the xs:dateTime template xxxx-xx-ddT00:00:00 where dd represents the last day of the month component in $arg1 or $arg2. + * Returns false otherwise. + */ +bool ATGYearMonthOrDerivedImpl::equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const +{ + if(this->getPrimitiveTypeIndex() != target->getPrimitiveTypeIndex()) { + XQThrow2(::IllegalArgumentException,X("ATGYearMonthOrDerivedImpl::equals"), X("Equality operator for given types not supported [err:XPTY0004]")); + } + return compare((const ATGYearMonthOrDerived *)target.get(), context) == 0; +} + +int ATGYearMonthOrDerivedImpl::compare(const ATGYearMonthOrDerived::Ptr &other, const DynamicContext *context) const +{ + return buildReferenceDateTime(context).compare(((const ATGYearMonthOrDerivedImpl *)other.get())->buildReferenceDateTime(context)); +} + +/** Returns true if a timezone is defined for this. False otherwise.*/ +bool ATGYearMonthOrDerivedImpl::hasTimezone() const { + return _hasTimezone; +} + +/** Sets the timezone to the given timezone.*/ +ATGYearMonthOrDerived::Ptr ATGYearMonthOrDerivedImpl::setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const +{ + XMLBuffer buffer(1023, context->getMemoryManager()); + + DateUtils::formatNumber(_YY, 4, buffer); + buffer.append(chDash); + DateUtils::formatNumber(_MM, 2, buffer); + if(timezone != NULLRCP) + buffer.append(timezone->asString(context)); + return context->getItemFactory()->createGYearMonthOrDerived(this->getTypeURI(), this->getTypeName(), buffer.getRawBuffer(), context); +} + + +AnyAtomicType::AtomicObjectType ATGYearMonthOrDerivedImpl::getPrimitiveTypeIndex() const { + return this->getTypeIndex(); +} + +/* parse the gYearMonth */ +void ATGYearMonthOrDerivedImpl::setGYearMonth(const XMLCh* const value) { + unsigned int length = XMLString::stringLen(value); + + if(value == NULL) { + XQThrow2(XPath2TypeCastException,X("ATGYearMonthOrDerivedImpl::setGYearMonth"), X("Invalid representation of gYearMonth [err:FORG0001]")); + } + + // State variables etc. + bool gotDigit = false; + + unsigned int pos = 0; + long int tmpnum = 0; + unsigned int numDigit = 0; + bool negative = false; + + // defaulting values + MAPM YY = 0; + MAPM MM = 0; + _hasTimezone = false; + bool zonepos = false; + int zonehh = 0; + int zonemm = 0; + + int state = 0 ; // 0 = year / 1 = month / 2 = day / 3 = hour + // 4 = minutes / 5 = sec / 6 = timezonehour / 7 = timezonemin + XMLCh tmpChar; + + bool wrongformat = false; + + if ( length > 0 && value[0] == L'-' ) { + negative = true; + pos = 1; + }else{ + pos = 0; + } + + while ( ! wrongformat && pos < length) { + tmpChar = value[pos]; + pos++; + switch(tmpChar) { + case 0x0030: + case 0x0031: + case 0x0032: + case 0x0033: + case 0x0034: + case 0x0035: + case 0x0036: + case 0x0037: + case 0x0038: + case 0x0039: { + numDigit ++; + tmpnum *= 10; + tmpnum += static_cast(tmpChar - 0x0030); + gotDigit = true; + break; + } + case L'-' : { + if ( gotDigit ) { + if (state == 0 && numDigit >= 4) { + YY = tmpnum; + tmpnum = 0; + gotDigit = false; + numDigit = 0; + } else if (state == 1 && numDigit == 2) { + MM = tmpnum; + tmpnum = 0; + gotDigit = false; + _hasTimezone = true; + zonepos = false; + state = 5; + numDigit = 0; + } else { + wrongformat = true; + } + state ++; + } else { + wrongformat = true; + } + break; + } + case L'+' : { + if ( gotDigit && state == 1 && numDigit == 2) { + MM = tmpnum; + state = 6; + gotDigit = false; + _hasTimezone = true; + zonepos = true; + tmpnum = 0; + numDigit = 0; + } else { + wrongformat = true; + } + break; + } + case L':' : { + if (gotDigit && state == 6 && numDigit == 2) { + zonehh = tmpnum; + tmpnum = 0; + gotDigit = false; + state ++; + numDigit = 0; + }else { + wrongformat = true; + } + break; + } + case L'Z' : { + if (gotDigit && state == 1 && numDigit == 2) { + MM = tmpnum; + state = 8; // final state + _hasTimezone = true; + gotDigit = false; + tmpnum = 0; + numDigit = 0; + } else { + wrongformat = true; + } + break; + } + default: + wrongformat = true; + } + } + + if (negative) { + YY = YY * -1; + } + + if (gotDigit) { + if ( gotDigit && state == 7 && numDigit == 2) { + zonemm = tmpnum; + } else if ( gotDigit && state == 1 && numDigit == 2) { + MM = tmpnum; + } else { + wrongformat = true; + } + } + + // check time format + + if ( MM > 12 || zonehh > 24 || zonemm > 60 || YY == 0 ) { + wrongformat = true; + } + + if ( wrongformat) { + XQThrow2(XPath2TypeCastException,X("ATGYearMonthOrDerivedImpl::setGYearMonth"), X("Invalid representation of gYearMonth [err:FORG0001]")); + } + + timezone_ = new Timezone(Timezone::convert(zonepos, zonehh, zonemm)); + + + _MM = MM; + _YY = YY; +} + +MAPM ATGYearMonthOrDerivedImpl::parseGYearMonth(const XMLCh* const value, const MAPM &implicitTimezone) +{ + ATGYearMonthOrDerivedImpl dt(0, 0, value); + + MAPM result = referenceDateTime(dt._YY, dt._MM, dt._hasTimezone, dt.timezone_); + + if(!dt._hasTimezone) + result -= implicitTimezone; + + return result; +} diff --git a/src/items/impl/ATGYearOrDerivedImpl.cpp b/src/items/impl/ATGYearOrDerivedImpl.cpp new file mode 100644 index 00000000..e61ee3ef --- /dev/null +++ b/src/items/impl/ATGYearOrDerivedImpl.cpp @@ -0,0 +1,300 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATGYearOrDerivedImpl.cpp,v 1.16 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "../../utils/DateUtils.hpp" +#include +#include +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +ATGYearOrDerivedImpl:: +ATGYearOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context): + ATGYearOrDerived(), + _typeName(typeName), + _typeURI(typeURI) { + + setGYear(value); +} + +void *ATGYearOrDerivedImpl::getInterface(const XMLCh *name) const +{ + if(name == Item::gXQilla) { + return (void*)this; + } + return 0; +} + +/* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ +const XMLCh* ATGYearOrDerivedImpl::getPrimitiveTypeName() const { + return getPrimitiveName(); +} + +const XMLCh* ATGYearOrDerivedImpl::getPrimitiveName() { + return SchemaSymbols::fgDT_YEAR; +} + +/* Get the name of this type (ie "integer" for xs:integer) */ +const XMLCh* ATGYearOrDerivedImpl::getTypeName() const { + return _typeName; +} + +/* Get the namespace URI for this type */ +const XMLCh* ATGYearOrDerivedImpl::getTypeURI() const { + return _typeURI; +} + +AnyAtomicType::AtomicObjectType ATGYearOrDerivedImpl::getTypeIndex() { + return AnyAtomicType::G_YEAR; +} + +/* returns the XMLCh* (canonical) representation of this type */ +const XMLCh* ATGYearOrDerivedImpl::asString(const DynamicContext* context) const { + XMLBuffer buffer(1023, context->getMemoryManager()); + + DateUtils::formatNumber(_YY, 4, buffer); + if(_hasTimezone) { + buffer.append(timezone_->asString(context)); + } + return context->getMemoryManager()->getPooledString(buffer.getRawBuffer()); +} + +static inline MAPM referenceDateTime(const MAPM &YY, bool hasTimezone, const Timezone::Ptr &timezone) +{ + MAPM result = DateUtils::convertDMY2Absolute(1, 1, YY) * DateUtils::g_secondsPerDay; + + if(hasTimezone) { + result -= timezone->asSeconds(); + } + + return result; +} + +MAPM ATGYearOrDerivedImpl::buildReferenceDateTime(const DynamicContext *context) const +{ + MAPM result = referenceDateTime(_YY, _hasTimezone, timezone_); + + if(!_hasTimezone) + result -= context->getImplicitTimezone()->asSeconds(context)->asMAPM(); + + return result; +} + +/* returns true if the two objects + * false otherwise */ +bool ATGYearOrDerivedImpl::equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const { + if(this->getPrimitiveTypeIndex() != target->getPrimitiveTypeIndex()) { + XQThrow2(::IllegalArgumentException,X("ATGYearOrDerivedImpl::equals"), + X("Equality operator for given types not supported [err:XPTY0004]")); + } + return compare((const ATGYearOrDerived *)target.get(), context) == 0; +} + +int ATGYearOrDerivedImpl::compare(const ATGYearOrDerived::Ptr &other, const DynamicContext *context) const +{ + return buildReferenceDateTime(context).compare(((const ATGYearOrDerivedImpl *)other.get())->buildReferenceDateTime(context)); +} + +/** Returns true if a timezone is defined for this. False otherwise.*/ +bool ATGYearOrDerivedImpl::hasTimezone() const { + return _hasTimezone; +} + +/** Sets the timezone to the given timezone.*/ +ATGYearOrDerived::Ptr ATGYearOrDerivedImpl::setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const { + XMLBuffer buffer(1023, context->getMemoryManager()); + + DateUtils::formatNumber(_YY, 4, buffer); + if(timezone != NULLRCP) + buffer.append(timezone->asString(context)); + return context->getItemFactory()->createGYearOrDerived(this->getTypeURI(), this->getTypeName(), buffer.getRawBuffer(), context); +} + + +AnyAtomicType::AtomicObjectType ATGYearOrDerivedImpl::getPrimitiveTypeIndex() const { + return this->getTypeIndex(); +} + +/* parse the gYear */ +void ATGYearOrDerivedImpl::setGYear(const XMLCh* const value) { + + unsigned int length = XMLString::stringLen(value); + if(value == NULL) { + XQThrow2(XPath2TypeCastException,X("ATGYearOrDerivedImpl::setGYear"), X("Invalid representation of gYear [err:FORG0001]")); + } + + // State variables etc. + bool gotDigit = false; + + unsigned int pos = 0; + long int tmpnum = 0; + unsigned int numDigit = 0; + bool negative = false; + + // defaulting values + MAPM YY = 0; + _hasTimezone = false; + bool zonepos = false; + int zonehh = 0; + int zonemm = 0; + + int state = 0 ; // 0 = year / 1 = month / 2 = day / 3 = hour + // 4 = minutes / 5 = sec / 6 = timezonehour / 7 = timezonemin + XMLCh tmpChar; + + bool wrongformat = false; + + if ( length > 0 && value[0] == L'-' ) { + negative = true; + pos = 1; + }else{ + pos = 0; + } + + while ( ! wrongformat && pos < length) { + tmpChar = value[pos]; + pos++; + switch(tmpChar) { + case 0x0030: + case 0x0031: + case 0x0032: + case 0x0033: + case 0x0034: + case 0x0035: + case 0x0036: + case 0x0037: + case 0x0038: + case 0x0039: { + numDigit ++; + tmpnum *= 10; + tmpnum += static_cast(tmpChar - 0x0030); + gotDigit = true; + + break; + } + case L'-' : { + if ( gotDigit && state == 0 && numDigit >= 4) { + YY = tmpnum; + tmpnum = 0; + gotDigit = false; + _hasTimezone = true; + zonepos = false; + state = 6; + numDigit = 0; + } else { + wrongformat = true; + } + break; + } + case L'+' : { + if ( gotDigit && state == 0 && numDigit >= 4) { + YY = tmpnum; + state = 6; + gotDigit = false; + _hasTimezone = true; + zonepos = true; + tmpnum = 0; + numDigit = 0; + } else { + wrongformat = true; + } + break; + } + case L':' : { + if (gotDigit && state == 6 && numDigit == 2 ) { + zonehh = tmpnum; + tmpnum = 0; + gotDigit = false; + numDigit = 0; + state = 7; + }else { + wrongformat = true; + } + break; + } + case L'Z' : { + if (gotDigit && state == 0 && numDigit >= 4) { + YY = tmpnum; + state = 8; // final state + _hasTimezone = true; + gotDigit = false; + tmpnum = 0; + numDigit = 0; + } else { + + wrongformat = true; + } + break; + } + default: + wrongformat = true; + } + } + + if (gotDigit) { + if ( gotDigit && state == 7 && numDigit == 2) { + zonemm = tmpnum; + }else if ( gotDigit && state == 0 && numDigit >= 4 ) { + YY += tmpnum; + }else { + wrongformat = true; + } + } + + if (negative) { + YY = YY * -1; + } + + if (YY == 0) { + wrongformat = true; + } + + // check time format + + if (wrongformat) { + XQThrow2(XPath2TypeCastException,X("ATGYearOrDerivedImpl::setGYear"), X("Invalid representation of gYear [err:FORG0001]")); + } + + timezone_ = new Timezone(Timezone::convert(zonepos, zonehh, zonemm)); + + _YY = YY; +} + +MAPM ATGYearOrDerivedImpl::parseGYear(const XMLCh* const value, const MAPM &implicitTimezone) +{ + ATGYearOrDerivedImpl dt(0, 0, value); + + MAPM result = referenceDateTime(dt._YY, dt._hasTimezone, dt.timezone_); + + if(!dt._hasTimezone) + result -= implicitTimezone; + + return result; +} diff --git a/src/items/impl/ATHexBinaryOrDerivedImpl.cpp b/src/items/impl/ATHexBinaryOrDerivedImpl.cpp new file mode 100644 index 00000000..cb3f9f68 --- /dev/null +++ b/src/items/impl/ATHexBinaryOrDerivedImpl.cpp @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATHexBinaryOrDerivedImpl.cpp,v 1.14 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include "ATHexBinaryOrDerivedImpl.hpp" +#include "ATBase64BinaryOrDerivedImpl.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +ATHexBinaryOrDerivedImpl:: +ATHexBinaryOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const StaticContext* context): + ATHexBinaryOrDerived(), + _typeName(typeName), + _typeURI(typeURI) { + + XMLCh* tempValue=XMLString::replicate(value, context->getMemoryManager()); + XMLString::upperCase(tempValue); + _hexBinaryData = context->getMemoryManager()->getPooledString(tempValue); + XMLString::release((void**)&tempValue, context->getMemoryManager()); +} + +void *ATHexBinaryOrDerivedImpl::getInterface(const XMLCh *name) const +{ + if(name == Item::gXQilla) { + return (void*)this; + } + return 0; +} + +/* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ +const XMLCh* ATHexBinaryOrDerivedImpl::getPrimitiveTypeName() const { + return this->getPrimitiveName(); +} + +const XMLCh* ATHexBinaryOrDerivedImpl::getPrimitiveName() { + return SchemaSymbols::fgDT_HEXBINARY; +} + +/* Get the name of this type (ie "integer" for xs:integer) */ +const XMLCh* ATHexBinaryOrDerivedImpl::getTypeName() const { + return _typeName; +} + +/* Get the namespace URI for this type */ +const XMLCh* ATHexBinaryOrDerivedImpl::getTypeURI() const { + return _typeURI; +} + +AnyAtomicType::AtomicObjectType ATHexBinaryOrDerivedImpl::getTypeIndex() { + return AnyAtomicType::HEX_BINARY; +} + +/* If possible, cast this type to the target type */ +AnyAtomicType::Ptr ATHexBinaryOrDerivedImpl::castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const +{ + switch(targetIndex) { + case BASE_64_BINARY: { + XMLByte* binData=HexBin::decodeToXMLByte(_hexBinaryData, context->getMemoryManager()); + unsigned int length=0; + XMLByte* base64Data=Base64::encode(binData, + XMLString::stringLen(_hexBinaryData)/2, + &length, + context->getMemoryManager()); + XMLCh* uniBase64=(XMLCh*)context->getMemoryManager()->allocate((length+1)*sizeof(XMLCh)); + unsigned int i; + for(i=0;igetMemoryManager()); + ATBase64BinaryOrDerivedImpl* retVal=new ATBase64BinaryOrDerivedImpl(targetURI, targetType, uniBase64, context); + context->getMemoryManager()->deallocate(uniBase64); + context->getMemoryManager()->deallocate(binData); + context->getMemoryManager()->deallocate(base64Data); + return retVal; + } + default: { + return AnyAtomicType::castAsInternal(targetIndex, targetURI, targetType, context); + } + } +} + +/* returns the XMLCh* (canonical) representation of this type */ +const XMLCh* ATHexBinaryOrDerivedImpl::asString(const DynamicContext* context) const { + return _hexBinaryData; +} + +/* returns true if the two objects' URI are equal (string comparison) + * false otherwise */ +bool ATHexBinaryOrDerivedImpl::equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const { + if(this->getPrimitiveTypeIndex() != target->getPrimitiveTypeIndex()) { + XQThrow2(::IllegalArgumentException,X("ATHexBinaryOrDerivedImpl::equals"), + X("Equality operator for given types not supported [err:XPTY0004]")); + } + return compare((const ATHexBinaryOrDerived *)target.get(), context) == 0; +} + +int ATHexBinaryOrDerivedImpl::compare(const ATHexBinaryOrDerived::Ptr &other, const DynamicContext *context) const +{ + return XPath2Utils::compare(_hexBinaryData, ((const ATHexBinaryOrDerivedImpl *)other.get())->_hexBinaryData); +} + +AnyAtomicType::AtomicObjectType ATHexBinaryOrDerivedImpl::getPrimitiveTypeIndex() const { + return this->getTypeIndex(); +} diff --git a/src/items/impl/ATHexBinaryOrDerivedImpl.hpp b/src/items/impl/ATHexBinaryOrDerivedImpl.hpp new file mode 100644 index 00000000..c17cc6f1 --- /dev/null +++ b/src/items/impl/ATHexBinaryOrDerivedImpl.hpp @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATHexBinaryOrDerivedImpl.hpp,v 1.8 2006/11/01 16:37:20 jpcs Exp $ + */ + +#ifndef _ATHEXBINARYORDERIVEDIMPL_HPP +#define _ATHEXBINARYORDERIVEDIMPL_HPP + +#include +#include + +#include + +class DynamicContext; + +class XQILLA_API ATHexBinaryOrDerivedImpl : public ATHexBinaryOrDerived +{ + +public: + + /* constructor */ + ATHexBinaryOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const StaticContext* context); + + virtual void *getInterface(const XMLCh *name) const; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const; + + /* returns true if the two objects' URI are equal (string comparison) + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATHexBinaryOrDerived::Ptr &other, const DynamicContext *context) const; + + /* Get the primitive index associated with this type */ + static AnyAtomicType::AtomicObjectType getTypeIndex(); + + /* Get the primitive type name */ + static const XMLCh* getPrimitiveName(); + + /* Get the primitive index associated with this type */ + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const; + +protected: + + /* If possible, cast this type to the target type */ + virtual AnyAtomicType::Ptr castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const; + +private: + + /*The value of this hexBinary*/ + const XMLCh* _hexBinaryData; + + /* the name of this type */ + const XMLCh* _typeName; + + /* the uri of this type */ + const XMLCh* _typeURI; + +}; + +#endif // _ATHEXBINARYORDERIVEDIMPL_HPP diff --git a/src/items/impl/ATNotationOrDerivedImpl.cpp b/src/items/impl/ATNotationOrDerivedImpl.cpp new file mode 100644 index 00000000..54e10ea5 --- /dev/null +++ b/src/items/impl/ATNotationOrDerivedImpl.cpp @@ -0,0 +1,117 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATNotationOrDerivedImpl.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include "ATNotationOrDerivedImpl.hpp" +#include +#include +#include +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +ATNotationOrDerivedImpl:: +ATNotationOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const StaticContext* context): + ATNotationOrDerived(), + _typeName(typeName), + _typeURI(typeURI) { + + _notation = context->getMemoryManager()->getPooledString(value); + + const XMLCh* prefix = XPath2NSUtils::getPrefix(_notation, context->getMemoryManager()); + const XMLCh* uri; + if(prefix==0 || *prefix==0) + uri = 0; + else + { + try + { + uri = context->getUriBoundToPrefix(prefix, 0); + } + catch(NamespaceLookupException&) + { + XQThrow2(StaticErrorException, X("ATNotationOrDerivedImpl::ATNotationOrDerivedImpl"),X("No namespace for prefix [err:XPST0081]")); + } + } + + // _uri will be null if there is no default NS + _uri = context->getMemoryManager()->getPooledString(uri); + _name = context->getMemoryManager()->getPooledString(XPath2NSUtils::getLocalName(_notation)); +} + +void *ATNotationOrDerivedImpl::getInterface(const XMLCh *name) const +{ + if(name == Item::gXQilla) { + return (void*)this; + } + return 0; +} + +/* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ +const XMLCh* ATNotationOrDerivedImpl::getPrimitiveTypeName() const { + return this->getPrimitiveName(); +} + +const XMLCh* ATNotationOrDerivedImpl::getPrimitiveName() { + return XMLUni::fgNotationString; +} + +/* Get the name of this type (ie "integer" for xs:integer) */ +const XMLCh* ATNotationOrDerivedImpl::getTypeName() const { + return _typeName; +} + +/* Get the namespace URI for this type */ +const XMLCh* ATNotationOrDerivedImpl::getTypeURI() const { + return _typeURI; +} + +AnyAtomicType::AtomicObjectType ATNotationOrDerivedImpl::getTypeIndex() { + return AnyAtomicType::NOTATION; +} + +/* returns the XMLCh* (canonical) representation of this type */ +const XMLCh* ATNotationOrDerivedImpl::asString(const DynamicContext* context) const { + return _notation; +} + +/* returns true if the two objects are equal (string comparison) + * false otherwise */ +bool ATNotationOrDerivedImpl::equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const { + if(this->getPrimitiveTypeIndex() != target->getPrimitiveTypeIndex()) { + XQThrow2(::IllegalArgumentException,X("ATNotationOrDerivedImpl::equals"), + X("Equality operator for given types not supported [err:XPTY0004]")); + } + + return compare((const ATNotationOrDerived *)target.get(), context) == 0; +} + +int ATNotationOrDerivedImpl::compare(const ATNotationOrDerivedImpl::Ptr &other, const DynamicContext *context) const +{ + const ATNotationOrDerivedImpl *otherImpl = (const ATNotationOrDerivedImpl *)other.get(); + + int cmp = XPath2Utils::compare(_name, otherImpl->_name); + if(cmp != 0) return cmp; + + return XPath2Utils::compare(_uri, otherImpl->_uri); +} + +AnyAtomicType::AtomicObjectType ATNotationOrDerivedImpl::getPrimitiveTypeIndex() const { + return this->getTypeIndex(); +} diff --git a/src/items/impl/ATNotationOrDerivedImpl.hpp b/src/items/impl/ATNotationOrDerivedImpl.hpp new file mode 100644 index 00000000..e88c86d4 --- /dev/null +++ b/src/items/impl/ATNotationOrDerivedImpl.hpp @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATNotationOrDerivedImpl.hpp,v 1.9 2006/11/01 16:37:20 jpcs Exp $ + */ + +#ifndef _ATNOTATIONORDERIVEDIMPL_HPP +#define _ATNOTATIONORDERIVEDIMPL_HPP + +#include +#include + +#include + +class DynamicContext; + +class XQILLA_API ATNotationOrDerivedImpl : public ATNotationOrDerived +{ + +public: + + /* constructor */ + ATNotationOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const StaticContext* context); + + virtual void *getInterface(const XMLCh *name) const; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const; + + /* returns true if the two objects' URI are equal (string comparison) + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const; + + /** Returns less than 0 if this is less that other, + 0 if they are the same, and greater than 0 otherwise */ + virtual int compare(const ATNotationOrDerived::Ptr &other, const DynamicContext *context) const; + + /* Get the primitive index associated with this type */ + static AnyAtomicType::AtomicObjectType getTypeIndex(); + + /* Get the primitive type name */ + static const XMLCh* getPrimitiveName(); + + /* Get the primitive index associated with this type */ + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const; + +private: + + /*The value of this NOTATION*/ + const XMLCh* _notation; + + /*The uri value of this NOTATION*/ + const XMLCh* _uri; + + /*The local name value of this NOTATION */ + const XMLCh* _name; + + /* the name of this type */ + const XMLCh* _typeName; + + /* the uri of this type */ + const XMLCh* _typeURI; + +}; + +#endif // _ATNOTATIONORDERIVEDIMPL_HPP diff --git a/src/items/impl/ATQNameOrDerivedImpl.cpp b/src/items/impl/ATQNameOrDerivedImpl.cpp new file mode 100644 index 00000000..16d6bcc1 --- /dev/null +++ b/src/items/impl/ATQNameOrDerivedImpl.cpp @@ -0,0 +1,220 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATQNameOrDerivedImpl.cpp,v 1.18 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +ATQNameOrDerivedImpl:: +ATQNameOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const StaticContext* context) + : ATQNameOrDerived(), + _typeName(typeName), + _typeURI(typeURI) +{ + const XMLCh* prefix = XPath2NSUtils::getPrefix(value, context->getMemoryManager()); + const XMLCh* uri; + if(XPath2Utils::equals(prefix, XMLUni::fgZeroLenString)) { + // If $qname has no prefix + uri = context->getDefaultElementAndTypeNS(); + } + // If $qname has a prefix + else { + try { + uri = context->getUriBoundToPrefix(prefix, 0); + } + catch(NamespaceLookupException&) { + XQThrow2(StaticErrorException, X("ATQNameOrDerivedImpl::ATQNameOrDerivedImpl"), + X("No namespace for prefix [err:FONS0004]")); + } + } + + // _uri will be null if there is no default NS + _uri = context->getMemoryManager()->getPooledString(uri); + _prefix = context->getMemoryManager()->getPooledString(prefix); + _name = context->getMemoryManager()->getPooledString(XPath2NSUtils::getLocalName(value)); + +} + +ATQNameOrDerivedImpl:: +ATQNameOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* uri, const XMLCh* prefix, + const XMLCh* name, const StaticContext* context) + : ATQNameOrDerived(), + _typeName(typeName), + _typeURI(typeURI) +{ + // if uri is NULL, so will _uri + _uri = context->getMemoryManager()->getPooledString(uri); + _prefix = context->getMemoryManager()->getPooledString(prefix); + _name = context->getMemoryManager()->getPooledString(name); + +} + + +void *ATQNameOrDerivedImpl::getInterface(const XMLCh *name) const +{ + if(name == Item::gXQilla) { + return (void*)this; + } + return 0; +} + +/* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ +const XMLCh* ATQNameOrDerivedImpl::getPrimitiveTypeName() const { + return this->getPrimitiveName(); +} + +/* Get the name of this type (ie "integer" for xs:integer) */ +const XMLCh* ATQNameOrDerivedImpl::getTypeName() const { + return _typeName; +} + +/* Get the namespace URI for this type */ +const XMLCh* ATQNameOrDerivedImpl::getTypeURI() const { + return _typeURI; +} + +/* returns the URI */ +const XMLCh* ATQNameOrDerivedImpl::getURI(void) const { + return _uri; +} + +/* returns the prefix */ +const XMLCh* ATQNameOrDerivedImpl::getPrefix(void) const { + return _prefix; +} + +/* returns the name */ +const XMLCh* ATQNameOrDerivedImpl::getName(void) const { + return _name; +} + + +AnyAtomicType::AtomicObjectType ATQNameOrDerivedImpl::getTypeIndex() { + return AnyAtomicType::QNAME; +} + +/* If possible, cast this type to the target type */ +AnyAtomicType::Ptr ATQNameOrDerivedImpl::castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, + const XMLCh* targetType, const DynamicContext* context) const +{ + switch (targetIndex) { + case ANY_SIMPLE_TYPE: + case UNTYPED_ATOMIC: + //anySimpleType and untypedAtomic follow the same casting rules as string. + case STRING: { + return context->getItemFactory()->createDerivedFromAtomicType(targetIndex, targetURI, targetType, + this->asLexicalString(context), context); + } + case QNAME: { + return context->getItemFactory()->createQNameOrDerived(targetURI, targetType, _uri, _prefix, _name, context); + } + default: return AnyAtomicType::castAsInternal(targetIndex, targetURI, targetType, context); + } +} + +/* returns the XMLCh* (canonical) representation of this type */ +const XMLCh* ATQNameOrDerivedImpl::asString(const DynamicContext* context) const { + XMLBuffer buffer(1023, context->getMemoryManager()); + if(_prefix != 0 && *_prefix != 0) { + buffer.set(_prefix); + buffer.append(chColon); + } + buffer.append(_name); + + return context->getMemoryManager()->getPooledString(buffer.getRawBuffer()); +} + +/* returns the XMLCh* (lexical => prefix:localname) representation of this type */ +const XMLCh* ATQNameOrDerivedImpl::asLexicalString(const DynamicContext* context) const { + XMLBuffer buffer(1023, context->getMemoryManager()); + const XMLCh* prefix; + if(this->_uri == 0 || XPath2Utils::equals(_uri, XMLUni::fgZeroLenString)) { + if(context->getDefaultElementAndTypeNS() != 0) { + XQThrow2(NamespaceLookupException,X("ATQNameOrDerivedImpl::asLexicalString"), + X("Default namespace is defined: casting a QName that has no namespace is ambiguous")); + } + buffer.set(_name); + } + else { + // if we have a prefix, use it, otherwise try looking at the in-scope namespaces + // (unless the namespace is the default one) + if(XPath2Utils::equals(_prefix,XMLUni::fgZeroLenString) && + !XPath2Utils::equals(_uri, context->getDefaultElementAndTypeNS())) + prefix = context->getPrefixBoundToUri(this->_uri); + else + prefix = _prefix; + if (prefix == 0) { + XMLBuffer msg(1023, context->getMemoryManager()); + msg.set(X("No prefix defined for namespace '")); + msg.append(_uri); + msg.append(X("'")); + XQThrow2(NamespaceLookupException,X("ATQNameOrDerivedImpl::asLexicalString"), msg.getRawBuffer()); + } + buffer.set(prefix); + buffer.append(chColon); + buffer.append(_name); + } + return context->getMemoryManager()->getPooledString(buffer.getRawBuffer()); +} + +/* returns true if the two objects' URI are equal (string comparison) + * false otherwise */ +bool ATQNameOrDerivedImpl::equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const +{ + if(this->getPrimitiveTypeIndex() != target->getPrimitiveTypeIndex()) { + XQThrow2(::IllegalArgumentException,X("ATQNameOrDerivedImpl::equals"), + X("Equality operator for given types not supported [err:XPTY0004]")); + } + + return compare((const ATQNameOrDerived *)target.get(), context) == 0; +} + +int ATQNameOrDerivedImpl::compare(const ATQNameOrDerived::Ptr &other, const DynamicContext *context) const +{ + const ATQNameOrDerivedImpl *otherImpl = (const ATQNameOrDerivedImpl *)other.get(); + + int cmp = XPath2Utils::compare(_name, otherImpl->_name); + if(cmp != 0) return cmp; + + return XPath2Utils::compare(_uri, otherImpl->_uri); +} + +const XMLCh* ATQNameOrDerivedImpl::getPrimitiveName() { + return SchemaSymbols::fgDT_QNAME; +} + +AnyAtomicType::AtomicObjectType ATQNameOrDerivedImpl::getPrimitiveTypeIndex() const { + return this->getTypeIndex(); +} diff --git a/src/items/impl/ATStringOrDerivedImpl.cpp b/src/items/impl/ATStringOrDerivedImpl.cpp new file mode 100644 index 00000000..dfd1040f --- /dev/null +++ b/src/items/impl/ATStringOrDerivedImpl.cpp @@ -0,0 +1,235 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATStringOrDerivedImpl.cpp,v 1.13 2006/11/01 16:37:20 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include "ATStringOrDerivedImpl.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + + +ATStringOrDerivedImpl:: +ATStringOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const StaticContext* context): + ATStringOrDerived(), + _typeName(typeName), + _typeURI(typeURI) { + + _value = context->getMemoryManager()->getPooledString(value); +} + +void *ATStringOrDerivedImpl::getInterface(const XMLCh *name) const +{ + if(name == Item::gXQilla) { + return (void*)this; + } + return 0; +} + +/* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ +const XMLCh* ATStringOrDerivedImpl::getPrimitiveTypeName() const { + return this->getPrimitiveName(); +} + +const XMLCh* ATStringOrDerivedImpl::getPrimitiveName() { + return XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING; +} + +/* Get the name of this type (ie "integer" for xs:integer) */ +const XMLCh* ATStringOrDerivedImpl::getTypeName() const { + return _typeName; +} + +/* Get the namespace URI for this type */ +const XMLCh* ATStringOrDerivedImpl::getTypeURI() const { + return _typeURI; +} + +AnyAtomicType::AtomicObjectType ATStringOrDerivedImpl::getTypeIndex() { + return AnyAtomicType::STRING; +} + +AnyAtomicType::Ptr ATStringOrDerivedImpl::castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const { + switch (targetIndex) { + case DOUBLE: { + const XMLCh* upCase = XPath2Utils::toUpper(_value, context->getMemoryManager()); + return (const AnyAtomicType::Ptr)context->getItemFactory()->createDoubleOrDerived(targetURI, targetType, upCase, context); + } + case FLOAT: { + const XMLCh* upCase = XPath2Utils::toUpper(_value, context->getMemoryManager()); + return (const AnyAtomicType::Ptr)context->getItemFactory()->createFloatOrDerived(targetURI, targetType, upCase, context); + } + default: return AnyAtomicType::castAsInternal(targetIndex, targetURI, targetType, context); + } + +} + + +/* returns the XMLCh* (canonical) representation of this type */ +const XMLCh* ATStringOrDerivedImpl::asString(const DynamicContext* context) const { + return _value; +} + +/* returns this string as a set of codepoints */ +Result ATStringOrDerivedImpl::asCodepoints(const DynamicContext* context) const { + unsigned int length = this->getLength(); + Sequence result(length,context->getMemoryManager()); + for(unsigned int i=0; igetItemFactory()->createInteger((long int)XERCES_CPP_NAMESPACE_QUALIFIER RegxUtil::composeFromSurrogate(_value[i], _value[i+1]), context)); + i++; + } + else + result.addItem(context->getItemFactory()->createInteger((long int)_value[i], context)); + } + return result; +} + +/* returns the substring starting at startingLoc of given length */ +ATStringOrDerived::Ptr ATStringOrDerivedImpl::substring(const Numeric::Ptr &startingLoc, const Numeric::Ptr &length, const DynamicContext* context) const { + const ATDecimalOrDerived::Ptr one = context->getItemFactory()->createInteger(1, context); + long nLength=this->getLength(); + const ATDecimalOrDerived::Ptr strLength = context->getItemFactory()->createInteger(nLength, context); + + // More specifically, returns the characters in $sourceString whose position $p obeys: + // fn:round($startingLoc) <= $p < fn:round($startingLoc) + fn:round($length) + const Numeric::Ptr startIndex = startingLoc->round(context); + const Numeric::Ptr endIndex = startIndex->add(length->round(context), context); + + if(startIndex->greaterThan(strLength, context) || startIndex->greaterThan(endIndex, context)) { + return context->getItemFactory()->createString(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context); + } + + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer buffer(1023, context->getMemoryManager()); + Numeric::Ptr index = one; + + // i is kept at one less than index, since XMLCh* start at index 0 + int i = 0; + // for(index = one; index <= strLength; index++) + for(; !index->greaterThan(strLength, context); index = index->add(one, context), i++) { + // if (index >= startIndex and index < endIndex), add the char at i + if(!index->lessThan(startIndex, context) && index->lessThan(endIndex, context)) + { + buffer.append(_value[i]); + // if it's a non-BMP char, add the following too + if(XERCES_CPP_NAMESPACE_QUALIFIER RegxUtil::isHighSurrogate(_value[i]) && (i+1)getItemFactory()->createString(buffer.getRawBuffer(), context); +} + +/* returns the substring that occurs after the first occurence of pattern */ +ATStringOrDerived::Ptr ATStringOrDerivedImpl::substringAfter(const ATStringOrDerived::Ptr &pattern, Collation* collation, const DynamicContext* context) const { + unsigned int containerLength = this->getLength(); + unsigned int patternLength = pattern->getLength(); + + if(patternLength == 0) { + return this; + } + + if(patternLength > containerLength) { + return context->getItemFactory()->createString(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context); + } + + const XMLCh* patternStr = pattern->asString(context); + + // search pattern must be shorter than (or same length as) string being searched + for(unsigned int i = 0; i <= (containerLength - patternLength); i++) + { + // extract a substring of the same length of the pattern and compare them + const XMLCh *substr=XPath2Utils::subString(_value, i, patternLength, context->getMemoryManager()); + bool result = (collation->compare(substr,patternStr)==0); + + if(result) + { + int index = i + patternLength; + const XMLCh* value = XPath2Utils::subString(_value, index, containerLength - index, context->getMemoryManager()); + return context->getItemFactory()->createString(value, context); + } + } + + return context->getItemFactory()->createString(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context); +} + +/* returns the substring that occurs before the first occurence of pattern */ +ATStringOrDerived::Ptr ATStringOrDerivedImpl::substringBefore(const ATStringOrDerived::Ptr &pattern, Collation* collation, const DynamicContext* context) const { + unsigned int containerLength = this->getLength(); + unsigned int patternLength = pattern->getLength(); + + if(patternLength == 0) { + return this; + } + + if(patternLength > containerLength) { + return context->getItemFactory()->createString(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context); + } + + const XMLCh* patternStr = pattern->asString(context); + + // search pattern must be shorter than (or same length as) string being searched + for(unsigned int i = 0; i <= (containerLength - patternLength); i++) + { + // extract a substring of the same length of the pattern and compare them + const XMLCh *substr=XPath2Utils::subString(_value, i, patternLength, context->getMemoryManager()); + bool result = (collation->compare(substr,patternStr)==0); + + if(result) + { + const XMLCh* value = XPath2Utils::subString(_value, 0, i, context->getMemoryManager()); + return context->getItemFactory()->createString(value, context); + } + } + return context->getItemFactory()->createString(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context); +} + +unsigned int ATStringOrDerivedImpl::getLength() const { + return XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(_value); +} + +/* returns true if the two objects' are equal (string comparison) + * false otherwise */ +bool ATStringOrDerivedImpl::equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const { + if(this->getPrimitiveTypeIndex() != target->getPrimitiveTypeIndex()) { + XQThrow2(IllegalArgumentException,X("ATStringOrDerivedImpl::equals"), X("Equality operator for given types not supported [err:XPTY0004]")); + } + return XPath2Utils::equals(target->asString(context), _value); +} + +AnyAtomicType::AtomicObjectType ATStringOrDerivedImpl::getPrimitiveTypeIndex() const { + return this->getTypeIndex(); +} diff --git a/src/items/impl/ATStringOrDerivedImpl.hpp b/src/items/impl/ATStringOrDerivedImpl.hpp new file mode 100644 index 00000000..f90d4f63 --- /dev/null +++ b/src/items/impl/ATStringOrDerivedImpl.hpp @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATStringOrDerivedImpl.hpp,v 1.7 2006/11/01 16:37:20 jpcs Exp $ + */ + +#ifndef _ATSTRINGORDERIVEDIMPL_HPP +#define _ATSTRINGORDERIVEDIMPL_HPP + +#include +#include + +#include + +class Sequence; + +class XQILLA_API ATStringOrDerivedImpl : public ATStringOrDerived +{ + +public: + + /* constructor */ + ATStringOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const StaticContext* context); + + virtual void *getInterface(const XMLCh *name) const; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const; + + /* returns this string as a set of codepoints */ + virtual Result asCodepoints(const DynamicContext* context) const; + + /* returns the substring starting at startingLoc of given length */ + virtual ATStringOrDerived::Ptr substring(const Numeric::Ptr &startingLoc, const Numeric::Ptr &length, const DynamicContext* context) const; + + /* returns the substring that occurs after the first occurence of pattern */ + virtual ATStringOrDerived::Ptr substringAfter(const ATStringOrDerived::Ptr &pattern, Collation* collation, const DynamicContext* context) const; + + /* returns the substring that occurs before the first occurence of pattern */ + virtual ATStringOrDerived::Ptr substringBefore(const ATStringOrDerived::Ptr &pattern, Collation* collation, const DynamicContext* context) const; + + /* returns the length of this string */ + virtual unsigned int getLength() const; + + /* returns true if the two objects' URI are equal (string comparison) + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const; + + /* Get the primitive index associated with this type */ + static AnyAtomicType::AtomicObjectType getTypeIndex(); + + /* Get the primitive type name */ + static const XMLCh* getPrimitiveName(); + + /* Get the primitive index associated with this type */ + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const; + +protected: + + /* If possible, cast this type to the target type */ + virtual AnyAtomicType::Ptr castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const; + +private: + + /*The value of this string */ + const XMLCh* _value; + + /* the name of this type */ + const XMLCh* _typeName; + + /* the uri of this type */ + const XMLCh* _typeURI; + +}; + +#endif // _ATSTRINGORDERIVEDIMPL_HPP diff --git a/src/items/impl/ATTimeOrDerivedImpl.cpp b/src/items/impl/ATTimeOrDerivedImpl.cpp new file mode 100644 index 00000000..b128684c --- /dev/null +++ b/src/items/impl/ATTimeOrDerivedImpl.cpp @@ -0,0 +1,501 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATTimeOrDerivedImpl.cpp,v 1.24 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include // for INT_MIN and INT_MAX +#include // for atoi +#include + +#include "../../utils/DateUtils.hpp" + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +ATTimeOrDerivedImpl:: +ATTimeOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const XMLCh* value, const DynamicContext* context) + : ATTimeOrDerived(), + _typeName(typeName), + _typeURI(typeURI) +{ + setTime(value); +} + + +// private constructor for internal use +ATTimeOrDerivedImpl::ATTimeOrDerivedImpl(const XMLCh* typeURI, const XMLCh* typeName, const MAPM &seconds, + const Timezone::Ptr &timezone, bool hasTimezone) + : seconds_(seconds), + timezone_(timezone), + _hasTimezone(hasTimezone), + _typeName(typeName), + _typeURI(typeURI) +{ +} + +void *ATTimeOrDerivedImpl::getInterface(const XMLCh *name) const +{ + if(name == Item::gXQilla) { + return (void*)this; + } + return 0; +} + +/* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ +const XMLCh* ATTimeOrDerivedImpl::getPrimitiveTypeName() const { + return this->getPrimitiveName(); +} + +const XMLCh* ATTimeOrDerivedImpl::getPrimitiveName() { + return SchemaSymbols::fgDT_TIME; +} + +/* Get the name of this type (ie "integer" for xs:integer) */ +const XMLCh* ATTimeOrDerivedImpl::getTypeName() const { + return _typeName; +} + +/* Get the namespace URI for this type */ +const XMLCh* ATTimeOrDerivedImpl::getTypeURI() const { + return _typeURI; +} + +AnyAtomicType::AtomicObjectType ATTimeOrDerivedImpl::getTypeIndex() { + return AnyAtomicType::TIME; +} + +static inline MAPM hourFromSeconds(const MAPM &value) +{ + return DateUtils::modulo(value, DateUtils::g_secondsPerDay).integer_divide(DateUtils::g_secondsPerHour); +} + +static inline MAPM minuteFromSeconds(const MAPM &value) +{ + return DateUtils::modulo(value, DateUtils::g_secondsPerHour).integer_divide(DateUtils::g_secondsPerMinute); +} + +static inline MAPM secondFromSeconds(const MAPM &value) +{ + return DateUtils::modulo(value, DateUtils::g_secondsPerMinute); +} + +static inline void decomposeSeconds(const MAPM &value, MAPM &hour, MAPM &minute, MAPM &second) +{ + hour = hourFromSeconds(value); + minute = minuteFromSeconds(value); + second = secondFromSeconds(value); +} + +static inline MAPM composeSeconds(MAPM &hh, MAPM &mm, MAPM &ss) +{ + return hh * DateUtils::g_secondsPerHour + + mm * DateUtils::g_secondsPerMinute + + ss; +} + +/* If possible, cast this type to the target type */ +AnyAtomicType::Ptr ATTimeOrDerivedImpl::castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, + const XMLCh* targetType, const DynamicContext* context) const +{ + XMLBuffer buf(1023, context->getMemoryManager()); + + switch (targetIndex) { + case DATE_TIME: { + ATDateOrDerived::Ptr currentDate = DateUtils::getCurrentDate(context); + Timezone::Ptr nulltz; + currentDate = currentDate->setTimezone(nulltz, context); + + buf.append(currentDate->asString(context)); + buf.append(chLatin_T); + buf.append(this->asString(context)); + + return context->getItemFactory()->createDateTimeOrDerived(targetURI, targetType, buf.getRawBuffer(), context); + } + case ANY_SIMPLE_TYPE: + case UNTYPED_ATOMIC: + //anySimpleType and untypedAtomic follow the same casting rules as string. + case STRING: { + return context->getItemFactory()->createDerivedFromAtomicType(targetIndex, targetURI, targetType, this->asString(context), context); + } + default: return AnyAtomicType::castAsInternal(targetIndex, targetURI, targetType, context); + } +} + +/* returns the XMLCh* (canonical) representation of this type */ +const XMLCh* ATTimeOrDerivedImpl::asString(const DynamicContext* context) const +{ + XMLBuffer buffer(1023, context->getMemoryManager()); + + MAPM hour, minute, second; + decomposeSeconds(seconds_, hour, minute, second); + + DateUtils::formatNumber(hour, 2, buffer); + buffer.append(chColon); + DateUtils::formatNumber(minute, 2, buffer); + buffer.append(chColon); + if(second < MM_Ten) + buffer.append(chDigit_0); + buffer.append(Numeric::asDecimalString(second, ATDecimalOrDerivedImpl::g_nSignificantDigits, context)); + // Add timezone if exists + if (_hasTimezone) { + buffer.append(timezone_->asString(context)); + } + return context->getMemoryManager()->getPooledString(buffer.getRawBuffer()); +} + +static inline MAPM referenceDateTime(const MAPM &seconds, bool hasTimezone, const Timezone::Ptr &timezone) +{ + MAPM result = DateUtils::convertDMY2Absolute(31, 12, 1972) * DateUtils::g_secondsPerDay; + result += seconds; + + if(hasTimezone) { + result -= timezone->asSeconds(); + } + + return result; +} + +MAPM ATTimeOrDerivedImpl::buildReferenceDateTime(const DynamicContext *context) const +{ + MAPM result = referenceDateTime(seconds_, _hasTimezone, timezone_); + + if(!_hasTimezone) + result -= context->getImplicitTimezone()->asSeconds(context)->asMAPM(); + + return result; +} + +/** + * Returns true if and only if the value of $arg1 converted to an xs:dateTime using the date components from the reference + * xs:dateTime is equal to the value of $arg2 converted to an xs:dateTime using the date components from the same reference + * xs:dateTime. Returns false otherwise. + * + * The two xs:dateTime values are compared using op:dateTime-equal. + */ +bool ATTimeOrDerivedImpl::equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const { + if(this->getPrimitiveTypeIndex() != target->getPrimitiveTypeIndex()) { + XQThrow2(::IllegalArgumentException,X("ATTimeOrDerivedImpl::equals"), X("Equality operator for given types not supported [err:XPTY0004]")); + } + return compare((const ATTimeOrDerived*)target.get(), context) == 0; +} + +int ATTimeOrDerivedImpl::compare(const ATTimeOrDerived::Ptr &target, const DynamicContext* context) const +{ + const ATTimeOrDerivedImpl *other = (const ATTimeOrDerivedImpl *)target.get(); + return buildReferenceDateTime(context).compare(other->buildReferenceDateTime(context)); +} + +/** + * Returns an integer representing the hour component of this object + */ +ATDecimalOrDerived::Ptr ATTimeOrDerivedImpl::getHours(const DynamicContext *context) const { + return context->getItemFactory()->createNonNegativeInteger(hourFromSeconds(seconds_), context); +} + +/** + * Returns an integer representing the minute component of this object + */ +ATDecimalOrDerived::Ptr ATTimeOrDerivedImpl::getMinutes(const DynamicContext *context) const { + return context->getItemFactory()->createNonNegativeInteger(minuteFromSeconds(seconds_), context); +} + +/** + * Returns an decimal representing the second component of this object + */ +ATDecimalOrDerived::Ptr ATTimeOrDerivedImpl::getSeconds(const DynamicContext *context) const { + return context->getItemFactory()->createDecimal(secondFromSeconds(seconds_), context); +} + +/** + * Returns true if the timezone is defined for this object, false otherwise. + */ +bool ATTimeOrDerivedImpl::hasTimezone() const { + return _hasTimezone; +} + +/** + * Returns the timezone associated with this object, or + * null, if the timezone is not set + */ +const Timezone::Ptr &ATTimeOrDerivedImpl::getTimezone() const { + return timezone_; +} + +/** + * Setter for timezone. Overrides the current timezone. (Not to be + * confused with addTimezone(). If passed NULL, timezone is removed (unset) + */ +ATTimeOrDerived::Ptr ATTimeOrDerivedImpl::setTimezone(const Timezone::Ptr &timezone, const DynamicContext* context) const +{ + return new ATTimeOrDerivedImpl(_typeURI, _typeName, seconds_, timezone, timezone != NULLRCP); +} + +/** + * Returns an ATTimeOrDerived with a timezone added to it + */ +ATTimeOrDerived::Ptr ATTimeOrDerivedImpl::addTimezone(const ATDurationOrDerived::Ptr &timezone, + const DynamicContext* context) const +{ + Timezone::Ptr tz = new Timezone(timezone, context); + + // If this time does not have a timezone, add the given timezone + if(!_hasTimezone) return setTimezone(tz, context); + + MAPM result = seconds_; + result -= timezone_->asSeconds(); + result += tz->asSeconds(); + + return new ATTimeOrDerivedImpl(_typeURI, _typeName, result, tz, true); +} + +/** + * Returns a time with the given dayTimeDuration added to it + */ +ATTimeOrDerived::Ptr ATTimeOrDerivedImpl::addDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, const DynamicContext* context) const { + return addDayTimeDuration(dayTime->asSeconds(context)->asMAPM(), context); +} + +/** + * Returns a time with the given dayTimeDuration subtracted from it + */ +ATTimeOrDerived::Ptr ATTimeOrDerivedImpl::subtractDayTimeDuration(const ATDurationOrDerived::Ptr &dayTime, const DynamicContext* context) const { + return addDayTimeDuration(dayTime->asSeconds(context)->asMAPM().neg(), context); +} + +ATTimeOrDerived::Ptr ATTimeOrDerivedImpl::addDayTimeDuration(const MAPM &secondsToAdd, const DynamicContext* context) const +{ + MAPM result = DateUtils::modulo(seconds_ + secondsToAdd, DateUtils::g_secondsPerDay); + return new ATTimeOrDerivedImpl(_typeURI, _typeName, result, timezone_, _hasTimezone); +} + +/** + * Returns the xdt:dayTimeDuration that corresponds to the difference between the value of $arg1 converted to an + * xs:dateTime using the date components from the reference xs:dateTime and the value of $arg2 converted to an xs:dateTime + * using the date components from the same reference xs:dateTime + */ +ATDurationOrDerived::Ptr ATTimeOrDerivedImpl::subtractTime(const ATTimeOrDerived::Ptr &time, + const DynamicContext* context) const +{ + const ATTimeOrDerivedImpl *other = (const ATTimeOrDerivedImpl *)time.get(); + + MAPM secDiff = buildReferenceDateTime(context) - other->buildReferenceDateTime(context); + + return context->getItemFactory()->createDayTimeDuration(secDiff, context); +} + +AnyAtomicType::AtomicObjectType ATTimeOrDerivedImpl::getPrimitiveTypeIndex() const { + return this->getTypeIndex(); +} + +void ATTimeOrDerivedImpl::setTime(const XMLCh* const time) { + unsigned int length = XMLString::stringLen(time); + + if(time == NULL) { + XQThrow2(XPath2TypeCastException,X("XSTimeImpl::setTime"), X("Invalid representation of time [err:FORG0001]")); + } + + // State variables etc. + bool gotDot = false; + bool gotDigit = false; + + unsigned int pos = 0; + long int tmpnum = 0; + double decplace = 1; + double tmpdec = 0; + + unsigned int numDigit = 0; + + // defaulting values + MAPM hh = 0; + MAPM mm = 0; + MAPM ss = 0; + _hasTimezone = false; + bool zonepos = false; + int zonehh = 0; + int zonemm = 0; + + int state = 3 ; // 3 = hour + // 4 = minutes / 5 = sec / 6 = timezonehour / 7 = timezonemin + XMLCh tmpChar; + + bool wrongformat = false; + pos = 0; + + while ( ! wrongformat && pos < length) { + tmpChar = time[pos]; + pos++; + switch(tmpChar) { + case L'.': { + if (! gotDot && gotDigit && state == 5 && numDigit == 2) { + gotDot = true; + ss = tmpnum; + gotDigit = false; + tmpnum = 0; + break; + } + wrongformat = true; + break; + } + case 0x0030: + case 0x0031: + case 0x0032: + case 0x0033: + case 0x0034: + case 0x0035: + case 0x0036: + case 0x0037: + case 0x0038: + case 0x0039: { + if ( gotDot && state == 5) { + decplace *= 10; + } else { + numDigit ++; + } + tmpnum *= 10; + tmpnum += static_cast(tmpChar - 0x0030); + gotDigit = true; + + break; + } + case L'-' : { + if ( gotDigit && state == 5 && numDigit == 2) { + tmpdec = tmpnum / decplace; + ss += tmpdec; + gotDigit = false; + _hasTimezone = true; + zonepos = false; + _hasTimezone = true; + tmpnum = 0; + numDigit = 0; + }else { + + wrongformat = true; + } + state ++; + break; + } + case L'+' : { + if ( gotDigit && state == 5 && numDigit == 2) { + tmpdec = tmpnum / decplace; + ss += tmpdec; + state = 6; + gotDigit = false; + _hasTimezone = true; + zonepos = true; + tmpnum = 0; + numDigit = 0; + } else { + wrongformat = true; + } + break; + } + case L':' : { + if (gotDigit ) { + if (state == 3 && numDigit == 2) { + hh = tmpnum; + tmpnum = 0; + numDigit = 0; + gotDigit = false; + } else if ( state == 4 && numDigit == 2) { + mm = tmpnum; + tmpnum = 0; + numDigit = 0; + gotDigit = false; + } else if ( state == 6 && numDigit == 2) { + zonehh = tmpnum; + _hasTimezone = true; + tmpnum = 0; + numDigit = 0; + gotDigit = false; + } else { + wrongformat = true; + } + state ++; + }else { + wrongformat = true; + } + break; + } + case L'Z' : { + if (gotDigit && state == 5 && numDigit == 2) { + tmpdec = tmpnum / decplace; + ss += tmpdec; + state = 8; // final state + _hasTimezone = true; + gotDigit = false; + tmpnum = 0; + numDigit = 0; + } else { + wrongformat = true; + } + break; + } + default: + wrongformat = true; + } + } + + if (gotDigit) { + if ( gotDigit && state == 7 && numDigit == 2) { + zonemm = tmpnum; + _hasTimezone = true; + }else if ( gotDigit && state == 5 && numDigit == 2) { + tmpdec = tmpnum / decplace; + ss += tmpdec; + }else { + wrongformat = true; + } + } + + if ( hh > 24 || mm > 59 || ss > 59 || zonehh > 24 || zonemm > 59 ) + wrongformat = true; + if(hh==24 && mm==0 && ss==0) + hh=0; + + if ( wrongformat) { + XQThrow2(XPath2TypeCastException,X("XSTimeImpl::setTime"), X("Invalid representation of time [err:FORG0001]")); + } + + timezone_ = new Timezone(Timezone::convert(zonepos, zonehh,zonemm)); + + seconds_ = composeSeconds(hh, mm, ss); +} + +MAPM ATTimeOrDerivedImpl::parseTime(const XMLCh* const time, const MAPM &implicitTimezone) +{ + ATTimeOrDerivedImpl dt(0, 0, time); + + MAPM result = referenceDateTime(dt.seconds_, dt._hasTimezone, dt.timezone_); + + if(!dt._hasTimezone) + result -= implicitTimezone; + + return result; +} diff --git a/src/items/impl/ATUntypedAtomicImpl.cpp b/src/items/impl/ATUntypedAtomicImpl.cpp new file mode 100644 index 00000000..b5d62bde --- /dev/null +++ b/src/items/impl/ATUntypedAtomicImpl.cpp @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATUntypedAtomicImpl.cpp,v 1.12 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#include "ATUntypedAtomicImpl.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// We ignore the type URI and typeName passed in, since they are always xdt:untypedAtomic +// (you cannot derived from it) +ATUntypedAtomicImpl:: +ATUntypedAtomicImpl(const XMLCh*, const XMLCh*, const XMLCh* value, const StaticContext* context): + ATUntypedAtomic() { + + _value = context->getMemoryManager()->getPooledString(value); + +} + +void *ATUntypedAtomicImpl::getInterface(const XMLCh *name) const +{ + if(name == Item::gXQilla) { + return (void*)this; + } + return 0; +} + +/* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ +const XMLCh* ATUntypedAtomicImpl::getPrimitiveTypeName() const { + return this->getPrimitiveName(); +} + +const XMLCh* ATUntypedAtomicImpl::getPrimitiveName() { + return ATUntypedAtomic::fgDT_UNTYPEDATOMIC; +} + +/* Get the namespace uri of the primitive type (basic type) of this type */ +const XMLCh* ATUntypedAtomicImpl::getPrimitiveTypeURI() const{ + return FunctionConstructor::XMLChXPath2DatatypesURI; +} + +/* Get the name of this type (ie "integer" for xs:integer)-- + * same as the primitive type name. UntypedAtomic cannot be + * extended */ +const XMLCh* ATUntypedAtomicImpl::getTypeName() const { + return getPrimitiveTypeName(); +} + +/* Get the namespace URI for this type -- same as the primitive uri + * UntypedAtomic cannot be extended */ +const XMLCh* ATUntypedAtomicImpl::getTypeURI() const { + return getPrimitiveTypeURI(); +} + +AnyAtomicType::AtomicObjectType ATUntypedAtomicImpl::getTypeIndex() { + return AnyAtomicType::UNTYPED_ATOMIC; +} + +AnyAtomicType::Ptr ATUntypedAtomicImpl::castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const { + switch (targetIndex) { + case DOUBLE: { + const XMLCh* upCase = XPath2Utils::toUpper(_value, context->getMemoryManager()); + return (const AnyAtomicType::Ptr)context->getItemFactory()->createDoubleOrDerived(targetURI, targetType, upCase, context); + } + case FLOAT: { + const XMLCh* upCase = XPath2Utils::toUpper(_value, context->getMemoryManager()); + return (const AnyAtomicType::Ptr)context->getItemFactory()->createFloatOrDerived(targetURI, targetType, upCase, context); + } + default: return AnyAtomicType::castAsInternal(targetIndex, targetURI, targetType, context); + } +} + +/* returns the XMLCh* (canonical) representation of this type */ +const XMLCh* ATUntypedAtomicImpl::asString(const DynamicContext* context) const { + return _value; +} + +/* returns true if the two objects' URI are equal (string comparison) + * false otherwise */ +bool ATUntypedAtomicImpl::equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const { + if(this->getPrimitiveTypeIndex() != target->getPrimitiveTypeIndex()) { + XQThrow2(IllegalArgumentException,X("ATUntypedAtomicImpl::equals"), X("Equality operator for given types not supported [err:XPTY0004]")); + } + return XPath2Utils::equals(target->asString(context), _value); +} + +AnyAtomicType::AtomicObjectType ATUntypedAtomicImpl::getPrimitiveTypeIndex() const { + return this->getTypeIndex(); +} diff --git a/src/items/impl/ATUntypedAtomicImpl.hpp b/src/items/impl/ATUntypedAtomicImpl.hpp new file mode 100644 index 00000000..2eff458e --- /dev/null +++ b/src/items/impl/ATUntypedAtomicImpl.hpp @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ATUntypedAtomicImpl.hpp,v 1.7 2006/11/01 16:37:21 jpcs Exp $ + */ + +#ifndef _ATUNTYPEDATOMICIMPL_HPP +#define _ATUNTYPEDATOMICIMPL_HPP + +#include +#include + +#include +class DynamicContext; + +class XQILLA_API ATUntypedAtomicImpl : public ATUntypedAtomic +{ + +public: + + /* constructor */ + ATUntypedAtomicImpl(const XMLCh*, const XMLCh*, const XMLCh* value, const StaticContext* context); + + virtual void *getInterface(const XMLCh *name) const; + + /* Get the namespace uri of the primitive type (basic type) of this type */ + virtual const XMLCh* getPrimitiveTypeURI() const; + + /* Get the name of the primitive type (basic type) of this type + * (ie "decimal" for xs:decimal) */ + virtual const XMLCh* getPrimitiveTypeName() const; + + /* Get the namespace URI for this type */ + virtual const XMLCh* getTypeURI() const; + + /* Get the name of this type (ie "integer" for xs:integer) */ + virtual const XMLCh* getTypeName() const; + + /* returns the XMLCh* (canonical) representation of this type */ + virtual const XMLCh* asString(const DynamicContext* context) const; + + /* returns true if the two objects' URI are equal (string comparison) + * false otherwise */ + virtual bool equals(const AnyAtomicType::Ptr &target, const DynamicContext* context) const; + + /* Get the primitive index associated with this type */ + static AnyAtomicType::AtomicObjectType getTypeIndex(); + + /* Get the primitive type name */ + static const XMLCh* getPrimitiveName(); + + /* Get the primitive index associated with this type */ + virtual AnyAtomicType::AtomicObjectType getPrimitiveTypeIndex() const; + +protected: + + /* If possible, cast this type to the target type */ + virtual AnyAtomicType::Ptr castAsInternal(AtomicObjectType targetIndex, const XMLCh* targetURI, const XMLCh* targetType, const DynamicContext* context) const; + +private: + + /*The value of this URI*/ + const XMLCh* _value; + +}; + +#endif // _ATUNTYPEDATOMICIMPL_HPP diff --git a/src/items/impl/NodeImpl.cpp b/src/items/impl/NodeImpl.cpp new file mode 100644 index 00000000..a36c8d90 --- /dev/null +++ b/src/items/impl/NodeImpl.cpp @@ -0,0 +1,997 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: NodeImpl.cpp,v 1.21 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../../config/xqilla_config.h" +#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 + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +const XMLCh NodeImpl::ls_string[] = +{ + chLatin_L, chLatin_S, + chNull +}; + +NodeImpl::NodeImpl(const DOMNode *node, const DynamicContext *context) : + Node(), + fSerializer(0), + fNode(node), + context_(context) +{ + assert(node!=0); + context_->incrementDocumentRefCount(XPath2Utils::getOwnerDoc(fNode)); +} + +NodeImpl::NodeImpl(const DOMNode *node) + : fSerializer(0), + fNode(node), + context_(0) +{ + assert(node!=0); +} + +NodeImpl::~NodeImpl() +{ + if(context_ != 0) { + context_->decrementDocumentRefCount(XPath2Utils::getOwnerDoc(fNode)); + } + if(fSerializer != 0) { + fSerializer->release(); + } +} + +void *NodeImpl::getInterface(const XMLCh *name) const +{ + if(XPath2Utils::equals(name,Item::gXQilla)) { + return (void*)this; + } + else if(XPath2Utils::equals(name,Node::gXerces)) { + return (void*)fNode; + } + return 0; +} + +bool NodeImpl::isNode() const +{ + return true; +} + +bool NodeImpl::isAtomicValue() const +{ + return false; +} + +const XMLCh* NodeImpl::asString(const DynamicContext* context) const +{ + if(!fSerializer) { + DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(ls_string); + ((NodeImpl*)this)->fSerializer = ((DOMImplementationLS*)impl)->createDOMWriter(context->getMemoryManager()); + ((NodeImpl*)this)->fSerializer->setFeature(XMLUni::fgDOMXMLDeclaration, false); + } + return fSerializer->writeToString(*fNode); +} + +/** check if the underlying type of this node is instance of a certain type */ +bool NodeImpl::hasInstanceOfType(const XMLCh* typeURI, const XMLCh* typeName, const DynamicContext* context) const { + const XMLCh* uri, *name; + getTypeUriAndName(uri,name); + return context->isTypeOrDerivedFromType(uri, name, typeURI, typeName); +} + + +/* Accessor functions */ + +Sequence NodeImpl::dmBaseURI(const DynamicContext* context) const { + + const XMLCh* baseURI=NULL; + switch (fNode->getNodeType()) { + case DOMNode::ATTRIBUTE_NODE : + { + DOMElement* pNode=((DOMAttr*)fNode)->getOwnerElement(); + if(pNode) + baseURI = pNode->getBaseURI(); + } + break; + case DOMNode::COMMENT_NODE : + case DOMNode::TEXT_NODE : + case DOMNode::ELEMENT_NODE : + case DOMNode::DOCUMENT_NODE : + case DOMNode::PROCESSING_INSTRUCTION_NODE : + { + baseURI = fNode->getBaseURI(); + break; + } + } + const XMLCh* moduleBaseURI=context->getBaseURI(); + if(baseURI && baseURI[0]) + { + ATAnyURIOrDerived::Ptr tempURI; + if(moduleBaseURI && moduleBaseURI[0]) + { + try + { + XMLUri temp(moduleBaseURI, context->getMemoryManager()); + XMLUri temp2(&temp, baseURI, context->getMemoryManager()); + tempURI = context->getItemFactory()->createAnyURI(temp2.getUriText(), context); + } + catch(MalformedURLException& e) + { + XQThrow2(ItemException, X("NodeImpl::dmBaseURI"), X("Base-URI is a malformed URL")); + } + } + else + tempURI = context->getItemFactory()->createAnyURI(baseURI, context); + return Sequence(tempURI, context->getMemoryManager()); + } + else if(moduleBaseURI && moduleBaseURI[0]) + { + const ATAnyURIOrDerived::Ptr tempURI = context->getItemFactory()->createAnyURI(moduleBaseURI, context); + return Sequence(tempURI, context->getMemoryManager()); + } + return Sequence(context->getMemoryManager()); +} + +// The dm:node-kind accessor returns a string value representing the +// node's kind: either "document", "element", "attribute", "text", +// "namespace", "processing-instruction", or "comment". + +const XMLCh* NodeImpl::dmNodeKind(void) const { + + switch(fNode->getNodeType()) { + + case DOMNode::DOCUMENT_NODE: + return document_string; + + case DOMNode::ELEMENT_NODE: + return element_string; + + case DOMNode::ATTRIBUTE_NODE: + return attribute_string; + + case DOMNode::CDATA_SECTION_NODE: + case DOMNode::TEXT_NODE: + return text_string; + + case DOMNode::PROCESSING_INSTRUCTION_NODE: + return processing_instruction_string; + + case DOMNode::COMMENT_NODE: + return comment_string; + + case DOMXPathNamespace::XPATH_NAMESPACE_NODE: + return namespace_string; + } + + XQThrow2(ItemException, X("NodeImpl::dmNodeKind"), X("Unknown node type.")); +} + + +ATQNameOrDerived::Ptr NodeImpl::dmNodeName(const DynamicContext* context) const { + + switch(fNode->getNodeType()) + { + case DOMNode::ELEMENT_NODE: + return context->getItemFactory()->createQName(fNode->getNamespaceURI(), fNode->getPrefix(), fNode->getLocalName(), context); + + case DOMNode::ATTRIBUTE_NODE: + return context->getItemFactory()->createQName(fNode->getNamespaceURI(), fNode->getPrefix(), fNode->getLocalName(), context); + + case DOMNode::PROCESSING_INSTRUCTION_NODE: + return context->getItemFactory()->createQName(XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, fNode->getNodeName(), context); + + case DOMXPathNamespace::XPATH_NAMESPACE_NODE: + { + const XMLCh* prefix = fNode->getPrefix(); + if(prefix) + return context->getItemFactory()->createQName(XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, prefix, context); + } + } + return 0; +} + + +void NodeImpl::addStringValueToBuffer(const DOMNode* node, XMLBuffer& buffer) const +{ + short nodeType=node->getNodeType(); + if(nodeType==DOMNode::TEXT_NODE || + nodeType==DOMNode::CDATA_SECTION_NODE) + { + buffer.append(node->getNodeValue()); + } + else + { + for(DOMNode* child=node->getFirstChild();child!=NULL;child=child->getNextSibling()) + addStringValueToBuffer(child,buffer); + } +} + +//The dm:string-value accessor returns the node's string +//representation. For some kinds of nodes, this is part of the node; +//for other kinds of nodes, it is computed from the dm:string-value of +//its descendant nodes. + + +const XMLCh* NodeImpl::dmStringValue(const DynamicContext* context) const { + + switch(fNode->getNodeType()) + { + case DOMNode::DOCUMENT_NODE: + { + // Returns the concatenation of the string-values of all its text node descendants in document order + XMLBuffer str(1023, context->getMemoryManager()); + addStringValueToBuffer(fNode,str); + return context->getMemoryManager()->getPooledString(str.getRawBuffer()); + } + break; + + case DOMNode::ELEMENT_NODE: + { + XMLBuffer str(1023, context->getMemoryManager()); + const XMLCh* typeUri, *typeName; + getTypeUriAndName(typeUri,typeName); + //Returns the string value calculated as follows: + // - If the element has a type of xdt:untyped, a complex type with complex content, or a complex type with mixed content, + // returns the concatenation of the string-values of all its text node descendants in document order. + // It returns "" if the element has no text node descendants. + // - If the element has a complex type with empty content, returns "". + if(XPath2Utils::equals(typeName, DocumentCacheParser::g_szUntyped) && XPath2Utils::equals(typeUri, FunctionConstructor::XMLChXPath2DatatypesURI) + || context->getDocumentCache()->getComplexTypeInfo(typeUri, typeName)!=NULL) + addStringValueToBuffer(fNode,str); + else + { + // - If the element has a simple type or a complex type with simple content: + // - If the element type is xs:string, or a type derived from xs:string, returns that string. + if(context->getDocumentCache()->isTypeOrDerivedFromType(typeUri,typeName,SchemaSymbols::fgURI_SCHEMAFORSCHEMA, SchemaSymbols::fgDT_STRING)) + str.set(fNode->getTextContent()); + // - If the element type is xs:anyURI, returns the characters of the URI. + else if(XPath2Utils::equals(typeName, SchemaSymbols::fgDT_ANYURI) && + XPath2Utils::equals(typeUri, SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) + str.set(fNode->getTextContent()); + // - If the element type is xs:QName returns the value calculated as follows: + // - If the value has no namespace URI and the in-scope namespaces map the default namespace to any + // namespace URI, then an error is raised ("default namespace is defined"). + // - If the value has a namespace URI, then there must be at least one prefix mapped to that URI in + // the in-scope namespaces. If there is no such prefix, an error is raised ("no prefix defined for namespace"). + // If there is more than one such prefix, the one that is chosen is implementation dependent. + // - If no error occurs, returns a string with the lexical form of a xs:QName using the prefix chosen + // as described above, and the local name of the value. + else if(XPath2Utils::equals(typeName, SchemaSymbols::fgDT_QNAME) && + XPath2Utils::equals(typeUri, SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) + { + // REVISIT: the rules assume that a QName has been expanded upon loading, but we don't do that... + str.set(fNode->getTextContent()); + } + // - If the element type is xs:dateTime, xs:date, or xs:time, returns the original lexical representation of + // the typed value recovered as follows: if an explicit timezone was present, the normalized value is adjusted + // using the explicit timezone; if an explicit timezone was not present, the Z is dropped from the normalized value. + // The normalized value and the explicit timezone, if present, are converted separately to xs:string and concatenated + // to yield the string value. + else if(XPath2Utils::equals(typeUri, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) && + (XPath2Utils::equals(typeName, SchemaSymbols::fgDT_DATETIME) || + XPath2Utils::equals(typeName, SchemaSymbols::fgDT_DATE) || + XPath2Utils::equals(typeName, SchemaSymbols::fgDT_TIME))) + { + const AnyAtomicType::Ptr item = context->getItemFactory()->createDerivedFromAtomicType(typeUri, typeName, fNode->getTextContent(), context); + str.set(item->asString(context)); + } + // - In all other cases, returns the concatenation of the string-values of all its text node descendants in document order. + else + addStringValueToBuffer(fNode,str); + } + return context->getMemoryManager()->getPooledString(str.getRawBuffer()); + } + break; + + case DOMNode::ATTRIBUTE_NODE: + { + const XMLCh* typeUri, *typeName; + getTypeUriAndName(typeUri,typeName); + // Returns the value calculated as follows: + // - If the attribute type is xdt:untypedAtomic, xs:string, or a type derived from xs:string, returns that string. + if(XPath2Utils::equals(typeName, ATUntypedAtomic::fgDT_UNTYPEDATOMIC) && + XPath2Utils::equals(typeUri, FunctionConstructor::XMLChXPath2DatatypesURI) || + context->getDocumentCache()->isTypeOrDerivedFromType(typeUri,typeName,SchemaSymbols::fgURI_SCHEMAFORSCHEMA, SchemaSymbols::fgDT_STRING)) + return context->getMemoryManager()->getPooledString(fNode->getNodeValue()); + // - If the attribute type is xs:anyURI, returns the characters of the URI. + else if(XPath2Utils::equals(typeName, SchemaSymbols::fgDT_ANYURI) && + XPath2Utils::equals(typeUri, SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) + return context->getMemoryManager()->getPooledString(fNode->getNodeValue()); + // - If the attribute type is xs:QName returns the value calculated as follows: + // - If the value has no namespace URI, then an error is raised ("default namespace is defined") if the in-scope + // namespaces map the default namespace to any namespace URI. + // - If the value has a namespace URI, then there must be at least one prefix mapped to that URI in the in-scope + // namespaces. If there is no such prefix, an error is raised ("no prefix defined for namespace"). + // If there is more than one such prefix, the one that is chosen is implementation dependent. + // - If no error occurs, returns a string with the lexical form of a xs:QName using the prefix chosen as described + // above, and the local name of the value. + else if(XPath2Utils::equals(typeName, SchemaSymbols::fgDT_QNAME) && + XPath2Utils::equals(typeUri, SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) + { + // REVISIT: the rules assume that a QName has been expanded upon loading, but we don't do that... + return context->getMemoryManager()->getPooledString(fNode->getNodeValue()); + } + // - If the attribute type is xs:dateTime, xs:date, or xs:time, returns the original lexical representation recovered as follows: + // - if an explicit timezone was present, the normalized value is adjusted using the explicit timezone; + // - if an explicit timezone was not present, the Z is dropped from the normalized value. + // The normalized value and the explicit timezone, if present, are converted separately to xs:string and concatenated to yield the string value. + else if(XPath2Utils::equals(typeUri, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) && + (XPath2Utils::equals(typeName, SchemaSymbols::fgDT_DATETIME) || + XPath2Utils::equals(typeName, SchemaSymbols::fgDT_DATE) || + XPath2Utils::equals(typeName, SchemaSymbols::fgDT_TIME))) + { + const AnyAtomicType::Ptr item = context->getItemFactory()->createDerivedFromAtomicType(typeUri, typeName, fNode->getTextContent(), context); + return item->asString(context); + } + else + return context->getMemoryManager()->getPooledString(fNode->getNodeValue()); + } + break; + case DOMNode::PROCESSING_INSTRUCTION_NODE: + case DOMNode::COMMENT_NODE: + case DOMNode::TEXT_NODE: + case DOMNode::CDATA_SECTION_NODE: + // Returns the value of the content property. + return context->getMemoryManager()->getPooledString(fNode->getNodeValue()); + break; + + case DOMXPathNamespace::XPATH_NAMESPACE_NODE: + // Returns the value of the uri property. + return context->getMemoryManager()->getPooledString(fNode->getTextContent()); + break; + + } + return XMLUni::fgZeroLenString; +} + +Sequence NodeImpl::getListTypeTypedValue(DatatypeValidator *dtv, const DynamicContext* context) const { + + const XMLCh *stringVal = dmStringValue(context); + BaseRefVectorOf* tokenVector = XMLString::tokenizeString(stringVal); + Sequence s(tokenVector->size(), context->getMemoryManager()); + + //the actual type we want + DatatypeValidator* theItemTypeDTV = ((ListDatatypeValidator*)dtv)->getItemTypeDTV(); + if (theItemTypeDTV->getType() == DatatypeValidator::Union) + { + RefVectorOf* membersDV = ((UnionDatatypeValidator*)theItemTypeDTV)->getMemberTypeValidators(); + unsigned int size = membersDV->size(); + // find the first datatype in the union that validates the piece + for ( unsigned int j = 0; j < tokenVector->size(); j++ ) + { + const XMLCh* szPiece=tokenVector->elementAt(j); + bool bFound=false; + for (unsigned int i=0; ielementAt(i); + try + { + pDV->validate(szPiece, NULL, context->getMemoryManager()); + const XMLCh* itemTypeDTVName = pDV->getTypeLocalName(); + const XMLCh* itemTypeDTVUri = pDV->getTypeUri(); + s.addItem(context->getItemFactory()->createDerivedFromAtomicType(itemTypeDTVUri, itemTypeDTVName, szPiece, context)); + bFound=true; + break; + } + catch (XMLException&) + { + //absorbed + } + } + if(!bFound) + XQThrow2(ItemException, X("NodeImpl::getListTypeTypedValue"), X("Value in list doesn't validate with any of the componenets of the union type")); + } + } + else + { + const XMLCh* itemTypeDTVName = theItemTypeDTV->getTypeLocalName(); + const XMLCh* itemTypeDTVUri = theItemTypeDTV->getTypeUri(); + + for ( unsigned int j = 0; j < tokenVector->size(); j++ ) + s.addItem(context->getItemFactory()->createDerivedFromAtomicType(itemTypeDTVUri, itemTypeDTVName, tokenVector->elementAt(j), context)); + } + return s; + +} + + +Sequence NodeImpl::dmTypedValue(DynamicContext* context) const { + /* + cerr<<"NodeImpl::dmTypedValue getTypeName(): "<getNodeName())<getNamespaceURI())<getMemoryManager(), context->getNSResolver()); + newNSScope.setNodeContext(fNode); + AutoNsScopeReset jan(context,&newNSScope); + + switch(fNode->getNodeType()) + { + case DOMNode::ATTRIBUTE_NODE: + { + // Data Model, § 7.3.3 and 7.3.4 + const XMLCh* typeUri, *typeName; + getMemberTypeUriAndName(typeUri,typeName); + Item::Ptr item = 0; + + //cerr<<"NodeImpl::dmTypedValue getTypeName(): "<getItemFactory()->createUntypedAtomic(dmStringValue(context), context); + return Sequence(item, context->getMemoryManager()); + } + else + { + // Otherwise: its typed-value is a sequence of zero or more atomic values derived from the string-value of + // the node and its type in a way that is consistent with XML Schema validation. The type of each atomic value + // is assigned as described in 3.3.1.2 Atomic Value Type Names + DatatypeValidator *dtv = context->getDocumentCache()->getDatatypeValidator(typeUri, typeName); + + if(!dtv) + { + assert(false); + XMLBuffer msg(1023, context->getMemoryManager()); + msg.set(X("The datatype {")); + msg.append(typeUri); + msg.append(X("}")); + msg.append(typeName); + msg.append(X(" is unknown")); + XQThrow2(XPath2TypeCastException,X("NodeImpl::dmTypedValue"), msg.getRawBuffer()); + } + + if(dtv->getType() == DatatypeValidator::List) + return getListTypeTypedValue(dtv, context); + else + { + item = (const Item::Ptr)context->getItemFactory()->createDerivedFromAtomicType(typeUri, typeName, dmStringValue(context), context); + return Sequence(item, context->getMemoryManager()); + } + } + } + break; + case DOMNode::ELEMENT_NODE: + { + // Data Model, § 7.2.3 and 7.2.4 + // If the nilled property is true, its typed-value is (). + if(((const ATBooleanOrDerived*)dmNilled(context).get())->isTrue()) + return Sequence(context->getMemoryManager()); + + const XMLCh* typeUri, *typeName; + getMemberTypeUriAndName(typeUri,typeName); + + // If the element is of type xdt:untyped or xs:anyType, its typed-value is its dm:string-value as an xdt:untypedAtomic. + if((XPath2Utils::equals(typeName, DocumentCacheParser::g_szUntyped) && XPath2Utils::equals(typeUri, FunctionConstructor::XMLChXPath2DatatypesURI)) || + (XPath2Utils::equals(typeName, SchemaSymbols::fgATTVAL_ANYTYPE) && XPath2Utils::equals(typeUri, SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) + ) + { + const AnyAtomicType::Ptr item = context->getItemFactory()->createUntypedAtomic(dmStringValue(context), context); + return Sequence(item, context->getMemoryManager()); + } + + // If the element has a simple type or a complex type with simple content: it’s typed value is compute + // as described in 3.3.1.2 Atomic Value Type Names. The result is a sequence of zero or more atomic values + // derived from the string-value of the node and its type in a way that is consistent with XML Schema validation. + DatatypeValidator *dtv = context->getDocumentCache()->getDatatypeValidator(typeUri, typeName); + if(dtv) + { + if(dtv->getType() == DatatypeValidator::List) + return getListTypeTypedValue(dtv, context); + else + { + const AnyAtomicType::Ptr item = context->getItemFactory()->createDerivedFromAtomicType(typeUri, typeName, dmStringValue(context), context); + return Sequence(item, context->getMemoryManager()); + } + } + ComplexTypeInfo *cti = context->getDocumentCache()->getComplexTypeInfo(typeUri, typeName); + if(cti) + { + if(cti->getContentType() == SchemaElementDecl::Simple) + { + DatatypeValidator *dtv = cti->getDatatypeValidator(); + assert(dtv != 0); + + if(dtv->getType() == DatatypeValidator::List) + return getListTypeTypedValue(dtv, context); + else + { + const AnyAtomicType::Ptr item = context->getItemFactory()->createDerivedFromAtomicType(dtv->getTypeUri(), dtv->getTypeLocalName(), dmStringValue(context), context); + return Sequence(item, context->getMemoryManager()); + } + } + + // If the element is empty: its typed-value is the empty sequence, (). + if(cti->getContentType() == SchemaElementDecl::Empty) + return Sequence(context->getMemoryManager()); + + // If the element has a complex type with mixed content, its typed-value is its dm:string-value as an xdt:untypedAtomic. + if(cti->getContentType() == SchemaElementDecl::Mixed_Simple || + cti->getContentType() == SchemaElementDecl::Mixed_Complex) + { + const AnyAtomicType::Ptr item = context->getItemFactory()->createUntypedAtomic(dmStringValue(context), context); + return Sequence(item, context->getMemoryManager()); + } + + // Otherwise, the element must be a complex type with element-only content. + // The typed-value of such an element is undefined. Attempting to access this property with the dm:typed-value + // accessor always raises an error. + if(cti->getContentType() == SchemaElementDecl::Children) + XQThrow2(ItemException, X("NodeImpl::dmTypedValue"), X("Attempt to get typed value from a complex type with non-mixed complex content [err:FOTY0012]")); + } + else + { + //throw error here?? Should not happen now, but if we stop giving anytype to invalid in DOMTypeInfo + //then we will get here if its null. + assert(false); + } + } + break; + case DOMNode::DOCUMENT_NODE: + case DOMNode::TEXT_NODE: + case DOMNode::CDATA_SECTION_NODE: + { + const XMLCh *stringValue = dmStringValue(context); + const AnyAtomicType::Ptr untypedAtomic = context->getItemFactory()->createUntypedAtomic(stringValue, context); + return Sequence(untypedAtomic, context->getMemoryManager()); + } + break; + case DOMXPathNamespace::XPATH_NAMESPACE_NODE: + case DOMNode::COMMENT_NODE: + case DOMNode::PROCESSING_INSTRUCTION_NODE: + { + const XMLCh *stringValue = dmStringValue(context); + const AnyAtomicType::Ptr untypedAtomic = context->getItemFactory()->createString(stringValue, context); + return Sequence(untypedAtomic, context->getMemoryManager()); + } + break; + } + return Sequence(context->getMemoryManager()); +} + +Sequence NodeImpl::dmDocumentURI(const DynamicContext* context) const { + if(fNode->getNodeType()!=DOMNode::DOCUMENT_NODE) + return Sequence(context->getMemoryManager()); + + const DOMDocument* doc=(const DOMDocument *)fNode; + const XMLCh* docURI = doc->getDocumentURI(); + if( docURI==NULL || *docURI==0) + return Sequence(context->getMemoryManager()); + return Sequence(context->getItemFactory()->createAnyURI(docURI, context), context->getMemoryManager()); +} + +ATQNameOrDerived::Ptr NodeImpl::dmTypeName(const DynamicContext* context) const { + short nodeType=fNode->getNodeType(); + if(nodeType != DOMNode::ELEMENT_NODE && + nodeType != DOMNode::ATTRIBUTE_NODE && + nodeType != DOMNode::TEXT_NODE && + nodeType != DOMNode::CDATA_SECTION_NODE) { + return 0; + } + + + //otherwise return the Qname for the node + const XMLCh* typeUri, *typeName; + getTypeUriAndName(typeUri,typeName); + return context->getItemFactory()->createQName(typeUri, XMLUni::fgZeroLenString, typeName, context); +} + +ATBooleanOrDerived::Ptr NodeImpl::dmNilled(const DynamicContext* context) const +{ + if(fNode->getNodeType() != DOMNode::ELEMENT_NODE) { + return 0; + } + + // If the [validity] property exists on an Element Node and is "valid" then if the [nil] property exists and is true, + // then nilled property is "true". In all other cases, including all cases where schema validity assessment was not + // attempted or did not succeed, the nilled property is "false". + try + { + DOMPSVITypeInfo* psviType=(DOMPSVITypeInfo*)const_cast(fNode)->getInterface(XMLUni::fgXercescInterfacePSVITypeInfo); + if(psviType && psviType->getNumericProperty(DOMPSVITypeInfo::PSVI_Validity)==PSVIItem::VALIDITY_VALID) + { + bool isNil=(psviType->getNumericProperty(DOMPSVITypeInfo::PSVI_Nil)!=0); + return context->getItemFactory()->createBoolean(isNil, context); + } + } catch(DOMException&) { + // ignore it; the implementation of getInterface for Xerces < 2.6 will throw it + } + return context->getItemFactory()->createBoolean(false, context); +} + +bool NodeImpl::lessThan(const Node::Ptr &other, const DynamicContext *context) const +{ + const NodeImpl *otherImpl = (const NodeImpl*)other->getInterface(Item::gXQilla); + if(otherImpl == 0) { + // It's not a xqilla implementation Node, so it can't + // be from the same tree as us - jpcs + + // Order them according to the address of their roots + return FunctionRoot::root(this, context).get() < FunctionRoot::root(other, context).get(); + } + + const DOMNode* otherNode = otherImpl->getDOMNode(); + short pos = const_cast(fNode)->compareTreePosition(const_cast(otherNode)); + // compareTreePosition returns the position of the other node, compared to my position; so, if it sets the bit + // TREE_POSITION_FOLLOWING, it means that we come before it + if(pos & DOMNode::TREE_POSITION_FOLLOWING) + return true; + if(pos & DOMNode::TREE_POSITION_PRECEDING) + return false; + if(pos & DOMNode::TREE_POSITION_SAME_NODE) + return false; + // if the two nodes are attributes or namespaces, we get that they are equivalent; we need a stable ordering, so + // we resort to comparing their pointers (we could even decide to sort them on their names...) + if(pos & DOMNode::TREE_POSITION_EQUIVALENT) + return fNode < otherNode; + // if we get they are disconnected, it could be they belong to different documents; in this case, order them according + // to the pointer of their documents (all the nodes in document A must come before or after all the nodes in document B, + // regardless of the chosen ordering criteria) + // If they belong to the same document, they are floating, or maybe just one of them is floating; let's state we consider + // the one connected coming before the disconnected one, and, if both are disconnected, we compare the two roots + if(pos == DOMNode::TREE_POSITION_DISCONNECTED) + { + if(fNode->getOwnerDocument()!=otherNode->getOwnerDocument()) + return fNode->getOwnerDocument()getOwnerDocument(); + else + { + const DOMNode* myParent=fNode; + const DOMNode* tmpParent = XPath2NSUtils::getParent(fNode); + while(tmpParent != 0) { + myParent = tmpParent; + tmpParent = tmpParent->getParentNode(); + } + const DOMNode* otherParent=otherNode; + tmpParent = XPath2NSUtils::getParent(otherNode); + while(tmpParent != 0) { + otherParent = tmpParent; + tmpParent = tmpParent->getParentNode(); + } + + return myParent < otherParent; + } + } + assert(false); + return true; +} + +bool NodeImpl::equals(const Node::Ptr &other) const +{ + const NodeImpl *otherImpl = (const NodeImpl*)other->getInterface(Item::gXQilla); + if(otherImpl == 0) return false; + return fNode->isSameNode(otherImpl->getDOMNode()); +} + +bool NodeImpl::uniqueLessThan(const Node::Ptr &other, const DynamicContext *context) const +{ + const NodeImpl *otherImpl = (const NodeImpl*)other->getInterface(Item::gXQilla); + if(otherImpl == 0) { + // It's not a xqilla implementation Node, so it can't + // be from the same tree as us - jpcs + + // Order them according to the address of their roots + return FunctionRoot::root(this, context).get() < FunctionRoot::root(other, context).get(); + } + return fNode < otherImpl->getDOMNode(); +} + +const DOMNode* NodeImpl::getDOMNode() const { + return fNode; +} + +Node::Ptr NodeImpl::dmParent(const DynamicContext* context) const +{ + DOMNode *parent = XPath2NSUtils::getParent(fNode); + + // Skip out of entity reference nodes + while(parent != 0 && parent->getNodeType() == DOMNode::ENTITY_REFERENCE_NODE) { + parent = parent->getParentNode(); + } + + if(parent == 0) return 0; + + return new NodeImpl(parent, context); +} + +Result NodeImpl::dmAttributes(const DynamicContext* context, const LocationInfo *info) const +{ + if(fNode->getNodeType() == DOMNode::ELEMENT_NODE) { + return new AttributeAxis(info, fNode, this, NULL); + } + return 0; +} + +Result NodeImpl::dmNamespaceNodes(const DynamicContext* context, const LocationInfo *info) const +{ + if(fNode->getNodeType() == DOMNode::ELEMENT_NODE) { + return new NamespaceAxis(info, fNode, this, NULL); + } + return 0; +} + +Result NodeImpl::dmChildren(const DynamicContext *context, const LocationInfo *info) const +{ + if(fNode->getNodeType() == DOMNode::ELEMENT_NODE || fNode->getNodeType() == DOMNode::DOCUMENT_NODE) { + return new ChildAxis(info, fNode, this, NULL); + } + return 0; +} + +Result NodeImpl::getAxisResult(XQStep::Axis axis, const NodeTest *nodeTest, const DynamicContext *context, const LocationInfo *info) const +{ + switch(axis) { + case XQStep::ANCESTOR: { + return new AncestorAxis(info, fNode, this, nodeTest); + } + case XQStep::ANCESTOR_OR_SELF: { + return new AncestorOrSelfAxis(info, fNode, this, nodeTest); + } + case XQStep::ATTRIBUTE: { + if(fNode->getNodeType() == DOMNode::ELEMENT_NODE) { + return new AttributeAxis(info, fNode, this, nodeTest); + } + break; + } + case XQStep::CHILD: { + if(fNode->getNodeType() == DOMNode::ELEMENT_NODE || fNode->getNodeType() == DOMNode::DOCUMENT_NODE) { + return new ChildAxis(info, fNode, this, nodeTest); + } + break; + } + case XQStep::DESCENDANT: { + if(fNode->getNodeType() == DOMNode::ELEMENT_NODE || fNode->getNodeType() == DOMNode::DOCUMENT_NODE) { + return new DescendantAxis(info, fNode, this, nodeTest); + } + break; + } + case XQStep::DESCENDANT_OR_SELF: { + return new DescendantOrSelfAxis(info, fNode, this, nodeTest); + break; + } + case XQStep::FOLLOWING: { + return new FollowingAxis(info, fNode, this, nodeTest); + } + case XQStep::FOLLOWING_SIBLING: { + return new FollowingSiblingAxis(info, fNode, this, nodeTest); + } + case XQStep::NAMESPACE: { + if(fNode->getNodeType() == DOMNode::ELEMENT_NODE) { + return new NamespaceAxis(info, fNode, this, nodeTest); + } + break; + } + case XQStep::PARENT: { + return new ParentAxis(info, fNode, this, nodeTest); + } + case XQStep::PRECEDING: { + return new PrecedingAxis(info, fNode, this, nodeTest); + } + case XQStep::PRECEDING_SIBLING: { + return new PrecedingSiblingAxis(info, fNode, this, nodeTest); + } + case XQStep::SELF: { + return nodeTest->filterResult(new SelfAxis(info, this), info); + } + } + + return 0; +} + +ATBooleanOrDerived::Ptr NodeImpl::dmIsId(const DynamicContext* context) const +{ + const DOMTypeInfo *typeInfo = 0; + + if(fNode->getNodeType() == DOMNode::ELEMENT_NODE) { + typeInfo = ((const DOMElement*)fNode)->getTypeInfo(); + } + else if(fNode->getNodeType() == DOMNode::ATTRIBUTE_NODE) { + typeInfo = ((const DOMAttr*)fNode)->getTypeInfo(); + } + + if(typeInfo != 0 && + XPath2Utils::equals(typeInfo->getName(), XMLUni::fgIDString) && + (XPath2Utils::equals(typeInfo->getNamespace(), SchemaSymbols::fgURI_SCHEMAFORSCHEMA) || + XPath2Utils::equals(typeInfo->getNamespace(), XMLUni::fgInfosetURIName))) + { + return context->getItemFactory()->createBoolean(true, context); + } + + return context->getItemFactory()->createBoolean(false, context); +} + +ATBooleanOrDerived::Ptr NodeImpl::dmIsIdRefs(const DynamicContext* context) const +{ + const DOMTypeInfo *typeInfo = 0; + + if(fNode->getNodeType() == DOMNode::ELEMENT_NODE) { + typeInfo = ((const DOMElement*)fNode)->getTypeInfo(); + } + else if(fNode->getNodeType() == DOMNode::ATTRIBUTE_NODE) { + typeInfo = ((const DOMAttr*)fNode)->getTypeInfo(); + } + + if(typeInfo != 0 && + (XPath2Utils::equals(typeInfo->getName(), XMLUni::fgIDRefString) || + XPath2Utils::equals(typeInfo->getName(), XMLUni::fgIDRefsString)) && + (XPath2Utils::equals(typeInfo->getNamespace(), SchemaSymbols::fgURI_SCHEMAFORSCHEMA) || + XPath2Utils::equals(typeInfo->getNamespace(), XMLUni::fgInfosetURIName))) + { + return context->getItemFactory()->createBoolean(true, context); + } + + return context->getItemFactory()->createBoolean(false, context); +} + +void NodeImpl::getMemberTypeUriAndName(const XMLCh*& uri, const XMLCh*& name) const +{ + short nodeType=fNode->getNodeType(); + try + { + if (nodeType == DOMNode::ELEMENT_NODE || + nodeType == DOMNode::ATTRIBUTE_NODE) + { + // check if we have PSVI info + DOMPSVITypeInfo* psviType=(DOMPSVITypeInfo*)const_cast(fNode)->getInterface(XMLUni::fgXercescInterfacePSVITypeInfo); + if(psviType) + { + // check if we have PSVI info for the content of a union-validated type + const XMLCh* memberName=psviType->getStringProperty(DOMPSVITypeInfo::PSVI_Member_Type_Definition_Name); + if(memberName) + { + uri=psviType->getStringProperty(DOMPSVITypeInfo::PSVI_Member_Type_Definition_Namespace); + name=memberName; + return; + } + } + } + } catch(DOMException&) { + // ignore it; the implementation of getInterface for Xerces < 2.6 will throw it + } + // we are not a union, return the type of the node + getTypeUriAndName(uri, name); +} + +void NodeImpl::getTypeUriAndName(const XMLCh*& uri, const XMLCh*& name) const +{ + short nodeType=fNode->getNodeType(); + if (nodeType == DOMNode::ELEMENT_NODE) { + // check if we have PSVI info + try + { + DOMPSVITypeInfo* psviType=(DOMPSVITypeInfo*)const_cast(fNode)->getInterface(XMLUni::fgXercescInterfacePSVITypeInfo); + if(psviType && psviType->getNumericProperty(DOMPSVITypeInfo::PSVI_Validity)==PSVIItem::VALIDITY_VALID) + { + uri=psviType->getStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Namespace); + name=psviType->getStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Name); + return; + } + } catch(DOMException&) { + // ignore it; the implementation of getInterface for Xerces < 2.6 will throw it + } + // we are xdt:untyped + uri=FunctionConstructor::XMLChXPath2DatatypesURI; + name=DocumentCacheParser::g_szUntyped; + return; + } + else if (nodeType == DOMNode::ATTRIBUTE_NODE) { + // check if we have PSVI info + try + { + DOMPSVITypeInfo* psviType=(DOMPSVITypeInfo*)const_cast(fNode)->getInterface(XMLUni::fgXercescInterfacePSVITypeInfo); + if(psviType && psviType->getNumericProperty(DOMPSVITypeInfo::PSVI_Validity)==PSVIItem::VALIDITY_VALID) + { + uri=psviType->getStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Namespace); + name=psviType->getStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Name); + return; + } + } catch(DOMException&) { + // ignore it; the implementation of getInterface for Xerces < 2.6 will throw it + } + // check if we have type informations coming from a DTD + const DOMTypeInfo* pTypeInfo=((DOMAttr*)fNode)->getTypeInfo(); + const XMLCh* szUri=pTypeInfo->getNamespace(); + if(szUri==0 || szUri[0]==0) + { + // in these cases, we are xs:* + const XMLCh* szName=pTypeInfo->getName(); + if(XPath2Utils::equals(szName,XMLUni::fgIDString) || + XPath2Utils::equals(szName,XMLUni::fgIDRefString) || + XPath2Utils::equals(szName,XMLUni::fgIDRefsString) || + XPath2Utils::equals(szName,XMLUni::fgEntityString) || + XPath2Utils::equals(szName,XMLUni::fgEntitiesString) || + XPath2Utils::equals(szName,XMLUni::fgNmTokenString) || + XPath2Utils::equals(szName,XMLUni::fgNmTokensString)) + { + uri=SchemaSymbols::fgURI_SCHEMAFORSCHEMA; + name=szName; + return; + } + } + // we are xdt:untypedAtomic + uri=FunctionConstructor::XMLChXPath2DatatypesURI; + name=ATUntypedAtomic::fgDT_UNTYPEDATOMIC; + return; + } + else if(nodeType == DOMNode::TEXT_NODE || + nodeType == DOMNode::CDATA_SECTION_NODE) { + uri=FunctionConstructor::XMLChXPath2DatatypesURI; + name=ATUntypedAtomic::fgDT_UNTYPEDATOMIC; + return; + } + XQThrow2(ItemException, X("NodeImpl::getTypeUriAndName"), X("Tried to get type informations on Node other than DOMElement, DOMAttribute or DOMText")); +} + +const XMLCh* NodeImpl::getTypeName() const { + const XMLCh* uri, *name; + getTypeUriAndName(uri,name); + return name; +} + +const XMLCh* NodeImpl::getTypeURI() const { + const XMLCh* uri, *name; + getTypeUriAndName(uri,name); + return uri; +} + diff --git a/src/lexer/FlexLexer.h b/src/lexer/FlexLexer.h new file mode 100644 index 00000000..23c22c4b --- /dev/null +++ b/src/lexer/FlexLexer.h @@ -0,0 +1,195 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: FlexLexer.h,v 1.6 2006/11/01 16:37:21 jpcs Exp $ + */ + +// FlexLexer.h -- define interfaces for lexical analyzer classes generated +// by flex + +// Copyright (c) 1993 The Regents of the University of California. +// All rights reserved. +// +// This code is derived from software contributed to Berkeley by +// Kent Williams and Tom Epperly. +// +// Redistribution and use in source and binary forms with or without +// modification are permitted provided that: (1) source distributions retain +// this entire copyright notice and comment, and (2) distributions including +// binaries display the following acknowledgement: ``This product includes +// software developed by the University of California, Berkeley and its +// contributors'' in the documentation or other materials provided with the +// distribution and in all advertising materials mentioning features or use +// of this software. Neither the name of the University nor the names of +// its contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. + +// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED +// WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +// This file defines FlexLexer, an abstract class which specifies the +// external interface provided to flex C++ lexer objects, and yyFlexLexer, +// which defines a particular lexer class. +// +// If you want to create multiple lexer classes, you use the -P flag +// to rename each yyFlexLexer to some other xxFlexLexer. You then +// include in your other sources once per lexer class: +// +// #undef yyFlexLexer +// #define yyFlexLexer xxFlexLexer +// #include +// +// #undef yyFlexLexer +// #define yyFlexLexer zzFlexLexer +// #include +// ... +// +// Since this header is generic for all sizes of flex scanners, you must +// define the type YY_CHAR before including it: +// +// typedef xxx YY_CHAR; +// #include +// ... +// +// where xxx = char for 7-bit scanners, unsigned char for 8-bit, and +// wchar_t for 16-bit. + +#ifndef __FLEX_LEXER_H +// Never included before - need to define base class. +#define __FLEX_LEXER_H +#include +#include + +extern "C++" { + +struct yy_buffer_state; +typedef int yy_state_type; + +class XQILLA_API FlexLexer { +public: + virtual ~FlexLexer() { } + + const YY_CHAR* YYText() { return yytext; } + int YYLeng() { return yyleng; } + + virtual void + yy_switch_to_buffer( struct yy_buffer_state* new_buffer ) = 0; + virtual struct yy_buffer_state* + yy_create_buffer( std::istream* s, int size ) = 0; + virtual void yy_delete_buffer( struct yy_buffer_state* b ) = 0; + virtual void yyrestart( std::istream* s ) = 0; + + virtual int yylex() = 0; + + int lineno() const { return yylineno; } + + int debug() const { return yy_flex_debug; } + void set_debug( int flag ) { yy_flex_debug = flag; } + +protected: + YY_CHAR* yytext; + int yyleng; + int yylineno; // only maintained if you use %option yylineno + int yy_flex_debug; // only has effect with -d or "%option debug" +}; + +} +#endif + +#if defined(yyFlexLexer) || ! defined(yyFlexLexerOnce) +// Either this is the first time through (yyFlexLexerOnce not defined), +// or this is a repeated include to define a different flavor of +// yyFlexLexer, as discussed in the flex man page. +#define yyFlexLexerOnce + +class XQILLA_API yyFlexLexer : public FlexLexer { +public: + // arg_yyin and arg_yyout default to the cin and cout, but we + // only make that assignment when initializing in yylex(). + yyFlexLexer( std::istream* arg_yyin = 0, std::ostream* arg_yyout = 0 ); + + virtual ~yyFlexLexer(); + + void yy_switch_to_buffer( struct yy_buffer_state* new_buffer ); + struct yy_buffer_state* yy_create_buffer( std::istream* s, int size ); + void yy_delete_buffer( struct yy_buffer_state* b ); + void yyrestart( std::istream* s ); + + virtual int yylex(); + +protected: + virtual int LexerInput( YY_CHAR* buf, int max_size ); + virtual void LexerOutput( const YY_CHAR* buf, int size ); + virtual void LexerError( const char* msg ); + + void yyunput( int c, YY_CHAR* buf_ptr ); + int yyinput(); + + void yy_load_buffer_state(); + void yy_init_buffer( struct yy_buffer_state* b, std::istream* s ); + void yy_flush_buffer( struct yy_buffer_state* b ); + + int yy_start_stack_ptr; + int yy_start_stack_depth; + int* yy_start_stack; + + void yy_push_state( int new_state ); + virtual void yy_pop_state(); + int yy_top_state(); + + yy_state_type yy_get_previous_state(); + yy_state_type yy_try_NUL_trans( yy_state_type current_state ); + int yy_get_next_buffer(); + + std::istream* yyin; // input source for default LexerInput + std::ostream* yyout; // output sink for default LexerOutput + + struct yy_buffer_state* yy_current_buffer; + + // yy_hold_char holds the character lost when yytext is formed. + YY_CHAR yy_hold_char; + + // Number of characters read into yy_ch_buf. + int yy_n_chars; + + // Points to current character in buffer. + YY_CHAR* yy_c_buf_p; + + int yy_init; // whether we need to initialize + int yy_start; // start state number + + // Flag which is used to allow yywrap()'s to do buffer switches + // instead of setting up a fresh yyin. A bit of a hack ... + int yy_did_buffer_switch_on_eof; + + // The following are not always needed, but may be depending + // on use of certain flex features (like REJECT or yymore()). + + yy_state_type yy_last_accepting_state; + YY_CHAR* yy_last_accepting_cpos; + + yy_state_type* yy_state_buf; + yy_state_type* yy_state_ptr; + + YY_CHAR* yy_full_match; + int* yy_full_state; + int yy_full_lp; + + int yy_lp; + int yy_looking_for_trail_begin; + + int yy_more_flag; + int yy_more_len; + int yy_more_offset; + int yy_prev_more_offset; +}; + +#endif diff --git a/src/lexer/XQLexer.cpp b/src/lexer/XQLexer.cpp new file mode 100644 index 00000000..57a94ddf --- /dev/null +++ b/src/lexer/XQLexer.cpp @@ -0,0 +1,16010 @@ +#define yyFlexLexer xqFlexLexer + +#line 4 "../src/lexer/XQLexer.cpp" +/* A lexical scanner generated by flex */ + +/* Scanner skeleton version: + * $Header: /cvsroot/xqilla/xqilla/src/lexer/XQLexer.cpp,v 1.6 2006/11/01 16:37:21 jpcs Exp $ + */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 + + + +/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ +#ifdef c_plusplus +#ifndef __cplusplus +#define __cplusplus +#endif +#endif + + +#ifdef __cplusplus + +#include +#include + +/* Use prototypes in function declarations. */ +#define YY_USE_PROTOS + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +#if __STDC__ + +#define YY_USE_PROTOS +#define YY_USE_CONST + +#endif /* __STDC__ */ +#endif /* ! __cplusplus */ + +#ifdef __TURBOC__ + #pragma warn -rch + #pragma warn -use +#include +#include +#define YY_USE_CONST +#define YY_USE_PROTOS +#endif + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + + +#ifdef YY_USE_PROTOS +#define YY_PROTO(proto) proto +#else +#define YY_PROTO(proto) () +#endif + +/* Define the YY_CHAR type. */ +#include +typedef unsigned short YY_CHAR; + +/* Promotes a YY_CHAR to an unsigned integer for use as an array index. */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned short) c) + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN yy_start = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START ((yy_start - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart( yyin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#define YY_BUF_SIZE 16384 + +typedef struct yy_buffer_state *YY_BUFFER_STATE; + +extern int yyleng; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + +/* The funky do-while in the following #define is used to turn the definition + * int a single C statement (which needs a semi-colon terminator). This + * avoids problems with code like: + * + * if ( condition_holds ) + * yyless( 5 ); + * else + * do_something_else(); + * + * Prior to using the do-while the compiler would get upset at the + * "else" because it interpreted the "if" statement as being all + * done when it reached the ';' after the yyless() call. + */ + +/* Return all but the first 'n' matched characters back to the input stream. */ + +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + *yy_cp = yy_hold_char; \ + YY_RESTORE_YY_MORE_OFFSET \ + yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, yytext_ptr ) + +/* The following is because we cannot portably get our hands on size_t + * (without autoconf's help, which isn't available because we want + * flex-generated scanners to compile on their own). + */ +typedef unsigned int yy_size_t; + + +struct yy_buffer_state + { + std::istream* yy_input_file; + + YY_CHAR *yy_ch_buf; /* input buffer */ + YY_CHAR *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + }; + + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + */ +#define YY_CURRENT_BUFFER yy_current_buffer + + + +static void *yy_flex_alloc YY_PROTO(( yy_size_t )); +static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); +static void yy_flex_free YY_PROTO(( void * )); + +#define yy_new_buffer yy_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! yy_current_buffer ) \ + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ + yy_current_buffer->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! yy_current_buffer ) \ + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ + yy_current_buffer->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) + + +#define YY_USES_REJECT + +#define yywrap() 1 +#define YY_SKIP_YYWRAP +#define yytext_ptr yytext + +#include +int yyFlexLexer::yylex() + { + LexerError( "yyFlexLexer::yylex invoked but %option yyclass used" ); + return 0; + } + +#define YY_DECL int XQLexer::yylex() + + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + yytext_ptr = yy_bp; \ + yyleng = (int) (yy_cp - yy_bp); \ + yy_hold_char = *yy_cp; \ + *yy_cp = (YY_CHAR) '\0'; \ + yy_c_buf_p = yy_cp; + +#define YY_NUM_RULES 243 +#define YY_END_OF_BUFFER 244 +static yyconst short int yy_acclist[1292] = + { 0, + 244, 242, 243, 1, 242, 243, 140, 242, 243, 242, + 243, 35, 242, 243, 242, 243, 97, 242, 243, 9, + 242, 243, 11, 242, 243, 100, 242, 243, 95, 242, + 243, 98, 242, 243, 6, 242, 243, 102, 242, 243, + 5, 242, 243, 74, 242, 243, 54, 242, 243, 81, + 242, 243, 241, 242, 243, 241, 242, 243, 241, 242, + 243, 241, 242, 243, 241, 242, 243, 241, 242, 243, + 241, 242, 243, 241, 242, 243, 241, 242, 243, 241, + 242, 243, 241, 242, 243, 241, 242, 243, 241, 242, + 243, 241, 242, 243, 241, 242, 243, 241, 242, 243, + + 241, 242, 243, 75, 242, 243, 55, 242, 243, 241, + 242, 243, 241, 242, 243, 239, 242, 243, 239, 242, + 243, 54, 239, 242, 243, 75, 239, 242, 243, 239, + 242, 243, 239, 242, 243, 233, 242, 243, 233, 242, + 243, 233, 242, 243, 242, 243, 242, 243, 223, 239, + 242, 243, 224, 239, 242, 243, 241, 242, 243, 241, + 242, 243, 241, 242, 243, 242, 243, 231, 242, 243, + 242, 243, 242, 243, 242, 243, 11, 242, 243, 242, + 243, 54, 242, 243, 109, 242, 243, 119, 242, 243, + 199, 242, 243, 124, 242, 243, 200, 242, 243, 242, + + 243, 242, 243, 242, 243, 242, 243, 242, 243, 242, + 243, 242, 243, 242, 243, 242, 243, 242, 243, 242, + 243, 242, 243, 242, 243, 242, 243, 242, 243, 242, + 243, 242, 243, 186, 242, 243, 97, 242, 243, 242, + 243, 241, 242, 243, 241, 242, 243, 241, 242, 243, + 241, 242, 243, 241, 242, 243, 241, 242, 243, 241, + 242, 243, 241, 242, 243, 241, 242, 243, 241, 242, + 243, 241, 242, 243, 241, 242, 243, 241, 242, 243, + 241, 242, 243, 241, 242, 243, 241, 242, 243, 241, + 242, 243, 205, 242, 243, 206, 242, 243, 206, 242, + + 243, 206, 242, 243, 242, 243, 242, 243, 242, 243, + 242, 243, 212, 242, 243, 242, 243, 242, 243, 242, + 243, 223, 242, 243, 224, 242, 243, 242, 243, 225, + 242, 243, 222, 242, 243, 9, 242, 243, 241, 242, + 243, 241, 242, 243, 219, 242, 243, 238, 242, 243, + 238, 242, 243, 238, 242, 243, 238, 242, 243, 1, + 220, 242, 243, 220, 242, 243, 220, 242, 243, 11, + 220, 242, 243, 100, 220, 242, 243, 199, 220, 242, + 243, 220, 242, 243, 241, 242, 243, 71, 242, 243, + 71, 242, 243, 71, 242, 243, 72, 242, 243, 242, + + 243, 242, 243, 242, 243, 242, 243, 242, 243, 242, + 243, 242, 243, 242, 243, 242, 243, 242, 243, 242, + 243, 242, 243, 242, 243, 242, 243, 242, 243, 242, + 243, 242, 243, 242, 243, 242, 243, 57, 242, 243, + 242, 243, 217, 242, 243, 218, 242, 243, 242, 243, + 242, 243, 242, 243, 242, 243, 220, 242, 243, 220, + 242, 243, 97, 220, 242, 243, 9, 220, 242, 243, + 95, 220, 242, 243, 220, 242, 243, 220, 242, 243, + 220, 242, 243, 1, 12, 12, 70, 2, 7, 3, + 101, 3, 5, 52, 240, 241, 241, 241, 241, 241, + + 241, 241, 99, 241, 241, 241, 241, 241, 241, 241, + 241, 96, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 226, + 229, 230, 233, 233, 233, 233, 233, 233, 234, 236, + 237, 241, 241, 241, 241, 241, 241, 231, 128, 138, + 107, 126, 125, 117, 118, 195, 99, 111, 112, 113, + 122, 123, 114, 115, 116, 132, 135, 137, 241, 195, + 241, 99, 241, 241, 241, 241, 241, 241, 241, 111, + 241, 241, 241, 112, 241, 113, 241, 241, 122, 241, + 123, 241, 241, 114, 241, 115, 241, 241, 116, 241, + + 241, 197, 241, 132, 241, 241, 241, 241, 241, 241, + 241, 241, 135, 241, 241, 241, 241, 206, 206, 206, + 206, 206, 206, 221, 241, 241, 232, 71, 71, 71, + 71, 71, 71, 72, 72, 73, 131, 99, 70, 41, + 10, 10, 10, 3, 4, 8, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 36, + 241, 241, 37, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 235, 241, 241, 241, 160, 106, 158, 108, 36, 37, + 127, 106, 241, 241, 241, 241, 108, 241, 241, 241, + + 241, 241, 241, 241, 241, 241, 241, 241, 241, 127, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 71, 71, 71, 72, 58, + 10, 10, 10, 10, 10, 10, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 39, 241, 241, 241, 241, 241, 241, + 228, 227, 241, 241, 241, 241, 241, 241, 198, 193, + 104, 180, 120, 165, 103, 241, 198, 241, 193, 241, + 241, 241, 241, 104, 241, 241, 241, 241, 241, 120, + + 241, 241, 241, 216, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 103, 241, 241, 241, 241, 241, 71, + 71, 71, 71, 71, 71, 241, 241, 241, 241, 241, + 241, 241, 241, 40, 241, 241, 241, 241, 241, 48, + 240, 241, 241, 241, 241, 241, 38, 241, 47, 240, + 66, 241, 241, 241, 241, 28, 129, 38, 189, 181, + 194, 185, 187, 182, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 48, 129, 241, 241, 241, + 241, 241, 241, 47, 194, 241, 185, 241, 187, 241, + 209, 241, 24, 30, 241, 241, 241, 241, 241, 241, + + 241, 241, 32, 241, 31, 241, 241, 241, 241, 241, + 241, 241, 93, 241, 241, 241, 78, 241, 155, 110, + 173, 139, 164, 161, 133, 130, 163, 241, 241, 241, + 241, 241, 241, 110, 241, 241, 241, 241, 241, 241, + 133, 241, 241, 241, 130, 241, 241, 34, 33, 14, + 59, 51, 241, 241, 85, 241, 13, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, + 179, 204, 177, 190, 241, 241, 241, 241, 241, 241, + 241, 241, 241, 241, 241, 241, 241, 23, 213, 241, + 79, 26, 241, 241, 46, 240, 69, 241, 241, 42, + + 240, 61, 241, 241, 76, 90, 241, 241, 241, 241, + 241, 241, 56, 241, 157, 178, 154, 192, 162, 105, + 196, 151, 188, 167, 241, 192, 241, 46, 241, 42, + 241, 105, 241, 241, 196, 241, 241, 241, 241, 241, + 241, 208, 210, 80, 27, 20, 16, 18, 15, 29, + 241, 241, 241, 241, 65,16448,16448,16448, 241, 241, + 241, 241, 241, 241, 241, 241, 159, 202, 201, 166, + 121, 141, 168, 134, 183, 191, 142, 241, 241, 241, + 241, 121, 241, 241, 134, 241, 241, 241, 207, 25, + 22, 241, 83, 43, 240, 62, 241, 241,16448,16448, + + 8256,16448,16448,16448,16448, 241, 241, 241, 241, 241, + 60, 241, 77, 203, 136, 184, 43, 241, 241, 136, + 241, 241, 241, 241, 214, 241,16447,16447,16447, 84, + 241, 241,16448,16448,16448, 241, 89, 94, 241, 92, + 241, 241, 241, 241, 241, 241, 241, 241, 211, 53, + 241,16447,16447, 8255,16447,16447,16447,16447, 241, 87, + 241,16448,16448,16448,16448,16448,16448, 241, 241, 241, + 241, 241, 172, 241, 241, 241, 241, 241, 17, 241, + 16447,16447,16447, 241, 241, 241, 241, 241, 241, 241, + 149, 241, 241, 241, 241, 241, 241,16447,16447,16447, + + 16447,16447,16447, 241, 49, 240, 241, 241, 241, 241, + 241, 143, 156, 170, 152, 49, 215, 241, 241, 241, + 241, 21, 241, 241, 241, 241, 241, 241, 44, 240, + 145, 174, 169, 241, 241, 44, 19, 241, 241, 241, + 241, 241, 241, 144, 150, 241, 241, 241, 241, 241, + 241, 45, 240, 171, 153, 241, 45, 82, 241, 241, + 146, 175, 241, 88, 91, 241, 241, 86, 241, 147, + 241, 241, 241, 241, 148, 241, 50, 240, 67, 176, + 50,16452,16452,16452,16452,16452, 8260,16452,16452,16452, + 16452 + + } ; + +static yyconst short int yy_accept[1709] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 4, 7, 10, 12, 15, 17, 20, 23, + 26, 29, 32, 35, 38, 41, 44, 47, 50, 53, + 56, 59, 62, 65, 68, 71, 74, 77, 80, 83, + + 86, 89, 92, 95, 98, 101, 104, 107, 110, 113, + 116, 119, 122, 126, 130, 133, 136, 139, 142, 145, + 147, 149, 153, 157, 160, 163, 166, 168, 171, 173, + 175, 177, 180, 182, 185, 188, 191, 194, 197, 200, + 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, + 222, 224, 226, 228, 230, 232, 234, 237, 240, 242, + 245, 248, 251, 254, 257, 260, 263, 266, 269, 272, + 275, 278, 281, 284, 287, 290, 293, 296, 299, 302, + 305, 307, 309, 311, 313, 316, 318, 320, 322, 325, + 328, 330, 333, 336, 339, 342, 345, 348, 351, 354, + + 357, 360, 364, 367, 370, 374, 378, 382, 385, 388, + 391, 394, 397, 400, 402, 404, 406, 408, 410, 412, + 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, + 434, 436, 438, 441, 443, 446, 449, 451, 453, 455, + 457, 460, 463, 467, 471, 475, 478, 481, 484, 485, + 485, 486, 486, 486, 486, 487, 488, 489, 489, 489, + 489, 490, 491, 492, 493, 494, 494, 494, 495, 495, + 496, 497, 498, 498, 499, 500, 501, 502, 503, 505, + 506, 507, 508, 509, 510, 511, 512, 514, 515, 516, + 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, + + 527, 528, 529, 530, 530, 530, 530, 530, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 539, 539, + 539, 540, 541, 542, 543, 544, 544, 545, 546, 547, + 548, 548, 549, 550, 551, 552, 553, 554, 555, 556, + 556, 556, 557, 558, 558, 558, 558, 558, 558, 558, + 558, 559, 559, 559, 559, 559, 560, 561, 561, 562, + 563, 563, 564, 564, 565, 565, 566, 566, 566, 567, + 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, + 568, 568, 568, 568, 568, 568, 568, 569, 570, 572, + 574, 575, 576, 577, 578, 579, 580, 582, 583, 584, + + 586, 588, 589, 591, 593, 594, 596, 598, 599, 601, + 602, 604, 606, 607, 608, 609, 610, 611, 612, 613, + 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, + 624, 624, 624, 624, 624, 624, 624, 625, 626, 627, + 628, 629, 630, 630, 631, 632, 633, 634, 635, 636, + 636, 637, 637, 637, 637, 637, 637, 637, 637, 637, + 637, 637, 637, 637, 637, 637, 637, 637, 637, 637, + 637, 637, 638, 639, 639, 639, 639, 639, 639, 639, + 639, 639, 639, 639, 639, 639, 639, 639, 639, 640, + 641, 642, 643, 644, 645, 645, 646, 646, 646, 647, + + 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, + 658, 659, 660, 662, 663, 665, 666, 667, 668, 669, + 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, + 680, 681, 681, 681, 681, 681, 681, 681, 681, 682, + 683, 684, 685, 686, 687, 688, 688, 688, 688, 688, + 688, 688, 688, 688, 688, 689, 689, 689, 689, 689, + 689, 689, 690, 690, 690, 690, 690, 690, 690, 691, + 691, 691, 692, 692, 692, 692, 692, 692, 692, 692, + 692, 692, 692, 692, 692, 692, 692, 692, 692, 692, + 692, 692, 692, 692, 692, 692, 692, 694, 695, 696, + + 697, 699, 700, 701, 702, 703, 704, 705, 706, 707, + 708, 709, 710, 712, 713, 714, 715, 716, 717, 718, + 719, 720, 721, 722, 723, 724, 725, 725, 725, 725, + 725, 725, 725, 725, 726, 727, 728, 729, 730, 730, + 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, + 730, 730, 730, 730, 730, 730, 730, 730, 731, 731, + 731, 731, 731, 731, 731, 731, 731, 731, 731, 731, + 731, 731, 732, 733, 734, 735, 736, 737, 737, 737, + 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, + 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, + + 758, 759, 760, 761, 762, 763, 764, 766, 767, 768, + 769, 770, 771, 772, 772, 772, 773, 773, 774, 775, + 776, 777, 778, 779, 779, 779, 779, 779, 779, 779, + 779, 780, 781, 781, 781, 781, 781, 781, 781, 782, + 782, 782, 782, 782, 782, 783, 783, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, + 784, 785, 785, 785, 785, 785, 785, 786, 786, 786, + 786, 786, 786, 786, 786, 786, 786, 787, 789, 791, + 792, 793, 794, 796, 797, 798, 799, 800, 802, 803, + 804, 806, 807, 808, 809, 810, 811, 812, 813, 814, + + 816, 817, 818, 819, 819, 819, 819, 819, 819, 819, + 819, 819, 820, 821, 822, 823, 824, 825, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 826, 826, + 826, 826, 826, 826, 826, 826, 826, 826, 827, 828, + 829, 830, 831, 832, 833, 834, 836, 837, 838, 839, + 840, 840, 842, 843, 844, 845, 846, 847, 849, 849, + 849, 849, 851, 852, 853, 854, 855, 856, 856, 856, + 856, 856, 856, 856, 856, 856, 856, 856, 856, 856, + 856, 856, 856, 857, 857, 857, 857, 857, 857, 857, + + 857, 857, 857, 857, 857, 857, 858, 858, 858, 858, + 858, 858, 858, 859, 859, 859, 860, 861, 862, 863, + 863, 863, 864, 864, 864, 864, 865, 866, 867, 868, + 869, 870, 871, 872, 873, 874, 875, 876, 876, 877, + 879, 880, 881, 882, 883, 884, 884, 885, 887, 889, + 891, 891, 891, 891, 892, 892, 892, 892, 892, 893, + 893, 893, 893, 893, 893, 893, 893, 894, 894, 894, + 894, 894, 894, 894, 894, 894, 894, 894, 895, 895, + 895, 895, 895, 896, 897, 897, 897, 898, 899, 900, + 901, 902, 903, 905, 907, 908, 909, 910, 911, 912, + + 913, 913, 914, 915, 916, 917, 919, 919, 919, 919, + 920, 920, 920, 920, 920, 920, 920, 920, 920, 920, + 920, 920, 920, 920, 920, 921, 921, 921, 921, 921, + 921, 922, 922, 923, 924, 924, 924, 925, 925, 925, + 926, 926, 926, 927, 927, 927, 928, 928, 928, 928, + 928, 928, 929, 930, 931, 932, 933, 934, 936, 937, + 938, 939, 940, 941, 943, 944, 945, 947, 947, 947, + 947, 947, 947, 947, 947, 948, 948, 948, 949, 950, + 950, 950, 950, 950, 950, 950, 950, 950, 950, 951, + 951, 951, 951, 952, 953, 953, 954, 955, 955, 956, + + 957, 959, 960, 961, 962, 963, 964, 965, 965, 965, + 966, 967, 968, 969, 970, 971, 971, 971, 971, 971, + 972, 972, 972, 972, 972, 972, 973, 973, 973, 973, + 973, 973, 974, 974, 974, 974, 974, 974, 974, 975, + 975, 975, 975, 975, 975, 975, 975, 975, 975, 975, + 975, 975, 975, 976, 977, 978, 979, 980, 981, 982, + 983, 984, 985, 986, 987, 988, 989, 989, 989, 990, + 990, 990, 990, 991, 991, 992, 992, 993, 993, 993, + 993, 993, 993, 993, 993, 993, 993, 993, 993, 994, + 995, 995, 997, 998, 999, 1000, 1000, 1002, 1003, 1004, + + 1005, 1005, 1006, 1006, 1007, 1008, 1009, 1010, 1011, 1012, + 1013, 1015, 1015, 1016, 1016, 1017, 1018, 1018, 1018, 1019, + 1019, 1019, 1019, 1019, 1020, 1020, 1021, 1021, 1022, 1022, + 1023, 1023, 1023, 1024, 1024, 1024, 1025, 1025, 1025, 1025, + 1025, 1025, 1025, 1025, 1025, 1025, 1026, 1028, 1028, 1029, + 1030, 1030, 1031, 1032, 1034, 1035, 1037, 1038, 1039, 1040, + 1041, 1042, 1042, 1043, 1043, 1043, 1044, 1045, 1045, 1046, + 1047, 1047, 1047, 1047, 1048, 1048, 1049, 1050, 1051, 1051, + 1051, 1052, 1052, 1053, 1054, 1054, 1055, 1056, 1057, 1058, + 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, + + 1069, 1069, 1069, 1070, 1070, 1070, 1071, 1071, 1071, 1072, + 1073, 1074, 1074, 1075, 1076, 1077, 1078, 1078, 1078, 1078, + 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1079, 1080, + 1081, 1082, 1084, 1085, 1087, 1088, 1089, 1090, 1090, 1090, + 1091, 1091, 1091, 1091, 1092, 1092, 1092, 1092, 1093, 1094, + 1094, 1096, 1096, 1097, 1098, 1099, 1099, 1100, 1101, 1101, + 1102, 1103, 1104, 1105, 1106, 1106, 1107, 1107, 1107, 1107, + 1107, 1108, 1108, 1109, 1110, 1111, 1113, 1113, 1114, 1114, + 1114, 1115, 1115, 1115, 1116, 1117, 1117, 1117, 1117, 1117, + 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1118, + + 1119, 1120, 1122, 1123, 1124, 1125, 1126, 1126, 1126, 1126, + 1126, 1126, 1126, 1127, 1127, 1128, 1129, 1130, 1131, 1131, + 1132, 1132, 1133, 1134, 1135, 1136, 1136, 1137, 1138, 1138, + 1139, 1139, 1140, 1141, 1142, 1143, 1144, 1144, 1144, 1144, + 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, + 1144, 1144, 1144, 1144, 1145, 1146, 1147, 1148, 1149, 1150, + 1150, 1150, 1150, 1150, 1151, 1152, 1152, 1153, 1154, 1154, + 1155, 1156, 1157, 1158, 1159, 1159, 1160, 1161, 1162, 1163, + 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, + 1173, 1173, 1173, 1173, 1173, 1174, 1174, 1174, 1174, 1174, + + 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1175, 1176, + 1177, 1178, 1179, 1179, 1180, 1180, 1181, 1182, 1183, 1184, + 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1191, 1191, 1191, + 1191, 1191, 1191, 1191, 1192, 1192, 1192, 1192, 1192, 1192, + 1192, 1192, 1192, 1192, 1193, 1194, 1195, 1196, 1197, 1197, + 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1205, + 1207, 1208, 1209, 1210, 1211, 1212, 1212, 1213, 1213, 1213, + 1214, 1214, 1214, 1214, 1215, 1216, 1216, 1216, 1216, 1216, + 1216, 1216, 1216, 1217, 1219, 1220, 1221, 1222, 1223, 1223, + 1224, 1225, 1226, 1227, 1228, 1229, 1229, 1231, 1231, 1231, + + 1231, 1231, 1232, 1233, 1234, 1234, 1234, 1234, 1234, 1234, + 1235, 1236, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, + 1244, 1245, 1245, 1245, 1245, 1245, 1246, 1246, 1246, 1246, + 1247, 1248, 1248, 1248, 1249, 1250, 1251, 1252, 1252, 1254, + 1254, 1254, 1254, 1254, 1254, 1255, 1256, 1257, 1257, 1258, + 1258, 1259, 1260, 1260, 1260, 1260, 1260, 1261, 1261, 1261, + 1261, 1262, 1263, 1264, 1264, 1264, 1264, 1265, 1265, 1266, + 1267, 1267, 1267, 1267, 1268, 1268, 1269, 1270, 1270, 1271, + 1271, 1272, 1273, 1273, 1273, 1274, 1275, 1276, 1276, 1277, + 1277, 1279, 1280, 1281, 1281, 1282, 1283, 1284, 1285, 1285, + + 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1292 + } ; + +static yyconst unsigned short yy_ec[65536] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 30, + 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 34, 34, 35, 34, 34, 34, 34, 34, 34, + 36, 37, 38, 39, 40, 39, 41, 42, 43, 44, + + 45, 46, 47, 48, 49, 50, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 50, 65, 66, 67, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 68, 39, 39, 39, 39, 39, 39, 39, + 39, 69, 69, 69, 69, 69, 69, 69, 69, 69, + + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 39, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 39, 71, 71, 71, + 71, 71, 71, 71, 71, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, + + 72, 72, 72, 72, 72, 39, 39, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, 39, 39, + 74, 74, 74, 74, 74, 74, 74, 74, 39, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, + 75, 75, 39, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, + + 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, + 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, + 76, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 39, 39, 39, 78, + + 78, 39, 39, 39, 39, 79, 79, 79, 79, 79, + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, + 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, + 79, 79, 79, 79, 79, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 80, 80, 80, 80, 80, 80, 80, 80, 80, + + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 81, 81, + + 81, 81, 81, 81, 81, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 82, + 83, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + 84, 84, 84, 84, 84, 84, 84, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 85, 85, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 86, 87, 88, 88, 88, 39, 89, 39, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 39, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, + 91, 91, 91, 91, 39, 92, 92, 92, 92, 92, + 92, 92, 39, 39, 39, 93, 39, 94, 39, 95, + 39, 96, 39, 97, 97, 97, 97, 97, 97, 97, + + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, + 97, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 39, 99, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, + + 99, 99, 99, 39, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 39, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 39, 102, 102, 102, 102, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 39, 39, 104, 104, 39, 39, 105, 105, 39, 39, + 39, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 39, + 39, 107, 107, 107, 107, 107, 107, 107, 107, 39, + 39, 108, 108, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 39, 39, 110, 39, + 39, 39, 39, 39, 39, 39, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 39, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 39, 114, 114, 114, 39, + 115, 39, 116, 116, 39, 117, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 39, 39, 39, 39, 39, 119, + 119, 119, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 120, 120, 39, 39, 39, 39, 39, 121, + + 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, + 123, 123, 123, 123, 123, 123, 123, 123, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 39, 39, 39, 39, 39, 39, 125, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + + 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, + 126, 126, 126, 126, 126, 126, 126, 126, 126, 39, + 39, 127, 127, 127, 127, 127, 39, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 39, 129, 129, 129, 129, 39, 130, 131, + 131, 131, 131, 131, 131, 131, 132, 132, 132, 133, + 133, 133, 133, 133, 134, 134, 135, 135, 39, 136, + 136, 136, 136, 39, 39, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 138, 138, 138, 39, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 39, 39, 140, 141, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, + 143, 39, 39, 39, 144, 144, 144, 144, 39, 39, + 39, 145, 145, 145, 145, 145, 145, 145, 145, 145, + + 145, 146, 146, 39, 39, 147, 147, 147, 147, 147, + 147, 147, 147, 147, 147, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 148, 148, 148, 39, 149, 149, 149, 149, + 149, 149, 149, 149, 39, 39, 150, 150, 39, 39, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 39, 152, 152, 152, 152, 152, 152, 152, + 39, 153, 39, 39, 39, 154, 154, 154, 154, 39, + 39, 155, 39, 156, 157, 158, 158, 158, 158, 158, + + 39, 39, 159, 159, 39, 39, 160, 160, 160, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 161, 39, + 39, 39, 39, 162, 162, 39, 163, 163, 163, 164, + 164, 39, 39, 165, 165, 165, 165, 165, 165, 165, + 165, 165, 165, 166, 166, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 167, 39, 39, 168, 168, 168, 168, 168, 168, + 39, 39, 39, 39, 169, 169, 39, 39, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, + + 39, 171, 171, 171, 171, 171, 171, 171, 39, 172, + 172, 39, 173, 173, 39, 174, 174, 39, 39, 175, + 39, 176, 177, 178, 178, 178, 39, 39, 39, 39, + 179, 179, 39, 39, 180, 180, 180, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 181, 181, + 181, 181, 39, 182, 39, 39, 39, 39, 39, 39, + 39, 183, 183, 183, 183, 183, 183, 183, 183, 183, + 183, 184, 184, 185, 185, 185, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 186, 186, + 186, 39, 187, 187, 187, 187, 187, 187, 187, 39, + + 188, 39, 189, 189, 189, 39, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 190, 190, 190, 190, 39, 191, + 191, 191, 191, 191, 191, 191, 39, 192, 192, 39, + 193, 193, 193, 193, 193, 39, 39, 194, 195, 196, + 196, 196, 196, 196, 196, 196, 196, 39, 197, 197, + 197, 39, 198, 198, 198, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 199, 39, 39, 39, 39, 39, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 201, 201, 201, 39, + 202, 202, 202, 202, 202, 202, 202, 202, 39, 39, + 203, 203, 39, 39, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, + 204, 204, 204, 204, 204, 204, 39, 205, 205, 205, + 205, 205, 205, 205, 39, 206, 206, 39, 39, 207, + 207, 207, 207, 39, 39, 208, 209, 210, 210, 210, + 210, 210, 210, 39, 39, 39, 211, 211, 39, 39, + 212, 212, 212, 39, 39, 39, 39, 39, 39, 39, + + 39, 213, 213, 39, 39, 39, 39, 214, 214, 39, + 215, 215, 215, 39, 39, 39, 39, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 217, 217, 39, 218, 218, + 218, 218, 218, 218, 39, 39, 39, 219, 219, 219, + 39, 220, 220, 220, 220, 39, 39, 39, 221, 221, + 39, 222, 39, 223, 223, 39, 39, 39, 224, 224, + 39, 39, 39, 225, 225, 225, 39, 39, 39, 226, + 226, 226, 226, 226, 226, 226, 226, 39, 227, 227, + + 227, 39, 39, 39, 39, 228, 228, 228, 228, 228, + 39, 39, 39, 229, 229, 229, 39, 230, 230, 230, + 230, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 231, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 233, 233, 233, 39, 234, 234, 234, 234, + 234, 234, 234, 234, 39, 235, 235, 235, 39, 236, + 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, + + 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 39, 237, 237, 237, 237, 237, 237, 237, + 237, 237, 237, 39, 238, 238, 238, 238, 238, 39, + 39, 39, 39, 239, 239, 239, 239, 239, 239, 239, + 39, 240, 240, 240, 39, 241, 241, 241, 241, 39, + 39, 39, 39, 39, 39, 39, 242, 242, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 243, 243, 39, + 39, 39, 39, 244, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 245, 245, 39, 246, 246, 246, 246, 246, 246, + 246, 246, 39, 247, 247, 247, 39, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 39, 249, 249, 249, 249, 249, 249, 249, 249, 249, + 249, 39, 250, 250, 250, 250, 250, 39, 39, 39, + 39, 251, 251, 251, 251, 251, 251, 251, 39, 252, + 252, 252, 39, 253, 253, 253, 253, 39, 39, 39, + 39, 39, 39, 39, 254, 254, 39, 39, 39, 39, + 39, 39, 39, 255, 39, 256, 256, 39, 39, 39, + + 39, 257, 257, 257, 257, 257, 257, 257, 257, 257, + 257, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 258, + 258, 39, 259, 259, 259, 259, 259, 259, 259, 259, + 39, 260, 260, 260, 39, 261, 261, 261, 261, 261, + 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, + 261, 261, 261, 261, 261, 261, 261, 261, 39, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 39, 39, 39, 39, 263, + 263, 263, 263, 263, 263, 39, 39, 264, 264, 264, + + 39, 265, 265, 265, 265, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 266, 39, 39, 39, 39, 39, + 39, 39, 39, 267, 267, 39, 39, 39, 39, 268, + 268, 268, 268, 268, 268, 268, 268, 268, 268, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, + + 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, + 39, 270, 271, 272, 272, 273, 273, 273, 273, 273, + 273, 273, 39, 39, 39, 39, 39, 274, 274, 274, + 274, 274, 274, 275, 276, 276, 276, 276, 276, 276, + 276, 276, 39, 277, 277, 277, 277, 277, 277, 277, + 277, 277, 277, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 278, 278, 39, 279, 39, 39, 280, 280, + 39, 281, 39, 39, 282, 39, 39, 39, 39, 39, + 39, 283, 283, 283, 283, 39, 284, 284, 284, 284, + 284, 284, 284, 39, 285, 285, 285, 39, 286, 39, + 287, 39, 39, 288, 288, 39, 289, 289, 39, 290, + 291, 292, 292, 293, 293, 293, 293, 293, 293, 39, + 294, 294, 295, 39, 39, 296, 296, 296, 296, 296, + 39, 297, 39, 298, 298, 298, 298, 298, 298, 39, + 39, 299, 299, 299, 299, 299, 299, 299, 299, 299, + + 299, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 300, 300, 39, 39, 39, 39, 39, + 39, 301, 301, 301, 301, 301, 301, 301, 301, 301, + 301, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 302, 39, 303, 39, 304, 39, 39, 39, + + 39, 305, 306, 307, 307, 307, 307, 307, 307, 307, + 307, 39, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 39, 39, 39, 39, 39, + 39, 39, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 39, 310, 310, 310, 310, 310, 310, 39, + 39, 39, 39, 311, 311, 311, 311, 311, 311, 39, + 312, 39, 313, 313, 313, 313, 313, 313, 313, 313, + + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 39, 39, 39, 314, 314, 314, 314, + 314, 314, 314, 39, 315, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 317, 317, 317, 317, 317, 317, 317, 317, + 317, 317, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 318, 39, 319, 319, 39, 320, 320, 320, 39, + 321, 39, 322, 322, 39, 323, 323, 323, 323, 323, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 324, 39, 325, 39, 326, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 327, 39, 328, + 39, 329, 39, 39, 39, 330, 330, 39, 39, 39, + 331, 39, 39, 39, 39, 39, 332, 332, 332, 39, + 333, 39, 334, 39, 335, 39, 336, 39, 39, 39, + 337, 337, 39, 39, 39, 338, 338, 39, 339, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 340, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 341, + 39, 39, 342, 39, 39, 343, 343, 39, 39, 39, + 39, 39, 39, 39, 344, 344, 39, 345, 39, 346, + 346, 346, 346, 346, 346, 346, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 347, 39, 39, 39, + 39, 348, 39, 39, 39, 39, 39, 39, 39, 39, + + 349, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, + 350, 350, 350, 350, 350, 39, 39, 39, 39, 351, + 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, + 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, + 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, + 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, + 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, + 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, + + 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, + 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, + 351, 351, 351, 351, 351, 351, 351, 351, 351, 39, + 39, 39, 39, 39, 39, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, + 352, 352, 352, 352, 352, 352, 352, 39, 39, 353, + 353, 353, 353, 353, 353, 39, 39, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + 354, 354, 354, 354, 354, 354, 354, 354, 354, 354, + + 354, 354, 354, 354, 354, 39, 39, 355, 355, 355, + 355, 355, 355, 39, 39, 356, 356, 356, 356, 356, + 356, 356, 356, 39, 357, 39, 358, 39, 359, 39, + 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, + 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, + 360, 360, 360, 360, 360, 360, 360, 360, 360, 360, + 360, 39, 39, 361, 361, 361, 361, 361, 361, 361, + 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + + 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + 361, 361, 361, 361, 361, 361, 39, 362, 362, 362, + 362, 362, 362, 362, 39, 363, 39, 39, 39, 364, + 364, 364, 39, 365, 365, 365, 365, 365, 365, 365, + 39, 39, 39, 366, 366, 366, 366, 39, 39, 367, + 367, 367, 367, 367, 367, 39, 39, 39, 39, 368, + 368, 368, 368, 368, 368, 368, 368, 368, 368, 368, + 368, 368, 39, 39, 39, 39, 39, 369, 369, 369, + 39, 370, 370, 370, 370, 370, 370, 370, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 371, + + 371, 371, 371, 371, 371, 371, 371, 371, 371, 371, + 371, 371, 39, 39, 39, 39, 372, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 373, 39, 39, 39, 374, + 374, 39, 39, 375, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 376, 376, 376, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 377, 39, 378, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 379, 379, 379, 379, 379, 379, 379, 379, 379, 380, + 380, 380, 380, 380, 380, 39, 381, 381, 381, 381, + 381, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 382, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + + 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, + 382, 382, 382, 382, 382, 382, 39, 39, 39, 39, + 383, 384, 39, 39, 385, 385, 39, 39, 386, 386, + 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, + 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, + 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, + 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, + 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, + + 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, + 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, + 386, 386, 386, 386, 386, 386, 386, 386, 386, 386, + 386, 386, 386, 386, 386, 386, 386, 386, 39, 387, + 387, 387, 39, 39, 39, 39, 39, 39, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, + 389, 389, 389, 389, 389, 389, 389, 389, 389, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + 390, 390, 390, 390, 390, 390, 390, 390, 390, 390, + + 390, 390, 390, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 391, 391, 391, 391, 391, + + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 392, 392, 392, 392, 392, 392, 392, 392, 392, + + 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, + 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, + 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, + 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, + 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, + 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, + 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, + 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, + 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, + 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, + + 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, + 392, 392, 392, 392, 392, 392, 392, 392, 392, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 393, 393, 393, 393, 393, 393, 393, + 393, 393, 393, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, + 394, 394, 394, 1, 1 + } ; + +static yyconst int yy_meta[395] = + { 0, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 2 + + } ; + +static yyconst short int yy_base[1732] = + { 0, + 0, 0, 394, 397, 790, 0, 397, 407, 1184, 1187, + 1191, 1195, 1588, 0, 411, 423, 463, 529, 595, 660, + 1982, 0, 438, 685, 556, 621, 728, 1206,14648,14641, + 732, 744, 1212, 1226, 382, 392, 1261, 1290, 2376, 2379, + 2392, 2408, 1231, 1277, 2801, 0, 427, 450, 1307, 1320, + 1295, 1332, 1337, 1354, 1359, 1372, 1391, 1419, 1426, 1432, + 1444, 1450, 758, 1491, 1469, 1496, 1512, 2413, 3195, 3212, + 14653,21876, 490,21876, 412,21876, 392, 414, 1518,14630, + 21876,21876,21876, 425,14630, 721,21876, 433,21876, 3604, + 404, 448, 393, 452,14595, 459,14603,14592, 379,14587, + + 443, 494, 521,14590,14601,14585,21876,21876, 0, 0, + 21876, 1191, 544,14574,14571,21876, 3977, 0, 0, 1384, + 14611,14624,14618, 4350, 0, 0, 625,21876,14604,14616, + 14601,21876,14597, 473,21876, 501,21876,21876,21876, 1320, + 536, 558, 1479, 578, 534, 614, 714,14567, 614, 559, + 1156,14575, 1242, 645, 418, 514,14553,14596, 1544, 622, + 551, 470, 1149,14549, 611, 721, 665,14539, 646, 576, + 14534,14545, 684, 1411,14536,14540,21876, 4723, 0, 0, + 14529,14532,14515,14486,21876,14491,14489,14485,21876,21876, + 14508,21876,21876,21876,14482,14488,21876,21876,14508,14515, + + 21876, 1562,21876,14506,21876,21876,21876,21876,14469, 5096, + 0, 0, 2379,14512,14472,14479,14468,14478,14466,14467, + 14457,14459, 654,14130,14123,14141, 588,14115,14098,14109, + 14112,14086,21876,14080,14121,21876,14083,14096,14095,14092, + 771, 764,14109,21876,21876,14070,14065,14074, 1568, 1179, + 14118, 1504, 1209, 2391,14112, 2441,21876, 2446,14063, 5458, + 21876, 1517,21876, 2357, 2420, 1227, 1232,21876, 2456,21876, + 5847, 0, 6223, 0, 0, 0, 0,14073,14056,14010, + 14006, 1179,14014,14011,14010, 1136, 0,13999,13994,14006, + 13997,14004,14003,13989, 1222, 1170,13994,13992,13980,13987, + + 13987,13987,13977, 1252, 698,13976,13962,13960,21876,21876, + 21876, 6596, 0, 0, 0, 0, 0, 2469,13992,13991, + 21876,21876,21876, 6969, 0, 7331, 0, 0, 0, 0, + 2473,21876,21876,21876,21876,21876,21876,21876,21876,13961, + 1225,13967, 2477,13951,13957, 670, 1308,13949,13947,13942, + 21876, 1419,13941,13943,13953,21876,21876,13946, 1247,21876, + 13936, 662,13926,21876,13942,21876,13926,13941,13932,13904, + 13903,13912, 397, 1194,13901,13901, 1245,13907,13893,21876, + 13899, 561,13887,13896, 1285,13881,21876,13886, 0,13869, + 13869,13872,13850,13866, 1271,13853, 0, 1384,13862, 0, + + 0,13855, 1348, 0,13858, 0, 0,13848, 0, 1269, + 0,13847,13836,13829,13828,13838,13843,13819,13836, 0, + 13835,13830,13832, 7704, 0, 0, 0, 0, 0,13829, + 13817,13823,13808,13813,13842,13801,21876,13786,13781,21876, + 8077, 0, 8439, 0, 0, 0, 0, 2481,13820, 0, + 21876,13784,13769,13768,13763,13759,13764,13730,13738,13723, + 13712, 1293,13717,13717,13709,13723,13708,13719,13394,13371, + 13350,21876,21876,13360,13344,13353,13352,13345, 1377, 1389, + 13334,13333,13331, 1388, 1406,13329,13326,13324, 2488,21876, + 8812, 0, 0, 2358,13362,13361,13362,13344,21876, 9201, + + 0, 0, 9590, 1422, 1424, 1365, 1482, 1442, 1483, 1466, + 2343, 1507,13329, 1306,13001, 1494,13000,12999,12973,12972, + 1491, 2361,12971, 2377, 1443,12970, 1405,12962, 2383, 1457, + 12961, 2408, 2473,12950,12950,12980,12948,12974,21876, 9963, + 0, 0, 2505,21876, 2518,12954, 2522, 2407,12622,12631, + 12628,12602,12598,12584,21876,12597,12575,12584,12589,12586, + 12585,21876,12577,12572,12239,12240,12253,12225,21876,12226, + 12225,21876, 2526,12209,12216,12219,12218,12200,12216,12196, + 12210,12204,11870,11867,11883,11850,11845,11852,11855,11834, + 11830,11840,11827,11839,11832,11832,10336,11818, 2452,11822, + + 0,11812,11819,11825,11479,11491,11465,11455,11447,11448, + 11454,11446, 0,11452, 2530,11451,11452,11434,11444,11443, + 11445,11427,11432,11438,11424,11420,11108,11103,11089,11072, + 11075, 1519,11061,11073,10709, 0, 0,11102,11055,11050, + 11047,11061,11054,11052,11059,10731,10730,10721,10690,10683, + 10703,10700,10688,10691,10686,10693,10675,21876,10683, 2477, + 2515,10676,10675,10380,10348, 2516, 2554,10346,10321,10351, + 10319,11082, 0, 0, 0, 0, 0,10354,10332,11471, + 0, 0, 0, 0, 0,11860, 2491, 2494, 1499, 726, + 2410, 2404, 2443, 2504, 2379, 2328, 2492,10305, 2588, 2455, + + 2511, 2496, 2497, 2513, 2508, 2600,10304, 2604,10303, 2519, + 2566, 2521,21876, 2597,10302,21876,10300,12233, 0, 0, + 0, 0, 0, 2609, 2629,10303, 9977, 9984, 9974, 9943, + 2645, 9960, 9959, 9939, 9946, 9933, 9944, 9947,21876, 9923, + 9929, 9926, 9928, 9600,21876, 9603,21876, 9588, 9571, 9567, + 9575, 9560, 2649, 9559, 9558, 9566, 9552, 9562, 9547, 9548, + 21876, 9546, 9557, 9552, 9545, 9213,21876, 9209, 9181, 9186, + 9194, 9180, 9183, 9173, 2661, 9168,12606, 9175, 2540, 2418, + 2567, 2527, 9174, 2572, 2533, 2566, 2606, 9172, 2596, 2611, + 9169, 2670, 2621, 2612, 2627, 2586, 2628, 2630, 2683, 9168, + + 1272, 2640, 2645, 9156, 9157, 9168, 9153, 9150, 8826, 8821, + 8832, 2643,12979, 0, 0, 0, 0, 0, 8807, 8801, + 8798, 8796, 8799, 8794, 8779, 8780, 8818, 8791, 8775, 8814, + 8767, 8766, 8769, 8765, 8779, 8760, 8757, 8768, 2679, 8752, + 8695, 2705, 8694, 8692, 8732, 8731, 8719,13368, 2640, 2737, + 2644, 2647, 2648, 2668, 2699, 8686, 2655, 8685, 2671, 2674, + 2751,21876, 2686, 8684, 2716, 2685, 2720, 8683, 3228,13744, + 3241,21876,21876, 2703, 2718, 2732, 2717, 8687, 8686, 8695, + 8694, 8696, 8678, 8692, 3218, 8690, 8671, 8665, 8662, 8665, + 8655, 8654,21876, 8660, 8653, 8644, 8649, 8638, 8643, 8626, + + 8642, 8623, 8637, 8626, 8613, 8611, 8598, 8606, 8593, 8600, + 8594, 8594,21876, 8586, 8592,21876,21876,21876,21876, 8591, + 8590,21876, 8563, 3256, 8563,21876,14117, 8580, 2614, 2744, + 2740, 2552, 2715, 2745, 2736, 3185, 3176, 3260,21876, 8577, + 3193, 3186, 2746, 3162, 2752, 3266,21876, 8572, 8562, 8561, + 8549, 8544, 8530,21876, 8537, 8535, 8537, 8524, 3164, 8530, + 8518, 8526, 8529, 8504, 8507, 8507,21876, 8495, 8500, 8469, + 8471, 8474, 8467, 8468, 8429, 8435, 8431,21876, 8416, 8126, + 8117, 8107, 3183, 3151, 3279, 8094, 8056, 2721, 3230, 3227, + 8055, 3207, 8042, 8041, 3234, 3243, 3294, 3229, 3189, 3231, + + 8075,21876, 3236, 3246, 7712, 7711, 7712, 7686, 7693,21876, + 7683, 7669, 7670, 7673, 7673, 7665, 7597, 338, 513, 601, + 1144, 1253, 3305, 1306,21876, 1351, 1378, 1437, 1462, 1494, + 21876, 1520,21876,21876, 1537, 2373,21876, 2375, 2441,21876, + 2502, 2582,21876, 2648, 2677,21876, 3268, 2731, 3153, 3203, + 3218, 3252, 3269, 3262, 3277, 3280, 3282, 3249, 3284, 3286, + 3289, 3291, 3287, 3281, 3292, 3317, 3295, 3279, 3301, 3282, + 3285, 3301, 3289, 3287, 3331, 3297, 3298,21876,21876, 3303, + 3295, 3301, 3299, 3300, 3298, 3319, 3307, 3321,21876, 3310, + 3313, 3307,21876,21876, 3337, 3310, 3309, 3348,21876, 3372, + + 3312, 3331, 3319, 3379, 3327, 3336, 3394, 3398, 3365, 3335, + 3355, 3348, 3332, 3360, 3363, 3362, 3365, 3357, 3353,21876, + 3354, 3357, 3363, 3372, 3364,21876, 3372, 3374, 3371, 3380, + 3424,21876, 3379, 3383, 3388, 3391, 3390, 3378,21876, 3384, + 3395, 3388, 3397, 3398, 3400, 3388, 3401, 3407, 3404, 3405, + 3400, 3452, 3410, 3418, 3468, 3419, 3472, 3420, 3437, 3438, + 3441, 3447, 3442, 3450, 3452,21876, 3421, 3421,21876, 3411, + 3437, 3451, 3456, 3452,21876, 3446,21876, 3449, 3454, 3440, + 3462, 3454, 3454, 3465, 3462, 3466, 3453, 3477, 3513, 3474, + 3519,21876,21876, 3467, 3534,14506,21876,21876, 3481, 3482, + + 3545,21876, 3503,21876, 3483, 3492, 3470, 3495, 3500, 3509, + 3475, 3486,21876, 3508,21876,21876, 3511, 3499,21876, 3507, + 3508, 3519, 3504,21876, 3510,21876, 3512,21876, 3507,21876, + 3522, 3521,21876, 3512, 3513, 3515, 3530, 3530, 3535, 3534, + 3526, 3524, 3522, 3537, 5612, 3540, 3541, 3587,21876, 3576, + 3611,21876, 3555, 3553, 3559, 3554, 3560, 3578, 3585, 3955, + 3579, 3553,21876, 3579, 3572,21876,21876, 3579,21876,21876, + 3622, 3582, 3597,21876, 3624,21876,21876,21876, 3632, 5568, + 3945, 3649,14895, 3941, 5684, 4317,21876,14959, 0, 0, + 5853, 5632, 9207, 3954, 3943, 4328, 3957, 6397,21876,21876, + + 3950, 3966,21876, 3995, 3985,21876, 3991, 4316,21876,21876, + 4317, 4329,21876,21876,21876,21876, 4318, 4329, 4336, 4743, + 4348, 4372, 4362, 4368, 4684, 4701, 4701, 5119, 4709, 5074, + 5077, 4717, 5498, 4718, 5482, 5452,21876, 4702, 4727,21876, + 4731, 4741, 5062,21876, 5095, 5124, 5141, 5466,21876,15348, + 21876,15724,21876, 9596, 5520, 5707,16113, 0,16475,21876, + 0, 0, 0, 0, 5591, 5437, 5504, 6237, 5520, 6333, + 5524, 5521, 5542, 5532, 5546, 5516, 6356,21876, 5542, 5543, + 21876, 5719, 5547,21876,21876, 5569, 5568, 5573, 5574, 6243, + 5565, 5592, 5585, 5600, 5614, 5597, 5593, 5754,21876,16848, + + 5621, 5598, 5672, 5645, 5646,21876, 5613, 5614, 5649, 5660, + 5678, 5703, 5811, 5709,17237, 0, 0,21876, 7441, 5701, + 17613, 5786,18002, 0, 0, 5711, 5702,21876, 5712,21876, + 5713, 5703,21876, 5714, 5794, 5814, 5715, 5719, 6431, 5724, + 5715, 5712, 5776, 5785, 5785, 5784, 5785, 5795, 5818, 5810, + 5808, 5806, 5823,18375, 5830, 6200, 6295, 5840,21876, 5831, + 5833, 5872, 5876,21876, 6202, 6449,18764, 0,19126,21876, + 0, 0, 0, 0, 6221, 6231,21876, 6295,19515, 0, + 0, 0, 0, 0, 6247, 6249, 6312, 6321, 6325, 6192, + 6201, 6254, 6265, 6272,21876, 6472, 6298, 6301, 6299, 6306, + + 6323, 6325, 6322, 6329, 6518, 6341, 6340,19888, 6345, 6353, + 6375, 6378, 6344,21876, 6360, 6422,20277, 0, 0, 6406, + 7485, 6404, 6435, 6381, 6428, 6348, 6360, 6374, 6406, 6415, + 6432, 7394, 6453,21876, 6454, 6441, 6442, 6463, 6468, 6475, + 6532, 6465, 6485, 7464, 6482, 6550, 6558, 6561, 6483, 6484, + 6565, 0, 0, 0, 0, 0, 0, 6474, 6992,21876, + 6551, 6573, 6479, 6545, 8593, 6546,21876, 6574, 6563,21876, + 6564, 6575, 6576,21876,21876, 6576, 6602, 6609, 6609, 6932, + 6935, 7557,21876, 6948, 7388, 7403, 8549,21876, 6948, 7427, + 7419, 7455, 7458, 6977, 7447, 7627,21876, 6962, 6955, 6986, + + 7313,21876,21876,21876, 7319, 7322, 7313, 7353, 7370, 7434, + 7370, 7631,21876,21876, 8613, 7456, 7480, 7482, 7396,11478, + 21876, 7358, 7359, 7416, 7431,21876, 7431, 7437, 7438, 7465, + 8665,11864,20653, 7517,13374,13897, 7488, 7727,21876, 7479, + 7483, 7580, 7484, 7485,21876,21876, 7528, 8100,21876, 7526, + 21876,13918,13758, 7542,13854, 7550, 7516, 7529, 7528, 8502, + 21876,21876, 7549,14510, 7573, 7574,21876, 7575,21876, 7653, + 7550, 7557, 7550, 7579, 7584,21876, 7583, 7546,21876, 7565, + 7670, 7655, 7580, 7597, 7658,14900,21876, 7585,13970,21042, + 21876,21876,21876, 8572,21876,21431, 0, 0, 8688, 0, + + 0,21876, 0, 0, 0, 0,21876,21821,21824,21827, + 21830,21833,21836,21838,21840,21843,21846,21848,21850,21852, + 7643,21854,21856,21858,21860,21862,21864,21866,21868,21870, + 21872 + } ; + +static yyconst short int yy_def[1732] = + { 0, + 1707, 1, 1708, 1708, 1707, 5, 1709, 1709, 1708, 1708, + 1708, 1708, 1707, 13, 13, 13, 1709, 1709, 13, 13, + 1707, 21, 1709, 1709, 1709, 1709, 1709, 1709, 13, 13, + 13, 13, 13, 13, 21, 21, 1709, 1709, 1710, 1710, + 1711, 1711, 13, 13, 1707, 45, 1709, 1709, 1709, 1709, + 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, + 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1709, 1711, 1711, + 1707, 1707, 1707, 1707, 1712, 1707, 1713, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + + 90, 90, 90, 90, 90, 90, 1707, 1707, 90, 90, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 117, 117, 1714, + 1707, 1707, 1707, 1707, 124, 124, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 1707, 1707, 178, 178, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 124, 124, 1707, 1707, 1707, 1707, + + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 124, 1707, + 210, 210, 1715, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1716, 1717, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1716, + 1707, 1707, 1717, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 271, 1707, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + + 271, 271, 271, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 312, 312, 312, 312, 312, 1718, 1718, 1719, + 1707, 1707, 1707, 1707, 324, 1707, 324, 324, 324, 324, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 1707, 424, 424, 424, 424, 424, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 324, 324, 1707, + 1707, 441, 1707, 441, 441, 441, 441, 1720, 1720, 1721, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 491, 491, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + + 500, 500, 1707, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 1707, 1707, 1707, 1707, 1707, 1707, 1722, 1707, 1707, + 540, 540, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 597, 597, 597, + + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 597, 1707, 635, 635, 1723, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 672, 672, 672, 672, 672, 1724, 1707, 1707, + 680, 680, 680, 680, 680, 1707, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 1707, 1707, 1707, 1707, 1707, 1707, 718, 718, + 718, 718, 718, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + + 777, 777, 777, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 777, 1707, 813, 813, 813, 813, 813, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1725, 1726, 1707, 1707, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 1707, 1707, 848, 848, 848, 848, 848, 848, 1707, 1707, + 1707, 1707, 1707, 848, 848, 848, 848, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 1707, 1707, 927, + 927, 927, 927, 927, 927, 1707, 1707, 927, 927, 927, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 927, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1725, + 1707, 1707, 848, 848, 1707, 870, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + + 1707, 1707, 848, 848, 848, 848, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 927, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 848, 848, 1707, 1707, 848, + + 848, 848, 848, 848, 848, 848, 848, 1707, 870, 848, + 848, 848, 848, 848, 848, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 927, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 848, 848, + 1707, 1707, 1707, 848, 848, 1707, 1707, 1707, 848, 848, + + 1707, 1707, 1707, 1707, 848, 848, 848, 848, 848, 848, + 848, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 927, 927, 1707, 1707, 927, + 1707, 1707, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1727, 1707, + 848, 870, 848, 848, 1707, 848, 1707, 1707, 1288, 1288, + 848, 848, 848, 848, 848, 848, 848, 848, 1707, 1707, + + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1727, 1728, 1707, 848, 1707, 1707, + 1707, 1707, 1707, 848, 848, 1707, 1707, 1357, 1707, 1707, + 1357, 1357, 1357, 1357, 1707, 848, 1352, 1707, 1352, 1707, + 848, 1352, 848, 848, 848, 848, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + + 1400, 1400, 1400, 1400, 1400, 1707, 1707, 1707, 1707, 1707, + 1729, 1730, 848, 1707, 1707, 1415, 1415, 1707, 1707, 848, + 1707, 848, 1707, 1423, 1423, 1707, 848, 1707, 1707, 1707, + 1707, 848, 1707, 848, 848, 848, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1454, 1454, 1454, 1454, 1707, 1707, + 1707, 1707, 1731, 1707, 848, 1707, 1707, 1467, 1707, 1707, + 1467, 1467, 1467, 1467, 1707, 848, 1707, 848, 1707, 1479, + 1479, 1479, 1479, 1479, 848, 848, 848, 848, 848, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1508, 1508, + 1508, 1508, 1707, 1707, 1707, 848, 1707, 1517, 1517, 848, + 848, 848, 848, 848, 848, 848, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1508, 1508, 1508, 1508, 1508, 1707, 1707, + 848, 1517, 1517, 1517, 1517, 1517, 1517, 848, 1707, 1707, + 848, 848, 848, 848, 848, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1508, 1508, 1508, 1508, 1707, 1707, 848, + 848, 848, 848, 848, 848, 1707, 1707, 1707, 1707, 1707, + + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1508, + 1508, 1707, 1707, 1707, 848, 848, 848, 848, 848, 848, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1508, + 1508, 1707, 1707, 848, 848, 848, 848, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1508, 1707, 1707, 1707, + 1707, 848, 1707, 1633, 1707, 1633, 848, 1707, 1707, 1707, + 1707, 1707, 1508, 1707, 1633, 1707, 1707, 1707, 1707, 848, + 1707, 1707, 1707, 1508, 1707, 1707, 848, 1707, 1707, 1707, + 1508, 848, 1707, 1707, 1508, 848, 1707, 1707, 1508, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1696, 1696, 1707, 1696, + + 1696, 1707, 1696, 1696, 1696, 1696, 0, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707 + } ; + +static yyconst short int yy_nxt[22271] = + { 0, + 72, 73, 73, 73, 73, 74, 75, 72, 76, 72, + 72, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 72, 87, 88, 72, 72, 72, 89, 90, 90, + 90, 90, 90, 90, 90, 72, 72, 72, 72, 90, + 91, 90, 92, 93, 94, 95, 90, 90, 96, 90, + 97, 98, 99, 100, 101, 90, 90, 102, 103, 104, + 105, 90, 106, 90, 107, 72, 108, 72, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 72, 72, 72, 72, 90, 72, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + + 90, 72, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 72, 72, 72, 72, 72, 72, 90, 90, 90, + 72, 90, 72, 72, 72, 90, 90, 90, 90, 90, + 72, 72, 72, 90, 72, 72, 72, 72, 90, 72, + 90, 72, 72, 72, 90, 72, 72, 72, 90, 90, + 90, 90, 90, 90, 72, 72, 72, 72, 72, 72, + 72, 90, 90, 72, 72, 90, 72, 90, 90, 90, + 90, 90, 90, 90, 72, 72, 72, 72, 72, 72, + 90, 90, 72, 72, 90, 72, 90, 90, 90, 90, + 90, 90, 90, 72, 90, 72, 72, 72, 90, 72, + + 72, 90, 90, 90, 90, 90, 90, 72, 90, 72, + 72, 72, 72, 90, 90, 72, 72, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 72, 72, 72, + 72, 72, 72, 90, 90, 90, 90, 90, 72, 72, + 72, 72, 90, 72, 72, 90, 90, 90, 90, 90, + 72, 72, 72, 72, 90, 90, 72, 72, 90, 109, + 109, 109, 72, 72, 72, 72, 109, 72, 109, 109, + 72, 109, 72, 109, 72, 72, 72, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 72, 109, 72, 72, 109, 109, 72, 72, 72, 72, + + 72, 72, 72, 72, 72, 72, 109, 109, 72, 72, + 72, 72, 72, 72, 72, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 72, 72, 109, 109, 109, 109, 72, 110, 110, 72, + 72, 109, 72, 72, 72, 109, 72, 109, 110, 109, + 72, 72, 72, 72, 72, 194, 1126, 72, 120, 120, + + 120, 120, 254, 255, 112, 194, 72, 112, 120, 120, + 120, 120, 127, 127, 127, 127, 72, 113, 251, 291, + 113, 256, 252, 121, 127, 127, 127, 127, 213, 213, + 213, 213, 292, 121, 214, 257, 128, 282, 267, 73, + 73, 73, 73, 261, 75, 262, 283, 579, 128, 77, + 131, 213, 213, 213, 213, 580, 278, 214, 114, 268, + 115, 114, 279, 115, 73, 73, 73, 73, 129, 75, + 382, 76, 383, 130, 77, 131, 79, 132, 81, 82, + 83, 181, 85, 294, 133, 87, 134, 135, 136, 137, + 182, 249, 249, 249, 249, 280, 336, 337, 138, 295, + + 139, 281, 284, 140, 287, 141, 142, 143, 144, 145, + 288, 146, 285, 147, 148, 149, 150, 151, 393, 152, + 153, 154, 155, 394, 156, 338, 339, 107, 157, 108, + 73, 73, 73, 73, 129, 75, 296, 76, 297, 130, + 77, 131, 79, 132, 81, 82, 83, 298, 85, 267, + 133, 87, 134, 135, 136, 137, 1127, 73, 73, 73, + 73, 384, 385, 309, 138, 299, 139, 386, 131, 140, + 268, 141, 142, 143, 144, 145, 344, 146, 356, 147, + 148, 149, 150, 151, 300, 152, 153, 154, 155, 345, + 156, 391, 357, 107, 157, 108, 73, 73, 73, 73, + + 129, 368, 346, 76, 392, 130, 347, 158, 159, 590, + 183, 82, 83, 184, 591, 369, 133, 87, 134, 135, + 136, 411, 73, 73, 73, 73, 331, 331, 331, 331, + 138, 353, 412, 131, 354, 160, 355, 161, 162, 163, + 164, 165, 465, 166, 466, 167, 168, 169, 170, 171, + 332, 172, 173, 174, 175, 400, 176, 358, 366, 1128, + 157, 73, 73, 73, 73, 129, 359, 367, 76, 401, + 130, 360, 158, 159, 388, 183, 82, 83, 184, 389, + 390, 133, 87, 134, 135, 136, 73, 73, 73, 73, + 409, 75, 378, 379, 460, 138, 77, 131, 380, 410, + + 160, 381, 161, 162, 163, 164, 165, 461, 166, 406, + 167, 168, 169, 170, 171, 550, 172, 173, 174, 175, + 569, 176, 570, 407, 415, 157, 416, 551, 181, 73, + 73, 73, 73, 73, 73, 73, 73, 182, 189, 264, + 131, 265, 417, 190, 185, 73, 73, 73, 73, 534, + 189, 191, 535, 266, 361, 190, 192, 193, 362, 73, + 73, 73, 73, 191, 402, 266, 852, 363, 192, 193, + 235, 236, 364, 403, 254, 255, 186, 251, 404, 405, + 187, 252, 188, 271, 116, 116, 116, 116, 116, 116, + 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, + + 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, 117, 117, + 117, 117, 117, 117, 117, 72, 72, 72, 72, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 72, 72, 72, 72, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 72, 72, 72, 72, 117, 72, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 72, 117, 117, 117, 117, 117, 117, 117, 117, + + 117, 72, 72, 72, 72, 72, 72, 117, 117, 117, + 72, 117, 72, 72, 72, 117, 117, 117, 117, 117, + 72, 72, 72, 117, 72, 72, 72, 72, 117, 72, + 117, 72, 72, 72, 117, 72, 72, 72, 117, 117, + 117, 117, 117, 117, 72, 72, 72, 72, 72, 72, + 72, 117, 117, 72, 72, 117, 72, 117, 117, 117, + 117, 117, 117, 117, 72, 72, 72, 72, 72, 72, + 117, 117, 72, 72, 117, 72, 117, 117, 117, 117, + 117, 117, 117, 72, 117, 72, 72, 72, 117, 72, + 72, 117, 117, 117, 117, 117, 117, 72, 117, 72, + + 72, 72, 72, 117, 117, 72, 72, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 72, 72, 72, + 72, 72, 72, 117, 117, 117, 117, 117, 72, 72, + 72, 72, 117, 72, 72, 117, 117, 117, 117, 117, + 72, 72, 72, 72, 117, 117, 72, 72, 117, 118, + 118, 118, 72, 72, 72, 72, 118, 72, 118, 118, + 72, 118, 72, 118, 72, 72, 72, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 72, 118, 72, 72, 118, 118, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 118, 118, 72, 72, + + 72, 72, 72, 72, 72, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, + 72, 72, 118, 118, 118, 118, 72, 119, 119, 72, + 72, 118, 72, 72, 72, 118, 72, 118, 119, 118, + 72, 72, 72, 72, 72, 251, 512, 72, 1129, 252, + 122, 72, 513, 122, 112, 72, 370, 112, 304, 395, + + 396, 112, 123, 371, 397, 112, 123, 73, 73, 73, + 73, 398, 372, 73, 73, 73, 73, 523, 131, 254, + 255, 507, 185, 524, 131, 194, 132, 73, 73, 73, + 73, 305, 73, 73, 73, 73, 508, 306, 131, 194, + 132, 307, 495, 131, 495, 581, 308, 496, 114, 497, + 115, 114, 582, 115, 186, 114, 195, 115, 187, 114, + 188, 115, 73, 73, 73, 73, 521, 498, 544, 196, + 195, 209, 532, 131, 194, 522, 107, 82, 73, 73, + 73, 73, 374, 196, 375, 585, 376, 197, 545, 131, + 107, 73, 73, 73, 73, 1130, 73, 73, 73, 73, + + 377, 586, 131, 194, 566, 567, 82, 131, 73, 73, + 73, 73, 614, 75, 533, 603, 197, 209, 77, 131, + 324, 73, 73, 73, 73, 107, 75, 615, 604, 87, + 948, 77, 131, 73, 73, 73, 73, 594, 73, 73, + 73, 73, 87, 595, 131, 649, 217, 650, 552, 131, + 271, 215, 218, 553, 107, 73, 73, 73, 73, 696, + 73, 73, 73, 73, 215, 554, 131, 216, 555, 1132, + 340, 131, 341, 73, 73, 73, 73, 342, 343, 219, + 216, 220, 221, 217, 131, 318, 318, 318, 318, 218, + 222, 1133, 73, 73, 73, 73, 219, 660, 220, 221, + + 223, 224, 181, 131, 225, 610, 611, 222, 666, 271, + 320, 226, 227, 223, 224, 181, 689, 225, 1134, 228, + 73, 73, 73, 73, 226, 227, 606, 73, 73, 73, + 73, 131, 228, 73, 73, 73, 73, 229, 131, 661, + 662, 230, 607, 663, 131, 73, 73, 73, 73, 271, + 667, 73, 73, 73, 73, 418, 131, 668, 419, 559, + 669, 560, 131, 708, 420, 229, 271, 421, 271, 230, + 73, 73, 73, 73, 688, 75, 231, 561, 687, 1135, + 77, 158, 231, 232, 691, 234, 271, 271, 706, 232, + 233, 234, 73, 73, 73, 73, 233, 73, 73, 73, + + 73, 271, 75, 235, 236, 711, 1136, 77, 158, 237, + 271, 479, 238, 73, 73, 73, 73, 693, 75, 258, + 258, 258, 258, 77, 131, 194, 271, 271, 82, 348, + 349, 350, 690, 702, 351, 271, 237, 262, 271, 238, + 1137, 352, 692, 851, 480, 258, 258, 258, 258, 266, + 481, 271, 237, 697, 482, 238, 271, 695, 259, 483, + 1138, 266, 239, 249, 249, 249, 249, 809, 240, 249, + 249, 249, 249, 810, 116, 116, 116, 116, 116, 116, + 1139, 116, 116, 116, 259, 116, 116, 116, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, + + 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 124, 124, 124, 124, + 124, 124, 124, 72, 72, 72, 72, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 72, 72, 72, 72, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 72, + 72, 72, 72, 124, 72, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 72, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 72, + + 72, 72, 72, 72, 72, 124, 124, 124, 72, 124, + 72, 72, 72, 124, 124, 124, 124, 124, 72, 72, + 72, 124, 72, 72, 72, 72, 124, 72, 124, 72, + 72, 72, 124, 72, 72, 72, 124, 124, 124, 124, + 124, 124, 72, 72, 72, 72, 72, 72, 72, 124, + 124, 72, 72, 124, 72, 124, 124, 124, 124, 124, + 124, 124, 72, 72, 72, 72, 72, 72, 124, 124, + 72, 72, 124, 72, 124, 124, 124, 124, 124, 124, + 124, 72, 124, 72, 72, 72, 124, 72, 72, 124, + 124, 124, 124, 124, 124, 72, 124, 72, 72, 72, + + 72, 124, 124, 72, 72, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 72, 72, 72, 72, 72, + 72, 124, 124, 124, 124, 124, 72, 72, 72, 72, + 124, 72, 72, 124, 124, 124, 124, 124, 72, 72, + 72, 72, 124, 124, 72, 72, 124, 125, 125, 125, + 72, 72, 72, 72, 125, 72, 125, 125, 72, 125, + 72, 125, 72, 72, 72, 125, 125, 125, 125, 125, + 125, 125, 125, 125, 125, 125, 125, 125, 72, 125, + 72, 72, 125, 125, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 125, 125, 72, 72, 72, 72, + + 72, 72, 72, 125, 125, 125, 125, 125, 125, 125, + 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, + 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, + 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, + 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, + 125, 125, 125, 125, 125, 125, 125, 125, 72, 72, + 125, 125, 125, 125, 72, 126, 126, 72, 72, 125, + 72, 72, 72, 125, 72, 125, 126, 125, 72, 72, + 72, 72, 72, 73, 73, 73, 73, 72, 75, 72, + 72, 72, 72, 77, 131, 72, 72, 72, 72, 72, + + 72, 72, 72, 72, 72, 72, 177, 72, 72, 72, + 178, 178, 178, 178, 178, 178, 178, 72, 72, 72, + 72, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 72, 72, 72, 72, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 72, 72, 72, 72, 178, 72, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 72, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 72, 72, 72, 72, 72, 72, 178, + + 178, 178, 72, 178, 72, 72, 72, 178, 178, 178, + 178, 178, 72, 72, 72, 178, 72, 72, 72, 72, + 178, 72, 178, 72, 72, 72, 178, 72, 72, 72, + 178, 178, 178, 178, 178, 178, 72, 72, 72, 72, + 72, 72, 72, 178, 178, 72, 72, 178, 72, 178, + 178, 178, 178, 178, 178, 178, 72, 72, 72, 72, + 72, 72, 178, 178, 72, 72, 178, 72, 178, 178, + 178, 178, 178, 178, 178, 72, 178, 72, 72, 72, + 178, 72, 72, 178, 178, 178, 178, 178, 178, 72, + 178, 72, 72, 72, 72, 178, 178, 72, 72, 178, + + 178, 178, 178, 178, 178, 178, 178, 178, 178, 72, + 72, 72, 72, 72, 72, 178, 178, 178, 178, 178, + 72, 72, 72, 72, 178, 72, 72, 178, 178, 178, + 178, 178, 72, 72, 72, 72, 178, 178, 72, 72, + 178, 179, 179, 179, 72, 72, 72, 72, 179, 72, + 179, 179, 72, 179, 72, 179, 72, 72, 72, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 72, 179, 72, 72, 179, 179, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, 179, 179, + 72, 72, 72, 72, 72, 72, 72, 179, 179, 179, + + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 72, 72, 179, 179, 179, 179, 72, 180, + 180, 72, 72, 179, 72, 72, 72, 179, 72, 179, + 180, 179, 72, 72, 72, 72, 72, 494, 494, 72, + 448, 448, 448, 448, 858, 271, 450, 271, 199, 266, + 266, 199, 72, 202, 202, 202, 202, 200, 484, 694, + + 200, 266, 266, 703, 204, 271, 205, 206, 72, 202, + 202, 202, 202, 1140, 73, 73, 73, 73, 207, 75, + 204, 271, 205, 206, 77, 131, 194, 271, 532, 82, + 713, 485, 857, 705, 207, 1141, 271, 486, 264, 710, + 265, 487, 489, 489, 489, 489, 488, 258, 258, 258, + 258, 731, 266, 237, 853, 854, 238, 269, 269, 269, + 269, 271, 929, 239, 266, 732, 324, 271, 270, 240, + 318, 318, 318, 318, 331, 331, 331, 331, 547, 547, + 547, 547, 448, 448, 448, 448, 259, 855, 450, 489, + 489, 489, 489, 714, 1142, 320, 778, 660, 332, 250, + + 271, 714, 714, 714, 714, 714, 724, 724, 724, 724, + 779, 863, 271, 714, 714, 714, 714, 714, 714, 725, + 725, 725, 725, 547, 547, 547, 547, 753, 753, 753, + 753, 753, 753, 753, 753, 839, 666, 850, 253, 849, + 865, 866, 859, 839, 839, 839, 839, 839, 271, 271, + 1143, 271, 868, 271, 271, 839, 839, 839, 839, 839, + 839, 271, 875, 864, 867, 271, 727, 856, 271, 1057, + 271, 931, 728, 729, 842, 324, 271, 877, 271, 730, + 928, 324, 842, 842, 842, 842, 842, 933, 324, 861, + 861, 861, 861, 324, 842, 842, 842, 842, 842, 842, + + 862, 869, 869, 869, 869, 871, 871, 871, 871, 876, + 724, 724, 724, 724, 324, 324, 872, 714, 930, 713, + 324, 870, 934, 271, 1144, 714, 714, 714, 714, 714, + 725, 725, 725, 725, 324, 932, 936, 714, 714, 714, + 714, 714, 714, 943, 324, 271, 885, 885, 885, 885, + 753, 753, 753, 753, 324, 324, 941, 271, 935, 324, + 324, 271, 924, 924, 924, 924, 1054, 937, 873, 324, + 878, 938, 938, 938, 938, 324, 324, 940, 324, 944, + 945, 984, 939, 942, 946, 946, 946, 946, 324, 950, + 879, 324, 949, 324, 959, 947, 987, 904, 271, 839, + + 989, 250, 271, 988, 1145, 271, 271, 839, 839, 839, + 839, 839, 990, 271, 925, 994, 992, 1146, 324, 839, + 839, 839, 839, 839, 839, 842, 271, 253, 995, 271, + 996, 324, 271, 842, 842, 842, 842, 842, 985, 985, + 985, 985, 999, 271, 271, 842, 842, 842, 842, 842, + 842, 991, 861, 861, 861, 861, 324, 271, 986, 998, + 1000, 271, 1004, 862, 1003, 1101, 201, 201, 201, 201, + 201, 201, 1005, 1058, 271, 271, 271, 324, 271, 271, + 1006, 324, 208, 208, 208, 324, 324, 324, 1055, 1149, + 271, 1065, 1056, 324, 1060, 271, 1067, 1059, 208, 208, + + 208, 72, 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, 72, 210, + 210, 210, 210, 210, 210, 210, 72, 72, 72, 72, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 72, 72, 72, 72, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 72, 72, 72, 72, 210, 72, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + + 210, 210, 72, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 72, 72, 72, 72, 72, 72, 210, 210, + 210, 72, 210, 72, 72, 72, 210, 210, 210, 210, + 210, 72, 72, 72, 210, 72, 72, 72, 72, 210, + 72, 210, 72, 72, 72, 210, 72, 72, 72, 210, + 210, 210, 210, 210, 210, 72, 72, 72, 72, 72, + 72, 72, 210, 210, 72, 72, 210, 72, 210, 210, + 210, 210, 210, 210, 210, 72, 72, 72, 72, 72, + 72, 210, 210, 72, 72, 210, 72, 210, 210, 210, + 210, 210, 210, 210, 72, 210, 72, 72, 72, 210, + + 72, 72, 210, 210, 210, 210, 210, 210, 72, 210, + 72, 72, 72, 72, 210, 210, 72, 72, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 72, 72, + 72, 72, 72, 72, 210, 210, 210, 210, 210, 72, + 72, 72, 72, 210, 72, 72, 210, 210, 210, 210, + 210, 72, 72, 72, 72, 210, 210, 72, 72, 210, + 211, 211, 211, 72, 72, 72, 72, 211, 72, 211, + 211, 72, 211, 72, 211, 72, 72, 72, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 72, 211, 72, 72, 211, 211, 72, 72, 72, + + 72, 72, 72, 72, 72, 72, 72, 211, 211, 72, + 72, 72, 72, 72, 72, 72, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 72, 72, 211, 211, 211, 211, 72, 212, 212, + 72, 72, 211, 72, 72, 72, 211, 72, 211, 212, + 211, 72, 72, 72, 72, 72, 202, 202, 202, 202, + + 1150, 241, 1066, 324, 1075, 324, 242, 243, 244, 271, + 1097, 245, 72, 202, 202, 202, 202, 324, 241, 885, + 885, 885, 885, 242, 243, 244, 324, 324, 245, 869, + 869, 869, 869, 1062, 324, 246, 1096, 1061, 1064, 247, + 270, 271, 871, 871, 871, 871, 1111, 271, 1112, 1001, + 1063, 1151, 246, 872, 248, 1105, 247, 924, 924, 924, + 924, 938, 938, 938, 938, 271, 1014, 946, 946, 946, + 946, 248, 939, 1102, 1106, 1015, 1152, 1110, 947, 1103, + 985, 985, 985, 985, 1113, 271, 1107, 271, 271, 271, + 324, 270, 271, 324, 271, 1108, 1108, 1108, 1108, 1047, + + 1098, 271, 1114, 324, 271, 873, 1131, 1131, 1131, 1131, + 324, 1153, 1147, 1048, 1049, 1109, 1148, 1050, 324, 1154, + 1155, 324, 324, 324, 1159, 324, 1160, 324, 324, 1156, + 324, 1161, 324, 324, 1165, 1162, 324, 1166, 1157, 1158, + 1164, 1167, 1168, 1169, 1163, 1170, 1171, 1172, 1173, 1174, + 1175, 1176, 271, 1177, 1178, 1179, 1180, 1181, 324, 1182, + 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 271, 1099, + 271, 1194, 324, 1191, 1191, 1191, 1191, 1195, 1200, 1199, + 1196, 1196, 1196, 1196, 1192, 271, 1204, 1205, 1207, 271, + 1209, 1197, 1208, 271, 271, 1201, 1201, 1201, 1201, 1108, + + 1108, 1108, 1108, 1206, 1210, 1212, 271, 1211, 1213, 1214, + 270, 1215, 1216, 271, 1217, 1218, 1219, 1220, 271, 1203, + 1221, 271, 1222, 1223, 1224, 1131, 1131, 1131, 1131, 1226, + 271, 1227, 1228, 1229, 1230, 1231, 1193, 271, 1232, 1233, + 1234, 1235, 1236, 1198, 1237, 1238, 1239, 1240, 1241, 1243, + 1244, 324, 271, 1245, 1245, 1245, 1245, 1242, 1202, 324, + 324, 324, 1247, 1262, 1253, 1263, 1225, 1264, 1246, 1248, + 1248, 1248, 1248, 1251, 1251, 1251, 1251, 1250, 324, 324, + 1249, 1265, 324, 324, 1252, 1256, 1255, 1254, 324, 1257, + 1258, 324, 1260, 324, 1259, 1266, 1261, 324, 1267, 1268, + + 1261, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 324, + 1277, 1278, 1279, 324, 1280, 1280, 1280, 1280, 1283, 1284, + 1191, 1191, 1191, 1191, 1204, 271, 1292, 1291, 1295, 1293, + 1281, 1192, 271, 271, 1282, 1285, 1285, 1285, 1285, 271, + 271, 271, 1297, 1299, 1294, 1296, 1201, 1201, 1201, 1201, + 271, 1286, 1298, 271, 1300, 1301, 1302, 270, 271, 1303, + 1304, 1305, 1306, 1307, 1308, 1309, 1310, 271, 1311, 1312, + 1313, 271, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, + 1322, 324, 324, 1193, 1328, 208, 208, 208, 1248, 1248, + 1248, 1248, 271, 1329, 324, 324, 324, 1337, 1287, 1249, + + 324, 324, 208, 208, 208, 269, 269, 269, 269, 1202, + 1330, 1331, 1251, 1251, 1251, 1251, 270, 324, 1332, 324, + 324, 271, 271, 1252, 272, 273, 324, 1338, 1339, 1336, + 1333, 1340, 271, 271, 271, 271, 271, 271, 271, 1341, + 1342, 1343, 1334, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 1344, 1346, + 1349, 274, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 274, 274, 275, 275, 271, + 274, 271, 271, 271, 271, 271, 271, 271, 271, 271, + + 271, 271, 271, 271, 271, 275, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 275, 275, 275, 275, 275, + 275, 271, 271, 271, 274, 271, 275, 272, 275, 271, + 271, 271, 271, 271, 275, 275, 275, 271, 275, 275, + 272, 275, 271, 275, 271, 275, 275, 275, 271, 275, + 272, 275, 271, 271, 271, 271, 271, 271, 275, 275, + 275, 275, 275, 275, 275, 271, 271, 275, 272, 271, + 275, 271, 271, 271, 271, 271, 271, 271, 275, 275, + 275, 275, 275, 275, 271, 271, 272, 275, 271, 275, + 271, 271, 271, 271, 271, 271, 271, 275, 271, 275, + + 275, 275, 271, 272, 275, 271, 271, 271, 271, 271, + 271, 275, 271, 275, 275, 275, 275, 271, 271, 272, + 275, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 275, 275, 275, 275, 272, 275, 271, 271, 271, + 271, 271, 275, 275, 275, 275, 271, 272, 275, 271, + 271, 271, 271, 271, 275, 275, 275, 275, 271, 271, + 272, 275, 271, 276, 276, 276, 275, 275, 275, 275, + 276, 272, 276, 276, 275, 276, 275, 276, 274, 275, + 272, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 275, 276, 275, 275, 276, 276, + + 274, 275, 272, 275, 272, 275, 275, 275, 275, 275, + 276, 276, 275, 275, 275, 275, 275, 275, 275, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 275, 275, 276, 276, 276, 276, + 274, 277, 277, 275, 274, 276, 275, 275, 274, 276, + 274, 276, 277, 276, 312, 312, 324, 313, 1348, 1354, + + 1373, 1374, 1379, 271, 1376, 312, 312, 312, 312, 312, + 312, 312, 271, 1335, 1380, 271, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 1381, 1382, 1383, 314, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 314, 314, + 315, 315, 312, 314, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 315, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 315, 315, + 315, 315, 315, 315, 312, 312, 312, 314, 312, 315, + + 313, 315, 312, 312, 312, 312, 312, 315, 315, 315, + 312, 315, 315, 313, 315, 312, 315, 312, 315, 315, + 315, 312, 315, 313, 315, 312, 312, 312, 312, 312, + 312, 315, 315, 315, 315, 315, 315, 315, 312, 312, + 315, 313, 312, 315, 312, 312, 312, 312, 312, 312, + 312, 315, 315, 315, 315, 315, 315, 312, 312, 313, + 315, 312, 315, 312, 312, 312, 312, 312, 312, 312, + 315, 312, 315, 315, 315, 312, 313, 315, 312, 312, + 312, 312, 312, 312, 315, 312, 315, 315, 315, 315, + 312, 312, 313, 315, 312, 312, 312, 312, 312, 312, + + 312, 312, 312, 312, 315, 315, 315, 315, 313, 315, + 312, 312, 312, 312, 312, 315, 315, 315, 315, 312, + 313, 315, 312, 312, 312, 312, 312, 315, 315, 315, + 315, 312, 312, 313, 315, 312, 316, 316, 316, 315, + 315, 315, 315, 316, 313, 316, 316, 315, 316, 315, + 316, 314, 315, 313, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 315, 316, 315, + 315, 316, 316, 314, 315, 313, 315, 313, 315, 315, + 315, 315, 315, 316, 316, 315, 315, 315, 315, 315, + 315, 315, 316, 316, 316, 316, 316, 316, 316, 316, + + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 315, 315, 316, + 316, 316, 316, 314, 317, 317, 315, 314, 316, 315, + 315, 314, 316, 314, 316, 317, 316, 324, 324, 1355, + 325, 326, 1375, 1384, 1385, 271, 1386, 1387, 324, 324, + 324, 324, 324, 324, 324, 1388, 271, 1389, 1391, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 1392, 1393, 1394, 327, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 327, 327, 328, 328, 324, 327, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 328, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 328, 328, 328, 328, 328, 328, 324, 324, 324, + 327, 324, 328, 325, 328, 324, 324, 324, 324, 324, + 328, 328, 328, 324, 328, 328, 325, 328, 324, 328, + 324, 328, 328, 328, 324, 328, 325, 328, 324, 324, + + 324, 324, 324, 324, 328, 328, 328, 328, 328, 328, + 328, 324, 324, 328, 325, 324, 328, 324, 324, 324, + 324, 324, 324, 324, 328, 328, 328, 328, 328, 328, + 324, 324, 325, 328, 324, 328, 324, 324, 324, 324, + 324, 324, 324, 328, 324, 328, 328, 328, 324, 325, + 328, 324, 324, 324, 324, 324, 324, 328, 324, 328, + 328, 328, 328, 324, 324, 325, 328, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 328, 328, 328, + 328, 325, 328, 324, 324, 324, 324, 324, 328, 328, + 328, 328, 324, 325, 328, 324, 324, 324, 324, 324, + + 328, 328, 328, 328, 324, 324, 325, 328, 324, 329, + 329, 329, 328, 328, 328, 328, 329, 325, 329, 329, + 328, 329, 328, 329, 327, 328, 325, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 328, 329, 328, 328, 329, 329, 327, 328, 325, 328, + 325, 328, 328, 328, 328, 328, 329, 329, 328, 328, + 328, 328, 328, 328, 328, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 328, 328, 329, 329, 329, 329, 327, 330, 330, 328, + 327, 329, 328, 328, 327, 329, 327, 329, 330, 329, + 424, 424, 1395, 425, 1390, 1390, 1390, 1390, 1396, 1397, + 324, 424, 424, 424, 424, 424, 424, 424, 324, 324, + 1406, 1400, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 1407, 1408, 1409, + 426, 424, 424, 424, 424, 424, 424, 424, 424, 424, + + 424, 424, 424, 424, 426, 426, 427, 427, 424, 426, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 427, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 427, 427, 427, 427, 427, 427, + 424, 424, 424, 426, 424, 427, 425, 427, 424, 424, + 424, 424, 424, 427, 427, 427, 424, 427, 427, 425, + 427, 424, 427, 424, 427, 427, 427, 424, 427, 425, + 427, 424, 424, 424, 424, 424, 424, 427, 427, 427, + 427, 427, 427, 427, 424, 424, 427, 425, 424, 427, + 424, 424, 424, 424, 424, 424, 424, 427, 427, 427, + + 427, 427, 427, 424, 424, 425, 427, 424, 427, 424, + 424, 424, 424, 424, 424, 424, 427, 424, 427, 427, + 427, 424, 425, 427, 424, 424, 424, 424, 424, 424, + 427, 424, 427, 427, 427, 427, 424, 424, 425, 427, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 427, 427, 427, 427, 425, 427, 424, 424, 424, 424, + 424, 427, 427, 427, 427, 424, 425, 427, 424, 424, + 424, 424, 424, 427, 427, 427, 427, 424, 424, 425, + 427, 424, 428, 428, 428, 427, 427, 427, 427, 428, + 425, 428, 428, 427, 428, 427, 428, 426, 427, 425, + + 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, + 428, 428, 428, 427, 428, 427, 427, 428, 428, 426, + 427, 425, 427, 425, 427, 427, 427, 427, 427, 428, + 428, 427, 427, 427, 427, 427, 427, 427, 428, 428, + 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, + 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, + 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, + 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, + 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, + 428, 428, 428, 427, 427, 428, 428, 428, 428, 426, + + 429, 429, 427, 426, 428, 427, 427, 426, 428, 426, + 428, 429, 428, 441, 441, 324, 442, 443, 324, 1410, + 1398, 1398, 1398, 1398, 441, 441, 441, 441, 441, 441, + 441, 1399, 1346, 1401, 1402, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 324, 1412, 1349, 444, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 444, 444, 445, + 445, 441, 444, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 445, 441, 441, + + 441, 441, 441, 441, 441, 441, 441, 445, 445, 445, + 445, 445, 445, 441, 441, 441, 444, 441, 445, 442, + 445, 441, 441, 441, 441, 441, 445, 445, 445, 441, + 445, 445, 442, 445, 441, 445, 441, 445, 445, 445, + 441, 445, 442, 445, 441, 441, 441, 441, 441, 441, + 445, 445, 445, 445, 445, 445, 445, 441, 441, 445, + 442, 441, 445, 441, 441, 441, 441, 441, 441, 441, + 445, 445, 445, 445, 445, 445, 441, 441, 442, 445, + 441, 445, 441, 441, 441, 441, 441, 441, 441, 445, + 441, 445, 445, 445, 441, 442, 445, 441, 441, 441, + + 441, 441, 441, 445, 441, 445, 445, 445, 445, 441, + 441, 442, 445, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 445, 445, 445, 445, 442, 445, 441, + 441, 441, 441, 441, 445, 445, 445, 445, 441, 442, + 445, 441, 441, 441, 441, 441, 445, 445, 445, 445, + 441, 441, 442, 445, 441, 446, 446, 446, 445, 445, + 445, 445, 446, 442, 446, 446, 445, 446, 445, 446, + 444, 445, 442, 446, 446, 446, 446, 446, 446, 446, + 446, 446, 446, 446, 446, 446, 445, 446, 445, 445, + 446, 446, 444, 445, 442, 445, 442, 445, 445, 445, + + 445, 445, 446, 446, 445, 445, 445, 445, 445, 445, + 445, 446, 446, 446, 446, 446, 446, 446, 446, 446, + 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, + 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, + 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, + 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, + 446, 446, 446, 446, 446, 446, 445, 445, 446, 446, + 446, 446, 444, 447, 447, 445, 444, 446, 445, 445, + 444, 446, 444, 446, 447, 446, 491, 491, 491, 491, + 491, 491, 491, 324, 1427, 271, 1405, 491, 491, 491, + + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 1413, 324, 271, 1428, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 324, + 1404, 1430, 1433, 491, 1403, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 1434, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 1280, + 1280, 1280, 1280, 1422, 271, 491, 491, 491, 271, 491, + 270, 1432, 271, 491, 491, 491, 491, 491, 1435, 1347, + 271, 491, 1365, 1365, 1365, 1365, 491, 1436, 491, 1437, + + 271, 1438, 491, 270, 271, 1440, 491, 491, 491, 491, + 491, 491, 1426, 1245, 1245, 1245, 1245, 1441, 1442, 491, + 491, 1443, 1444, 491, 1446, 491, 491, 491, 491, 491, + 491, 491, 1447, 1368, 1368, 1368, 1368, 1448, 491, 491, + 1449, 1452, 491, 1453, 491, 491, 491, 491, 491, 491, + 491, 324, 491, 1369, 1323, 1324, 491, 1459, 1450, 491, + 491, 491, 491, 491, 491, 1455, 491, 1451, 1460, 1325, + 1326, 491, 491, 1327, 324, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 1285, 1285, 1285, 1285, 1456, + 271, 491, 491, 491, 491, 491, 270, 1458, 324, 324, + + 491, 1457, 1461, 491, 491, 491, 491, 491, 1356, 1356, + 1356, 1356, 491, 491, 1462, 1346, 491, 492, 492, 492, + 1439, 1439, 1439, 1439, 492, 324, 492, 492, 1464, 492, + 1418, 492, 1428, 1430, 1433, 492, 492, 492, 492, 492, + 492, 492, 492, 492, 492, 492, 492, 492, 1287, 492, + 1485, 1486, 492, 492, 1476, 1398, 1398, 1398, 1398, 271, + 271, 271, 1487, 1490, 492, 492, 1399, 1491, 1494, 1495, + 1496, 1360, 271, 492, 492, 492, 492, 492, 492, 492, + 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, + 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, + + 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, + 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, + 492, 492, 492, 492, 492, 492, 492, 492, 1465, 1478, + 492, 492, 492, 492, 1497, 493, 493, 1498, 1499, 492, + 1500, 1501, 1488, 492, 271, 492, 493, 492, 269, 269, + 269, 269, 271, 1502, 1365, 1365, 1365, 1365, 1489, 270, + 1503, 1504, 1505, 1506, 271, 271, 1507, 272, 273, 271, + 1366, 1513, 271, 324, 1367, 271, 271, 271, 271, 271, + 271, 271, 1509, 324, 1512, 1514, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 1515, 1346, 274, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 274, 274, + 275, 275, 271, 274, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 275, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 275, 275, + 275, 275, 275, 275, 271, 271, 271, 274, 271, 275, + 272, 275, 271, 271, 271, 271, 271, 275, 275, 275, + 271, 275, 275, 272, 275, 271, 275, 271, 275, 275, + 275, 271, 275, 272, 275, 271, 271, 271, 271, 271, + + 271, 275, 275, 275, 275, 275, 275, 275, 271, 271, + 275, 272, 271, 275, 271, 271, 271, 271, 271, 271, + 271, 275, 275, 275, 275, 275, 275, 271, 271, 272, + 275, 271, 275, 271, 271, 271, 271, 271, 271, 271, + 275, 271, 275, 275, 275, 271, 272, 275, 271, 271, + 271, 271, 271, 271, 275, 271, 275, 275, 275, 275, + 271, 271, 272, 275, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 275, 275, 275, 275, 272, 275, + 271, 271, 271, 271, 271, 275, 275, 275, 275, 271, + 272, 275, 271, 271, 271, 271, 271, 275, 275, 275, + + 275, 271, 271, 272, 275, 271, 276, 276, 276, 275, + 275, 275, 275, 276, 272, 276, 276, 275, 276, 275, + 276, 274, 275, 272, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 275, 276, 275, + 275, 276, 276, 274, 275, 272, 275, 272, 275, 275, + 275, 275, 275, 276, 276, 275, 275, 275, 275, 275, + 275, 275, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 275, 275, 276, + 276, 276, 276, 274, 277, 277, 275, 274, 276, 275, + 275, 274, 276, 274, 276, 277, 276, 499, 1368, 1368, + 1368, 1368, 1477, 324, 1390, 1390, 1390, 1390, 1510, 270, + 1527, 500, 500, 500, 500, 500, 500, 500, 1429, 1516, + 271, 1528, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 1520, 1522, 271, + 1523, 500, 500, 500, 500, 500, 500, 500, 500, 500, + + 500, 500, 500, 500, 1445, 271, 1529, 271, 500, 1530, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 1531, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 1370, 1370, 1370, 1370, 324, 1521, + 500, 500, 500, 1511, 500, 270, 1533, 1534, 500, 500, + 500, 500, 500, 271, 1431, 1535, 500, 1377, 1377, 1377, + 1377, 500, 1525, 500, 1524, 1536, 1537, 500, 270, 1538, + 271, 500, 500, 500, 500, 500, 500, 1526, 1539, 271, + 1540, 1542, 1543, 271, 500, 500, 1549, 1545, 500, 324, + 500, 500, 500, 500, 500, 500, 500, 324, 1377, 1377, + + 1377, 1377, 1550, 500, 500, 1546, 1565, 500, 1566, 500, + 500, 500, 500, 500, 500, 500, 1547, 500, 1567, 324, + 1378, 500, 324, 1558, 500, 500, 500, 500, 500, 500, + 1548, 500, 1439, 1439, 1439, 1439, 500, 500, 1563, 271, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 1466, 1466, 1466, 1466, 1561, 271, 500, 500, 500, 500, + 500, 1378, 271, 1568, 271, 500, 1551, 1569, 500, 500, + 500, 500, 500, 1532, 1532, 1532, 1532, 500, 500, 1492, + 271, 500, 501, 501, 501, 1562, 271, 1564, 1493, 501, + 1570, 501, 501, 271, 501, 1572, 501, 1573, 1574, 1575, + + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 1470, 501, 1576, 1577, 501, 501, 1541, + 1541, 1541, 1541, 1578, 1580, 1581, 1584, 1588, 1589, 501, + 501, 1591, 271, 1541, 1541, 1541, 1541, 1594, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 1579, 324, 501, 501, 501, 501, 1592, + + 502, 502, 324, 1595, 501, 324, 1598, 1585, 501, 271, + 501, 502, 501, 312, 312, 1590, 313, 1586, 1599, 1587, + 1600, 1593, 1601, 271, 312, 312, 312, 312, 312, 312, + 312, 271, 1602, 1603, 1604, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 1605, 1606, 1607, 314, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 314, 314, 315, + 315, 312, 314, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 315, 312, 312, + + 312, 312, 312, 312, 312, 312, 312, 315, 315, 315, + 315, 315, 315, 312, 312, 312, 314, 312, 315, 313, + 315, 312, 312, 312, 312, 312, 315, 315, 315, 312, + 315, 315, 313, 315, 312, 315, 312, 315, 315, 315, + 312, 315, 313, 315, 312, 312, 312, 312, 312, 312, + 315, 315, 315, 315, 315, 315, 315, 312, 312, 315, + 313, 312, 315, 312, 312, 312, 312, 312, 312, 312, + 315, 315, 315, 315, 315, 315, 312, 312, 313, 315, + 312, 315, 312, 312, 312, 312, 312, 312, 312, 315, + 312, 315, 315, 315, 312, 313, 315, 312, 312, 312, + + 312, 312, 312, 315, 312, 315, 315, 315, 315, 312, + 312, 313, 315, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 315, 315, 315, 315, 313, 315, 312, + 312, 312, 312, 312, 315, 315, 315, 315, 312, 313, + 315, 312, 312, 312, 312, 312, 315, 315, 315, 315, + 312, 312, 313, 315, 312, 316, 316, 316, 315, 315, + 315, 315, 316, 313, 316, 316, 315, 316, 315, 316, + 314, 315, 313, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 315, 316, 315, 315, + 316, 316, 314, 315, 313, 315, 313, 315, 315, 315, + + 315, 315, 316, 316, 315, 315, 315, 315, 315, 315, + 315, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 315, 315, 316, 316, + 316, 316, 314, 317, 317, 315, 314, 316, 315, 315, + 314, 316, 314, 316, 317, 316, 324, 324, 1608, 325, + 326, 1609, 324, 1559, 1559, 1559, 1559, 324, 324, 324, + + 324, 324, 324, 324, 1560, 1614, 1621, 1622, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 1619, 1623, 271, 327, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 327, 327, 328, 328, 324, 327, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 328, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 328, 328, 328, 328, 328, 328, 324, 324, 324, 327, + 324, 328, 325, 328, 324, 324, 324, 324, 324, 328, + + 328, 328, 324, 328, 328, 325, 328, 324, 328, 324, + 328, 328, 328, 324, 328, 325, 328, 324, 324, 324, + 324, 324, 324, 328, 328, 328, 328, 328, 328, 328, + 324, 324, 328, 325, 324, 328, 324, 324, 324, 324, + 324, 324, 324, 328, 328, 328, 328, 328, 328, 324, + 324, 325, 328, 324, 328, 324, 324, 324, 324, 324, + 324, 324, 328, 324, 328, 328, 328, 324, 325, 328, + 324, 324, 324, 324, 324, 324, 328, 324, 328, 328, + 328, 328, 324, 324, 325, 328, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 328, 328, 328, 328, + + 325, 328, 324, 324, 324, 324, 324, 328, 328, 328, + 328, 324, 325, 328, 324, 324, 324, 324, 324, 328, + 328, 328, 328, 324, 324, 325, 328, 324, 329, 329, + 329, 328, 328, 328, 328, 329, 325, 329, 329, 328, + 329, 328, 329, 327, 328, 325, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 328, + 329, 328, 328, 329, 329, 327, 328, 325, 328, 325, + 328, 328, 328, 328, 328, 329, 329, 328, 328, 328, + 328, 328, 328, 328, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 328, + 328, 329, 329, 329, 329, 327, 330, 330, 328, 327, + 329, 328, 328, 327, 329, 327, 329, 330, 329, 540, + 540, 540, 540, 540, 540, 540, 1624, 1625, 1626, 1627, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 1532, 1532, 1532, 1532, 540, + + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 1628, 1629, 1631, 1640, 540, 1641, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 324, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 1419, 1419, 1419, 1419, 1610, 324, 540, 540, + 540, 1571, 540, 270, 271, 1637, 540, 540, 540, 540, + 540, 1611, 1475, 1616, 540, 1582, 1582, 1582, 1582, 540, + 1642, 540, 1615, 1643, 1644, 540, 1583, 271, 324, 540, + 540, 540, 540, 540, 540, 271, 1559, 1559, 1559, 1559, + 1630, 1620, 540, 540, 1645, 1646, 540, 1560, 540, 540, + + 540, 540, 540, 540, 540, 271, 1634, 1617, 324, 324, + 1618, 540, 540, 271, 271, 540, 271, 540, 540, 540, + 540, 540, 540, 540, 1647, 540, 1635, 1658, 1636, 540, + 1657, 1659, 540, 540, 540, 540, 540, 540, 271, 540, + 271, 1661, 1662, 271, 540, 540, 271, 1651, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 1582, 1582, + 1582, 1582, 1652, 1667, 540, 540, 540, 540, 540, 1583, + 1663, 1669, 324, 540, 1670, 271, 540, 540, 540, 540, + 540, 1660, 1660, 1660, 1660, 540, 540, 1671, 1672, 540, + 541, 541, 541, 324, 1676, 1667, 1669, 541, 1678, 541, + + 541, 1679, 541, 1680, 541, 1676, 1683, 1674, 541, 541, + 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, + 541, 1684, 541, 324, 1687, 541, 541, 1681, 1596, 1596, + 1596, 1596, 1612, 1612, 1612, 1612, 1682, 541, 541, 1597, + 1688, 271, 1693, 1613, 638, 1125, 541, 541, 541, 541, + 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, + 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, + 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, + 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, + 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, + + 541, 1677, 324, 541, 541, 541, 541, 1686, 542, 542, + 1689, 271, 541, 271, 324, 1124, 541, 1123, 541, 542, + 541, 424, 424, 1685, 425, 1122, 1121, 1120, 1638, 1638, + 1638, 1638, 424, 424, 424, 424, 424, 424, 424, 1639, + 1119, 1118, 1117, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 1116, 271, + 1115, 426, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 426, 426, 427, 427, 424, + 426, 424, 424, 424, 424, 424, 424, 424, 424, 424, + + 424, 424, 424, 424, 424, 427, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 427, 427, 427, 427, 427, + 427, 424, 424, 424, 426, 424, 427, 425, 427, 424, + 424, 424, 424, 424, 427, 427, 427, 424, 427, 427, + 425, 427, 424, 427, 424, 427, 427, 427, 424, 427, + 425, 427, 424, 424, 424, 424, 424, 424, 427, 427, + 427, 427, 427, 427, 427, 424, 424, 427, 425, 424, + 427, 424, 424, 424, 424, 424, 424, 424, 427, 427, + 427, 427, 427, 427, 424, 424, 425, 427, 424, 427, + 424, 424, 424, 424, 424, 424, 424, 427, 424, 427, + + 427, 427, 424, 425, 427, 424, 424, 424, 424, 424, + 424, 427, 424, 427, 427, 427, 427, 424, 424, 425, + 427, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 427, 427, 427, 427, 425, 427, 424, 424, 424, + 424, 424, 427, 427, 427, 427, 424, 425, 427, 424, + 424, 424, 424, 424, 427, 427, 427, 427, 424, 424, + 425, 427, 424, 428, 428, 428, 427, 427, 427, 427, + 428, 425, 428, 428, 427, 428, 427, 428, 426, 427, + 425, 428, 428, 428, 428, 428, 428, 428, 428, 428, + 428, 428, 428, 428, 427, 428, 427, 427, 428, 428, + + 426, 427, 425, 427, 425, 427, 427, 427, 427, 427, + 428, 428, 427, 427, 427, 427, 427, 427, 427, 428, + 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, + 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, + 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, + 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, + 428, 428, 428, 428, 428, 428, 428, 428, 428, 428, + 428, 428, 428, 428, 427, 427, 428, 428, 428, 428, + 426, 429, 429, 427, 426, 428, 427, 427, 426, 428, + 426, 428, 429, 428, 441, 441, 1002, 442, 443, 271, + + 271, 1648, 1648, 1648, 1648, 441, 441, 441, 441, 441, + 441, 441, 1649, 1104, 1100, 1099, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 1095, 1094, 846, 444, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 444, 444, + 445, 445, 441, 444, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 445, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 445, 445, + 445, 445, 445, 445, 441, 441, 441, 444, 441, 445, + + 442, 445, 441, 441, 441, 441, 441, 445, 445, 445, + 441, 445, 445, 442, 445, 441, 445, 441, 445, 445, + 445, 441, 445, 442, 445, 441, 441, 441, 441, 441, + 441, 445, 445, 445, 445, 445, 445, 445, 441, 441, + 445, 442, 441, 445, 441, 441, 441, 441, 441, 441, + 441, 445, 445, 445, 445, 445, 445, 441, 441, 442, + 445, 441, 445, 441, 441, 441, 441, 441, 441, 441, + 445, 441, 445, 445, 445, 441, 442, 445, 441, 441, + 441, 441, 441, 441, 445, 441, 445, 445, 445, 445, + 441, 441, 442, 445, 441, 441, 441, 441, 441, 441, + + 441, 441, 441, 441, 445, 445, 445, 445, 442, 445, + 441, 441, 441, 441, 441, 445, 445, 445, 445, 441, + 442, 445, 441, 441, 441, 441, 441, 445, 445, 445, + 445, 441, 441, 442, 445, 441, 446, 446, 446, 445, + 445, 445, 445, 446, 442, 446, 446, 445, 446, 445, + 446, 444, 445, 442, 446, 446, 446, 446, 446, 446, + 446, 446, 446, 446, 446, 446, 446, 445, 446, 445, + 445, 446, 446, 444, 445, 442, 445, 442, 445, 445, + 445, 445, 445, 446, 446, 445, 445, 445, 445, 445, + 445, 445, 446, 446, 446, 446, 446, 446, 446, 446, + + 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, + 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, + 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, + 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, + 446, 446, 446, 446, 446, 446, 446, 445, 445, 446, + 446, 446, 446, 444, 447, 447, 445, 444, 446, 445, + 445, 444, 446, 444, 446, 447, 446, 635, 635, 635, + 635, 635, 635, 635, 1093, 1092, 1091, 1090, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + + 635, 635, 635, 1660, 1660, 1660, 1660, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 1089, 1088, 1087, 1086, 635, 1085, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 1084, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 1612, 1612, 1612, 1612, 1083, 1082, 635, 635, 635, 1081, + 635, 1613, 1080, 1673, 635, 635, 635, 635, 635, 1079, + 1078, 1077, 635, 1694, 1694, 1694, 1694, 635, 1076, 635, + 1074, 1073, 1072, 635, 1695, 1071, 1070, 635, 635, 635, + 635, 635, 635, 324, 1596, 1596, 1596, 1596, 1069, 1068, + + 635, 635, 324, 324, 635, 1597, 635, 635, 635, 635, + 635, 635, 635, 324, 1632, 1632, 1632, 1632, 324, 635, + 635, 1053, 1051, 635, 1046, 635, 635, 635, 635, 635, + 635, 635, 1045, 635, 1633, 1044, 1043, 635, 1042, 1041, + 635, 635, 635, 635, 635, 635, 1040, 635, 1039, 1038, + 1037, 271, 635, 635, 1036, 1035, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 1648, 1648, 1648, 1648, + 1034, 271, 635, 635, 635, 635, 635, 1649, 1033, 1032, + 1031, 635, 1030, 1029, 635, 635, 635, 635, 635, 1699, + 1699, 1699, 1699, 635, 635, 1028, 1027, 635, 636, 636, + + 636, 1026, 1025, 1024, 1023, 636, 1022, 636, 636, 324, + 636, 1021, 636, 1020, 1019, 1018, 636, 636, 636, 636, + 636, 636, 636, 636, 636, 636, 636, 636, 636, 1017, + 636, 1016, 1013, 636, 636, 1012, 1011, 1010, 1009, 1008, + 1007, 271, 997, 993, 271, 636, 636, 982, 981, 846, + 670, 670, 1702, 664, 636, 636, 636, 636, 636, 636, + 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, + 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, + 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, + 636, 636, 636, 636, 636, 636, 636, 636, 636, 636, + + 636, 636, 636, 636, 636, 636, 636, 636, 636, 664, + 979, 636, 636, 636, 636, 978, 637, 637, 977, 976, + 636, 975, 974, 973, 636, 972, 636, 637, 636, 672, + 672, 971, 673, 970, 969, 968, 967, 966, 965, 964, + 672, 672, 672, 672, 672, 672, 672, 963, 962, 961, + 960, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 958, 957, 956, 674, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 674, 674, 675, 675, 672, 674, 672, + + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 675, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 675, 675, 675, 675, 675, 675, 672, + 672, 672, 674, 672, 675, 673, 675, 672, 672, 672, + 672, 672, 675, 675, 675, 672, 675, 675, 673, 675, + 672, 675, 672, 675, 675, 675, 672, 675, 673, 675, + 672, 672, 672, 672, 672, 672, 675, 675, 675, 675, + 675, 675, 675, 672, 672, 675, 673, 672, 675, 672, + 672, 672, 672, 672, 672, 672, 675, 675, 675, 675, + 675, 675, 672, 672, 673, 675, 672, 675, 672, 672, + + 672, 672, 672, 672, 672, 675, 672, 675, 675, 675, + 672, 673, 675, 672, 672, 672, 672, 672, 672, 675, + 672, 675, 675, 675, 675, 672, 672, 673, 675, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 675, + 675, 675, 675, 673, 675, 672, 672, 672, 672, 672, + 675, 675, 675, 675, 672, 673, 675, 672, 672, 672, + 672, 672, 675, 675, 675, 675, 672, 672, 673, 675, + 672, 676, 676, 676, 675, 675, 675, 675, 676, 673, + 676, 676, 675, 676, 675, 676, 674, 675, 673, 676, + 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, + + 676, 676, 675, 676, 675, 675, 676, 676, 674, 675, + 673, 675, 673, 675, 675, 675, 675, 675, 676, 676, + 675, 675, 675, 675, 675, 675, 675, 676, 676, 676, + 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, + 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, + 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, + 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, + 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, + 676, 676, 675, 675, 676, 676, 676, 676, 674, 677, + 677, 675, 674, 676, 675, 675, 674, 676, 674, 676, + + 677, 676, 269, 269, 269, 269, 955, 954, 1370, 1370, + 1370, 1370, 953, 270, 952, 951, 324, 324, 680, 680, + 324, 681, 324, 324, 1371, 926, 923, 922, 1372, 680, + 680, 680, 680, 680, 680, 680, 921, 920, 919, 918, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 271, 917, 916, 682, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 682, 682, 683, 683, 680, 682, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + + 680, 680, 683, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 683, 683, 683, 683, 683, 683, 680, 680, + 680, 682, 680, 683, 681, 683, 680, 680, 680, 680, + 680, 683, 683, 683, 680, 683, 683, 681, 683, 680, + 683, 680, 683, 683, 683, 680, 683, 681, 683, 680, + 680, 680, 680, 680, 680, 683, 683, 683, 683, 683, + 683, 683, 680, 680, 683, 681, 680, 683, 680, 680, + 680, 680, 680, 680, 680, 683, 683, 683, 683, 683, + 683, 680, 680, 681, 683, 680, 683, 680, 680, 680, + 680, 680, 680, 680, 683, 680, 683, 683, 683, 680, + + 681, 683, 680, 680, 680, 680, 680, 680, 683, 680, + 683, 683, 683, 683, 680, 680, 681, 683, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 683, 683, + 683, 683, 681, 683, 680, 680, 680, 680, 680, 683, + 683, 683, 683, 680, 681, 683, 680, 680, 680, 680, + 680, 683, 683, 683, 683, 680, 680, 681, 683, 680, + 684, 684, 684, 683, 683, 683, 683, 684, 681, 684, + 684, 683, 684, 683, 684, 682, 683, 681, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, + 684, 683, 684, 683, 683, 684, 684, 682, 683, 681, + + 683, 681, 683, 683, 683, 683, 683, 684, 684, 683, + 683, 683, 683, 683, 683, 683, 684, 684, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, + 684, 683, 683, 684, 684, 684, 684, 682, 685, 685, + 683, 682, 684, 683, 683, 682, 684, 682, 684, 685, + 684, 269, 269, 269, 269, 915, 914, 1419, 1419, 1419, + + 1419, 913, 270, 912, 911, 910, 909, 271, 271, 908, + 272, 273, 907, 1420, 906, 905, 903, 1421, 271, 271, + 271, 271, 271, 271, 271, 902, 901, 900, 899, 271, + 271, 271, 271, 271, 686, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 898, 897, 274, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 274, 274, 275, 275, 271, 274, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 275, 271, 271, 271, 271, 271, 271, 271, 271, + + 271, 275, 275, 275, 275, 275, 275, 271, 271, 271, + 274, 271, 275, 272, 275, 271, 271, 271, 271, 271, + 275, 275, 275, 271, 275, 275, 272, 275, 271, 275, + 271, 275, 275, 275, 271, 275, 272, 275, 271, 271, + 271, 271, 271, 271, 275, 275, 275, 275, 275, 275, + 275, 271, 271, 275, 272, 271, 275, 271, 271, 271, + 271, 271, 271, 271, 275, 275, 275, 275, 275, 275, + 271, 271, 272, 275, 271, 275, 271, 271, 271, 271, + 271, 271, 271, 275, 271, 275, 275, 275, 271, 272, + 275, 271, 271, 271, 271, 271, 271, 275, 271, 275, + + 275, 275, 275, 271, 271, 272, 275, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 275, 275, 275, + 275, 272, 275, 271, 271, 271, 271, 271, 275, 275, + 275, 275, 271, 272, 275, 271, 271, 271, 271, 271, + 275, 275, 275, 275, 271, 271, 272, 275, 271, 276, + 276, 276, 275, 275, 275, 275, 276, 272, 276, 276, + 275, 276, 275, 276, 274, 275, 272, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 275, 276, 275, 275, 276, 276, 274, 275, 272, 275, + 272, 275, 275, 275, 275, 275, 276, 276, 275, 275, + + 275, 275, 275, 275, 275, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 275, 275, 276, 276, 276, 276, 274, 277, 277, 275, + 274, 276, 275, 275, 274, 276, 274, 276, 277, 276, + 718, 718, 896, 719, 895, 894, 893, 892, 891, 890, + 889, 718, 718, 718, 718, 718, 718, 718, 888, 887, + + 886, 884, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 883, 882, 881, + 720, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 720, 720, 721, 721, 718, 720, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 721, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 721, 721, 721, 721, 721, 721, + 718, 718, 718, 720, 718, 721, 719, 721, 718, 718, + 718, 718, 718, 721, 721, 721, 718, 721, 721, 719, + + 721, 718, 721, 718, 721, 721, 721, 718, 721, 719, + 721, 718, 718, 718, 718, 718, 718, 721, 721, 721, + 721, 721, 721, 721, 718, 718, 721, 719, 718, 721, + 718, 718, 718, 718, 718, 718, 718, 721, 721, 721, + 721, 721, 721, 718, 718, 719, 721, 718, 721, 718, + 718, 718, 718, 718, 718, 718, 721, 718, 721, 721, + 721, 718, 719, 721, 718, 718, 718, 718, 718, 718, + 721, 718, 721, 721, 721, 721, 718, 718, 719, 721, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 721, 721, 721, 721, 719, 721, 718, 718, 718, 718, + + 718, 721, 721, 721, 721, 718, 719, 721, 718, 718, + 718, 718, 718, 721, 721, 721, 721, 718, 718, 719, + 721, 718, 722, 722, 722, 721, 721, 721, 721, 722, + 719, 722, 722, 721, 722, 721, 722, 720, 721, 719, + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + 722, 722, 722, 721, 722, 721, 721, 722, 722, 720, + 721, 719, 721, 719, 721, 721, 721, 721, 721, 722, + 722, 721, 721, 721, 721, 721, 721, 721, 722, 722, + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + 722, 722, 722, 721, 721, 722, 722, 722, 722, 720, + 723, 723, 721, 720, 722, 721, 721, 720, 722, 720, + 722, 723, 722, 324, 324, 880, 325, 326, 536, 536, + 874, 271, 860, 847, 324, 324, 324, 324, 324, 324, + 324, 846, 844, 253, 843, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + + 670, 841, 250, 327, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 327, 327, 328, + 328, 324, 327, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 328, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 328, 328, 328, + 328, 328, 328, 324, 324, 324, 327, 324, 328, 325, + 328, 324, 324, 324, 324, 324, 328, 328, 328, 324, + 328, 328, 325, 328, 324, 328, 324, 328, 328, 328, + 324, 328, 325, 328, 324, 324, 324, 324, 324, 324, + 328, 328, 328, 328, 328, 328, 328, 324, 324, 328, + + 325, 324, 328, 324, 324, 324, 324, 324, 324, 324, + 328, 328, 328, 328, 328, 328, 324, 324, 325, 328, + 324, 328, 324, 324, 324, 324, 324, 324, 324, 328, + 324, 328, 328, 328, 324, 325, 328, 324, 324, 324, + 324, 324, 324, 328, 324, 328, 328, 328, 328, 324, + 324, 325, 328, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 328, 328, 328, 328, 325, 328, 324, + 324, 324, 324, 324, 328, 328, 328, 328, 324, 325, + 328, 324, 324, 324, 324, 324, 328, 328, 328, 328, + 324, 324, 325, 328, 324, 329, 329, 329, 328, 328, + + 328, 328, 329, 325, 329, 329, 328, 329, 328, 329, + 327, 328, 325, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 328, 329, 328, 328, + 329, 329, 327, 328, 325, 328, 325, 328, 328, 328, + 328, 328, 329, 329, 328, 328, 328, 328, 328, 328, + 328, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + + 329, 329, 329, 329, 329, 329, 328, 328, 329, 329, + 329, 329, 327, 330, 330, 328, 327, 329, 328, 328, + 327, 329, 327, 329, 330, 329, 813, 813, 840, 814, + 664, 838, 837, 836, 835, 834, 833, 813, 813, 813, + 813, 813, 813, 813, 832, 831, 830, 829, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 828, 827, 826, 815, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 815, 815, 816, 816, 813, 815, 813, 813, 813, 813, + + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 816, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 816, 816, 816, 816, 816, 816, 813, 813, 813, 815, + 813, 816, 814, 816, 813, 813, 813, 813, 813, 816, + 816, 816, 813, 816, 816, 814, 816, 813, 816, 813, + 816, 816, 816, 813, 816, 814, 816, 813, 813, 813, + 813, 813, 813, 816, 816, 816, 816, 816, 816, 816, + 813, 813, 816, 814, 813, 816, 813, 813, 813, 813, + 813, 813, 813, 816, 816, 816, 816, 816, 816, 813, + 813, 814, 816, 813, 816, 813, 813, 813, 813, 813, + + 813, 813, 816, 813, 816, 816, 816, 813, 814, 816, + 813, 813, 813, 813, 813, 813, 816, 813, 816, 816, + 816, 816, 813, 813, 814, 816, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 816, 816, 816, 816, + 814, 816, 813, 813, 813, 813, 813, 816, 816, 816, + 816, 813, 814, 816, 813, 813, 813, 813, 813, 816, + 816, 816, 816, 813, 813, 814, 816, 813, 817, 817, + 817, 816, 816, 816, 816, 817, 814, 817, 817, 816, + 817, 816, 817, 815, 816, 814, 817, 817, 817, 817, + 817, 817, 817, 817, 817, 817, 817, 817, 817, 816, + + 817, 816, 816, 817, 817, 815, 816, 814, 816, 814, + 816, 816, 816, 816, 816, 817, 817, 816, 816, 816, + 816, 816, 816, 816, 817, 817, 817, 817, 817, 817, + 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, + 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, + 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, + 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, + 817, 817, 817, 817, 817, 817, 817, 817, 817, 816, + 816, 817, 817, 817, 817, 815, 818, 818, 816, 815, + 817, 816, 816, 815, 817, 815, 817, 818, 817, 672, + + 672, 825, 673, 824, 823, 822, 821, 820, 819, 450, + 672, 672, 672, 672, 672, 672, 672, 812, 811, 808, + 807, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 806, 805, 804, 674, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 674, 674, 675, 675, 672, 674, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 675, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 675, 675, 675, 675, 675, 675, 672, + + 672, 672, 674, 672, 675, 673, 675, 672, 672, 672, + 672, 672, 675, 675, 675, 672, 675, 675, 673, 675, + 672, 675, 672, 675, 675, 675, 672, 675, 673, 675, + 672, 672, 672, 672, 672, 672, 675, 675, 675, 675, + 675, 675, 675, 672, 672, 675, 673, 672, 675, 672, + 672, 672, 672, 672, 672, 672, 675, 675, 675, 675, + 675, 675, 672, 672, 673, 675, 672, 675, 672, 672, + 672, 672, 672, 672, 672, 675, 672, 675, 675, 675, + 672, 673, 675, 672, 672, 672, 672, 672, 672, 675, + 672, 675, 675, 675, 675, 672, 672, 673, 675, 672, + + 672, 672, 672, 672, 672, 672, 672, 672, 672, 675, + 675, 675, 675, 673, 675, 672, 672, 672, 672, 672, + 675, 675, 675, 675, 672, 673, 675, 672, 672, 672, + 672, 672, 675, 675, 675, 675, 672, 672, 673, 675, + 672, 676, 676, 676, 675, 675, 675, 675, 676, 673, + 676, 676, 675, 676, 675, 676, 674, 675, 673, 676, + 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, + 676, 676, 675, 676, 675, 675, 676, 676, 674, 675, + 673, 675, 673, 675, 675, 675, 675, 675, 676, 676, + 675, 675, 675, 675, 675, 675, 675, 676, 676, 676, + + 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, + 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, + 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, + 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, + 676, 676, 676, 676, 676, 676, 676, 676, 676, 676, + 676, 676, 675, 675, 676, 676, 676, 676, 674, 677, + 677, 675, 674, 676, 675, 675, 674, 676, 674, 676, + 677, 676, 269, 269, 269, 269, 803, 802, 801, 1638, + 1638, 1638, 1638, 270, 800, 799, 798, 797, 680, 680, + 1639, 681, 796, 795, 794, 793, 792, 791, 790, 680, + + 680, 680, 680, 680, 680, 680, 789, 788, 787, 786, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 785, 271, 784, 682, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 682, 682, 683, 683, 680, 682, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 683, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 683, 683, 683, 683, 683, 683, 680, 680, + 680, 682, 680, 683, 681, 683, 680, 680, 680, 680, + + 680, 683, 683, 683, 680, 683, 683, 681, 683, 680, + 683, 680, 683, 683, 683, 680, 683, 681, 683, 680, + 680, 680, 680, 680, 680, 683, 683, 683, 683, 683, + 683, 683, 680, 680, 683, 681, 680, 683, 680, 680, + 680, 680, 680, 680, 680, 683, 683, 683, 683, 683, + 683, 680, 680, 681, 683, 680, 683, 680, 680, 680, + 680, 680, 680, 680, 683, 680, 683, 683, 683, 680, + 681, 683, 680, 680, 680, 680, 680, 680, 683, 680, + 683, 683, 683, 683, 680, 680, 681, 683, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 683, 683, + + 683, 683, 681, 683, 680, 680, 680, 680, 680, 683, + 683, 683, 683, 680, 681, 683, 680, 680, 680, 680, + 680, 683, 683, 683, 683, 680, 680, 681, 683, 680, + 684, 684, 684, 683, 683, 683, 683, 684, 681, 684, + 684, 683, 684, 683, 684, 682, 683, 681, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, + 684, 683, 684, 683, 683, 684, 684, 682, 683, 681, + 683, 681, 683, 683, 683, 683, 683, 684, 684, 683, + 683, 683, 683, 683, 683, 683, 684, 684, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, + + 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, + 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, + 684, 683, 683, 684, 684, 684, 684, 682, 685, 685, + 683, 682, 684, 683, 683, 682, 684, 682, 684, 685, + 684, 269, 269, 269, 269, 1632, 1632, 1632, 1632, 783, + 782, 781, 270, 780, 777, 776, 270, 271, 271, 775, + 272, 273, 774, 773, 772, 1650, 771, 770, 271, 271, + 271, 271, 271, 271, 271, 769, 768, 767, 766, 271, + + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 848, 271, 271, + 271, 271, 271, 271, 765, 764, 763, 274, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 274, 274, 275, 275, 271, 274, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 275, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 275, 275, 275, 275, 275, 275, 271, 271, 271, + 274, 271, 275, 272, 275, 271, 271, 271, 271, 271, + 275, 275, 275, 271, 275, 275, 272, 275, 271, 275, + + 271, 275, 275, 275, 271, 275, 272, 275, 271, 271, + 271, 271, 271, 271, 275, 275, 275, 275, 275, 275, + 275, 271, 271, 275, 272, 271, 275, 271, 271, 271, + 271, 271, 271, 271, 275, 275, 275, 275, 275, 275, + 271, 271, 272, 275, 271, 275, 271, 271, 271, 271, + 271, 271, 271, 275, 271, 275, 275, 275, 271, 272, + 275, 271, 271, 271, 271, 271, 271, 275, 271, 275, + 275, 275, 275, 271, 271, 272, 275, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 275, 275, 275, + 275, 272, 275, 271, 271, 271, 271, 271, 275, 275, + + 275, 275, 271, 272, 275, 271, 271, 271, 271, 271, + 275, 275, 275, 275, 271, 271, 272, 275, 271, 276, + 276, 276, 275, 275, 275, 275, 276, 272, 276, 276, + 275, 276, 275, 276, 274, 275, 272, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 275, 276, 275, 275, 276, 276, 274, 275, 272, 275, + 272, 275, 275, 275, 275, 275, 276, 276, 275, 275, + 275, 275, 275, 275, 275, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 275, 275, 276, 276, 276, 276, 274, 277, 277, 275, + 274, 276, 275, 275, 274, 276, 274, 276, 277, 276, + 718, 718, 762, 719, 761, 760, 759, 758, 757, 756, + 755, 718, 718, 718, 718, 718, 718, 718, 754, 752, + 751, 750, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 749, 748, 747, + + 720, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 720, 720, 721, 721, 718, 720, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 721, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 721, 721, 721, 721, 721, 721, + 718, 718, 718, 720, 718, 721, 719, 721, 718, 718, + 718, 718, 718, 721, 721, 721, 718, 721, 721, 719, + 721, 718, 721, 718, 721, 721, 721, 718, 721, 719, + 721, 718, 718, 718, 718, 718, 718, 721, 721, 721, + 721, 721, 721, 721, 718, 718, 721, 719, 718, 721, + + 718, 718, 718, 718, 718, 718, 718, 721, 721, 721, + 721, 721, 721, 718, 718, 719, 721, 718, 721, 718, + 718, 718, 718, 718, 718, 718, 721, 718, 721, 721, + 721, 718, 719, 721, 718, 718, 718, 718, 718, 718, + 721, 718, 721, 721, 721, 721, 718, 718, 719, 721, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 721, 721, 721, 721, 719, 721, 718, 718, 718, 718, + 718, 721, 721, 721, 721, 718, 719, 721, 718, 718, + 718, 718, 718, 721, 721, 721, 721, 718, 718, 719, + 721, 718, 722, 722, 722, 721, 721, 721, 721, 722, + + 719, 722, 722, 721, 722, 721, 722, 720, 721, 719, + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + 722, 722, 722, 721, 722, 721, 721, 722, 722, 720, + 721, 719, 721, 719, 721, 721, 721, 721, 721, 722, + 722, 721, 721, 721, 721, 721, 721, 721, 722, 722, + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, + + 722, 722, 722, 721, 721, 722, 722, 722, 722, 720, + 723, 723, 721, 720, 722, 721, 721, 720, 722, 720, + 722, 723, 722, 324, 324, 746, 325, 326, 745, 744, + 743, 742, 741, 740, 324, 324, 324, 324, 324, 324, + 324, 739, 738, 737, 736, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 927, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 735, 734, 733, 327, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 327, 327, 328, + 328, 324, 327, 324, 324, 324, 324, 324, 324, 324, + + 324, 324, 324, 324, 324, 324, 324, 328, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 328, 328, 328, + 328, 328, 328, 324, 324, 324, 327, 324, 328, 325, + 328, 324, 324, 324, 324, 324, 328, 328, 328, 324, + 328, 328, 325, 328, 324, 328, 324, 328, 328, 328, + 324, 328, 325, 328, 324, 324, 324, 324, 324, 324, + 328, 328, 328, 328, 328, 328, 328, 324, 324, 328, + 325, 324, 328, 324, 324, 324, 324, 324, 324, 324, + 328, 328, 328, 328, 328, 328, 324, 324, 325, 328, + 324, 328, 324, 324, 324, 324, 324, 324, 324, 328, + + 324, 328, 328, 328, 324, 325, 328, 324, 324, 324, + 324, 324, 324, 328, 324, 328, 328, 328, 328, 324, + 324, 325, 328, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 328, 328, 328, 328, 325, 328, 324, + 324, 324, 324, 324, 328, 328, 328, 328, 324, 325, + 328, 324, 324, 324, 324, 324, 328, 328, 328, 328, + 324, 324, 325, 328, 324, 329, 329, 329, 328, 328, + 328, 328, 329, 325, 329, 329, 328, 329, 328, 329, + 327, 328, 325, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 328, 329, 328, 328, + + 329, 329, 327, 328, 325, 328, 325, 328, 328, 328, + 328, 328, 329, 329, 328, 328, 328, 328, 328, 328, + 328, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 328, 328, 329, 329, + 329, 329, 327, 330, 330, 328, 327, 329, 328, 328, + 327, 329, 327, 329, 330, 329, 813, 813, 726, 814, + + 320, 717, 716, 715, 536, 712, 709, 813, 813, 813, + 813, 813, 813, 813, 707, 704, 701, 700, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 699, 698, 271, 815, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 815, 815, 816, 816, 813, 815, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 816, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 816, 816, 816, 816, 816, 816, 813, 813, 813, 815, + + 813, 816, 814, 816, 813, 813, 813, 813, 813, 816, + 816, 816, 813, 816, 816, 814, 816, 813, 816, 813, + 816, 816, 816, 813, 816, 814, 816, 813, 813, 813, + 813, 813, 813, 816, 816, 816, 816, 816, 816, 816, + 813, 813, 816, 814, 813, 816, 813, 813, 813, 813, + 813, 813, 813, 816, 816, 816, 816, 816, 816, 813, + 813, 814, 816, 813, 816, 813, 813, 813, 813, 813, + 813, 813, 816, 813, 816, 816, 816, 813, 814, 816, + 813, 813, 813, 813, 813, 813, 816, 813, 816, 816, + 816, 816, 813, 813, 814, 816, 813, 813, 813, 813, + + 813, 813, 813, 813, 813, 813, 816, 816, 816, 816, + 814, 816, 813, 813, 813, 813, 813, 816, 816, 816, + 816, 813, 814, 816, 813, 813, 813, 813, 813, 816, + 816, 816, 816, 813, 813, 814, 816, 813, 817, 817, + 817, 816, 816, 816, 816, 817, 814, 817, 817, 816, + 817, 816, 817, 815, 816, 814, 817, 817, 817, 817, + 817, 817, 817, 817, 817, 817, 817, 817, 817, 816, + 817, 816, 816, 817, 817, 815, 816, 814, 816, 814, + 816, 816, 816, 816, 816, 817, 817, 816, 816, 816, + 816, 816, 816, 816, 817, 817, 817, 817, 817, 817, + + 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, + 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, + 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, + 817, 817, 817, 817, 817, 817, 817, 817, 817, 817, + 817, 817, 817, 817, 817, 817, 817, 817, 817, 816, + 816, 817, 817, 817, 817, 815, 818, 818, 816, 815, + 817, 816, 816, 815, 817, 815, 817, 818, 817, 269, + 269, 269, 269, 271, 679, 1653, 1653, 1653, 1653, 678, + 270, 496, 496, 671, 670, 271, 271, 670, 272, 273, + 665, 664, 664, 590, 560, 1654, 271, 271, 271, 271, + + 271, 271, 271, 579, 570, 550, 659, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 983, 271, 271, 271, + 271, 271, 271, 658, 657, 274, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 274, + 274, 275, 275, 271, 274, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 275, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 275, + 275, 275, 275, 275, 275, 271, 271, 271, 274, 271, + 275, 272, 275, 271, 271, 271, 271, 271, 275, 275, + + 275, 271, 275, 275, 272, 275, 271, 275, 271, 275, + 275, 275, 271, 275, 272, 275, 271, 271, 271, 271, + 271, 271, 275, 275, 275, 275, 275, 275, 275, 271, + 271, 275, 272, 271, 275, 271, 271, 271, 271, 271, + 271, 271, 275, 275, 275, 275, 275, 275, 271, 271, + 272, 275, 271, 275, 271, 271, 271, 271, 271, 271, + 271, 275, 271, 275, 275, 275, 271, 272, 275, 271, + 271, 271, 271, 271, 271, 275, 271, 275, 275, 275, + 275, 271, 271, 272, 275, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 275, 275, 275, 275, 272, + + 275, 271, 271, 271, 271, 271, 275, 275, 275, 275, + 271, 272, 275, 271, 271, 271, 271, 271, 275, 275, + 275, 275, 271, 271, 272, 275, 271, 276, 276, 276, + 275, 275, 275, 275, 276, 272, 276, 276, 275, 276, + 275, 276, 274, 275, 272, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 275, 276, + 275, 275, 276, 276, 274, 275, 272, 275, 272, 275, + 275, 275, 275, 275, 276, 276, 275, 275, 275, 275, + 275, 275, 275, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 276, 276, 276, 276, 276, 275, 275, + 276, 276, 276, 276, 274, 277, 277, 275, 274, 276, + 275, 275, 274, 276, 274, 276, 277, 276, 499, 1653, + 1653, 1653, 1653, 656, 655, 1002, 654, 653, 652, 651, + 270, 648, 500, 500, 500, 500, 500, 500, 500, 1666, + 647, 646, 645, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + + 500, 500, 500, 500, 500, 500, 500, 500, 644, 643, + 642, 641, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 640, 639, 450, 634, 500, + 603, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 633, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 1655, 1655, 1655, 1655, 632, + 631, 500, 500, 500, 630, 500, 270, 629, 628, 500, + 500, 500, 500, 500, 627, 1668, 626, 500, 625, 624, + 623, 622, 500, 621, 500, 620, 619, 618, 500, 617, + 616, 613, 500, 500, 500, 500, 500, 500, 1655, 1655, + + 1655, 1655, 612, 609, 608, 500, 500, 605, 602, 500, + 601, 500, 500, 500, 500, 500, 500, 500, 1656, 1664, + 1664, 1664, 1664, 600, 500, 500, 599, 598, 500, 597, + 500, 500, 500, 500, 500, 500, 500, 596, 500, 1665, + 593, 592, 500, 589, 588, 500, 500, 500, 500, 500, + 500, 587, 500, 584, 583, 271, 578, 500, 500, 577, + 576, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 1694, 1694, 1694, 1694, 575, 271, 500, 500, 500, + 500, 500, 1695, 574, 573, 572, 500, 571, 568, 500, + 500, 500, 500, 500, 565, 564, 563, 562, 500, 500, + + 558, 557, 500, 501, 501, 501, 556, 549, 548, 546, + 501, 543, 501, 501, 324, 501, 539, 501, 320, 537, + 536, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 536, 501, 531, 530, 501, 501, + 529, 528, 527, 526, 525, 520, 519, 518, 517, 516, + 501, 501, 515, 514, 511, 510, 509, 506, 505, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 504, 503, 501, 501, 501, 501, + 490, 502, 502, 253, 250, 501, 478, 477, 473, 501, + 257, 501, 502, 501, 324, 324, 476, 325, 326, 475, + 474, 473, 257, 472, 471, 324, 324, 324, 324, 324, + 324, 324, 470, 469, 468, 467, 324, 324, 1052, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 464, 463, 462, 327, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 327, 327, + + 328, 328, 324, 327, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 328, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 328, 328, + 328, 328, 328, 328, 324, 324, 324, 327, 324, 328, + 325, 328, 324, 324, 324, 324, 324, 328, 328, 328, + 324, 328, 328, 325, 328, 324, 328, 324, 328, 328, + 328, 324, 328, 325, 328, 324, 324, 324, 324, 324, + 324, 328, 328, 328, 328, 328, 328, 328, 324, 324, + 328, 325, 324, 328, 324, 324, 324, 324, 324, 324, + 324, 328, 328, 328, 328, 328, 328, 324, 324, 325, + + 328, 324, 328, 324, 324, 324, 324, 324, 324, 324, + 328, 324, 328, 328, 328, 324, 325, 328, 324, 324, + 324, 324, 324, 324, 328, 324, 328, 328, 328, 328, + 324, 324, 325, 328, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 328, 328, 328, 328, 325, 328, + 324, 324, 324, 324, 324, 328, 328, 328, 328, 324, + 325, 328, 324, 324, 324, 324, 324, 328, 328, 328, + 328, 324, 324, 325, 328, 324, 329, 329, 329, 328, + 328, 328, 328, 329, 325, 329, 329, 328, 329, 328, + 329, 327, 328, 325, 329, 329, 329, 329, 329, 329, + + 329, 329, 329, 329, 329, 329, 329, 328, 329, 328, + 328, 329, 329, 327, 328, 325, 328, 325, 328, 328, + 328, 328, 328, 329, 329, 328, 328, 328, 328, 328, + 328, 328, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 328, 328, 329, + 329, 329, 329, 327, 330, 330, 328, 327, 329, 328, + + 328, 327, 329, 327, 329, 330, 329, 1196, 1196, 1196, + 1196, 1664, 1664, 1664, 1664, 459, 458, 457, 1197, 456, + 455, 454, 270, 453, 452, 451, 389, 257, 440, 257, + 439, 1675, 438, 437, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 436, 435, 434, 433, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1198, 432, 431, 430, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 423, 422, 414, + 413, 1288, 408, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 399, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 257, 387, 373, + 365, 335, 257, 1288, 1288, 1288, 334, 1288, 333, 323, + 322, 1288, 1288, 1288, 1288, 1288, 321, 311, 310, 1288, + 303, 302, 301, 293, 1288, 290, 1288, 289, 286, 263, + 1288, 260, 1707, 131, 1288, 1288, 1288, 1288, 1288, 1288, + 131, 1707, 1707, 1707, 1707, 1707, 1707, 1288, 1288, 1707, + 1707, 1288, 1707, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1707, 1707, 1707, 1707, 1707, 1707, 1288, 1288, 1707, 1707, + 1288, 1707, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1707, + + 1288, 1707, 1707, 1707, 1288, 1707, 1707, 1288, 1288, 1288, + 1288, 1288, 1288, 1707, 1288, 1707, 1707, 1707, 1707, 1288, + 1288, 1707, 1707, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1707, 1707, 1707, 1707, 1707, 1707, 1288, + 1288, 1288, 1288, 1288, 1707, 1707, 1707, 1707, 1288, 1707, + 1707, 1288, 1288, 1288, 1288, 1288, 1707, 1707, 1707, 1707, + 1288, 1288, 1707, 1707, 1288, 1289, 1289, 1289, 1707, 1707, + 1707, 1707, 1289, 1707, 1289, 1289, 1707, 1289, 1707, 1289, + 1707, 1707, 1707, 1289, 1289, 1289, 1289, 1289, 1289, 1289, + 1289, 1289, 1289, 1289, 1289, 1289, 1707, 1289, 1707, 1707, + + 1289, 1289, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1289, 1289, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, + 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, + 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, + 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, + 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, + 1289, 1289, 1289, 1289, 1289, 1289, 1707, 1707, 1289, 1289, + 1289, 1289, 1707, 1290, 1290, 1707, 1707, 1289, 1707, 1707, + 1707, 1289, 1707, 1289, 1290, 1289, 1350, 1350, 1350, 1350, + + 1707, 1690, 1690, 1690, 1690, 1707, 1707, 1351, 1707, 1707, + 1707, 1707, 1691, 1707, 1707, 1707, 1352, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 271, 1707, 1707, 1707, 1707, 271, 1353, + 1356, 1356, 1356, 1356, 1692, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1357, 1357, 1707, 1358, + 1359, 1707, 1707, 1707, 1707, 1707, 1707, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1707, 1707, 1707, 1707, 1357, 1357, + + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1360, 1707, 1707, 1361, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1361, 1361, 1362, 1362, 1357, 1361, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1362, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1362, 1362, 1362, 1362, 1362, 1362, 1357, 1357, 1357, 1361, + 1357, 1362, 1358, 1362, 1357, 1357, 1357, 1357, 1357, 1362, + 1362, 1362, 1357, 1362, 1362, 1358, 1362, 1357, 1362, 1357, + + 1362, 1362, 1362, 1357, 1362, 1358, 1362, 1357, 1357, 1357, + 1357, 1357, 1357, 1362, 1362, 1362, 1362, 1362, 1362, 1362, + 1357, 1357, 1362, 1358, 1357, 1362, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1362, 1362, 1362, 1362, 1362, 1362, 1357, + 1357, 1358, 1362, 1357, 1362, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1362, 1357, 1362, 1362, 1362, 1357, 1358, 1362, + 1357, 1357, 1357, 1357, 1357, 1357, 1362, 1357, 1362, 1362, + 1362, 1362, 1357, 1357, 1358, 1362, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1362, 1362, 1362, 1362, + 1358, 1362, 1357, 1357, 1357, 1357, 1357, 1362, 1362, 1362, + + 1362, 1357, 1358, 1362, 1357, 1357, 1357, 1357, 1357, 1362, + 1362, 1362, 1362, 1357, 1357, 1358, 1362, 1357, 1363, 1363, + 1363, 1362, 1362, 1362, 1362, 1363, 1358, 1363, 1363, 1362, + 1363, 1362, 1363, 1361, 1362, 1358, 1363, 1363, 1363, 1363, + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1362, + 1363, 1362, 1362, 1363, 1363, 1361, 1362, 1358, 1362, 1358, + 1362, 1362, 1362, 1362, 1362, 1363, 1363, 1362, 1362, 1362, + 1362, 1362, 1362, 1362, 1363, 1363, 1363, 1363, 1363, 1363, + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, + + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1362, + 1362, 1363, 1363, 1363, 1363, 1361, 1364, 1364, 1362, 1361, + 1363, 1362, 1362, 1361, 1363, 1361, 1363, 1364, 1363, 1350, + 1350, 1350, 1350, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1351, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1414, + 1707, 1707, 1707, 1707, 1707, 1707, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1707, 1707, 1707, 1707, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1353, 1707, 1707, 1707, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1707, + 1707, 1707, 1707, 1415, 1707, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1707, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1707, + 1707, 1707, 1707, 1707, 1707, 1415, 1415, 1415, 1707, 1415, + 1707, 1707, 1707, 1415, 1415, 1415, 1415, 1415, 1707, 1707, + 1707, 1415, 1707, 1707, 1707, 1707, 1415, 1707, 1415, 1707, + 1707, 1707, 1415, 1707, 1707, 1707, 1415, 1415, 1415, 1415, + + 1415, 1415, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1415, + 1415, 1707, 1707, 1415, 1707, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1707, 1707, 1707, 1707, 1707, 1707, 1415, 1415, + 1707, 1707, 1415, 1707, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1707, 1415, 1707, 1707, 1707, 1415, 1707, 1707, 1415, + 1415, 1415, 1415, 1415, 1415, 1707, 1415, 1707, 1707, 1707, + 1707, 1415, 1415, 1707, 1707, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1707, 1707, 1707, 1707, 1707, + 1707, 1415, 1415, 1415, 1415, 1415, 1707, 1707, 1707, 1707, + 1415, 1707, 1707, 1415, 1415, 1415, 1415, 1415, 1707, 1707, + + 1707, 1707, 1415, 1415, 1707, 1707, 1415, 1416, 1416, 1416, + 1707, 1707, 1707, 1707, 1416, 1707, 1416, 1416, 1707, 1416, + 1707, 1416, 1707, 1707, 1707, 1416, 1416, 1416, 1416, 1416, + 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1707, 1416, + 1707, 1707, 1416, 1416, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1416, 1416, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1416, 1416, 1416, 1416, 1416, 1416, 1416, + 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, + 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, + 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, + + 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, + 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1416, 1707, 1707, + 1416, 1416, 1416, 1416, 1707, 1417, 1417, 1707, 1707, 1416, + 1707, 1707, 1707, 1416, 1707, 1416, 1417, 1416, 499, 1707, + 1707, 1707, 1707, 1707, 1707, 1418, 1707, 1707, 1707, 1707, + 1707, 1707, 500, 500, 500, 500, 500, 500, 500, 1707, + 1707, 1707, 1707, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 1707, 1707, + 1707, 1707, 500, 500, 500, 500, 500, 500, 500, 500, + + 500, 500, 500, 500, 500, 1707, 1707, 1707, 1707, 500, + 1707, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 1707, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 1707, 1707, 1707, 1707, 1707, + 1707, 500, 500, 500, 1707, 500, 1707, 1707, 1707, 500, + 500, 500, 500, 500, 1707, 1707, 1707, 500, 1707, 1707, + 1707, 1707, 500, 1707, 500, 1707, 1707, 1707, 500, 1707, + 1707, 1707, 500, 500, 500, 500, 500, 500, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 500, 500, 1707, 1707, 500, + 1707, 500, 500, 500, 500, 500, 500, 500, 1707, 1707, + + 1707, 1707, 1707, 1707, 500, 500, 1707, 1707, 500, 1707, + 500, 500, 500, 500, 500, 500, 500, 1707, 500, 1707, + 1707, 1707, 500, 1707, 1707, 500, 500, 500, 500, 500, + 500, 1707, 500, 1707, 1707, 1707, 1707, 500, 500, 1707, + 1707, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 1707, 1707, 1707, 1707, 1707, 1707, 500, 500, 500, + 500, 500, 1707, 1707, 1707, 1707, 500, 1707, 1707, 500, + 500, 500, 500, 500, 1707, 1707, 1707, 1707, 500, 500, + 1707, 1707, 500, 501, 501, 501, 1707, 1707, 1707, 1707, + 501, 1707, 501, 501, 1707, 501, 1707, 501, 1707, 1707, + + 1707, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 1707, 501, 1707, 1707, 501, 501, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 501, 501, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 1707, 1707, 501, 501, 501, 501, + + 1707, 502, 502, 1707, 1707, 501, 1707, 1707, 1707, 501, + 1707, 501, 502, 501, 1356, 1356, 1356, 1356, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1357, 1357, 1707, 1358, 1359, 1707, 1707, 1707, 1707, 1707, + 1707, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1707, 1707, + 1707, 1707, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1360, 1707, 1707, + 1361, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1361, 1361, 1362, 1362, 1357, 1361, + + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1362, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1362, 1362, 1362, 1362, 1362, 1362, + 1357, 1357, 1357, 1361, 1357, 1362, 1358, 1362, 1357, 1357, + 1357, 1357, 1357, 1362, 1362, 1362, 1357, 1362, 1362, 1358, + 1362, 1357, 1362, 1357, 1362, 1362, 1362, 1357, 1362, 1358, + 1362, 1357, 1357, 1357, 1357, 1357, 1357, 1362, 1362, 1362, + 1362, 1362, 1362, 1362, 1357, 1357, 1362, 1358, 1357, 1362, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1362, 1362, 1362, + 1362, 1362, 1362, 1357, 1357, 1358, 1362, 1357, 1362, 1357, + + 1357, 1357, 1357, 1357, 1357, 1357, 1362, 1357, 1362, 1362, + 1362, 1357, 1358, 1362, 1357, 1357, 1357, 1357, 1357, 1357, + 1362, 1357, 1362, 1362, 1362, 1362, 1357, 1357, 1358, 1362, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1362, 1362, 1362, 1362, 1358, 1362, 1357, 1357, 1357, 1357, + 1357, 1362, 1362, 1362, 1362, 1357, 1358, 1362, 1357, 1357, + 1357, 1357, 1357, 1362, 1362, 1362, 1362, 1357, 1357, 1358, + 1362, 1357, 1363, 1363, 1363, 1362, 1362, 1362, 1362, 1363, + 1358, 1363, 1363, 1362, 1363, 1362, 1363, 1361, 1362, 1358, + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, + + 1363, 1363, 1363, 1362, 1363, 1362, 1362, 1363, 1363, 1361, + 1362, 1358, 1362, 1358, 1362, 1362, 1362, 1362, 1362, 1363, + 1363, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1363, 1363, + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, + 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, + 1363, 1363, 1363, 1362, 1362, 1363, 1363, 1363, 1363, 1361, + 1364, 1364, 1362, 1361, 1363, 1362, 1362, 1361, 1363, 1361, + + 1363, 1364, 1363, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1707, 1707, 1707, 1707, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1707, + 1707, 1707, 1707, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1707, 1707, 1707, 1707, + 1423, 1707, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1707, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1707, 1707, 1707, 1707, + 1707, 1707, 1423, 1423, 1423, 1707, 1423, 1707, 1707, 1707, + + 1423, 1423, 1423, 1423, 1423, 1707, 1707, 1707, 1423, 1707, + 1707, 1707, 1707, 1423, 1707, 1423, 1707, 1707, 1707, 1423, + 1707, 1707, 1707, 1423, 1423, 1423, 1423, 1423, 1423, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1423, 1423, 1707, 1707, + 1423, 1707, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1707, + 1707, 1707, 1707, 1707, 1707, 1423, 1423, 1707, 1707, 1423, + 1707, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1707, 1423, + 1707, 1707, 1707, 1423, 1707, 1707, 1423, 1423, 1423, 1423, + 1423, 1423, 1707, 1423, 1707, 1707, 1707, 1707, 1423, 1423, + 1707, 1707, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + + 1423, 1423, 1707, 1707, 1707, 1707, 1707, 1707, 1423, 1423, + 1423, 1423, 1423, 1707, 1707, 1707, 1707, 1423, 1707, 1707, + 1423, 1423, 1423, 1423, 1423, 1707, 1707, 1707, 1707, 1423, + 1423, 1707, 1707, 1423, 1424, 1424, 1424, 1707, 1707, 1707, + 1707, 1424, 1707, 1424, 1424, 1707, 1424, 1707, 1424, 1707, + 1707, 1707, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, + 1424, 1424, 1424, 1424, 1424, 1707, 1424, 1707, 1707, 1424, + 1424, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1424, 1424, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, + + 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, + 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, + 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, + 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424, + 1424, 1424, 1424, 1424, 1424, 1707, 1707, 1424, 1424, 1424, + 1424, 1707, 1425, 1425, 1707, 1707, 1424, 1707, 1707, 1707, + 1424, 1707, 1424, 1425, 1424, 324, 324, 1707, 325, 326, + 1707, 1707, 1707, 1707, 1707, 1707, 324, 324, 324, 324, + 324, 324, 324, 1707, 1707, 1707, 1707, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + + 324, 1454, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 1707, 1707, 1707, 327, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 327, + 327, 328, 328, 324, 327, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 328, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 328, + 328, 328, 328, 328, 328, 324, 324, 324, 327, 324, + 328, 325, 328, 324, 324, 324, 324, 324, 328, 328, + 328, 324, 328, 328, 325, 328, 324, 328, 324, 328, + 328, 328, 324, 328, 325, 328, 324, 324, 324, 324, + + 324, 324, 328, 328, 328, 328, 328, 328, 328, 324, + 324, 328, 325, 324, 328, 324, 324, 324, 324, 324, + 324, 324, 328, 328, 328, 328, 328, 328, 324, 324, + 325, 328, 324, 328, 324, 324, 324, 324, 324, 324, + 324, 328, 324, 328, 328, 328, 324, 325, 328, 324, + 324, 324, 324, 324, 324, 328, 324, 328, 328, 328, + 328, 324, 324, 325, 328, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 328, 328, 328, 328, 325, + 328, 324, 324, 324, 324, 324, 328, 328, 328, 328, + 324, 325, 328, 324, 324, 324, 324, 324, 328, 328, + + 328, 328, 324, 324, 325, 328, 324, 329, 329, 329, + 328, 328, 328, 328, 329, 325, 329, 329, 328, 329, + 328, 329, 327, 328, 325, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 328, 329, + 328, 328, 329, 329, 327, 328, 325, 328, 325, 328, + 328, 328, 328, 328, 329, 329, 328, 328, 328, 328, + 328, 328, 328, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 328, 328, + 329, 329, 329, 329, 327, 330, 330, 328, 327, 329, + 328, 328, 327, 329, 327, 329, 330, 329, 1466, 1466, + 1466, 1466, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1467, 1467, 1707, 1468, 1469, 1707, + 1707, 1707, 1707, 1707, 1707, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1707, 1707, 1707, 1707, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + + 1467, 1470, 1707, 1707, 1471, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1471, 1471, + 1472, 1472, 1467, 1471, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1472, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1472, 1472, + 1472, 1472, 1472, 1472, 1467, 1467, 1467, 1471, 1467, 1472, + 1468, 1472, 1467, 1467, 1467, 1467, 1467, 1472, 1472, 1472, + 1467, 1472, 1472, 1468, 1472, 1467, 1472, 1467, 1472, 1472, + 1472, 1467, 1472, 1468, 1472, 1467, 1467, 1467, 1467, 1467, + 1467, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1467, 1467, + + 1472, 1468, 1467, 1472, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1472, 1472, 1472, 1472, 1472, 1472, 1467, 1467, 1468, + 1472, 1467, 1472, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1472, 1467, 1472, 1472, 1472, 1467, 1468, 1472, 1467, 1467, + 1467, 1467, 1467, 1467, 1472, 1467, 1472, 1472, 1472, 1472, + 1467, 1467, 1468, 1472, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1472, 1472, 1472, 1472, 1468, 1472, + 1467, 1467, 1467, 1467, 1467, 1472, 1472, 1472, 1472, 1467, + 1468, 1472, 1467, 1467, 1467, 1467, 1467, 1472, 1472, 1472, + 1472, 1467, 1467, 1468, 1472, 1467, 1473, 1473, 1473, 1472, + + 1472, 1472, 1472, 1473, 1468, 1473, 1473, 1472, 1473, 1472, + 1473, 1471, 1472, 1468, 1473, 1473, 1473, 1473, 1473, 1473, + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1472, 1473, 1472, + 1472, 1473, 1473, 1471, 1472, 1468, 1472, 1468, 1472, 1472, + 1472, 1472, 1472, 1473, 1473, 1472, 1472, 1472, 1472, 1472, + 1472, 1472, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, + + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1472, 1472, 1473, + 1473, 1473, 1473, 1471, 1474, 1474, 1472, 1471, 1473, 1472, + 1472, 1471, 1473, 1471, 1473, 1474, 1473, 499, 1707, 1707, + 1707, 1707, 1707, 1707, 1477, 1707, 1707, 1707, 1707, 1707, + 1707, 500, 500, 500, 500, 500, 500, 500, 1707, 1707, + 1707, 1707, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 1707, 1707, 1707, + 1707, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 1707, 1707, 1707, 1707, 500, 1707, + + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 1707, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 1707, 1707, 1707, 1707, 1707, 1707, + 500, 500, 500, 1707, 500, 1707, 1707, 1707, 500, 500, + 500, 500, 500, 1707, 1707, 1707, 500, 1707, 1707, 1707, + 1707, 500, 1707, 500, 1707, 1707, 1707, 500, 1707, 1707, + 1707, 500, 500, 500, 500, 500, 500, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 500, 500, 1707, 1707, 500, 1707, + 500, 500, 500, 500, 500, 500, 500, 1707, 1707, 1707, + 1707, 1707, 1707, 500, 500, 1707, 1707, 500, 1707, 500, + + 500, 500, 500, 500, 500, 500, 1707, 500, 1707, 1707, + 1707, 500, 1707, 1707, 500, 500, 500, 500, 500, 500, + 1707, 500, 1707, 1707, 1707, 1707, 500, 500, 1707, 1707, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 1707, 1707, 1707, 1707, 1707, 1707, 500, 500, 500, 500, + 500, 1707, 1707, 1707, 1707, 500, 1707, 1707, 500, 500, + 500, 500, 500, 1707, 1707, 1707, 1707, 500, 500, 1707, + 1707, 500, 501, 501, 501, 1707, 1707, 1707, 1707, 501, + 1707, 501, 501, 1707, 501, 1707, 501, 1707, 1707, 1707, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + + 501, 501, 501, 1707, 501, 1707, 1707, 501, 501, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 501, + 501, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 1707, 1707, 501, 501, 501, 501, 1707, + 502, 502, 1707, 1707, 501, 1707, 1707, 1707, 501, 1707, + + 501, 502, 501, 1356, 1356, 1356, 1356, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1479, + 1479, 1707, 1480, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1707, 1707, 1707, + 1707, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1360, 1707, 1707, 1481, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1481, 1481, 1482, 1482, 1479, 1481, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + + 1479, 1479, 1479, 1482, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1482, 1482, 1482, 1482, 1482, 1482, 1479, + 1479, 1479, 1481, 1479, 1482, 1480, 1482, 1479, 1479, 1479, + 1479, 1479, 1482, 1482, 1482, 1479, 1482, 1482, 1480, 1482, + 1479, 1482, 1479, 1482, 1482, 1482, 1479, 1482, 1480, 1482, + 1479, 1479, 1479, 1479, 1479, 1479, 1482, 1482, 1482, 1482, + 1482, 1482, 1482, 1479, 1479, 1482, 1480, 1479, 1482, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1482, 1482, 1482, 1482, + 1482, 1482, 1479, 1479, 1480, 1482, 1479, 1482, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1482, 1479, 1482, 1482, 1482, + + 1479, 1480, 1482, 1479, 1479, 1479, 1479, 1479, 1479, 1482, + 1479, 1482, 1482, 1482, 1482, 1479, 1479, 1480, 1482, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1482, + 1482, 1482, 1482, 1480, 1482, 1479, 1479, 1479, 1479, 1479, + 1482, 1482, 1482, 1482, 1479, 1480, 1482, 1479, 1479, 1479, + 1479, 1479, 1482, 1482, 1482, 1482, 1479, 1479, 1480, 1482, + 1479, 1483, 1483, 1483, 1482, 1482, 1482, 1482, 1483, 1480, + 1483, 1483, 1482, 1483, 1482, 1483, 1481, 1482, 1480, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1482, 1483, 1482, 1482, 1483, 1483, 1481, 1482, + + 1480, 1482, 1480, 1482, 1482, 1482, 1482, 1482, 1483, 1483, + 1482, 1482, 1482, 1482, 1482, 1482, 1482, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1482, 1482, 1483, 1483, 1483, 1483, 1481, 1484, + 1484, 1482, 1481, 1483, 1482, 1482, 1481, 1483, 1481, 1483, + 1484, 1483, 324, 324, 1707, 325, 326, 1707, 1707, 1707, + + 1707, 1707, 1707, 324, 324, 324, 324, 324, 324, 324, + 1707, 1707, 1707, 1707, 324, 324, 324, 324, 1508, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 1707, + 1707, 1707, 327, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 327, 327, 328, 328, + 324, 327, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 328, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 328, 328, 328, 328, + 328, 328, 324, 324, 324, 327, 324, 328, 325, 328, + + 324, 324, 324, 324, 324, 328, 328, 328, 324, 328, + 328, 325, 328, 324, 328, 324, 328, 328, 328, 324, + 328, 325, 328, 324, 324, 324, 324, 324, 324, 328, + 328, 328, 328, 328, 328, 328, 324, 324, 328, 325, + 324, 328, 324, 324, 324, 324, 324, 324, 324, 328, + 328, 328, 328, 328, 328, 324, 324, 325, 328, 324, + 328, 324, 324, 324, 324, 324, 324, 324, 328, 324, + 328, 328, 328, 324, 325, 328, 324, 324, 324, 324, + 324, 324, 328, 324, 328, 328, 328, 328, 324, 324, + 325, 328, 324, 324, 324, 324, 324, 324, 324, 324, + + 324, 324, 328, 328, 328, 328, 325, 328, 324, 324, + 324, 324, 324, 328, 328, 328, 328, 324, 325, 328, + 324, 324, 324, 324, 324, 328, 328, 328, 328, 324, + 324, 325, 328, 324, 329, 329, 329, 328, 328, 328, + 328, 329, 325, 329, 329, 328, 329, 328, 329, 327, + 328, 325, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 328, 329, 328, 328, 329, + 329, 327, 328, 325, 328, 325, 328, 328, 328, 328, + 328, 329, 329, 328, 328, 328, 328, 328, 328, 328, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 328, 328, 329, 329, 329, + 329, 327, 330, 330, 328, 327, 329, 328, 328, 327, + 329, 327, 329, 330, 329, 1466, 1466, 1466, 1466, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1467, 1467, 1707, 1468, 1469, 1707, 1707, 1707, 1707, + 1707, 1707, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1707, + + 1707, 1707, 1707, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1470, 1707, + 1707, 1471, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1471, 1471, 1472, 1472, 1467, + 1471, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1472, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1472, 1472, 1472, 1472, 1472, + 1472, 1467, 1467, 1467, 1471, 1467, 1472, 1468, 1472, 1467, + 1467, 1467, 1467, 1467, 1472, 1472, 1472, 1467, 1472, 1472, + + 1468, 1472, 1467, 1472, 1467, 1472, 1472, 1472, 1467, 1472, + 1468, 1472, 1467, 1467, 1467, 1467, 1467, 1467, 1472, 1472, + 1472, 1472, 1472, 1472, 1472, 1467, 1467, 1472, 1468, 1467, + 1472, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1472, 1472, + 1472, 1472, 1472, 1472, 1467, 1467, 1468, 1472, 1467, 1472, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1472, 1467, 1472, + 1472, 1472, 1467, 1468, 1472, 1467, 1467, 1467, 1467, 1467, + 1467, 1472, 1467, 1472, 1472, 1472, 1472, 1467, 1467, 1468, + 1472, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1472, 1472, 1472, 1472, 1468, 1472, 1467, 1467, 1467, + + 1467, 1467, 1472, 1472, 1472, 1472, 1467, 1468, 1472, 1467, + 1467, 1467, 1467, 1467, 1472, 1472, 1472, 1472, 1467, 1467, + 1468, 1472, 1467, 1473, 1473, 1473, 1472, 1472, 1472, 1472, + 1473, 1468, 1473, 1473, 1472, 1473, 1472, 1473, 1471, 1472, + 1468, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, + 1473, 1473, 1473, 1473, 1472, 1473, 1472, 1472, 1473, 1473, + 1471, 1472, 1468, 1472, 1468, 1472, 1472, 1472, 1472, 1472, + 1473, 1473, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1473, + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, + + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, + 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, 1473, + 1473, 1473, 1473, 1473, 1472, 1472, 1473, 1473, 1473, 1473, + 1471, 1474, 1474, 1472, 1471, 1473, 1472, 1472, 1471, 1473, + 1471, 1473, 1474, 1473, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1707, 1707, 1707, 1707, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1707, 1707, 1707, 1707, 1517, 1517, 1517, 1517, 1517, 1517, + + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1707, 1707, 1707, + 1707, 1517, 1707, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1707, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1707, 1707, 1707, + 1707, 1707, 1707, 1517, 1517, 1517, 1707, 1517, 1707, 1707, + 1707, 1517, 1517, 1517, 1517, 1517, 1707, 1707, 1707, 1517, + 1707, 1707, 1707, 1707, 1517, 1707, 1517, 1707, 1707, 1707, + 1517, 1707, 1707, 1707, 1517, 1517, 1517, 1517, 1517, 1517, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1517, 1517, 1707, + 1707, 1517, 1707, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + + 1707, 1707, 1707, 1707, 1707, 1707, 1517, 1517, 1707, 1707, + 1517, 1707, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1707, + 1517, 1707, 1707, 1707, 1517, 1707, 1707, 1517, 1517, 1517, + 1517, 1517, 1517, 1707, 1517, 1707, 1707, 1707, 1707, 1517, + 1517, 1707, 1707, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1707, 1707, 1707, 1707, 1707, 1707, 1517, + 1517, 1517, 1517, 1517, 1707, 1707, 1707, 1707, 1517, 1707, + 1707, 1517, 1517, 1517, 1517, 1517, 1707, 1707, 1707, 1707, + 1517, 1517, 1707, 1707, 1517, 1518, 1518, 1518, 1707, 1707, + 1707, 1707, 1518, 1707, 1518, 1518, 1707, 1518, 1707, 1518, + + 1707, 1707, 1707, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1707, 1518, 1707, 1707, + 1518, 1518, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1518, 1518, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, 1518, + 1518, 1518, 1518, 1518, 1518, 1518, 1707, 1707, 1518, 1518, + + 1518, 1518, 1707, 1519, 1519, 1707, 1707, 1518, 1707, 1707, + 1707, 1518, 1707, 1518, 1519, 1518, 1356, 1356, 1356, 1356, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1479, 1479, 1707, 1480, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1707, 1707, 1707, 1707, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1360, + 1707, 1707, 1481, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1481, 1481, 1482, 1482, + + 1479, 1481, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1482, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1482, 1482, 1482, 1482, + 1482, 1482, 1479, 1479, 1479, 1481, 1479, 1482, 1480, 1482, + 1479, 1479, 1479, 1479, 1479, 1482, 1482, 1482, 1479, 1482, + 1482, 1480, 1482, 1479, 1482, 1479, 1482, 1482, 1482, 1479, + 1482, 1480, 1482, 1479, 1479, 1479, 1479, 1479, 1479, 1482, + 1482, 1482, 1482, 1482, 1482, 1482, 1479, 1479, 1482, 1480, + 1479, 1482, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1482, + 1482, 1482, 1482, 1482, 1482, 1479, 1479, 1480, 1482, 1479, + + 1482, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1482, 1479, + 1482, 1482, 1482, 1479, 1480, 1482, 1479, 1479, 1479, 1479, + 1479, 1479, 1482, 1479, 1482, 1482, 1482, 1482, 1479, 1479, + 1480, 1482, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1482, 1482, 1482, 1482, 1480, 1482, 1479, 1479, + 1479, 1479, 1479, 1482, 1482, 1482, 1482, 1479, 1480, 1482, + 1479, 1479, 1479, 1479, 1479, 1482, 1482, 1482, 1482, 1479, + 1479, 1480, 1482, 1479, 1483, 1483, 1483, 1482, 1482, 1482, + 1482, 1483, 1480, 1483, 1483, 1482, 1483, 1482, 1483, 1481, + 1482, 1480, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + + 1483, 1483, 1483, 1483, 1483, 1482, 1483, 1482, 1482, 1483, + 1483, 1481, 1482, 1480, 1482, 1480, 1482, 1482, 1482, 1482, + 1482, 1483, 1483, 1482, 1482, 1482, 1482, 1482, 1482, 1482, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, + 1483, 1483, 1483, 1483, 1483, 1482, 1482, 1483, 1483, 1483, + 1483, 1481, 1484, 1484, 1482, 1481, 1483, 1482, 1482, 1481, + + 1483, 1481, 1483, 1484, 1483, 324, 324, 1707, 325, 326, + 1707, 1707, 1707, 1707, 1707, 1707, 324, 324, 324, 324, + 324, 324, 324, 1707, 1707, 1707, 1707, 324, 324, 324, + 324, 324, 1544, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 1707, 1707, 1707, 327, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 327, + 327, 328, 328, 324, 327, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 328, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 328, + + 328, 328, 328, 328, 328, 324, 324, 324, 327, 324, + 328, 325, 328, 324, 324, 324, 324, 324, 328, 328, + 328, 324, 328, 328, 325, 328, 324, 328, 324, 328, + 328, 328, 324, 328, 325, 328, 324, 324, 324, 324, + 324, 324, 328, 328, 328, 328, 328, 328, 328, 324, + 324, 328, 325, 324, 328, 324, 324, 324, 324, 324, + 324, 324, 328, 328, 328, 328, 328, 328, 324, 324, + 325, 328, 324, 328, 324, 324, 324, 324, 324, 324, + 324, 328, 324, 328, 328, 328, 324, 325, 328, 324, + 324, 324, 324, 324, 324, 328, 324, 328, 328, 328, + + 328, 324, 324, 325, 328, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 328, 328, 328, 328, 325, + 328, 324, 324, 324, 324, 324, 328, 328, 328, 328, + 324, 325, 328, 324, 324, 324, 324, 324, 328, 328, + 328, 328, 324, 324, 325, 328, 324, 329, 329, 329, + 328, 328, 328, 328, 329, 325, 329, 329, 328, 329, + 328, 329, 327, 328, 325, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 328, 329, + 328, 328, 329, 329, 327, 328, 325, 328, 325, 328, + 328, 328, 328, 328, 329, 329, 328, 328, 328, 328, + + 328, 328, 328, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 328, 328, + 329, 329, 329, 329, 327, 330, 330, 328, 327, 329, + 328, 328, 327, 329, 327, 329, 330, 329, 1466, 1466, + 1466, 1466, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1552, 1552, 1707, 1553, 1707, 1707, + + 1707, 1707, 1707, 1707, 1707, 1552, 1552, 1552, 1552, 1552, + 1552, 1552, 1707, 1707, 1707, 1707, 1552, 1552, 1552, 1552, + 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, + 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, + 1552, 1470, 1707, 1707, 1554, 1552, 1552, 1552, 1552, 1552, + 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1554, 1554, + 1555, 1555, 1552, 1554, 1552, 1552, 1552, 1552, 1552, 1552, + 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1555, 1552, + 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1552, 1555, 1555, + 1555, 1555, 1555, 1555, 1552, 1552, 1552, 1554, 1552, 1555, + + 1553, 1555, 1552, 1552, 1552, 1552, 1552, 1555, 1555, 1555, + 1552, 1555, 1555, 1553, 1555, 1552, 1555, 1552, 1555, 1555, + 1555, 1552, 1555, 1553, 1555, 1552, 1552, 1552, 1552, 1552, + 1552, 1555, 1555, 1555, 1555, 1555, 1555, 1555, 1552, 1552, + 1555, 1553, 1552, 1555, 1552, 1552, 1552, 1552, 1552, 1552, + 1552, 1555, 1555, 1555, 1555, 1555, 1555, 1552, 1552, 1553, + 1555, 1552, 1555, 1552, 1552, 1552, 1552, 1552, 1552, 1552, + 1555, 1552, 1555, 1555, 1555, 1552, 1553, 1555, 1552, 1552, + 1552, 1552, 1552, 1552, 1555, 1552, 1555, 1555, 1555, 1555, + 1552, 1552, 1553, 1555, 1552, 1552, 1552, 1552, 1552, 1552, + + 1552, 1552, 1552, 1552, 1555, 1555, 1555, 1555, 1553, 1555, + 1552, 1552, 1552, 1552, 1552, 1555, 1555, 1555, 1555, 1552, + 1553, 1555, 1552, 1552, 1552, 1552, 1552, 1555, 1555, 1555, + 1555, 1552, 1552, 1553, 1555, 1552, 1556, 1556, 1556, 1555, + 1555, 1555, 1555, 1556, 1553, 1556, 1556, 1555, 1556, 1555, + 1556, 1554, 1555, 1553, 1556, 1556, 1556, 1556, 1556, 1556, + 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1555, 1556, 1555, + 1555, 1556, 1556, 1554, 1555, 1553, 1555, 1553, 1555, 1555, + 1555, 1555, 1555, 1556, 1556, 1555, 1555, 1555, 1555, 1555, + 1555, 1555, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, + + 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, + 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, + 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, + 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1556, + 1556, 1556, 1556, 1556, 1556, 1556, 1556, 1555, 1555, 1556, + 1556, 1556, 1556, 1554, 1557, 1557, 1555, 1554, 1556, 1555, + 1555, 1554, 1556, 1554, 1556, 1557, 1556, 499, 1707, 1707, + 1707, 1707, 1707, 1707, 1651, 1707, 1707, 1707, 1707, 1707, + 1707, 500, 500, 500, 500, 500, 500, 500, 1707, 1707, + 1707, 1707, 500, 500, 500, 500, 500, 500, 500, 500, + + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 1707, 1707, 1707, + 1707, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 1707, 1707, 1707, 1707, 500, 1707, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 1707, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 1707, 1707, 1707, 1707, 1707, 1707, + 500, 500, 500, 1707, 500, 1707, 1707, 1707, 500, 500, + 500, 500, 500, 1707, 1707, 1707, 500, 1707, 1707, 1707, + 1707, 500, 1707, 500, 1707, 1707, 1707, 500, 1707, 1707, + + 1707, 500, 500, 500, 500, 500, 500, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 500, 500, 1707, 1707, 500, 1707, + 500, 500, 500, 500, 500, 500, 500, 1707, 1707, 1707, + 1707, 1707, 1707, 500, 500, 1707, 1707, 500, 1707, 500, + 500, 500, 500, 500, 500, 500, 1707, 500, 1707, 1707, + 1707, 500, 1707, 1707, 500, 500, 500, 500, 500, 500, + 1707, 500, 1707, 1707, 1707, 1707, 500, 500, 1707, 1707, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 1707, 1707, 1707, 1707, 1707, 1707, 500, 500, 500, 500, + 500, 1707, 1707, 1707, 1707, 500, 1707, 1707, 500, 500, + + 500, 500, 500, 1707, 1707, 1707, 1707, 500, 500, 1707, + 1707, 500, 501, 501, 501, 1707, 1707, 1707, 1707, 501, + 1707, 501, 501, 1707, 501, 1707, 501, 1707, 1707, 1707, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 1707, 501, 1707, 1707, 501, 501, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 501, + 501, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, + 501, 501, 501, 1707, 1707, 501, 501, 501, 501, 1707, + 502, 502, 1707, 1707, 501, 1707, 1707, 1707, 501, 1707, + 501, 502, 501, 1690, 1690, 1690, 1690, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1691, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1707, 1707, 1707, + 1707, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + + 1696, 1696, 1696, 1696, 1696, 1696, 1692, 1707, 1707, 1707, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1707, 1707, 1707, 1707, 1696, 1707, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1707, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1707, 1707, 1707, 1707, 1707, 1707, 1696, + 1696, 1696, 1707, 1696, 1707, 1707, 1707, 1696, 1696, 1696, + 1696, 1696, 1707, 1707, 1707, 1696, 1707, 1707, 1707, 1707, + 1696, 1707, 1696, 1707, 1707, 1707, 1696, 1707, 1707, 1707, + 1696, 1696, 1696, 1696, 1696, 1696, 1707, 1707, 1707, 1707, + + 1707, 1707, 1707, 1696, 1696, 1707, 1707, 1696, 1707, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1707, 1707, 1707, 1707, + 1707, 1707, 1696, 1696, 1707, 1707, 1696, 1707, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1707, 1696, 1707, 1707, 1707, + 1696, 1707, 1707, 1696, 1696, 1696, 1696, 1696, 1696, 1707, + 1696, 1707, 1707, 1707, 1707, 1696, 1696, 1707, 1707, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1707, + 1707, 1707, 1707, 1707, 1707, 1696, 1696, 1696, 1696, 1696, + 1707, 1707, 1707, 1707, 1696, 1707, 1707, 1696, 1696, 1696, + 1696, 1696, 1707, 1707, 1707, 1707, 1696, 1696, 1707, 1707, + + 1696, 1697, 1697, 1697, 1707, 1707, 1707, 1707, 1697, 1707, + 1697, 1697, 1707, 1697, 1707, 1697, 1707, 1707, 1707, 1697, + 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, + 1697, 1697, 1707, 1697, 1707, 1707, 1697, 1697, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1697, 1697, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1697, 1697, 1697, + 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, + 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, + 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, + 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, + + 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, 1697, + 1697, 1697, 1707, 1707, 1697, 1697, 1697, 1697, 1707, 1698, + 1698, 1707, 1707, 1697, 1707, 1707, 1707, 1697, 1707, 1697, + 1698, 1697, 1699, 1699, 1699, 1699, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1700, 1700, + 1707, 1701, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1700, + 1700, 1700, 1700, 1700, 1700, 1700, 1707, 1707, 1707, 1707, + 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, + 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, + 1700, 1700, 1700, 1700, 1700, 1702, 1707, 1707, 1703, 1700, + + 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, + 1700, 1700, 1703, 1703, 1704, 1704, 1700, 1703, 1700, 1700, + 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, + 1700, 1700, 1704, 1700, 1700, 1700, 1700, 1700, 1700, 1700, + 1700, 1700, 1704, 1704, 1704, 1704, 1704, 1704, 1700, 1700, + 1700, 1703, 1700, 1704, 1701, 1704, 1700, 1700, 1700, 1700, + 1700, 1704, 1704, 1704, 1700, 1704, 1704, 1701, 1704, 1700, + 1704, 1700, 1704, 1704, 1704, 1700, 1704, 1701, 1704, 1700, + 1700, 1700, 1700, 1700, 1700, 1704, 1704, 1704, 1704, 1704, + 1704, 1704, 1700, 1700, 1704, 1701, 1700, 1704, 1700, 1700, + + 1700, 1700, 1700, 1700, 1700, 1704, 1704, 1704, 1704, 1704, + 1704, 1700, 1700, 1701, 1704, 1700, 1704, 1700, 1700, 1700, + 1700, 1700, 1700, 1700, 1704, 1700, 1704, 1704, 1704, 1700, + 1701, 1704, 1700, 1700, 1700, 1700, 1700, 1700, 1704, 1700, + 1704, 1704, 1704, 1704, 1700, 1700, 1701, 1704, 1700, 1700, + 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1704, 1704, + 1704, 1704, 1701, 1704, 1700, 1700, 1700, 1700, 1700, 1704, + 1704, 1704, 1704, 1700, 1701, 1704, 1700, 1700, 1700, 1700, + 1700, 1704, 1704, 1704, 1704, 1700, 1700, 1701, 1704, 1700, + 1705, 1705, 1705, 1704, 1704, 1704, 1704, 1705, 1701, 1705, + + 1705, 1704, 1705, 1704, 1705, 1703, 1704, 1701, 1705, 1705, + 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, + 1705, 1704, 1705, 1704, 1704, 1705, 1705, 1703, 1704, 1701, + 1704, 1701, 1704, 1704, 1704, 1704, 1704, 1705, 1705, 1704, + 1704, 1704, 1704, 1704, 1704, 1704, 1705, 1705, 1705, 1705, + 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, + 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, + 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, + 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, + 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, + + 1705, 1704, 1704, 1705, 1705, 1705, 1705, 1703, 1706, 1706, + 1704, 1703, 1705, 1704, 1704, 1703, 1705, 1703, 1705, 1706, + 1705, 111, 111, 111, 72, 72, 72, 198, 198, 198, + 203, 203, 203, 250, 250, 250, 253, 253, 253, 319, + 319, 449, 449, 250, 250, 250, 253, 253, 253, 319, + 319, 538, 538, 449, 449, 319, 319, 449, 449, 845, + 845, 845, 845, 980, 980, 1345, 1345, 1411, 1411, 1345, + 1345, 1463, 1463, 1345, 1345, 71, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707 + } ; + +static yyconst short int yy_chk[22271] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 35, 1018, 4, 7, 7, + + 7, 7, 77, 77, 3, 36, 35, 4, 8, 8, + 8, 8, 15, 15, 15, 15, 36, 3, 75, 99, + 4, 78, 75, 7, 16, 16, 16, 16, 47, 47, + 47, 47, 99, 8, 47, 78, 15, 93, 88, 23, + 23, 23, 23, 84, 23, 84, 93, 373, 16, 23, + 23, 48, 48, 48, 48, 373, 91, 48, 3, 88, + 3, 4, 91, 4, 17, 17, 17, 17, 17, 17, + 155, 17, 155, 17, 17, 17, 17, 17, 17, 17, + 17, 23, 17, 101, 17, 17, 17, 17, 17, 17, + 23, 73, 73, 73, 73, 92, 134, 134, 17, 101, + + 17, 92, 94, 17, 96, 17, 17, 17, 17, 17, + 96, 17, 94, 17, 17, 17, 17, 17, 162, 17, + 17, 17, 17, 162, 17, 136, 136, 17, 17, 17, + 18, 18, 18, 18, 18, 18, 102, 18, 102, 18, + 18, 18, 18, 18, 18, 18, 18, 102, 18, 113, + 18, 18, 18, 18, 18, 18, 1019, 25, 25, 25, + 25, 156, 156, 113, 18, 103, 18, 156, 25, 18, + 113, 18, 18, 18, 18, 18, 141, 18, 145, 18, + 18, 18, 18, 18, 103, 18, 18, 18, 18, 141, + 18, 161, 145, 18, 18, 18, 19, 19, 19, 19, + + 19, 150, 142, 19, 161, 19, 142, 19, 19, 382, + 25, 19, 19, 25, 382, 150, 19, 19, 19, 19, + 19, 170, 26, 26, 26, 26, 127, 127, 127, 127, + 19, 144, 170, 26, 144, 19, 144, 19, 19, 19, + 19, 19, 227, 19, 227, 19, 19, 19, 19, 19, + 127, 19, 19, 19, 19, 165, 19, 146, 149, 1020, + 19, 20, 20, 20, 20, 20, 146, 149, 20, 165, + 20, 146, 20, 20, 160, 26, 20, 20, 26, 160, + 160, 20, 20, 20, 20, 20, 24, 24, 24, 24, + 169, 24, 154, 154, 223, 20, 24, 24, 154, 169, + + 20, 154, 20, 20, 20, 20, 20, 223, 20, 167, + 20, 20, 20, 20, 20, 346, 20, 20, 20, 20, + 362, 20, 362, 167, 173, 20, 173, 346, 24, 27, + 27, 27, 27, 31, 31, 31, 31, 24, 31, 86, + 27, 86, 173, 31, 27, 32, 32, 32, 32, 305, + 32, 31, 305, 86, 147, 32, 31, 31, 147, 63, + 63, 63, 63, 32, 166, 86, 690, 147, 32, 32, + 63, 63, 147, 166, 242, 242, 27, 241, 166, 166, + 27, 241, 27, 690, 3, 3, 3, 4, 4, 4, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 9, 250, 286, 10, 1021, 250, + 9, 11, 286, 10, 9, 12, 151, 10, 112, 163, + + 163, 11, 11, 151, 163, 12, 12, 28, 28, 28, + 28, 163, 151, 33, 33, 33, 33, 296, 28, 253, + 253, 282, 28, 296, 33, 33, 33, 34, 34, 34, + 34, 112, 43, 43, 43, 43, 282, 112, 34, 34, + 34, 112, 266, 43, 266, 374, 112, 266, 9, 267, + 9, 10, 374, 10, 28, 11, 33, 11, 28, 12, + 28, 12, 37, 37, 37, 37, 295, 267, 341, 33, + 34, 43, 304, 37, 37, 295, 33, 37, 44, 44, + 44, 44, 153, 34, 153, 377, 153, 37, 341, 44, + 34, 38, 38, 38, 38, 1022, 51, 51, 51, 51, + + 153, 377, 38, 38, 359, 359, 38, 51, 49, 49, + 49, 49, 410, 49, 304, 395, 38, 44, 49, 49, + 801, 50, 50, 50, 50, 37, 50, 410, 395, 49, + 801, 50, 50, 52, 52, 52, 52, 385, 53, 53, + 53, 53, 50, 385, 52, 462, 51, 462, 347, 53, + 514, 49, 51, 347, 38, 54, 54, 54, 54, 514, + 55, 55, 55, 55, 50, 347, 54, 49, 347, 1024, + 140, 55, 140, 56, 56, 56, 56, 140, 140, 53, + 50, 53, 53, 52, 56, 120, 120, 120, 120, 52, + 53, 1026, 57, 57, 57, 57, 54, 479, 54, 54, + + 55, 55, 55, 57, 55, 403, 403, 54, 484, 506, + 120, 55, 55, 56, 56, 56, 506, 56, 1027, 55, + 58, 58, 58, 58, 56, 56, 398, 59, 59, 59, + 59, 58, 56, 60, 60, 60, 60, 57, 59, 479, + 480, 57, 398, 480, 60, 61, 61, 61, 61, 527, + 484, 62, 62, 62, 62, 174, 61, 485, 174, 352, + 485, 352, 62, 527, 174, 58, 504, 174, 505, 58, + 65, 65, 65, 65, 505, 65, 59, 352, 504, 1028, + 65, 65, 60, 59, 508, 61, 508, 525, 525, 60, + 59, 62, 64, 64, 64, 64, 60, 66, 66, 66, + + 66, 530, 66, 64, 64, 530, 1029, 66, 66, 65, + 510, 252, 65, 67, 67, 67, 67, 510, 67, 79, + 79, 79, 79, 67, 67, 67, 507, 509, 67, 143, + 143, 143, 507, 521, 143, 521, 66, 262, 516, 66, + 1030, 143, 509, 689, 252, 159, 159, 159, 159, 262, + 252, 512, 67, 516, 252, 67, 689, 512, 79, 252, + 1032, 262, 67, 202, 202, 202, 202, 632, 67, 249, + 249, 249, 249, 632, 9, 9, 9, 10, 10, 10, + 1035, 11, 11, 11, 159, 12, 12, 12, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 39, 264, 494, 40, + 213, 213, 213, 213, 696, 696, 213, 511, 39, 264, + 494, 40, 41, 41, 41, 41, 41, 39, 254, 511, + + 40, 264, 494, 522, 41, 522, 41, 41, 42, 42, + 42, 42, 42, 1036, 68, 68, 68, 68, 41, 68, + 42, 524, 42, 42, 68, 68, 68, 529, 532, 68, + 532, 254, 695, 524, 42, 1038, 695, 254, 265, 529, + 265, 254, 256, 256, 256, 256, 254, 258, 258, 258, + 258, 548, 265, 68, 691, 692, 68, 269, 269, 269, + 269, 692, 780, 68, 265, 548, 780, 691, 269, 68, + 318, 318, 318, 318, 331, 331, 331, 331, 343, 343, + 343, 343, 448, 448, 448, 448, 258, 693, 448, 489, + 489, 489, 489, 533, 1039, 318, 599, 660, 331, 660, + + 693, 533, 533, 533, 533, 533, 543, 543, 543, 543, + 599, 700, 700, 533, 533, 533, 533, 533, 533, 545, + 545, 545, 545, 547, 547, 547, 547, 573, 573, 573, + 573, 615, 615, 615, 615, 661, 666, 688, 666, 687, + 702, 703, 697, 661, 661, 661, 661, 661, 687, 697, + 1041, 688, 705, 702, 703, 661, 661, 661, 661, 661, + 661, 694, 710, 701, 704, 705, 547, 694, 701, 932, + 704, 782, 547, 547, 667, 782, 710, 712, 712, 547, + 779, 785, 667, 667, 667, 667, 667, 785, 779, 699, + 699, 699, 699, 932, 667, 667, 667, 667, 667, 667, + + 699, 706, 706, 706, 706, 708, 708, 708, 708, 711, + 724, 724, 724, 724, 786, 781, 708, 714, 781, 714, + 784, 706, 786, 711, 1042, 714, 714, 714, 714, 714, + 725, 725, 725, 725, 796, 784, 789, 714, 714, 714, + 714, 714, 714, 796, 789, 699, 731, 731, 731, 731, + 753, 753, 753, 753, 787, 929, 794, 706, 787, 790, + 794, 708, 775, 775, 775, 775, 929, 790, 708, 793, + 724, 792, 792, 792, 792, 795, 797, 793, 798, 797, + 798, 849, 792, 795, 799, 799, 799, 799, 802, 803, + 725, 812, 802, 803, 812, 799, 851, 753, 849, 839, + + 853, 839, 851, 852, 1044, 852, 853, 839, 839, 839, + 839, 839, 854, 857, 775, 859, 857, 1045, 792, 839, + 839, 839, 839, 839, 839, 842, 854, 842, 860, 859, + 863, 799, 860, 842, 842, 842, 842, 842, 850, 850, + 850, 850, 866, 866, 863, 842, 842, 842, 842, 842, + 842, 855, 861, 861, 861, 861, 933, 855, 850, 865, + 867, 874, 875, 861, 874, 988, 39, 39, 39, 40, + 40, 40, 876, 933, 865, 877, 875, 935, 867, 988, + 877, 931, 41, 41, 41, 930, 934, 943, 930, 1048, + 876, 943, 931, 945, 935, 850, 945, 934, 42, 42, + + 42, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 69, 69, 69, 69, 69, + + 1049, 69, 944, 944, 959, 959, 69, 69, 69, 984, + 984, 69, 70, 70, 70, 70, 70, 937, 70, 885, + 885, 885, 885, 70, 70, 70, 936, 942, 70, 869, + 869, 869, 869, 937, 941, 69, 983, 936, 942, 69, + 869, 983, 871, 871, 871, 871, 999, 999, 1000, 869, + 941, 1050, 70, 871, 69, 992, 70, 924, 924, 924, + 924, 938, 938, 938, 938, 992, 885, 946, 946, 946, + 946, 70, 938, 989, 995, 885, 1051, 998, 946, 990, + 985, 985, 985, 985, 1003, 990, 996, 998, 989, 1000, + 1058, 985, 995, 1052, 1003, 997, 997, 997, 997, 924, + + 985, 996, 1004, 1054, 1004, 871, 1023, 1023, 1023, 1023, + 1053, 1052, 1047, 924, 924, 997, 1047, 924, 1055, 1053, + 1054, 1056, 1064, 1057, 1059, 1059, 1060, 1060, 1063, 1055, + 1061, 1061, 1062, 1065, 1066, 1062, 1067, 1068, 1056, 1057, + 1065, 1069, 1070, 1071, 1063, 1072, 1073, 1074, 1075, 1076, + 1077, 1080, 997, 1081, 1082, 1083, 1084, 1085, 1066, 1086, + 1087, 1088, 1090, 1091, 1092, 1095, 1096, 1097, 1096, 1098, + 1101, 1102, 1075, 1100, 1100, 1100, 1100, 1103, 1106, 1105, + 1104, 1104, 1104, 1104, 1100, 1105, 1109, 1110, 1112, 1102, + 1113, 1104, 1112, 1110, 1106, 1107, 1107, 1107, 1107, 1108, + + 1108, 1108, 1108, 1111, 1114, 1116, 1112, 1115, 1117, 1118, + 1108, 1119, 1121, 1111, 1122, 1123, 1124, 1125, 1114, 1108, + 1127, 1115, 1128, 1129, 1130, 1131, 1131, 1131, 1131, 1133, + 1100, 1134, 1135, 1136, 1137, 1138, 1100, 1104, 1140, 1141, + 1142, 1143, 1144, 1104, 1145, 1146, 1147, 1148, 1149, 1150, + 1151, 1153, 1107, 1152, 1152, 1152, 1152, 1149, 1107, 1154, + 1156, 1158, 1154, 1167, 1158, 1168, 1131, 1170, 1153, 1155, + 1155, 1155, 1155, 1157, 1157, 1157, 1157, 1156, 1159, 1160, + 1155, 1171, 1161, 1163, 1157, 1161, 1160, 1159, 1162, 1162, + 1163, 1164, 1165, 1165, 1164, 1172, 1165, 1173, 1174, 1176, + + 1173, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1155, + 1186, 1187, 1188, 1157, 1189, 1189, 1189, 1189, 1190, 1194, + 1191, 1191, 1191, 1191, 1203, 1194, 1200, 1199, 1207, 1205, + 1189, 1191, 1190, 1211, 1189, 1195, 1195, 1195, 1195, 1199, + 1200, 1205, 1209, 1212, 1206, 1208, 1201, 1201, 1201, 1201, + 1206, 1195, 1210, 1208, 1214, 1217, 1218, 1201, 1209, 1220, + 1221, 1222, 1223, 1225, 1227, 1229, 1231, 1210, 1232, 1234, + 1235, 1189, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, + 1244, 1246, 1247, 1191, 1246, 69, 69, 69, 1248, 1248, + 1248, 1248, 1195, 1250, 1254, 1256, 1253, 1262, 1195, 1248, + + 1255, 1257, 70, 70, 70, 90, 90, 90, 90, 1201, + 1253, 1255, 1251, 1251, 1251, 1251, 90, 1250, 1257, 1258, + 1261, 90, 90, 1251, 90, 90, 1259, 1264, 1265, 1261, + 1258, 1268, 90, 90, 90, 90, 90, 90, 90, 1271, + 1272, 1273, 1259, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 1275, 1279, + 1282, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, + 90, 90, 90, 90, 117, 117, 1260, 117, 1281, 1284, + + 1294, 1295, 1301, 1281, 1297, 117, 117, 117, 117, 117, + 117, 117, 1294, 1260, 1302, 1297, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 1304, 1305, 1307, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, + 117, 117, 117, 117, 117, 117, 117, 124, 124, 1286, + 124, 124, 1296, 1308, 1311, 1286, 1312, 1317, 124, 124, + 124, 124, 124, 124, 124, 1318, 1296, 1319, 1321, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 1322, 1323, 1324, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, + 178, 178, 1325, 178, 1320, 1320, 1320, 1320, 1326, 1327, + 1329, 178, 178, 178, 178, 178, 178, 178, 1332, 1334, + 1338, 1329, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 1339, 1341, 1342, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 210, 210, 1330, 210, 210, 1331, 1343, + 1328, 1328, 1328, 1328, 210, 210, 210, 210, 210, 210, + 210, 1328, 1345, 1330, 1331, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 1328, 1346, 1347, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, + 210, 210, 210, 210, 210, 210, 260, 260, 260, 260, + 260, 260, 260, 1336, 1366, 1366, 1336, 260, 260, 260, + + 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, + 260, 260, 1348, 1335, 1348, 1367, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 260, 260, 1333, + 1335, 1369, 1372, 260, 1333, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 260, 260, 1373, + 260, 260, 260, 260, 260, 260, 260, 260, 260, 1280, + 1280, 1280, 1280, 1355, 1376, 260, 260, 260, 1355, 260, + 1280, 1371, 1371, 260, 260, 260, 260, 260, 1374, 1280, + 1374, 260, 1365, 1365, 1365, 1365, 260, 1375, 260, 1379, + + 1373, 1380, 260, 1365, 1375, 1383, 260, 260, 260, 260, + 260, 260, 1365, 1245, 1245, 1245, 1245, 1386, 1387, 260, + 260, 1388, 1389, 260, 1391, 260, 260, 260, 260, 260, + 260, 260, 1392, 1292, 1292, 1292, 1292, 1393, 260, 260, + 1394, 1396, 260, 1397, 260, 260, 260, 260, 260, 260, + 260, 1402, 260, 1292, 1245, 1245, 260, 1407, 1395, 260, + 260, 260, 260, 260, 260, 1401, 260, 1395, 1408, 1245, + 1245, 260, 260, 1245, 1401, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 1285, 1285, 1285, 1285, 1403, + 1292, 260, 260, 260, 260, 260, 1285, 1405, 1404, 1405, + + 260, 1404, 1409, 260, 260, 260, 260, 260, 1356, 1356, + 1356, 1356, 260, 260, 1410, 1411, 260, 260, 260, 260, + 1382, 1382, 1382, 1382, 260, 1403, 260, 260, 1412, 260, + 1414, 260, 1426, 1429, 1431, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 260, 1285, 260, + 1427, 1432, 260, 260, 1420, 1398, 1398, 1398, 1398, 1420, + 1427, 1432, 1434, 1437, 260, 260, 1398, 1438, 1440, 1441, + 1442, 1356, 1434, 260, 260, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, + + 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 260, 1413, 1422, + 260, 260, 260, 260, 1443, 260, 260, 1444, 1445, 260, + 1446, 1447, 1435, 260, 1422, 260, 260, 260, 271, 271, + 271, 271, 1435, 1448, 1291, 1291, 1291, 1291, 1436, 271, + 1449, 1450, 1451, 1452, 271, 271, 1453, 271, 271, 1413, + 1291, 1460, 1436, 1455, 1291, 271, 271, 271, 271, 271, + 271, 271, 1455, 1458, 1458, 1461, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 1291, 1462, 1463, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 273, 1368, 1368, + 1368, 1368, 1475, 1456, 1390, 1390, 1390, 1390, 1456, 1368, + 1490, 273, 273, 273, 273, 273, 273, 273, 1368, 1465, + 1465, 1491, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 1476, 1485, 1476, + 1486, 273, 273, 273, 273, 273, 273, 273, 273, 273, + + 273, 273, 273, 273, 1390, 1485, 1492, 1486, 273, 1493, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 1494, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 1370, 1370, 1370, 1370, 1457, 1478, + 273, 273, 273, 1457, 273, 1370, 1497, 1498, 273, 273, + 273, 273, 273, 1478, 1370, 1499, 273, 1377, 1377, 1377, + 1377, 273, 1488, 273, 1487, 1500, 1501, 273, 1377, 1502, + 1487, 273, 273, 273, 273, 273, 273, 1489, 1503, 1488, + 1504, 1506, 1507, 1489, 273, 273, 1513, 1509, 273, 1509, + 273, 273, 273, 273, 273, 273, 273, 1510, 1298, 1298, + + 1298, 1298, 1515, 273, 273, 1510, 1526, 273, 1527, 273, + 273, 273, 273, 273, 273, 273, 1511, 273, 1528, 1511, + 1377, 273, 1512, 1520, 273, 273, 273, 273, 273, 273, + 1512, 273, 1439, 1439, 1439, 1439, 273, 273, 1524, 1524, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 1466, 1466, 1466, 1466, 1522, 1298, 273, 273, 273, 273, + 273, 1298, 1522, 1529, 1520, 273, 1516, 1530, 273, 273, + 273, 273, 273, 1496, 1496, 1496, 1496, 273, 273, 1439, + 1516, 273, 273, 273, 273, 1523, 1525, 1525, 1439, 273, + 1531, 273, 273, 1523, 273, 1533, 273, 1535, 1536, 1537, + + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 1466, 273, 1538, 1539, 273, 273, 1505, + 1505, 1505, 1505, 1540, 1542, 1543, 1545, 1549, 1550, 273, + 273, 1558, 1558, 1541, 1541, 1541, 1541, 1563, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 273, 273, 273, 273, 273, 273, 273, + 273, 273, 273, 1541, 1546, 273, 273, 273, 273, 1561, + + 273, 273, 1547, 1564, 273, 1548, 1566, 1546, 273, 1561, + 273, 273, 273, 312, 312, 1551, 312, 1547, 1568, 1548, + 1569, 1562, 1571, 1551, 312, 312, 312, 312, 312, 312, + 312, 1562, 1572, 1573, 1576, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 1577, 1578, 1579, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 324, 324, 1580, 324, + 324, 1581, 1584, 1559, 1559, 1559, 1559, 324, 324, 324, + + 324, 324, 324, 324, 1559, 1589, 1598, 1599, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 1594, 1600, 1594, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 326, + 326, 326, 326, 326, 326, 326, 1601, 1605, 1606, 1607, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 1532, 1532, 1532, 1532, 326, + + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 1608, 1609, 1611, 1622, 326, 1623, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 1585, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 1419, 1419, 1419, 1419, 1585, 1586, 326, 326, + 326, 1532, 326, 1419, 1619, 1619, 326, 326, 326, 326, + 326, 1586, 1419, 1591, 326, 1544, 1544, 1544, 1544, 326, + 1624, 326, 1590, 1625, 1627, 326, 1544, 1591, 1610, 326, + 326, 326, 326, 326, 326, 1590, 1521, 1521, 1521, 1521, + 1610, 1595, 326, 326, 1628, 1629, 326, 1521, 326, 326, + + 326, 326, 326, 326, 326, 1595, 1616, 1592, 1544, 1630, + 1593, 326, 326, 1592, 1616, 326, 1593, 326, 326, 326, + 326, 326, 326, 326, 1630, 326, 1617, 1640, 1618, 326, + 1637, 1641, 326, 326, 326, 326, 326, 326, 1617, 326, + 1618, 1643, 1644, 1521, 326, 326, 1637, 1650, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 1582, 1582, + 1582, 1582, 1634, 1654, 326, 326, 326, 326, 326, 1582, + 1647, 1656, 1647, 326, 1657, 1634, 326, 326, 326, 326, + 326, 1642, 1642, 1642, 1642, 326, 326, 1658, 1659, 326, + 326, 326, 326, 1663, 1665, 1666, 1668, 326, 1671, 326, + + 326, 1672, 326, 1673, 326, 1675, 1678, 1663, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 1680, 326, 1674, 1683, 326, 326, 1674, 1596, 1596, + 1596, 1596, 1612, 1612, 1612, 1612, 1677, 326, 326, 1596, + 1684, 1677, 1688, 1612, 1721, 1017, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 326, 326, + + 326, 1670, 1685, 326, 326, 326, 326, 1682, 326, 326, + 1685, 1670, 326, 1682, 1681, 1016, 326, 1015, 326, 326, + 326, 424, 424, 1681, 424, 1014, 1013, 1012, 1638, 1638, + 1638, 1638, 424, 424, 424, 424, 424, 424, 424, 1638, + 1011, 1009, 1008, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 1007, 1006, + 1005, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, + 424, 424, 424, 424, 441, 441, 1001, 441, 441, 994, + + 993, 1648, 1648, 1648, 1648, 441, 441, 441, 441, 441, + 441, 441, 1648, 991, 987, 986, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 982, 981, 980, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, + 441, 441, 441, 441, 441, 441, 441, 443, 443, 443, + 443, 443, 443, 443, 979, 977, 976, 975, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + + 443, 443, 443, 1660, 1660, 1660, 1660, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 974, 973, 972, 971, 443, 970, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 969, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 1587, 1587, 1587, 1587, 968, 966, 443, 443, 443, 965, + 443, 1587, 964, 1660, 443, 443, 443, 443, 443, 963, + 962, 961, 443, 1694, 1694, 1694, 1694, 443, 960, 443, + 958, 957, 956, 443, 1694, 955, 953, 443, 443, 443, + 443, 443, 443, 1587, 1565, 1565, 1565, 1565, 952, 951, + + 443, 443, 950, 949, 443, 1565, 443, 443, 443, 443, + 443, 443, 443, 948, 1615, 1615, 1615, 1615, 940, 443, + 443, 928, 925, 443, 923, 443, 443, 443, 443, 443, + 443, 443, 921, 443, 1615, 920, 915, 443, 914, 912, + 443, 443, 443, 443, 443, 443, 911, 443, 910, 909, + 908, 1565, 443, 443, 907, 906, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 1631, 1631, 1631, 1631, + 905, 1615, 443, 443, 443, 443, 443, 1631, 904, 903, + 902, 443, 901, 900, 443, 443, 443, 443, 443, 1699, + 1699, 1699, 1699, 443, 443, 899, 898, 443, 443, 443, + + 443, 897, 896, 895, 894, 443, 892, 443, 443, 1631, + 443, 891, 443, 890, 889, 888, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 887, + 443, 886, 884, 443, 443, 883, 882, 881, 880, 879, + 878, 868, 864, 858, 856, 443, 443, 847, 846, 845, + 844, 843, 1699, 841, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + 443, 443, 443, 443, 443, 443, 443, 443, 443, 443, + + 443, 443, 443, 443, 443, 443, 443, 443, 443, 840, + 838, 443, 443, 443, 443, 837, 443, 443, 836, 835, + 443, 834, 833, 832, 443, 831, 443, 443, 443, 491, + 491, 830, 491, 829, 828, 827, 826, 825, 824, 823, + 491, 491, 491, 491, 491, 491, 491, 822, 821, 820, + 819, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 811, 810, 809, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, + + 491, 491, 500, 500, 500, 500, 808, 807, 1293, 1293, + 1293, 1293, 806, 500, 805, 804, 800, 791, 500, 500, + 788, 500, 783, 778, 1293, 776, 774, 773, 1293, 500, + 500, 500, 500, 500, 500, 500, 772, 771, 770, 769, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 1293, 768, 766, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 503, 503, 503, 503, 765, 764, 1354, 1354, 1354, + + 1354, 763, 503, 762, 760, 759, 758, 503, 503, 757, + 503, 503, 756, 1354, 755, 754, 752, 1354, 503, 503, + 503, 503, 503, 503, 503, 751, 750, 749, 748, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 1354, 746, 744, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 540, 540, 743, 540, 742, 741, 740, 738, 737, 736, + 735, 540, 540, 540, 540, 540, 540, 540, 734, 733, + + 732, 730, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 729, 728, 727, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 540, 540, 540, 540, 540, 540, 540, + 540, 540, 540, 597, 597, 726, 597, 597, 717, 715, + 709, 707, 698, 679, 597, 597, 597, 597, 597, 597, + 597, 678, 671, 670, 669, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + + 668, 665, 664, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 597, 597, 597, 597, + 597, 597, 597, 597, 597, 597, 635, 635, 663, 635, + 662, 659, 657, 656, 655, 654, 653, 635, 635, 635, + 635, 635, 635, 635, 652, 651, 650, 649, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 648, 647, 646, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, + 635, 635, 635, 635, 635, 635, 635, 635, 635, 672, + + 672, 645, 672, 644, 643, 642, 641, 640, 639, 638, + 672, 672, 672, 672, 672, 672, 672, 634, 633, 631, + 630, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 629, 628, 627, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 672, 672, 672, 672, 672, 672, 672, 672, + 672, 672, 680, 680, 680, 680, 626, 625, 624, 1620, + 1620, 1620, 1620, 680, 623, 622, 621, 620, 680, 680, + 1620, 680, 619, 618, 617, 616, 614, 612, 611, 680, + + 680, 680, 680, 680, 680, 680, 610, 609, 608, 607, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 606, 1620, 605, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 680, 680, 680, 680, 680, 680, 680, 680, 680, + 680, 686, 686, 686, 686, 1632, 1632, 1632, 1632, 604, + 603, 602, 686, 600, 598, 596, 1632, 686, 686, 595, + 686, 686, 594, 593, 592, 1632, 591, 590, 686, 686, + 686, 686, 686, 686, 686, 589, 588, 587, 586, 686, + + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 585, 584, 583, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 686, 686, 686, 686, 686, 686, 686, 686, 686, 686, + 718, 718, 582, 718, 581, 580, 579, 578, 577, 576, + 575, 718, 718, 718, 718, 718, 718, 718, 574, 571, + 570, 568, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 567, 566, 565, + + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 718, 718, 718, 718, 718, 718, 718, + 718, 718, 718, 777, 777, 564, 777, 777, 563, 561, + 560, 559, 558, 557, 777, 777, 777, 777, 777, 777, + 777, 556, 554, 553, 552, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 551, 550, 549, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, + 777, 777, 777, 777, 777, 777, 813, 813, 546, 813, + + 538, 537, 536, 535, 534, 531, 528, 813, 813, 813, + 813, 813, 813, 813, 526, 523, 520, 519, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 518, 517, 515, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 813, + 813, 813, 813, 813, 813, 813, 813, 813, 813, 848, + 848, 848, 848, 513, 498, 1635, 1635, 1635, 1635, 497, + 848, 496, 495, 488, 487, 848, 848, 486, 848, 848, + 483, 482, 481, 478, 477, 1635, 848, 848, 848, 848, + + 848, 848, 848, 476, 475, 474, 471, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 1635, 470, 469, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, + 848, 848, 848, 848, 848, 848, 848, 848, 870, 1653, + 1653, 1653, 1653, 468, 467, 870, 466, 465, 464, 463, + 1653, 461, 870, 870, 870, 870, 870, 870, 870, 1653, + 460, 459, 458, 870, 870, 870, 870, 870, 870, 870, + 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, + + 870, 870, 870, 870, 870, 870, 870, 870, 457, 456, + 455, 454, 870, 870, 870, 870, 870, 870, 870, 870, + 870, 870, 870, 870, 870, 453, 452, 449, 439, 870, + 438, 870, 870, 870, 870, 870, 870, 870, 870, 870, + 870, 870, 870, 870, 870, 436, 870, 870, 870, 870, + 870, 870, 870, 870, 870, 1655, 1655, 1655, 1655, 435, + 434, 870, 870, 870, 433, 870, 1655, 432, 431, 870, + 870, 870, 870, 870, 430, 1655, 423, 870, 422, 421, + 419, 418, 870, 417, 870, 416, 415, 414, 870, 413, + 412, 408, 870, 870, 870, 870, 870, 870, 1636, 1636, + + 1636, 1636, 405, 402, 399, 870, 870, 396, 394, 870, + 393, 870, 870, 870, 870, 870, 870, 870, 1636, 1652, + 1652, 1652, 1652, 392, 870, 870, 391, 390, 870, 388, + 870, 870, 870, 870, 870, 870, 870, 386, 870, 1652, + 384, 383, 870, 381, 379, 870, 870, 870, 870, 870, + 870, 378, 870, 376, 375, 1636, 372, 870, 870, 371, + 370, 870, 870, 870, 870, 870, 870, 870, 870, 870, + 870, 1689, 1689, 1689, 1689, 369, 1652, 870, 870, 870, + 870, 870, 1689, 368, 367, 365, 870, 363, 361, 870, + 870, 870, 870, 870, 358, 355, 354, 353, 870, 870, + + 350, 349, 870, 870, 870, 870, 348, 345, 344, 342, + 870, 340, 870, 870, 1689, 870, 320, 870, 319, 308, + 307, 870, 870, 870, 870, 870, 870, 870, 870, 870, + 870, 870, 870, 870, 306, 870, 303, 302, 870, 870, + 301, 300, 299, 298, 297, 294, 293, 292, 291, 290, + 870, 870, 289, 288, 285, 284, 283, 281, 280, 870, + 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, + 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, + 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, + 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, + + 870, 870, 870, 870, 870, 870, 870, 870, 870, 870, + 870, 870, 870, 870, 279, 278, 870, 870, 870, 870, + 259, 870, 870, 255, 251, 870, 248, 247, 246, 870, + 243, 870, 870, 870, 927, 927, 240, 927, 927, 239, + 238, 237, 235, 234, 232, 927, 927, 927, 927, 927, + 927, 927, 231, 230, 229, 228, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 226, 225, 224, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + 927, 927, 927, 927, 927, 927, 927, 927, 927, 927, + + 927, 927, 927, 927, 927, 927, 927, 1196, 1196, 1196, + 1196, 1664, 1664, 1664, 1664, 222, 221, 220, 1196, 219, + 218, 217, 1664, 216, 215, 214, 209, 204, 200, 199, + 196, 1664, 195, 191, 1196, 1196, 1196, 1196, 1196, 1196, + 1196, 188, 187, 186, 184, 1196, 1196, 1196, 1196, 1196, + 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + 1196, 183, 182, 181, 1196, 1196, 1196, 1196, 1196, 1196, + 1196, 1196, 1196, 1196, 1196, 1196, 1196, 176, 175, 172, + 171, 1196, 168, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + + 1196, 1196, 1196, 1196, 1196, 1196, 1196, 164, 1196, 1196, + 1196, 1196, 1196, 1196, 1196, 1196, 1196, 158, 157, 152, + 148, 133, 131, 1196, 1196, 1196, 130, 1196, 129, 123, + 122, 1196, 1196, 1196, 1196, 1196, 121, 115, 114, 1196, + 106, 105, 104, 100, 1196, 98, 1196, 97, 95, 85, + 1196, 80, 71, 30, 1196, 1196, 1196, 1196, 1196, 1196, + 29, 0, 0, 0, 0, 0, 0, 1196, 1196, 0, + 0, 1196, 0, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + 0, 0, 0, 0, 0, 0, 1196, 1196, 0, 0, + 1196, 0, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 0, + + 1196, 0, 0, 0, 1196, 0, 0, 1196, 1196, 1196, + 1196, 1196, 1196, 0, 1196, 0, 0, 0, 0, 1196, + 1196, 0, 0, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + 1196, 1196, 1196, 0, 0, 0, 0, 0, 0, 1196, + 1196, 1196, 1196, 1196, 0, 0, 0, 0, 1196, 0, + 0, 1196, 1196, 1196, 1196, 1196, 0, 0, 0, 0, + 1196, 1196, 0, 0, 1196, 1196, 1196, 1196, 0, 0, + 0, 0, 1196, 0, 1196, 1196, 0, 1196, 0, 1196, + 0, 0, 0, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + 1196, 1196, 1196, 1196, 1196, 1196, 0, 1196, 0, 0, + + 1196, 1196, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1196, 1196, 0, 0, 0, 0, 0, 0, + 0, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196, + 1196, 1196, 1196, 1196, 1196, 1196, 0, 0, 1196, 1196, + 1196, 1196, 0, 1196, 1196, 0, 0, 1196, 0, 0, + 0, 1196, 0, 1196, 1196, 1196, 1283, 1283, 1283, 1283, + + 0, 1686, 1686, 1686, 1686, 0, 0, 1283, 0, 0, + 0, 0, 1686, 0, 0, 0, 1283, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1283, 0, 0, 0, 0, 1686, 1283, + 1288, 1288, 1288, 1288, 1686, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1288, 1288, 0, 1288, + 1288, 0, 0, 0, 0, 0, 0, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 0, 0, 0, 0, 1288, 1288, + + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 0, 0, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, + 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1350, + 1350, 1350, 1350, 0, 0, 0, 0, 0, 0, 0, + 1350, 0, 0, 0, 0, 0, 0, 0, 0, 1350, + 0, 0, 0, 0, 0, 0, 1350, 1350, 1350, 1350, + 1350, 1350, 1350, 0, 0, 0, 0, 1350, 1350, 1350, + 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, + + 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, + 1350, 1350, 1350, 0, 0, 0, 1350, 1350, 1350, 1350, + 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 0, + 0, 0, 0, 1350, 0, 1350, 1350, 1350, 1350, 1350, + 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 0, + 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 0, + 0, 0, 0, 0, 0, 1350, 1350, 1350, 0, 1350, + 0, 0, 0, 1350, 1350, 1350, 1350, 1350, 0, 0, + 0, 1350, 0, 0, 0, 0, 1350, 0, 1350, 0, + 0, 0, 1350, 0, 0, 0, 1350, 1350, 1350, 1350, + + 1350, 1350, 0, 0, 0, 0, 0, 0, 0, 1350, + 1350, 0, 0, 1350, 0, 1350, 1350, 1350, 1350, 1350, + 1350, 1350, 0, 0, 0, 0, 0, 0, 1350, 1350, + 0, 0, 1350, 0, 1350, 1350, 1350, 1350, 1350, 1350, + 1350, 0, 1350, 0, 0, 0, 1350, 0, 0, 1350, + 1350, 1350, 1350, 1350, 1350, 0, 1350, 0, 0, 0, + 0, 1350, 1350, 0, 0, 1350, 1350, 1350, 1350, 1350, + 1350, 1350, 1350, 1350, 1350, 0, 0, 0, 0, 0, + 0, 1350, 1350, 1350, 1350, 1350, 0, 0, 0, 0, + 1350, 0, 0, 1350, 1350, 1350, 1350, 1350, 0, 0, + + 0, 0, 1350, 1350, 0, 0, 1350, 1350, 1350, 1350, + 0, 0, 0, 0, 1350, 0, 1350, 1350, 0, 1350, + 0, 1350, 0, 0, 0, 1350, 1350, 1350, 1350, 1350, + 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 0, 1350, + 0, 0, 1350, 1350, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1350, 1350, 0, 0, 0, 0, + 0, 0, 0, 1350, 1350, 1350, 1350, 1350, 1350, 1350, + 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, + 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, + 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, + + 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, + 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 0, 0, + 1350, 1350, 1350, 1350, 0, 1350, 1350, 0, 0, 1350, + 0, 0, 0, 1350, 0, 1350, 1350, 1350, 1352, 0, + 0, 0, 0, 0, 0, 1352, 0, 0, 0, 0, + 0, 0, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 0, + 0, 0, 0, 1352, 1352, 1352, 1352, 1352, 1352, 1352, + 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, + 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 0, 0, + 0, 0, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, + + 1352, 1352, 1352, 1352, 1352, 0, 0, 0, 0, 1352, + 0, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, + 1352, 1352, 1352, 1352, 1352, 0, 1352, 1352, 1352, 1352, + 1352, 1352, 1352, 1352, 1352, 0, 0, 0, 0, 0, + 0, 1352, 1352, 1352, 0, 1352, 0, 0, 0, 1352, + 1352, 1352, 1352, 1352, 0, 0, 0, 1352, 0, 0, + 0, 0, 1352, 0, 1352, 0, 0, 0, 1352, 0, + 0, 0, 1352, 1352, 1352, 1352, 1352, 1352, 0, 0, + 0, 0, 0, 0, 0, 1352, 1352, 0, 0, 1352, + 0, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 0, 0, + + 0, 0, 0, 0, 1352, 1352, 0, 0, 1352, 0, + 1352, 1352, 1352, 1352, 1352, 1352, 1352, 0, 1352, 0, + 0, 0, 1352, 0, 0, 1352, 1352, 1352, 1352, 1352, + 1352, 0, 1352, 0, 0, 0, 0, 1352, 1352, 0, + 0, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, + 1352, 0, 0, 0, 0, 0, 0, 1352, 1352, 1352, + 1352, 1352, 0, 0, 0, 0, 1352, 0, 0, 1352, + 1352, 1352, 1352, 1352, 0, 0, 0, 0, 1352, 1352, + 0, 0, 1352, 1352, 1352, 1352, 0, 0, 0, 0, + 1352, 0, 1352, 1352, 0, 1352, 0, 1352, 0, 0, + + 0, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, + 1352, 1352, 1352, 1352, 0, 1352, 0, 0, 1352, 1352, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1352, 1352, 0, 0, 0, 0, 0, 0, 0, 1352, + 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, + 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, + 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, + 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, + 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, + 1352, 1352, 1352, 1352, 0, 0, 1352, 1352, 1352, 1352, + + 0, 1352, 1352, 0, 0, 1352, 0, 0, 0, 1352, + 0, 1352, 1352, 1352, 1357, 1357, 1357, 1357, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1357, 1357, 0, 1357, 1357, 0, 0, 0, 0, 0, + 0, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 0, 0, + 0, 0, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 0, 0, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, 1357, + + 1357, 1357, 1357, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 0, 0, 0, 0, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 0, + 0, 0, 0, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 0, 0, 0, 0, + 1359, 0, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 0, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 0, 0, 0, 0, + 0, 0, 1359, 1359, 1359, 0, 1359, 0, 0, 0, + + 1359, 1359, 1359, 1359, 1359, 0, 0, 0, 1359, 0, + 0, 0, 0, 1359, 0, 1359, 0, 0, 0, 1359, + 0, 0, 0, 1359, 1359, 1359, 1359, 1359, 1359, 0, + 0, 0, 0, 0, 0, 0, 1359, 1359, 0, 0, + 1359, 0, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 0, + 0, 0, 0, 0, 0, 1359, 1359, 0, 0, 1359, + 0, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 0, 1359, + 0, 0, 0, 1359, 0, 0, 1359, 1359, 1359, 1359, + 1359, 1359, 0, 1359, 0, 0, 0, 0, 1359, 1359, + 0, 0, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + + 1359, 1359, 0, 0, 0, 0, 0, 0, 1359, 1359, + 1359, 1359, 1359, 0, 0, 0, 0, 1359, 0, 0, + 1359, 1359, 1359, 1359, 1359, 0, 0, 0, 0, 1359, + 1359, 0, 0, 1359, 1359, 1359, 1359, 0, 0, 0, + 0, 1359, 0, 1359, 1359, 0, 1359, 0, 1359, 0, + 0, 0, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 0, 1359, 0, 0, 1359, + 1359, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1359, 1359, 0, 0, 0, 0, 0, 0, 0, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1359, + 1359, 1359, 1359, 1359, 1359, 0, 0, 1359, 1359, 1359, + 1359, 0, 1359, 1359, 0, 0, 1359, 0, 0, 0, + 1359, 0, 1359, 1359, 1359, 1400, 1400, 0, 1400, 1400, + 0, 0, 0, 0, 0, 0, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 0, 0, 0, 0, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 0, 0, 0, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, + 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1400, 1415, 1415, + 1415, 1415, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1415, 1415, 0, 1415, 1415, 0, + 0, 0, 0, 0, 0, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 0, 0, 0, 0, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + + 1415, 1415, 0, 0, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1415, + 1415, 1415, 1415, 1415, 1415, 1415, 1415, 1421, 0, 0, + 0, 0, 0, 0, 1421, 0, 0, 0, 0, 0, + 0, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 0, 0, + 0, 0, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, + 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, + 1421, 1421, 1421, 1421, 1421, 1421, 1421, 0, 0, 0, + 0, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, + 1421, 1421, 1421, 1421, 0, 0, 0, 0, 1421, 0, + + 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, + 1421, 1421, 1421, 1421, 0, 1421, 1421, 1421, 1421, 1421, + 1421, 1421, 1421, 1421, 0, 0, 0, 0, 0, 0, + 1421, 1421, 1421, 0, 1421, 0, 0, 0, 1421, 1421, + 1421, 1421, 1421, 0, 0, 0, 1421, 0, 0, 0, + 0, 1421, 0, 1421, 0, 0, 0, 1421, 0, 0, + 0, 1421, 1421, 1421, 1421, 1421, 1421, 0, 0, 0, + 0, 0, 0, 0, 1421, 1421, 0, 0, 1421, 0, + 1421, 1421, 1421, 1421, 1421, 1421, 1421, 0, 0, 0, + 0, 0, 0, 1421, 1421, 0, 0, 1421, 0, 1421, + + 1421, 1421, 1421, 1421, 1421, 1421, 0, 1421, 0, 0, + 0, 1421, 0, 0, 1421, 1421, 1421, 1421, 1421, 1421, + 0, 1421, 0, 0, 0, 0, 1421, 1421, 0, 0, + 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, + 0, 0, 0, 0, 0, 0, 1421, 1421, 1421, 1421, + 1421, 0, 0, 0, 0, 1421, 0, 0, 1421, 1421, + 1421, 1421, 1421, 0, 0, 0, 0, 1421, 1421, 0, + 0, 1421, 1421, 1421, 1421, 0, 0, 0, 0, 1421, + 0, 1421, 1421, 0, 1421, 0, 1421, 0, 0, 0, + 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, + + 1421, 1421, 1421, 0, 1421, 0, 0, 1421, 1421, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1421, + 1421, 0, 0, 0, 0, 0, 0, 0, 1421, 1421, + 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, + 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, + 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, + 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, + 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, 1421, + 1421, 1421, 1421, 0, 0, 1421, 1421, 1421, 1421, 0, + 1421, 1421, 0, 0, 1421, 0, 0, 0, 1421, 0, + + 1421, 1421, 1421, 1423, 1423, 1423, 1423, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1423, + 1423, 0, 1423, 0, 0, 0, 0, 0, 0, 0, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 0, 0, 0, + 0, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 0, 0, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, 1423, + 1423, 1423, 1454, 1454, 0, 1454, 1454, 0, 0, 0, + + 0, 0, 0, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 0, 0, 0, 0, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 0, + 0, 0, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, 1454, + 1454, 1454, 1454, 1454, 1454, 1467, 1467, 1467, 1467, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1467, 1467, 0, 1467, 1467, 0, 0, 0, 0, + 0, 0, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 0, + + 0, 0, 0, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 0, + 0, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, 1467, + 1467, 1467, 1467, 1467, 1469, 1469, 1469, 1469, 1469, 1469, + 1469, 0, 0, 0, 0, 1469, 1469, 1469, 1469, 1469, + 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, + 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, + 0, 0, 0, 0, 1469, 1469, 1469, 1469, 1469, 1469, + + 1469, 1469, 1469, 1469, 1469, 1469, 1469, 0, 0, 0, + 0, 1469, 0, 1469, 1469, 1469, 1469, 1469, 1469, 1469, + 1469, 1469, 1469, 1469, 1469, 1469, 1469, 0, 1469, 1469, + 1469, 1469, 1469, 1469, 1469, 1469, 1469, 0, 0, 0, + 0, 0, 0, 1469, 1469, 1469, 0, 1469, 0, 0, + 0, 1469, 1469, 1469, 1469, 1469, 0, 0, 0, 1469, + 0, 0, 0, 0, 1469, 0, 1469, 0, 0, 0, + 1469, 0, 0, 0, 1469, 1469, 1469, 1469, 1469, 1469, + 0, 0, 0, 0, 0, 0, 0, 1469, 1469, 0, + 0, 1469, 0, 1469, 1469, 1469, 1469, 1469, 1469, 1469, + + 0, 0, 0, 0, 0, 0, 1469, 1469, 0, 0, + 1469, 0, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 0, + 1469, 0, 0, 0, 1469, 0, 0, 1469, 1469, 1469, + 1469, 1469, 1469, 0, 1469, 0, 0, 0, 0, 1469, + 1469, 0, 0, 1469, 1469, 1469, 1469, 1469, 1469, 1469, + 1469, 1469, 1469, 0, 0, 0, 0, 0, 0, 1469, + 1469, 1469, 1469, 1469, 0, 0, 0, 0, 1469, 0, + 0, 1469, 1469, 1469, 1469, 1469, 0, 0, 0, 0, + 1469, 1469, 0, 0, 1469, 1469, 1469, 1469, 0, 0, + 0, 0, 1469, 0, 1469, 1469, 0, 1469, 0, 1469, + + 0, 0, 0, 1469, 1469, 1469, 1469, 1469, 1469, 1469, + 1469, 1469, 1469, 1469, 1469, 1469, 0, 1469, 0, 0, + 1469, 1469, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1469, 1469, 0, 0, 0, 0, 0, 0, + 0, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, + 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, + 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, + 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, + 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, 1469, + 1469, 1469, 1469, 1469, 1469, 1469, 0, 0, 1469, 1469, + + 1469, 1469, 0, 1469, 1469, 0, 0, 1469, 0, 0, + 0, 1469, 0, 1469, 1469, 1469, 1479, 1479, 1479, 1479, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1479, 1479, 0, 1479, 0, 0, 0, 0, + 0, 0, 0, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 0, 0, 0, 0, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 0, 0, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, 1479, + + 1479, 1479, 1479, 1479, 1479, 1508, 1508, 0, 1508, 1508, + 0, 0, 0, 0, 0, 0, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 0, 0, 0, 0, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 0, 0, 0, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, + 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1508, 1517, 1517, + 1517, 1517, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1517, 1517, 0, 1517, 0, 0, + + 0, 0, 0, 0, 0, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 0, 0, 0, 0, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 0, 0, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1517, + 1517, 1517, 1517, 1517, 1517, 1517, 1517, 1633, 0, 0, + 0, 0, 0, 0, 1633, 0, 0, 0, 0, 0, + 0, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 0, 0, + 0, 0, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, + + 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, + 1633, 1633, 1633, 1633, 1633, 1633, 1633, 0, 0, 0, + 0, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, + 1633, 1633, 1633, 1633, 0, 0, 0, 0, 1633, 0, + 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, + 1633, 1633, 1633, 1633, 0, 1633, 1633, 1633, 1633, 1633, + 1633, 1633, 1633, 1633, 0, 0, 0, 0, 0, 0, + 1633, 1633, 1633, 0, 1633, 0, 0, 0, 1633, 1633, + 1633, 1633, 1633, 0, 0, 0, 1633, 0, 0, 0, + 0, 1633, 0, 1633, 0, 0, 0, 1633, 0, 0, + + 0, 1633, 1633, 1633, 1633, 1633, 1633, 0, 0, 0, + 0, 0, 0, 0, 1633, 1633, 0, 0, 1633, 0, + 1633, 1633, 1633, 1633, 1633, 1633, 1633, 0, 0, 0, + 0, 0, 0, 1633, 1633, 0, 0, 1633, 0, 1633, + 1633, 1633, 1633, 1633, 1633, 1633, 0, 1633, 0, 0, + 0, 1633, 0, 0, 1633, 1633, 1633, 1633, 1633, 1633, + 0, 1633, 0, 0, 0, 0, 1633, 1633, 0, 0, + 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, + 0, 0, 0, 0, 0, 0, 1633, 1633, 1633, 1633, + 1633, 0, 0, 0, 0, 1633, 0, 0, 1633, 1633, + + 1633, 1633, 1633, 0, 0, 0, 0, 1633, 1633, 0, + 0, 1633, 1633, 1633, 1633, 0, 0, 0, 0, 1633, + 0, 1633, 1633, 0, 1633, 0, 1633, 0, 0, 0, + 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, + 1633, 1633, 1633, 0, 1633, 0, 0, 1633, 1633, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1633, + 1633, 0, 0, 0, 0, 0, 0, 0, 1633, 1633, + 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, + 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, + 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, + + 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, + 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, + 1633, 1633, 1633, 0, 0, 1633, 1633, 1633, 1633, 0, + 1633, 1633, 0, 0, 1633, 0, 0, 0, 1633, 0, + 1633, 1633, 1633, 1690, 1690, 1690, 1690, 0, 0, 0, + 0, 0, 0, 0, 1690, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 0, 0, 0, + 0, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 0, 0, 0, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 0, 0, 0, 0, 1690, 0, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 0, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 0, 0, 0, 0, 0, 0, 1690, + 1690, 1690, 0, 1690, 0, 0, 0, 1690, 1690, 1690, + 1690, 1690, 0, 0, 0, 1690, 0, 0, 0, 0, + 1690, 0, 1690, 0, 0, 0, 1690, 0, 0, 0, + 1690, 1690, 1690, 1690, 1690, 1690, 0, 0, 0, 0, + + 0, 0, 0, 1690, 1690, 0, 0, 1690, 0, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 0, 0, 0, 0, + 0, 0, 1690, 1690, 0, 0, 1690, 0, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 0, 1690, 0, 0, 0, + 1690, 0, 0, 1690, 1690, 1690, 1690, 1690, 1690, 0, + 1690, 0, 0, 0, 0, 1690, 1690, 0, 0, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 0, + 0, 0, 0, 0, 0, 1690, 1690, 1690, 1690, 1690, + 0, 0, 0, 0, 1690, 0, 0, 1690, 1690, 1690, + 1690, 1690, 0, 0, 0, 0, 1690, 1690, 0, 0, + + 1690, 1690, 1690, 1690, 0, 0, 0, 0, 1690, 0, + 1690, 1690, 0, 1690, 0, 1690, 0, 0, 0, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 0, 1690, 0, 0, 1690, 1690, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1690, 1690, + 0, 0, 0, 0, 0, 0, 0, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + + 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, + 1690, 1690, 0, 0, 1690, 1690, 1690, 1690, 0, 1690, + 1690, 0, 0, 1690, 0, 0, 0, 1690, 0, 1690, + 1690, 1690, 1696, 1696, 1696, 1696, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1696, 1696, + 0, 1696, 0, 0, 0, 0, 0, 0, 0, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 0, 0, 0, 0, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 0, 0, 1696, 1696, + + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, + 1696, 1708, 1708, 1708, 1709, 1709, 1709, 1710, 1710, 1710, + 1711, 1711, 1711, 1712, 1712, 1712, 1713, 1713, 1713, 1714, + 1714, 1715, 1715, 1716, 1716, 1716, 1717, 1717, 1717, 1718, + 1718, 1719, 1719, 1720, 1720, 1722, 1722, 1723, 1723, 1724, + 1724, 1725, 1725, 1726, 1726, 1727, 1727, 1728, 1728, 1729, + 1729, 1730, 1730, 1731, 1731, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, + 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707, 1707 + } ; + +#define YY_TRAILING_MASK 0x2000 +#define YY_TRAILING_HEAD_MASK 0x4000 +#define REJECT \ +{ \ +*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \ +yy_cp = yy_full_match; /* restore poss. backed-over text */ \ +yy_lp = yy_full_lp; /* restore orig. accepting pos. */ \ +yy_state_ptr = yy_full_state; /* restore orig. state */ \ +yy_current_state = *yy_state_ptr; /* restore curr. state */ \ +++yy_lp; \ +goto find_rule; \ +} +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +#line 1 "../src/lexer/XQLexer.l" +#define INITIAL 0 +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQLexer.cpp,v 1.6 2006/11/01 16:37:21 jpcs Exp $ + */ +#line 15 "../src/lexer/XQLexer.l" + +#include "XQLexer.hpp" +#include "../parser/XQParser.hpp" + +#define YY_STACK_USED 1 +#ifdef XQ_DEBUG_LEXER + +#include + +#define CHANGE_STATE(state) BEGIN((state)); std::cerr << "Begin: " << xqGetStateName((state)) << ", " +#define RECOGNIZE(token) { std::cerr << "Recognize: "#token << std::endl; return token; } +// yy_push_state pushes the current state and does a transition to the specified one; +// the semantic of the PUSH/PUSH_CURRENT methods in the specs is that the specified state is pushed +#define PUSH(state) { int curState=YYSTATE; CHANGE_STATE(state); yy_push_state(curState); std::cerr << "Push: " << xqGetStateName((state)) << ", "; } +#define PUSH_CURRENT() PUSH(YYSTATE) +#define POP() yy_pop_state(); std::cerr << "Pop: " << xqGetStateName(YYSTATE) << ", " + +#else + +#define CHANGE_STATE(state) BEGIN((state)) +#define RECOGNIZE(token) return token +// yy_push_state pushes the current state and does a transition to the specified one; +// the semantic of the PUSH/PUSH_CURRENT methods in the specs is that the specified state is pushed +#define PUSH(state) { int curState=YYSTATE; CHANGE_STATE(state); yy_push_state(curState); } +#define PUSH_CURRENT() PUSH(YYSTATE) +#define POP() yy_pop_state() + +#endif + +static char szDelimiters[] ="\t\n\r <>?*$)({/=!|@[],;%\"'&}:.-+"; + +#define REJECT_IF_NOT_TERMINATED { if(yy_hold_char!=YY_END_OF_BUFFER_CHAR && strchr(szDelimiters,yy_hold_char)==NULL) { undoUserAction(); REJECT; } } +#define REJECT_IF_COLON { if(yy_hold_char!=YY_END_OF_BUFFER_CHAR && yy_hold_char==':') { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED1(state, tok1) { if(!next_tokens(state, tok1)) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED2(state, tok1, tok2) { if(!next_tokens(state, tok1,tok2)) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED3(state, tok1, tok2, tok3) { if(!next_tokens(state, tok1, tok2, tok3)) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED_CHOICE2(state, tok1, tok2) { int tok=next_token(state); if(tok!=_EOF_ && tok!=tok1 && tok!=tok2) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED_CHOICE3(state, tok1, tok2, tok3) { int tok=next_token(state); if(tok!=_EOF_ && tok!=tok1 && tok!=tok2 && tok!=tok3) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED_CHOICE4(state, tok1, tok2, tok3, tok4) { int tok=next_token(state); if(tok!=_EOF_ && tok!=tok1 && tok!=tok2 && tok!=tok3 && tok!=tok4) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED_CHOICE5(state, tok1, tok2, tok3, tok4, tok5) { int tok=next_token(state); if(tok!=_EOF_ && tok!=tok1 && tok!=tok2 && tok!=tok3 && tok!=tok4 && tok!=tok5) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED_CHOICE6(state, tok1, tok2, tok3, tok4, tok5, tok6) { int tok=next_token(state); if(tok!=_EOF_ && tok!=tok1 && tok!=tok2 && tok!=tok3 && tok!=tok4 && tok!=tok5 && tok!=tok6) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED_CHOICE7(state, tok1, tok2, tok3, tok4, tok5, tok6, tok7) { int tok=next_token(state); if(tok!=_EOF_ && tok!=tok1 && tok!=tok2 && tok!=tok3 && tok!=tok4 && tok!=tok5 && tok!=tok6 && tok!=tok7) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED_CHOICE8(state, tok1, tok2, tok3, tok4, tok5, tok6, tok7, tok8) { int tok=next_token(state); if(tok!=_EOF_ && tok!=tok1 && tok!=tok2 && tok!=tok3 && tok!=tok4 && tok!=tok5 && tok!=tok6 && tok!=tok7 && tok!=tok8) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED_CHOICE9(state, tok1, tok2, tok3, tok4, tok5, tok6, tok7, tok8, tok9) { int tok=next_token(state); if(tok!=_EOF_ && tok!=tok1 && tok!=tok2 && tok!=tok3 && tok!=tok4 && tok!=tok5 && tok!=tok6 && tok!=tok7 && tok!=tok8 && tok!=tok9) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED_CHOICE10(state, tok1, tok2, tok3, tok4, tok5, tok6, tok7, tok8, tok9, tok10) { int tok=next_token(state); if(tok!=_EOF_ && tok!=tok1 && tok!=tok2 && tok!=tok3 && tok!=tok4 && tok!=tok5 && tok!=tok6 && tok!=tok7 && tok!=tok8 && tok!=tok9 && tok!=tok10) { undoUserAction(); REJECT; } } + +#define REJECT_NOT_XQUERY { if(!isXQuery()) { undoUserAction(); REJECT; } } +#define REJECT_NOT_FULLTEXT { if(!isFullText()) { undoUserAction(); REJECT; } } +#define REJECT_XQUERY { if(isXQuery()) { undoUserAction(); REJECT; } } +#define REJECT_IF_XPATH { if(getLanguage() == XQilla::XPATH2) { undoUserAction(); REJECT; } } + +/* -------------- declaration section -------------- */ +/* UTF16 Surrogates, for chars above 0xFFFF */ +/* from XML spec */ +/* [20] CData ::= (Char* - (Char* ']]>' Char*)) */ +/* [16] PI ::= '' Char*)))? '?>' */ +/* [66] PragmaContents ::= (Char* - (Char* '#)' Char*)) */ +/* from Namespace spec */ +/* from XQuery spec */ +/* CommentChar := {Char} - "-" */ +#define YY_NEVER_INTERACTIVE 1 +#define ELEMENT_CONTENT 1 + +#define PROCESSING_INSTRUCTION 2 + +#define PROCESSING_INSTRUCTION_CONTENT 3 + +#define QUOT_ATTRIBUTE_CONTENT 4 + +#define APOS_ATTRIBUTE_CONTENT 5 + +#define START_TAG 6 + +#define END_TAG 7 + +#define OPERATOR 8 + +#define ITEMTYPE 9 + +#define NAMESPACEDECL 10 + +#define NAMESPACEKEYWORD 11 + +#define BOUNDARYSPACE_DECL 12 + +#define COPYNAMESPACE_DECL 13 + +#define VARNAME 14 + +#define ATTRIBUTE_DECL 15 + +#define KINDTEST 16 + +#define KINDTESTFORPI 17 + +#define CLOSEKINDTEST 18 + +#define EXPR_COMMENT 19 + +#define OCCURRENCEINDICATOR 20 + +#define SINGLETYPE 21 + +#define PRAGMA_NAME 22 + +#define PRAGMA_CONTENT 23 + +#define XQUERYDECL 24 + +#define IMPORT 25 + +#define DEFAULT_KEYWORD 26 + +#define DECLARE_KEYWORD 27 + +#define DEFAULT_ORDER 28 + +#define VALIDATE 29 + +#define ORDER 30 + +#define EMPTY_PARENS 31 + +#define THESAURUS1 32 + +#define THESAURUS2 33 + +#define STOPWORDS 34 + +#line 170 "../src/lexer/XQLexer.l" +char *xqGetStateName(int state) +{ + switch(state) { + case INITIAL: return "INITIAL"; + case ELEMENT_CONTENT: return "ELEMENT_CONTENT"; + case PROCESSING_INSTRUCTION: return "PROCESSING_INSTRUCTION"; + case PROCESSING_INSTRUCTION_CONTENT: return "PROCESSING_INSTRUCTION_CONTENT"; + case QUOT_ATTRIBUTE_CONTENT: return "QUOT_ATTRIBUTE_CONTENT"; + case APOS_ATTRIBUTE_CONTENT: return "APOS_ATTRIBUTE_CONTENT"; + case START_TAG: return "START_TAG"; + case END_TAG: return "END_TAG"; + case OPERATOR: return "OPERATOR"; + case ITEMTYPE: return "ITEMTYPE"; + case NAMESPACEDECL: return "NAMESPACEDECL"; + case NAMESPACEKEYWORD: return "NAMESPACEKEYWORD"; + case BOUNDARYSPACE_DECL: return "BOUNDARYSPACE_DECL"; + case COPYNAMESPACE_DECL: return "COPYNAMESPACE_DECL"; + case VARNAME: return "VARNAME"; + case ATTRIBUTE_DECL: return "ATTRIBUTE_DECL"; + case KINDTEST: return "KINDTEST"; + case KINDTESTFORPI: return "KINDTESTFORPI"; + case CLOSEKINDTEST: return "CLOSEKINDTEST"; + case EXPR_COMMENT: return "EXPR_COMMENT"; + case OCCURRENCEINDICATOR: return "OCCURRENCEINDICATOR"; + case SINGLETYPE: return "SINGLETYPE"; + case PRAGMA_NAME: return "PRAGMA_NAME"; + case PRAGMA_CONTENT: return "PRAGMA_CONTENT"; + case XQUERYDECL: return "XQUERYDECL"; + case IMPORT: return "IMPORT"; + case DEFAULT_KEYWORD: return "DEFAULT_KEYWORD"; + case DECLARE_KEYWORD: return "DECLARE_KEYWORD"; + case DEFAULT_ORDER: return "DEFAULT_ORDER"; + case VALIDATE: return "VALIDATE"; + case ORDER: return "ORDER"; + case EMPTY_PARENS: return "EMPTY_PARENS"; + case THESAURUS1: return "THESAURUS1"; + case THESAURUS2: return "THESAURUS2"; + case STOPWORDS: return "STOPWORDS"; + } + return "unknown"; +} +#line 13360 "../src/lexer/XQLexer.cpp" + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap YY_PROTO(( void )); +#else +extern int yywrap YY_PROTO(( void )); +#endif +#endif + + +#ifndef yytext_ptr +static void yy_flex_strncpy YY_PROTO(( YY_CHAR *, yyconst YY_CHAR *, int )); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen YY_PROTO(( yyconst YY_CHAR * )); +#endif + +#ifndef YY_NO_INPUT +#endif + +#if YY_STACK_USED +#ifndef YY_NO_PUSH_STATE +/* static void yy_push_state YY_PROTO(( int new_state )); */ +#endif +#ifndef YY_NO_POP_STATE +/* static void yy_pop_state YY_PROTO(( void )); */ +#endif +#ifndef YY_NO_TOP_STATE +/* static int yy_top_state YY_PROTO(( void )); */ +#endif + +#else +#define YY_NO_PUSH_STATE 1 +#define YY_NO_POP_STATE 1 +#define YY_NO_TOP_STATE 1 +#endif + +#ifdef YY_MALLOC_DECL +YY_MALLOC_DECL +#else +#if __STDC__ +#ifndef __cplusplus +#include +#endif +#else +/* Just try to get by without declaring the routines. This will fail + * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) + * or sizeof(void*) != sizeof(int). + */ +#endif +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ + +#ifndef ECHO +#define ECHO LexerOutput( yytext, yyleng ) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( (result = LexerInput( buf, max_size )) < 0 ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) LexerError( msg ) +#endif + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL int yyFlexLexer::yylex() +#endif + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +YY_DECL + { + register yy_state_type yy_current_state; + register YY_CHAR *yy_cp, *yy_bp; + register int yy_act; + +#line 213 "../src/lexer/XQLexer.l" + + +#line 13487 "../src/lexer/XQLexer.cpp" + + if ( yy_init ) + { + yy_init = 0; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! yy_start ) + yy_start = 1; /* first start state */ + + if ( ! yyin ) + yyin = &std::cin; + + if ( ! yyout ) + yyout = &std::cout; + + if ( ! yy_current_buffer ) + yy_current_buffer = + yy_create_buffer( yyin, YY_BUF_SIZE ); + + yy_load_buffer_state(); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = yy_c_buf_p; + + /* Support of yytext. */ + *yy_cp = yy_hold_char; + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = yy_start; + yy_state_ptr = yy_state_buf; + *yy_state_ptr++ = yy_current_state; +yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 1708 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + *yy_state_ptr++ = yy_current_state; + ++yy_cp; + } + while ( yy_current_state != 1707 ); + +yy_find_action: + yy_current_state = *--yy_state_ptr; + yy_lp = yy_accept[yy_current_state]; +find_rule: /* we branch to this label when backing up */ + for ( ; ; ) /* until we find what rule we matched */ + { + if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] ) + { + yy_act = yy_acclist[yy_lp]; + if ( yy_act & YY_TRAILING_HEAD_MASK || + yy_looking_for_trail_begin ) + { + if ( yy_act == yy_looking_for_trail_begin ) + { + yy_looking_for_trail_begin = 0; + yy_act &= ~YY_TRAILING_HEAD_MASK; + break; + } + } + else if ( yy_act & YY_TRAILING_MASK ) + { + yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK; + yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK; + yy_full_match = yy_cp; + yy_full_state = yy_state_ptr; + yy_full_lp = yy_lp; + } + else + { + yy_full_match = yy_cp; + yy_full_state = yy_state_ptr; + yy_full_lp = yy_lp; + break; + } + ++yy_lp; + goto find_rule; + } + --yy_cp; + yy_current_state = *--yy_state_ptr; + yy_lp = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + + +do_action: /* This label is used only to access EOF actions. */ + + + switch ( yy_act ) + { /* beginning of action switch */ +case 1: +YY_RULE_SETUP +#line 215 "../src/lexer/XQLexer.l" +if(m_bReportWhiteSpace) RECOGNIZE(_XQUERY_WHITESPACE_); + YY_BREAK +case 2: +YY_RULE_SETUP +#line 216 "../src/lexer/XQLexer.l" +beginComment(); PUSH_CURRENT(); BEGIN(EXPR_COMMENT); if(m_bReportWhiteSpace) RECOGNIZE(_XQUERY_COMMENT_); + YY_BREAK +case 3: +YY_RULE_SETUP +#line 218 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; yylval.str=allocate_string((XMLCh*)yytext); CHANGE_STATE(OPERATOR); RECOGNIZE(_DECIMAL_NUMBER_); + YY_BREAK +case 4: +YY_RULE_SETUP +#line 219 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; yylval.str=allocate_string((XMLCh*)yytext); CHANGE_STATE(OPERATOR); RECOGNIZE(_DOUBLE_NUMBER_); + YY_BREAK +case 5: +YY_RULE_SETUP +#line 220 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; yylval.str=allocate_string((XMLCh*)yytext); CHANGE_STATE(OPERATOR); RECOGNIZE(_INTEGER_NUMBER_); + YY_BREAK +case 6: +YY_RULE_SETUP +#line 221 "../src/lexer/XQLexer.l" +CHANGE_STATE(OPERATOR); RECOGNIZE(_DOT_); + YY_BREAK +case 7: +YY_RULE_SETUP +#line 222 "../src/lexer/XQLexer.l" +CHANGE_STATE(OPERATOR); RECOGNIZE(_DOT_DOT_); + YY_BREAK +case 8: +YY_RULE_SETUP +#line 223 "../src/lexer/XQLexer.l" +{ + yylval.str=allocate_string((XMLCh*)yytext,XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen((XMLCh*)yytext)-2); + CHANGE_STATE(OPERATOR); + RECOGNIZE(_NCNAME_COLON_STAR_); + } + YY_BREAK +case 9: +YY_RULE_SETUP +#line 228 "../src/lexer/XQLexer.l" +{ + switch(YYSTATE) + { + case THESAURUS2: + case INITIAL: + case OPERATOR: CHANGE_STATE(OPERATOR); break; + case KINDTEST: + case KINDTESTFORPI: + case CLOSEKINDTEST: POP(); break; + case STOPWORDS: break; + } + RECOGNIZE(_RPAR_); + } + YY_BREAK +case 10: +YY_RULE_SETUP +#line 241 "../src/lexer/XQLexer.l" +{ + yylval.str=allocate_string((XMLCh*)(yytext+2)); // skip the *: + CHANGE_STATE(OPERATOR); + RECOGNIZE(_STAR_COLON_NCNAME_); + } + YY_BREAK +case 11: +YY_RULE_SETUP +#line 246 "../src/lexer/XQLexer.l" +{ + switch(YYSTATE) + { + case INITIAL: CHANGE_STATE(OPERATOR); RECOGNIZE(_STAR_); + case OCCURRENCEINDICATOR: CHANGE_STATE(OPERATOR); RECOGNIZE(_ZERO_OR_MORE_); + case OPERATOR: CHANGE_STATE(INITIAL); RECOGNIZE(_MULTIPLY_); + case KINDTEST: CHANGE_STATE(CLOSEKINDTEST); RECOGNIZE(_STAR_); + } + } + YY_BREAK +case 12: +YY_RULE_SETUP +#line 255 "../src/lexer/XQLexer.l" +{ + yylval.str=allocate_string_and_unescape(*yytext,(XMLCh*)(yytext+1),XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen((XMLCh*)yytext)-2); + switch(YYSTATE) + { + case INITIAL: + case OPERATOR: CHANGE_STATE(OPERATOR); break; + case STOPWORDS: + case THESAURUS1: + case THESAURUS2: + case KINDTESTFORPI: + case XQUERYDECL: break; + case NAMESPACEDECL: + case NAMESPACEKEYWORD: CHANGE_STATE(INITIAL); break; + } + RECOGNIZE(_STRING_LITERAL_); + } + YY_BREAK +case 13: +YY_RULE_SETUP +#line 272 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED_CHOICE10(DECLARE_KEYWORD, _OPTION_, _VARIABLE_KEYWORD_, _FUNCTION_, _CONSTRUCTION_, _ORDERING_, _DEFAULT_, _COPY_NAMESPACES_, _BASEURI_, _BOUNDARYSPACE_, _NAMESPACE_); CHANGE_STATE(DECLARE_KEYWORD); RECOGNIZE(_DECLARE_); + YY_BREAK +case 14: +YY_RULE_SETUP +#line 273 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_OPTION_); + YY_BREAK +case 15: +YY_RULE_SETUP +#line 274 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_VARIABLE_KEYWORD_); + YY_BREAK +case 16: +YY_RULE_SETUP +#line 275 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_FUNCTION_); + YY_BREAK +case 17: +YY_RULE_SETUP +#line 276 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_CONSTRUCTION_); + YY_BREAK +case 18: +YY_RULE_SETUP +#line 277 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_ORDERING_); + YY_BREAK +case 19: +YY_RULE_SETUP +#line 278 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(COPYNAMESPACE_DECL); RECOGNIZE(_COPY_NAMESPACES_); + YY_BREAK +case 20: +YY_RULE_SETUP +#line 279 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(NAMESPACEDECL); RECOGNIZE(_BASEURI_); + YY_BREAK +case 21: +YY_RULE_SETUP +#line 280 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(BOUNDARYSPACE_DECL); RECOGNIZE(_BOUNDARYSPACE_); + YY_BREAK +case 22: +YY_RULE_SETUP +#line 281 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(NAMESPACEDECL); RECOGNIZE(_NAMESPACE_); + YY_BREAK +case 23: +YY_RULE_SETUP +#line 283 "../src/lexer/XQLexer.l" +{ + REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; + switch(YYSTATE) + { + case DECLARE_KEYWORD: REJECT_IF_NOT_FOLLOWED_CHOICE4(DEFAULT_KEYWORD, _ORDER_, _COLLATION_, _ELEMENT_, _FUNCTION_); break; + case NAMESPACEKEYWORD: REJECT_IF_NOT_FOLLOWED1(DEFAULT_KEYWORD, _ELEMENT_); break; + } + CHANGE_STATE(DEFAULT_KEYWORD); + RECOGNIZE(_DEFAULT_); + } + YY_BREAK +case 24: +YY_RULE_SETUP +#line 294 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_ORDER_); + YY_BREAK +case 25: +YY_RULE_SETUP +#line 295 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(NAMESPACEDECL); RECOGNIZE(_COLLATION_); + YY_BREAK +case 26: +YY_RULE_SETUP +#line 296 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(NAMESPACEKEYWORD); RECOGNIZE(_ELEMENT_); + YY_BREAK +case 27: +YY_RULE_SETUP +#line 297 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(NAMESPACEKEYWORD); RECOGNIZE(_FUNCTION_); + YY_BREAK +case 28: +YY_RULE_SETUP +#line 299 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED_CHOICE2(DEFAULT_ORDER, _GREATEST_, _LEAST_); CHANGE_STATE(DEFAULT_ORDER); RECOGNIZE(_EMPTY_KEYWORD_); + YY_BREAK +case 29: +YY_RULE_SETUP +#line 300 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_GREATEST_); + YY_BREAK +case 30: +YY_RULE_SETUP +#line 301 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_LEAST_); + YY_BREAK +case 31: +YY_RULE_SETUP +#line 303 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(NAMESPACEKEYWORD, _NAMESPACE_); CHANGE_STATE(NAMESPACEKEYWORD); RECOGNIZE(_MODULE_); + YY_BREAK +case 32: +YY_RULE_SETUP +#line 304 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED_CHOICE2(IMPORT, _SCHEMA_, _MODULE_); CHANGE_STATE(IMPORT); RECOGNIZE(_IMPORT_); + YY_BREAK +case 33: +YY_RULE_SETUP +#line 306 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(NAMESPACEKEYWORD); RECOGNIZE(_SCHEMA_); + YY_BREAK +case 34: +YY_RULE_SETUP +#line 307 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(NAMESPACEKEYWORD); RECOGNIZE(_MODULE_); + YY_BREAK +case 35: +YY_RULE_SETUP +#line 309 "../src/lexer/XQLexer.l" +CHANGE_STATE(VARNAME); RECOGNIZE(_DOLLAR_SIGN_); + YY_BREAK +case 36: +YY_RULE_SETUP +#line 310 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(YYSTATE, _DOLLAR_SIGN_); RECOGNIZE(_FOR_); + YY_BREAK +case 37: +YY_RULE_SETUP +#line 311 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(YYSTATE, _DOLLAR_SIGN_); RECOGNIZE(_LET_); + YY_BREAK +case 38: +YY_RULE_SETUP +#line 312 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(YYSTATE, _DOLLAR_SIGN_); RECOGNIZE(_SCORE_); + YY_BREAK +case 39: +YY_RULE_SETUP +#line 313 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(YYSTATE, _DOLLAR_SIGN_); RECOGNIZE(_SOME_); + YY_BREAK +case 40: +YY_RULE_SETUP +#line 314 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(YYSTATE, _DOLLAR_SIGN_); RECOGNIZE(_EVERY_); + YY_BREAK +case 41: +YY_RULE_SETUP +#line 316 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(ITEMTYPE); RECOGNIZE(_EXPR_AS_); + YY_BREAK +case 42: +YY_RULE_SETUP +#line 318 "../src/lexer/XQLexer.l" +{ + REJECT_IF_COLON; + switch(YYSTATE) + { + case INITIAL: PUSH(OPERATOR); break; + case ITEMTYPE: PUSH(OCCURRENCEINDICATOR); break; + case KINDTEST: PUSH(KINDTEST); break; + } + CHANGE_STATE(KINDTEST); + RECOGNIZE(_ELEMENT_LPAR_); + } + YY_BREAK +case 43: +YY_RULE_SETUP +#line 329 "../src/lexer/XQLexer.l" +{ + REJECT_IF_COLON; + int stateToPush=(YYSTATE==INITIAL)?OPERATOR:OCCURRENCEINDICATOR; + PUSH(stateToPush); + CHANGE_STATE(KINDTEST); + RECOGNIZE(_ATTRIBUTE_LPAR_); + } + YY_BREAK +case 44: +YY_RULE_SETUP +#line 336 "../src/lexer/XQLexer.l" +{ + REJECT_IF_COLON; + switch(YYSTATE) + { + case INITIAL: PUSH(OPERATOR); break; + case ITEMTYPE: PUSH(OCCURRENCEINDICATOR); break; + case KINDTEST: PUSH(KINDTEST); break; + } + CHANGE_STATE(KINDTEST); + RECOGNIZE(_SCHEMA_ELEMENT_LPAR_); + } + YY_BREAK +case 45: +YY_RULE_SETUP +#line 347 "../src/lexer/XQLexer.l" +{ + REJECT_IF_COLON; + int stateToPush=(YYSTATE==INITIAL)?OPERATOR:OCCURRENCEINDICATOR; + PUSH(stateToPush); + CHANGE_STATE(KINDTEST); + RECOGNIZE(_SCHEMA_ATTRIBUTE_LPAR_); + } + YY_BREAK +case 46: +YY_RULE_SETUP +#line 354 "../src/lexer/XQLexer.l" +{ + REJECT_IF_COLON; + int stateToPush=(YYSTATE==INITIAL)?OPERATOR:OCCURRENCEINDICATOR; + PUSH(stateToPush); + CHANGE_STATE(KINDTEST); + RECOGNIZE(_COMMENT_LPAR_); + } + YY_BREAK +case 47: +YY_RULE_SETUP +#line 361 "../src/lexer/XQLexer.l" +{ + REJECT_IF_COLON; + int stateToPush=(YYSTATE==INITIAL)?OPERATOR:OCCURRENCEINDICATOR; + PUSH(stateToPush); + CHANGE_STATE(KINDTEST); + RECOGNIZE(_TEXT_LPAR_); + } + YY_BREAK +case 48: +YY_RULE_SETUP +#line 368 "../src/lexer/XQLexer.l" +{ + REJECT_IF_COLON; + int stateToPush=(YYSTATE==INITIAL)?OPERATOR:OCCURRENCEINDICATOR; + PUSH(stateToPush); + CHANGE_STATE(KINDTEST); + RECOGNIZE(_NODE_LPAR_); + } + YY_BREAK +case 49: +YY_RULE_SETUP +#line 375 "../src/lexer/XQLexer.l" +{ + REJECT_IF_COLON; + int stateToPush=(YYSTATE==INITIAL)?OPERATOR:OCCURRENCEINDICATOR; + PUSH(stateToPush); + CHANGE_STATE(KINDTEST); + RECOGNIZE(_DOCUMENT_NODE_LPAR_); + } + YY_BREAK +case 50: +YY_RULE_SETUP +#line 382 "../src/lexer/XQLexer.l" +{ + REJECT_IF_COLON; + int stateToPush=(YYSTATE==INITIAL)?OPERATOR:OCCURRENCEINDICATOR; + PUSH(stateToPush); + CHANGE_STATE(KINDTESTFORPI); + RECOGNIZE(_PROCESSING_INSTRUCTION_LPAR_); + } + YY_BREAK +case 51: +YY_RULE_SETUP +#line 390 "../src/lexer/XQLexer.l" +{ + REJECT_NOT_XQUERY; + yylval.str=allocate_string((XMLCh*)(yytext+4),XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen((XMLCh*)(yytext+4))-3); + if(YYSTATE==INITIAL) + CHANGE_STATE(OPERATOR); + RECOGNIZE(_XML_COMMENT_); + } + YY_BREAK +case 52: +YY_RULE_SETUP +#line 398 "../src/lexer/XQLexer.l" +{ + REJECT_NOT_XQUERY; + int stateToPush=(YYSTATE==INITIAL)?OPERATOR:YYSTATE; + PUSH(stateToPush); + CHANGE_STATE(PROCESSING_INSTRUCTION); + RECOGNIZE(_PROCESSING_INSTRUCTION_START_); + } + YY_BREAK +case 53: +YY_RULE_SETUP +#line 406 "../src/lexer/XQLexer.l" +{ + REJECT_NOT_XQUERY; + yylval.str=allocate_string((XMLCh*)(yytext+9),XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen((XMLCh*)(yytext+9))-3); + if(YYSTATE==INITIAL) + CHANGE_STATE(OPERATOR); + RECOGNIZE(_CDATA_SECTION_); + } + YY_BREAK +case 54: +YY_RULE_SETUP +#line 414 "../src/lexer/XQLexer.l" +{ + switch(YYSTATE) + { + case INITIAL: + REJECT_NOT_XQUERY; PUSH(OPERATOR); CHANGE_STATE(START_TAG); RECOGNIZE(_START_TAG_OPEN_); + case OPERATOR: + case ITEMTYPE: + CHANGE_STATE(INITIAL); RECOGNIZE(_LT_); + case ELEMENT_CONTENT: + PUSH_CURRENT(); CHANGE_STATE(START_TAG); RECOGNIZE(_START_TAG_OPEN_); + } + } + YY_BREAK +case 55: +YY_RULE_SETUP +#line 427 "../src/lexer/XQLexer.l" +POP(); RECOGNIZE(_RBRACE_); + YY_BREAK +case 56: +YY_RULE_SETUP +#line 429 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED_CHOICE3(VALIDATE, _LBRACE_, _MODE_LAX_, _MODE_STRICT_); CHANGE_STATE(VALIDATE); RECOGNIZE(_VALIDATE_); + YY_BREAK +case 57: +YY_RULE_SETUP +#line 430 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; PUSH(OPERATOR); CHANGE_STATE(INITIAL); RECOGNIZE(_LBRACE_); + YY_BREAK +case 58: +YY_RULE_SETUP +#line 431 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(VALIDATE, _LBRACE_); RECOGNIZE(_MODE_LAX_); + YY_BREAK +case 59: +YY_RULE_SETUP +#line 432 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(VALIDATE, _LBRACE_); RECOGNIZE(_MODE_STRICT_); + YY_BREAK +case 60: +YY_RULE_SETUP +#line 434 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(YYSTATE, _LPAR_); RECOGNIZE(_TYPESWITCH_); + YY_BREAK +case 61: +*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ +yy_c_buf_p = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up yytext again */ +YY_RULE_SETUP +#line 436 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; RECOGNIZE(_ELEMENT_CONSTR_); + YY_BREAK +case 62: +*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ +yy_c_buf_p = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up yytext again */ +YY_RULE_SETUP +#line 437 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; RECOGNIZE(_ATTRIBUTE_CONSTR_); + YY_BREAK +case 63: +YY_RULE_SETUP +#line 439 "../src/lexer/XQLexer.l" +{ + REJECT_NOT_XQUERY; + XMLCh* beginning=(XMLCh*)(yytext+9); + while(iswspace(*beginning)) beginning++; + yylval.str=allocate_string(beginning); + RECOGNIZE(_NAMED_ATTRIBUTE_CONSTR_); + } + YY_BREAK +case 64: +YY_RULE_SETUP +#line 446 "../src/lexer/XQLexer.l" +{ + REJECT_NOT_XQUERY; + XMLCh* beginning=(XMLCh*)(yytext+7); + while(iswspace(*beginning)) beginning++; + yylval.str=allocate_string(beginning); + RECOGNIZE(_NAMED_ELEMENT_CONSTR_); + } + YY_BREAK +case 65: +*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ +yy_c_buf_p = yy_cp = yy_bp + 8; +YY_DO_BEFORE_ACTION; /* set up yytext again */ +YY_RULE_SETUP +#line 453 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; RECOGNIZE(_DOCUMENT_CONSTR_); + YY_BREAK +case 66: +*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ +yy_c_buf_p = yy_cp = yy_bp + 4; +YY_DO_BEFORE_ACTION; /* set up yytext again */ +YY_RULE_SETUP +#line 454 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; RECOGNIZE(_TEXT_CONSTR_); + YY_BREAK +case 67: +*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ +yy_c_buf_p = yy_cp = yy_bp + 22; +YY_DO_BEFORE_ACTION; /* set up yytext again */ +YY_RULE_SETUP +#line 455 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; RECOGNIZE(_PROCESSING_INSTRUCTION_CONSTR_); + YY_BREAK +case 68: +YY_RULE_SETUP +#line 456 "../src/lexer/XQLexer.l" +{ + REJECT_NOT_XQUERY; + XMLCh* beginning=(XMLCh*)(yytext+22); + while(iswspace(*beginning)) beginning++; + yylval.str=allocate_string(beginning); + RECOGNIZE(_NAMED_PROCESSING_INSTRUCTION_CONSTR_); + } + YY_BREAK +case 69: +*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ +yy_c_buf_p = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up yytext again */ +YY_RULE_SETUP +#line 463 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; RECOGNIZE(_COMMENT_CONSTR_); + YY_BREAK +case 70: +YY_RULE_SETUP +#line 465 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; BEGIN(PRAGMA_NAME); RECOGNIZE(_PRAGMA_OPEN_); + YY_BREAK +case 71: +YY_RULE_SETUP +#line 467 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; yylval.str=allocate_string((XMLCh*)yytext); CHANGE_STATE(PRAGMA_CONTENT); RECOGNIZE(_PRAGMA_NAME_); + YY_BREAK +case 72: +YY_RULE_SETUP +#line 468 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; RECOGNIZE(_PRAGMA_CONTENT_); + YY_BREAK +case 73: +YY_RULE_SETUP +#line 469 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; CHANGE_STATE(INITIAL); RECOGNIZE(_PRAGMA_CLOSE_); + YY_BREAK +case 74: +YY_RULE_SETUP +#line 472 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; CHANGE_STATE(INITIAL); RECOGNIZE(_SEMICOLON_); + YY_BREAK +case 75: +YY_RULE_SETUP +#line 474 "../src/lexer/XQLexer.l" +{ + switch(YYSTATE) + { + case ELEMENT_CONTENT: + case QUOT_ATTRIBUTE_CONTENT: + case APOS_ATTRIBUTE_CONTENT: PUSH_CURRENT(); CHANGE_STATE(INITIAL); break; + case INITIAL: + case OPERATOR: + case KINDTEST: + case CLOSEKINDTEST: PUSH(OPERATOR); CHANGE_STATE(INITIAL); break; + } + RECOGNIZE(_LBRACE_); + } + YY_BREAK +case 76: +*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ +yy_c_buf_p = yy_cp = yy_bp + 7; +YY_DO_BEFORE_ACTION; /* set up yytext again */ +YY_RULE_SETUP +#line 488 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; PUSH(OPERATOR); CHANGE_STATE(INITIAL); RECOGNIZE(_ORDERED_); + YY_BREAK +case 77: +*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ +yy_c_buf_p = yy_cp = yy_bp + 9; +YY_DO_BEFORE_ACTION; /* set up yytext again */ +YY_RULE_SETUP +#line 489 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; PUSH(OPERATOR); CHANGE_STATE(INITIAL); RECOGNIZE(_UNORDERED_); + YY_BREAK +case 78: +YY_RULE_SETUP +#line 491 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(XQUERYDECL, _VERSION_); CHANGE_STATE(XQUERYDECL); RECOGNIZE(_XQUERY_); + YY_BREAK +case 79: +YY_RULE_SETUP +#line 492 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; RECOGNIZE(_VERSION_); + YY_BREAK +case 80: +YY_RULE_SETUP +#line 494 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; RECOGNIZE(_ENCODING_); + YY_BREAK +case 81: +YY_RULE_SETUP +#line 496 "../src/lexer/XQLexer.l" +RECOGNIZE(_AT_); + YY_BREAK +case 82: +YY_RULE_SETUP +#line 498 "../src/lexer/XQLexer.l" +RECOGNIZE(_AXIS_ANCESTOR_OR_SELF_); + YY_BREAK +case 83: +YY_RULE_SETUP +#line 499 "../src/lexer/XQLexer.l" +RECOGNIZE(_AXIS_ANCESTOR_); + YY_BREAK +case 84: +YY_RULE_SETUP +#line 500 "../src/lexer/XQLexer.l" +RECOGNIZE(_AXIS_ATTRIBUTE_); + YY_BREAK +case 85: +YY_RULE_SETUP +#line 501 "../src/lexer/XQLexer.l" +RECOGNIZE(_AXIS_CHILD_); + YY_BREAK +case 86: +YY_RULE_SETUP +#line 502 "../src/lexer/XQLexer.l" +RECOGNIZE(_AXIS_DESCENDANT_OR_SELF_); + YY_BREAK +case 87: +YY_RULE_SETUP +#line 503 "../src/lexer/XQLexer.l" +RECOGNIZE(_AXIS_DESCENDANT_); + YY_BREAK +case 88: +YY_RULE_SETUP +#line 504 "../src/lexer/XQLexer.l" +RECOGNIZE(_AXIS_FOLLOWING_SIBLING_); + YY_BREAK +case 89: +YY_RULE_SETUP +#line 505 "../src/lexer/XQLexer.l" +RECOGNIZE(_AXIS_FOLLOWING_); + YY_BREAK +case 90: +YY_RULE_SETUP +#line 506 "../src/lexer/XQLexer.l" +RECOGNIZE(_AXIS_PARENT_); + YY_BREAK +case 91: +YY_RULE_SETUP +#line 507 "../src/lexer/XQLexer.l" +RECOGNIZE(_AXIS_PRECEDING_SIBLING_); + YY_BREAK +case 92: +YY_RULE_SETUP +#line 508 "../src/lexer/XQLexer.l" +RECOGNIZE(_AXIS_PRECEDING_); + YY_BREAK +case 93: +YY_RULE_SETUP +#line 509 "../src/lexer/XQLexer.l" +RECOGNIZE(_AXIS_SELF_); + YY_BREAK +case 94: +YY_RULE_SETUP +#line 510 "../src/lexer/XQLexer.l" +REJECT_XQUERY; RECOGNIZE(_AXIS_NAMESPACE_); + YY_BREAK +case 95: +YY_RULE_SETUP +#line 512 "../src/lexer/XQLexer.l" +{ + switch(YYSTATE) { + case CLOSEKINDTEST: CHANGE_STATE(KINDTEST); break; + case THESAURUS2: + case STOPWORDS: break; + default: CHANGE_STATE(INITIAL); break; + } + RECOGNIZE(_COMMA_); + } + YY_BREAK +case 96: +YY_RULE_SETUP +#line 521 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(YYSTATE, _LPAR_);RECOGNIZE(_IF_); + YY_BREAK +case 97: +YY_RULE_SETUP +#line 522 "../src/lexer/XQLexer.l" +{ + switch(YYSTATE) { + case INITIAL: + case ITEMTYPE: CHANGE_STATE(INITIAL); break; + case THESAURUS1: CHANGE_STATE(THESAURUS2); break; + case STOPWORDS: break; + } + RECOGNIZE(_LPAR_); + } + YY_BREAK +case 98: +YY_RULE_SETUP +#line 531 "../src/lexer/XQLexer.l" +CHANGE_STATE(INITIAL); RECOGNIZE(_MINUS_); + YY_BREAK +case 99: +YY_RULE_SETUP +#line 532 "../src/lexer/XQLexer.l" +{ + REJECT_IF_XPATH; + REJECT_IF_NOT_TERMINATED; + switch(YYSTATE) { + case INITIAL: + case OPERATOR: + case ITEMTYPE: CHANGE_STATE(INITIAL); break; + case THESAURUS1: CHANGE_STATE(OPERATOR); break; + case STOPWORDS: + case THESAURUS2: break; + } + RECOGNIZE(_AT_KEYWORD_); + } + YY_BREAK +case 100: +YY_RULE_SETUP +#line 545 "../src/lexer/XQLexer.l" +{ + if(YYSTATE==OCCURRENCEINDICATOR) + { + CHANGE_STATE(OPERATOR); RECOGNIZE(_ONE_OR_MORE_); + } + else + { + CHANGE_STATE(INITIAL); RECOGNIZE(_PLUS_); + } + } + YY_BREAK +case 101: +YY_RULE_SETUP +#line 555 "../src/lexer/XQLexer.l" +CHANGE_STATE(INITIAL); RECOGNIZE(_SLASHSLASH_); + YY_BREAK +case 102: +YY_RULE_SETUP +#line 556 "../src/lexer/XQLexer.l" +CHANGE_STATE(INITIAL); RECOGNIZE(_SLASH_); + YY_BREAK +case 103: +YY_RULE_SETUP +#line 558 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_THEN_); + YY_BREAK +case 104: +YY_RULE_SETUP +#line 559 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_ELSE_); + YY_BREAK +case 105: +YY_RULE_SETUP +#line 560 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_EXTERNAL_); + YY_BREAK +case 106: +YY_RULE_SETUP +#line 561 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_AND_); + YY_BREAK +case 107: +YY_RULE_SETUP +#line 562 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; CHANGE_STATE(INITIAL); RECOGNIZE(_COLON_EQ_); + YY_BREAK +case 108: +YY_RULE_SETUP +#line 563 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_DIV_); + YY_BREAK +case 109: +YY_RULE_SETUP +#line 564 "../src/lexer/XQLexer.l" +CHANGE_STATE(INITIAL); RECOGNIZE(_EQUALS_); + YY_BREAK +case 110: +YY_RULE_SETUP +#line 565 "../src/lexer/XQLexer.l" +{ + REJECT_IF_NOT_TERMINATED; + switch(YYSTATE) { + case OPERATOR: + case ITEMTYPE: CHANGE_STATE(INITIAL); break; + case STOPWORDS: break; + } + RECOGNIZE(_EXCEPT_); + } + YY_BREAK +case 111: +YY_RULE_SETUP +#line 574 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_FORTRAN_EQ_); + YY_BREAK +case 112: +YY_RULE_SETUP +#line 575 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_FORTRAN_GE_); + YY_BREAK +case 113: +YY_RULE_SETUP +#line 576 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_FORTRAN_GT_); + YY_BREAK +case 114: +YY_RULE_SETUP +#line 577 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_FORTRAN_LE_); + YY_BREAK +case 115: +YY_RULE_SETUP +#line 578 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_FORTRAN_LT_); + YY_BREAK +case 116: +YY_RULE_SETUP +#line 579 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_FORTRAN_NE_); + YY_BREAK +case 117: +YY_RULE_SETUP +#line 580 "../src/lexer/XQLexer.l" +CHANGE_STATE(INITIAL); RECOGNIZE(_GT_EQUALS_); + YY_BREAK +case 118: +YY_RULE_SETUP +#line 581 "../src/lexer/XQLexer.l" +CHANGE_STATE(INITIAL); RECOGNIZE(_GT_GT_); + YY_BREAK +case 119: +YY_RULE_SETUP +#line 582 "../src/lexer/XQLexer.l" +CHANGE_STATE(INITIAL); RECOGNIZE(_GT_); + YY_BREAK +case 120: +YY_RULE_SETUP +#line 583 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_INTEGER_DIV_); + YY_BREAK +case 121: +YY_RULE_SETUP +#line 584 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_INTERSECT_); + YY_BREAK +case 122: +YY_RULE_SETUP +#line 585 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_IN_); + YY_BREAK +case 123: +YY_RULE_SETUP +#line 586 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_IS_); + YY_BREAK +case 124: +YY_RULE_SETUP +#line 587 "../src/lexer/XQLexer.l" +CHANGE_STATE(INITIAL); RECOGNIZE(_LBRACK_); + YY_BREAK +case 125: +YY_RULE_SETUP +#line 588 "../src/lexer/XQLexer.l" +CHANGE_STATE(INITIAL); RECOGNIZE(_LT_EQUALS_); + YY_BREAK +case 126: +YY_RULE_SETUP +#line 589 "../src/lexer/XQLexer.l" +CHANGE_STATE(INITIAL); RECOGNIZE(_LT_LT_); + YY_BREAK +case 127: +YY_RULE_SETUP +#line 590 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_MOD_); + YY_BREAK +case 128: +YY_RULE_SETUP +#line 591 "../src/lexer/XQLexer.l" +CHANGE_STATE(INITIAL); RECOGNIZE(_NOT_EQUALS_); + YY_BREAK +case 129: +YY_RULE_SETUP +#line 592 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(ORDER, _BY_); CHANGE_STATE(ORDER); RECOGNIZE(_ORDER_); + YY_BREAK +case 130: +YY_RULE_SETUP +#line 593 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(YYSTATE, _ORDER_); RECOGNIZE(_STABLE_); + YY_BREAK +case 131: +YY_RULE_SETUP +#line 594 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_BY_); + YY_BREAK +case 132: +YY_RULE_SETUP +#line 595 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_OR_); + YY_BREAK +case 133: +YY_RULE_SETUP +#line 596 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_RETURN_); + YY_BREAK +case 134: +YY_RULE_SETUP +#line 597 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_SATISFIES_); + YY_BREAK +case 135: +YY_RULE_SETUP +#line 598 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_TO_); + YY_BREAK +case 136: +YY_RULE_SETUP +#line 600 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_FTCONTAINS_); + YY_BREAK +case 137: +YY_RULE_SETUP +#line 601 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; CHANGE_STATE(INITIAL); RECOGNIZE(_DOUBLE_VERTICAL_BAR_); + YY_BREAK +case 138: +YY_RULE_SETUP +#line 602 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; CHANGE_STATE(INITIAL); RECOGNIZE(_DOUBLE_AMPERSAND_); + YY_BREAK +case 139: +YY_RULE_SETUP +#line 603 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_NOT_IN_); + YY_BREAK +case 140: +YY_RULE_SETUP +#line 604 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; CHANGE_STATE(INITIAL); RECOGNIZE(_BANG_); + YY_BREAK +case 141: +YY_RULE_SETUP +#line 605 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_LOWERCASE_); + YY_BREAK +case 142: +YY_RULE_SETUP +#line 606 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_UPPERCASE_); + YY_BREAK +case 143: +YY_RULE_SETUP +#line 607 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_CASE_SENSITIVE_); + YY_BREAK +case 144: +YY_RULE_SETUP +#line 608 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_CASE_INSENSITIVE_); + YY_BREAK +case 145: +YY_RULE_SETUP +#line 609 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_WITH_DIACRITICS_); + YY_BREAK +case 146: +YY_RULE_SETUP +#line 610 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_WITHOUT_DIACRITICS_); + YY_BREAK +case 147: +YY_RULE_SETUP +#line 611 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_DIACRITICS_SENSITIVE_); + YY_BREAK +case 148: +YY_RULE_SETUP +#line 612 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_DIACRITICS_INSENSITIVE_); + YY_BREAK +case 149: +YY_RULE_SETUP +#line 613 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_WITH_STEMMING_); + YY_BREAK +case 150: +YY_RULE_SETUP +#line 614 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_WITHOUT_STEMMING_); + YY_BREAK +case 151: +YY_RULE_SETUP +#line 615 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_LANGUAGE_); + YY_BREAK +case 152: +YY_RULE_SETUP +#line 616 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_WITH_WILDCARDS_); + YY_BREAK +case 153: +YY_RULE_SETUP +#line 617 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_WITHOUT_WILDCARDS_); + YY_BREAK +case 154: +YY_RULE_SETUP +#line 618 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_AT_START_); + YY_BREAK +case 155: +YY_RULE_SETUP +#line 619 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_AT_END_); + YY_BREAK +case 156: +YY_RULE_SETUP +#line 620 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_ENTIRE_CONTENT_); + YY_BREAK +case 157: +YY_RULE_SETUP +#line 621 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_ANY_WORD_); + YY_BREAK +case 158: +YY_RULE_SETUP +#line 622 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_ANY_); + YY_BREAK +case 159: +YY_RULE_SETUP +#line 623 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_ALL_WORDS_); + YY_BREAK +case 160: +YY_RULE_SETUP +#line 624 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_ALL_); + YY_BREAK +case 161: +YY_RULE_SETUP +#line 625 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_PHRASE_); + YY_BREAK +case 162: +YY_RULE_SETUP +#line 626 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_DISTANCE_); + YY_BREAK +case 163: +YY_RULE_SETUP +#line 627 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_WINDOW_); + YY_BREAK +case 164: +YY_RULE_SETUP +#line 628 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_OCCURS_); + YY_BREAK +case 165: +YY_RULE_SETUP +#line 629 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_SAME_); + YY_BREAK +case 166: +YY_RULE_SETUP +#line 630 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_DIFFERENT_); + YY_BREAK +case 167: +YY_RULE_SETUP +#line 631 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_SENTENCE_); + YY_BREAK +case 168: +YY_RULE_SETUP +#line 632 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_PARAGRAPH_); + YY_BREAK +case 169: +YY_RULE_SETUP +#line 633 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_WITHOUT_CONTENT_); + YY_BREAK +case 170: +YY_RULE_SETUP +#line 635 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(THESAURUS1); RECOGNIZE(_WITH_THESAURUS_); + YY_BREAK +case 171: +YY_RULE_SETUP +#line 636 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_WITHOUT_THESAURUS_); + YY_BREAK +case 172: +YY_RULE_SETUP +#line 637 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; RECOGNIZE(_RELATIONSHIP_); + YY_BREAK +case 173: +YY_RULE_SETUP +#line 638 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; RECOGNIZE(_LEVELS_); + YY_BREAK +case 174: +YY_RULE_SETUP +#line 640 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(STOPWORDS); RECOGNIZE(_WITH_STOP_WORDS_); + YY_BREAK +case 175: +YY_RULE_SETUP +#line 641 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_WITHOUT_STOP_WORDS_); + YY_BREAK +case 176: +YY_RULE_SETUP +#line 642 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(STOPWORDS); RECOGNIZE(_WITH_DEFAULT_STOP_WORDS_); + YY_BREAK +case 177: +YY_RULE_SETUP +#line 644 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_EXACTLY_); + YY_BREAK +case 178: +YY_RULE_SETUP +#line 645 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_AT_LEAST_); + YY_BREAK +case 179: +YY_RULE_SETUP +#line 646 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_AT_MOST_); + YY_BREAK +case 180: +YY_RULE_SETUP +#line 647 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_FROM_); + YY_BREAK +case 181: +YY_RULE_SETUP +#line 649 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_TIMES_); + YY_BREAK +case 182: +YY_RULE_SETUP +#line 650 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_WORDS_); + YY_BREAK +case 183: +YY_RULE_SETUP +#line 651 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_SENTENCES_); + YY_BREAK +case 184: +YY_RULE_SETUP +#line 652 "../src/lexer/XQLexer.l" +REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_PARAGRAPHS_); + YY_BREAK +case 185: +YY_RULE_SETUP +#line 654 "../src/lexer/XQLexer.l" +{ + REJECT_IF_NOT_TERMINATED; + switch(YYSTATE) { + case OPERATOR: + case ITEMTYPE: CHANGE_STATE(INITIAL); break; + case STOPWORDS: break; + } + RECOGNIZE(_UNION_); + } + YY_BREAK +case 186: +YY_RULE_SETUP +#line 663 "../src/lexer/XQLexer.l" +CHANGE_STATE(INITIAL); RECOGNIZE(_VERTICAL_BAR_); + YY_BREAK +case 187: +YY_RULE_SETUP +#line 664 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_WHERE_); + YY_BREAK +case 188: +YY_RULE_SETUP +#line 665 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_PRESERVE_); + YY_BREAK +case 189: +YY_RULE_SETUP +#line 666 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_STRIP_); + YY_BREAK +case 190: +YY_RULE_SETUP +#line 667 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_ORDERING_ORDERED_); + YY_BREAK +case 191: +YY_RULE_SETUP +#line 668 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_ORDERING_UNORDERED_); + YY_BREAK +case 192: +YY_RULE_SETUP +#line 670 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(SINGLETYPE, _AS_); CHANGE_STATE(SINGLETYPE); RECOGNIZE(_CASTABLE_); + YY_BREAK +case 193: +YY_RULE_SETUP +#line 671 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(SINGLETYPE, _AS_); CHANGE_STATE(SINGLETYPE); RECOGNIZE(_CAST_); + YY_BREAK +case 194: +YY_RULE_SETUP +#line 672 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(YYSTATE, _AS_); CHANGE_STATE(ITEMTYPE); RECOGNIZE(_TREAT_); + YY_BREAK +case 195: +YY_RULE_SETUP +#line 673 "../src/lexer/XQLexer.l" +{ + REJECT_IF_NOT_TERMINATED; + if(YYSTATE!=SINGLETYPE) + { + REJECT_NOT_XQUERY; + CHANGE_STATE(ITEMTYPE); + } + RECOGNIZE(_AS_); + } + YY_BREAK +case 196: +YY_RULE_SETUP +#line 683 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(ITEMTYPE, _OF_); CHANGE_STATE(ITEMTYPE); RECOGNIZE(_INSTANCE_); + YY_BREAK +case 197: +YY_RULE_SETUP +#line 684 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; RECOGNIZE(_OF_); + YY_BREAK +case 198: +YY_RULE_SETUP +#line 685 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(ITEMTYPE); RECOGNIZE(_CASE_); + YY_BREAK +case 199: +YY_RULE_SETUP +#line 687 "../src/lexer/XQLexer.l" +CHANGE_STATE(OPERATOR); RECOGNIZE(_ZERO_OR_ONE_); + YY_BREAK +case 200: +YY_RULE_SETUP +#line 689 "../src/lexer/XQLexer.l" +RECOGNIZE(_RBRACK_); + YY_BREAK +case 201: +YY_RULE_SETUP +#line 690 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; RECOGNIZE(_COLLATION_); + YY_BREAK +case 202: +YY_RULE_SETUP +#line 691 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; RECOGNIZE(_ASCENDING_); + YY_BREAK +case 203: +YY_RULE_SETUP +#line 692 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; RECOGNIZE(_DESCENDING_); + YY_BREAK +case 204: +YY_RULE_SETUP +#line 693 "../src/lexer/XQLexer.l" +{ + REJECT_IF_XPATH; + REJECT_IF_NOT_TERMINATED; + if(YYSTATE==THESAURUS1) CHANGE_STATE(OPERATOR); + RECOGNIZE(_DEFAULT_); + } + YY_BREAK +case 205: +YY_RULE_SETUP +#line 700 "../src/lexer/XQLexer.l" +RECOGNIZE(_EQUALS_); + YY_BREAK +case 206: +YY_RULE_SETUP +#line 701 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; yylval.str=allocate_string((XMLCh*)yytext); RECOGNIZE(_NCNAME_); + YY_BREAK +case 207: +YY_RULE_SETUP +#line 703 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(NAMESPACEDECL); RECOGNIZE(_NAMESPACE_); + YY_BREAK +case 208: +YY_RULE_SETUP +#line 705 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_PRESERVE_); + YY_BREAK +case 209: +YY_RULE_SETUP +#line 706 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_STRIP_); + YY_BREAK +case 210: +YY_RULE_SETUP +#line 708 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; RECOGNIZE(_PRESERVE_); + YY_BREAK +case 211: +YY_RULE_SETUP +#line 709 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; RECOGNIZE(_NO_PRESERVE_); + YY_BREAK +case 212: +YY_RULE_SETUP +#line 710 "../src/lexer/XQLexer.l" +RECOGNIZE(_COMMA_); + YY_BREAK +case 213: +YY_RULE_SETUP +#line 711 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_INHERIT_); + YY_BREAK +case 214: +YY_RULE_SETUP +#line 712 "../src/lexer/XQLexer.l" +REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_NO_INHERIT_); + YY_BREAK +case 215: +YY_RULE_SETUP +#line 714 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(EMPTY_PARENS, _LPAR_); CHANGE_STATE(EMPTY_PARENS); RECOGNIZE(_EMPTY_); + YY_BREAK +case 216: +YY_RULE_SETUP +#line 715 "../src/lexer/XQLexer.l" +REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(EMPTY_PARENS, _LPAR_); CHANGE_STATE(EMPTY_PARENS); RECOGNIZE(_ITEM_); + YY_BREAK +case 217: +YY_RULE_SETUP +#line 716 "../src/lexer/XQLexer.l" +RECOGNIZE(_LPAR_); + YY_BREAK +case 218: +YY_RULE_SETUP +#line 717 "../src/lexer/XQLexer.l" +CHANGE_STATE(OCCURRENCEINDICATOR); RECOGNIZE(_RPAR_); + YY_BREAK +case 219: +YY_RULE_SETUP +#line 719 "../src/lexer/XQLexer.l" +RECOGNIZE(_NILLABLE_); + YY_BREAK +case 220: +YY_RULE_SETUP +#line 721 "../src/lexer/XQLexer.l" +{ + undoUserAction(); + CHANGE_STATE(OPERATOR); + yyless(0); + } + YY_BREAK +case 221: +YY_RULE_SETUP +#line 727 "../src/lexer/XQLexer.l" +POP(); RECOGNIZE(_EMPTY_TAG_CLOSE_); + YY_BREAK +case 222: +YY_RULE_SETUP +#line 729 "../src/lexer/XQLexer.l" +CHANGE_STATE(ELEMENT_CONTENT); RECOGNIZE(_TAG_CLOSE_); + YY_BREAK +case 223: +YY_RULE_SETUP +#line 731 "../src/lexer/XQLexer.l" +{ + if(YYSTATE==ATTRIBUTE_DECL) + { + CHANGE_STATE(QUOT_ATTRIBUTE_CONTENT); RECOGNIZE(_OPEN_QUOT_); + } + else if(YYSTATE==QUOT_ATTRIBUTE_CONTENT) + { + CHANGE_STATE(ATTRIBUTE_DECL); RECOGNIZE(_CLOSE_QUOT_); + } + } + YY_BREAK +case 224: +YY_RULE_SETUP +#line 741 "../src/lexer/XQLexer.l" +{ + if(YYSTATE==ATTRIBUTE_DECL) + { + CHANGE_STATE(APOS_ATTRIBUTE_CONTENT); RECOGNIZE(_OPEN_APOS_); + } + else if(YYSTATE==APOS_ATTRIBUTE_CONTENT) + { + CHANGE_STATE(ATTRIBUTE_DECL); RECOGNIZE(_CLOSE_APOS_); + } + } + YY_BREAK +case 225: +YY_RULE_SETUP +#line 752 "../src/lexer/XQLexer.l" +RECOGNIZE(_VALUE_INDICATOR_); + YY_BREAK +case 226: +YY_RULE_SETUP +#line 754 "../src/lexer/XQLexer.l" +CHANGE_STATE(END_TAG); RECOGNIZE(_END_TAG_OPEN_); + YY_BREAK +case 227: +YY_RULE_SETUP +#line 756 "../src/lexer/XQLexer.l" +yylval.str=allocate_string((XMLCh*)yytext, yyleng); RECOGNIZE(_PREDEFINED_ENTITY_REF_); + YY_BREAK +case 228: +YY_RULE_SETUP +#line 757 "../src/lexer/XQLexer.l" +checkCharRef((XMLCh*)yytext, yyleng); yylval.str=allocate_string((XMLCh*)yytext, yyleng); RECOGNIZE(_CHAR_REF_); + YY_BREAK +case 229: +YY_RULE_SETUP +#line 758 "../src/lexer/XQLexer.l" +RECOGNIZE(_LCURLY_BRACE_ESCAPE_); + YY_BREAK +case 230: +YY_RULE_SETUP +#line 759 "../src/lexer/XQLexer.l" +RECOGNIZE(_RCURLY_BRACE_ESCAPE_); + YY_BREAK +case 231: +YY_RULE_SETUP +#line 761 "../src/lexer/XQLexer.l" +POP(); RECOGNIZE(_TAG_CLOSE_); + YY_BREAK +case 232: +YY_RULE_SETUP +#line 763 "../src/lexer/XQLexer.l" +endComment(); POP(); if(m_bReportWhiteSpace) RECOGNIZE(_XQUERY_COMMENT_); + YY_BREAK +case 233: +YY_RULE_SETUP +#line 765 "../src/lexer/XQLexer.l" +{ + yylval.str=allocate_string((XMLCh*)yytext); + CHANGE_STATE(PROCESSING_INSTRUCTION_CONTENT); RECOGNIZE(_PI_TARGET_); + } + YY_BREAK +case 234: +YY_RULE_SETUP +#line 770 "../src/lexer/XQLexer.l" +{ + yylval.str=(XMLCh*)XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString; + POP(); + RECOGNIZE(_PROCESSING_INSTRUCTION_CONTENT_); + } + YY_BREAK +case 235: +YY_RULE_SETUP +#line 775 "../src/lexer/XQLexer.l" +{ + yylval.str=allocate_string((XMLCh*)yytext,XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen((XMLCh*)yytext)-2); + while(iswspace(*yylval.str)) yylval.str++; + POP(); + RECOGNIZE(_PROCESSING_INSTRUCTION_CONTENT_); + } + YY_BREAK +case 236: +YY_RULE_SETUP +#line 783 "../src/lexer/XQLexer.l" +RECOGNIZE(_ESCAPE_QUOT_); + YY_BREAK +case 237: +YY_RULE_SETUP +#line 785 "../src/lexer/XQLexer.l" +RECOGNIZE(_ESCAPE_APOS_); + YY_BREAK +case 238: +YY_RULE_SETUP +#line 787 "../src/lexer/XQLexer.l" +if(m_bReportWhiteSpace) RECOGNIZE(_XQUERY_COMMENT_); + YY_BREAK +case 239: +YY_RULE_SETUP +#line 788 "../src/lexer/XQLexer.l" +{ + if(*yytext=='&' || *yytext=='<' || *yytext=='{' || *yytext=='}') + return error("Character not allowed in content"); + if(YYSTATE==QUOT_ATTRIBUTE_CONTENT && *yytext=='"') + return error("Character not allowed in content"); + if(YYSTATE==APOS_ATTRIBUTE_CONTENT && *yytext=='\'') + return error("Character not allowed in content"); + yylval.str=allocate_string((XMLCh*)yytext); + RECOGNIZE(_CHAR_); + } + YY_BREAK +case 240: +YY_RULE_SETUP +#line 799 "../src/lexer/XQLexer.l" +{ + REJECT_IF_COLON; + + XMLCh* beginning=yylval.str=allocate_string((XMLCh*)yytext); + while(*beginning!='(' && !iswspace(*beginning)) beginning++; + *beginning=0; + + static const XMLCh attribute_str[] = { 'a', 't', 't', 'r', 'i', 'b', 'u', 't', 'e', 0 }; + static const XMLCh comment_str[] = { 'c', 'o', 'm', 'm', 'e', 'n', 't', 0 }; + static const XMLCh document_node_str[] = { 'd', 'o', 'c', 'u', 'm', 'e', 'n', 't', '-', 'n', 'o', 'd', 'e', 0 }; + static const XMLCh element_str[] = { 'e', 'l', 'e', 'm', 'e', 'n', 't', 0 }; + static const XMLCh item_str[] = { 'i', 't', 'e', 'm', 0 }; + static const XMLCh if_str[] = { 'i', 'f', 0 }; + static const XMLCh node_str[] = { 'n', 'o', 'd', 'e', 0 }; + static const XMLCh processing_instruction_str[] = { 'p', 'r', 'o', 'c', 'e', 's', 's', 'i', 'n', 'g', '-', 'i', 'n', 's', 't', 'r', 'u', 'c', 't', 'i', 'o', 'n', 0 }; + static const XMLCh schema_attribute_str[] = { 's', 'c', 'h', 'e', 'm', 'a', '-', 'a', 't', 't', 'r', 'i', 'b', 'u', 't', 'e', 0 }; + static const XMLCh schema_element_str[] = { 's', 'c', 'h', 'e', 'm', 'a', '-', 'e', 'l', 'e', 'm', 'e', 'n', 't', 0 }; + static const XMLCh text_str[] = { 't', 'e', 'x', 't', 0 }; + static const XMLCh typeswitch_str[] = { 't', 'y', 'p', 'e', 's', 'w', 'i', 't', 'c', 'h', 0 }; + static const XMLCh void_str[] = { 'v', 'o', 'i', 'd', 0 }; + + // reject reserved names + if(XPath2Utils::equals(yylval.str,attribute_str) || + XPath2Utils::equals(yylval.str,comment_str) || + XPath2Utils::equals(yylval.str,document_node_str) || + XPath2Utils::equals(yylval.str,element_str) || + XPath2Utils::equals(yylval.str,item_str) || + XPath2Utils::equals(yylval.str,if_str) || + XPath2Utils::equals(yylval.str,node_str) || + XPath2Utils::equals(yylval.str,processing_instruction_str) || + XPath2Utils::equals(yylval.str,schema_attribute_str) || + XPath2Utils::equals(yylval.str,schema_element_str) || + XPath2Utils::equals(yylval.str,text_str) || + XPath2Utils::equals(yylval.str,typeswitch_str) || + XPath2Utils::equals(yylval.str,void_str)) + { + undoUserAction(); + REJECT; + } + + RECOGNIZE(_FUNCTION_CALL_); + } + YY_BREAK +case 241: +YY_RULE_SETUP +#line 841 "../src/lexer/XQLexer.l" +{ + REJECT_IF_NOT_TERMINATED; + yylval.str=allocate_string((XMLCh*)yytext); + switch(YYSTATE) + { + case INITIAL: + case SINGLETYPE: CHANGE_STATE(OPERATOR); RECOGNIZE(_QNAME_); + case ITEMTYPE: CHANGE_STATE(OCCURRENCEINDICATOR); RECOGNIZE(_QNAME_); + case KINDTEST: CHANGE_STATE(CLOSEKINDTEST); RECOGNIZE(_QNAME_); + case VARNAME: CHANGE_STATE(OPERATOR); RECOGNIZE(_VARIABLE_); + case START_TAG: CHANGE_STATE(ATTRIBUTE_DECL); RECOGNIZE(_TAG_NAME_); + case ATTRIBUTE_DECL: RECOGNIZE(_ATTRIBUTE_NAME_); + case END_TAG: RECOGNIZE(_TAG_NAME_); + } + } + YY_BREAK +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(ELEMENT_CONTENT): +case YY_STATE_EOF(PROCESSING_INSTRUCTION): +case YY_STATE_EOF(PROCESSING_INSTRUCTION_CONTENT): +case YY_STATE_EOF(QUOT_ATTRIBUTE_CONTENT): +case YY_STATE_EOF(APOS_ATTRIBUTE_CONTENT): +case YY_STATE_EOF(START_TAG): +case YY_STATE_EOF(END_TAG): +case YY_STATE_EOF(OPERATOR): +case YY_STATE_EOF(ITEMTYPE): +case YY_STATE_EOF(NAMESPACEDECL): +case YY_STATE_EOF(NAMESPACEKEYWORD): +case YY_STATE_EOF(BOUNDARYSPACE_DECL): +case YY_STATE_EOF(COPYNAMESPACE_DECL): +case YY_STATE_EOF(VARNAME): +case YY_STATE_EOF(ATTRIBUTE_DECL): +case YY_STATE_EOF(KINDTEST): +case YY_STATE_EOF(KINDTESTFORPI): +case YY_STATE_EOF(CLOSEKINDTEST): +case YY_STATE_EOF(EXPR_COMMENT): +case YY_STATE_EOF(OCCURRENCEINDICATOR): +case YY_STATE_EOF(SINGLETYPE): +case YY_STATE_EOF(PRAGMA_NAME): +case YY_STATE_EOF(PRAGMA_CONTENT): +case YY_STATE_EOF(XQUERYDECL): +case YY_STATE_EOF(IMPORT): +case YY_STATE_EOF(DEFAULT_KEYWORD): +case YY_STATE_EOF(DECLARE_KEYWORD): +case YY_STATE_EOF(DEFAULT_ORDER): +case YY_STATE_EOF(VALIDATE): +case YY_STATE_EOF(ORDER): +case YY_STATE_EOF(EMPTY_PARENS): +case YY_STATE_EOF(THESAURUS1): +case YY_STATE_EOF(THESAURUS2): +case YY_STATE_EOF(STOPWORDS): +#line 857 "../src/lexer/XQLexer.l" +{ + if(m_bGenerateEOF) + { + m_bGenerateEOF=false; + RECOGNIZE(_EOF_); + } + return 0; + } + YY_BREAK +case 242: +YY_RULE_SETUP +#line 866 "../src/lexer/XQLexer.l" +{ + char buff[128]; + sprintf(buff,"Unrecognized character '%c' (0x%X)",yytext[0],yytext[0]); + return error(buff); + } + YY_BREAK +case 243: +YY_RULE_SETUP +#line 872 "../src/lexer/XQLexer.l" +YY_FATAL_ERROR( "flex scanner jammed" ); + YY_BREAK +#line 15219 "../src/lexer/XQLexer.cpp" + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = yy_hold_char; + YY_RESTORE_YY_MORE_OFFSET + + if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between yy_current_buffer and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + yy_n_chars = yy_current_buffer->yy_n_chars; + yy_current_buffer->yy_input_file = yyin; + yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state(); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = yytext_ptr + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++yy_c_buf_p; + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = yy_c_buf_p; + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer() ) + { + case EOB_ACT_END_OF_FILE: + { + yy_did_buffer_switch_on_eof = 0; + + if ( yywrap() ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + yy_c_buf_p = + yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state(); + + yy_cp = yy_c_buf_p; + yy_bp = yytext_ptr + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + yy_c_buf_p = + &yy_current_buffer->yy_ch_buf[yy_n_chars]; + + yy_current_state = yy_get_previous_state(); + + yy_cp = yy_c_buf_p; + yy_bp = yytext_ptr + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ + } /* end of yylex */ + +yyFlexLexer::yyFlexLexer( std::istream* arg_yyin, std::ostream* arg_yyout ) + { + yyin = arg_yyin; + yyout = arg_yyout; + yy_c_buf_p = 0; + yy_init = 1; + yy_start = 0; + yy_flex_debug = 0; + yylineno = 1; // this will only get updated if %option yylineno + + yy_did_buffer_switch_on_eof = 0; + + yy_looking_for_trail_begin = 0; + yy_more_flag = 0; + yy_more_len = 0; + yy_more_offset = yy_prev_more_offset = 0; + + yy_start_stack_ptr = yy_start_stack_depth = 0; + yy_start_stack = 0; + + yy_current_buffer = 0; + +#ifdef YY_USES_REJECT + yy_state_buf = new yy_state_type[YY_BUF_SIZE + 2]; +#else + yy_state_buf = 0; +#endif + } + +yyFlexLexer::~yyFlexLexer() + { + delete [] yy_state_buf; + yy_delete_buffer( yy_current_buffer ); + if(yy_start_stack) + yy_flex_free(yy_start_stack); + } + +#ifdef YY_INTERACTIVE +int yyFlexLexer::LexerInput( YY_CHAR* buf, int /* max_size */ ) +#else +int yyFlexLexer::LexerInput( YY_CHAR* buf, int max_size ) +#endif + { + if ( yyin->eof() || yyin->fail() ) + return 0; + +#ifdef YY_INTERACTIVE + (void) yyin->read((char *) buf, sizeof( YY_CHAR ) ); + + if ( yyin->eof() ) + return 0; + + if ( yyin->bad() ) + return -1; + + return 1; + +#else + (void) yyin->read((char *) buf, max_size * sizeof( YY_CHAR ) ); + + if ( yyin->bad() ) + return -1; + else + return ( yyin->gcount() / sizeof( YY_CHAR ) ); +#endif + } + +void yyFlexLexer::LexerOutput( const YY_CHAR* buf, int size ) + { + (void) yyout->write((char *) buf, size * sizeof( YY_CHAR ) ); + } + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ + +int yyFlexLexer::yy_get_next_buffer() + { + register YY_CHAR *dest = yy_current_buffer->yy_ch_buf; + register YY_CHAR *source = yytext_ptr; + register int number_to_move, i; + int ret_val; + + if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( yy_current_buffer->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + yy_current_buffer->yy_n_chars = yy_n_chars = 0; + + else + { + int num_to_read = + yy_current_buffer->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ +#ifdef YY_USES_REJECT + YY_FATAL_ERROR( +"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); +#else + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = yy_current_buffer; + + int yy_c_buf_p_offset = + (int) (yy_c_buf_p - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (YY_CHAR *) + /* Include room in for 2 EOB chars. */ + yy_flex_realloc( (void *) b->yy_ch_buf, + ( b->yy_buf_size + 2 ) * + sizeof( YY_CHAR ) ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = yy_current_buffer->yy_buf_size - + number_to_move - 1; +#endif + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), + yy_n_chars, num_to_read ); + + yy_current_buffer->yy_n_chars = yy_n_chars; + } + + if ( yy_n_chars == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart( yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + yy_current_buffer->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + yy_n_chars += number_to_move; + yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; + yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; + + yytext_ptr = &yy_current_buffer->yy_ch_buf[0]; + + return ret_val; + } + + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + +yy_state_type yyFlexLexer::yy_get_previous_state() + { + register yy_state_type yy_current_state; + register YY_CHAR *yy_cp; + + yy_current_state = yy_start; + yy_state_ptr = yy_state_buf; + *yy_state_ptr++ = yy_current_state; + + for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 1708 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + *yy_state_ptr++ = yy_current_state; + } + + return yy_current_state; + } + + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + +yy_state_type yyFlexLexer::yy_try_NUL_trans( yy_state_type yy_current_state ) + { + register int yy_is_jam; + + register YY_CHAR yy_c = 1; + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 1708 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 1707); + if ( ! yy_is_jam ) + *yy_state_ptr++ = yy_current_state; + + return yy_is_jam ? 0 : yy_current_state; + } + + +void yyFlexLexer::yyunput( int c, register YY_CHAR * yy_bp ) + { + register YY_CHAR *yy_cp = yy_c_buf_p; + + /* undo effects of setting up yytext */ + *yy_cp = yy_hold_char; + + if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + register int number_to_move = yy_n_chars + 2; + register YY_CHAR *dest = &yy_current_buffer->yy_ch_buf[ + yy_current_buffer->yy_buf_size + 2]; + register YY_CHAR *source = + &yy_current_buffer->yy_ch_buf[number_to_move]; + + while ( source > yy_current_buffer->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + yy_current_buffer->yy_n_chars = + yy_n_chars = yy_current_buffer->yy_buf_size; + + if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (YY_CHAR) c; + + + yytext_ptr = yy_bp; + yy_hold_char = *yy_cp; + yy_c_buf_p = yy_cp; + } + + +int yyFlexLexer::yyinput() + { + int c; + + *yy_c_buf_p = yy_hold_char; + + if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) + /* This was really a NUL. */ + *yy_c_buf_p = (YY_CHAR) '\0'; + + else + { /* need more input */ + int offset = yy_c_buf_p - yytext_ptr; + ++yy_c_buf_p; + + switch ( yy_get_next_buffer() ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart( yyin ); + + /* fall through */ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap() ) + return EOF; + + if ( ! yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + yy_c_buf_p = yytext_ptr + offset; + break; + } + } + } + + c = YY_SC_TO_UI(*yy_c_buf_p); + *yy_c_buf_p = (YY_CHAR) '\0'; /* preserve yytext */ + yy_hold_char = *++yy_c_buf_p; + + + return c; + } + + +void yyFlexLexer::yyrestart( std::istream* input_file ) + { + if ( ! yy_current_buffer ) + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); + + yy_init_buffer( yy_current_buffer, input_file ); + yy_load_buffer_state(); + } + + +void yyFlexLexer::yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) + { + if ( yy_current_buffer == new_buffer ) + return; + + if ( yy_current_buffer ) + { + /* Flush out information for old buffer. */ + *yy_c_buf_p = yy_hold_char; + yy_current_buffer->yy_buf_pos = yy_c_buf_p; + yy_current_buffer->yy_n_chars = yy_n_chars; + } + + yy_current_buffer = new_buffer; + yy_load_buffer_state(); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + yy_did_buffer_switch_on_eof = 1; + } + + +void yyFlexLexer::yy_load_buffer_state() + { + yy_n_chars = yy_current_buffer->yy_n_chars; + yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; + yyin = yy_current_buffer->yy_input_file; + yy_hold_char = *yy_c_buf_p; + } + + +YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( std::istream* file, int size ) + { + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (YY_CHAR *) yy_flex_alloc( + ( b->yy_buf_size + 2 ) * sizeof( YY_CHAR ) ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer( b, file ); + + return b; + } + + +void yyFlexLexer::yy_delete_buffer( YY_BUFFER_STATE b ) + { + if ( ! b ) + return; + + if ( b == yy_current_buffer ) + yy_current_buffer = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yy_flex_free( (void *) b->yy_ch_buf ); + + yy_flex_free( (void *) b ); + } + + +extern "C" int isatty YY_PROTO(( int )); +void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, std::istream* file ) + + { + yy_flush_buffer( b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + b->yy_is_interactive = 0; + } + + +void yyFlexLexer::yy_flush_buffer( YY_BUFFER_STATE b ) + { + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == yy_current_buffer ) + yy_load_buffer_state(); + } + + +#ifndef YY_NO_SCAN_BUFFER +#endif + + +#ifndef YY_NO_SCAN_STRING +#endif + + +#ifndef YY_NO_SCAN_BYTES +#endif + + +#ifndef YY_NO_PUSH_STATE +void yyFlexLexer::yy_push_state( int new_state ) + { + if ( yy_start_stack_ptr >= yy_start_stack_depth ) + { + yy_size_t new_size; + + yy_start_stack_depth += YY_START_STACK_INCR; + new_size = yy_start_stack_depth * sizeof( int ); + + if ( ! yy_start_stack ) + yy_start_stack = (int *) yy_flex_alloc( new_size ); + + else + yy_start_stack = (int *) yy_flex_realloc( + (void *) yy_start_stack, new_size ); + + if ( ! yy_start_stack ) + YY_FATAL_ERROR( + "out of memory expanding start-condition stack" ); + } + + yy_start_stack[yy_start_stack_ptr++] = YY_START; + + BEGIN(new_state); + } +#endif + + +#ifndef YY_NO_POP_STATE +void yyFlexLexer::yy_pop_state() + { + if ( --yy_start_stack_ptr < 0 ) + YY_FATAL_ERROR( "start-condition stack underflow" ); + + BEGIN(yy_start_stack[yy_start_stack_ptr]); + } +#endif + + +#ifndef YY_NO_TOP_STATE +int yyFlexLexer::yy_top_state() + { + return yy_start_stack[yy_start_stack_ptr - 1]; + } +#endif + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + + +void yyFlexLexer::LexerError( yyconst char msg[] ) + { + std::cerr << msg << '\n'; + exit( YY_EXIT_FAILURE ); + } + + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + yytext[yyleng] = yy_hold_char; \ + yy_c_buf_p = yytext + n; \ + yy_hold_char = *yy_c_buf_p; \ + *yy_c_buf_p = (YY_CHAR) '\0'; \ + yyleng = n; \ + } \ + while ( 0 ) + + +/* Internal utility routines. */ + +#ifndef yytext_ptr +#ifdef YY_USE_PROTOS +static void yy_flex_strncpy( YY_CHAR *s1, yyconst YY_CHAR *s2, int n ) +#else +static void yy_flex_strncpy( s1, s2, n ) +YY_CHAR *s1; +yyconst YY_CHAR *s2; +int n; +#endif + { + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; + } +#endif + +#ifdef YY_NEED_STRLEN +#ifdef YY_USE_PROTOS +static int yy_flex_strlen( yyconst YY_CHAR *s ) +#else +static int yy_flex_strlen( s ) +yyconst YY_CHAR *s; +#endif + { + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; + } +#endif + + +#ifdef YY_USE_PROTOS +static void *yy_flex_alloc( yy_size_t size ) +#else +static void *yy_flex_alloc( size ) +yy_size_t size; +#endif + { + return (void *) malloc( size ); + } + +#ifdef YY_USE_PROTOS +static void *yy_flex_realloc( void *ptr, yy_size_t size ) +#else +static void *yy_flex_realloc( ptr, size ) +void *ptr; +yy_size_t size; +#endif + { + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); + } + +#ifdef YY_USE_PROTOS +static void yy_flex_free( void *ptr ) +#else +static void yy_flex_free( ptr ) +void *ptr; +#endif + { + free( ptr ); + } + +#if YY_MAIN +int main() + { + yylex(); + return 0; + } +#endif +#line 872 "../src/lexer/XQLexer.l" + diff --git a/src/lexer/XQLexer.hpp b/src/lexer/XQLexer.hpp new file mode 100644 index 00000000..f40c0ae3 --- /dev/null +++ b/src/lexer/XQLexer.hpp @@ -0,0 +1,196 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQLexer.hpp,v 1.5 2006/11/01 16:37:21 jpcs Exp $ + */ + +#ifndef XQLEXER_H +#define XQLEXER_H + +// #define XQ_DEBUG_LEXER 1 + +#include "XQillaLexer.hpp" +#ifndef yyFlexLexer +#define yyFlexLexer xqFlexLexer +#include "FlexLexer.h" +#endif + +#include +#include +#include +#include + +#ifndef YYSTYPE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +typedef union { + XMLCh* str; + ASTNode* astNode; + XQUserFunction* functDecl; + XQUserFunction::XQFunctionParameter* funcParam; + XQUserFunction::VectorOfFunctionParameters* funcParams; + NodeTest *nodeTest; + XQStep::Axis axis; + QualifiedName *qName; + SequenceType* sequenceType; + SequenceType::OccurrenceIndicator occurrence; + SequenceType::ItemType* itemType; + VectorOfASTNodes* itemList; + VectorOfPredicates* predicates; + XQVariableBinding* variableBinding; + VectorOfVariableBinding* variableBindingList; + XQTypeswitch::Clause* clause; + XQTypeswitch::VectorOfClause* clauseList; + XQSort::SortSpec::sortModifier sortModifier; + XQSort::VectorOfSortSpec* sortSpecList; + XQSort::SortSpec* sortSpec; + XQSort* sort; + VectorOfStrings* stringList; + FTSelection *ftselection; + FTWords::FTAnyallOption ftanyalloption; + FTOption *ftoption; + VectorOfFTOptions *ftoptionlist; + FTRange ftrange; + FTOption::FTUnit ftunit; +} yystype; +#define YYSTYPE yystype +#define YYSTYPE_IS_DECLARED 1 +#define YYSTYPE_IS_TRIVIAL 1 +#endif // #ifndef YYSTYPE + +#include "../parser/XQParser.hpp" // to be included *after* defining YYSTYPE and YYLTYPE + +class XQILLA_API XQLexer : public CXQillaLexer, public yyFlexLexer +{ +public: + XQLexer(XPath2MemoryManager* memMgr, const XMLCh *queryFile, const XMLCh* query, XQilla::Language lang) + :CXQillaLexer(memMgr, queryFile, query, lang) + { + } + + // Implemented in XQLexer.cpp, output of XQLexer.l + virtual int yylex(); + + int yylex(YYSTYPE* pYYLVAL, YYLTYPE* pYYLOC) + { + int nextToken=yylex(); + memcpy(pYYLVAL,&yylval,sizeof(YYSTYPE)); + memcpy(pYYLOC,&m_yyloc,sizeof(YYLTYPE)); + if(nextToken==0 && !CXQillaLexer::isCommentClosed()) + LexerError("Unterminated comment"); + return nextToken; + } + + int yylex(YYSTYPE* pYYLVAL) + { + int nextToken=yylex(); + memcpy(pYYLVAL,&yylval,sizeof(YYSTYPE)); + if(nextToken==0 && !CXQillaLexer::isCommentClosed()) + LexerError("Unterminated comment"); + return nextToken; + } + +protected: + virtual int LexerInput( YY_CHAR* buf, int max_size ) + { + return CXQillaLexer::Read(buf, max_size); + } + + virtual void LexerOutput( const YY_CHAR* buf, int size ) + { + // do nothing + } + + virtual void LexerError( const char* msg ) + { + CXQillaLexer::error(msg); + } + + virtual void yy_pop_state() + { + if(yy_start_stack_ptr==0) + { + XMLCh szMsg[256]; + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::copyString(szMsg, X("Unbalanced '")); + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::catString(szMsg, (XMLCh*)yytext); + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::catString(szMsg, X("' token")); + XQSimpleThrow(szMsg, NULL, m_lineno, m_columnno); + } + yyFlexLexer::yy_pop_state(); + } + + virtual bool next_tokens(int state, int tok1, int tok2=-1, int tok3=-1) + { + XQLexer lookAhead(m_memMgr, m_szQueryFile, m_szQuery+m_index, m_language); + lookAhead.setGenerateEOF(m_bGenerateEOF); + lookAhead.setGenerateErrorException(false); + lookAhead.yy_start=1 + 2 * state; + + int nextToken1 = lookAhead.yylex(); + if(tok1!=nextToken1) + return false; + int nextToken2 = -1; + if(tok2!=-1) + nextToken2 = lookAhead.yylex(); + if(tok2!=nextToken2) + return false; + int nextToken3 = -1; + if(tok3!=-1) + nextToken3 = lookAhead.yylex(); + + return (tok3==nextToken3); + } + + virtual int next_token(int state) + { + XQLexer lookAhead(m_memMgr, m_szQueryFile, m_szQuery+m_index, m_language); + lookAhead.setGenerateEOF(m_bGenerateEOF); + lookAhead.setGenerateErrorException(false); + lookAhead.yy_start=1 + 2 * state; + + return lookAhead.yylex(); + } + + YYSTYPE yylval; +}; + +class XQParserArgs +{ +public: + XQParserArgs() + : _lexer(0), _context(0), _query(0), _flags(32), _namespaceDecls(13) {} + + XQLexer* _lexer; + DynamicContext* _context; + XQQuery* _query; + XERCES_CPP_NAMESPACE_QUALIFIER BitSet _flags; + XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf _namespaceDecls; +}; + +namespace XQParser { + extern int yyparse(void *); + extern int yydebug; +} + + +#endif + diff --git a/src/lexer/XQLexer.l b/src/lexer/XQLexer.l new file mode 100644 index 00000000..466bdeb1 --- /dev/null +++ b/src/lexer/XQLexer.l @@ -0,0 +1,872 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQLexer.l,v 1.5 2006/11/01 16:37:21 jpcs Exp $ + */ + +%{ + +#include "XQLexer.hpp" +#include "../parser/XQParser.hpp" + +#define YY_STACK_USED 1 +#ifdef XQ_DEBUG_LEXER + +#include + +#define CHANGE_STATE(state) BEGIN((state)); std::cerr << "Begin: " << xqGetStateName((state)) << ", " +#define RECOGNIZE(token) { std::cerr << "Recognize: "#token << std::endl; return token; } +// yy_push_state pushes the current state and does a transition to the specified one; +// the semantic of the PUSH/PUSH_CURRENT methods in the specs is that the specified state is pushed +#define PUSH(state) { int curState=YYSTATE; CHANGE_STATE(state); yy_push_state(curState); std::cerr << "Push: " << xqGetStateName((state)) << ", "; } +#define PUSH_CURRENT() PUSH(YYSTATE) +#define POP() yy_pop_state(); std::cerr << "Pop: " << xqGetStateName(YYSTATE) << ", " + +#else + +#define CHANGE_STATE(state) BEGIN((state)) +#define RECOGNIZE(token) return token +// yy_push_state pushes the current state and does a transition to the specified one; +// the semantic of the PUSH/PUSH_CURRENT methods in the specs is that the specified state is pushed +#define PUSH(state) { int curState=YYSTATE; CHANGE_STATE(state); yy_push_state(curState); } +#define PUSH_CURRENT() PUSH(YYSTATE) +#define POP() yy_pop_state() + +#endif + +static char szDelimiters[] ="\t\n\r <>?*$)({/=!|@[],;%\"'&}:.-+"; + +#define REJECT_IF_NOT_TERMINATED { if(yy_hold_char!=YY_END_OF_BUFFER_CHAR && strchr(szDelimiters,yy_hold_char)==NULL) { undoUserAction(); REJECT; } } +#define REJECT_IF_COLON { if(yy_hold_char!=YY_END_OF_BUFFER_CHAR && yy_hold_char==':') { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED1(state, tok1) { if(!next_tokens(state, tok1)) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED2(state, tok1, tok2) { if(!next_tokens(state, tok1,tok2)) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED3(state, tok1, tok2, tok3) { if(!next_tokens(state, tok1, tok2, tok3)) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED_CHOICE2(state, tok1, tok2) { int tok=next_token(state); if(tok!=_EOF_ && tok!=tok1 && tok!=tok2) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED_CHOICE3(state, tok1, tok2, tok3) { int tok=next_token(state); if(tok!=_EOF_ && tok!=tok1 && tok!=tok2 && tok!=tok3) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED_CHOICE4(state, tok1, tok2, tok3, tok4) { int tok=next_token(state); if(tok!=_EOF_ && tok!=tok1 && tok!=tok2 && tok!=tok3 && tok!=tok4) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED_CHOICE5(state, tok1, tok2, tok3, tok4, tok5) { int tok=next_token(state); if(tok!=_EOF_ && tok!=tok1 && tok!=tok2 && tok!=tok3 && tok!=tok4 && tok!=tok5) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED_CHOICE6(state, tok1, tok2, tok3, tok4, tok5, tok6) { int tok=next_token(state); if(tok!=_EOF_ && tok!=tok1 && tok!=tok2 && tok!=tok3 && tok!=tok4 && tok!=tok5 && tok!=tok6) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED_CHOICE7(state, tok1, tok2, tok3, tok4, tok5, tok6, tok7) { int tok=next_token(state); if(tok!=_EOF_ && tok!=tok1 && tok!=tok2 && tok!=tok3 && tok!=tok4 && tok!=tok5 && tok!=tok6 && tok!=tok7) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED_CHOICE8(state, tok1, tok2, tok3, tok4, tok5, tok6, tok7, tok8) { int tok=next_token(state); if(tok!=_EOF_ && tok!=tok1 && tok!=tok2 && tok!=tok3 && tok!=tok4 && tok!=tok5 && tok!=tok6 && tok!=tok7 && tok!=tok8) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED_CHOICE9(state, tok1, tok2, tok3, tok4, tok5, tok6, tok7, tok8, tok9) { int tok=next_token(state); if(tok!=_EOF_ && tok!=tok1 && tok!=tok2 && tok!=tok3 && tok!=tok4 && tok!=tok5 && tok!=tok6 && tok!=tok7 && tok!=tok8 && tok!=tok9) { undoUserAction(); REJECT; } } +#define REJECT_IF_NOT_FOLLOWED_CHOICE10(state, tok1, tok2, tok3, tok4, tok5, tok6, tok7, tok8, tok9, tok10) { int tok=next_token(state); if(tok!=_EOF_ && tok!=tok1 && tok!=tok2 && tok!=tok3 && tok!=tok4 && tok!=tok5 && tok!=tok6 && tok!=tok7 && tok!=tok8 && tok!=tok9 && tok!=tok10) { undoUserAction(); REJECT; } } + +#define REJECT_NOT_XQUERY { if(!isXQuery()) { undoUserAction(); REJECT; } } +#define REJECT_NOT_FULLTEXT { if(!isFullText()) { undoUserAction(); REJECT; } } +#define REJECT_XQUERY { if(isXQuery()) { undoUserAction(); REJECT; } } +#define REJECT_IF_XPATH { if(getLanguage() == XQilla::XPATH2) { undoUserAction(); REJECT; } } + +%} + +/* -------------- declaration section -------------- */ + +/* UTF16 Surrogates, for chars above 0xFFFF */ +HighSurrogates ([\xD800-\xDB7F]) +HighPrivateUseSurrogates ([\xDB80-\xDBFF]) +LowSurrogates ([\xDC00-\xDFFF]) +SurrogatePairs {HighSurrogates}|{HighPrivateUseSurrogates}|{LowSurrogates} +NonPrivateUseSurrogates {HighSurrogates}|{LowSurrogates} + +/* from XML spec */ +Char ([\x0009]|[\x000D]|[\x000A]|[\x0020-\xD7FF]|[\xE000-\xFFFD]|{SurrogatePairs}) +WhitespaceChar ([\x0009]|[\x000D]|[\x000A]|[\x0020]) +S {WhitespaceChar}+ +BaseChar1 ([\x0041-\x005A]|[\x0061-\x007A]|[\x00C0-\x00D6]|[\x00D8-\x00F6]|[\x00F8-\x00FF]|[\x0100-\x0131]|[\x0134-\x013E]|[\x0141-\x0148]|[\x014A-\x017E]|[\x0180-\x01C3]|[\x01CD-\x01F0]|[\x01F4-\x01F5]|[\x01FA-\x0217]|[\x0250-\x02A8]|[\x02BB-\x02C1]|[\x0386]|[\x0388-\x038A]|[\x038C]|[\x038E-\x03A1]|[\x03A3-\x03CE]|[\x03D0-\x03D6]|[\x03DA]|[\x03DC]|[\x03DE]|[\x03E0]|[\x03E2-\x03F3]|[\x0401-\x040C]|[\x040E-\x044F]|[\x0451-\x045C]|[\x045E-\x0481]|[\x0490-\x04C4]|[\x04C7-\x04C8]|[\x04CB-\x04CC]|[\x04D0-\x04EB]|[\x04EE-\x04F5]|[\x04F8-\x04F9]|[\x0531-\x0556]|[\x0559]|[\x0561-\x0586]|[\x05D0-\x05EA]|[\x05F0-\x05F2]|[\x0621-\x063A]|[\x0641-\x064A]|[\x0671-\x06B7]|[\x06BA-\x06BE]|[\x06C0-\x06CE]|[\x06D0-\x06D3]|[\x06D5]|[\x06E5-\x06E6]|[\x0905-\x0939]|[\x093D]|[\x0958-\x0961]|[\x0985-\x098C]|[\x098F-\x0990]|[\x0993-\x09A8]|[\x09AA-\x09B0]|[\x09B2]|[\x09B6-\x09B9]|[\x09DC-\x09DD]|[\x09DF-\x09E1]|[\x09F0-\x09F1]|[\x0A05-\x0A0A]|[\x0A0F-\x0A10]|[\x0A13-\x0A28]|[\x0A2A-\x0A30]|[\x0A32-\x0A33]|[\x0A35-\x0A36]|[\x0A38-\x0A39]|[\x0A59-\x0A5C]|[\x0A5E]|[\x0A72-\x0A74]|[\x0A85-\x0A8B]|[\x0A8D]|[\x0A8F-\x0A91]|[\x0A93-\x0AA8]|[\x0AAA-\x0AB0]|[\x0AB2-\x0AB3]|[\x0AB5-\x0AB9]|[\x0ABD]|[\x0AE0]|[\x0B05-\x0B0C]|[\x0B0F-\x0B10]|[\x0B13-\x0B28]|[\x0B2A-\x0B30]|[\x0B32-\x0B33]|[\x0B36-\x0B39]|[\x0B3D]|[\x0B5C-\x0B5D]|[\x0B5F-\x0B61]|[\x0B85-\x0B8A]|[\x0B8E-\x0B90]|[\x0B92-\x0B95]|[\x0B99-\x0B9A]|[\x0B9C]|[\x0B9E-\x0B9F]|[\x0BA3-\x0BA4]|[\x0BA8-\x0BAA]|[\x0BAE-\x0BB5]|[\x0BB7-\x0BB9]|[\x0C05-\x0C0C]|[\x0C0E-\x0C10]|[\x0C12-\x0C28]|[\x0C2A-\x0C33]|[\x0C35-\x0C39]|[\x0C60-\x0C61]|[\x0C85-\x0C8C]|[\x0C8E-\x0C90]|[\x0C92-\x0CA8]|[\x0CAA-\x0CB3]|[\x0CB5-\x0CB9]|[\x0CDE]|[\x0CE0-\x0CE1]|[\x0D05-\x0D0C]) +BaseChar2 ([\x0D0E-\x0D10]|[\x0D12-\x0D28]|[\x0D2A-\x0D39]|[\x0D60-\x0D61]|[\x0E01-\x0E2E]|[\x0E30]|[\x0E32-\x0E33]|[\x0E40-\x0E45]|[\x0E81-\x0E82]|[\x0E84]|[\x0E87-\x0E88]|[\x0E8A]|[\x0E8D]|[\x0E94-\x0E97]|[\x0E99-\x0E9F]|[\x0EA1-\x0EA3]|[\x0EA5]|[\x0EA7]|[\x0EAA-\x0EAB]|[\x0EAD-\x0EAE]|[\x0EB0]|[\x0EB2-\x0EB3]|[\x0EBD]|[\x0EC0-\x0EC4]|[\x0F40-\x0F47]|[\x0F49-\x0F69]|[\x10A0-\x10C5]|[\x10D0-\x10F6]|[\x1100]|[\x1102-\x1103]|[\x1105-\x1107]|[\x1109]|[\x110B-\x110C]|[\x110E-\x1112]|[\x113C]|[\x113E]|[\x1140]|[\x114C]|[\x114E]|[\x1150]|[\x1154-\x1155]|[\x1159]|[\x115F-\x1161]|[\x1163]|[\x1165]|[\x1167]|[\x1169]|[\x116D-\x116E]|[\x1172-\x1173]|[\x1175]|[\x119E]|[\x11A8]|[\x11AB]|[\x11AE-\x11AF]|[\x11B7-\x11B8]|[\x11BA]|[\x11BC-\x11C2]|[\x11EB]|[\x11F0]|[\x11F9]|[\x1E00-\x1E9B]|[\x1EA0-\x1EF9]|[\x1F00-\x1F15]|[\x1F18-\x1F1D]|[\x1F20-\x1F45]|[\x1F48-\x1F4D]|[\x1F50-\x1F57]|[\x1F59]|[\x1F5B]|[\x1F5D]|[\x1F5F-\x1F7D]|[\x1F80-\x1FB4]|[\x1FB6-\x1FBC]|[\x1FBE]|[\x1FC2-\x1FC4]|[\x1FC6-\x1FCC]|[\x1FD0-\x1FD3]|[\x1FD6-\x1FDB]|[\x1FE0-\x1FEC]|[\x1FF2-\x1FF4]|[\x1FF6-\x1FFC]|[\x2126]|[\x212A-\x212B]|[\x212E]|[\x2180-\x2182]|[\x3041-\x3094]|[\x30A1-\x30FA]|[\x3105-\x312C]|[\xAC00-\xD7A3]) +BaseChar {BaseChar1}|{BaseChar2} +Ideographic ([\x4E00-\x9FA5]|[\x3007]|[\x3021-\x3029]) +Digit ([\x0030-\x0039]|[\x0660-\x0669]|[\x06F0-\x06F9]|[\x0966-\x096F]|[\x09E6-\x09EF]|[\x0A66-\x0A6F]|[\x0AE6-\x0AEF]|[\x0B66-\x0B6F]|[\x0BE7-\x0BEF]|[\x0C66-\x0C6F]|[\x0CE6-\x0CEF]|[\x0D66-\x0D6F]|[\x0E50-\x0E59]|[\x0ED0-\x0ED9]|[\x0F20-\x0F29]) +CombiningChar ([\x0300-\x0345]|[\x0360-\x0361]|[\x0483-\x0486]|[\x0591-\x05A1]|[\x05A3-\x05B9]|[\x05BB-\x05BD]|[\x05BF]|[\x05C1-\x05C2]|[\x05C4]|[\x064B-\x0652]|[\x0670]|[\x06D6-\x06DC]|[\x06DD-\x06DF]|[\x06E0-\x06E4]|[\x06E7-\x06E8]|[\x06EA-\x06ED]|[\x0901-\x0903]|[\x093C]|[\x093E-\x094C]|[\x094D]|[\x0951-\x0954]|[\x0962-\x0963]|[\x0981-\x0983]|[\x09BC]|[\x09BE]|[\x09BF]|[\x09C0-\x09C4]|[\x09C7-\x09C8]|[\x09CB-\x09CD]|[\x09D7]|[\x09E2-\x09E3]|[\x0A02]|[\x0A3C]|[\x0A3E]|[\x0A3F]|[\x0A40-\x0A42]|[\x0A47-\x0A48]|[\x0A4B-\x0A4D]|[\x0A70-\x0A71]|[\x0A81-\x0A83]|[\x0ABC]|[\x0ABE-\x0AC5]|[\x0AC7-\x0AC9]|[\x0ACB-\x0ACD]|[\x0B01-\x0B03]|[\x0B3C]|[\x0B3E-\x0B43]|[\x0B47-\x0B48]|[\x0B4B-\x0B4D]|[\x0B56-\x0B57]|[\x0B82-\x0B83]|[\x0BBE-\x0BC2]|[\x0BC6-\x0BC8]|[\x0BCA-\x0BCD]|[\x0BD7]|[\x0C01-\x0C03]|[\x0C3E-\x0C44]|[\x0C46-\x0C48]|[\x0C4A-\x0C4D]|[\x0C55-\x0C56]|[\x0C82-\x0C83]|[\x0CBE-\x0CC4]|[\x0CC6-\x0CC8]|[\x0CCA-\x0CCD]|[\x0CD5-\x0CD6]|[\x0D02-\x0D03]|[\x0D3E-\x0D43]|[\x0D46-\x0D48]|[\x0D4A-\x0D4D]|[\x0D57]|[\x0E31]|[\x0E34-\x0E3A]|[\x0E47-\x0E4E]|[\x0EB1]|[\x0EB4-\x0EB9]|[\x0EBB-\x0EBC]|[\x0EC8-\x0ECD]|[\x0F18-\x0F19]|[\x0F35]|[\x0F37]|[\x0F39]|[\x0F3E]|[\x0F3F]|[\x0F71-\x0F84]|[\x0F86-\x0F8B]|[\x0F90-\x0F95]|[\x0F97]|[\x0F99-\x0FAD]|[\x0FB1-\x0FB7]|[\x0FB9]|[\x20D0-\x20DC]|[\x20E1]|[\x302A-\x302F]|[\x3099]|[\x309A]) +Extender ([\x00B7]|[\x02D0]|[\x02D1]|[\x0387]|[\x0640]|[\x0E46]|[\x0EC6]|[\x3005]|[\x3031-\x3035]|[\x309D-\x309E]|[\x30FC-\x30FE]) +Letter {BaseChar}|{Ideographic} +/* [20] CData ::= (Char* - (Char* ']]>' Char*)) */ +CharMinusBrack ([\x0009]|[\x000D]|[\x000A]|[\x0020-\x005C]|[\x005E-\xD7FF]|[\xE000-\xFFFD]) +CharMinusGT ([\x0009]|[\x000D]|[\x000A]|[\x0020-\x003D]|[\x003F-\xD7FF]|[\xE000-\xFFFD]) +CDATAContent (({CharMinusBrack}|("]"{CharMinusBrack})|("]]"{CharMinusGT}))*) +/* [16] PI ::= '' Char*)))? '?>' */ +CharMinusQuestion ([\x0009]|[\x000D]|[\x000A]|[\x0020-\x003E]|[\x0040-\xD7FF]|[\xE000-\xFFFD]) +PIContent (({CharMinusQuestion}|("?"{CharMinusGT}))*) +/* [66] PragmaContents ::= (Char* - (Char* '#)' Char*)) */ +CharMinusSharp ([\x0009]|[\x000D]|[\x000A]|[\x0020-\x0022]|[\x0024-\xD7FF]|[\xE000-\xFFFD]) +CharMinusClosePar ([\x0009]|[\x000D]|[\x000A]|[\x0020-\x0028]|[\x002A-\xD7FF]|[\xE000-\xFFFD]) +PragmaContents (({CharMinusSharp}|("#"{CharMinusClosePar}))*) + +/* from Namespace spec */ +NCNameChar {Letter}|{Digit}|"."|"-"|"_"|{CombiningChar}|{Extender} +NCName ({Letter}|"_"){NCNameChar}* + +Prefix {NCName} +LocalPart {NCName} +QName ({Prefix}":")?{LocalPart} + +/* from XQuery spec */ +IntegerLiteral {Digits} +DecimalLiteral ("."{Digits})|({Digits}"."[0-9]*) +DoubleLiteral (("."{Digits})|({Digits}("."[0-9]*)?))("e"|"E")("+"|"-")?{Digits} +StringLiteral (["]({PredefinedEntityRef}|{CharRef}|(["]["])|[^"&])*["])|([']({PredefinedEntityRef}|{CharRef}|([']['])|[^'&])*[']) + +Digits [0-9]+ +EscapeQuot ["]["] +PredefinedEntityRef "&"("lt"|"gt"|"amp"|"quot"|"apos")";" +HexDigits ([0-9]|[a-f]|[A-F])+ +CharRef "&#"({Digits}|("x"{HexDigits}))";" +EscapeApos "''" +PITarget {NCName} + +/* CommentChar := {Char} - "-" */ +CommentChar ([\x0009]|[\x000D]|[\x000A]|[\x0020-\x002C]|[\x002E-\xD7FF]|[\xE000-\xFFFD]) +CommentContent (({CommentChar}|("-"{CommentChar}))*) + +NotColon [^:] + +%option never-interactive +%option noyywrap +%option yyclass="XQLexer" +%option c++ + +%x ELEMENT_CONTENT +%x PROCESSING_INSTRUCTION +%x PROCESSING_INSTRUCTION_CONTENT +%x QUOT_ATTRIBUTE_CONTENT +%x APOS_ATTRIBUTE_CONTENT +%x START_TAG +%x END_TAG +%x OPERATOR +%x ITEMTYPE +%x NAMESPACEDECL +%x NAMESPACEKEYWORD +%x BOUNDARYSPACE_DECL +%x COPYNAMESPACE_DECL +%x VARNAME +%x ATTRIBUTE_DECL +%x KINDTEST +%x KINDTESTFORPI +%x CLOSEKINDTEST +%x EXPR_COMMENT +%x OCCURRENCEINDICATOR +%x SINGLETYPE +%x PRAGMA_NAME +%x PRAGMA_CONTENT +%x XQUERYDECL +%x IMPORT +%x DEFAULT_KEYWORD +%x DECLARE_KEYWORD +%x DEFAULT_ORDER +%x VALIDATE +%x ORDER +%x EMPTY_PARENS +%x THESAURUS1 +%x THESAURUS2 +%x STOPWORDS + +%{ +char *xqGetStateName(int state) +{ + switch(state) { + case INITIAL: return "INITIAL"; + case ELEMENT_CONTENT: return "ELEMENT_CONTENT"; + case PROCESSING_INSTRUCTION: return "PROCESSING_INSTRUCTION"; + case PROCESSING_INSTRUCTION_CONTENT: return "PROCESSING_INSTRUCTION_CONTENT"; + case QUOT_ATTRIBUTE_CONTENT: return "QUOT_ATTRIBUTE_CONTENT"; + case APOS_ATTRIBUTE_CONTENT: return "APOS_ATTRIBUTE_CONTENT"; + case START_TAG: return "START_TAG"; + case END_TAG: return "END_TAG"; + case OPERATOR: return "OPERATOR"; + case ITEMTYPE: return "ITEMTYPE"; + case NAMESPACEDECL: return "NAMESPACEDECL"; + case NAMESPACEKEYWORD: return "NAMESPACEKEYWORD"; + case BOUNDARYSPACE_DECL: return "BOUNDARYSPACE_DECL"; + case COPYNAMESPACE_DECL: return "COPYNAMESPACE_DECL"; + case VARNAME: return "VARNAME"; + case ATTRIBUTE_DECL: return "ATTRIBUTE_DECL"; + case KINDTEST: return "KINDTEST"; + case KINDTESTFORPI: return "KINDTESTFORPI"; + case CLOSEKINDTEST: return "CLOSEKINDTEST"; + case EXPR_COMMENT: return "EXPR_COMMENT"; + case OCCURRENCEINDICATOR: return "OCCURRENCEINDICATOR"; + case SINGLETYPE: return "SINGLETYPE"; + case PRAGMA_NAME: return "PRAGMA_NAME"; + case PRAGMA_CONTENT: return "PRAGMA_CONTENT"; + case XQUERYDECL: return "XQUERYDECL"; + case IMPORT: return "IMPORT"; + case DEFAULT_KEYWORD: return "DEFAULT_KEYWORD"; + case DECLARE_KEYWORD: return "DECLARE_KEYWORD"; + case DEFAULT_ORDER: return "DEFAULT_ORDER"; + case VALIDATE: return "VALIDATE"; + case ORDER: return "ORDER"; + case EMPTY_PARENS: return "EMPTY_PARENS"; + case THESAURUS1: return "THESAURUS1"; + case THESAURUS2: return "THESAURUS2"; + case STOPWORDS: return "STOPWORDS"; + } + return "unknown"; +} +%} + +%% + +{S} if(m_bReportWhiteSpace) RECOGNIZE(_XQUERY_WHITESPACE_); +"(:" beginComment(); PUSH_CURRENT(); BEGIN(EXPR_COMMENT); if(m_bReportWhiteSpace) RECOGNIZE(_XQUERY_COMMENT_); + +{DecimalLiteral} REJECT_IF_NOT_TERMINATED; yylval.str=allocate_string((XMLCh*)yytext); CHANGE_STATE(OPERATOR); RECOGNIZE(_DECIMAL_NUMBER_); +{DoubleLiteral} REJECT_IF_NOT_TERMINATED; yylval.str=allocate_string((XMLCh*)yytext); CHANGE_STATE(OPERATOR); RECOGNIZE(_DOUBLE_NUMBER_); +{IntegerLiteral} REJECT_IF_NOT_TERMINATED; yylval.str=allocate_string((XMLCh*)yytext); CHANGE_STATE(OPERATOR); RECOGNIZE(_INTEGER_NUMBER_); +"." CHANGE_STATE(OPERATOR); RECOGNIZE(_DOT_); +".." CHANGE_STATE(OPERATOR); RECOGNIZE(_DOT_DOT_); +{NCName}":*" { + yylval.str=allocate_string((XMLCh*)yytext,XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen((XMLCh*)yytext)-2); + CHANGE_STATE(OPERATOR); + RECOGNIZE(_NCNAME_COLON_STAR_); + } +")" { + switch(YYSTATE) + { + case THESAURUS2: + case INITIAL: + case OPERATOR: CHANGE_STATE(OPERATOR); break; + case KINDTEST: + case KINDTESTFORPI: + case CLOSEKINDTEST: POP(); break; + case STOPWORDS: break; + } + RECOGNIZE(_RPAR_); + } +"*:"{NCName} { + yylval.str=allocate_string((XMLCh*)(yytext+2)); // skip the *: + CHANGE_STATE(OPERATOR); + RECOGNIZE(_STAR_COLON_NCNAME_); + } +"*" { + switch(YYSTATE) + { + case INITIAL: CHANGE_STATE(OPERATOR); RECOGNIZE(_STAR_); + case OCCURRENCEINDICATOR: CHANGE_STATE(OPERATOR); RECOGNIZE(_ZERO_OR_MORE_); + case OPERATOR: CHANGE_STATE(INITIAL); RECOGNIZE(_MULTIPLY_); + case KINDTEST: CHANGE_STATE(CLOSEKINDTEST); RECOGNIZE(_STAR_); + } + } +{StringLiteral} { + yylval.str=allocate_string_and_unescape(*yytext,(XMLCh*)(yytext+1),XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen((XMLCh*)yytext)-2); + switch(YYSTATE) + { + case INITIAL: + case OPERATOR: CHANGE_STATE(OPERATOR); break; + case STOPWORDS: + case THESAURUS1: + case THESAURUS2: + case KINDTESTFORPI: + case XQUERYDECL: break; + case NAMESPACEDECL: + case NAMESPACEKEYWORD: CHANGE_STATE(INITIAL); break; + } + RECOGNIZE(_STRING_LITERAL_); + } + +"declare" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED_CHOICE10(DECLARE_KEYWORD, _OPTION_, _VARIABLE_KEYWORD_, _FUNCTION_, _CONSTRUCTION_, _ORDERING_, _DEFAULT_, _COPY_NAMESPACES_, _BASEURI_, _BOUNDARYSPACE_, _NAMESPACE_); CHANGE_STATE(DECLARE_KEYWORD); RECOGNIZE(_DECLARE_); +"option" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_OPTION_); +"variable" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_VARIABLE_KEYWORD_); +"function" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_FUNCTION_); +"construction" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_CONSTRUCTION_); +"ordering" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_ORDERING_); +"copy-namespaces" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(COPYNAMESPACE_DECL); RECOGNIZE(_COPY_NAMESPACES_); +"base-uri" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(NAMESPACEDECL); RECOGNIZE(_BASEURI_); +"boundary-space" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(BOUNDARYSPACE_DECL); RECOGNIZE(_BOUNDARYSPACE_); +"namespace" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(NAMESPACEDECL); RECOGNIZE(_NAMESPACE_); + +"default" { + REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; + switch(YYSTATE) + { + case DECLARE_KEYWORD: REJECT_IF_NOT_FOLLOWED_CHOICE4(DEFAULT_KEYWORD, _ORDER_, _COLLATION_, _ELEMENT_, _FUNCTION_); break; + case NAMESPACEKEYWORD: REJECT_IF_NOT_FOLLOWED1(DEFAULT_KEYWORD, _ELEMENT_); break; + } + CHANGE_STATE(DEFAULT_KEYWORD); + RECOGNIZE(_DEFAULT_); + } + +"order" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_ORDER_); +"collation" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(NAMESPACEDECL); RECOGNIZE(_COLLATION_); +"element" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(NAMESPACEKEYWORD); RECOGNIZE(_ELEMENT_); +"function" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(NAMESPACEKEYWORD); RECOGNIZE(_FUNCTION_); + +"empty" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED_CHOICE2(DEFAULT_ORDER, _GREATEST_, _LEAST_); CHANGE_STATE(DEFAULT_ORDER); RECOGNIZE(_EMPTY_KEYWORD_); +"greatest" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_GREATEST_); +"least" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_LEAST_); + +"module" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(NAMESPACEKEYWORD, _NAMESPACE_); CHANGE_STATE(NAMESPACEKEYWORD); RECOGNIZE(_MODULE_); +"import" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED_CHOICE2(IMPORT, _SCHEMA_, _MODULE_); CHANGE_STATE(IMPORT); RECOGNIZE(_IMPORT_); + +"schema" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(NAMESPACEKEYWORD); RECOGNIZE(_SCHEMA_); +"module" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(NAMESPACEKEYWORD); RECOGNIZE(_MODULE_); + +"$" CHANGE_STATE(VARNAME); RECOGNIZE(_DOLLAR_SIGN_); +"for" REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(YYSTATE, _DOLLAR_SIGN_); RECOGNIZE(_FOR_); +"let" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(YYSTATE, _DOLLAR_SIGN_); RECOGNIZE(_LET_); +"score" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(YYSTATE, _DOLLAR_SIGN_); RECOGNIZE(_SCORE_); +"some" REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(YYSTATE, _DOLLAR_SIGN_); RECOGNIZE(_SOME_); +"every" REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(YYSTATE, _DOLLAR_SIGN_); RECOGNIZE(_EVERY_); + +")"{WhitespaceChar}*"as" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(ITEMTYPE); RECOGNIZE(_EXPR_AS_); + +"element"{WhitespaceChar}*"(" { + REJECT_IF_COLON; + switch(YYSTATE) + { + case INITIAL: PUSH(OPERATOR); break; + case ITEMTYPE: PUSH(OCCURRENCEINDICATOR); break; + case KINDTEST: PUSH(KINDTEST); break; + } + CHANGE_STATE(KINDTEST); + RECOGNIZE(_ELEMENT_LPAR_); + } +"attribute"{WhitespaceChar}*"(" { + REJECT_IF_COLON; + int stateToPush=(YYSTATE==INITIAL)?OPERATOR:OCCURRENCEINDICATOR; + PUSH(stateToPush); + CHANGE_STATE(KINDTEST); + RECOGNIZE(_ATTRIBUTE_LPAR_); + } +"schema-element"{WhitespaceChar}*"(" { + REJECT_IF_COLON; + switch(YYSTATE) + { + case INITIAL: PUSH(OPERATOR); break; + case ITEMTYPE: PUSH(OCCURRENCEINDICATOR); break; + case KINDTEST: PUSH(KINDTEST); break; + } + CHANGE_STATE(KINDTEST); + RECOGNIZE(_SCHEMA_ELEMENT_LPAR_); + } +"schema-attribute"{WhitespaceChar}*"(" { + REJECT_IF_COLON; + int stateToPush=(YYSTATE==INITIAL)?OPERATOR:OCCURRENCEINDICATOR; + PUSH(stateToPush); + CHANGE_STATE(KINDTEST); + RECOGNIZE(_SCHEMA_ATTRIBUTE_LPAR_); + } +"comment"{WhitespaceChar}*"(" { + REJECT_IF_COLON; + int stateToPush=(YYSTATE==INITIAL)?OPERATOR:OCCURRENCEINDICATOR; + PUSH(stateToPush); + CHANGE_STATE(KINDTEST); + RECOGNIZE(_COMMENT_LPAR_); + } +"text"{WhitespaceChar}*"(" { + REJECT_IF_COLON; + int stateToPush=(YYSTATE==INITIAL)?OPERATOR:OCCURRENCEINDICATOR; + PUSH(stateToPush); + CHANGE_STATE(KINDTEST); + RECOGNIZE(_TEXT_LPAR_); + } +"node"{WhitespaceChar}*"(" { + REJECT_IF_COLON; + int stateToPush=(YYSTATE==INITIAL)?OPERATOR:OCCURRENCEINDICATOR; + PUSH(stateToPush); + CHANGE_STATE(KINDTEST); + RECOGNIZE(_NODE_LPAR_); + } +"document-node"{WhitespaceChar}*"(" { + REJECT_IF_COLON; + int stateToPush=(YYSTATE==INITIAL)?OPERATOR:OCCURRENCEINDICATOR; + PUSH(stateToPush); + CHANGE_STATE(KINDTEST); + RECOGNIZE(_DOCUMENT_NODE_LPAR_); + } +"processing-instruction"{WhitespaceChar}*"(" { + REJECT_IF_COLON; + int stateToPush=(YYSTATE==INITIAL)?OPERATOR:OCCURRENCEINDICATOR; + PUSH(stateToPush); + CHANGE_STATE(KINDTESTFORPI); + RECOGNIZE(_PROCESSING_INSTRUCTION_LPAR_); + } + +"" { + REJECT_NOT_XQUERY; + yylval.str=allocate_string((XMLCh*)(yytext+4),XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen((XMLCh*)(yytext+4))-3); + if(YYSTATE==INITIAL) + CHANGE_STATE(OPERATOR); + RECOGNIZE(_XML_COMMENT_); + } + +""" { + REJECT_NOT_XQUERY; + yylval.str=allocate_string((XMLCh*)(yytext+9),XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen((XMLCh*)(yytext+9))-3); + if(YYSTATE==INITIAL) + CHANGE_STATE(OPERATOR); + RECOGNIZE(_CDATA_SECTION_); + } + +"<" { + switch(YYSTATE) + { + case INITIAL: + REJECT_NOT_XQUERY; PUSH(OPERATOR); CHANGE_STATE(START_TAG); RECOGNIZE(_START_TAG_OPEN_); + case OPERATOR: + case ITEMTYPE: + CHANGE_STATE(INITIAL); RECOGNIZE(_LT_); + case ELEMENT_CONTENT: + PUSH_CURRENT(); CHANGE_STATE(START_TAG); RECOGNIZE(_START_TAG_OPEN_); + } + } + +"}" POP(); RECOGNIZE(_RBRACE_); + +"validate" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED_CHOICE3(VALIDATE, _LBRACE_, _MODE_LAX_, _MODE_STRICT_); CHANGE_STATE(VALIDATE); RECOGNIZE(_VALIDATE_); +"{" REJECT_NOT_XQUERY; PUSH(OPERATOR); CHANGE_STATE(INITIAL); RECOGNIZE(_LBRACE_); +"lax" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(VALIDATE, _LBRACE_); RECOGNIZE(_MODE_LAX_); +"strict" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(VALIDATE, _LBRACE_); RECOGNIZE(_MODE_STRICT_); + +"typeswitch" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(YYSTATE, _LPAR_); RECOGNIZE(_TYPESWITCH_); + +"element"/{WhitespaceChar}*"{" REJECT_NOT_XQUERY; RECOGNIZE(_ELEMENT_CONSTR_); +"attribute"/{WhitespaceChar}*"{" REJECT_NOT_XQUERY; RECOGNIZE(_ATTRIBUTE_CONSTR_); + +"attribute"{S}{QName}/{WhitespaceChar}*"{" { + REJECT_NOT_XQUERY; + XMLCh* beginning=(XMLCh*)(yytext+9); + while(iswspace(*beginning)) beginning++; + yylval.str=allocate_string(beginning); + RECOGNIZE(_NAMED_ATTRIBUTE_CONSTR_); + } +"element"{S}{QName}/{WhitespaceChar}*"{" { + REJECT_NOT_XQUERY; + XMLCh* beginning=(XMLCh*)(yytext+7); + while(iswspace(*beginning)) beginning++; + yylval.str=allocate_string(beginning); + RECOGNIZE(_NAMED_ELEMENT_CONSTR_); + } +"document"/{WhitespaceChar}*"{" REJECT_NOT_XQUERY; RECOGNIZE(_DOCUMENT_CONSTR_); +"text"/{WhitespaceChar}*"{" REJECT_NOT_XQUERY; RECOGNIZE(_TEXT_CONSTR_); +"processing-instruction"/{WhitespaceChar}*"{" REJECT_NOT_XQUERY; RECOGNIZE(_PROCESSING_INSTRUCTION_CONSTR_); +"processing-instruction"{S}{NCName}/{WhitespaceChar}*"{" { + REJECT_NOT_XQUERY; + XMLCh* beginning=(XMLCh*)(yytext+22); + while(iswspace(*beginning)) beginning++; + yylval.str=allocate_string(beginning); + RECOGNIZE(_NAMED_PROCESSING_INSTRUCTION_CONSTR_); + } +"comment"/{WhitespaceChar}*"{" REJECT_NOT_XQUERY; RECOGNIZE(_COMMENT_CONSTR_); + +"(#"{WhitespaceChar}* REJECT_NOT_XQUERY; BEGIN(PRAGMA_NAME); RECOGNIZE(_PRAGMA_OPEN_); + +{QName} REJECT_NOT_XQUERY; yylval.str=allocate_string((XMLCh*)yytext); CHANGE_STATE(PRAGMA_CONTENT); RECOGNIZE(_PRAGMA_NAME_); +{S}{PragmaContents} REJECT_NOT_XQUERY; RECOGNIZE(_PRAGMA_CONTENT_); +"#)" REJECT_NOT_XQUERY; CHANGE_STATE(INITIAL); RECOGNIZE(_PRAGMA_CLOSE_); + + +";" REJECT_NOT_XQUERY; CHANGE_STATE(INITIAL); RECOGNIZE(_SEMICOLON_); + +"{" { + switch(YYSTATE) + { + case ELEMENT_CONTENT: + case QUOT_ATTRIBUTE_CONTENT: + case APOS_ATTRIBUTE_CONTENT: PUSH_CURRENT(); CHANGE_STATE(INITIAL); break; + case INITIAL: + case OPERATOR: + case KINDTEST: + case CLOSEKINDTEST: PUSH(OPERATOR); CHANGE_STATE(INITIAL); break; + } + RECOGNIZE(_LBRACE_); + } + +"ordered"/{WhitespaceChar}*"{" REJECT_NOT_XQUERY; PUSH(OPERATOR); CHANGE_STATE(INITIAL); RECOGNIZE(_ORDERED_); +"unordered"/{WhitespaceChar}*"{" REJECT_NOT_XQUERY; PUSH(OPERATOR); CHANGE_STATE(INITIAL); RECOGNIZE(_UNORDERED_); + +"xquery" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(XQUERYDECL, _VERSION_); CHANGE_STATE(XQUERYDECL); RECOGNIZE(_XQUERY_); +"version" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; RECOGNIZE(_VERSION_); + +"encoding" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; RECOGNIZE(_ENCODING_); + +"@" RECOGNIZE(_AT_); + +"ancestor-or-self"{WhitespaceChar}*"::" RECOGNIZE(_AXIS_ANCESTOR_OR_SELF_); +"ancestor"{WhitespaceChar}*"::" RECOGNIZE(_AXIS_ANCESTOR_); +"attribute"{WhitespaceChar}*"::" RECOGNIZE(_AXIS_ATTRIBUTE_); +"child"{WhitespaceChar}*"::" RECOGNIZE(_AXIS_CHILD_); +"descendant-or-self"{WhitespaceChar}*"::" RECOGNIZE(_AXIS_DESCENDANT_OR_SELF_); +"descendant"{WhitespaceChar}*"::" RECOGNIZE(_AXIS_DESCENDANT_); +"following-sibling"{WhitespaceChar}*"::" RECOGNIZE(_AXIS_FOLLOWING_SIBLING_); +"following"{WhitespaceChar}*"::" RECOGNIZE(_AXIS_FOLLOWING_); +"parent"{WhitespaceChar}*"::" RECOGNIZE(_AXIS_PARENT_); +"preceding-sibling"{WhitespaceChar}*"::" RECOGNIZE(_AXIS_PRECEDING_SIBLING_); +"preceding"{WhitespaceChar}*"::" RECOGNIZE(_AXIS_PRECEDING_); +"self"{WhitespaceChar}*"::" RECOGNIZE(_AXIS_SELF_); +"namespace"{WhitespaceChar}*"::" REJECT_XQUERY; RECOGNIZE(_AXIS_NAMESPACE_); + +"," { + switch(YYSTATE) { + case CLOSEKINDTEST: CHANGE_STATE(KINDTEST); break; + case THESAURUS2: + case STOPWORDS: break; + default: CHANGE_STATE(INITIAL); break; + } + RECOGNIZE(_COMMA_); + } +"if" REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(YYSTATE, _LPAR_);RECOGNIZE(_IF_); +"(" { + switch(YYSTATE) { + case INITIAL: + case ITEMTYPE: CHANGE_STATE(INITIAL); break; + case THESAURUS1: CHANGE_STATE(THESAURUS2); break; + case STOPWORDS: break; + } + RECOGNIZE(_LPAR_); + } +"-" CHANGE_STATE(INITIAL); RECOGNIZE(_MINUS_); +"at" { + REJECT_IF_XPATH; + REJECT_IF_NOT_TERMINATED; + switch(YYSTATE) { + case INITIAL: + case OPERATOR: + case ITEMTYPE: CHANGE_STATE(INITIAL); break; + case THESAURUS1: CHANGE_STATE(OPERATOR); break; + case STOPWORDS: + case THESAURUS2: break; + } + RECOGNIZE(_AT_KEYWORD_); + } +"+" { + if(YYSTATE==OCCURRENCEINDICATOR) + { + CHANGE_STATE(OPERATOR); RECOGNIZE(_ONE_OR_MORE_); + } + else + { + CHANGE_STATE(INITIAL); RECOGNIZE(_PLUS_); + } + } +"//" CHANGE_STATE(INITIAL); RECOGNIZE(_SLASHSLASH_); +"/" CHANGE_STATE(INITIAL); RECOGNIZE(_SLASH_); + +"then" REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_THEN_); +"else" REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_ELSE_); +"external" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_EXTERNAL_); +"and" REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_AND_); +":=" REJECT_NOT_XQUERY; CHANGE_STATE(INITIAL); RECOGNIZE(_COLON_EQ_); +"div" REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_DIV_); +"=" CHANGE_STATE(INITIAL); RECOGNIZE(_EQUALS_); +"except" { + REJECT_IF_NOT_TERMINATED; + switch(YYSTATE) { + case OPERATOR: + case ITEMTYPE: CHANGE_STATE(INITIAL); break; + case STOPWORDS: break; + } + RECOGNIZE(_EXCEPT_); + } +"eq" REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_FORTRAN_EQ_); +"ge" REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_FORTRAN_GE_); +"gt" REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_FORTRAN_GT_); +"le" REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_FORTRAN_LE_); +"lt" REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_FORTRAN_LT_); +"ne" REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_FORTRAN_NE_); +">=" CHANGE_STATE(INITIAL); RECOGNIZE(_GT_EQUALS_); +">>" CHANGE_STATE(INITIAL); RECOGNIZE(_GT_GT_); +">" CHANGE_STATE(INITIAL); RECOGNIZE(_GT_); +"idiv" REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_INTEGER_DIV_); +"intersect" REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_INTERSECT_); +"in" REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_IN_); +"is" REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_IS_); +"[" CHANGE_STATE(INITIAL); RECOGNIZE(_LBRACK_); +"<=" CHANGE_STATE(INITIAL); RECOGNIZE(_LT_EQUALS_); +"<<" CHANGE_STATE(INITIAL); RECOGNIZE(_LT_LT_); +"mod" REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_MOD_); +"!=" CHANGE_STATE(INITIAL); RECOGNIZE(_NOT_EQUALS_); +"order" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(ORDER, _BY_); CHANGE_STATE(ORDER); RECOGNIZE(_ORDER_); +"stable" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(YYSTATE, _ORDER_); RECOGNIZE(_STABLE_); +"by" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_BY_); +"or" REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_OR_); +"return" REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_RETURN_); +"satisfies" REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_SATISFIES_); +"to" REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_TO_); + +"ftcontains" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_FTCONTAINS_); +"||" REJECT_NOT_FULLTEXT; CHANGE_STATE(INITIAL); RECOGNIZE(_DOUBLE_VERTICAL_BAR_); +"&&" REJECT_NOT_FULLTEXT; CHANGE_STATE(INITIAL); RECOGNIZE(_DOUBLE_AMPERSAND_); +"not"{S}"in" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_NOT_IN_); +"!" REJECT_NOT_FULLTEXT; CHANGE_STATE(INITIAL); RECOGNIZE(_BANG_); +"lowercase" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_LOWERCASE_); +"uppercase" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_UPPERCASE_); +"case"{S}"sensitive" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_CASE_SENSITIVE_); +"case"{S}"insensitive" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_CASE_INSENSITIVE_); +"with"{S}"diacritics" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_WITH_DIACRITICS_); +"without"{S}"diacritics" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_WITHOUT_DIACRITICS_); +"diacritics"{S}"sensitive" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_DIACRITICS_SENSITIVE_); +"diacritics"{S}"insensitive" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_DIACRITICS_INSENSITIVE_); +"with"{S}"stemming" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_WITH_STEMMING_); +"without"{S}"stemming" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_WITHOUT_STEMMING_); +"language" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_LANGUAGE_); +"with"{S}"wildcards" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_WITH_WILDCARDS_); +"without"{S}"wildcards" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_WITHOUT_WILDCARDS_); +"at"{S}"start" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_AT_START_); +"at"{S}"end" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_AT_END_); +"entire"{S}"content" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_ENTIRE_CONTENT_); +"any"{S}"word" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_ANY_WORD_); +"any" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_ANY_); +"all"{S}"words" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_ALL_WORDS_); +"all" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_ALL_); +"phrase" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_PHRASE_); +"distance" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_DISTANCE_); +"window" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_WINDOW_); +"occurs" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_OCCURS_); +"same" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_SAME_); +"different" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_DIFFERENT_); +"sentence" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_SENTENCE_); +"paragraph" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_PARAGRAPH_); +"without"{S}"content" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_WITHOUT_CONTENT_); + +"with"{S}"thesaurus" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(THESAURUS1); RECOGNIZE(_WITH_THESAURUS_); +"without"{S}"thesaurus" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_WITHOUT_THESAURUS_); +"relationship" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; RECOGNIZE(_RELATIONSHIP_); +"levels" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; RECOGNIZE(_LEVELS_); + +"with"{S}"stop"{S}"words" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(STOPWORDS); RECOGNIZE(_WITH_STOP_WORDS_); +"without"{S}"stop"{S}"words" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_WITHOUT_STOP_WORDS_); +"with"{S}"default"{S}"stop"{S}"words" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(STOPWORDS); RECOGNIZE(_WITH_DEFAULT_STOP_WORDS_); + +"exactly" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_EXACTLY_); +"at"{S}"least" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_AT_LEAST_); +"at"{S}"most" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_AT_MOST_); +"from" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_FROM_); + +"times" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_TIMES_); +"words" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_WORDS_); +"sentences" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_SENTENCES_); +"paragraphs" REJECT_NOT_FULLTEXT; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_PARAGRAPHS_); + +"union" { + REJECT_IF_NOT_TERMINATED; + switch(YYSTATE) { + case OPERATOR: + case ITEMTYPE: CHANGE_STATE(INITIAL); break; + case STOPWORDS: break; + } + RECOGNIZE(_UNION_); + } +"|" CHANGE_STATE(INITIAL); RECOGNIZE(_VERTICAL_BAR_); +"where" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_WHERE_); +"preserve" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_PRESERVE_); +"strip" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_STRIP_); +"ordered" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(OPERATOR); RECOGNIZE(_ORDERING_ORDERED_); +"unordered" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_ORDERING_UNORDERED_); + +"castable" REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(SINGLETYPE, _AS_); CHANGE_STATE(SINGLETYPE); RECOGNIZE(_CASTABLE_); +"cast" REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(SINGLETYPE, _AS_); CHANGE_STATE(SINGLETYPE); RECOGNIZE(_CAST_); +"treat" REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(YYSTATE, _AS_); CHANGE_STATE(ITEMTYPE); RECOGNIZE(_TREAT_); +"as" { + REJECT_IF_NOT_TERMINATED; + if(YYSTATE!=SINGLETYPE) + { + REJECT_NOT_XQUERY; + CHANGE_STATE(ITEMTYPE); + } + RECOGNIZE(_AS_); + } + +"instance" REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(ITEMTYPE, _OF_); CHANGE_STATE(ITEMTYPE); RECOGNIZE(_INSTANCE_); +"of" REJECT_IF_NOT_TERMINATED; RECOGNIZE(_OF_); +"case" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(ITEMTYPE); RECOGNIZE(_CASE_); + +"?" CHANGE_STATE(OPERATOR); RECOGNIZE(_ZERO_OR_ONE_); + +"]" RECOGNIZE(_RBRACK_); +"collation" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; RECOGNIZE(_COLLATION_); +"ascending" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; RECOGNIZE(_ASCENDING_); +"descending" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; RECOGNIZE(_DESCENDING_); +"default" { + REJECT_IF_XPATH; + REJECT_IF_NOT_TERMINATED; + if(YYSTATE==THESAURUS1) CHANGE_STATE(OPERATOR); + RECOGNIZE(_DEFAULT_); + } + +"=" RECOGNIZE(_EQUALS_); +{NCName} REJECT_IF_NOT_TERMINATED; yylval.str=allocate_string((XMLCh*)yytext); RECOGNIZE(_NCNAME_); + +"namespace" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(NAMESPACEDECL); RECOGNIZE(_NAMESPACE_); + +"preserve" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_PRESERVE_); +"strip" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_STRIP_); + +"preserve" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; RECOGNIZE(_PRESERVE_); +"no-preserve" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; RECOGNIZE(_NO_PRESERVE_); +"," RECOGNIZE(_COMMA_); +"inherit" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_INHERIT_); +"no-inherit" REJECT_NOT_XQUERY; REJECT_IF_NOT_TERMINATED; CHANGE_STATE(INITIAL); RECOGNIZE(_NO_INHERIT_); + +"empty-sequence" REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(EMPTY_PARENS, _LPAR_); CHANGE_STATE(EMPTY_PARENS); RECOGNIZE(_EMPTY_); +"item" REJECT_IF_NOT_TERMINATED; REJECT_IF_NOT_FOLLOWED1(EMPTY_PARENS, _LPAR_); CHANGE_STATE(EMPTY_PARENS); RECOGNIZE(_ITEM_); +"(" RECOGNIZE(_LPAR_); +")" CHANGE_STATE(OCCURRENCEINDICATOR); RECOGNIZE(_RPAR_); + +"?" RECOGNIZE(_NILLABLE_); + +{Char} { + undoUserAction(); + CHANGE_STATE(OPERATOR); + yyless(0); + } + +"/>" POP(); RECOGNIZE(_EMPTY_TAG_CLOSE_); + +">" CHANGE_STATE(ELEMENT_CONTENT); RECOGNIZE(_TAG_CLOSE_); + +["] { + if(YYSTATE==ATTRIBUTE_DECL) + { + CHANGE_STATE(QUOT_ATTRIBUTE_CONTENT); RECOGNIZE(_OPEN_QUOT_); + } + else if(YYSTATE==QUOT_ATTRIBUTE_CONTENT) + { + CHANGE_STATE(ATTRIBUTE_DECL); RECOGNIZE(_CLOSE_QUOT_); + } + } +['] { + if(YYSTATE==ATTRIBUTE_DECL) + { + CHANGE_STATE(APOS_ATTRIBUTE_CONTENT); RECOGNIZE(_OPEN_APOS_); + } + else if(YYSTATE==APOS_ATTRIBUTE_CONTENT) + { + CHANGE_STATE(ATTRIBUTE_DECL); RECOGNIZE(_CLOSE_APOS_); + } + } + +"=" RECOGNIZE(_VALUE_INDICATOR_); + +"{PredefinedEntityRef} yylval.str=allocate_string((XMLCh*)yytext, yyleng); RECOGNIZE(_PREDEFINED_ENTITY_REF_); +{CharRef} checkCharRef((XMLCh*)yytext, yyleng); yylval.str=allocate_string((XMLCh*)yytext, yyleng); RECOGNIZE(_CHAR_REF_); +"{{" RECOGNIZE(_LCURLY_BRACE_ESCAPE_); +"}}" RECOGNIZE(_RCURLY_BRACE_ESCAPE_); + +{WhitespaceChar}*">" POP(); RECOGNIZE(_TAG_CLOSE_); + +":)" endComment(); POP(); if(m_bReportWhiteSpace) RECOGNIZE(_XQUERY_COMMENT_); + +{PITarget} { + yylval.str=allocate_string((XMLCh*)yytext); + CHANGE_STATE(PROCESSING_INSTRUCTION_CONTENT); RECOGNIZE(_PI_TARGET_); + } + +"?>" { + yylval.str=(XMLCh*)XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString; + POP(); + RECOGNIZE(_PROCESSING_INSTRUCTION_CONTENT_); + } +{S}{PIContent}"?>" { + yylval.str=allocate_string((XMLCh*)yytext,XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen((XMLCh*)yytext)-2); + while(iswspace(*yylval.str)) yylval.str++; + POP(); + RECOGNIZE(_PROCESSING_INSTRUCTION_CONTENT_); + } + + +{EscapeQuot} RECOGNIZE(_ESCAPE_QUOT_); + +{EscapeApos} RECOGNIZE(_ESCAPE_APOS_); + +{Char} if(m_bReportWhiteSpace) RECOGNIZE(_XQUERY_COMMENT_); +{Char} { + if(*yytext=='&' || *yytext=='<' || *yytext=='{' || *yytext=='}') + return error("Character not allowed in content"); + if(YYSTATE==QUOT_ATTRIBUTE_CONTENT && *yytext=='"') + return error("Character not allowed in content"); + if(YYSTATE==APOS_ATTRIBUTE_CONTENT && *yytext=='\'') + return error("Character not allowed in content"); + yylval.str=allocate_string((XMLCh*)yytext); + RECOGNIZE(_CHAR_); + } + +{QName}{WhitespaceChar}*"(" { + REJECT_IF_COLON; + + XMLCh* beginning=yylval.str=allocate_string((XMLCh*)yytext); + while(*beginning!='(' && !iswspace(*beginning)) beginning++; + *beginning=0; + + static const XMLCh attribute_str[] = { 'a', 't', 't', 'r', 'i', 'b', 'u', 't', 'e', 0 }; + static const XMLCh comment_str[] = { 'c', 'o', 'm', 'm', 'e', 'n', 't', 0 }; + static const XMLCh document_node_str[] = { 'd', 'o', 'c', 'u', 'm', 'e', 'n', 't', '-', 'n', 'o', 'd', 'e', 0 }; + static const XMLCh element_str[] = { 'e', 'l', 'e', 'm', 'e', 'n', 't', 0 }; + static const XMLCh item_str[] = { 'i', 't', 'e', 'm', 0 }; + static const XMLCh if_str[] = { 'i', 'f', 0 }; + static const XMLCh node_str[] = { 'n', 'o', 'd', 'e', 0 }; + static const XMLCh processing_instruction_str[] = { 'p', 'r', 'o', 'c', 'e', 's', 's', 'i', 'n', 'g', '-', 'i', 'n', 's', 't', 'r', 'u', 'c', 't', 'i', 'o', 'n', 0 }; + static const XMLCh schema_attribute_str[] = { 's', 'c', 'h', 'e', 'm', 'a', '-', 'a', 't', 't', 'r', 'i', 'b', 'u', 't', 'e', 0 }; + static const XMLCh schema_element_str[] = { 's', 'c', 'h', 'e', 'm', 'a', '-', 'e', 'l', 'e', 'm', 'e', 'n', 't', 0 }; + static const XMLCh text_str[] = { 't', 'e', 'x', 't', 0 }; + static const XMLCh typeswitch_str[] = { 't', 'y', 'p', 'e', 's', 'w', 'i', 't', 'c', 'h', 0 }; + static const XMLCh void_str[] = { 'v', 'o', 'i', 'd', 0 }; + + // reject reserved names + if(XPath2Utils::equals(yylval.str,attribute_str) || + XPath2Utils::equals(yylval.str,comment_str) || + XPath2Utils::equals(yylval.str,document_node_str) || + XPath2Utils::equals(yylval.str,element_str) || + XPath2Utils::equals(yylval.str,item_str) || + XPath2Utils::equals(yylval.str,if_str) || + XPath2Utils::equals(yylval.str,node_str) || + XPath2Utils::equals(yylval.str,processing_instruction_str) || + XPath2Utils::equals(yylval.str,schema_attribute_str) || + XPath2Utils::equals(yylval.str,schema_element_str) || + XPath2Utils::equals(yylval.str,text_str) || + XPath2Utils::equals(yylval.str,typeswitch_str) || + XPath2Utils::equals(yylval.str,void_str)) + { + undoUserAction(); + REJECT; + } + + RECOGNIZE(_FUNCTION_CALL_); + } +{QName} { + REJECT_IF_NOT_TERMINATED; + yylval.str=allocate_string((XMLCh*)yytext); + switch(YYSTATE) + { + case INITIAL: + case SINGLETYPE: CHANGE_STATE(OPERATOR); RECOGNIZE(_QNAME_); + case ITEMTYPE: CHANGE_STATE(OCCURRENCEINDICATOR); RECOGNIZE(_QNAME_); + case KINDTEST: CHANGE_STATE(CLOSEKINDTEST); RECOGNIZE(_QNAME_); + case VARNAME: CHANGE_STATE(OPERATOR); RECOGNIZE(_VARIABLE_); + case START_TAG: CHANGE_STATE(ATTRIBUTE_DECL); RECOGNIZE(_TAG_NAME_); + case ATTRIBUTE_DECL: RECOGNIZE(_ATTRIBUTE_NAME_); + case END_TAG: RECOGNIZE(_TAG_NAME_); + } + } + +<*><> { + if(m_bGenerateEOF) + { + m_bGenerateEOF=false; + RECOGNIZE(_EOF_); + } + return 0; + } + +<*>[\x0000-\xFFFF] { + char buff[128]; + sprintf(buff,"Unrecognized character '%c' (0x%X)",yytext[0],yytext[0]); + return error(buff); + } + +%% diff --git a/src/lexer/XQillaLexer.hpp b/src/lexer/XQillaLexer.hpp new file mode 100644 index 00000000..544fd2dc --- /dev/null +++ b/src/lexer/XQillaLexer.hpp @@ -0,0 +1,360 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQillaLexer.hpp,v 1.10 2006/11/01 16:37:21 jpcs Exp $ + */ + +#ifndef XQILLA_LEXER_H +#define XQILLA_LEXER_H + +#define YY_CHAR unsigned short + +#include +#include + +#include +#include +#include +#include +#include + +typedef struct yyltype +{ + int first_line; + int first_column; + + int last_line; + int last_column; + + int first_offset; + int last_offset; +} yyltype; +#define YYLTYPE yyltype +#define YYLTYPE_IS_DECLARED 1 +#define YYLTYPE_IS_TRIVIAL 1 + +#define YY_USER_ACTION userAction(yytext, yyleng); + +#define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (N) \ + { \ + (Current).first_line = (Rhs)[1].first_line; \ + (Current).first_column = (Rhs)[1].first_column; \ + (Current).last_line = (Rhs)[N].last_line; \ + (Current).last_column = (Rhs)[N].last_column; \ + (Current).first_offset = (Rhs)[1].first_offset; \ + (Current).last_offset = (Rhs)[N].last_offset; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + (Rhs)[0].last_line; \ + (Current).first_column = (Current).last_column = \ + (Rhs)[0].last_column; \ + (Current).first_offset = (Current).last_offset = \ + (Rhs)[0].last_offset; \ + } \ + while (0) + +class XQILLA_API CXQillaLexer +{ +public: + virtual ~CXQillaLexer() {} + CXQillaLexer(XPath2MemoryManager* memMgr, const XMLCh *queryFile, const XMLCh* query, XQilla::Language lang) + { + m_index=m_position=0; + m_lineno=m_columnno=1; + m_memMgr=memMgr; + m_szQueryFile=queryFile; + m_szQuery=XPath2Utils::normalizeEOL(query, m_memMgr); + m_nLength=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(m_szQuery); + m_nOpenComments=0; + m_bGenerateEOF=m_bReportWhiteSpace=false; + m_bGenerateErrorException=true; + m_language = lang; + } + + const XMLCh* getQueryString() { return m_szQuery; } + void setGenerateEOF(bool bEnable) { m_bGenerateEOF=bEnable; } + void setGenerateWhiteSpace(bool bEnable) { m_bReportWhiteSpace=bEnable; } + void setGenerateErrorException(bool bEnable) { m_bGenerateErrorException=bEnable; } + + virtual int error(const char* message) + { + Error(message, m_lineno, m_columnno); + return 0; + } + + virtual int error(const yyltype &pos, const char* message) + { + Error(message, pos.first_line, pos.first_column); + return 0; + } + + virtual int error(XQilla::Language lang, const char* where, unsigned int line, unsigned int column) + { + Error(lang, where, line, column); + return 0; + } + + virtual void beginComment() + { + m_nOpenComments++; + } + virtual void endComment() + { + if(m_nOpenComments==0) + { + error("Unbalanced comment found"); + return; + } + m_nOpenComments--; + } + bool isCommentClosed() + { + return m_nOpenComments==0; + } + + XMLCh* allocate_string(const XMLCh* src, int len=-1) + { + if(len==-1) + return (XMLCh*)m_memMgr->getPooledString(src); + return (XMLCh*)XPath2Utils::subString(src,0,len,m_memMgr); + } + + void checkCharRef(XMLCh* text, int len) + { + if(len<2 || text[0]!=XERCES_CPP_NAMESPACE_QUALIFIER chAmpersand || text[1]!=XERCES_CPP_NAMESPACE_QUALIFIER chPound) + { + error("Invalid entity reference"); + return; + } + if(text[len-1]!=XERCES_CPP_NAMESPACE_QUALIFIER chSemiColon) + { + error("Unterminated entity reference"); + return; + } + int i=2; + unsigned int radix = 10; + if(text[i]==XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x) + { + i++; + radix=16; + } + unsigned int value = 0; + for(int q=i;q= XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0) && (nextCh <= XERCES_CPP_NAMESPACE_QUALIFIER chDigit_9)) + nextVal = (unsigned int)(nextCh - XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0); + else if ((nextCh >= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_A) && (nextCh <= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_F)) + nextVal= (unsigned int)(10 + (nextCh - XERCES_CPP_NAMESPACE_QUALIFIER chLatin_A)); + else if ((nextCh >= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a) && (nextCh <= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f)) + nextVal = (unsigned int)(10 + (nextCh - XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a)); + else + { + error("Unterminated entity reference"); + return; + } + if (nextVal >= radix) + { + error("Invalid digit inside entity reference"); + return; + } + else + value = (value * radix) + nextVal; + } + if(!XERCES_CPP_NAMESPACE_QUALIFIER XMLChar1_0::isXMLChar(value)) + error("Entity reference is not a valid XML character [err:XQST0090]"); + } + + XMLCh* allocate_string_and_unescape(XMLCh toBeUnescaped, const XMLCh* src, int len) + { + int j=0; + XMLCh* dst=(XMLCh*)m_memMgr->allocate((len+1)*sizeof(XMLCh)); + for(int i=0;i= XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0) && (nextCh <= XERCES_CPP_NAMESPACE_QUALIFIER chDigit_9)) + nextVal = (unsigned int)(nextCh - XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0); + else if ((nextCh >= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_A) && (nextCh <= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_F)) + nextVal= (unsigned int)(10 + (nextCh - XERCES_CPP_NAMESPACE_QUALIFIER chLatin_A)); + else if ((nextCh >= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a) && (nextCh <= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_f)) + nextVal = (unsigned int)(10 + (nextCh - XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a)); + else + error("Invalid character inside entity reference"); + if (nextVal >= radix) + error("Invalid digit inside entity reference"); + else + value = (value * radix) + nextVal; + } + if(!XERCES_CPP_NAMESPACE_QUALIFIER XMLChar1_0::isXMLChar(value)) + error("Entity reference is not a valid XML character"); + else + { + if (value <= 0xFFFD) + dst[j++]=value; + else if (value >= 0x10000 && value <= 0x10FFFF) + { + value -= 0x10000; + dst[j++]= XMLCh((value >> 10) + 0xD800); + dst[j++]= XMLCh((value & 0x3FF) + 0xDC00); + } + } + i=k; + } + } else + error("Invalid entity reference"); + } + else + dst[j++]=src[i]; + if(src[i]==toBeUnescaped && (i+1)max_size) + nToRead=max_size; + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::subString((XMLCh*)buf,m_szQuery,m_position,m_position+nToRead); + m_position+=nToRead; + return nToRead; + } + + virtual void Error( const char* msg, int line, int col ) + { + if(!m_bGenerateErrorException) + return; + if(strstr(msg, "[err:")!=NULL) + XQSimpleThrow(X(msg), m_szQueryFile, m_lineno, m_columnno); + const XMLCh* szMsg=XPath2Utils::concatStrings(X(msg), X(" [err:XPST0003]"), m_memMgr); + XQSimpleThrow(szMsg, m_szQueryFile, m_lineno, m_columnno); + } + + virtual void Error(XQilla::Language lang, const char *where, unsigned int line, unsigned int col) + { + if(!m_bGenerateErrorException) + return; + char *l; + switch(lang) { + case XQilla::XQUERY: l = "XQuery"; break; + case XQilla::XPATH2: l = "XPath 2.0"; break; + case XQilla::XQUERY_FULLTEXT: l = "XQuery Full-Text"; break; + case XQilla::XPATH2_FULLTEXT: l = "XPath 2.0 Full-Text"; break; + } + + const XMLCh *szMsg = XPath2Utils::concatStrings(X("Invalid "), X(l), X(" syntax: "), m_memMgr); + szMsg = XPath2Utils::concatStrings(szMsg, X(where), X(" [err:XPST0003]"), m_memMgr); + XQSimpleThrow(szMsg, m_szQueryFile, line, col); + } + + virtual void userAction(YY_CHAR* text, int length) + { + m_yyloc.first_line=m_lineno; m_yyloc.first_column=m_columnno; m_yyloc.first_offset=m_index; + m_index+=length; + for(int i=0;i +%* + + +/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ +#ifdef c_plusplus +#ifndef __cplusplus +#define __cplusplus +#endif +#endif + + +#ifdef __cplusplus + +#include +%+ +#include +%* + +/* Use prototypes in function declarations. */ +#define YY_USE_PROTOS + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +#if __STDC__ + +#define YY_USE_PROTOS +#define YY_USE_CONST + +#endif /* __STDC__ */ +#endif /* ! __cplusplus */ + +#ifdef __TURBOC__ + #pragma warn -rch + #pragma warn -use +#include +#include +#define YY_USE_CONST +#define YY_USE_PROTOS +#endif + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + + +#ifdef YY_USE_PROTOS +#define YY_PROTO(proto) proto +#else +#define YY_PROTO(proto) () +#endif + +%% YY_CHAR and YY_SC_TO_UI() go here + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN yy_start = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START ((yy_start - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart( yyin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#define YY_BUF_SIZE 16384 + +typedef struct yy_buffer_state *YY_BUFFER_STATE; + +extern int yyleng; +%- +extern FILE *yyin, *yyout; +%* + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + +/* The funky do-while in the following #define is used to turn the definition + * int a single C statement (which needs a semi-colon terminator). This + * avoids problems with code like: + * + * if ( condition_holds ) + * yyless( 5 ); + * else + * do_something_else(); + * + * Prior to using the do-while the compiler would get upset at the + * "else" because it interpreted the "if" statement as being all + * done when it reached the ';' after the yyless() call. + */ + +/* Return all but the first 'n' matched characters back to the input stream. */ + +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + *yy_cp = yy_hold_char; \ + YY_RESTORE_YY_MORE_OFFSET \ + yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, yytext_ptr ) + +/* The following is because we cannot portably get our hands on size_t + * (without autoconf's help, which isn't available because we want + * flex-generated scanners to compile on their own). + */ +typedef unsigned int yy_size_t; + + +struct yy_buffer_state + { +%- + FILE *yy_input_file; +%+ + std::istream* yy_input_file; +%* + + YY_CHAR *yy_ch_buf; /* input buffer */ + YY_CHAR *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + }; + +%- Standard (non-C++) definition +static YY_BUFFER_STATE yy_current_buffer = 0; +%* + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + */ +#define YY_CURRENT_BUFFER yy_current_buffer + + +%- Standard (non-C++) definition +/* yy_hold_char holds the character lost when yytext is formed. */ +static YY_CHAR yy_hold_char; + +static int yy_n_chars; /* number of characters read into yy_ch_buf */ + + +int yyleng; + +/* Points to current character in buffer. */ +static YY_CHAR *yy_c_buf_p = (YY_CHAR *) 0; +static int yy_init = 1; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart YY_PROTO(( FILE *input_file )); + +void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); +void yy_load_buffer_state YY_PROTO(( void )); +YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); +void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); +void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); +void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); +#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) + +YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( YY_CHAR *base, yy_size_t size )); +YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst YY_CHAR *yy_str )); + +/* This is the old yy_scan_bytes function - renamed to avoid + * confusion since a character may now be 1 or 2 bytes. + */ +YY_BUFFER_STATE yy_scan_chars YY_PROTO(( yyconst YY_CHAR *chars, int len )); +%* + +static void *yy_flex_alloc YY_PROTO(( yy_size_t )); +static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); +static void yy_flex_free YY_PROTO(( void * )); + +#define yy_new_buffer yy_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! yy_current_buffer ) \ + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ + yy_current_buffer->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! yy_current_buffer ) \ + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ + yy_current_buffer->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) + +%% yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here + +%- Standard (non-C++) definition +static yy_state_type yy_get_previous_state YY_PROTO(( void )); +static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); +static int yy_get_next_buffer YY_PROTO(( void )); +static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); +%* + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + yytext_ptr = yy_bp; \ +%% code to fiddle yytext and yyleng for yymore() goes here + yy_hold_char = *yy_cp; \ + *yy_cp = (YY_CHAR) '\0'; \ +%% code to copy yytext_ptr to yytext[] goes here, if %array + yy_c_buf_p = yy_cp; + +%% data tables for the DFA and the user's section 1 definitions go here + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap YY_PROTO(( void )); +#else +extern int yywrap YY_PROTO(( void )); +#endif +#endif + +%- +#ifndef YY_NO_UNPUT +static void yyunput YY_PROTO(( int c, YY_CHAR *buf_ptr )); +#endif +%* + +#ifndef yytext_ptr +static void yy_flex_strncpy YY_PROTO(( YY_CHAR *, yyconst YY_CHAR *, int )); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen YY_PROTO(( yyconst YY_CHAR * )); +#endif + +#ifndef YY_NO_INPUT +%- Standard (non-C++) definition +#ifdef __cplusplus +static int yyinput YY_PROTO(( void )); +#else +static int input YY_PROTO(( void )); +#endif +%* +#endif + +#if YY_STACK_USED +#ifndef YY_NO_PUSH_STATE +/* static void yy_push_state YY_PROTO(( int new_state )); */ +#endif +#ifndef YY_NO_POP_STATE +/* static void yy_pop_state YY_PROTO(( void )); */ +#endif +#ifndef YY_NO_TOP_STATE +/* static int yy_top_state YY_PROTO(( void )); */ +#endif + +#else +#define YY_NO_PUSH_STATE 1 +#define YY_NO_POP_STATE 1 +#define YY_NO_TOP_STATE 1 +#endif + +#ifdef YY_MALLOC_DECL +YY_MALLOC_DECL +#else +#if __STDC__ +#ifndef __cplusplus +#include +#endif +#else +/* Just try to get by without declaring the routines. This will fail + * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) + * or sizeof(void*) != sizeof(int). + */ +#endif +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ + +#ifndef ECHO +%- Standard (non-C++) definition +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO (void) fwrite( yytext, sizeof( YY_CHAR ), yyleng, yyout ) +%+ C++ definition +#define ECHO LexerOutput( yytext, yyleng ) +%* +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ +%% fread()/read() definition of YY_INPUT goes here unless we're doing C++ +%+ C++ definition + if ( (result = LexerInput( buf, max_size )) < 0 ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); +%* +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +%- +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +%+ +#define YY_FATAL_ERROR(msg) LexerError( msg ) +%* +#endif + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +%- Standard (non-C++) definition +#define YY_DECL int yylex YY_PROTO(( void )) +%+ C++ definition +#define YY_DECL int yyFlexLexer::yylex() +%* +#endif + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +%% YY_RULE_SETUP definition goes here + +YY_DECL + { + register yy_state_type yy_current_state; + register YY_CHAR *yy_cp, *yy_bp; + register int yy_act; + +%% user's declarations go here + + if ( yy_init ) + { + yy_init = 0; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! yy_start ) + yy_start = 1; /* first start state */ + + if ( ! yyin ) +%- + yyin = stdin; +%+ + yyin = &std::cin; +%* + + if ( ! yyout ) +%- + yyout = stdout; +%+ + yyout = &std::cout; +%* + + if ( ! yy_current_buffer ) + yy_current_buffer = + yy_create_buffer( yyin, YY_BUF_SIZE ); + + yy_load_buffer_state(); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { +%% yymore()-related code goes here + yy_cp = yy_c_buf_p; + + /* Support of yytext. */ + *yy_cp = yy_hold_char; + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + +%% code to set up and find next match goes here + +yy_find_action: +%% code to find the action number goes here + + YY_DO_BEFORE_ACTION; + +%% code for yylineno update goes here + +do_action: /* This label is used only to access EOF actions. */ + +%% debug code goes here + + switch ( yy_act ) + { /* beginning of action switch */ +%% actions go here + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = yy_hold_char; + YY_RESTORE_YY_MORE_OFFSET + + if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between yy_current_buffer and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + yy_n_chars = yy_current_buffer->yy_n_chars; + yy_current_buffer->yy_input_file = yyin; + yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state(); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = yytext_ptr + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++yy_c_buf_p; + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { +%% code to do back-up for compressed tables and set up yy_cp goes here + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer() ) + { + case EOB_ACT_END_OF_FILE: + { + yy_did_buffer_switch_on_eof = 0; + + if ( yywrap() ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + yy_c_buf_p = + yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state(); + + yy_cp = yy_c_buf_p; + yy_bp = yytext_ptr + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + yy_c_buf_p = + &yy_current_buffer->yy_ch_buf[yy_n_chars]; + + yy_current_state = yy_get_previous_state(); + + yy_cp = yy_c_buf_p; + yy_bp = yytext_ptr + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ + } /* end of yylex */ + +%+ +yyFlexLexer::yyFlexLexer( std::istream* arg_yyin, std::ostream* arg_yyout ) + { + yyin = arg_yyin; + yyout = arg_yyout; + yy_c_buf_p = 0; + yy_init = 1; + yy_start = 0; + yy_flex_debug = 0; + yylineno = 1; // this will only get updated if %option yylineno + + yy_did_buffer_switch_on_eof = 0; + + yy_looking_for_trail_begin = 0; + yy_more_flag = 0; + yy_more_len = 0; + yy_more_offset = yy_prev_more_offset = 0; + + yy_start_stack_ptr = yy_start_stack_depth = 0; + yy_start_stack = 0; + + yy_current_buffer = 0; + +#ifdef YY_USES_REJECT + yy_state_buf = new yy_state_type[YY_BUF_SIZE + 2]; +#else + yy_state_buf = 0; +#endif + } + +yyFlexLexer::~yyFlexLexer() + { + delete [] yy_state_buf; + yy_delete_buffer( yy_current_buffer ); + if(yy_start_stack) + yy_flex_free(yy_start_stack); + } + +#ifdef YY_INTERACTIVE +int yyFlexLexer::LexerInput( YY_CHAR* buf, int /* max_size */ ) +#else +int yyFlexLexer::LexerInput( YY_CHAR* buf, int max_size ) +#endif + { + if ( yyin->eof() || yyin->fail() ) + return 0; + +#ifdef YY_INTERACTIVE + (void) yyin->read((char *) buf, sizeof( YY_CHAR ) ); + + if ( yyin->eof() ) + return 0; + + if ( yyin->bad() ) + return -1; + + return 1; + +#else + (void) yyin->read((char *) buf, max_size * sizeof( YY_CHAR ) ); + + if ( yyin->bad() ) + return -1; + else + return ( yyin->gcount() / sizeof( YY_CHAR ) ); +#endif + } + +void yyFlexLexer::LexerOutput( const YY_CHAR* buf, int size ) + { + (void) yyout->write((char *) buf, size * sizeof( YY_CHAR ) ); + } +%* + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ + +%- +static int yy_get_next_buffer() +%+ +int yyFlexLexer::yy_get_next_buffer() +%* + { + register YY_CHAR *dest = yy_current_buffer->yy_ch_buf; + register YY_CHAR *source = yytext_ptr; + register int number_to_move, i; + int ret_val; + + if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( yy_current_buffer->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + yy_current_buffer->yy_n_chars = yy_n_chars = 0; + + else + { + int num_to_read = + yy_current_buffer->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ +#ifdef YY_USES_REJECT + YY_FATAL_ERROR( +"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); +#else + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = yy_current_buffer; + + int yy_c_buf_p_offset = + (int) (yy_c_buf_p - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (YY_CHAR *) + /* Include room in for 2 EOB chars. */ + yy_flex_realloc( (void *) b->yy_ch_buf, + ( b->yy_buf_size + 2 ) * + sizeof( YY_CHAR ) ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = yy_current_buffer->yy_buf_size - + number_to_move - 1; +#endif + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), + yy_n_chars, num_to_read ); + + yy_current_buffer->yy_n_chars = yy_n_chars; + } + + if ( yy_n_chars == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart( yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + yy_current_buffer->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + yy_n_chars += number_to_move; + yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; + yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; + + yytext_ptr = &yy_current_buffer->yy_ch_buf[0]; + + return ret_val; + } + + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + +%- +static yy_state_type yy_get_previous_state() +%+ +yy_state_type yyFlexLexer::yy_get_previous_state() +%* + { + register yy_state_type yy_current_state; + register YY_CHAR *yy_cp; + +%% code to get the start state into yy_current_state goes here + + for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) + { +%% code to find the next state goes here + } + + return yy_current_state; + } + + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + +%- +#ifdef YY_USE_PROTOS +static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) +#else +static yy_state_type yy_try_NUL_trans( yy_current_state ) +yy_state_type yy_current_state; +#endif +%+ +yy_state_type yyFlexLexer::yy_try_NUL_trans( yy_state_type yy_current_state ) +%* + { + register int yy_is_jam; +%% code to find the next state, and perhaps do backing up, goes here + + return yy_is_jam ? 0 : yy_current_state; + } + + +%- +#ifndef YY_NO_UNPUT +#ifdef YY_USE_PROTOS +static void yyunput( int c, register YY_CHAR *yy_bp ) +#else +static void yyunput( c, yy_bp ) +int c; +register YY_CHAR *yy_bp; +#endif +%+ +void yyFlexLexer::yyunput( int c, register YY_CHAR * yy_bp ) +%* + { + register YY_CHAR *yy_cp = yy_c_buf_p; + + /* undo effects of setting up yytext */ + *yy_cp = yy_hold_char; + + if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + register int number_to_move = yy_n_chars + 2; + register YY_CHAR *dest = &yy_current_buffer->yy_ch_buf[ + yy_current_buffer->yy_buf_size + 2]; + register YY_CHAR *source = + &yy_current_buffer->yy_ch_buf[number_to_move]; + + while ( source > yy_current_buffer->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + yy_current_buffer->yy_n_chars = + yy_n_chars = yy_current_buffer->yy_buf_size; + + if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (YY_CHAR) c; + +%% update yylineno here + + yytext_ptr = yy_bp; + yy_hold_char = *yy_cp; + yy_c_buf_p = yy_cp; + } +%- +#endif /* ifndef YY_NO_UNPUT */ +%* + + +%- +#ifdef __cplusplus +static int yyinput() +#else +static int input() +#endif +%+ +int yyFlexLexer::yyinput() +%* + { + int c; + + *yy_c_buf_p = yy_hold_char; + + if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) + /* This was really a NUL. */ + *yy_c_buf_p = (YY_CHAR) '\0'; + + else + { /* need more input */ + int offset = yy_c_buf_p - yytext_ptr; + ++yy_c_buf_p; + + switch ( yy_get_next_buffer() ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart( yyin ); + + /* fall through */ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap() ) + return EOF; + + if ( ! yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + yy_c_buf_p = yytext_ptr + offset; + break; + } + } + } + + c = YY_SC_TO_UI(*yy_c_buf_p); + *yy_c_buf_p = (YY_CHAR) '\0'; /* preserve yytext */ + yy_hold_char = *++yy_c_buf_p; + +%% update BOL and yylineno + + return c; + } + + +%- +#ifdef YY_USE_PROTOS +void yyrestart( FILE *input_file ) +#else +void yyrestart( input_file ) +FILE *input_file; +#endif +%+ +void yyFlexLexer::yyrestart( std::istream* input_file ) +%* + { + if ( ! yy_current_buffer ) + yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); + + yy_init_buffer( yy_current_buffer, input_file ); + yy_load_buffer_state(); + } + + +%- +#ifdef YY_USE_PROTOS +void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) +#else +void yy_switch_to_buffer( new_buffer ) +YY_BUFFER_STATE new_buffer; +#endif +%+ +void yyFlexLexer::yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) +%* + { + if ( yy_current_buffer == new_buffer ) + return; + + if ( yy_current_buffer ) + { + /* Flush out information for old buffer. */ + *yy_c_buf_p = yy_hold_char; + yy_current_buffer->yy_buf_pos = yy_c_buf_p; + yy_current_buffer->yy_n_chars = yy_n_chars; + } + + yy_current_buffer = new_buffer; + yy_load_buffer_state(); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + yy_did_buffer_switch_on_eof = 1; + } + + +%- +#ifdef YY_USE_PROTOS +void yy_load_buffer_state( void ) +#else +void yy_load_buffer_state() +#endif +%+ +void yyFlexLexer::yy_load_buffer_state() +%* + { + yy_n_chars = yy_current_buffer->yy_n_chars; + yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; + yyin = yy_current_buffer->yy_input_file; + yy_hold_char = *yy_c_buf_p; + } + + +%- +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) +#else +YY_BUFFER_STATE yy_create_buffer( file, size ) +FILE *file; +int size; +#endif +%+ +YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( std::istream* file, int size ) +%* + { + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (YY_CHAR *) yy_flex_alloc( + ( b->yy_buf_size + 2 ) * sizeof( YY_CHAR ) ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer( b, file ); + + return b; + } + + +%- +#ifdef YY_USE_PROTOS +void yy_delete_buffer( YY_BUFFER_STATE b ) +#else +void yy_delete_buffer( b ) +YY_BUFFER_STATE b; +#endif +%+ +void yyFlexLexer::yy_delete_buffer( YY_BUFFER_STATE b ) +%* + { + if ( ! b ) + return; + + if ( b == yy_current_buffer ) + yy_current_buffer = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yy_flex_free( (void *) b->yy_ch_buf ); + + yy_flex_free( (void *) b ); + } + + +%- +#ifndef YY_ALWAYS_INTERACTIVE +#ifndef YY_NEVER_INTERACTIVE +extern int isatty YY_PROTO(( int )); +#endif +#endif + +#ifdef YY_USE_PROTOS +void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) +#else +void yy_init_buffer( b, file ) +YY_BUFFER_STATE b; +FILE *file; +#endif + +%+ +extern "C" int isatty YY_PROTO(( int )); +void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, std::istream* file ) +%* + + { + yy_flush_buffer( b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + +%- +#if YY_ALWAYS_INTERACTIVE + b->yy_is_interactive = 1; +#else +#if YY_NEVER_INTERACTIVE + b->yy_is_interactive = 0; +#else + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; +#endif +#endif +%+ + b->yy_is_interactive = 0; +%* + } + + +%- +#ifdef YY_USE_PROTOS +void yy_flush_buffer( YY_BUFFER_STATE b ) +#else +void yy_flush_buffer( b ) +YY_BUFFER_STATE b; +#endif + +%+ +void yyFlexLexer::yy_flush_buffer( YY_BUFFER_STATE b ) +%* + { + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == yy_current_buffer ) + yy_load_buffer_state(); + } +%* + + +#ifndef YY_NO_SCAN_BUFFER +%- +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_buffer( YY_CHAR *base, yy_size_t size ) +#else +YY_BUFFER_STATE yy_scan_buffer( base, size ) +YY_CHAR *base; +yy_size_t size; +#endif + { + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer( b ); + + return b; + } +%* +#endif + + +#ifndef YY_NO_SCAN_STRING +%- +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_string( yyconst YY_CHAR *yy_str ) +#else +YY_BUFFER_STATE yy_scan_string( yy_str ) +yyconst YY_CHAR *yy_str; +#endif + { + int len; + for ( len = 0; yy_str[len]; ++len ) + ; + + return yy_scan_chars( yy_str, len ); + } +%* +#endif + + +#ifndef YY_NO_SCAN_BYTES +%- +#ifdef YY_USE_PROTOS +YY_BUFFER_STATE yy_scan_chars( yyconst YY_CHAR *chars, int len ) +#else +YY_BUFFER_STATE yy_scan_chars( chars, len ) +yyconst YY_CHAR *chars; +int len; +#endif + { + YY_BUFFER_STATE b; + YY_CHAR *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = len + 2; + buf = (YY_CHAR *) yy_flex_alloc( n * sizeof( YY_CHAR ) ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_chars()" ); + + for ( i = 0; i < len; ++i ) + buf[i] = chars[i]; + + buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer( buf, n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_chars()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; + } +%* +#endif + + +#ifndef YY_NO_PUSH_STATE +%- +#ifdef YY_USE_PROTOS +static void yy_push_state( int new_state ) +#else +static void yy_push_state( new_state ) +int new_state; +#endif +%+ +void yyFlexLexer::yy_push_state( int new_state ) +%* + { + if ( yy_start_stack_ptr >= yy_start_stack_depth ) + { + yy_size_t new_size; + + yy_start_stack_depth += YY_START_STACK_INCR; + new_size = yy_start_stack_depth * sizeof( int ); + + if ( ! yy_start_stack ) + yy_start_stack = (int *) yy_flex_alloc( new_size ); + + else + yy_start_stack = (int *) yy_flex_realloc( + (void *) yy_start_stack, new_size ); + + if ( ! yy_start_stack ) + YY_FATAL_ERROR( + "out of memory expanding start-condition stack" ); + } + + yy_start_stack[yy_start_stack_ptr++] = YY_START; + + BEGIN(new_state); + } +#endif + + +#ifndef YY_NO_POP_STATE +%- +static void yy_pop_state() +%+ +void yyFlexLexer::yy_pop_state() +%* + { + if ( --yy_start_stack_ptr < 0 ) + YY_FATAL_ERROR( "start-condition stack underflow" ); + + BEGIN(yy_start_stack[yy_start_stack_ptr]); + } +#endif + + +#ifndef YY_NO_TOP_STATE +%- +static int yy_top_state() +%+ +int yyFlexLexer::yy_top_state() +%* + { + return yy_start_stack[yy_start_stack_ptr - 1]; + } +#endif + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +%- +#ifdef YY_USE_PROTOS +static void yy_fatal_error( yyconst char msg[] ) +#else +static void yy_fatal_error( msg ) +char msg[]; +#endif + { + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); + } + +%+ + +void yyFlexLexer::LexerError( yyconst char msg[] ) + { + std::cerr << msg << '\n'; + exit( YY_EXIT_FAILURE ); + } +%* + + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + yytext[yyleng] = yy_hold_char; \ + yy_c_buf_p = yytext + n; \ + yy_hold_char = *yy_c_buf_p; \ + *yy_c_buf_p = (YY_CHAR) '\0'; \ + yyleng = n; \ + } \ + while ( 0 ) + + +/* Internal utility routines. */ + +#ifndef yytext_ptr +#ifdef YY_USE_PROTOS +static void yy_flex_strncpy( YY_CHAR *s1, yyconst YY_CHAR *s2, int n ) +#else +static void yy_flex_strncpy( s1, s2, n ) +YY_CHAR *s1; +yyconst YY_CHAR *s2; +int n; +#endif + { + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; + } +#endif + +#ifdef YY_NEED_STRLEN +#ifdef YY_USE_PROTOS +static int yy_flex_strlen( yyconst YY_CHAR *s ) +#else +static int yy_flex_strlen( s ) +yyconst YY_CHAR *s; +#endif + { + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; + } +#endif + + +#ifdef YY_USE_PROTOS +static void *yy_flex_alloc( yy_size_t size ) +#else +static void *yy_flex_alloc( size ) +yy_size_t size; +#endif + { + return (void *) malloc( size ); + } + +#ifdef YY_USE_PROTOS +static void *yy_flex_realloc( void *ptr, yy_size_t size ) +#else +static void *yy_flex_realloc( ptr, size ) +void *ptr; +yy_size_t size; +#endif + { + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); + } + +#ifdef YY_USE_PROTOS +static void yy_flex_free( void *ptr ) +#else +static void yy_flex_free( ptr ) +void *ptr; +#endif + { + free( ptr ); + } + +#if YY_MAIN +int main() + { + yylex(); + return 0; + } +#endif diff --git a/src/mapm/README b/src/mapm/README new file mode 100644 index 00000000..6ad2c8ec --- /dev/null +++ b/src/mapm/README @@ -0,0 +1,634 @@ +************************************************************************** + + MAPM + + Version 4.6.1 + + April 12, 2003 + + Michael C. Ring + + ringx004@tc.umn.edu + + Latest release will be available at + http://tc.umn.edu/~ringx004 + +************************************************************************** +* * +* Copyright (C) 1999 - 2003 Michael C. Ring * +* * +* This software is Freeware. * +* * +* Permission to use, copy, and distribute this software and its * +* documentation for any purpose with or without fee is hereby granted, * +* provided that the above copyright notice appear in all copies and * +* that both that copyright notice and this permission notice appear * +* in supporting documentation. * +* * +* Permission to modify the software is granted, but not the right to * +* distribute the modified code. Modifications are to be distributed * +* as patches to released version. * +* * +* This software is provided "as is" without express or implied warranty. * +* * +************************************************************************** + + --------------------------------------- + Mike's Arbitrary Precision Math Library + --------------------------------------- + +Mike's Arbitrary Precision Math Library is a set of functions that +allow the user to perform math to any level of accuracy that is +desired. The inspiration for this library was Lloyd Zusman's similar +APM package that was released in ~1988. I borrowed some of his ideas +in my implementation, creating a new data type (MAPM) and how the data +type was used by the user. However, there were a few things I wanted +my library to do that the original library did not : + +1) Round a value to any desired precision. This is very handy when + multiplying for many iterations. Since multiplication guarantees an + exact result, the number of digits will grow without bound. I wanted + a way to trim the number of significant digits that were retained. + +2) A natural support for floating point values. From most of the other + libraries I looked at, they seem to have a preference for integer + only type math manipulations. (However, this library will also do + integer only math if you desire). + + And if a library can only do integers, it can't do ... + +3) Trig functions and other common C math library functions. This library + will perform the following functions to any desired precision level : + SQRT, CBRT, SIN, COS, TAN, ARC-SIN, ARC-COS, ARC-TAN, ARC-TAN2, LOG, + LOG10, EXP, POW, SINH, COSH, TANH, ARC-SINH, ARC-COSH, ARC-TANH, and + also FACTORIAL. The full 'math.h' is not duplicated, though I think + these are most of the important ones. My definition of what's important + is what I've actually used in a real application. + + +NOTE: MAPM Library History can now be found in 'history.txt' + + +(I really wasn't sure what to call this library. 'Arbitrary Precision Math' +is a defacto standard for what this does, but that name was already taken, +so I just put an 'M' in front of it ...) + +************************************************************************** + +KNOWN BUGS : None + +************************************************************************** + +IF YOU ARE IN A HURRY ... + +UNIX: (assumes gcc compiler) + +run make (build library + 3 executables) + +run make -f makefile.osx (for MAC OSX) + +--- OR --- + +run: mklib (this will create the library, lib_mapm.a) + +run: mkdemo (this will create 3 executables, 'calc', 'validate', + and 'primenum') + + +DOS / Win NT/9x (in a DOS window for NT/9x): + +see the file 'README.DOS' for instructions. + + +************************************************************************** + +calc: This is a command line version of an RPN calculator. If you are + familiar with RPN calculators, the use of this program will be + quite obvious. The default is 30 decimal places but this can be + changed with the '-d' command line option. This is not an + interactive program, it just computes an expression from the command + line. Run 'calc' with no arguments to get a list of the operators. + + compute : (345.2 * 87.33) - (11.88 / 3.21E-2) + + calc 345.2 87.33 x 11.88 3.21E-2 / - + result: 29776.22254205607476635514018692 + + + compute PI to 70 decimal places : (6 * arcsin(0.5)) + + calc -d70 6 .5 as x + result : +3.1415926535897932384626433832795028841971693993751058209749445923078164 + +validate : This program will compare the MAPM math functions to the C + standard library functions, like sqrt, sin, exp, etc. This + should give the user a good idea that the library is operating + correctly. The program will also compute some known quantities + to 70 digits of precision, like PI, log(2), etc. There was nothing + special about '70' other than that number of digits fit nicely + on one line. + +primenum: This program will generate the first 10 prime numbers starting + with the number entered as an argument. + + Example: primenum 1234567890 will output (actually 1 per line): + this took ~5 sec on my PC, a 350MHz PII. + + 1234567891, 1234567907, 1234567913, 1234567927, 1234567949, + 1234567967, 1234567981, 1234568021, 1234568029, 1234568047 + + +************************************************************************** + +To use the library, simply include 'm_apm.h' and link your program +with the library, lib_mapm.a (unix) or [lib_]mapm.lib (dos). + +For unix builds, you also may need to specify the math library (-lm) when +linking. The reason is some of the MAPM functions use an iterative algorithm. +When you use an iterative solution, you have to supply an initial guess. I +use the standard math library to generate this initial guess. I debated +whether this library should be stand-alone, i.e. generate it's own initial +guesses with some algorithm. In the end, I decided using the standard math +library would not be a big inconvienence and also it was just too tempting +having an immediate 15 digits of precision. When you prime the iterative +routines with 15 accurate digits, the MAPM functions converge faster. + +See the file 'algorithms.used' to see a description of the algorithms I +used in the library. Some I derived on my own, others I borrowed from people +smarter than me. Version 2 of the library supports a 'fast' multiplication +algorithm. The algorithm used is described in the algorithms.used file. A +considerable amount of time went into finding fast algorithms for the +library. However, some could possibly be even better. If anyone has a +more efficient algorithm for any of these functions, I would like to here +from you. + +See the file 'function.ref' to see a description of all the functions in +the library and the calling conventions, prototypes, etc. + +See the file 'struct.ref' which documents how I store the numbers internally +in the MAPM data structure. This will not be needed for normal use, but it +will be very useful if you need to change/add to the existing library. + +************************************************************************** + +USING MAPM IN A MULTI-THREADED APPLICATION : + +Note that the default MAPM library is NOT thread safe. MAPM internal data +structures could get corrupted if multiple MAPM functions are active at the +same time. The user should guarantee that only one thread is performing +MAPM functions. This can usually be achieved by a call to the operating +system to obtain a 'semaphore', 'mutex', or 'critical code section' so the +operating system will guarantee that only one MAPM thread will be active +at a time. + +************************************************************************** + +QUICK TEMPLATE FOR NORMAL USE : + +The MAPM math is done on a new data type called "M_APM". This is +actually a pointer to a structure, but the contents of the structure +should never be manipulated: all operations on MAPM entities are done +through a functional interface. + +The MAPM routines will automatically allocate enough space in their +results to hold the proper number of digits. + +The caller must initialize all MAPM values before the routines can +operate on them (including the values intended to contain results of +calculations). Once this initialization is done, the user never needs +to worry about resizing the MAPM values, as this is handled inside the +MAPM routines and is totally invisible to the user. + +The result of a MAPM operation cannot be one of the other MAPM operands. +If you want this to be the case, you must put the result into a +temporary variable and then assign (m_apm_copy) it to the appropriate operand. + +All of the MAPM math functions begin with m_apm_*. + +There are some predefined constants for your use. In case it's not obvious, +these should never appear as a 'result' parameter in a function call. + +The following constants are available : (declared in m_apm.h) + +MM_Zero MM_One MM_Two MM_Three +MM_Four MM_Five MM_Ten +MM_PI MM_HALF_PI MM_2_PI MM_E +MM_LOG_E_BASE_10 MM_LOG_10_BASE_E MM_LOG_2_BASE_E MM_LOG_3_BASE_E + + +The non-integer constants above (PI, log(2), etc) are accurate to 128 +decimal places. The file mapmcnst.c contains these constants. I've +included 512 digit constants in this file also that are commented out. +If you need more than 512 digits, you can simply use the 'calc' program +to generate more precise constants (or create more precise constants at +run-time in your app). The number of significant digits in the constants +should be 6-8 more than the value specified in the #define. + + +Basic plan of attack: + +(1) get your 'numbers' into M_APM format. +(2) do your high precision math. +(3) get the M_APM numbers back into a format you can use. + + +-------- (1) -------- + +#include + +M_APM area_mapm; /* declare your variables */ +M_APM tmp_mapm; +M_APM array_mapm[10]; /* can use normal array notation */ +M_APM array2d_mapm[10][10]; + +area_mapm = m_apm_init() /* init your variables */ +tmp_mapm = m_apm_init(); + +for (i=0; i < M; i++) /* must init every element of the array */ + array_mapm[i] = m_apm_init(); + +for (i=0; i < M; i++) + for (j=0; j < N; j++) + array2d_mapm[i][j] = m_apm_init(); + +/* + * there are 3 ways to convert your number into an M_APM number + * (see the file function.ref) + * + * a) literal string (exponential notation OK) + * b) long variable + * c) double variable + */ + +m_apm_set_string(tmp_mapm, "5.3286E-7"); +m_apm_set_long(array_mapm[6], -872253L); +m_apm_set_double(array2d_mapm[3][7], -529.4486711); + + +-------- (2) -------- + +do your math ... + +m_apm_add(cc_mapm, aa_mapm, MM_PI); +m_apm_divide(bb_mapm, DECIMAL_PLACES, aa_mapm, MM_LOG_2_BASE_E); +m_apm_sin(bb_mapm, DECIMAL_PLACES, aa_mapm); +whatever ... + + +-------- (3) -------- + +There are 5 total functions for converting an M_APM number into something +useful. (See the file 'function.ref' for full function descriptions) + +For these 5 functions, M_APM number -> string is the conversion + +=================== +==== METHOD 1 ==== : floating point values (m_apm_to_string) +=================== + +the format will be in scientific (exponential) notation + +output string = [-]n.nnnnnE+x or ...E-x + +where 'n' are digits and the exponent will be always be present, +including E+0 + +it's easy to convert this to a double: + +double dtmp = atof(out_buffer); + + +=================== +==== METHOD 2 ==== : floating point values (m_apm_to_fixpt_string) +=================== (m_apm_to_fixpt_stringex) + (m_apm_to_fixpt_stringexp) +the format will be in fixed point notation + +output string = [-]mmm.nnnnnn + +where 'm' & 'n' are digits. + + +=================== +==== METHOD 3 ==== : integer values (m_apm_to_integer_string) +=================== + +the format will simply be digits with a possible leading '-' sign. + +output string = [-]nnnnnn + +where 'n' are digits. + +it's easy to convert this to a long : +long mtmp = atol(out_buffer); + +... or an int : +int itmp = atoi(out_buffer); + +Note that if the M_APM number has a fractional portion, the fraction +will be truncated and only the integer portion will be output. + + +char out_buffer[1024]; + +m_apm_to_string(out_buffer, DECIMAL_PLACES, mapm_number); + +m_apm_to_fixpt_string(out_buffer, DECIMAL_PLACES, mapm_number); + +m_apm_to_integer_string(out_buffer, mapm_number); + + +************************************************************************** + +********************************************************* +**** NOTES on the fixed point formatting functions **** +********************************************************* + +Assume you have the following code: + + +--> m_apm_set_string(aa_mapm, "2.0E18"); +--> m_apm_sqrt(bb_mapm, 40, aa_mapm); + +--> m_apm_to_string(buffer, 40, bb_mapm); +--> fprintf(stdout,"[%s]\n",buffer); + +--> m_apm_to_fixpt_string(buffer, 40, bb_mapm); +--> fprintf(stdout,"[%s]\n",buffer); + + +It is desired to compute the sqrt(2.0E+18) to +40 significant digits. You then want the result +output with 40 decimal places. But the output +from above is : + +[1.4142135623730950488016887242096980785697E+9] +[1414213562.3730950488016887242096980785697000000000] + + +Why are there 9 '0' in the fixed point formatted string?? + +The sqrt calculation computed 40 significant digits relative +to the number in EXPONENTIAL format. When the number is +output in exponential format, the 40 digits are as expected +with an exponent of 'E+9'. + +The same number formatted as fixed point appears to be an +error. Remember, we computed 40 significant digits. However, +the result has an exponent of '+9'. So, 9 of the digits are +needed *before* the decimal point. In our calculation, only +31 digits of precision remain from our original 40. We then +asked the fixed point formatting function to format 40 digits. +Only 31 are left so 9 zeros are used as pad at the end to +fulfill the 40 places asked for. + +Keep this in mind if you truly desire more accurate results +in fixed point formatting and your result contains a large +positive exponent. + +************************************************************************** + +MAPM C++ WRAPPER CLASS: + +Orion Sky Lawlor (olawlor@acm.org) has added a very nice C++ wrapper +class to m_apm.h. This C++ class will have no effect if you just use +a normal C compiler. The library will operate as before with no user +impacts. + +For now, I recommend compiling the library as 'C'. In order to compile +the library as C++, all the function declarations will need to be updated. +This may or may not happen in the near future. Since the C++ wrapper +class works very nicely as is, there is no pressing need to update the +entire library yet. + +See the file 'cpp_function.ref' to see a description of how to use +the MAPM class. + +To compile and link the C++ demo program: (assuming the library is +already built) + +UNIX: + +g++ cpp_demo.cpp lib_mapm.a -s -o cpp_demo -lm + +GCC for DOS: (gxx is the C++ compiler) + +gxx cpp_demo.cpp lib_mapm.a -s -o cpp_demo.exe -lm + + +Using the C++ wrapper allows you to do things like: + +// Compute the factorial of the integer n + +MAPM factorial(MAPM n) +{ + MAPM i; + MAPM product = 1; + for (i=2; i <= n; i++) + product *= i; + return product; +} + + +The syntax is the same as if you were just writing normal code, but all +the computations will be performed with the high precision math library, +using the new 'datatype' MAPM. + +The default precision of the computations is as follows: + +Addition, subtraction, and multiplication will maintain ALL significant +digits. + +All other operations (divide, sin, etc) will use the following rules: + +1) if the operation uses only one input value [y = sin(x)], the result 'y' + will be the same precision as 'x', with a minimum of 30 digits if 'x' is + less than 30 digits. + +2) if the operation uses two input values [z = atan2(y,x)], the result 'z' + will be the max digits of 'x' or 'y' with a minimum of 30. + +The default precision is 30 digits. You can change the precision at +any time with the function 'm_apm_cpp_precision'. (See function.ref) + +----> m_apm_cpp_precision(80); + +will result in all operations being accurate to a minimum of 80 significant +digits. If any operand contains more than the minimum number of digits, then +the result will contain the max number of digits of the operands. + + +NOTE!: Some real life use with the C++ wrapper has revealed a certain + tendency for a program to become quite slow after many iterations + (like in a for/while loop). After a little debug, the reason + became clear. Remember that multiplication will maintain ALL + significant digits : + + 20 digit number x 20 digit number = 40 digits + 40 digit number x 40 digit number = 80 digits + 80 digit number x 80 digit number = 160 digits + etc. + + So after numerous iterations, the number of significant digits + was growing without bound. The easy way to fix the problem is + to simply *round* your result after a multiply or some other + complex operation. For example: + + #define MAX_DIGITS 256 + + p1 = (p0 * sin(b1) * exp(1 + u1)) / sqrt(1 + b1); + p1 = p1.round(MAX_DIGITS); + + If you 'round' as shown here, your program will likely be + nearly as fast as a straight 'C' version. + + +NOTE #2! + + Reference the following code snippet: + + ... + + MAPM pi1, pi2; + char obuf[256]; + + m_apm_cpp_precision(62); + + pi1 = 2 * asin("1"); + pi2 = 2 * asin(1.0); + + pi1.toString(obuf, 60); printf("PI1 = [%s] \n",obuf); + pi2.toString(obuf, 60); printf("PI2 = [%s] \n",obuf); + + ... + + On my system, the output is : + +PI1 = [3.141592653589793238462643383279502884197169399375105820974945E+0] +PI2 = [3.141592653589790000000000000000000000000000000000000000000000E+0] + + + PI2 only has 15 significant digits! This is due to how the second + asin is called. It is called with a 'double' as the argument, hence + the compiler will use the default double asin function from the + standard library. This is likely not the intent but this would be + easy to miss if this was a complex calculation and we didn't know + the 'right' answer. + + In order to force the use of the overloaded MAPM functions, call the + MAPM functions with a quoted string as the argument (if the argument + is a constant and not a variable). + + This would also work (though it seems less elegant ...) : + + MAPM t = 1; + pi2 = 2 * asin(t); + +----------- + +If you have any questions or problems with the C++ wrapper, please let +me know. I am not very C++ proficient, but I'd still like to know about any +problems. Orion Sky Lawlor (olawlor@acm.org) is the one who implemented +the MAPM class, so he'll have to resolve any real hardcore problems, if you +have any. + +************************************************************************** + +TESTING : + +Testing the library was interesting. How do I know it's right? Since I +test the library against the standard C runtime math library (see below) +I have high confidence that the MAPM library is giving correct results. +The logic here is the basic algorithms are independent of the number of +digits calculated, more digits just takes longer. + +The MAPM library has been tested in the following environments : + +Linux i486 / gcc 2.7.2.3, gcc 2.95.2 +Linux i686 / gcc 2.91.66, gcc 2.95.2, gcc 2.95.3, gcc 3.0.4 +FreeBSD 4.1 / gcc 2.95.1 +FreeBSD 5.x / gcc 2.95.2, gcc 2.95.3 +HP-UX 9.x /gcc 2.5.8 +HP-UX 10.x / gcc 2.95.2 +Sun 5.5.1 (output from uname) +Sun Solaris 2.6 / gcc 2.95.1 +MAC OSX / gcc ? +DOS 5.0 using GCC 2.8.1 for DOS +DOS 5.0 using GCC 2.95.2 for DOS +DOS ??? using Borland Turbo C++ 3.0 +WIN NT+SP5 using Borland C++ 5.02 IDE, 5.2 & 5.5 command line. +WIN98 using Borland C++ 5.5 command line. +WIN98 & NT using LCC-WIN32 Ver 3.2 +WIN98 & NT using Watcom C 11.x +WIN95 & WIN98 using MINGW-32 version mingw-1.0.1-20010726 +WIN?? using Metrowerks CodeWarrior Pro 7.0 for Windows +WIN98 & NT using Microsoft Visual C++ 6.0 +DOS 5.0 using Microsoft C 5.1 and 8.00c (16 bit EXEs) + + +As a general rule, when calculating a quantity to a given number of decimal +places, I calculated 4-6 extra digits and then rounded the result to what was +asked for. I decided to be conservative and give a correct answer rather than +to be faster and possibly have the last 2-3 digits in error. Also, some of +the functions call other functions (calculating arc-cos will call cos, log +will call exp, etc.) so I had to calculate a few extra digits in each iteration +to guarantee the loops terminated correctly. + +1) I debugged the 4 basic math operations. I threw numerous test cases at + each of the operations until I knew they were correct. + + Also note that the math.h type functions all call the 4 basic operations + numerous times. So if all the math.h functions work, it is highly + probable the 4 basic math operations work also. + +2) 'math.h' type functions. + + SQRT: Not real hard to check. Single stepping through the iterative + loop showed it was always converging to the sqrt. + + CBRT: Similar to sqrt, single stepping through the iterative loop + showed it was always converging to the cube root. + + EXP: I wrote a separate algorithm which expanded the Taylor series + manually and compared the results against the library. + + POW: Straightforward since this just calls 'EXP'. + + LOG: I wrote a separate algorithm which expanded the Taylor series + manually and compared the results against the library. This + took a long time to execute since the normal series converges + VERY slowly for the log function. This is why the LOG function + uses an iterative algorithm. + + LOG10: Straightforward since this just calls 'LOG'. + + SIN/COS: I wrote a separate algorithm which expanded the Taylor series + manually and compared the results against the library. + + TAN: Straightforward since this just calls 'SIN' and 'COS'. + + ARC-x: Single stepping through the iterative loop showed the arc + family of functions were always converging. Also used these + to compute PI. The value of PI is now known to many, many + digits. I computed PI to 1000+ digits by computing: + + 6 * arcsin(0.5) and 4 * arctan(1) and 3 * arccos(0.5) + + and compared the output to the published 'real' values of PI. + + The arc family of functions exercise considerable portions + of the library. + + HYPERBOLIC: The hyperbolic functions just use exp, log, and the 4 basic + math operations. All of these functions simply use other + existing functions in the library. + + FINALLY: Run the program 'validate'. This program compares the first + 13-14 significant digits of the standard C library against + the MAPM library. If this program passes, you can feel + confident that the MAPM library is giving correct results. + This is because the basic algorithms do not change when + calculating more digits, it just takes longer. + +************************************************************************** diff --git a/src/mapm/m_apm.cpp b/src/mapm/m_apm.cpp new file mode 100644 index 00000000..95b7bc87 --- /dev/null +++ b/src/mapm/m_apm.cpp @@ -0,0 +1,506 @@ + +#include "../config/xqilla_config.h" +#include + +void MAPM::create(void) +{ + myVal=makeNew(); +} + +void MAPM::destroy(void) +{ + unref(myVal); + myVal=0; +} + +void MAPM::copyFrom(M_APM Nval) +{ + M_APM oldVal=myVal; + myVal=Nval; + ref(myVal); + unref(oldVal); +} + +M_APM MAPM::makeNew(void) +{ + M_APM val=m_apm_init_mt(); + /* refcount initialized to 1 by 'm_apm_init' */ + return val; +} + +void MAPM::ref(M_APM val) +{ + val->m_apm_refcount++; +} + +void MAPM::unref(M_APM val) +{ + val->m_apm_refcount--; + if (val->m_apm_refcount==0) + m_apm_free_mt(val); +} + +M_APM MAPM::val(void) +{ + if (myVal->m_apm_refcount==1) + /* Return my private myVal */ + return myVal; + + /* Otherwise, our copy of myVal is shared-- + we need to make a new private copy. + */ + M_APM oldVal=myVal; + myVal=makeNew(); + m_apm_copy(myVal,oldVal); + unref(oldVal); + return myVal; +} + +M_APM MAPM::cval(void) const +{ + return (M_APM)myVal; +} + +int MAPM::myDigits(void) const +{ + int maxd=m_apm_significant_digits_mt(cval()); + if (maxd(const MAPM &m) const +{ + return m_apm_compare(cval(),m.cval())>0; +} + +bool MAPM::operator>=(const MAPM &m) const +{ + return m_apm_compare(cval(),m.cval())>=0; +} + +int MAPM::compare(const MAPM &m) const +{ + return m_apm_compare(cval(),m.cval()); +} + +MAPM operator+(const MAPM &a,const MAPM &b) +{ + MAPM ret; + m_apm_add_mt(ret.val(),a.cval(),b.cval()); + return ret; +} + +MAPM operator-(const MAPM &a,const MAPM &b) +{ + MAPM ret; + m_apm_subtract_mt(ret.val(),a.cval(),b.cval()); + return ret; +} + +MAPM operator*(const MAPM &a,const MAPM &b) +{ + MAPM ret; + m_apm_multiply_mt(ret.val(),a.cval(),b.cval()); + return ret; +} + +MAPM operator/(const MAPM &a,const MAPM &b) +{ + return a.divide(b,a.digits(b)); +} + +MAPM MAPM::divide(const MAPM &m,int toDigits) const +{ + MAPM ret; + m_apm_divide_mt(ret.val(),toDigits,cval(),m.cval()); + return ret; +} + +MAPM MAPM::divide(const MAPM &m) const +{ + return divide(m,digits(m)); +} + +MAPM & MAPM::operator+=(const MAPM &m) +{ + *this = *this+m; + return *this; +} + +MAPM & MAPM::operator-=(const MAPM &m) +{ + *this = *this-m; + return *this; +} + +MAPM & MAPM::operator*=(const MAPM &m) +{ + *this = *this*m; + return *this; +} + +MAPM & MAPM::operator/=(const MAPM &m) +{ + *this = *this/m; + return *this; +} + +int MAPM::sign(void) const +{ + return m_apm_sign(cval()); +} + +int MAPM::exponent(void) const +{ + return m_apm_exponent(cval()); +} + +int MAPM::significant_digits(void) const +{ + return m_apm_significant_digits(cval()); +} + +int MAPM::is_integer(void) const +{ + return m_apm_is_integer(cval()); +} + +int MAPM::is_even(void) const +{ + return m_apm_is_even(cval()); +} + +int MAPM::is_odd(void) const +{ + return m_apm_is_odd(cval()); +} + +MAPM MAPM::abs(void) const +{ + MAPM ret; + m_apm_absolute_value(ret.val(),cval()); + return ret; +} + +MAPM MAPM::neg(void) const +{ + MAPM ret; + m_apm_negate(ret.val(),cval()); + return ret; +} + +MAPM MAPM::round(int toDigits) const +{ + MAPM ret; + m_apm_round_mt(ret.val(),toDigits,cval()); + return ret; +} + + +#define MAPM_1aryFuncImpl(func) \ +MAPM MAPM::func(int toDigits) const\ + {MAPM ret;m_apm_##func##_mt(ret.val(),toDigits,cval());return ret;}\ +MAPM MAPM::func(void) const {return func(myDigits());} + +MAPM_1aryFuncImpl(sqrt) +MAPM_1aryFuncImpl(cbrt) +MAPM_1aryFuncImpl(log) +MAPM_1aryFuncImpl(exp) +MAPM_1aryFuncImpl(log10) +MAPM_1aryFuncImpl(sin) +MAPM_1aryFuncImpl(asin) +MAPM_1aryFuncImpl(cos) +MAPM_1aryFuncImpl(acos) +MAPM_1aryFuncImpl(tan) +MAPM_1aryFuncImpl(atan) +MAPM_1aryFuncImpl(sinh) +MAPM_1aryFuncImpl(asinh) +MAPM_1aryFuncImpl(cosh) +MAPM_1aryFuncImpl(acosh) +MAPM_1aryFuncImpl(tanh) +MAPM_1aryFuncImpl(atanh) +#undef MAPM_1aryFuncImpl + +void MAPM::sincos(MAPM &sinR,MAPM &cosR,int toDigits) +{ + m_apm_sin_cos_mt(sinR.val(),cosR.val(),toDigits,cval()); +} + +void MAPM::sincos(MAPM &sinR,MAPM &cosR) +{ + sincos(sinR,cosR,myDigits()); +} + +MAPM MAPM::pow(const MAPM &m,int toDigits) const +{ + MAPM ret; + m_apm_pow_mt(ret.val(),toDigits,cval(), m.cval()); + return ret; +} + +MAPM MAPM::pow(const MAPM &m) const +{ + return pow(m,digits(m)); +} + +MAPM MAPM::atan2(const MAPM &x,int toDigits) const +{ + MAPM ret; + m_apm_arctan2_mt(ret.val(),toDigits,cval(),x.cval()); + return ret; +} + +MAPM MAPM::atan2(const MAPM &x) const +{ + return atan2(x,digits(x)); +} + +MAPM MAPM::gcd(const MAPM &m) const +{ + MAPM ret; + m_apm_gcd_mt(ret.val(),cval(),m.cval()); + return ret; +} + +MAPM MAPM::lcm(const MAPM &m) const +{ + MAPM ret; + m_apm_lcm_mt(ret.val(),cval(),m.cval()); + return ret; +} + +MAPM MAPM::random(void) +{ + MAPM ret; + m_apm_get_random_mt(ret.val()); + return ret; +} + +MAPM MAPM::floor(void) const +{ + MAPM ret; + m_apm_floor_mt(ret.val(),cval()); + return ret; +} + +MAPM MAPM::ceil(void) const +{ + MAPM ret; + m_apm_ceil_mt(ret.val(),cval()); + return ret; +} + +MAPM MAPM::factorial(void) const +{ + MAPM ret; + m_apm_factorial_mt(ret.val(),cval()); + return ret; +} + +MAPM MAPM::ipow_nr(int p) const +{ + MAPM ret; + m_apm_integer_pow_nr_mt(ret.val(),cval(),p); + return ret; +} + +MAPM MAPM::ipow(int p,int toDigits) const +{ + MAPM ret; + m_apm_integer_pow_mt(ret.val(),toDigits,cval(),p); + return ret; +} + +MAPM MAPM::ipow(int p) const +{ + return ipow(p,myDigits()); +} + +MAPM MAPM::integer_divide(const MAPM &denom) const +{ + MAPM ret; + m_apm_integer_divide_mt(ret.val(),cval(),denom.cval()); + return ret; +} + +void MAPM::integer_div_rem(const MAPM &denom,MAPM ",MAPM &rem) const +{ + m_apm_integer_div_rem_mt(quot.val(),rem.val(),cval(),denom.cval()); +} + +MAPM MAPM::div(const MAPM &denom) const +{ + return integer_divide(denom); +} + +MAPM MAPM::rem(const MAPM &denom) const +{ + MAPM ret,ignored; + integer_div_rem(denom,ignored,ret);return ret; +} + diff --git a/src/mapm/m_apm_lc.h b/src/mapm/m_apm_lc.h new file mode 100644 index 00000000..3faa502b --- /dev/null +++ b/src/mapm/m_apm_lc.h @@ -0,0 +1,223 @@ + +/* + * M_APM - m_apm_lc.h + * + * Copyright (C) 1999 - 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#ifndef M__APM_LOCAL_INC +#define M__APM_LOCAL_INC + +#include +#include +#include +#include + +/* + * this supports older (and maybe newer?) Borland compilers. + * these Borland compilers define __MSDOS__ + */ + +#ifndef MSDOS +#ifdef __MSDOS__ +#define MSDOS +#endif +#endif + +/* + * this supports some newer Borland compilers (i.e., v5.5). + */ + +#ifndef MSDOS +#ifdef __BORLANDC__ +#define MSDOS +#endif +#endif + +/* + * this supports the LCC-WIN32 compiler + */ + +#ifndef MSDOS +#ifdef __LCC__ +#define MSDOS +#endif +#endif + +/* + * this supports Micro$oft Visual C++ and also possibly older + * straight C compilers as well. + */ + +#ifndef MSDOS +#ifdef _MSC_VER +#define MSDOS +#endif +#endif + +/* + * this supports Metrowerks CodeWarrior 7.0 compiler (I think...) + */ + +#ifndef MSDOS +#ifdef __MWERKS__ +#define MSDOS +#endif +#endif + +/* + * this supports MINGW 32 compiler + */ + +#ifndef MSDOS +#ifdef __MINGW_H +#define MSDOS +#endif +#endif + + +/* + * If for some reason (RAM limitations, slow floating point, whatever) + * you do NOT want to use the FFT multiply algorithm, un-comment the + * #define below, delete mapm_fft.c and remove mapm_fft from the build. + */ + +/* #define NO_FFT_MULTIPLY */ + +/* + * use your own memory management functions if desired. + * re-define MAPM_* below to point to your functions. + * an example is shown below. + */ + +/* +extern void *memory_allocate(unsigned int); +extern void *memory_reallocate(void *, unsigned int); +extern void memory_free(void *); + +#define MAPM_MALLOC memory_allocate +#define MAPM_REALLOC memory_reallocate +#define MAPM_FREE memory_free +*/ + +/* default: use the standard C library memory functions ... */ + +#define MAPM_MALLOC malloc +#define MAPM_REALLOC realloc +#define MAPM_FREE free + +#ifndef TRUE +#define TRUE 1 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif + +#define M_APM_IDENT 0x6BCC9AE5 +#define M_APM_RETURN 1 +#define M_APM_EXIT 2 + +/* number of digits in the global constants, PI, E, etc */ + +#define VALID_DECIMAL_PLACES 128 + +extern int MM_lc_PI_digits; +extern int MM_lc_log_digits; + +/* + * constants not in m_apm.h + */ + +extern M_APM MM_0_5; +extern M_APM MM_0_85; +extern M_APM MM_5x_125R; +extern M_APM MM_5x_64R; +extern M_APM MM_5x_256R; +extern M_APM MM_5x_Eight; +extern M_APM MM_5x_Sixteen; +extern M_APM MM_5x_Twenty; +extern M_APM MM_lc_PI; +extern M_APM MM_lc_HALF_PI; +extern M_APM MM_lc_2_PI; +extern M_APM MM_lc_log2; +extern M_APM MM_lc_log10; +extern M_APM MM_lc_log10R; + +/* + * prototypes for internal functions + */ + +#ifndef NO_FFT_MULTIPLY +extern void M_free_all_fft(void); +#endif + +extern void M_init_trig_globals(void); +extern void M_free_all_add(void); +extern void M_free_all_div(void); +extern void M_free_all_exp(void); +extern void M_free_all_pow(void); +extern void M_free_all_rnd(void); +extern void M_free_all_set(void); +extern void M_free_all_cnst(void); +extern void M_free_all_fmul(void); +extern void M_free_all_stck(void); +extern void M_free_all_util(void); + +extern void M_raw_exp(M_APM, int, M_APM); +extern void M_raw_sin(M_APM, int, M_APM); +extern void M_raw_cos(M_APM, int, M_APM); +extern void M_5x_sin(M_APM, int, M_APM); +extern void M_4x_cos(M_APM, int, M_APM); +extern void M_5x_do_it(M_APM, int, M_APM); +extern void M_4x_do_it(M_APM, int, M_APM); + +extern M_APM M_get_stack_var(void); +extern void M_restore_stack(int); +extern int M_get_sizeof_int(void); + +extern void M_apm_sdivide(M_APM, int, M_APM, M_APM); +extern void M_cos_to_sin(M_APM, int, M_APM); +extern void M_limit_angle_to_pi(M_APM, int, M_APM); +extern void M_log_near_1(M_APM, int, M_APM); +extern void M_get_sqrt_guess(M_APM, M_APM); +extern void M_get_cbrt_guess(M_APM, M_APM); +extern void M_get_log_guess(M_APM, M_APM); +extern void M_get_asin_guess(M_APM, M_APM); +extern void M_get_acos_guess(M_APM, M_APM); +extern void M_arcsin_near_0(M_APM, int, M_APM); +extern void M_arccos_near_0(M_APM, int, M_APM); +extern void M_arctan_near_0(M_APM, int, M_APM); +extern void M_log_basic_iteration(M_APM, int, M_APM); +extern void M_check_log_places(int); +extern void M_log_AGM_R_func(M_APM, int, M_APM, M_APM); +extern void M_init_util_data(void); +extern void M_get_div_rem_addr(UCHAR **, UCHAR **); +extern void M_get_div_rem(int,UCHAR *, UCHAR *); +extern void M_get_div_rem_10(int, UCHAR *, UCHAR *); +extern void M_apm_normalize(M_APM); +extern void M_apm_scale(M_APM, int); +extern void M_apm_pad(M_APM, int); +extern void M_long_2_ascii(char *, long); +extern void M_check_PI_places(int); +extern void M_calculate_PI_AGM(M_APM, int); +extern void M_set_to_zero(M_APM); +extern int M_strposition(char *, char *); +extern char *M_lowercase(char *); +extern void M_apm_log_error_msg(int, char *); +extern void M_apm_round_fixpt(M_APM, int, M_APM); + +#endif + diff --git a/src/mapm/mapm5sin.c b/src/mapm/mapm5sin.c new file mode 100644 index 00000000..a484ede8 --- /dev/null +++ b/src/mapm/mapm5sin.c @@ -0,0 +1,145 @@ + +/* + * M_APM - mapm5sin.c + * + * Copyright (C) 1999 - 2002 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +/****************************************************************************/ +void M_5x_sin(M_APM r, int places, M_APM x) +{ +M_APM tmp8, tmp9; + +tmp8 = M_get_stack_var(); +tmp9 = M_get_stack_var(); + +m_apm_multiply(tmp9, x, MM_5x_125R); /* 1 / (5*5*5) */ +M_raw_sin(tmp8, (places + 6), tmp9); +M_5x_do_it(tmp9, (places + 4), tmp8); +M_5x_do_it(tmp8, (places + 4), tmp9); +M_5x_do_it(r, places, tmp8); + +M_restore_stack(2); +} +/****************************************************************************/ +void M_4x_cos(M_APM r, int places, M_APM x) +{ +M_APM tmp8, tmp9; + +tmp8 = M_get_stack_var(); +tmp9 = M_get_stack_var(); + +/* + * if |x| >= 1.0 use multiple angle identity 4 times + * if |x| < 1.0 use multiple angle identity 3 times + */ + +if (x->m_apm_exponent > 0) + { + m_apm_multiply(tmp9, x, MM_5x_256R); /* 1 / (4*4*4*4) */ + M_raw_cos(tmp8, (places + 8), tmp9); + M_4x_do_it(tmp9, (places + 8), tmp8); + M_4x_do_it(tmp8, (places + 6), tmp9); + M_4x_do_it(tmp9, (places + 4), tmp8); + M_4x_do_it(r, places, tmp9); + } +else + { + m_apm_multiply(tmp9, x, MM_5x_64R); /* 1 / (4*4*4) */ + M_raw_cos(tmp8, (places + 6), tmp9); + M_4x_do_it(tmp9, (places + 4), tmp8); + M_4x_do_it(tmp8, (places + 4), tmp9); + M_4x_do_it(r, places, tmp8); + } + +M_restore_stack(2); +} +/****************************************************************************/ +/* + * calculate the multiple angle identity for sin (5x) + * + * sin (5x) == 16 * sin^5 (x) - 20 * sin^3 (x) + 5 * sin(x) + */ +void M_5x_do_it(M_APM rr, int places, M_APM xx) +{ +M_APM tmp0, tmp1, t2, t3, t5; + +tmp0 = M_get_stack_var(); +tmp1 = M_get_stack_var(); +t2 = M_get_stack_var(); +t3 = M_get_stack_var(); +t5 = M_get_stack_var(); + +m_apm_multiply(tmp1, xx, xx); +m_apm_round(t2, (places + 4), tmp1); /* x ^ 2 */ + +m_apm_multiply(tmp1, t2, xx); +m_apm_round(t3, (places + 4), tmp1); /* x ^ 3 */ + +m_apm_multiply(t5, t2, t3); /* x ^ 5 */ + +m_apm_multiply(tmp0, xx, MM_Five); +m_apm_multiply(tmp1, t5, MM_5x_Sixteen); +m_apm_add(t2, tmp0, tmp1); +m_apm_multiply(tmp1, t3, MM_5x_Twenty); +m_apm_subtract(tmp0, t2, tmp1); + +m_apm_round(rr, places, tmp0); +M_restore_stack(5); +} +/****************************************************************************/ +/* + * calculate the multiple angle identity for cos (4x) + * + * cos (4x) == 8 * [ cos^4 (x) - cos^2 (x) ] + 1 + */ +void M_4x_do_it(M_APM rr, int places, M_APM xx) +{ +M_APM tmp0, tmp1, t2, t4; + +tmp0 = M_get_stack_var(); +tmp1 = M_get_stack_var(); +t2 = M_get_stack_var(); +t4 = M_get_stack_var(); + +m_apm_multiply(tmp1, xx, xx); +m_apm_round(t2, (places + 4), tmp1); /* x ^ 2 */ +m_apm_multiply(t4, t2, t2); /* x ^ 4 */ + +m_apm_subtract(tmp0, t4, t2); +m_apm_multiply(tmp1, tmp0, MM_5x_Eight); +m_apm_add(tmp0, MM_One, tmp1); +m_apm_round(rr, places, tmp0); +M_restore_stack(4); +} +/****************************************************************************/ +/* + * compute r = sqrt(1 - a ^ 2). + */ +void M_cos_to_sin(M_APM r, int places, M_APM a) +{ +M_APM tmp1, tmp2; + +tmp1 = M_get_stack_var(); +tmp2 = M_get_stack_var(); + +m_apm_multiply(tmp1, a, a); +m_apm_subtract(tmp2, MM_One, tmp1); +m_apm_sqrt(r, places, tmp2); +M_restore_stack(2); +} +/****************************************************************************/ diff --git a/src/mapm/mapm_add.c b/src/mapm/mapm_add.c new file mode 100644 index 00000000..23c838ce --- /dev/null +++ b/src/mapm/mapm_add.c @@ -0,0 +1,303 @@ + +/* + * M_APM - mapm_add.c + * + * Copyright (C) 1999 - 2002 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +static M_APM M_work1 = NULL; +static M_APM M_work2 = NULL; +static int M_add_firsttime = TRUE; + +/****************************************************************************/ +void M_free_all_add() +{ +if (M_add_firsttime == FALSE) + { + m_apm_free(M_work1); + m_apm_free(M_work2); + M_add_firsttime = TRUE; + } +} +/****************************************************************************/ +void m_apm_add(M_APM r, M_APM a, M_APM b) +{ +int j, carry, sign, aexp, bexp, adigits, bdigits; + +if (M_add_firsttime) + { + M_add_firsttime = FALSE; + M_work1 = m_apm_init(); + M_work2 = m_apm_init(); + } + +if (a->m_apm_sign == 0) + { + m_apm_copy(r,b); + return; + } + +if (b->m_apm_sign == 0) + { + m_apm_copy(r,a); + return; + } + +if (a->m_apm_sign == 1 && b->m_apm_sign == -1) + { + b->m_apm_sign = 1; + m_apm_subtract(r,a,b); + b->m_apm_sign = -1; + return; + } + +if (a->m_apm_sign == -1 && b->m_apm_sign == 1) + { + a->m_apm_sign = 1; + m_apm_subtract(r,b,a); + a->m_apm_sign = -1; + return; + } + +sign = a->m_apm_sign; /* signs are the same, result will be same */ + +aexp = a->m_apm_exponent; +bexp = b->m_apm_exponent; + +m_apm_copy(M_work1, a); +m_apm_copy(M_work2, b); + +/* + * scale by at least 1 factor of 10 in case the MSB carrys + */ + +if (aexp == bexp) + { + M_apm_scale(M_work1, 2); /* shift 2 digits == 1 byte for efficiency */ + M_apm_scale(M_work2, 2); + } +else + { + if (aexp > bexp) + { + M_apm_scale(M_work1, 2); + M_apm_scale(M_work2, (aexp + 2 - bexp)); + } + else /* aexp < bexp */ + { + M_apm_scale(M_work2, 2); + M_apm_scale(M_work1, (bexp + 2 - aexp)); + } + } + +adigits = M_work1->m_apm_datalength; +bdigits = M_work2->m_apm_datalength; + +if (adigits >= bdigits) + { + m_apm_copy(r, M_work1); + j = (bdigits + 1) >> 1; + carry = 0; + + while (TRUE) + { + j--; + r->m_apm_data[j] += carry + M_work2->m_apm_data[j]; + + if (r->m_apm_data[j] >= 100) + { + r->m_apm_data[j] -= 100; + carry = 1; + } + else + carry = 0; + + if (j == 0) + break; + } + } +else + { + m_apm_copy(r, M_work2); + j = (adigits + 1) >> 1; + carry = 0; + + while (TRUE) + { + j--; + r->m_apm_data[j] += carry + M_work1->m_apm_data[j]; + + if (r->m_apm_data[j] >= 100) + { + r->m_apm_data[j] -= 100; + carry = 1; + } + else + carry = 0; + + if (j == 0) + break; + } + } + +r->m_apm_sign = sign; + +M_apm_normalize(r); +} +/****************************************************************************/ +void m_apm_subtract(M_APM r, M_APM a, M_APM b) +{ +int itmp, j, flag, icompare, sign, aexp, bexp, + borrow, adigits, bdigits; + +if (M_add_firsttime) + { + M_add_firsttime = FALSE; + M_work1 = m_apm_init(); + M_work2 = m_apm_init(); + } + +if (b->m_apm_sign == 0) + { + m_apm_copy(r,a); + return; + } + +if (a->m_apm_sign == 0) + { + m_apm_copy(r,b); + r->m_apm_sign = -(r->m_apm_sign); + return; + } + +if (a->m_apm_sign == 1 && b->m_apm_sign == -1) + { + b->m_apm_sign = 1; + m_apm_add(r,a,b); + b->m_apm_sign = -1; + return; + } + +if (a->m_apm_sign == -1 && b->m_apm_sign == 1) + { + b->m_apm_sign = -1; + m_apm_add(r,a,b); + b->m_apm_sign = 1; + return; + } + +/* now, the signs are the same */ +/* make a positive working copy */ + +m_apm_absolute_value(M_work1, a); +m_apm_absolute_value(M_work2, b); + +/* are they the same?? if so, the result is zero */ + +if ((icompare = m_apm_compare(M_work1, M_work2)) == 0) + { + M_set_to_zero(r); + return; + } + +if (icompare == 1) /* |a| > |b| (do A-B) */ + { + flag = TRUE; + sign = a->m_apm_sign; + } +else /* |b| > |a| (do B-A) */ + { + flag = FALSE; + sign = -(a->m_apm_sign); + } + +aexp = M_work1->m_apm_exponent; +bexp = M_work2->m_apm_exponent; + +if (aexp > bexp) + M_apm_scale(M_work2, (aexp - bexp)); + +if (aexp < bexp) + M_apm_scale(M_work1, (bexp - aexp)); + +adigits = M_work1->m_apm_datalength; +bdigits = M_work2->m_apm_datalength; + +if (adigits > bdigits) + M_apm_pad(M_work2, adigits); + +if (adigits < bdigits) + M_apm_pad(M_work1, bdigits); + +if (flag) /* perform A-B, M_work1 - M_work2 */ + { + m_apm_copy(r, M_work1); + j = (r->m_apm_datalength + 1) >> 1; + borrow = 0; + + while (TRUE) + { + j--; + itmp = (int)r->m_apm_data[j] - (int)M_work2->m_apm_data[j] - borrow; + + if (itmp >= 0) + { + r->m_apm_data[j] = (UCHAR)itmp; + borrow = 0; + } + else + { + r->m_apm_data[j] = (UCHAR)(100 + itmp); + borrow = 1; + } + + if (j == 0) + break; + } + } +else /* perform B-A, M_work2 - M_work1 */ + { + m_apm_copy(r, M_work2); + j = (r->m_apm_datalength + 1) >> 1; + borrow = 0; + + while (TRUE) + { + j--; + itmp = (int)r->m_apm_data[j] - (int)M_work1->m_apm_data[j] - borrow; + + if (itmp >= 0) + { + r->m_apm_data[j] = (UCHAR)itmp; + borrow = 0; + } + else + { + r->m_apm_data[j] = (UCHAR)(100 + itmp); + borrow = 1; + } + + if (j == 0) + break; + } + } + +r->m_apm_sign = sign; + +M_apm_normalize(r); +} +/****************************************************************************/ diff --git a/src/mapm/mapm_cpi.c b/src/mapm/mapm_cpi.c new file mode 100644 index 00000000..43152014 --- /dev/null +++ b/src/mapm/mapm_cpi.c @@ -0,0 +1,153 @@ + +/* + * M_APM - mapm_cpi.c + * + * Copyright (C) 2001 - 2002 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +/****************************************************************************/ +/* + * check if our local copy of PI is precise enough + * for our purpose. if not, calculate PI so it's + * as precise as desired, accurate to 'places' decimal + * places. + */ +void M_check_PI_places(int places) +{ +int dplaces; + +dplaces = places + 2; + +if (dplaces > MM_lc_PI_digits) + { + MM_lc_PI_digits = dplaces + 2; + + /* compute PI using the AGM (see right below) */ + + M_calculate_PI_AGM(MM_lc_PI, (dplaces + 5)); + + m_apm_multiply(MM_lc_HALF_PI, MM_0_5, MM_lc_PI); + m_apm_multiply(MM_lc_2_PI, MM_Two, MM_lc_PI); + } +} +/****************************************************************************/ +/* + * Calculate PI using the AGM (Arithmetic-Geometric Mean) + * + * Init : A0 = 1 + * B0 = 1 / sqrt(2) + * Sum = 1 + * + * Iterate: n = 1... + * + * + * A = 0.5 * [ A + B ] + * n n-1 n-1 + * + * + * B = sqrt [ A * B ] + * n n-1 n-1 + * + * + * + * C = 0.5 * [ A - B ] + * n n-1 n-1 + * + * + * 2 n+1 + * Sum = Sum - C * 2 + * n + * + * + * At the end when C is 'small enough' : + * n + * + * 2 + * PI = 4 * A / Sum + * n+1 + * + * -OR- + * + * 2 + * PI = ( A + B ) / Sum + * n n + * + */ +void M_calculate_PI_AGM(M_APM outv, int places) +{ +M_APM tmp1, tmp2, a0, b0, c0, a1, b1, sum, pow_2; +int dplaces, nn; + +tmp1 = M_get_stack_var(); +tmp2 = M_get_stack_var(); +a0 = M_get_stack_var(); +b0 = M_get_stack_var(); +c0 = M_get_stack_var(); +a1 = M_get_stack_var(); +b1 = M_get_stack_var(); +sum = M_get_stack_var(); +pow_2 = M_get_stack_var(); + +dplaces = places + 16; + +m_apm_copy(a0, MM_One); +m_apm_copy(sum, MM_One); +m_apm_copy(pow_2, MM_Four); +m_apm_sqrt(b0, dplaces, MM_0_5); /* sqrt(0.5) */ + +while (TRUE) + { + m_apm_add(tmp1, a0, b0); + m_apm_multiply(a1, MM_0_5, tmp1); + + m_apm_multiply(tmp1, a0, b0); + m_apm_sqrt(b1, dplaces, tmp1); + + m_apm_subtract(tmp1, a0, b0); + m_apm_multiply(c0, MM_0_5, tmp1); + + /* + * the net 'PI' calculated from this iteration will + * be accurate to ~4 X the value of (c0)'s exponent. + * this was determined experimentally. + */ + + nn = -4 * c0->m_apm_exponent; + + m_apm_multiply(tmp1, c0, c0); + m_apm_multiply(tmp2, tmp1, pow_2); + m_apm_subtract(tmp1, sum, tmp2); + m_apm_round(sum, dplaces, tmp1); + + if (nn >= dplaces) + break; + + m_apm_copy(a0, a1); + m_apm_copy(b0, b1); + + m_apm_multiply(tmp1, pow_2, MM_Two); + m_apm_copy(pow_2, tmp1); + } + +m_apm_add(tmp1, a1, b1); +m_apm_multiply(tmp2, tmp1, tmp1); +m_apm_divide(tmp1, dplaces, tmp2, sum); +m_apm_round(outv, places, tmp1); + +M_restore_stack(9); +} +/****************************************************************************/ diff --git a/src/mapm/mapm_div.c b/src/mapm/mapm_div.c new file mode 100644 index 00000000..cf5d3d58 --- /dev/null +++ b/src/mapm/mapm_div.c @@ -0,0 +1,293 @@ + +/* + * M_APM - mapm_div.c + * + * Copyright (C) 1999 - 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +static M_APM M_div_worka; +static M_APM M_div_workb; +static M_APM M_div_tmp7; +static M_APM M_div_tmp8; +static M_APM M_div_tmp9; + +static int M_div_firsttime = TRUE; + +/****************************************************************************/ +void M_free_all_div() +{ +if (M_div_firsttime == FALSE) + { + m_apm_free(M_div_worka); + m_apm_free(M_div_workb); + m_apm_free(M_div_tmp7); + m_apm_free(M_div_tmp8); + m_apm_free(M_div_tmp9); + + M_div_firsttime = TRUE; + } +} +/****************************************************************************/ +void m_apm_integer_div_rem(M_APM qq, M_APM rr, M_APM aa, M_APM bb) +{ +m_apm_integer_divide(qq, aa, bb); +m_apm_multiply(M_div_tmp7, qq, bb); +m_apm_subtract(rr, aa, M_div_tmp7); +} +/****************************************************************************/ +void m_apm_integer_divide(M_APM rr, M_APM aa, M_APM bb) +{ +/* + * we must use this divide function since the + * faster divide function using the reciprocal + * will round the result (possibly changing + * nnm.999999... --> nn(m+1).0000 which would + * invalidate the 'integer_divide' goal). + */ + +M_apm_sdivide(rr, 4, aa, bb); + +if (rr->m_apm_exponent <= 0) /* result is 0 */ + { + M_set_to_zero(rr); + } +else + { + if (rr->m_apm_datalength > rr->m_apm_exponent) + { + rr->m_apm_datalength = rr->m_apm_exponent; + M_apm_normalize(rr); + } + } +} +/****************************************************************************/ +void M_apm_sdivide(M_APM r, int places, M_APM a, M_APM b) +{ +int j, k, m, b0, sign, nexp, indexr, icompare, iterations; +long trial_numer; +void *vp; + +if (M_div_firsttime) + { + M_div_firsttime = FALSE; + + M_div_worka = m_apm_init(); + M_div_workb = m_apm_init(); + M_div_tmp7 = m_apm_init(); + M_div_tmp8 = m_apm_init(); + M_div_tmp9 = m_apm_init(); + } + +sign = a->m_apm_sign * b->m_apm_sign; + +if (sign == 0) /* one number is zero, result is zero */ + { + if (b->m_apm_sign == 0) + { + M_apm_log_error_msg(M_APM_RETURN, + "Warning! ... \'M_apm_sdivide\', Divide by 0"); + } + + M_set_to_zero(r); + return; + } + +/* + * Knuth step D1. Since base = 100, base / 2 = 50. + * (also make the working copies positive) + */ + +if (b->m_apm_data[0] >= 50) + { + m_apm_absolute_value(M_div_worka, a); + m_apm_absolute_value(M_div_workb, b); + } +else /* 'normal' step D1 */ + { + k = 100 / (b->m_apm_data[0] + 1); + m_apm_set_long(M_div_tmp9, (long)k); + + m_apm_multiply(M_div_worka, M_div_tmp9, a); + m_apm_multiply(M_div_workb, M_div_tmp9, b); + + M_div_worka->m_apm_sign = 1; + M_div_workb->m_apm_sign = 1; + } + +/* setup trial denominator for step D3 */ + +b0 = 100 * (int)M_div_workb->m_apm_data[0]; + +if (M_div_workb->m_apm_datalength >= 3) + b0 += M_div_workb->m_apm_data[1]; + +nexp = M_div_worka->m_apm_exponent - M_div_workb->m_apm_exponent; + +if (nexp > 0) + iterations = nexp + places + 1; +else + iterations = places + 1; + +k = (iterations + 1) >> 1; /* required size of result, in bytes */ + +if (k > r->m_apm_malloclength) + { + if ((vp = MAPM_REALLOC(r->m_apm_data, (k + 32))) == NULL) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, "\'M_apm_sdivide\', Out of memory"); + } + + r->m_apm_malloclength = k + 28; + r->m_apm_data = (UCHAR *)vp; + } + +/* clear the exponent in the working copies */ + +M_div_worka->m_apm_exponent = 0; +M_div_workb->m_apm_exponent = 0; + +/* if numbers are equal, ratio == 1.00000... */ + +if ((icompare = m_apm_compare(M_div_worka, M_div_workb)) == 0) + { + iterations = 1; + r->m_apm_data[0] = 10; + nexp++; + } +else /* ratio not 1, do the real division */ + { + if (icompare == 1) /* numerator > denominator */ + { + nexp++; /* to adjust the final exponent */ + M_div_worka->m_apm_exponent += 1; /* multiply numerator by 10 */ + } + else /* numerator < denominator */ + { + M_div_worka->m_apm_exponent += 2; /* multiply numerator by 100 */ + } + + indexr = 0; + m = 0; + + while (TRUE) + { + /* + * Knuth step D3. Only use the 3rd -> 6th digits if the number + * actually has that many digits. + */ + + trial_numer = 10000L * (long)M_div_worka->m_apm_data[0]; + + if (M_div_worka->m_apm_datalength >= 5) + { + trial_numer += 100 * M_div_worka->m_apm_data[1] + + M_div_worka->m_apm_data[2]; + } + else + { + if (M_div_worka->m_apm_datalength >= 3) + trial_numer += 100 * M_div_worka->m_apm_data[1]; + } + + j = (int)(trial_numer / b0); + + /* + * Since the library 'normalizes' all the results, we need + * to look at the exponent of the number to decide if we + * have a lead in 0n or 00. + */ + + if ((k = 2 - M_div_worka->m_apm_exponent) > 0) + { + while (TRUE) + { + j /= 10; + if (--k == 0) + break; + } + } + + if (j == 100) /* qhat == base ?? */ + j = 99; /* if so, decrease by 1 */ + + m_apm_set_long(M_div_tmp8, (long)j); + m_apm_multiply(M_div_tmp7, M_div_tmp8, M_div_workb); + + /* + * Compare our q-hat (j) against the desired number. + * j is either correct, 1 too large, or 2 too large + * per Theorem B on pg 272 of Art of Compter Programming, + * Volume 2, 3rd Edition. + * + * The above statement is only true if using the 2 leading + * digits of the numerator and the leading digit of the + * denominator. Since we are using the (3) leading digits + * of the numerator and the (2) leading digits of the + * denominator, we eliminate the case where our q-hat is + * 2 too large, (and q-hat being 1 too large is quite remote). + */ + + if (m_apm_compare(M_div_tmp7, M_div_worka) == 1) + { + j--; + m_apm_subtract(M_div_tmp8, M_div_tmp7, M_div_workb); + m_apm_copy(M_div_tmp7, M_div_tmp8); + } + + /* + * Since we know q-hat is correct, step D6 is unnecessary. + * + * Store q-hat, step D5. Since D6 is unnecessary, we can + * do D5 before D4 and decide if we are done. + */ + + r->m_apm_data[indexr++] = (UCHAR)j; /* j == 'qhat' */ + m += 2; + + if (m >= iterations) + break; + + /* step D4 */ + + m_apm_subtract(M_div_tmp9, M_div_worka, M_div_tmp7); + + /* + * if the subtraction yields zero, the division is exact + * and we are done early. + */ + + if (M_div_tmp9->m_apm_sign == 0) + { + iterations = m; + break; + } + + /* multiply by 100 and re-save */ + M_div_tmp9->m_apm_exponent += 2; + m_apm_copy(M_div_worka, M_div_tmp9); + } + } + +r->m_apm_sign = sign; +r->m_apm_exponent = nexp; +r->m_apm_datalength = iterations; + +M_apm_normalize(r); +} +/****************************************************************************/ diff --git a/src/mapm/mapm_exp.c b/src/mapm/mapm_exp.c new file mode 100644 index 00000000..d204c734 --- /dev/null +++ b/src/mapm/mapm_exp.c @@ -0,0 +1,232 @@ + +/* + * M_APM - mapm_exp.c + * + * Copyright (C) 1999 - 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +static M_APM MM_exp_log2R; +static M_APM MM_exp_1024R; +static int MM_firsttime1 = TRUE; + +/****************************************************************************/ +void M_free_all_exp() +{ +if (MM_firsttime1 == FALSE) + { + m_apm_free(MM_exp_log2R); + m_apm_free(MM_exp_1024R); + + MM_firsttime1 = TRUE; + } +} +/****************************************************************************/ +void m_apm_exp(M_APM r, int places, M_APM x) +{ +M_APM tmp7, tmp8, tmp9; +char outstr[64]; +int dplaces, nn, ii; + +if (MM_firsttime1) + { + MM_firsttime1 = FALSE; + + MM_exp_log2R = m_apm_init(); + MM_exp_1024R = m_apm_init(); + + m_apm_set_string(MM_exp_log2R, "1.44269504089"); /* ~ 1 / log(2) */ + m_apm_set_string(MM_exp_1024R, "9.765625E-4"); /* 1 / 1024 */ + } + +tmp7 = M_get_stack_var(); +tmp8 = M_get_stack_var(); +tmp9 = M_get_stack_var(); + +/* + From David H. Bailey's MPFUN Fortran package : + + exp (t) = (1 + r + r^2 / 2! + r^3 / 3! + r^4 / 4! ...) ^ q * 2 ^ n + + where q = 256, r = t' / q, t' = t - n Log(2) and where n is chosen so + that -0.5 Log(2) < t' <= 0.5 Log(2). Reducing t mod Log(2) and + dividing by 256 insures that -0.001 < r <= 0.001, which accelerates + convergence in the above series. + + we won't let n == 1 or -1. if n computes out to be 1, we will set + n = 0. this is so we can still calculate log(2). if we let n = 1, + then we need log(2) in order to compute log(2), which is no good ... + + if the new 'n' == 0, we will then use q = 1024 instead of 256 so + the series still converges as fast. + + since the value of log(2) is critical to this function, log, and + log10, we will keep our own local copy of it. if we need more + precision in our log(2), we will re-compute it on the fly to get + the desired precision. +*/ + +/* find 'n' and convert it to a normal C int */ +/* we just need an approx 1/log(2) for this calculation */ + +m_apm_multiply(tmp8, x, MM_exp_log2R); + +/* round to the nearest int */ + +if (x->m_apm_sign >= 0) + m_apm_add(tmp9, tmp8, MM_0_5); +else + m_apm_subtract(tmp9, tmp8, MM_0_5); + +m_apm_to_integer_string(outstr, tmp9); +nn = atoi(outstr); + +if (abs(nn) == 1) + nn = 0; + +if (nn == 0) + { + ii = 10; + dplaces = places + 8; + m_apm_multiply(tmp9, x, MM_exp_1024R); + } +else + { + ii = 8; + dplaces = places + 6; + + /* check to make sure our log(2) is accurate enough */ + + M_check_log_places(dplaces); + + m_apm_set_long(tmp7, (long)nn); + m_apm_multiply(tmp8, tmp7, MM_lc_log2); + m_apm_subtract(tmp7, x, tmp8); + + /* + * guarantee that |tmp7| < 1. + * the normal case will break out immediately. + * this is just here to plan for the future. + * when sizeof(int) gets real big, it may + * be possible for the 'nn' calculation from + * above to not be optimized due to the inexact + * constant used for 'MM_exp_log2R'. + */ + + while (TRUE) + { + if (tmp7->m_apm_exponent <= 0) + break; + + if (tmp7->m_apm_sign == 0) + break; + + if (tmp7->m_apm_sign == 1) + { + nn++; + m_apm_subtract(tmp8, tmp7, MM_lc_log2); + m_apm_copy(tmp7, tmp8); + } + else + { + nn--; + m_apm_add(tmp8, tmp7, MM_lc_log2); + m_apm_copy(tmp7, tmp8); + } + } + + m_apm_multiply(tmp9, tmp7, MM_5x_256R); + } + +/* perform the series expansion ... */ + +M_raw_exp(tmp8, dplaces, tmp9); + +/* + * raise result to the 256 OR 1024 power (q = 256 OR 1024) + * + * note : x ^ 256 == (((x ^ 2) ^ 2) ^ 2) ... 8 times + * : x ^ 1024 == (((x ^ 2) ^ 2) ^ 2) ... 10 times + */ + +while (--ii >= 0) + { + m_apm_multiply(tmp9, tmp8, tmp8); + m_apm_round(tmp8, dplaces, tmp9); + } + +/* now compute 2 ^ N */ + +m_apm_integer_pow(tmp7, dplaces, MM_Two, nn); + +m_apm_multiply(tmp9, tmp7, tmp8); +m_apm_round(r, places, tmp9); +M_restore_stack(3); /* restore the 3 locals we used here */ +} +/****************************************************************************/ +/* + calculate the exponential function using the following series : + + x^2 x^3 x^4 x^5 + exp(x) == 1 + x + --- + --- + --- + --- ... + 2! 3! 4! 5! + +*/ +void M_raw_exp(M_APM rr, int places, M_APM xx) +{ +M_APM tmp0, digit, term; +int tolerance, local_precision, prev_exp; +long m1; + +tmp0 = M_get_stack_var(); +term = M_get_stack_var(); +digit = M_get_stack_var(); + +local_precision = places + 8; +tolerance = -(places + 4); +prev_exp = 0; + +m_apm_add(rr, MM_One, xx); +m_apm_copy(term, xx); + +m1 = 2L; + +while (TRUE) + { + m_apm_set_long(digit, m1); + m_apm_multiply(tmp0, term, xx); + m_apm_divide(term, local_precision, tmp0, digit); + m_apm_add(tmp0, rr, term); + m_apm_copy(rr, tmp0); + + if ((term->m_apm_exponent < tolerance) || (term->m_apm_sign == 0)) + break; + + if (m1 != 2L) + { + local_precision = local_precision + term->m_apm_exponent - prev_exp; + + if (local_precision < 20) + local_precision = 20; + } + + prev_exp = term->m_apm_exponent; + m1++; + } + +M_restore_stack(3); /* restore the 3 locals we used here */ +} +/****************************************************************************/ diff --git a/src/mapm/mapm_fam.c b/src/mapm/mapm_fam.c new file mode 100644 index 00000000..c720b5e9 --- /dev/null +++ b/src/mapm/mapm_fam.c @@ -0,0 +1,47 @@ + +/* + * M_APM - mapm_fam.c + * + * Copyright (C) 2001 - 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +/****************************************************************************/ +void m_apm_free_all_mem() +{ +M_free_all_add(); /* call each module which has statically declared data */ +M_free_all_div(); +M_free_all_exp(); + +#ifndef NO_FFT_MULTIPLY +M_free_all_fft(); +#endif + +M_free_all_pow(); +M_free_all_rnd(); +M_free_all_set(); +M_free_all_cnst(); +M_free_all_fmul(); +M_free_all_stck(); +M_free_all_util(); +} +/****************************************************************************/ +void m_apm_trim_mem_usage() +{ +m_apm_free_all_mem(); +m_apm_free(m_apm_init()); +} +/****************************************************************************/ diff --git a/src/mapm/mapm_fft.c b/src/mapm/mapm_fft.c new file mode 100644 index 00000000..dd8d47c1 --- /dev/null +++ b/src/mapm/mapm_fft.c @@ -0,0 +1,900 @@ + +/* + * M_APM - mapm_fft.c + * + * This FFT (Fast Fourier Transform) is from Takuya OOURA + * + * Copyright(C) 1996-1999 Takuya OOURA + * email: ooura@mmm.t.u-tokyo.ac.jp + * + * See full FFT documentation below ... (MCR) + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" +#include + + +#ifndef MM_PI_2 +#define MM_PI_2 1.570796326794896619231321691639751442098584699687 +#endif + +#ifndef WR5000 /* cos(MM_PI_2*0.5000) */ +#define WR5000 0.707106781186547524400844362104849039284835937688 +#endif + +#ifndef RDFT_LOOP_DIV /* control of the RDFT's speed & tolerance */ +#define RDFT_LOOP_DIV 64 +#endif + +extern void M_fast_mul_fft(UCHAR *, UCHAR *, UCHAR *, int); + +extern void M_rdft(int, int, double *); +extern void M_bitrv2(int, double *); +extern void M_cftfsub(int, double *); +extern void M_cftbsub(int, double *); +extern void M_rftfsub(int, double *); +extern void M_rftbsub(int, double *); +extern void M_cft1st(int, double *); +extern void M_cftmdl(int, int, double *); + +static double *M_aa_array, *M_bb_array; +static int M_size = -1; + +/****************************************************************************/ +void M_free_all_fft() +{ +if (M_size > 0) + { + MAPM_FREE(M_aa_array); + MAPM_FREE(M_bb_array); + M_size = -1; + } +} +/****************************************************************************/ +/* + * multiply 'uu' by 'vv' with nbytes each + * yielding a 2*nbytes result in 'ww'. + * each byte contains a base 100 'digit', + * i.e.: range from 0-99. + * + * MSB LSB + * + * uu,vv [0] [1] [2] ... [N-1] + * ww [0] [1] [2] ... [2N-1] + */ + +void M_fast_mul_fft(UCHAR *ww, UCHAR *uu, UCHAR *vv, int nbytes) +{ +int mflag, i, j, nn2, nn; +double carry, nnr, dtemp, *a, *b; +UCHAR *w0; +unsigned long ul; + +if (M_size < 0) /* if first time in, setup working arrays */ + { + if (M_get_sizeof_int() == 2) /* if still using 16 bit compilers */ + M_size = 1030; + else + M_size = 8200; + + M_aa_array = (double *)MAPM_MALLOC(M_size * sizeof(double)); + M_bb_array = (double *)MAPM_MALLOC(M_size * sizeof(double)); + + if ((M_aa_array == NULL) || (M_bb_array == NULL)) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, "\'M_fast_mul_fft\', Out of memory"); + } + } + +nn = nbytes; +nn2 = nbytes >> 1; + +if (nn > M_size) + { + mflag = TRUE; + + a = (double *)MAPM_MALLOC((nn + 8) * sizeof(double)); + b = (double *)MAPM_MALLOC((nn + 8) * sizeof(double)); + + if ((a == NULL) || (b == NULL)) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, "\'M_fast_mul_fft\', Out of memory"); + } + } +else + { + mflag = FALSE; + + a = M_aa_array; + b = M_bb_array; + } + +/* + * convert normal base 100 MAPM numbers to base 10000 + * for the FFT operation. + */ + +i = 0; +for (j=0; j < nn2; j++) + { + a[j] = (double)((int)uu[i] * 100 + uu[i+1]); + b[j] = (double)((int)vv[i] * 100 + vv[i+1]); + i += 2; + } + +/* zero fill the second half of the arrays */ + +for (j=nn2; j < nn; j++) + { + a[j] = 0.0; + b[j] = 0.0; + } + +/* perform the forward Fourier transforms for both numbers */ + +M_rdft(nn, 1, a); +M_rdft(nn, 1, b); + +/* perform the convolution ... */ + +b[0] *= a[0]; +b[1] *= a[1]; + +for (j=3; j <= nn; j += 2) + { + dtemp = b[j-1]; + b[j-1] = dtemp * a[j-1] - b[j] * a[j]; + b[j] = dtemp * a[j] + b[j] * a[j-1]; + } + +/* perform the inverse transform on the result */ + +M_rdft(nn, -1, b); + +/* perform a final pass to release all the carries */ +/* we are still in base 10000 at this point */ + +carry = 0.0; +j = nn; +nnr = 2.0 / (double)nn; + +while (1) + { + dtemp = b[--j] * nnr + carry + 0.5; + ul = (unsigned long)(dtemp * 1.0E-4); + carry = (double)ul; + b[j] = dtemp - carry * 10000.0; + + if (j == 0) + break; + } + +/* copy result to our destination after converting back to base 100 */ + +w0 = ww; +M_get_div_rem((int)ul, w0, (w0 + 1)); + +for (j=0; j <= (nn - 2); j++) + { + w0 += 2; + M_get_div_rem((int)b[j], w0, (w0 + 1)); + } + +if (mflag) + { + MAPM_FREE(b); + MAPM_FREE(a); + } +} +/****************************************************************************/ + +/* + * The following info is from Takuya OOURA's documentation : + * + * NOTE : MAPM only uses the 'RDFT' function (as well as the + * functions RDFT calls). All the code from here down + * in this file is from Takuya OOURA. The only change I + * made was to add 'M_' in front of all the functions + * I used. This was to guard against any possible + * name collisions in the future. + * + * MCR 06 July 2000 + * + * + * General Purpose FFT (Fast Fourier/Cosine/Sine Transform) Package + * + * Description: + * A package to calculate Discrete Fourier/Cosine/Sine Transforms of + * 1-dimensional sequences of length 2^N. + * + * fft4g_h.c : FFT Package in C - Simple Version I (radix 4,2) + * + * rdft: Real Discrete Fourier Transform + * + * Method: + * -------- rdft -------- + * A method with a following butterfly operation appended to "cdft". + * In forward transform : + * A[k] = sum_j=0^n-1 a[j]*W(n)^(j*k), 0<=k<=n/2, + * W(n) = exp(2*pi*i/n), + * this routine makes an array x[] : + * x[j] = a[2*j] + i*a[2*j+1], 0<=j RDFT + R[k] = sum_j=0^n-1 a[j]*cos(2*pi*j*k/n), 0<=k<=n/2 + I[k] = sum_j=0^n-1 a[j]*sin(2*pi*j*k/n), 0 IRDFT (excluding scale) + a[k] = (R[0] + R[n/2]*cos(pi*k))/2 + + sum_j=1^n/2-1 R[j]*cos(2*pi*j*k/n) + + sum_j=1^n/2-1 I[j]*sin(2*pi*j*k/n), 0<=k + rdft(n, 1, a); + + rdft(n, -1, a); + [parameters] + n :data length (int) + n >= 2, n = power of 2 + a[0...n-1] :input/output data (double *) + + output data + a[2*k] = R[k], 0<=k + input data + a[2*j] = R[j], 0<=j= 0) { + if (n > 4) { + M_bitrv2(n, a); + M_cftfsub(n, a); + M_rftfsub(n, a); + } else if (n == 4) { + M_cftfsub(n, a); + } + xi = a[0] - a[1]; + a[0] += a[1]; + a[1] = xi; + } else { + a[1] = 0.5 * (a[0] - a[1]); + a[0] -= a[1]; + if (n > 4) { + M_rftbsub(n, a); + M_bitrv2(n, a); + M_cftbsub(n, a); + } else if (n == 4) { + M_cftfsub(n, a); + } + } +} + + + +void M_bitrv2(int n, double *a) +{ + int j0, k0, j1, k1, l, m, i, j, k; + double xr, xi, yr, yi; + + l = n >> 2; + m = 2; + while (m < l) { + l >>= 1; + m <<= 1; + } + if (m == l) { + j0 = 0; + for (k0 = 0; k0 < m; k0 += 2) { + k = k0; + for (j = j0; j < j0 + k0; j += 2) { + xr = a[j]; + xi = a[j + 1]; + yr = a[k]; + yi = a[k + 1]; + a[j] = yr; + a[j + 1] = yi; + a[k] = xr; + a[k + 1] = xi; + j1 = j + m; + k1 = k + 2 * m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m; + k1 -= m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += m; + k1 += 2 * m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + for (i = n >> 1; i > (k ^= i); i >>= 1); + } + j1 = j0 + k0 + m; + k1 = j1 + m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + for (i = n >> 1; i > (j0 ^= i); i >>= 1); + } + } else { + j0 = 0; + for (k0 = 2; k0 < m; k0 += 2) { + for (i = n >> 1; i > (j0 ^= i); i >>= 1); + k = k0; + for (j = j0; j < j0 + k0; j += 2) { + xr = a[j]; + xi = a[j + 1]; + yr = a[k]; + yi = a[k + 1]; + a[j] = yr; + a[j + 1] = yi; + a[k] = xr; + a[k + 1] = xi; + j1 = j + m; + k1 = k + m; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + for (i = n >> 1; i > (k ^= i); i >>= 1); + } + } + } +} + + + +void M_cftfsub(int n, double *a) +{ + int j, j1, j2, j3, l; + double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; + + l = 2; + if (n > 8) { + M_cft1st(n, a); + l = 8; + while ((l << 2) < n) { + M_cftmdl(n, l, a); + l <<= 2; + } + } + if ((l << 2) == n) { + for (j = 0; j < l; j += 2) { + j1 = j + l; + j2 = j1 + l; + j3 = j2 + l; + x0r = a[j] + a[j1]; + x0i = a[j + 1] + a[j1 + 1]; + x1r = a[j] - a[j1]; + x1i = a[j + 1] - a[j1 + 1]; + x2r = a[j2] + a[j3]; + x2i = a[j2 + 1] + a[j3 + 1]; + x3r = a[j2] - a[j3]; + x3i = a[j2 + 1] - a[j3 + 1]; + a[j] = x0r + x2r; + a[j + 1] = x0i + x2i; + a[j2] = x0r - x2r; + a[j2 + 1] = x0i - x2i; + a[j1] = x1r - x3i; + a[j1 + 1] = x1i + x3r; + a[j3] = x1r + x3i; + a[j3 + 1] = x1i - x3r; + } + } else { + for (j = 0; j < l; j += 2) { + j1 = j + l; + x0r = a[j] - a[j1]; + x0i = a[j + 1] - a[j1 + 1]; + a[j] += a[j1]; + a[j + 1] += a[j1 + 1]; + a[j1] = x0r; + a[j1 + 1] = x0i; + } + } +} + + + +void M_cftbsub(int n, double *a) +{ + int j, j1, j2, j3, l; + double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; + + l = 2; + if (n > 8) { + M_cft1st(n, a); + l = 8; + while ((l << 2) < n) { + M_cftmdl(n, l, a); + l <<= 2; + } + } + if ((l << 2) == n) { + for (j = 0; j < l; j += 2) { + j1 = j + l; + j2 = j1 + l; + j3 = j2 + l; + x0r = a[j] + a[j1]; + x0i = -a[j + 1] - a[j1 + 1]; + x1r = a[j] - a[j1]; + x1i = -a[j + 1] + a[j1 + 1]; + x2r = a[j2] + a[j3]; + x2i = a[j2 + 1] + a[j3 + 1]; + x3r = a[j2] - a[j3]; + x3i = a[j2 + 1] - a[j3 + 1]; + a[j] = x0r + x2r; + a[j + 1] = x0i - x2i; + a[j2] = x0r - x2r; + a[j2 + 1] = x0i + x2i; + a[j1] = x1r - x3i; + a[j1 + 1] = x1i - x3r; + a[j3] = x1r + x3i; + a[j3 + 1] = x1i + x3r; + } + } else { + for (j = 0; j < l; j += 2) { + j1 = j + l; + x0r = a[j] - a[j1]; + x0i = -a[j + 1] + a[j1 + 1]; + a[j] += a[j1]; + a[j + 1] = -a[j + 1] - a[j1 + 1]; + a[j1] = x0r; + a[j1 + 1] = x0i; + } + } +} + + + +void M_cft1st(int n, double *a) +{ + int j, kj, kr; + double ew, wn4r, wk1r, wk1i, wk2r, wk2i, wk3r, wk3i; + double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; + + x0r = a[0] + a[2]; + x0i = a[1] + a[3]; + x1r = a[0] - a[2]; + x1i = a[1] - a[3]; + x2r = a[4] + a[6]; + x2i = a[5] + a[7]; + x3r = a[4] - a[6]; + x3i = a[5] - a[7]; + a[0] = x0r + x2r; + a[1] = x0i + x2i; + a[4] = x0r - x2r; + a[5] = x0i - x2i; + a[2] = x1r - x3i; + a[3] = x1i + x3r; + a[6] = x1r + x3i; + a[7] = x1i - x3r; + wn4r = WR5000; + x0r = a[8] + a[10]; + x0i = a[9] + a[11]; + x1r = a[8] - a[10]; + x1i = a[9] - a[11]; + x2r = a[12] + a[14]; + x2i = a[13] + a[15]; + x3r = a[12] - a[14]; + x3i = a[13] - a[15]; + a[8] = x0r + x2r; + a[9] = x0i + x2i; + a[12] = x2i - x0i; + a[13] = x0r - x2r; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[10] = wn4r * (x0r - x0i); + a[11] = wn4r * (x0r + x0i); + x0r = x3i + x1r; + x0i = x3r - x1i; + a[14] = wn4r * (x0i - x0r); + a[15] = wn4r * (x0i + x0r); + ew = MM_PI_2 / n; + kr = 0; + for (j = 16; j < n; j += 16) { + for (kj = n >> 2; kj > (kr ^= kj); kj >>= 1); + wk1r = cos(ew * kr); + wk1i = sin(ew * kr); + wk2r = 1 - 2 * wk1i * wk1i; + wk2i = 2 * wk1i * wk1r; + wk3r = wk1r - 2 * wk2i * wk1i; + wk3i = 2 * wk2i * wk1r - wk1i; + x0r = a[j] + a[j + 2]; + x0i = a[j + 1] + a[j + 3]; + x1r = a[j] - a[j + 2]; + x1i = a[j + 1] - a[j + 3]; + x2r = a[j + 4] + a[j + 6]; + x2i = a[j + 5] + a[j + 7]; + x3r = a[j + 4] - a[j + 6]; + x3i = a[j + 5] - a[j + 7]; + a[j] = x0r + x2r; + a[j + 1] = x0i + x2i; + x0r -= x2r; + x0i -= x2i; + a[j + 4] = wk2r * x0r - wk2i * x0i; + a[j + 5] = wk2r * x0i + wk2i * x0r; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j + 2] = wk1r * x0r - wk1i * x0i; + a[j + 3] = wk1r * x0i + wk1i * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j + 6] = wk3r * x0r - wk3i * x0i; + a[j + 7] = wk3r * x0i + wk3i * x0r; + x0r = wn4r * (wk1r - wk1i); + wk1i = wn4r * (wk1r + wk1i); + wk1r = x0r; + wk3r = wk1r - 2 * wk2r * wk1i; + wk3i = 2 * wk2r * wk1r - wk1i; + x0r = a[j + 8] + a[j + 10]; + x0i = a[j + 9] + a[j + 11]; + x1r = a[j + 8] - a[j + 10]; + x1i = a[j + 9] - a[j + 11]; + x2r = a[j + 12] + a[j + 14]; + x2i = a[j + 13] + a[j + 15]; + x3r = a[j + 12] - a[j + 14]; + x3i = a[j + 13] - a[j + 15]; + a[j + 8] = x0r + x2r; + a[j + 9] = x0i + x2i; + x0r -= x2r; + x0i -= x2i; + a[j + 12] = -wk2i * x0r - wk2r * x0i; + a[j + 13] = -wk2i * x0i + wk2r * x0r; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j + 10] = wk1r * x0r - wk1i * x0i; + a[j + 11] = wk1r * x0i + wk1i * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j + 14] = wk3r * x0r - wk3i * x0i; + a[j + 15] = wk3r * x0i + wk3i * x0r; + } +} + + + +void M_cftmdl(int n, int l, double *a) +{ + int j, j1, j2, j3, k, kj, kr, m, m2; + double ew, wn4r, wk1r, wk1i, wk2r, wk2i, wk3r, wk3i; + double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; + + m = l << 2; + for (j = 0; j < l; j += 2) { + j1 = j + l; + j2 = j1 + l; + j3 = j2 + l; + x0r = a[j] + a[j1]; + x0i = a[j + 1] + a[j1 + 1]; + x1r = a[j] - a[j1]; + x1i = a[j + 1] - a[j1 + 1]; + x2r = a[j2] + a[j3]; + x2i = a[j2 + 1] + a[j3 + 1]; + x3r = a[j2] - a[j3]; + x3i = a[j2 + 1] - a[j3 + 1]; + a[j] = x0r + x2r; + a[j + 1] = x0i + x2i; + a[j2] = x0r - x2r; + a[j2 + 1] = x0i - x2i; + a[j1] = x1r - x3i; + a[j1 + 1] = x1i + x3r; + a[j3] = x1r + x3i; + a[j3 + 1] = x1i - x3r; + } + wn4r = WR5000; + for (j = m; j < l + m; j += 2) { + j1 = j + l; + j2 = j1 + l; + j3 = j2 + l; + x0r = a[j] + a[j1]; + x0i = a[j + 1] + a[j1 + 1]; + x1r = a[j] - a[j1]; + x1i = a[j + 1] - a[j1 + 1]; + x2r = a[j2] + a[j3]; + x2i = a[j2 + 1] + a[j3 + 1]; + x3r = a[j2] - a[j3]; + x3i = a[j2 + 1] - a[j3 + 1]; + a[j] = x0r + x2r; + a[j + 1] = x0i + x2i; + a[j2] = x2i - x0i; + a[j2 + 1] = x0r - x2r; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j1] = wn4r * (x0r - x0i); + a[j1 + 1] = wn4r * (x0r + x0i); + x0r = x3i + x1r; + x0i = x3r - x1i; + a[j3] = wn4r * (x0i - x0r); + a[j3 + 1] = wn4r * (x0i + x0r); + } + ew = MM_PI_2 / n; + kr = 0; + m2 = 2 * m; + for (k = m2; k < n; k += m2) { + for (kj = n >> 2; kj > (kr ^= kj); kj >>= 1); + wk1r = cos(ew * kr); + wk1i = sin(ew * kr); + wk2r = 1 - 2 * wk1i * wk1i; + wk2i = 2 * wk1i * wk1r; + wk3r = wk1r - 2 * wk2i * wk1i; + wk3i = 2 * wk2i * wk1r - wk1i; + for (j = k; j < l + k; j += 2) { + j1 = j + l; + j2 = j1 + l; + j3 = j2 + l; + x0r = a[j] + a[j1]; + x0i = a[j + 1] + a[j1 + 1]; + x1r = a[j] - a[j1]; + x1i = a[j + 1] - a[j1 + 1]; + x2r = a[j2] + a[j3]; + x2i = a[j2 + 1] + a[j3 + 1]; + x3r = a[j2] - a[j3]; + x3i = a[j2 + 1] - a[j3 + 1]; + a[j] = x0r + x2r; + a[j + 1] = x0i + x2i; + x0r -= x2r; + x0i -= x2i; + a[j2] = wk2r * x0r - wk2i * x0i; + a[j2 + 1] = wk2r * x0i + wk2i * x0r; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j1] = wk1r * x0r - wk1i * x0i; + a[j1 + 1] = wk1r * x0i + wk1i * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j3] = wk3r * x0r - wk3i * x0i; + a[j3 + 1] = wk3r * x0i + wk3i * x0r; + } + x0r = wn4r * (wk1r - wk1i); + wk1i = wn4r * (wk1r + wk1i); + wk1r = x0r; + wk3r = wk1r - 2 * wk2r * wk1i; + wk3i = 2 * wk2r * wk1r - wk1i; + for (j = k + m; j < l + (k + m); j += 2) { + j1 = j + l; + j2 = j1 + l; + j3 = j2 + l; + x0r = a[j] + a[j1]; + x0i = a[j + 1] + a[j1 + 1]; + x1r = a[j] - a[j1]; + x1i = a[j + 1] - a[j1 + 1]; + x2r = a[j2] + a[j3]; + x2i = a[j2 + 1] + a[j3 + 1]; + x3r = a[j2] - a[j3]; + x3i = a[j2 + 1] - a[j3 + 1]; + a[j] = x0r + x2r; + a[j + 1] = x0i + x2i; + x0r -= x2r; + x0i -= x2i; + a[j2] = -wk2i * x0r - wk2r * x0i; + a[j2 + 1] = -wk2i * x0i + wk2r * x0r; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j1] = wk1r * x0r - wk1i * x0i; + a[j1 + 1] = wk1r * x0i + wk1i * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j3] = wk3r * x0r - wk3i * x0i; + a[j3 + 1] = wk3r * x0i + wk3i * x0r; + } + } +} + + + +void M_rftfsub(int n, double *a) +{ + int i, i0, j, k; + double ec, w1r, w1i, wkr, wki, wdr, wdi, ss, xr, xi, yr, yi; + + ec = 2 * MM_PI_2 / n; + wkr = 0; + wki = 0; + wdi = cos(ec); + wdr = sin(ec); + wdi *= wdr; + wdr *= wdr; + w1r = 1 - 2 * wdr; + w1i = 2 * wdi; + ss = 2 * w1i; + i = n >> 1; + while (1) { + i0 = i - 4 * RDFT_LOOP_DIV; + if (i0 < 4) { + i0 = 4; + } + for (j = i - 4; j >= i0; j -= 4) { + k = n - j; + xr = a[j + 2] - a[k - 2]; + xi = a[j + 3] + a[k - 1]; + yr = wdr * xr - wdi * xi; + yi = wdr * xi + wdi * xr; + a[j + 2] -= yr; + a[j + 3] -= yi; + a[k - 2] += yr; + a[k - 1] -= yi; + wkr += ss * wdi; + wki += ss * (0.5 - wdr); + xr = a[j] - a[k]; + xi = a[j + 1] + a[k + 1]; + yr = wkr * xr - wki * xi; + yi = wkr * xi + wki * xr; + a[j] -= yr; + a[j + 1] -= yi; + a[k] += yr; + a[k + 1] -= yi; + wdr += ss * wki; + wdi += ss * (0.5 - wkr); + } + if (i0 == 4) { + break; + } + wkr = 0.5 * sin(ec * i0); + wki = 0.5 * cos(ec * i0); + wdr = 0.5 - (wkr * w1r - wki * w1i); + wdi = wkr * w1i + wki * w1r; + wkr = 0.5 - wkr; + i = i0; + } + xr = a[2] - a[n - 2]; + xi = a[3] + a[n - 1]; + yr = wdr * xr - wdi * xi; + yi = wdr * xi + wdi * xr; + a[2] -= yr; + a[3] -= yi; + a[n - 2] += yr; + a[n - 1] -= yi; +} + + + +void M_rftbsub(int n, double *a) +{ + int i, i0, j, k; + double ec, w1r, w1i, wkr, wki, wdr, wdi, ss, xr, xi, yr, yi; + + ec = 2 * MM_PI_2 / n; + wkr = 0; + wki = 0; + wdi = cos(ec); + wdr = sin(ec); + wdi *= wdr; + wdr *= wdr; + w1r = 1 - 2 * wdr; + w1i = 2 * wdi; + ss = 2 * w1i; + i = n >> 1; + a[i + 1] = -a[i + 1]; + while (1) { + i0 = i - 4 * RDFT_LOOP_DIV; + if (i0 < 4) { + i0 = 4; + } + for (j = i - 4; j >= i0; j -= 4) { + k = n - j; + xr = a[j + 2] - a[k - 2]; + xi = a[j + 3] + a[k - 1]; + yr = wdr * xr + wdi * xi; + yi = wdr * xi - wdi * xr; + a[j + 2] -= yr; + a[j + 3] = yi - a[j + 3]; + a[k - 2] += yr; + a[k - 1] = yi - a[k - 1]; + wkr += ss * wdi; + wki += ss * (0.5 - wdr); + xr = a[j] - a[k]; + xi = a[j + 1] + a[k + 1]; + yr = wkr * xr + wki * xi; + yi = wkr * xi - wki * xr; + a[j] -= yr; + a[j + 1] = yi - a[j + 1]; + a[k] += yr; + a[k + 1] = yi - a[k + 1]; + wdr += ss * wki; + wdi += ss * (0.5 - wkr); + } + if (i0 == 4) { + break; + } + wkr = 0.5 * sin(ec * i0); + wki = 0.5 * cos(ec * i0); + wdr = 0.5 - (wkr * w1r - wki * w1i); + wdi = wkr * w1i + wki * w1r; + wkr = 0.5 - wkr; + i = i0; + } + xr = a[2] - a[n - 2]; + xi = a[3] + a[n - 1]; + yr = wdr * xr + wdi * xi; + yi = wdr * xi - wdi * xr; + a[2] -= yr; + a[3] = yi - a[3]; + a[n - 2] += yr; + a[n - 1] = yi - a[n - 1]; + a[1] = -a[1]; +} + diff --git a/src/mapm/mapm_flr.c b/src/mapm/mapm_flr.c new file mode 100644 index 00000000..236bf089 --- /dev/null +++ b/src/mapm/mapm_flr.c @@ -0,0 +1,112 @@ + +/* + * M_APM - mapm_flr.c + * + * Copyright (C) 2001 - 2002 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +/* + * input floor ceil + * ----- ------ ------ + * 329.0 329.0 329.0 + * -837.0 -837.0 -837.0 + * 372.64 372.0 373.0 + * -237.52 -238.0 -237.0 + */ + +/****************************************************************************/ +/* + * return the nearest integer <= input + */ +void m_apm_floor(M_APM bb, M_APM aa) +{ +M_APM mtmp; + +m_apm_copy(bb, aa); + +if (m_apm_is_integer(bb)) /* if integer, we're done */ + return; + +if (bb->m_apm_exponent <= 0) /* if |bb| < 1, result is -1 or 0 */ + { + if (bb->m_apm_sign < 0) + m_apm_negate(bb, MM_One); + else + M_set_to_zero(bb); + + return; + } + +if (bb->m_apm_sign < 0) + { + mtmp = M_get_stack_var(); + m_apm_negate(mtmp, bb); + + mtmp->m_apm_datalength = mtmp->m_apm_exponent; + M_apm_normalize(mtmp); + + m_apm_add(bb, mtmp, MM_One); + bb->m_apm_sign = -1; + M_restore_stack(1); + } +else + { + bb->m_apm_datalength = bb->m_apm_exponent; + M_apm_normalize(bb); + } +} +/****************************************************************************/ +/* + * return the nearest integer >= input + */ +void m_apm_ceil(M_APM bb, M_APM aa) +{ +M_APM mtmp; + +m_apm_copy(bb, aa); + +if (m_apm_is_integer(bb)) /* if integer, we're done */ + return; + +if (bb->m_apm_exponent <= 0) /* if |bb| < 1, result is 0 or 1 */ + { + if (bb->m_apm_sign < 0) + M_set_to_zero(bb); + else + m_apm_copy(bb, MM_One); + + return; + } + +if (bb->m_apm_sign < 0) + { + bb->m_apm_datalength = bb->m_apm_exponent; + M_apm_normalize(bb); + } +else + { + mtmp = M_get_stack_var(); + m_apm_copy(mtmp, bb); + + mtmp->m_apm_datalength = mtmp->m_apm_exponent; + M_apm_normalize(mtmp); + + m_apm_add(bb, mtmp, MM_One); + M_restore_stack(1); + } +} +/****************************************************************************/ diff --git a/src/mapm/mapm_fpf.c b/src/mapm/mapm_fpf.c new file mode 100644 index 00000000..4f388b1b --- /dev/null +++ b/src/mapm/mapm_fpf.c @@ -0,0 +1,406 @@ + +/* + * M_APM - mapm_fpf.c + * + * Copyright (C) 2001 - 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" +#include + +/****************************************************************************/ +char *m_apm_to_fixpt_stringexp(int dplaces, M_APM atmp, + char ch_radx, char ch_sep, int ct_sep) +{ +int places, xp, dl, ii; +char *cpr; + +places = dplaces; + +dl = atmp->m_apm_datalength; +xp = atmp->m_apm_exponent; + +if (places < 0) /* show ALL digits */ + { + if (xp < 0) + ii = dl - xp; + else + { + if (dl > xp) + ii = dl; + else + ii = xp; + } + } +else + { + ii = places; + + if (xp > 0) + ii += xp; + } + +if (ct_sep != 0 && ch_sep != 0 && xp > 0) + ii += xp / ct_sep; + +if ((cpr = (char *)MAPM_MALLOC((ii + 32) * sizeof(char))) == NULL) + return(NULL); + +m_apm_to_fixpt_stringex(cpr,places,atmp,ch_radx,ch_sep,ct_sep); + +return(cpr); +} +/****************************************************************************/ +void m_apm_to_fixpt_stringex(char *s, int dplaces, M_APM atmp, + char ch_radix, char ch_sep, int count_sep) +{ +M_APM btmp; +char ch, *cpd, *cps; +int ii, jj, kk, ct, dl, xp, no_sep_flg, places; + +btmp = M_get_stack_var(); +places = dplaces; +cpd = s; +no_sep_flg = FALSE; + +m_apm_absolute_value(btmp, atmp); /* do conversion of positive number */ + +if (ch_sep == 0 || count_sep == 0) /* no separator char OR count */ + no_sep_flg = TRUE; + +/* determine how much memory to get for the temp string */ + +dl = btmp->m_apm_datalength; +xp = btmp->m_apm_exponent; + +if (places < 0) /* show ALL digits */ + { + if (xp < 0) + ii = dl - xp; + else + { + if (dl > xp) + ii = dl; + else + ii = xp; + } + } +else + { + ii = places; + + if (xp > 0) + ii += xp; + } + +if ((cps = (char *)MAPM_MALLOC((ii + 32) * sizeof(char))) == NULL) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, + "\'m_apm_to_fixpt_stringex\', Out of memory"); + } + +m_apm_to_fixpt_string(cps, places, btmp); + +/* + * the converted string may be all 'zero', 0.0000... + * if so and the original number is negative, + * do NOT set the '-' sign of our output string. + */ + +if (atmp->m_apm_sign == -1) /* if input number negative */ + { + kk = 0; + jj = 0; + + while (TRUE) + { + ch = cps[kk++]; + if ((ch == '\0') || (jj != 0)) + break; + + if (isdigit((int)ch)) + { + if (ch != '0') + jj = 1; + } + } + + if (jj) + *cpd++ = '-'; + } + +ct = M_strposition(cps, "."); /* find the default (.) radix char */ + +if (ct == -1) /* if not found .. */ + { + strcat(cps, "."); /* add one */ + ct = M_strposition(cps, "."); /* and then find it */ + } + +if (places == 0) /* int format, terminate at radix char */ + cps[ct] = '\0'; +else + cps[ct] = ch_radix; /* assign the radix char */ + +/* + * if the number is small enough to not have any separator char's ... + */ + +if (ct <= count_sep) + no_sep_flg = TRUE; + +if (no_sep_flg) + { + strcpy(cpd, cps); + } +else + { + jj = 0; + kk = count_sep; + ii = ct / count_sep; + + if ((ii = ct - ii * count_sep) == 0) + ii = count_sep; + + while (TRUE) /* write out the first 1,2 */ + { /* (up to count_sep) digits */ + *cpd++ = cps[jj++]; + + if (--ii == 0) + break; + } + + while (TRUE) /* write rest of the string */ + { + if (kk == count_sep) /* write a new separator char */ + { + if (jj != ct) /* unless we're at the radix */ + { + *cpd++ = ch_sep; /* note that this also disables */ + kk = 0; /* the separator char AFTER */ + } /* the radix char */ + } + + if ((*cpd++ = cps[jj++]) == '\0') + break; + + kk++; + } + } + +MAPM_FREE(cps); +M_restore_stack(1); +} +/****************************************************************************/ +void m_apm_to_fixpt_string(char *ss, int dplaces, M_APM mtmp) +{ +M_APM ctmp; +void *vp; +int places, i2, ii, jj, kk, xp, dl, numb; +UCHAR *ucp, numdiv, numrem; +char *cpw, *cpd, sbuf[128]; + +ctmp = M_get_stack_var(); +vp = NULL; +cpd = ss; +places = dplaces; + +/* just want integer portion if places == 0 */ + +if (places == 0) + { + if (mtmp->m_apm_sign >= 0) + m_apm_add(ctmp, mtmp, MM_0_5); + else + m_apm_subtract(ctmp, mtmp, MM_0_5); + + m_apm_to_integer_string(cpd, ctmp); + + M_restore_stack(1); + return; + } + +if (places > 0) + M_apm_round_fixpt(ctmp, places, mtmp); +else + m_apm_copy(ctmp, mtmp); /* show ALL digits */ + +if (ctmp->m_apm_sign == 0) /* result is 0 */ + { + if (places < 0) + { + cpd[0] = '0'; /* "0.0" */ + cpd[1] = '.'; + cpd[2] = '0'; + cpd[3] = '\0'; + } + else + { + memset(cpd, '0', (places + 2)); /* pre-load string with all '0' */ + cpd[1] = '.'; + cpd[places + 2] = '\0'; + } + + M_restore_stack(1); + return; + } + +xp = ctmp->m_apm_exponent; +dl = ctmp->m_apm_datalength; +numb = (dl + 1) >> 1; + +if (places < 0) + { + if (dl > xp) + jj = dl + 16; + else + jj = xp + 16; + } +else + { + jj = places + 16; + + if (xp > 0) + jj += xp; + } + +if (jj > 112) + { + if ((vp = (void *)MAPM_MALLOC((jj + 16) * sizeof(char))) == NULL) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, + "\'m_apm_to_fixpt_string\', Out of memory"); + } + + cpw = (char *)vp; + } +else + { + cpw = sbuf; + } + +/* + * at this point, the number is non-zero and the the output + * string will contain at least 1 significant digit. + */ + +if (ctmp->m_apm_sign == -1) /* negative number */ + { + *cpd++ = '-'; + } + +ucp = ctmp->m_apm_data; +ii = 0; + +/* convert MAPM num to ASCII digits and store in working char array */ + +while (TRUE) + { + M_get_div_rem_10((int)(*ucp++), &numdiv, &numrem); + + cpw[ii++] = numdiv + '0'; + cpw[ii++] = numrem + '0'; + + if (--numb == 0) + break; + } + +i2 = ii; /* save for later */ + +if (places < 0) /* show ALL digits */ + { + places = dl - xp; + + if (places < 1) + places = 1; + } + +/* pad with trailing zeros if needed */ + +kk = xp + places + 2 - ii; + +if (kk > 0) + memset(&cpw[ii], '0', kk); + +if (xp > 0) /* |num| >= 1, NO lead-in "0.nnn" */ + { + ii = xp + places + 1; + jj = 0; + + for (kk=0; kk < ii; kk++) + { + if (kk == xp) + cpd[jj++] = '.'; + + cpd[jj++] = cpw[kk]; + } + + cpd[ii] = '\0'; + } +else /* |num| < 1, have lead-in "0.nnn" */ + { + jj = 2 - xp; + ii = 2 + places; + memset(cpd, '0', (ii + 1)); /* pre-load string with all '0' */ + cpd[1] = '.'; /* assign decimal point */ + + for (kk=0; kk < i2; kk++) + { + cpd[jj++] = cpw[kk]; + } + + cpd[ii] = '\0'; + } + +if (vp != NULL) + MAPM_FREE(vp); + +M_restore_stack(1); +} +/****************************************************************************/ +void M_apm_round_fixpt(M_APM btmp, int places, M_APM atmp) +{ +int xp, ii; + +xp = atmp->m_apm_exponent; +ii = xp + places - 1; + +M_set_to_zero(btmp); /* assume number is too small so the net result is 0 */ + +if (ii >= 0) + { + m_apm_round(btmp, ii, atmp); + } +else + { + if (ii == -1) /* next digit is significant which may round up */ + { + if (atmp->m_apm_data[0] >= 50) /* digit >= 5, round up */ + { + m_apm_copy(btmp, atmp); + btmp->m_apm_data[0] = 10; + btmp->m_apm_exponent += 1; + btmp->m_apm_datalength = 1; + M_apm_normalize(btmp); + } + } + } +} +/****************************************************************************/ + diff --git a/src/mapm/mapm_gcd.c b/src/mapm/mapm_gcd.c new file mode 100644 index 00000000..029bf12e --- /dev/null +++ b/src/mapm/mapm_gcd.c @@ -0,0 +1,253 @@ + +/* + * M_APM - mapm_gcd.c + * + * Copyright (C) 2001 - 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +/****************************************************************************/ +/* + * From Knuth, The Art of Computer Programming: + * + * This is the binary GCD algorithm as described + * in the book (Algorithm B) + */ +void m_apm_gcd(M_APM r, M_APM u, M_APM v) +{ +M_APM tmpM, tmpN, tmpT, tmpU, tmpV; +int kk, kr, mm; +long pow_2; + +/* 'is_integer' will return 0 || 1 */ + +if ((m_apm_is_integer(u) + m_apm_is_integer(v)) != 2) + { + M_apm_log_error_msg(M_APM_RETURN, + "Warning! \'m_apm_gcd\', Non-integer input"); + + M_set_to_zero(r); + return; + } + +if (u->m_apm_sign == 0) + { + m_apm_absolute_value(r, v); + return; + } + +if (v->m_apm_sign == 0) + { + m_apm_absolute_value(r, u); + return; + } + +tmpM = M_get_stack_var(); +tmpN = M_get_stack_var(); +tmpT = M_get_stack_var(); +tmpU = M_get_stack_var(); +tmpV = M_get_stack_var(); + +m_apm_absolute_value(tmpU, u); +m_apm_absolute_value(tmpV, v); + +/* Step B1 */ + +kk = 0; + +while (TRUE) + { + mm = 1; + if (m_apm_is_odd(tmpU)) + break; + + mm = 0; + if (m_apm_is_odd(tmpV)) + break; + + m_apm_multiply(tmpN, MM_0_5, tmpU); + m_apm_copy(tmpU, tmpN); + + m_apm_multiply(tmpN, MM_0_5, tmpV); + m_apm_copy(tmpV, tmpN); + + kk++; + } + +/* Step B2 */ + +if (mm) + { + m_apm_negate(tmpT, tmpV); + goto B4; + } + +m_apm_copy(tmpT, tmpU); + +/* Step: */ + +B3: + +m_apm_multiply(tmpN, MM_0_5, tmpT); +m_apm_copy(tmpT, tmpN); + +/* Step: */ + +B4: + +if (m_apm_is_even(tmpT)) + goto B3; + +/* Step B5 */ + +if (tmpT->m_apm_sign == 1) + m_apm_copy(tmpU, tmpT); +else + m_apm_negate(tmpV, tmpT); + +/* Step B6 */ + +m_apm_subtract(tmpT, tmpU, tmpV); + +if (tmpT->m_apm_sign != 0) + goto B3; + +/* + * result = U * 2 ^ kk + */ + +if (kk == 0) + m_apm_copy(r, tmpU); +else + { + if (kk == 1) + m_apm_multiply(r, tmpU, MM_Two); + + if (kk == 2) + m_apm_multiply(r, tmpU, MM_Four); + + if (kk >= 3) + { + mm = kk / 28; + kr = kk % 28; + pow_2 = 1L << kr; + + if (mm == 0) + { + m_apm_set_long(tmpN, pow_2); + m_apm_multiply(r, tmpU, tmpN); + } + else + { + m_apm_copy(tmpN, MM_One); + m_apm_set_long(tmpM, 0x10000000L); /* 2 ^ 28 */ + + while (TRUE) + { + m_apm_multiply(tmpT, tmpN, tmpM); + m_apm_copy(tmpN, tmpT); + + if (--mm == 0) + break; + } + + if (kr == 0) + { + m_apm_multiply(r, tmpU, tmpN); + } + else + { + m_apm_set_long(tmpM, pow_2); + m_apm_multiply(tmpT, tmpN, tmpM); + m_apm_multiply(r, tmpU, tmpT); + } + } + } + } + +M_restore_stack(5); +} +/****************************************************************************/ +/* + * u * v + * LCM(u,v) = ------------ + * GCD(u,v) + */ + +void m_apm_lcm(M_APM r, M_APM u, M_APM v) +{ +M_APM tmpN, tmpG; + +tmpN = M_get_stack_var(); +tmpG = M_get_stack_var(); + +m_apm_multiply(tmpN, u, v); +m_apm_gcd(tmpG, u, v); +m_apm_integer_divide(r, tmpN, tmpG); + +M_restore_stack(2); +} +/****************************************************************************/ + +#ifdef BIG_COMMENT_BLOCK + +/* + * traditional GCD included for reference + * (also useful for testing ...) + */ + +/* + * From Knuth, The Art of Computer Programming: + * + * To compute GCD(u,v) + * + * A1: + * if (v == 0) return (u) + * A2: + * t = u mod v + * u = v + * v = t + * goto A1 + */ +void m_apm_gcd_traditional(M_APM r, M_APM u, M_APM v) +{ +M_APM tmpD, tmpN, tmpU, tmpV; + +tmpD = M_get_stack_var(); +tmpN = M_get_stack_var(); +tmpU = M_get_stack_var(); +tmpV = M_get_stack_var(); + +m_apm_absolute_value(tmpU, u); +m_apm_absolute_value(tmpV, v); + +while (TRUE) + { + if (tmpV->m_apm_sign == 0) + break; + + m_apm_integer_div_rem(tmpD, tmpN, tmpU, tmpV); + m_apm_copy(tmpU, tmpV); + m_apm_copy(tmpV, tmpN); + } + +m_apm_copy(r, tmpU); +M_restore_stack(4); +} +/****************************************************************************/ + +#endif + diff --git a/src/mapm/mapm_lg2.c b/src/mapm/mapm_lg2.c new file mode 100644 index 00000000..82cc0eb4 --- /dev/null +++ b/src/mapm/mapm_lg2.c @@ -0,0 +1,109 @@ + +/* + * M_APM - mapm_lg2.c + * + * Copyright (C) 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" +#include + +/****************************************************************************/ + +/* + * compute rr = log(nn) + * + * input is assumed to not exceed the exponent range of a normal + * 'C' double ( |exponent| must be < 308) + */ + +/****************************************************************************/ +void M_log_basic_iteration(M_APM rr, int places, M_APM nn) +{ +M_APM tmp0, tmp1, tmp2, tmp3, guess; +int ii, maxiter, maxp, tolerance, local_precision; + +guess = M_get_stack_var(); +tmp0 = M_get_stack_var(); +tmp1 = M_get_stack_var(); +tmp2 = M_get_stack_var(); +tmp3 = M_get_stack_var(); + +M_get_log_guess(guess, nn); + +tolerance = -(places + 4); +maxp = places + 16; +local_precision = 18; + +/* + * compute the maximum number of iterations + * that should be needed to calculate to + * the desired accuracy. [ constant below ~= 1 / log(3) ] + */ + +maxiter = (int)(log((double)(places + 2)) * 0.91024) + 3; + +if (maxiter < 5) + maxiter = 5; + +/* Use the following iteration to solve for log : + + exp(X) - N + X = X - 2 * ------------ + n+1 exp(X) + N + + + this is a cubically convergent algorithm + (each iteration yields 3X more digits) +*/ + +ii = 0; + +while (TRUE) + { + m_apm_exp(tmp1, local_precision, guess); + + m_apm_subtract(tmp3, tmp1, nn); + m_apm_add(tmp2, tmp1, nn); + + m_apm_divide(tmp1, local_precision, tmp3, tmp2); + m_apm_multiply(tmp0, MM_Two, tmp1); + m_apm_subtract(tmp3, guess, tmp0); + + if (ii != 0) + { + if (((3 * tmp0->m_apm_exponent) < tolerance) || (tmp0->m_apm_sign == 0)) + break; + } + + if (++ii == maxiter) + { + M_apm_log_error_msg(M_APM_RETURN, + "Warning! ... \'M_log_basic_iteration\', max iteration count reached"); + break; + } + + m_apm_round(guess, local_precision, tmp3); + + local_precision *= 3; + + if (local_precision > maxp) + local_precision = maxp; + } + +m_apm_round(rr, places, tmp3); +M_restore_stack(5); +} +/****************************************************************************/ diff --git a/src/mapm/mapm_lg3.c b/src/mapm/mapm_lg3.c new file mode 100644 index 00000000..d6727130 --- /dev/null +++ b/src/mapm/mapm_lg3.c @@ -0,0 +1,199 @@ + +/* + * M_APM - mapm_lg3.c + * + * Copyright (C) 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" +#include + +/* + * using the 'R' function (defined below) for 'N' decimal places : + * + * + * -N -N + * log(2) = R(1, 0.5 * 10 ) - R(1, 10 ) + * + * + * -N -N + * log(10) = R(1, 0.1 * 10 ) - R(1, 10 ) + * + * + * + * I found this on a web site which went into considerable detail + * on the history of log(2). This formula is algebraically identical + * to the formula specified in J. Borwein and P. Borwein's book + * "PI and the AGM". (reference algorithm 7.2) + */ + +/****************************************************************************/ +/* + * check if our local copy of log(2) & log(10) is precise + * enough for our purpose. if not, calculate them so it's + * as precise as desired, accurate to at least 'places'. + */ +void M_check_log_places(int places) +{ +M_APM tmp6, tmp7, tmp8, tmp9; +int dplaces; + +dplaces = places + 4; + +if (dplaces > MM_lc_log_digits) + { + MM_lc_log_digits = dplaces + 4; + + tmp6 = M_get_stack_var(); + tmp7 = M_get_stack_var(); + tmp8 = M_get_stack_var(); + tmp9 = M_get_stack_var(); + + dplaces += 6 + (int)log10((double)places); + + m_apm_copy(tmp7, MM_One); + tmp7->m_apm_exponent = -places; + + M_log_AGM_R_func(tmp8, dplaces, MM_One, tmp7); + + m_apm_multiply(tmp6, tmp7, MM_0_5); + + M_log_AGM_R_func(tmp9, dplaces, MM_One, tmp6); + + m_apm_subtract(MM_lc_log2, tmp9, tmp8); /* log(2) */ + + tmp7->m_apm_exponent -= 1; /* divide by 10 */ + + M_log_AGM_R_func(tmp9, dplaces, MM_One, tmp7); + + m_apm_subtract(MM_lc_log10, tmp9, tmp8); /* log(10) */ + m_apm_reciprocal(MM_lc_log10R, dplaces, MM_lc_log10); /* 1 / log(10) */ + + M_restore_stack(4); + } +} +/****************************************************************************/ + +/* + * define a notation for a function 'R' : + * + * + * + * 1 + * R (a0, b0) = ------------------------------ + * + * ---- + * \ + * \ n-1 2 2 + * 1 - | 2 * (a - b ) + * / n n + * / + * ---- + * n >= 0 + * + * + * where a, b are the classic AGM iteration : + * + * + * a = 0.5 * (a + b ) + * n+1 n n + * + * + * b = sqrt(a * b ) + * n+1 n n + * + * + * + * define a 'c' variable for more efficient computation : + * + * 2 2 2 + * c = 0.5 * (a - b ) , c = a - b + * n+1 n n n n n + * + */ + +/****************************************************************************/ +void M_log_AGM_R_func(M_APM rr, int places, M_APM aa, M_APM bb) +{ +M_APM tmp1, tmp2, tmp3, tmp4, tmpC2, sum, pow_2, tmpA0, tmpB0; +int ii, tolerance, dplaces; + +tmpA0 = M_get_stack_var(); +tmpB0 = M_get_stack_var(); +tmpC2 = M_get_stack_var(); +tmp1 = M_get_stack_var(); +tmp2 = M_get_stack_var(); +tmp3 = M_get_stack_var(); +tmp4 = M_get_stack_var(); +sum = M_get_stack_var(); +pow_2 = M_get_stack_var(); + +tolerance = places + 8; +dplaces = places + 16; + +m_apm_copy(tmpA0, aa); +m_apm_copy(tmpB0, bb); +m_apm_copy(pow_2, MM_0_5); + +ii = 0; + +while (TRUE) + { + if (ii == 0) + { + ii = 1; + + m_apm_copy(sum, MM_0_5); + + m_apm_subtract(tmp1, tmpA0, tmpB0); /* C n+1 = 0.5 * [ An - Bn ] */ + m_apm_multiply(tmp4, MM_0_5, tmp1); /* C n+1 */ + m_apm_multiply(tmpC2, tmp4, tmp4); /* C n+1 ^ 2 */ + } + else + { + m_apm_multiply(tmp1, tmpC2, pow_2); + m_apm_add(tmp3, sum, tmp1); + + if ((tmp1->m_apm_sign == 0) || + ((-2 * tmp1->m_apm_exponent) > tolerance)) + break; + + m_apm_round(sum, dplaces, tmp3); + + m_apm_subtract(tmp1, tmpA0, tmpB0); + m_apm_multiply(tmp4, MM_0_5, tmp1); + m_apm_multiply(tmpC2, tmp4, tmp4); + } + + /* do the AGM and set up for next iteration */ + + m_apm_add(tmp1, tmpA0, tmpB0); + m_apm_multiply(tmp3, MM_0_5, tmp1); + + m_apm_multiply(tmp2, tmpA0, tmpB0); + m_apm_sqrt(tmpB0, dplaces, tmp2); + + m_apm_copy(tmpA0, tmp3); + + m_apm_multiply(tmp2, MM_Two, pow_2); + m_apm_copy(pow_2, tmp2); + } + +m_apm_subtract(tmp4, MM_One, tmp3); +m_apm_reciprocal(rr, places, tmp4); + +M_restore_stack(9); +} +/****************************************************************************/ diff --git a/src/mapm/mapm_log.c b/src/mapm/mapm_log.c new file mode 100644 index 00000000..bfc15ae3 --- /dev/null +++ b/src/mapm/mapm_log.c @@ -0,0 +1,185 @@ + +/* + * M_APM - mapm_log.c + * + * Copyright (C) 1999 - 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" +#include + +/****************************************************************************/ +/* + Calls the LOG function. The formula used is : + + log10(x) = A * log(x) where A = log (e) [0.43429448190325...] + 10 +*/ +void m_apm_log10(M_APM rr, int places, M_APM aa) +{ +int dplaces; +M_APM tmp8, tmp9; + +tmp8 = M_get_stack_var(); +tmp9 = M_get_stack_var(); + +dplaces = places + 4; +M_check_log_places(dplaces + 45); + +m_apm_log(tmp9, dplaces, aa); +m_apm_multiply(tmp8, tmp9, MM_lc_log10R); +m_apm_round(rr, places, tmp8); +M_restore_stack(2); /* restore the 2 locals we used here */ +} +/****************************************************************************/ +void m_apm_log(M_APM r, int places, M_APM a) +{ +M_APM tmp0, tmp1, tmp2; +int mexp, dplaces; + +if (a->m_apm_sign <= 0) + { + M_apm_log_error_msg(M_APM_RETURN, + "Warning! ... \'m_apm_log\', Negative argument"); + M_set_to_zero(r); + return; + } + +tmp0 = M_get_stack_var(); +tmp1 = M_get_stack_var(); +tmp2 = M_get_stack_var(); + +dplaces = places + 8; + +/* + * if the input is real close to 1, use the series expansion + * to compute the log. + * + * 0.9999 < a < 1.0001 + */ + +m_apm_subtract(tmp0, a, MM_One); + +if (tmp0->m_apm_sign == 0) /* is input exactly 1 ?? */ + { /* if so, result is 0 */ + M_set_to_zero(r); + M_restore_stack(3); + return; + } + +if (tmp0->m_apm_exponent <= -4) + { + M_log_near_1(r, places, tmp0); + M_restore_stack(3); + return; + } + +/* make sure our log(10) is accurate enough for this calculation */ +/* (and log(2) which is called from M_log_basic_iteration) */ + +M_check_log_places(dplaces + 25); + +mexp = a->m_apm_exponent; +if (mexp >= -4 && mexp <= 4) + { + M_log_basic_iteration(r, places, a); + } +else + { + /* + * use log (x * y) = log(x) + log(y) + * + * here we use y = exponent of our base 10 number. + * + * let 'C' = log(10) = 2.3025850929940.... + * + * then log(x * y) = log(x) + ( C * base_10_exponent ) + */ + + m_apm_copy(tmp2, a); + + mexp = tmp2->m_apm_exponent - 2; + tmp2->m_apm_exponent = 2; /* force number between 10 & 100 */ + + M_log_basic_iteration(tmp0, dplaces, tmp2); + + m_apm_set_long(tmp1, (long)mexp); + m_apm_multiply(tmp2, tmp1, MM_lc_log10); + m_apm_add(tmp1, tmp2, tmp0); + + m_apm_round(r, places, tmp1); + } + +M_restore_stack(3); /* restore the 3 locals we used here */ +} +/****************************************************************************/ +/* + calculate log (1 + x) with the following series: + + x + y = ----- ( |y| < 1 ) + x + 2 + + + [ 1 + y ] y^3 y^5 y^7 + log [-------] = 2 * [ y + --- + --- + --- ... ] + [ 1 - y ] 3 5 7 + +*/ +void M_log_near_1(M_APM rr, int places, M_APM xx) +{ +M_APM tmp0, tmp1, tmp2, tmpS, term; +int tolerance, local_precision; +long m1; + +tmp0 = M_get_stack_var(); +tmp1 = M_get_stack_var(); +tmp2 = M_get_stack_var(); +tmpS = M_get_stack_var(); +term = M_get_stack_var(); + +tolerance = xx->m_apm_exponent - places - 4; +local_precision = places + 8 - xx->m_apm_exponent; + +m_apm_add(tmp0, xx, MM_Two); +m_apm_divide(tmpS, (local_precision + 6), xx, tmp0); + +m_apm_copy(term, tmpS); +m_apm_multiply(tmp0, tmpS, tmpS); +m_apm_round(tmp2, (local_precision + 6), tmp0); + +m1 = 3; + +while (TRUE) + { + m_apm_set_long(tmp1, m1); + m_apm_multiply(tmp0, term, tmp2); + m_apm_round(term, local_precision, tmp0); + m_apm_divide(tmp0, local_precision, term, tmp1); + m_apm_add(tmp1, tmpS, tmp0); + + if ((tmp0->m_apm_exponent < tolerance) || (tmp0->m_apm_sign == 0)) + break; + + m_apm_copy(tmpS, tmp1); + m1 += 2; + } + +m_apm_multiply(tmp0, MM_Two, tmp1); +m_apm_round(rr, places, tmp0); + +M_restore_stack(5); /* restore the 5 locals we used here */ +} +/****************************************************************************/ diff --git a/src/mapm/mapm_mt.cpp b/src/mapm/mapm_mt.cpp new file mode 100644 index 00000000..9ebd54c2 --- /dev/null +++ b/src/mapm/mapm_mt.cpp @@ -0,0 +1,684 @@ + +/* + * M_APM - mapm_mt.c + * + * Copyright (C) 2002 Martin Pfingstl (Martin.Pfingstl@epost.de) + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +/* + * $Id: mapm_mt.cpp,v 1.2 2005/11/03 17:04:24 jpcs Exp $ + * + * This file contains all wrapper functions for the library + * using semaphores + * + * $Log: mapm_mt.cpp,v $ + * Revision 1.2 2005/11/03 17:04:24 jpcs + * Merged XQEngine.hpp and Pathan.hpp into XQillaExport.hpp. Renamed all + * things Pathan to XQilla. + * + * Revision 1.1 2005/11/01 18:04:13 jpcs + * Initial check in. + * + * Revision 1.2 2004/08/18 19:05:38 jpcs + * Merged in changes from DSL xqilla. + * + * Revision 1.1 2004/07/21 09:23:01 jpcs + * Initial check in of the Parthenon backup of XQilla. + * + * Revision 1.4 2004/07/08 15:24:43 swhite + * Moved more headers into the include directory. Still a few to go. + * + * Revision 1.3 2004/06/30 13:49:08 swhite +#include "../config/xqilla_config.h" + * Moved the 'extern "C"' declaration so that #include "foo.hpp" is no longer inside it, as some versions of GCC object to this (quite rightly as far as I can see). + * + * Revision 1.2 2004/06/04 14:41:04 jpcs + * Split the context into two parts, the StaticContext and the DynamicContext. + * Created a proxy context, that implements the DynamicContext from scratch, + * and forwards the calls to the StaticContext to a reference to a + * StaticContext. + * + * Created VariableTypeStore, which is part of the StaticContext, and holds + * the type of the variable, rather than the value of it. This is done by + * factoring much of the common code from VarStoreImpl into a templated + * class, VariableStoreTemplate. + * + * Modified the methods in the code to take the correct type of context, as + * much as possible. + * + * Revision 1.1 2003/05/01 12:46:55 alby + * - Updated MAPM to version 4.6.1 + * - The MAPM class is now thread-safe + * + * Revision 1.2 2002/11/10 22:42:44 mike + * add new integer_pow_nr function + * + * Revision 1.1 2002/06/13 20:39:09 mike + * Initial revision + */ + + +#include + +extern void m_apm_enter(void); +extern void m_apm_leave(void); + +#include +#include + +extern "C" +{ + +static XERCES_CPP_NAMESPACE_QUALIFIER XMLMutex* m_apm_semaphore=0; + +void m_apm_mt_initialize(void) +{ + if(m_apm_semaphore == 0) { + m_apm_semaphore = new XERCES_CPP_NAMESPACE_QUALIFIER XMLMutex; + } +} + +void m_apm_mt_terminate(void) +{ + delete m_apm_semaphore; + m_apm_semaphore = 0; +} + +void m_apm_enter(void) +{ + m_apm_semaphore->lock(); +} + +void m_apm_leave(void) +{ + m_apm_semaphore->unlock(); +} + +/****************************************************************************/ + +M_APM m_apm_init_mt(void) +{ +M_APM t; + + m_apm_enter(); + t=m_apm_init(); + m_apm_leave(); + return(t); +} + +/****************************************************************************/ + +void m_apm_free_mt(M_APM t) +{ + m_apm_enter(); + m_apm_free(t); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_free_all_mem_mt(void) +{ + m_apm_enter(); + m_apm_free_all_mem(); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_trim_mem_usage_mt(void) +{ + m_apm_enter(); + m_apm_trim_mem_usage(); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_set_string_mt(M_APM ctmp, char *s_in) +{ + m_apm_enter(); + m_apm_set_string(ctmp,s_in); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_set_double_mt(M_APM atmp,double dd) +{ + m_apm_enter(); + m_apm_set_double(atmp,dd); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_set_long_mt(M_APM atmp, long mm) +{ + m_apm_enter(); + m_apm_set_long(atmp,mm); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_to_string_mt(char *s, int places, M_APM mtmp) +{ + m_apm_enter(); + m_apm_to_string(s,places,mtmp); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_add_mt(M_APM r, M_APM a, M_APM b) +{ + m_apm_enter(); + m_apm_add(r,a,b); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_subtract_mt(M_APM r, M_APM a, M_APM b) +{ + m_apm_enter(); + m_apm_subtract(r,a,b); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_absolute_value_mt(M_APM d, M_APM s) +{ + m_apm_enter(); + m_apm_absolute_value(d,s); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_negate_mt(M_APM d, M_APM s) +{ + m_apm_enter(); + m_apm_negate(d,s); + m_apm_leave(); +} + +/****************************************************************************/ + +int m_apm_compare_mt(M_APM ltmp, M_APM rtmp) +{ +int ret; + + m_apm_enter(); + ret=m_apm_compare(ltmp,rtmp); + m_apm_leave(); + return(ret); +} + + +/****************************************************************************/ + +void m_apm_multiply_mt(M_APM r, M_APM a, M_APM b) +{ + m_apm_enter(); + m_apm_multiply(r,a,b); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_divide_mt(M_APM rr, int places, M_APM aa, M_APM bb) +{ + m_apm_enter(); + m_apm_divide(rr,places,aa,bb); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_cpp_precision_mt(int digits) +{ + m_apm_enter(); + m_apm_cpp_precision(digits); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_to_fixpt_string_mt(char *ss, int dplaces, M_APM mtmp) +{ + m_apm_enter(); + m_apm_to_fixpt_string(ss,dplaces,mtmp); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_round_mt(M_APM btmp, int places, M_APM atmp) +{ + m_apm_enter(); + m_apm_round(btmp,places,atmp); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_sqrt_mt(M_APM rr, int places, M_APM aa) +{ + m_apm_enter(); + m_apm_sqrt(rr,places,aa); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_sin_mt(M_APM r, int places, M_APM a) +{ + m_apm_enter(); + m_apm_sin(r,places,a); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_arccos_mt(M_APM r, int places, M_APM x) +{ + m_apm_enter(); + m_apm_arccos(r,places,x); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_arctan2_mt(M_APM rr, int places, M_APM yy, M_APM xx) +{ + m_apm_enter(); + m_apm_arctan2(rr,places,yy,xx); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_copy_mt(M_APM dest, M_APM src) +{ + m_apm_enter(); + m_apm_copy(dest,src); + m_apm_leave(); +} + + +/****************************************************************************/ + +void m_apm_reciprocal_mt(M_APM rr, int places, M_APM aa) +{ + m_apm_enter(); + m_apm_reciprocal(rr,places,aa); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_to_fixpt_stringex_mt(char *s, int dplaces, M_APM atmp, + char ch_radix, char ch_sep, int count_sep) +{ + m_apm_enter(); + m_apm_to_fixpt_stringex(s,dplaces,atmp,ch_radix,ch_sep,count_sep); + m_apm_leave(); +} + +/****************************************************************************/ + +char *m_apm_to_fixpt_stringexp_mt(int dplaces, M_APM atmp, char ch_radx, + char ch_sep, int ct_sep) +{ +char *s; + + m_apm_enter(); + s=m_apm_to_fixpt_stringexp(dplaces,atmp,ch_radx,ch_sep,ct_sep); + m_apm_leave(); + return(s); +} + +/****************************************************************************/ + + +void m_apm_to_integer_string_mt(char *s, M_APM mtmp) +{ + m_apm_enter(); + m_apm_to_integer_string(s,mtmp); + m_apm_leave(); +} + +/****************************************************************************/ + + +int m_apm_sign_mt(M_APM m) +{ +int i; + + m_apm_enter(); + i=m_apm_sign(m); + m_apm_leave(); + return(i); +} + +/****************************************************************************/ + +int m_apm_exponent_mt(M_APM m) +{ +int i; + + m_apm_enter(); + i=m_apm_exponent(m); + m_apm_leave(); + return(i); +} + +/****************************************************************************/ + +int m_apm_significant_digits_mt(M_APM m) +{ +int i; + + m_apm_enter(); + i=m_apm_significant_digits(m); + m_apm_leave(); + return(i); +} + +/****************************************************************************/ + +int m_apm_is_integer_mt(M_APM m) +{ +int i; + + m_apm_enter(); + i=m_apm_is_integer(m); + m_apm_leave(); + return(i); +} + +/****************************************************************************/ + +int m_apm_is_even_mt(M_APM m) +{ +int i; + + m_apm_enter(); + i=m_apm_is_even(m); + m_apm_leave(); + return(i); +} + +/****************************************************************************/ + +int m_apm_is_odd_mt(M_APM m) +{ +int i; + + m_apm_enter(); + i=m_apm_is_odd(m); + m_apm_leave(); + return(i); +} + +/****************************************************************************/ + +void m_apm_gcd_mt(M_APM r, M_APM u, M_APM v) +{ + m_apm_enter(); + m_apm_gcd(r,u,v); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_lcm_mt(M_APM r, M_APM u, M_APM v) +{ + m_apm_enter(); + m_apm_lcm(r,u,v); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_integer_divide_mt(M_APM rr, M_APM aa, M_APM bb) +{ + m_apm_enter(); + m_apm_integer_divide(rr,aa,bb); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_integer_div_rem_mt(M_APM qq, M_APM rr, M_APM aa, M_APM bb) +{ + m_apm_enter(); + m_apm_integer_div_rem(qq,rr,aa,bb); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_factorial_mt(M_APM moutput, M_APM minput) +{ + m_apm_enter(); + m_apm_factorial(moutput,minput); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_floor_mt(M_APM bb, M_APM aa) +{ + m_apm_enter(); + m_apm_floor(bb,aa); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_ceil_mt(M_APM bb, M_APM aa) +{ + m_apm_enter(); + m_apm_ceil(bb,aa); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_get_random_mt(M_APM m) +{ + m_apm_enter(); + m_apm_get_random(m); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_set_random_seed_mt(char *s) +{ + m_apm_enter(); + m_apm_set_random_seed(s); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_cbrt_mt(M_APM rr, int places, M_APM aa) +{ + m_apm_enter(); + m_apm_cbrt(rr,places,aa); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_log_mt(M_APM rr, int places, M_APM aa) +{ + m_apm_enter(); + m_apm_log(rr,places,aa); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_log10_mt(M_APM rr, int places, M_APM aa) +{ + m_apm_enter(); + m_apm_log10(rr,places,aa); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_exp_mt(M_APM rr, int places, M_APM aa) +{ + m_apm_enter(); + m_apm_exp(rr,places,aa); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_pow_mt(M_APM rr, int places, M_APM xx, M_APM yy) +{ + m_apm_enter(); + m_apm_pow(rr,places,xx,yy); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_integer_pow_mt(M_APM rr, int places, M_APM aa, int mexp) +{ + m_apm_enter(); + m_apm_integer_pow(rr,places,aa,mexp); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_integer_pow_nr_mt(M_APM rr, M_APM aa, int mexp) +{ + m_apm_enter(); + m_apm_integer_pow_nr(rr,aa,mexp); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_sin_cos_mt(M_APM sinv, M_APM cosv, int places, M_APM aa) +{ + m_apm_enter(); + m_apm_sin_cos(sinv,cosv,places,aa); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_cos_mt(M_APM rr, int places, M_APM aa) +{ + m_apm_enter(); + m_apm_cos(rr,places,aa); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_tan_mt(M_APM rr, int places, M_APM aa) +{ + m_apm_enter(); + m_apm_tan(rr,places,aa); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_arcsin_mt(M_APM rr, int places, M_APM aa) +{ + m_apm_enter(); + m_apm_arcsin(rr,places,aa); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_arctan_mt(M_APM rr, int places, M_APM aa) +{ + m_apm_enter(); + m_apm_arctan(rr,places,aa); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_sinh_mt(M_APM rr, int places, M_APM aa) +{ + m_apm_enter(); + m_apm_sinh(rr,places,aa); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_cosh_mt(M_APM rr, int places, M_APM aa) +{ + m_apm_enter(); + m_apm_cosh(rr,places,aa); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_tanh_mt(M_APM rr, int places, M_APM aa) +{ + m_apm_enter(); + m_apm_tanh(rr,places,aa); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_arcsinh_mt(M_APM rr, int places, M_APM aa) +{ + m_apm_enter(); + m_apm_arcsinh(rr,places,aa); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_arccosh_mt(M_APM rr, int places, M_APM aa) +{ + m_apm_enter(); + m_apm_arccosh(rr,places,aa); + m_apm_leave(); +} + +/****************************************************************************/ + +void m_apm_arctanh_mt(M_APM rr, int places, M_APM aa) +{ + m_apm_enter(); + m_apm_arctanh(rr,places,aa); + m_apm_leave(); +} + +/****************************************************************************/ + +} diff --git a/src/mapm/mapm_mul.c b/src/mapm/mapm_mul.c new file mode 100644 index 00000000..5601c433 --- /dev/null +++ b/src/mapm/mapm_mul.c @@ -0,0 +1,130 @@ + +/* + * M_APM - mapm_mul.c + * + * Copyright (C) 1999 - 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +extern void M_fast_multiply(M_APM, M_APM, M_APM); + +/****************************************************************************/ +void m_apm_multiply(M_APM r, M_APM a, M_APM b) +{ +int ai, itmp, sign, nexp, ii, jj, index1, index2, + indexr, index0, numdigits; +UCHAR *cp, *cp_div, *cp_rem; +void *vp; + +sign = a->m_apm_sign * b->m_apm_sign; +nexp = a->m_apm_exponent + b->m_apm_exponent; + +if (sign == 0) /* one number is zero, result is zero */ + { + M_set_to_zero(r); + return; + } + +numdigits = a->m_apm_datalength + b->m_apm_datalength; +index1 = (a->m_apm_datalength + 1) >> 1; +index2 = (b->m_apm_datalength + 1) >> 1; + +/* + * If we are multiplying 2 'big' numbers, use the fast algorithm. + * + * This is a **very** approx break even point between this algorithm + * and the FFT multiply. Note that different CPU's, operating systems, + * and compiler's may yield a different break even point. This point + * (~96 decimal digits) is how the experiment came out on the + * author's system. + */ + +if (index1 >= 48 && index2 >= 48) + { + M_fast_multiply(r, a, b); + return; + } + +ii = (numdigits + 1) >> 1; /* required size of result, in bytes */ + +if (ii > r->m_apm_malloclength) + { + if ((vp = MAPM_REALLOC(r->m_apm_data, (ii + 32))) == NULL) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, "\'m_apm_multiply\', Out of memory"); + } + + r->m_apm_malloclength = ii + 28; + r->m_apm_data = (UCHAR *)vp; + } + +M_get_div_rem_addr(&cp_div, &cp_rem); + +index0 = index1 + index2; +cp = r->m_apm_data; +memset(cp, 0, index0); +ii = index1; + +while (TRUE) + { + indexr = --index0; + jj = index2; + ai = (int)a->m_apm_data[--ii]; + + while (TRUE) + { + itmp = ai * b->m_apm_data[--jj]; + + /* + * M_get_div_rem(itmp, &numdiv, &numrem); + * cp[indexr] += numrem; + * cp[indexr-1] += numdiv; + */ + + cp[indexr] += cp_rem[itmp]; + cp[indexr-1] += cp_div[itmp]; + + if (cp[indexr] >= 100) + { + cp[indexr] -= 100; + cp[indexr-1] += 1; + } + + indexr--; + + if (cp[indexr] >= 100) + { + cp[indexr] -= 100; + cp[indexr-1] += 1; + } + + if (jj == 0) + break; + } + + if (ii == 0) + break; + } + +r->m_apm_sign = sign; +r->m_apm_exponent = nexp; +r->m_apm_datalength = numdigits; + +M_apm_normalize(r); +} +/****************************************************************************/ diff --git a/src/mapm/mapm_pow.c b/src/mapm/mapm_pow.c new file mode 100644 index 00000000..d81b9902 --- /dev/null +++ b/src/mapm/mapm_pow.c @@ -0,0 +1,139 @@ + +/* + * M_APM - mapm_pow.c + * + * Copyright (C) 2000 - 2002 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +static M_APM M_last_xx_input; +static M_APM M_last_xx_log; +static int M_last_log_digits; +static int M_size_flag = 0; + +/****************************************************************************/ +void M_free_all_pow() +{ +if (M_size_flag != 0) + { + m_apm_free(M_last_xx_input); + m_apm_free(M_last_xx_log); + M_size_flag = 0; + } +} +/****************************************************************************/ +/* + Calculate the POW function by calling EXP : + + Y A + X = e where A = Y * log(X) +*/ +void m_apm_pow(M_APM rr, int places, M_APM xx, M_APM yy) +{ +int iflag, pflag; +char sbuf[64]; +M_APM tmp8, tmp9; + +/* if yy == 0, return 1 */ + +if (yy->m_apm_sign == 0) + { + m_apm_copy(rr, MM_One); + return; + } + +/* if xx == 0, return 0 */ + +if (xx->m_apm_sign == 0) + { + M_set_to_zero(rr); + return; + } + +if (M_size_flag == 0) /* init locals on first call */ + { + M_size_flag = M_get_sizeof_int(); + M_last_log_digits = 0; + M_last_xx_input = m_apm_init(); + M_last_xx_log = m_apm_init(); + } + +/* + * if 'yy' is a small enough integer, call the more + * efficient _integer_pow function. + */ + +if (m_apm_is_integer(yy)) + { + iflag = FALSE; + + if (M_size_flag == 2) /* 16 bit compilers */ + { + if (yy->m_apm_exponent <= 4) + iflag = TRUE; + } + else /* >= 32 bit compilers */ + { + if (yy->m_apm_exponent <= 7) + iflag = TRUE; + } + + if (iflag) + { + m_apm_to_integer_string(sbuf, yy); + m_apm_integer_pow(rr, places, xx, atoi(sbuf)); + return; + } + } + +tmp8 = M_get_stack_var(); +tmp9 = M_get_stack_var(); + +/* + * If parameter 'X' is the same this call as it + * was the previous call, re-use the saved log + * calculation from last time. + */ + +pflag = FALSE; + +if (M_last_log_digits >= places) + { + if (m_apm_compare(xx, M_last_xx_input) == 0) + pflag = TRUE; + } + +if (pflag) + { + m_apm_round(tmp9, (places + 8), M_last_xx_log); + } +else + { + m_apm_log(tmp9, (places + 8), xx); + + M_last_log_digits = places + 2; + + /* save the 'X' input value and the log calculation */ + + m_apm_copy(M_last_xx_input, xx); + m_apm_copy(M_last_xx_log, tmp9); + } + +m_apm_multiply(tmp8, tmp9, yy); +m_apm_exp(rr, places, tmp8); +M_restore_stack(2); /* restore the 2 locals we used here */ +} +/****************************************************************************/ diff --git a/src/mapm/mapm_rcp.c b/src/mapm/mapm_rcp.c new file mode 100644 index 00000000..3228b094 --- /dev/null +++ b/src/mapm/mapm_rcp.c @@ -0,0 +1,163 @@ + +/* + * M_APM - mapm_rcp.c + * + * Copyright (C) 2000 - 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" +#include + +/****************************************************************************/ +void m_apm_divide(M_APM rr, int places, M_APM aa, M_APM bb) +{ +M_APM tmp0, tmp1; +int sn, nexp, dplaces; + +sn = aa->m_apm_sign * bb->m_apm_sign; + +if (sn == 0) /* one number is zero, result is zero */ + { + if (bb->m_apm_sign == 0) + { + M_apm_log_error_msg(M_APM_RETURN, + "Warning! ... \'m_apm_divide\', Divide by 0"); + } + + M_set_to_zero(rr); + return; + } + +/* + * Use the original 'Knuth' method for smaller divides. On the + * author's system, this was the *approx* break even point before + * the reciprocal method used below became faster. + */ + +if (places < 250) + { + M_apm_sdivide(rr, places, aa, bb); + return; + } + +/* mimic the decimal place behavior of the original divide */ + +nexp = aa->m_apm_exponent - bb->m_apm_exponent; + +if (nexp > 0) + dplaces = nexp + places; +else + dplaces = places; + +tmp0 = M_get_stack_var(); +tmp1 = M_get_stack_var(); + +m_apm_reciprocal(tmp0, (dplaces + 8), bb); +m_apm_multiply(tmp1, tmp0, aa); +m_apm_round(rr, dplaces, tmp1); + +M_restore_stack(2); +} +/****************************************************************************/ +void m_apm_reciprocal(M_APM rr, int places, M_APM aa) +{ +M_APM last_x, guess, tmpN, tmp1, tmp2; +char sbuf[32]; +int ii, bflag, dplaces, nexp, tolerance; + +if (aa->m_apm_sign == 0) + { + M_apm_log_error_msg(M_APM_RETURN, + "Warning! ... \'m_apm_reciprocal\', Input = 0"); + + M_set_to_zero(rr); + return; + } + +last_x = M_get_stack_var(); +guess = M_get_stack_var(); +tmpN = M_get_stack_var(); +tmp1 = M_get_stack_var(); +tmp2 = M_get_stack_var(); + +m_apm_absolute_value(tmpN, aa); + +/* + normalize the input number (make the exponent 0) so + the 'guess' below will not over/under flow on large + magnitude exponents. +*/ + +nexp = aa->m_apm_exponent; +tmpN->m_apm_exponent -= nexp; + +m_apm_to_string(sbuf, 15, tmpN); +m_apm_set_double(guess, (1.0 / atof(sbuf))); + +tolerance = places + 4; +dplaces = places + 16; +bflag = FALSE; + +m_apm_negate(last_x, MM_Ten); + +/* Use the following iteration to calculate the reciprocal : + + + X = X * [ 2 - N * X ] + n+1 +*/ + +ii = 0; + +while (TRUE) + { + m_apm_multiply(tmp1, tmpN, guess); + m_apm_subtract(tmp2, MM_Two, tmp1); + m_apm_multiply(tmp1, tmp2, guess); + + if (bflag) + break; + + m_apm_round(guess, dplaces, tmp1); + + /* force at least 2 iterations so 'last_x' has valid data */ + + if (ii != 0) + { + m_apm_subtract(tmp2, guess, last_x); + + if (tmp2->m_apm_sign == 0) + break; + + /* + * if we are within a factor of 4 on the error term, + * we will be accurate enough after the *next* iteration + * is complete. + */ + + if ((-4 * tmp2->m_apm_exponent) > tolerance) + bflag = TRUE; + } + + m_apm_copy(last_x, guess); + ii++; + } + +m_apm_round(rr, places, tmp1); +rr->m_apm_exponent -= nexp; +rr->m_apm_sign = aa->m_apm_sign; +M_restore_stack(5); +} +/****************************************************************************/ diff --git a/src/mapm/mapm_rnd.c b/src/mapm/mapm_rnd.c new file mode 100644 index 00000000..8d2c38d7 --- /dev/null +++ b/src/mapm/mapm_rnd.c @@ -0,0 +1,278 @@ + +/* + * M_APM - mapm_rnd.c + * + * Copyright (C) 1999 - 2002 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +#ifdef MSDOS +#include +#include +#else +#include +extern void M_get_microsec(unsigned long *, long *); +#endif + +extern void M_reverse_string(char *); +extern void M_get_rnd_seed(M_APM); + +static M_APM M_rnd_aa; +static M_APM M_rnd_mm; +static M_APM M_rnd_XX; +static M_APM M_rtmp0; +static M_APM M_rtmp1; + +static int M_firsttime2 = TRUE; + +/* + Used Knuth's The Art of Computer Programming, Volume 2 as + the basis. Assuming the random number is X, compute + (where all the math is performed on integers) : + + X = (a * X + c) MOD m + + From Knuth: + + 'm' should be large, at least 2^30 : we use 1.0E+15 + + 'a' should be between .01m and .99m and not have a simple + pattern. 'a' should not have any large factors in common + with 'm' and (since 'm' is a power of 10) if 'a' MOD 200 + = 21 then all 'm' different possible values will be + generated before 'X' starts to repeat. + + We use 'a' = 716805947629621. + + This is a prime number and also meets 'a' MOD 200 = 21. + Commented out below are many potential multipliers that + are all prime and meet 'a' MOD 200 = 21. + + There are few restrictions on 'c' except 'c' can have no + factor in common with 'm', hence we set 'c' = 'a'. + + On the first call, the system time is used to initialize X. +*/ + +/* + * the following constants are all potential multipliers. they are + * all prime numbers that also meet the criteria of NUM mod 200 = 21. + */ + +/* +439682071525421 439682071528421 439682071529221 439682071529821 +439682071530421 439682071532021 439682071538821 439682071539421 +439682071540021 439682071547021 439682071551221 439682071553821 +439682071555421 439682071557221 439682071558021 439682071558621 +439682071559821 439652381461621 439652381465221 439652381465621 +439652381466421 439652381467421 439652381468621 439652381470021 +439652381471221 439652381477021 439652381484221 439652381488421 +439652381491021 439652381492021 439652381494021 439652381496821 +617294387035621 617294387038621 617294387039221 617294387044421 +617294387045221 617294387048621 617294387051621 617294387051821 +617294387053621 617294387058421 617294387064221 617294387065621 +617294387068621 617294387069221 617294387069821 617294387070421 +617294387072021 617294387072621 617294387073821 617294387076821 +649378126517621 649378126517821 649378126518221 649378126520821 +649378126523821 649378126525621 649378126526621 649378126528421 +649378126529621 649378126530821 649378126532221 649378126533221 +649378126535221 649378126539421 649378126543621 649378126546021 +649378126546421 649378126549421 649378126550821 649378126555021 +649378126557421 649378126560221 649378126561621 649378126562021 +649378126564621 649378126565821 672091582360421 672091582364221 +672091582364621 672091582367021 672091582368421 672091582369021 +672091582370821 672091582371421 672091582376821 672091582380821 +716805243983221 716805243984821 716805947623621 716805947624621 +716805947629021 716805947629621 716805947630621 716805947633621 +716805947634221 716805947635021 716805947635621 716805947642221 +*/ + +/****************************************************************************/ +void M_free_all_rnd() +{ +if (M_firsttime2 == FALSE) + { + m_apm_free(M_rnd_aa); + m_apm_free(M_rnd_mm); + m_apm_free(M_rnd_XX); + m_apm_free(M_rtmp0); + m_apm_free(M_rtmp1); + + M_firsttime2 = TRUE; + } +} +/****************************************************************************/ +void m_apm_set_random_seed(char *ss) +{ +M_APM btmp; + +if (M_firsttime2) + { + btmp = M_get_stack_var(); + m_apm_get_random(btmp); + M_restore_stack(1); + } + +m_apm_set_string(M_rnd_XX, ss); +} +/****************************************************************************/ +/* + * compute X = (a * X + c) MOD m where c = a + */ +void m_apm_get_random(M_APM mrnd) +{ + +if (M_firsttime2) /* use the system time as the initial seed value */ + { + M_firsttime2 = FALSE; + + M_rnd_aa = m_apm_init(); + M_rnd_XX = m_apm_init(); + M_rnd_mm = m_apm_init(); + M_rtmp0 = m_apm_init(); + M_rtmp1 = m_apm_init(); + + /* set the multiplier M_rnd_aa and M_rnd_mm */ + + m_apm_set_string(M_rnd_aa, "716805947629621"); + m_apm_set_string(M_rnd_mm, "1.0E15"); + + M_get_rnd_seed(M_rnd_XX); + } + +m_apm_multiply(M_rtmp0, M_rnd_XX, M_rnd_aa); +m_apm_add(M_rtmp1, M_rtmp0, M_rnd_aa); +m_apm_integer_div_rem(M_rtmp0, M_rnd_XX, M_rtmp1, M_rnd_mm); +m_apm_copy(mrnd, M_rnd_XX); +mrnd->m_apm_exponent -= 15; +} +/****************************************************************************/ +void M_reverse_string(char *s) +{ +int ct; +char ch, *p1, *p2; + +if ((ct = strlen(s)) <= 1) + return; + +p1 = s; +p2 = s + ct - 1; +ct /= 2; + +while (TRUE) + { + ch = *p1; + *p1++ = *p2; + *p2-- = ch; + + if (--ct == 0) + break; + } +} +/****************************************************************************/ + +#ifdef MSDOS + +/****************************************************************************/ +/* + * for DOS / Win 9x/NT systems : use 'ftime' + */ +void M_get_rnd_seed(M_APM mm) +{ +int millisec; +time_t timestamp; +unsigned long ul; +char ss[32], buf1[48], buf2[32]; +struct timeb timebuffer; +M_APM atmp; + +atmp = M_get_stack_var(); + +ftime(&timebuffer); + +millisec = (int)timebuffer.millitm; +timestamp = timebuffer.time; +ul = (unsigned long)(timestamp / 7); +ul += timestamp + 537; +strcpy(ss,ctime(×tamp)); /* convert to string and copy to ss */ + +sprintf(buf1,"%d",(millisec / 10)); +sprintf(buf2,"%lu",ul); + +ss[0] = ss[18]; +ss[1] = ss[17]; +ss[2] = ss[15]; +ss[3] = ss[14]; +ss[4] = ss[12]; +ss[5] = ss[11]; +ss[6] = ss[9]; +ss[7] = ss[23]; +ss[8] = ss[20]; +ss[9] = '\0'; + +M_reverse_string(buf2); +strcat(buf1,buf2); +strcat(buf1,ss); + +m_apm_set_string(atmp, buf1); +atmp->m_apm_exponent = 15; +m_apm_integer_divide(mm, atmp, MM_One); + +M_restore_stack(1); +} +/****************************************************************************/ + +#else + +/****************************************************************************/ +/* + * for unix systems : use 'gettimeofday' + */ +void M_get_rnd_seed(M_APM mm) +{ +unsigned long sec3; +long usec3; +char buf1[32], buf2[32]; +M_APM atmp; + +atmp = M_get_stack_var(); +M_get_microsec(&sec3,&usec3); + +sprintf(buf1,"%ld",usec3); +sprintf(buf2,"%lu",sec3); +M_reverse_string(buf2); +strcat(buf1,buf2); + +m_apm_set_string(atmp, buf1); +atmp->m_apm_exponent = 15; +m_apm_integer_divide(mm, atmp, MM_One); + +M_restore_stack(1); +} +/****************************************************************************/ +void M_get_microsec(unsigned long *sec, long *usec) +{ +struct timeval time_now; /* current time for elapsed time check */ + +gettimeofday(&time_now, NULL); /* get current time */ + +*sec = time_now.tv_sec; +*usec = time_now.tv_usec; +} +/****************************************************************************/ + +#endif + diff --git a/src/mapm/mapm_set.c b/src/mapm/mapm_set.c new file mode 100644 index 00000000..432af71b --- /dev/null +++ b/src/mapm/mapm_set.c @@ -0,0 +1,346 @@ + +/* + * M_APM - mapm_set.c + * + * Copyright (C) 1999 - 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +static char *M_buf = NULL; +static int M_lbuf = 0; + +/****************************************************************************/ +void M_free_all_set() +{ +if (M_lbuf != 0) + { + MAPM_FREE(M_buf); + M_buf = NULL; + M_lbuf = 0; + } +} +/****************************************************************************/ +void m_apm_set_long(M_APM atmp, long mm) +{ +int len, ii, nbytes; +char *p, *buf, ch, buf2[64]; + +/* if zero, return right away */ + +if (mm == 0) + { + M_set_to_zero(atmp); + return; + } + +M_long_2_ascii(buf2, mm); /* convert long -> ascii in base 10 */ +buf = buf2; + +if (mm < 0) + { + atmp->m_apm_sign = -1; + buf++; /* get past '-' sign */ + } +else + { + atmp->m_apm_sign = 1; + } + +len = strlen(buf); +atmp->m_apm_exponent = len; + +/* least significant nibble of ODD data-length must be 0 */ + +if ((len & 1) != 0) + { + buf[len] = '0'; + } + +/* remove any trailing '0' ... */ + +while (TRUE) + { + if (buf[--len] != '0') + break; + } + +atmp->m_apm_datalength = ++len; + +nbytes = (len + 1) >> 1; +p = buf; + +for (ii=0; ii < nbytes; ii++) + { + ch = *p++ - '0'; + atmp->m_apm_data[ii] = 10 * ch + *p++ - '0'; + } +} +/****************************************************************************/ +void m_apm_set_string(M_APM ctmp, char *s_in) +{ +char ch, *cp, *s, *p; +void *vp; +int i, j, zflag, exponent, sign; + +if (M_lbuf == 0) + { + M_lbuf = 256; + if ((M_buf = (char *)MAPM_MALLOC(256)) == NULL) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, "\'m_apm_set_string\', Out of memory"); + } + } + +if ((i = strlen(s_in)) > (M_lbuf - 4)) + { + M_lbuf = i + 32; + if ((vp = MAPM_REALLOC(M_buf, M_lbuf)) == NULL) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, "\'m_apm_set_string\', Out of memory"); + } + + M_buf = (char *)vp; + } + +s = M_buf; +strcpy(s,s_in); + +/* default == zero ... */ + +M_set_to_zero(ctmp); + +p = s; + +while (TRUE) + { + if (*p == ' ' || *p == '\t') + p++; + else + break; + } + +if (*p == '\0') + return; + +sign = 1; /* assume number is positive */ + +if (*p == '+') /* scan by optional '+' sign */ + p++; +else + { + if (*p == '-') /* check if number negative */ + { + sign = -1; + p++; + } + } + +M_lowercase(p); /* convert string to lowercase */ +exponent = 0; /* default */ + +if ((cp = strstr(p,"e")) != NULL) + { + exponent = atoi(cp + sizeof(char)); + *cp = '\0'; /* erase the exponent now */ + } + +j = M_strposition(p,"."); /* is there a decimal point ?? */ +if (j == -1) + { + strcat(p,"."); /* if not, append one */ + j = M_strposition(p,"."); /* now find it ... */ + } + +if (j > 0) /* normalize number and adjust exponent */ + { + exponent += j; + memmove((p+1),p,(j * sizeof(char))); + } + +p++; /* scan past implied decimal point now in column 1 (index 0) */ + +i = strlen(p); +ctmp->m_apm_datalength = i; + +if ((i & 1) != 0) /* if odd number of digits, append a '0' to make it even */ + strcat(p,"0"); + +j = strlen(p) >> 1; /* number of bytes in encoded M_APM number */ + +/* do we need more memory to hold this number */ + +if (j > ctmp->m_apm_malloclength) + { + if ((vp = MAPM_REALLOC(ctmp->m_apm_data, (j + 32))) == NULL) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, "\'m_apm_set_string\', Out of memory"); + } + + ctmp->m_apm_malloclength = j + 28; + ctmp->m_apm_data = (UCHAR *)vp; + } + +zflag = TRUE; + +for (i=0; i < j; i++) + { + ch = *p++ - '0'; + if ((ch = (10 * ch + *p++ - '0')) != 0) + zflag = FALSE; + + if (((int)ch & 0xFF) >= 100) + { + M_apm_log_error_msg(M_APM_RETURN, + "Warning! \'m_apm_set_string\' : Non-digit char found in parse"); + + M_apm_log_error_msg(M_APM_RETURN, "Text ="); + M_apm_log_error_msg(M_APM_RETURN, s_in); + + M_set_to_zero(ctmp); + return; + } + + ctmp->m_apm_data[i] = ch; + ctmp->m_apm_data[i+1] = 0; + } + +ctmp->m_apm_exponent = exponent; +ctmp->m_apm_sign = sign; + +if (zflag) + { + ctmp->m_apm_exponent = 0; + ctmp->m_apm_sign = 0; + ctmp->m_apm_datalength = 1; + } +else + { + M_apm_normalize(ctmp); + } + +/* + * if our local temp string is getting too big, + * release it's memory and start over next time. + * (this 1000 byte threshold is quite arbitrary, + * it may be more efficient in your app to make + * this number bigger). + */ + +if (M_lbuf > 1000) + { + MAPM_FREE(M_buf); + M_buf = NULL; + M_lbuf = 0; + } +} +/****************************************************************************/ +void m_apm_to_string(char *s, int places, M_APM mtmp) +{ +M_APM ctmp; +char *cp; +int i, index, first, max_i, num_digits, dec_places; +UCHAR numdiv, numrem; + +ctmp = M_get_stack_var(); +dec_places = places; + +if (dec_places < 0) + m_apm_copy(ctmp, mtmp); +else + m_apm_round(ctmp, dec_places, mtmp); + +if (ctmp->m_apm_sign == 0) + { + if (dec_places < 0) + strcpy(s,"0.0E0"); /* crioux: positive, no sign */ + else + { + strcpy(s,"0"); + + if (dec_places > 0) + strcat(s,"."); + + for (i=0; i < dec_places; i++) + strcat(s,"0"); + + strcat(s,"E0"); /* crioux: positive, no sign */ + } + + M_restore_stack(1); + return; + } + +max_i = (ctmp->m_apm_datalength + 1) >> 1; + +if (dec_places < 0) + num_digits = ctmp->m_apm_datalength; +else + num_digits = dec_places + 1; + +cp = s; + +if (ctmp->m_apm_sign == -1) + *cp++ = '-'; + +first = TRUE; + +i = 0; +index = 0; + +while (TRUE) + { + if (index >= max_i) + { + numdiv = 0; + numrem = 0; + } + else + M_get_div_rem_10((int)ctmp->m_apm_data[index],&numdiv,&numrem); + + index++; + + *cp++ = numdiv + '0'; + + if (++i == num_digits) + break; + + if (first) + { + first = FALSE; + *cp++ = '.'; + } + + *cp++ = numrem + '0'; + + if (++i == num_digits) + break; + } + +i = ctmp->m_apm_exponent - 1; +if (i >= 0) + sprintf(cp,"E%d",i); /* crioux: positive, no sign (could remove branching here) */ +else + sprintf(cp,"E%d",i); + +M_restore_stack(1); +} +/****************************************************************************/ diff --git a/src/mapm/mapm_sin.c b/src/mapm/mapm_sin.c new file mode 100644 index 00000000..3aa5bd81 --- /dev/null +++ b/src/mapm/mapm_sin.c @@ -0,0 +1,131 @@ + +/* + * M_APM - mapm_sin.c + * + * Copyright (C) 1999 - 2002 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +/****************************************************************************/ +void m_apm_sin(M_APM r, int places, M_APM a) +{ +M_APM tmp3; + +tmp3 = M_get_stack_var(); +M_limit_angle_to_pi(tmp3, (places + 6), a); +M_5x_sin(r, places, tmp3); +M_restore_stack(1); +} +/****************************************************************************/ +void m_apm_cos(M_APM r, int places, M_APM a) +{ +M_APM tmp3; + +tmp3 = M_get_stack_var(); +M_limit_angle_to_pi(tmp3, (places + 6), a); +M_4x_cos(r, places, tmp3); +M_restore_stack(1); +} +/****************************************************************************/ +void m_apm_sin_cos(M_APM sinv, M_APM cosv, int places, M_APM aa) +{ +M_APM tmp5, tmp6, tmp7; + +tmp5 = M_get_stack_var(); +tmp6 = M_get_stack_var(); +tmp7 = M_get_stack_var(); + +M_limit_angle_to_pi(tmp5, (places + 6), aa); +M_4x_cos(tmp7, (places + 6), tmp5); + +/* + * compute sin(x) = sqrt(1 - cos(x) ^ 2). + * + * note that the sign of 'sin' will always be positive after the + * sqrt call. we need to adjust the sign based on what quadrant + * the original angle is in. + */ + +M_cos_to_sin(tmp6, (places + 6), tmp7); +if (tmp6->m_apm_sign != 0) + tmp6->m_apm_sign = tmp5->m_apm_sign; + +m_apm_round(sinv, places, tmp6); +m_apm_round(cosv, places, tmp7); +M_restore_stack(3); +} +/****************************************************************************/ +void m_apm_tan(M_APM r, int places, M_APM a) +{ +M_APM tmps, tmpc, tmp0; + +tmps = M_get_stack_var(); +tmpc = M_get_stack_var(); +tmp0 = M_get_stack_var(); + +m_apm_sin_cos(tmps, tmpc, (places + 4), a); + +/* tan(x) = sin(x) / cos(x) */ + +m_apm_divide(tmp0, (places + 4), tmps, tmpc); +m_apm_round(r, places, tmp0); +M_restore_stack(3); +} +/****************************************************************************/ +void M_limit_angle_to_pi(M_APM rr, int places, M_APM aa) +{ +M_APM tmp7, tmp8, tmp9; + +M_check_PI_places(places); + +tmp9 = M_get_stack_var(); +m_apm_copy(tmp9, MM_lc_PI); + +if (m_apm_compare(aa, tmp9) == 1) /* > PI */ + { + tmp7 = M_get_stack_var(); + tmp8 = M_get_stack_var(); + + m_apm_add(tmp7, aa, tmp9); + m_apm_integer_divide(tmp9, tmp7, MM_lc_2_PI); + m_apm_multiply(tmp8, tmp9, MM_lc_2_PI); + m_apm_subtract(tmp9, aa, tmp8); + m_apm_round(rr, places, tmp9); + + M_restore_stack(3); + return; + } + +tmp9->m_apm_sign = -1; +if (m_apm_compare(aa, tmp9) == -1) /* < -PI */ + { + tmp7 = M_get_stack_var(); + tmp8 = M_get_stack_var(); + + m_apm_add(tmp7, aa, tmp9); + m_apm_integer_divide(tmp9, tmp7, MM_lc_2_PI); + m_apm_multiply(tmp8, tmp9, MM_lc_2_PI); + m_apm_subtract(tmp9, aa, tmp8); + m_apm_round(rr, places, tmp9); + + M_restore_stack(3); + return; + } + +m_apm_copy(rr, aa); +M_restore_stack(1); +} +/****************************************************************************/ diff --git a/src/mapm/mapmasin.c b/src/mapm/mapmasin.c new file mode 100644 index 00000000..c09fd40e --- /dev/null +++ b/src/mapm/mapmasin.c @@ -0,0 +1,390 @@ + +/* + * M_APM - mapmasin.c + * + * Copyright (C) 1999 - 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" +#include + +/****************************************************************************/ +void m_apm_arctan2(M_APM rr, int places, M_APM yy, M_APM xx) +{ +M_APM tmp5, tmp6, tmp7; +int ix, iy; + +iy = yy->m_apm_sign; +ix = xx->m_apm_sign; + +if (ix == 0) /* x == 0 */ + { + if (iy == 0) /* y == 0 */ + { + M_apm_log_error_msg(M_APM_RETURN, + "Warning! ... \'m_apm_arctan2\', Both Arguments == 0"); + M_set_to_zero(rr); + return; + } + + M_check_PI_places(places); + m_apm_round(rr, places, MM_lc_HALF_PI); + rr->m_apm_sign = iy; + return; + } + +if (iy == 0) + { + if (ix == 1) + { + M_set_to_zero(rr); + } + else + { + M_check_PI_places(places); + m_apm_round(rr, places, MM_lc_PI); + } + + return; + } + +/* + * the special cases have been handled, now do the real work + */ + +tmp5 = M_get_stack_var(); +tmp6 = M_get_stack_var(); +tmp7 = M_get_stack_var(); + +m_apm_divide(tmp6, (places + 4), yy, xx); +m_apm_arctan(tmp5, (places + 4), tmp6); + +if (ix == 1) /* 'x' is positive */ + { + m_apm_round(rr, places, tmp5); + } +else /* 'x' is negative */ + { + M_check_PI_places(places); + + if (iy == 1) /* 'y' is positive */ + { + m_apm_add(tmp7, tmp5, MM_lc_PI); + m_apm_round(rr, places, tmp7); + } + else /* 'y' is negative */ + { + m_apm_subtract(tmp7, tmp5, MM_lc_PI); + m_apm_round(rr, places, tmp7); + } + } + +M_restore_stack(3); +} +/****************************************************************************/ +/* + Calculate arctan using the identity : + + x + arctan (x) == arcsin [ --------------- ] + sqrt(1 + x^2) + +*/ +void m_apm_arctan(M_APM rr, int places, M_APM xx) +{ +M_APM tmp8, tmp9; + +if (xx->m_apm_sign == 0) /* input == 0 ?? */ + { + M_set_to_zero(rr); + return; + } + +if (xx->m_apm_exponent <= -4) /* input close to 0 ?? */ + { + M_arctan_near_0(rr, places, xx); + return; + } + +tmp8 = M_get_stack_var(); +tmp9 = M_get_stack_var(); + +m_apm_multiply(tmp9, xx, xx); +m_apm_add(tmp8, tmp9, MM_One); +m_apm_sqrt(tmp9, (places + 4), tmp8); +m_apm_divide(tmp8, (places + 4), xx, tmp9); +m_apm_arcsin(rr, places, tmp8); +M_restore_stack(2); +} +/****************************************************************************/ +void m_apm_arcsin(M_APM r, int places, M_APM x) +{ +M_APM tmp0, tmp1, tmp2, tmp3, current_x; +int ii, maxiter, maxp, tolerance, local_precision; + +current_x = M_get_stack_var(); +tmp0 = M_get_stack_var(); +tmp1 = M_get_stack_var(); +tmp2 = M_get_stack_var(); +tmp3 = M_get_stack_var(); + +m_apm_absolute_value(tmp0, x); + +ii = m_apm_compare(tmp0, MM_One); + +if (ii == 1) /* |x| > 1 */ + { + M_apm_log_error_msg(M_APM_RETURN, + "Warning! ... \'m_apm_arcsin\', |Argument| > 1"); + M_set_to_zero(r); + M_restore_stack(5); + return; + } + +if (ii == 0) /* |x| == 1, arcsin = +/- PI / 2 */ + { + M_check_PI_places(places); + m_apm_round(r, places, MM_lc_HALF_PI); + r->m_apm_sign = x->m_apm_sign; + + M_restore_stack(5); + return; + } + +if (m_apm_compare(tmp0, MM_0_85) == 1) /* check if > 0.85 */ + { + M_cos_to_sin(tmp2, (places + 4), x); + m_apm_arccos(r, places, tmp2); + r->m_apm_sign = x->m_apm_sign; + + M_restore_stack(5); + return; + } + +if (x->m_apm_sign == 0) /* input == 0 ?? */ + { + M_set_to_zero(r); + M_restore_stack(5); + return; + } + +if (x->m_apm_exponent <= -4) /* input close to 0 ?? */ + { + M_arcsin_near_0(r, places, x); + M_restore_stack(5); + return; + } + +tolerance = -(places + 4); +maxp = places + 8 - x->m_apm_exponent; +local_precision = 20 - x->m_apm_exponent; + +/* + * compute the maximum number of iterations + * that should be needed to calculate to + * the desired accuracy. [ constant below ~= 1 / log(2) ] + */ + +maxiter = (int)(log((double)(places + 2)) * 1.442695) + 3; + +if (maxiter < 5) + maxiter = 5; + +M_get_asin_guess(current_x, x); + +/* Use the following iteration to solve for arc-sin : + + sin(X) - N + X = X - ------------ + n+1 cos(X) +*/ + +ii = 0; + +while (TRUE) + { + M_4x_cos(tmp1, local_precision, current_x); + + M_cos_to_sin(tmp2, local_precision, tmp1); + if (tmp2->m_apm_sign != 0) + tmp2->m_apm_sign = current_x->m_apm_sign; + + m_apm_subtract(tmp3, tmp2, x); + m_apm_divide(tmp0, local_precision, tmp3, tmp1); + + m_apm_subtract(tmp2, current_x, tmp0); + m_apm_copy(current_x, tmp2); + + if (ii != 0) + { + if (((2 * tmp0->m_apm_exponent) < tolerance) || (tmp0->m_apm_sign == 0)) + break; + } + + if (++ii == maxiter) + { + M_apm_log_error_msg(M_APM_RETURN, + "Warning! ... \'m_apm_arcsin\', max iteration count reached"); + break; + } + + local_precision *= 2; + + if (local_precision > maxp) + local_precision = maxp; + } + +m_apm_round(r, places, current_x); +M_restore_stack(5); +} +/****************************************************************************/ +void m_apm_arccos(M_APM r, int places, M_APM x) +{ +M_APM tmp0, tmp1, tmp2, tmp3, current_x; +int ii, maxiter, maxp, tolerance, local_precision; + +current_x = M_get_stack_var(); +tmp0 = M_get_stack_var(); +tmp1 = M_get_stack_var(); +tmp2 = M_get_stack_var(); +tmp3 = M_get_stack_var(); + +m_apm_absolute_value(tmp0, x); + +ii = m_apm_compare(tmp0, MM_One); + +if (ii == 1) /* |x| > 1 */ + { + M_apm_log_error_msg(M_APM_RETURN, + "Warning! ... \'m_apm_arccos\', |Argument| > 1"); + M_set_to_zero(r); + M_restore_stack(5); + return; + } + +if (ii == 0) /* |x| == 1, arccos = 0, PI */ + { + if (x->m_apm_sign == 1) + { + M_set_to_zero(r); + } + else + { + M_check_PI_places(places); + m_apm_round(r, places, MM_lc_PI); + } + + M_restore_stack(5); + return; + } + +if (m_apm_compare(tmp0, MM_0_85) == 1) /* check if > 0.85 */ + { + M_cos_to_sin(tmp2, (places + 4), x); + + if (x->m_apm_sign == 1) + { + m_apm_arcsin(r, places, tmp2); + } + else + { + M_check_PI_places(places); + m_apm_arcsin(tmp3, (places + 4), tmp2); + m_apm_subtract(tmp1, MM_lc_PI, tmp3); + m_apm_round(r, places, tmp1); + } + + M_restore_stack(5); + return; + } + +if (x->m_apm_sign == 0) /* input == 0 ?? */ + { + M_check_PI_places(places); + m_apm_round(r, places, MM_lc_HALF_PI); + M_restore_stack(5); + return; + } + +if (x->m_apm_exponent <= -4) /* input close to 0 ?? */ + { + M_arccos_near_0(r, places, x); + M_restore_stack(5); + return; + } + +tolerance = -(places + 4); +maxp = places + 8; +local_precision = 18; + +/* + * compute the maximum number of iterations + * that should be needed to calculate to + * the desired accuracy. [ constant below ~= 1 / log(2) ] + */ + +maxiter = (int)(log((double)(places + 2)) * 1.442695) + 3; + +if (maxiter < 5) + maxiter = 5; + +M_get_acos_guess(current_x, x); + +/* Use the following iteration to solve for arc-cos : + + cos(X) - N + X = X + ------------ + n+1 sin(X) +*/ + +ii = 0; + +while (TRUE) + { + M_4x_cos(tmp1, local_precision, current_x); + + M_cos_to_sin(tmp2, local_precision, tmp1); + if (tmp2->m_apm_sign != 0) + tmp2->m_apm_sign = current_x->m_apm_sign; + + m_apm_subtract(tmp3, tmp1, x); + m_apm_divide(tmp0, local_precision, tmp3, tmp2); + + m_apm_add(tmp2, current_x, tmp0); + m_apm_copy(current_x, tmp2); + + if (ii != 0) + { + if (((2 * tmp0->m_apm_exponent) < tolerance) || (tmp0->m_apm_sign == 0)) + break; + } + + if (++ii == maxiter) + { + M_apm_log_error_msg(M_APM_RETURN, + "Warning! ... \'m_apm_arccos\', max iteration count reached"); + break; + } + + local_precision *= 2; + + if (local_precision > maxp) + local_precision = maxp; + } + +m_apm_round(r, places, current_x); +M_restore_stack(5); +} +/****************************************************************************/ diff --git a/src/mapm/mapmasn0.c b/src/mapm/mapmasn0.c new file mode 100644 index 00000000..389419da --- /dev/null +++ b/src/mapm/mapmasn0.c @@ -0,0 +1,128 @@ + +/* + * M_APM - mapmasn0.c + * + * Copyright (C) 2000 - 2002 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +/****************************************************************************/ +/* + Calculate arcsin using the identity : + + x + arcsin (x) == arctan [ --------------- ] + sqrt(1 - x^2) + +*/ +void M_arcsin_near_0(M_APM rr, int places, M_APM aa) +{ +M_APM tmp5, tmp6; + +tmp5 = M_get_stack_var(); +tmp6 = M_get_stack_var(); + +M_cos_to_sin(tmp5, (places + 8), aa); +m_apm_divide(tmp6, (places + 8), aa, tmp5); +M_arctan_near_0(rr, places, tmp6); + +M_restore_stack(2); +} +/****************************************************************************/ +/* + Calculate arccos using the identity : + + arccos (x) == PI / 2 - arcsin (x) + +*/ +void M_arccos_near_0(M_APM rr, int places, M_APM aa) +{ +M_APM tmp1, tmp2; + +tmp1 = M_get_stack_var(); +tmp2 = M_get_stack_var(); + +M_check_PI_places(places); +M_arcsin_near_0(tmp1, (places + 4), aa); +m_apm_subtract(tmp2, MM_lc_HALF_PI, tmp1); +m_apm_round(rr, places, tmp2); + +M_restore_stack(2); +} +/****************************************************************************/ +/* + calculate arctan (x) with the following series: + + x^3 x^5 x^7 x^9 + arctan (x) == x - --- + --- - --- + --- ... + 3 5 7 9 + +*/ +void M_arctan_near_0(M_APM rr, int places, M_APM aa) +{ +M_APM tmp0, tmpR, tmp2, tmpS, digit, term; +int tolerance, local_precision; +long m1; + +tmp0 = M_get_stack_var(); +tmp2 = M_get_stack_var(); +tmpR = M_get_stack_var(); +tmpS = M_get_stack_var(); +term = M_get_stack_var(); +digit = M_get_stack_var(); + +tolerance = aa->m_apm_exponent - places - 4; +local_precision = places + 8 - aa->m_apm_exponent; + +m_apm_copy(term, aa); +m_apm_copy(tmpS, aa); +m_apm_multiply(tmp0, aa, aa); +m_apm_round(tmp2, (local_precision + 8), tmp0); + +m1 = 1; + +while (TRUE) + { + m1 += 2; + m_apm_set_long(digit, m1); + m_apm_multiply(tmp0, term, tmp2); + m_apm_round(term, local_precision, tmp0); + m_apm_divide(tmp0, local_precision, term, digit); + m_apm_subtract(tmpR, tmpS, tmp0); + + if ((tmp0->m_apm_exponent < tolerance) || (tmp0->m_apm_sign == 0)) + { + m_apm_round(rr, places, tmpR); + break; + } + + m1 += 2; + m_apm_set_long(digit, m1); + m_apm_multiply(tmp0, term, tmp2); + m_apm_round(term, local_precision, tmp0); + m_apm_divide(tmp0, local_precision, term, digit); + m_apm_add(tmpS, tmpR, tmp0); + + if ((tmp0->m_apm_exponent < tolerance) || (tmp0->m_apm_sign == 0)) + { + m_apm_round(rr, places, tmpS); + break; + } + } + +M_restore_stack(6); /* restore the 6 locals we used here */ +} +/****************************************************************************/ diff --git a/src/mapm/mapmcbrt.c b/src/mapm/mapmcbrt.c new file mode 100644 index 00000000..ad4cf499 --- /dev/null +++ b/src/mapm/mapmcbrt.c @@ -0,0 +1,131 @@ + +/* + * M_APM - mapmcbrt.c + * + * Copyright (C) 2000 - 2002 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +/****************************************************************************/ +void m_apm_cbrt(M_APM rr, int places, M_APM aa) +{ +M_APM last_x, guess, tmpN, tmp7, tmp8, tmp9; +int ii, nexp, bflag, tolerance, maxp, local_precision; + +/* result is 0 if input is 0 */ + +if (aa->m_apm_sign == 0) + { + M_set_to_zero(rr); + return; + } + +last_x = M_get_stack_var(); +guess = M_get_stack_var(); +tmpN = M_get_stack_var(); +tmp7 = M_get_stack_var(); +tmp8 = M_get_stack_var(); +tmp9 = M_get_stack_var(); + +/* compute the cube root of the positive number, we'll fix the sign later */ + +m_apm_absolute_value(tmpN, aa); +nexp = 0; + +/* + normalize the input number (make the exponent near 0) so + the 'guess' function will not over/under flow on large + magnitude exponents. +*/ + +if (aa->m_apm_exponent > 2) + { + nexp = aa->m_apm_exponent / 3; + tmpN->m_apm_exponent -= 3 * nexp; + } + +if (aa->m_apm_exponent < -2) + { + nexp = aa->m_apm_exponent / 3 - 1; + tmpN->m_apm_exponent -= 3 * nexp; + } + +M_get_cbrt_guess(guess, tmpN); + +tolerance = places + 4; +maxp = places + 16; +bflag = FALSE; + +m_apm_multiply(tmp9, guess, guess); +m_apm_multiply(tmp8, guess, tmp9); +m_apm_subtract(tmp9, tmpN, tmp8); + +if ((local_precision = 16 - tmp9->m_apm_exponent) < 30) + local_precision = 30; + +m_apm_negate(last_x, MM_Ten); + +/* Use the following iteration to calculate the cube root : + + 1 N + X = --- * [ 2 * X + --- ] + n+1 3 X^2 +*/ + +ii = 0; + +while (TRUE) + { + m_apm_multiply(tmp8, MM_Two, guess); + m_apm_multiply(tmp7, guess, guess); + m_apm_divide(tmp9, local_precision, tmpN, tmp7); + m_apm_add(tmp7, tmp8, tmp9); + m_apm_divide(guess, local_precision, tmp7, MM_Three); + + if (bflag) + break; + + /* force at least 2 iterations so 'last_x' has valid data */ + + if (ii != 0) + { + m_apm_subtract(tmp8, guess, last_x); + + if (tmp8->m_apm_sign == 0) + break; + + if ((-4 * tmp8->m_apm_exponent) > tolerance) + bflag = TRUE; + } + + if (ii == 0) + local_precision *= 2; + else + local_precision += 2 - 2 * tmp8->m_apm_exponent; + + if (local_precision > maxp) + local_precision = maxp; + + m_apm_copy(last_x, guess); + ii++; + } + +m_apm_round(rr, places, guess); +rr->m_apm_exponent += nexp; +rr->m_apm_sign = aa->m_apm_sign; +M_restore_stack(6); +} +/****************************************************************************/ diff --git a/src/mapm/mapmcnst.c b/src/mapm/mapmcnst.c new file mode 100644 index 00000000..212c9947 --- /dev/null +++ b/src/mapm/mapmcnst.c @@ -0,0 +1,270 @@ + +/* + * M_APM - mapmcnst.c + * + * Copyright (C) 1999 - 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +int MM_lc_PI_digits = 0; +int MM_lc_log_digits; +int MM_cpp_min_precision; /* only used in C++ wrapper */ + +M_APM MM_Zero = NULL; +M_APM MM_One = NULL; +M_APM MM_Two = NULL; +M_APM MM_Three = NULL; +M_APM MM_Four = NULL; +M_APM MM_Five = NULL; +M_APM MM_Ten = NULL; +M_APM MM_0_5 = NULL; +M_APM MM_E = NULL; +M_APM MM_PI = NULL; +M_APM MM_HALF_PI = NULL; +M_APM MM_2_PI = NULL; +M_APM MM_lc_PI = NULL; +M_APM MM_lc_HALF_PI = NULL; +M_APM MM_lc_2_PI = NULL; +M_APM MM_lc_log2 = NULL; +M_APM MM_lc_log10 = NULL; +M_APM MM_lc_log10R = NULL; +M_APM MM_0_85 = NULL; +M_APM MM_5x_125R = NULL; +M_APM MM_5x_64R = NULL; +M_APM MM_5x_256R = NULL; +M_APM MM_5x_Eight = NULL; +M_APM MM_5x_Sixteen = NULL; +M_APM MM_5x_Twenty = NULL; +M_APM MM_LOG_E_BASE_10 = NULL; +M_APM MM_LOG_10_BASE_E = NULL; +M_APM MM_LOG_2_BASE_E = NULL; +M_APM MM_LOG_3_BASE_E = NULL; + + +static char MM_cnst_PI[] = +"3.1415926535897932384626433832795028841971693993751058209749445923078\ +1640628620899862803482534211706798214808651328230664709384460955"; + +static char MM_cnst_E[] = +"2.7182818284590452353602874713526624977572470936999595749669676277240\ +76630353547594571382178525166427427466391932003059921817413596629"; + +static char MM_cnst_log_2[] = +"0.6931471805599453094172321214581765680755001343602552541206800094933\ +93621969694715605863326996418687542001481020570685733685520235758"; + +static char MM_cnst_log_3[] = +"1.0986122886681096913952452369225257046474905578227494517346943336374\ +9429321860896687361575481373208878797002906595786574236800422593"; + +static char MM_cnst_log_10[] = +"2.3025850929940456840179914546843642076011014886287729760333279009675\ +7260967735248023599720508959829834196778404228624863340952546508"; + +static char MM_cnst_1_log_10[] = +"0.4342944819032518276511289189166050822943970058036665661144537831658\ +64649208870774729224949338431748318706106744766303733641679287159"; + +/* + * the following constants have ~520 digits each, if needed + */ + +/* +static char MM_cnst_PI[] = +"3.1415926535897932384626433832795028841971693993751058209749445923078\ +164062862089986280348253421170679821480865132823066470938446095505822\ +317253594081284811174502841027019385211055596446229489549303819644288\ +109756659334461284756482337867831652712019091456485669234603486104543\ +266482133936072602491412737245870066063155881748815209209628292540917\ +153643678925903600113305305488204665213841469519415116094330572703657\ +595919530921861173819326117931051185480744623799627495673518857527248\ +91227938183011949129833673362440656643"; + +static char MM_cnst_E[] = +"2.7182818284590452353602874713526624977572470936999595749669676277240\ +766303535475945713821785251664274274663919320030599218174135966290435\ +729003342952605956307381323286279434907632338298807531952510190115738\ +341879307021540891499348841675092447614606680822648001684774118537423\ +454424371075390777449920695517027618386062613313845830007520449338265\ +602976067371132007093287091274437470472306969772093101416928368190255\ +151086574637721112523897844250569536967707854499699679468644549059879\ +3163688923009879312773617821542499923"; + +static char MM_cnst_log_2[] = +"0.6931471805599453094172321214581765680755001343602552541206800094933\ +936219696947156058633269964186875420014810205706857336855202357581305\ +570326707516350759619307275708283714351903070386238916734711233501153\ +644979552391204751726815749320651555247341395258829504530070953263666\ +426541042391578149520437404303855008019441706416715186447128399681717\ +845469570262716310645461502572074024816377733896385506952606683411372\ +738737229289564935470257626520988596932019650585547647033067936544325\ +47632744951250406069438147104689946506"; + +static char MM_cnst_log_3[] = +"1.0986122886681096913952452369225257046474905578227494517346943336374\ +942932186089668736157548137320887879700290659578657423680042259305198\ +210528018707672774106031627691833813671793736988443609599037425703167\ +959115211455919177506713470549401667755802222031702529468975606901065\ +215056428681380363173732985777823669916547921318181490200301038236301\ +222486527481982259910974524908964580534670088459650857484441190188570\ +876474948670796130858294116021661211840014098255143919487688936798494\ +3022557315353296853452952514592138765"; + +static char MM_cnst_log_10[] = +"2.3025850929940456840179914546843642076011014886287729760333279009675\ +726096773524802359972050895982983419677840422862486334095254650828067\ +566662873690987816894829072083255546808437998948262331985283935053089\ +653777326288461633662222876982198867465436674744042432743651550489343\ +149393914796194044002221051017141748003688084012647080685567743216228\ +355220114804663715659121373450747856947683463616792101806445070648000\ +277502684916746550586856935673420670581136429224554405758925724208241\ +31469568901675894025677631135691929203"; + +static char MM_cnst_1_log_10[] = +"0.4342944819032518276511289189166050822943970058036665661144537831658\ +646492088707747292249493384317483187061067447663037336416792871589639\ +065692210646628122658521270865686703295933708696588266883311636077384\ +905142844348666768646586085135561482123487653435434357317253835622281\ +395603048646652366095539377356176323431916710991411597894962993512457\ +934926357655469077671082419150479910989674900103277537653570270087328\ +550951731440674697951899513594088040423931518868108402544654089797029\ +86328682876262414401345704354613292060"; +*/ + + +/****************************************************************************/ +void M_free_all_cnst() +{ +if (MM_lc_PI_digits != 0) + { + m_apm_free(MM_Zero); + m_apm_free(MM_One); + m_apm_free(MM_Two); + m_apm_free(MM_Three); + m_apm_free(MM_Four); + m_apm_free(MM_Five); + m_apm_free(MM_Ten); + m_apm_free(MM_0_5); + m_apm_free(MM_LOG_2_BASE_E); + m_apm_free(MM_LOG_3_BASE_E); + m_apm_free(MM_E); + m_apm_free(MM_PI); + m_apm_free(MM_HALF_PI); + m_apm_free(MM_2_PI); + m_apm_free(MM_lc_PI); + m_apm_free(MM_lc_HALF_PI); + m_apm_free(MM_lc_2_PI); + m_apm_free(MM_lc_log2); + m_apm_free(MM_lc_log10); + m_apm_free(MM_lc_log10R); + m_apm_free(MM_0_85); + m_apm_free(MM_5x_125R); + m_apm_free(MM_5x_64R); + m_apm_free(MM_5x_256R); + m_apm_free(MM_5x_Eight); + m_apm_free(MM_5x_Sixteen); + m_apm_free(MM_5x_Twenty); + m_apm_free(MM_LOG_E_BASE_10); + m_apm_free(MM_LOG_10_BASE_E); + + MM_lc_PI_digits = 0; + } +} +/****************************************************************************/ +void M_init_trig_globals() +{ +MM_lc_PI_digits = VALID_DECIMAL_PLACES; +MM_lc_log_digits = VALID_DECIMAL_PLACES; +MM_cpp_min_precision = 30; + +MM_Zero = m_apm_init(); +MM_One = m_apm_init(); +MM_Two = m_apm_init(); +MM_Three = m_apm_init(); +MM_Four = m_apm_init(); +MM_Five = m_apm_init(); +MM_Ten = m_apm_init(); +MM_0_5 = m_apm_init(); +MM_LOG_2_BASE_E = m_apm_init(); +MM_LOG_3_BASE_E = m_apm_init(); +MM_E = m_apm_init(); +MM_PI = m_apm_init(); +MM_HALF_PI = m_apm_init(); +MM_2_PI = m_apm_init(); +MM_lc_PI = m_apm_init(); +MM_lc_HALF_PI = m_apm_init(); +MM_lc_2_PI = m_apm_init(); +MM_lc_log2 = m_apm_init(); +MM_lc_log10 = m_apm_init(); +MM_lc_log10R = m_apm_init(); +MM_0_85 = m_apm_init(); +MM_5x_125R = m_apm_init(); +MM_5x_64R = m_apm_init(); +MM_5x_256R = m_apm_init(); +MM_5x_Eight = m_apm_init(); +MM_5x_Sixteen = m_apm_init(); +MM_5x_Twenty = m_apm_init(); +MM_LOG_E_BASE_10 = m_apm_init(); +MM_LOG_10_BASE_E = m_apm_init(); + +m_apm_set_string(MM_One, "1"); +m_apm_set_string(MM_Two, "2"); +m_apm_set_string(MM_Three, "3"); +m_apm_set_string(MM_Four, "4"); +m_apm_set_string(MM_Five, "5"); +m_apm_set_string(MM_Ten, "10"); +m_apm_set_string(MM_0_5, "0.5"); +m_apm_set_string(MM_0_85, "0.85"); + +m_apm_set_string(MM_5x_125R, "8.0E-3"); +m_apm_set_string(MM_5x_64R, "1.5625E-2"); +m_apm_set_string(MM_5x_256R, "3.90625E-3"); +m_apm_set_string(MM_5x_Eight, "8"); +m_apm_set_string(MM_5x_Sixteen, "16"); +m_apm_set_string(MM_5x_Twenty, "20"); + +m_apm_set_string(MM_LOG_2_BASE_E, MM_cnst_log_2); +m_apm_set_string(MM_LOG_3_BASE_E, MM_cnst_log_3); +m_apm_set_string(MM_LOG_10_BASE_E, MM_cnst_log_10); +m_apm_set_string(MM_LOG_E_BASE_10, MM_cnst_1_log_10); + +m_apm_set_string(MM_lc_log2, MM_cnst_log_2); +m_apm_set_string(MM_lc_log10, MM_cnst_log_10); +m_apm_set_string(MM_lc_log10R, MM_cnst_1_log_10); + +m_apm_set_string(MM_E, MM_cnst_E); +m_apm_set_string(MM_PI, MM_cnst_PI); +m_apm_multiply(MM_HALF_PI, MM_PI, MM_0_5); +m_apm_multiply(MM_2_PI, MM_PI, MM_Two); + +m_apm_copy(MM_lc_PI, MM_PI); +m_apm_copy(MM_lc_HALF_PI, MM_HALF_PI); +m_apm_copy(MM_lc_2_PI, MM_2_PI); +} +/****************************************************************************/ +void m_apm_cpp_precision(int digits) +{ +if (MM_lc_PI_digits == 0) + { + m_apm_free(m_apm_init()); + } + +if (digits >= 2) + MM_cpp_min_precision = digits; +else + MM_cpp_min_precision = 2; +} +/****************************************************************************/ diff --git a/src/mapm/mapmfact.c b/src/mapm/mapmfact.c new file mode 100644 index 00000000..789d6a50 --- /dev/null +++ b/src/mapm/mapmfact.c @@ -0,0 +1,240 @@ + +/* + * M_APM - mapmfact.c + * + * Copyright (C) 1999 - 2002 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +/* + * Brief explanation of the factorial algorithm. + * ---------------------------------------------- + * + * The old algorithm simply multiplied N * (N-1) * (N-2) etc, until + * the number counted down to '2'. So one term of the multiplication + * kept getting bigger while multiplying by the next number in the + * sequence. + * + * The new algorithm takes advantage of the fast multiplication + * algorithm. The "ideal" setup for fast multiplication is when + * both numbers have approx the same number of significant digits + * and the number of digits is very near (but not over) an exact + * power of 2. + * + * So, we will multiply N * (N-1) * (N-2), etc until the number of + * significant digits is approx 256. + * + * Store this temp product into an array. + * + * Then we will multiply the next sequence until the number of + * significant digits is approx 256. + * + * Store this temp product into the next element of the array. + * + * Continue until we've counted down to 2. + * + * We now have an array of numbers with approx the same number + * of digits (except for the last element, depending on where it + * ended.) Now multiply each of the array elements together to + * get the final product. + * + * The array multiplies are done as follows (assume we used 11 + * array elements for this example, indicated by [0] - [10] ) : + * + * initial iter-1 iter-2 iter-3 iter-4 + * + * [0] + * * -> [0] + * [1] + * * -> [0] + * + * [2] + * * -> [1] + * [3] + * * -> [0] + * + * [4] + * * -> [2] + * [5] + * + * * -> [1] + * + * [6] + * * -> [3] * -> [0] + * [7] + * + * + * [8] + * * -> [4] + * [9] + * * -> [2] -> [1] + * + * + * [10] -> [5] + * + */ + +#include "m_apm_lc.h" + +/* define size of local array for temp storage */ + +#ifdef MSDOS +#define NDIM 64 +#else +#define NDIM 128 +#endif + +/****************************************************************************/ +void m_apm_factorial(M_APM moutput, M_APM minput) +{ +int ii, nmul, ndigits, nd, jj, kk, mm, ct; +M_APM array[NDIM]; +M_APM iprod1, iprod2, tmp1, tmp2; + +/* return 1 for any input <= 1 */ + +if (m_apm_compare(minput, MM_One) <= 0) + { + m_apm_copy(moutput, MM_One); + return; + } + +ct = 0; +mm = NDIM - 2; +ndigits = 256; +nd = ndigits - 20; +tmp1 = m_apm_init(); +tmp2 = m_apm_init(); +iprod1 = m_apm_init(); +iprod2 = m_apm_init(); +array[0] = m_apm_init(); + +m_apm_copy(tmp2, minput); + +/* loop until multiply count-down has reached '2' */ + +while (TRUE) + { + m_apm_copy(iprod1, MM_One); + + /* + * loop until the number of significant digits in this + * partial result is slightly less than 256 + */ + + while (TRUE) + { + m_apm_multiply(iprod2, iprod1, tmp2); + + m_apm_subtract(tmp1, tmp2, MM_One); + + m_apm_multiply(iprod1, iprod2, tmp1); + + /* + * I know, I know. There just isn't a *clean* way + * to break out of 2 nested loops. + */ + + if (m_apm_compare(tmp1, MM_Two) <= 0) + goto PHASE2; + + m_apm_subtract(tmp2, tmp1, MM_One); + + if (iprod1->m_apm_datalength > nd) + break; + } + + if (ct == (NDIM - 1)) + { + /* + * if the array has filled up, start multiplying + * some of the partial products now. + */ + + m_apm_copy(tmp1, array[mm]); + m_apm_multiply(array[mm], iprod1, tmp1); + + if (mm == 0) + { + mm = NDIM - 2; + ndigits = ndigits << 1; + nd = ndigits - 20; + } + else + mm--; + } + else + { + /* + * store this partial product in the array + * and allocate the next array element + */ + + m_apm_copy(array[ct], iprod1); + array[++ct] = m_apm_init(); + } + } + +PHASE2: + +m_apm_copy(array[ct], iprod1); + +kk = ct; + +while (kk != 0) + { + ii = 0; + jj = 0; + nmul = (kk + 1) >> 1; + + while (TRUE) + { + /* must use tmp var when ii,jj point to same element */ + + if (ii == 0) + { + m_apm_copy(tmp1, array[ii]); + m_apm_multiply(array[jj], tmp1, array[ii+1]); + } + else + m_apm_multiply(array[jj], array[ii], array[ii+1]); + + if (++jj == nmul) + break; + + ii += 2; + } + + if ((kk & 1) == 0) + { + jj = kk >> 1; + m_apm_copy(array[jj], array[kk]); + } + + kk = kk >> 1; + } + +m_apm_copy(moutput, array[0]); + +for (ii=0; ii <= ct; ii++) + { + m_apm_free(array[ii]); + } + +m_apm_free(tmp1); +m_apm_free(tmp2); +m_apm_free(iprod1); +m_apm_free(iprod2); +} +/****************************************************************************/ diff --git a/src/mapm/mapmfmul.c b/src/mapm/mapmfmul.c new file mode 100644 index 00000000..e2411f0a --- /dev/null +++ b/src/mapm/mapmfmul.c @@ -0,0 +1,723 @@ + +/* + * M_APM - mapmfmul.c + * + * Copyright (C) 1999 - 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +static int M_firsttimef = TRUE; + +/* + * specify the max size the FFT routine can handle + * (in MAPM, #digits = 2 * #bytes) + * + * this number *must* be an exact power of 2. + * + * **WORST** case input numbers (all 9's) has shown that + * the FFT math will overflow if the #define here is + * >= 1048576. On my system, 524,288 worked OK. I will + * factor down another factor of 2 to safeguard against + * other computers have less precise floating point math. + * If you are confident in your system, 524288 will + * theoretically work fine. + * + * the define here allows the FFT algorithm to multiply two + * 524,288 digit numbers yielding a 1,048,576 digit result. + */ + +#define MAX_FFT_BYTES 262144 + +/* + * the Divide-and-Conquer multiplication kicks in when the size of + * the numbers exceed the capability of the FFT (#define just above). + * + * #bytes D&C call depth + * ------ -------------- + * 512K 1 + * 1M 2 + * 2M 3 + * 4M 4 + * ... ... + * 2.1990E+12 23 + * + * the following stack sizes are sized to meet the + * above 2.199E+12 example, though I wouldn't want to + * wait for it to finish... + * + * Each call requires 7 stack variables to be saved so + * we need a stack depth of 23 * 7 + PAD. (we use 164) + * + * For 'exp_stack', 3 integers also are required to be saved + * for each recursive call so we need a stack depth of + * 23 * 3 + PAD. (we use 72) + * + * + * If the FFT multiply is disabled, resize the arrays + * as follows: + * + * the following stack sizes are sized to meet the + * worst case expected assuming we are multiplying + * numbers with 2.14E+9 (2 ^ 31) digits. + * + * For sizeof(int) == 4 (32 bits) there may be up to 32 recursive + * calls. Each call requires 7 stack variables so we need a + * stack depth of 32 * 7 + PAD. (we use 240) + * + * For 'exp_stack', 3 integers also are required to be saved + * for each recursive call so we need a stack depth of + * 32 * 3 + PAD. (we use 100) + */ + +#ifdef NO_FFT_MULTIPLY +#define M_STACK_SIZE 240 +#define M_ISTACK_SIZE 100 +#else +#define M_STACK_SIZE 164 +#define M_ISTACK_SIZE 72 +#endif + +static int exp_stack[M_ISTACK_SIZE]; +static int exp_stack_ptr; + +static UCHAR *mul_stack_data[M_STACK_SIZE]; +static int mul_stack_data_size[M_STACK_SIZE]; +static int M_mul_stack_ptr; + +static UCHAR *fmul_a1, *fmul_a0, *fmul_a9, *fmul_b1, *fmul_b0, + *fmul_b9, *fmul_t0; + +static int size_flag, bit_limit, stmp, itmp, mii; + +static M_APM M_ain; +static M_APM M_bin; + +extern void M_fast_multiply(M_APM, M_APM, M_APM); +extern void M_fmul_div_conq(UCHAR *, UCHAR *, UCHAR *, int); +extern void M_fmul_add(UCHAR *, UCHAR *, int, int); +extern int M_fmul_subtract(UCHAR *, UCHAR *, UCHAR *, int); +extern void M_fmul_split(UCHAR *, UCHAR *, UCHAR *, int); +extern int M_next_power_of_2(int); +extern int M_get_stack_ptr(int); +extern void M_push_mul_int(int); +extern int M_pop_mul_int(void); + +#ifdef NO_FFT_MULTIPLY +extern void M_4_byte_multiply(UCHAR *, UCHAR *, UCHAR *); +#else +extern void M_fast_mul_fft(UCHAR *, UCHAR *, UCHAR *, int); +#endif + +/* + * the following algorithm is used in this fast multiply routine + * (sometimes called the divide-and-conquer technique.) + * + * assume we have 2 numbers (a & b) with 2N digits. + * + * let : a = (2^N) * A1 + A0 , b = (2^N) * B1 + B0 + * + * where 'A1' is the 'most significant half' of 'a' and + * 'A0' is the 'least significant half' of 'a'. Same for + * B1 and B0. + * + * Now use the identity : + * + * 2N N N N + * ab = (2 + 2 ) A1B1 + 2 (A1-A0)(B0-B1) + (2 + 1)A0B0 + * + * + * The original problem of multiplying 2 (2N) digit numbers has + * been reduced to 3 multiplications of N digit numbers plus some + * additions, subtractions, and shifts. + * + * The fast multiplication algorithm used here uses the above + * identity in a recursive process. This algorithm results in + * O(n ^ 1.585) growth. + */ + + +/****************************************************************************/ +void M_free_all_fmul() +{ +int k; + +if (M_firsttimef == FALSE) + { + m_apm_free(M_ain); + m_apm_free(M_bin); + + for (k=0; k < M_STACK_SIZE; k++) + { + if (mul_stack_data_size[k] != 0) + { + MAPM_FREE(mul_stack_data[k]); + } + } + + M_firsttimef = TRUE; + } +} +/****************************************************************************/ +void M_push_mul_int(int val) +{ +exp_stack[++exp_stack_ptr] = val; +} +/****************************************************************************/ +int M_pop_mul_int() +{ +return(exp_stack[exp_stack_ptr--]); +} +/****************************************************************************/ +void M_fmul_split(UCHAR *x1, UCHAR *x0, UCHAR *xin, int nbytes) +{ +memcpy(x1, xin, nbytes); +memcpy(x0, (xin + nbytes), nbytes); +} +/****************************************************************************/ +void M_fast_multiply(M_APM rr, M_APM aa, M_APM bb) +{ +void *vp; +int ii, k, nexp, sign; + +if (M_firsttimef) + { + M_firsttimef = FALSE; + + for (k=0; k < M_STACK_SIZE; k++) + mul_stack_data_size[k] = 0; + + size_flag = M_get_sizeof_int(); + bit_limit = 8 * size_flag + 1; + + M_ain = m_apm_init(); + M_bin = m_apm_init(); + } + +exp_stack_ptr = -1; +M_mul_stack_ptr = -1; + +m_apm_copy(M_ain, aa); +m_apm_copy(M_bin, bb); + +sign = M_ain->m_apm_sign * M_bin->m_apm_sign; +nexp = M_ain->m_apm_exponent + M_bin->m_apm_exponent; + +if (M_ain->m_apm_datalength >= M_bin->m_apm_datalength) + ii = M_ain->m_apm_datalength; +else + ii = M_bin->m_apm_datalength; + +ii = (ii + 1) >> 1; +ii = M_next_power_of_2(ii); + +/* Note: 'ii' must be >= 4 here. this is guaranteed + by the caller: m_apm_multiply +*/ + +k = 2 * ii; /* required size of result, in bytes */ + +M_apm_pad(M_ain, k); /* fill out the data so the number of */ +M_apm_pad(M_bin, k); /* bytes is an exact power of 2 */ + +if (k > rr->m_apm_malloclength) + { + if ((vp = MAPM_REALLOC(rr->m_apm_data, (k + 32))) == NULL) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, "\'M_fast_multiply\', Out of memory"); + } + + rr->m_apm_malloclength = k + 28; + rr->m_apm_data = (UCHAR *)vp; + } + +#ifdef NO_FFT_MULTIPLY + +M_fmul_div_conq(rr->m_apm_data, M_ain->m_apm_data, + M_bin->m_apm_data, ii); +#else + +/* + * if the numbers are *really* big, use the divide-and-conquer + * routine first until the numbers are small enough to be handled + * by the FFT algorithm. If the numbers are already small enough, + * call the FFT multiplication now. + * + * Note that 'ii' here is (and must be) an exact power of 2. + */ + +if (size_flag == 2) /* if still using 16 bit compilers .... */ + { + M_fast_mul_fft(rr->m_apm_data, M_ain->m_apm_data, + M_bin->m_apm_data, ii); + } +else /* >= 32 bit compilers */ + { + if (ii > (MAX_FFT_BYTES + 2)) + { + M_fmul_div_conq(rr->m_apm_data, M_ain->m_apm_data, + M_bin->m_apm_data, ii); + } + else + { + M_fast_mul_fft(rr->m_apm_data, M_ain->m_apm_data, + M_bin->m_apm_data, ii); + } + } + +#endif + +rr->m_apm_sign = sign; +rr->m_apm_exponent = nexp; +rr->m_apm_datalength = 4 * ii; + +M_apm_normalize(rr); +} +/****************************************************************************/ +/* + * This is the recursive function to perform the multiply. The + * design intent here is to have no local variables. Any local + * data that needs to be saved is saved on one of the two stacks. + */ +void M_fmul_div_conq(UCHAR *rr, UCHAR *aa, UCHAR *bb, int sz) +{ + +#ifdef NO_FFT_MULTIPLY + +if (sz == 4) /* multiply 4x4 yielding an 8 byte result */ + { + M_4_byte_multiply(rr, aa, bb); + return; + } + +#else + +/* + * if the numbers are now small enough, let the FFT algorithm + * finish up. + */ + +if (sz == MAX_FFT_BYTES) + { + M_fast_mul_fft(rr, aa, bb, sz); + return; + } + +#endif + +memset(rr, 0, (2 * sz)); /* zero out the result */ +mii = sz >> 1; + +itmp = M_get_stack_ptr(mii); +M_push_mul_int(itmp); + +fmul_a1 = mul_stack_data[itmp]; + +itmp = M_get_stack_ptr(mii); +fmul_a0 = mul_stack_data[itmp]; + +itmp = M_get_stack_ptr(2 * sz); +fmul_a9 = mul_stack_data[itmp]; + +itmp = M_get_stack_ptr(mii); +fmul_b1 = mul_stack_data[itmp]; + +itmp = M_get_stack_ptr(mii); +fmul_b0 = mul_stack_data[itmp]; + +itmp = M_get_stack_ptr(2 * sz); +fmul_b9 = mul_stack_data[itmp]; + +itmp = M_get_stack_ptr(2 * sz); +fmul_t0 = mul_stack_data[itmp]; + +M_fmul_split(fmul_a1, fmul_a0, aa, mii); +M_fmul_split(fmul_b1, fmul_b0, bb, mii); + +stmp = M_fmul_subtract(fmul_a9, fmul_a1, fmul_a0, mii); +stmp *= M_fmul_subtract(fmul_b9, fmul_b0, fmul_b1, mii); + +M_push_mul_int(stmp); +M_push_mul_int(mii); + +M_fmul_div_conq(fmul_t0, fmul_a0, fmul_b0, mii); + +mii = M_pop_mul_int(); +stmp = M_pop_mul_int(); +itmp = M_pop_mul_int(); + +M_push_mul_int(itmp); +M_push_mul_int(stmp); +M_push_mul_int(mii); + +/* to restore all stack variables ... +fmul_a1 = mul_stack_data[itmp]; +fmul_a0 = mul_stack_data[itmp+1]; +fmul_a9 = mul_stack_data[itmp+2]; +fmul_b1 = mul_stack_data[itmp+3]; +fmul_b0 = mul_stack_data[itmp+4]; +fmul_b9 = mul_stack_data[itmp+5]; +fmul_t0 = mul_stack_data[itmp+6]; +*/ + +fmul_a1 = mul_stack_data[itmp]; +fmul_b1 = mul_stack_data[itmp+3]; +fmul_t0 = mul_stack_data[itmp+6]; + +memcpy((rr + sz), fmul_t0, sz); /* first 'add', result is now zero */ + /* so we just copy in the bytes */ +M_fmul_add(rr, fmul_t0, mii, sz); + +M_fmul_div_conq(fmul_t0, fmul_a1, fmul_b1, mii); + +mii = M_pop_mul_int(); +stmp = M_pop_mul_int(); +itmp = M_pop_mul_int(); + +M_push_mul_int(itmp); +M_push_mul_int(stmp); +M_push_mul_int(mii); + +fmul_a9 = mul_stack_data[itmp+2]; +fmul_b9 = mul_stack_data[itmp+5]; +fmul_t0 = mul_stack_data[itmp+6]; + +M_fmul_add(rr, fmul_t0, 0, sz); +M_fmul_add(rr, fmul_t0, mii, sz); + +if (stmp != 0) + M_fmul_div_conq(fmul_t0, fmul_a9, fmul_b9, mii); + +mii = M_pop_mul_int(); +stmp = M_pop_mul_int(); +itmp = M_pop_mul_int(); + +fmul_t0 = mul_stack_data[itmp+6]; + +/* + * if the sign of (A1 - A0)(B0 - B1) is positive, ADD to + * the result. if it is negative, SUBTRACT from the result. + */ + +if (stmp < 0) + { + fmul_a9 = mul_stack_data[itmp+2]; + fmul_b9 = mul_stack_data[itmp+5]; + + memset(fmul_b9, 0, (2 * sz)); + memcpy((fmul_b9 + mii), fmul_t0, sz); + M_fmul_subtract(fmul_a9, rr, fmul_b9, (2 * sz)); + memcpy(rr, fmul_a9, (2 * sz)); + } + +if (stmp > 0) + M_fmul_add(rr, fmul_t0, mii, sz); + +M_mul_stack_ptr -= 7; +} +/****************************************************************************/ +/* + * special addition function for use with the fast multiply operation + */ +void M_fmul_add(UCHAR *r, UCHAR *a, int offset, int sz) +{ +int i, j; +UCHAR carry; + +carry = 0; +j = offset + sz; +i = sz; + +while (TRUE) + { + r[--j] += carry + a[--i]; + + if (r[j] >= 100) + { + r[j] -= 100; + carry = 1; + } + else + carry = 0; + + if (i == 0) + break; + } + +if (carry) + { + while (TRUE) + { + r[--j] += 1; + + if (r[j] < 100) + break; + + r[j] -= 100; + } + } +} +/****************************************************************************/ +/* + * special subtraction function for use with the fast multiply operation + */ +int M_fmul_subtract(UCHAR *r, UCHAR *a, UCHAR *b, int sz) +{ +int k, jtmp, sflag, nb, borrow; + +nb = sz; +sflag = 0; /* sign flag: assume the numbers are equal */ + +/* + * find if a > b (so we perform a-b) + * or a < b (so we perform b-a) + */ + +for (k=0; k < nb; k++) + { + if (a[k] < b[k]) + { + sflag = -1; + break; + } + + if (a[k] > b[k]) + { + sflag = 1; + break; + } + } + +if (sflag == 0) + { + memset(r, 0, nb); /* zero out the result */ + } +else + { + k = nb; + borrow = 0; + + while (TRUE) + { + k--; + + if (sflag == 1) + jtmp = (int)a[k] - (int)b[k] - borrow; + else + jtmp = (int)b[k] - (int)a[k] - borrow; + + if (jtmp >= 0) + { + r[k] = (UCHAR)jtmp; + borrow = 0; + } + else + { + r[k] = (UCHAR)(100 + jtmp); + borrow = 1; + } + + if (k == 0) + break; + } + } + +return(sflag); +} +/****************************************************************************/ +int M_next_power_of_2(int n) +{ +int ct, k; + +if (n <= 2) + return(n); + +k = 2; +ct = 0; + +while (TRUE) + { + if (k >= n) + break; + + k = k << 1; + + if (++ct == bit_limit) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, + "\'M_next_power_of_2\', ERROR :sizeof(int) too small ??"); + } + } + +return(k); +} +/****************************************************************************/ +int M_get_stack_ptr(int sz) +{ +int i, k; +UCHAR *cp; + +k = ++M_mul_stack_ptr; + +/* if size is 0, just need to malloc and return */ +if (mul_stack_data_size[k] == 0) + { + if ((i = sz) < 16) + i = 16; + + if ((cp = (UCHAR *)MAPM_MALLOC(i + 4)) == NULL) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, "\'M_get_stack_ptr\', Out of memory"); + } + + mul_stack_data[k] = cp; + mul_stack_data_size[k] = i; + } +else /* it has been malloc'ed, see if it's big enough */ + { + if (sz > mul_stack_data_size[k]) + { + cp = mul_stack_data[k]; + + if ((cp = (UCHAR *)MAPM_REALLOC(cp, (sz + 4))) == NULL) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, "\'M_get_stack_ptr\', Out of memory"); + } + + mul_stack_data[k] = cp; + mul_stack_data_size[k] = sz; + } + } + +return(k); +} +/****************************************************************************/ + +#ifdef NO_FFT_MULTIPLY + +/* + * multiply a 4 byte number by a 4 byte number + * yielding an 8 byte result. each byte contains + * a base 100 'digit', i.e.: range from 0-99. + * + * MSB LSB + * + * a,b [0] [1] [2] [3] + * result [0] ..... [7] + */ + +void M_4_byte_multiply(UCHAR *r, UCHAR *a, UCHAR *b) +{ +int b0, jj; +UCHAR *cp1, *cp2, numdiv, numrem; + +memset(r, 0, 8); /* zero out 8 byte result */ +jj = 3; + +/* loop for one number [b], un-roll the inner 'loop' [a] */ + +while (1) + { + b0 = (int)b[jj]; + cp1 = r + (3 + jj); + cp2 = cp1 + 1; + + M_get_div_rem((b0 * a[3]), &numdiv, &numrem); + + *cp2 += numrem; + *cp1 += numdiv; + + if (*cp2 >= 100) + { + *cp2 -= 100; + *cp1 += 1; + } + + cp1--; + cp2--; + + if (*cp2 >= 100) + { + *cp2 -= 100; + *cp1 += 1; + } + + M_get_div_rem((b0 * a[2]), &numdiv, &numrem); + + *cp2 += numrem; + *cp1 += numdiv; + + if (*cp2 >= 100) + { + *cp2 -= 100; + *cp1 += 1; + } + + cp1--; + cp2--; + + if (*cp2 >= 100) + { + *cp2 -= 100; + *cp1 += 1; + } + + M_get_div_rem((b0 * a[1]), &numdiv, &numrem); + + *cp2 += numrem; + *cp1 += numdiv; + + if (*cp2 >= 100) + { + *cp2 -= 100; + *cp1 += 1; + } + + cp1--; + cp2--; + + if (*cp2 >= 100) + { + *cp2 -= 100; + *cp1 += 1; + } + + M_get_div_rem((b0 * a[0]), &numdiv, &numrem); + + *cp2 += numrem; + *cp1 += numdiv; + + if (*cp2 >= 100) + { + *cp2 -= 100; + *cp1 += 1; + } + + if (jj-- == 0) + break; + } +} + +#endif + +/****************************************************************************/ diff --git a/src/mapm/mapmgues.c b/src/mapm/mapmgues.c new file mode 100644 index 00000000..0ba39c55 --- /dev/null +++ b/src/mapm/mapmgues.c @@ -0,0 +1,131 @@ + +/* + * M_APM - mapmgues.c + * + * Copyright (C) 1999 - 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" +#include + +/****************************************************************************/ +void M_get_sqrt_guess(M_APM r, M_APM a) +{ +char buf[48]; +double dd; + +m_apm_to_string(buf, 15, a); +dd = atof(buf); /* sqrt algorithm actually finds 1/sqrt */ +m_apm_set_double(r, (1.0 / sqrt(dd))); +} +/****************************************************************************/ +void M_get_cbrt_guess(M_APM r, M_APM a) +{ +char buf[48]; +double dd; + +m_apm_to_string(buf, 15, a); +dd = atof(buf); +dd = log(dd) / 3.0; +m_apm_set_double(r, exp(dd)); +} +/****************************************************************************/ +/* + * for log, asin, and acos we induce an error of 10 ^ -5. + * this enables the iterative routine to be more efficient + * by knowing exactly how accurate the initial guess is. + * + * but the real reason ... this also prevents some corner + * conditions where the iterative functions may terminate too soon. + */ +void M_get_log_guess(M_APM r, M_APM a) +{ +char buf[48]; +double dd; + +m_apm_to_string(buf, 15, a); +dd = atof(buf); +m_apm_set_double(r, (1.00001 * log(dd))); /* induce error of 10 ^ -5 */ +} +/****************************************************************************/ +/* + * the implementation of the asin & acos functions + * guarantee that 'a' is always < 0.85, so it is + * safe to multiply by a number > 1 + */ +void M_get_asin_guess(M_APM r, M_APM a) +{ +char buf[48]; +double dd; + +m_apm_to_string(buf, 15, a); +dd = atof(buf); +m_apm_set_double(r, (1.00001 * asin(dd))); /* induce error of 10 ^ -5 */ +} +/****************************************************************************/ +void M_get_acos_guess(M_APM r, M_APM a) +{ +char buf[48]; +double dd; + +m_apm_to_string(buf, 15, a); +dd = atof(buf); +m_apm_set_double(r, (1.00001 * acos(dd))); /* induce error of 10 ^ -5 */ +} +/****************************************************************************/ +/* + convert a C 'double' into an M_APM value. +*/ +void m_apm_set_double(M_APM atmp, double dd) +{ +char *cp, *p, *ps, buf[64]; + +if (dd == 0.0) /* special case for 0 exactly */ + m_apm_set_string(atmp, "0"); +else + { + sprintf(buf,"%.14E",dd); + + cp = strstr(buf, "E"); + if (atoi(cp + sizeof(char)) == 0) + *cp = '\0'; + + p = cp; + + while (TRUE) + { + p--; + if (*p == '0' || *p == '.') + *p = ' '; + else + break; + } + + ps = buf; + p = buf; + + while (TRUE) + { + if ((*p = *ps) == '\0') + break; + + if (*ps++ != ' ') + p++; + } + + m_apm_set_string(atmp, buf); + } +} +/****************************************************************************/ diff --git a/src/mapm/mapmhasn.c b/src/mapm/mapmhasn.c new file mode 100644 index 00000000..b91f3f75 --- /dev/null +++ b/src/mapm/mapmhasn.c @@ -0,0 +1,118 @@ + +/* + * M_APM - mapmhasn.c + * + * Copyright (C) 2000 - 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +/****************************************************************************/ +/* + * arcsinh(x) == log [ x + sqrt(x^2 + 1) ] + */ +void m_apm_arcsinh(M_APM rr, int places, M_APM aa) +{ +M_APM tmp1, tmp2; +int local_precision; + +tmp1 = M_get_stack_var(); +tmp2 = M_get_stack_var(); + +local_precision = places + 4; + +m_apm_multiply(tmp1, aa, aa); +m_apm_add(tmp2, tmp1, MM_One); +m_apm_sqrt(tmp1, local_precision, tmp2); +m_apm_add(tmp2, aa, tmp1); +m_apm_log(rr, places, tmp2); + +M_restore_stack(2); +} +/****************************************************************************/ +/* + * arccosh(x) == log [ x + sqrt(x^2 - 1) ] + * + * x >= 1.0 + */ +void m_apm_arccosh(M_APM rr, int places, M_APM aa) +{ +M_APM tmp1, tmp2; +int ii, local_precision; + +ii = m_apm_compare(aa, MM_One); + +if (ii == -1) /* x < 1 */ + { + M_apm_log_error_msg(M_APM_RETURN, + "Warning! ... \'m_apm_arccosh\', Argument < 1"); + M_set_to_zero(rr); + return; + } + +tmp1 = M_get_stack_var(); +tmp2 = M_get_stack_var(); + +local_precision = places + 4; + +m_apm_multiply(tmp1, aa, aa); +m_apm_subtract(tmp2, tmp1, MM_One); +m_apm_sqrt(tmp1, local_precision, tmp2); +m_apm_add(tmp2, aa, tmp1); +m_apm_log(rr, places, tmp2); + +M_restore_stack(2); +} +/****************************************************************************/ +/* + * arctanh(x) == 0.5 * log [ (1 + x) / (1 - x) ] + * + * |x| < 1.0 + */ +void m_apm_arctanh(M_APM rr, int places, M_APM aa) +{ +M_APM tmp1, tmp2, tmp3; +int ii, local_precision; + +tmp1 = M_get_stack_var(); + +m_apm_absolute_value(tmp1, aa); + +ii = m_apm_compare(tmp1, MM_One); + +if (ii >= 0) /* |x| >= 1.0 */ + { + M_apm_log_error_msg(M_APM_RETURN, + "Warning! ... \'m_apm_arctanh\', |Argument| >= 1"); + M_set_to_zero(rr); + M_restore_stack(1); + return; + } + +tmp2 = M_get_stack_var(); +tmp3 = M_get_stack_var(); + +local_precision = places + 6; + +m_apm_add(tmp1, MM_One, aa); +m_apm_subtract(tmp2, MM_One, aa); +m_apm_divide(tmp3, local_precision, tmp1, tmp2); +m_apm_log(tmp2, local_precision, tmp3); +m_apm_multiply(tmp1, tmp2, MM_0_5); +m_apm_round(rr, places, tmp1); + +M_restore_stack(3); +} +/****************************************************************************/ diff --git a/src/mapm/mapmhsin.c b/src/mapm/mapmhsin.c new file mode 100644 index 00000000..9cf91042 --- /dev/null +++ b/src/mapm/mapmhsin.c @@ -0,0 +1,93 @@ + +/* + * M_APM - mapmhsin.c + * + * Copyright (C) 2000 - 2002 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +/****************************************************************************/ +/* + * sinh(x) == 0.5 * [ exp(x) - exp(-x) ] + */ +void m_apm_sinh(M_APM rr, int places, M_APM aa) +{ +M_APM tmp1, tmp2, tmp3; +int local_precision; + +tmp1 = M_get_stack_var(); +tmp2 = M_get_stack_var(); +tmp3 = M_get_stack_var(); + +local_precision = places + 4; + +m_apm_exp(tmp1, local_precision, aa); +m_apm_reciprocal(tmp2, local_precision, tmp1); +m_apm_subtract(tmp3, tmp1, tmp2); +m_apm_multiply(tmp1, tmp3, MM_0_5); +m_apm_round(rr, places, tmp1); + +M_restore_stack(3); +} +/****************************************************************************/ +/* + * cosh(x) == 0.5 * [ exp(x) + exp(-x) ] + */ +void m_apm_cosh(M_APM rr, int places, M_APM aa) +{ +M_APM tmp1, tmp2, tmp3; +int local_precision; + +tmp1 = M_get_stack_var(); +tmp2 = M_get_stack_var(); +tmp3 = M_get_stack_var(); + +local_precision = places + 4; + +m_apm_exp(tmp1, local_precision, aa); +m_apm_reciprocal(tmp2, local_precision, tmp1); +m_apm_add(tmp3, tmp1, tmp2); +m_apm_multiply(tmp1, tmp3, MM_0_5); +m_apm_round(rr, places, tmp1); + +M_restore_stack(3); +} +/****************************************************************************/ +/* + * tanh(x) == [ exp(x) - exp(-x) ] / [ exp(x) + exp(-x) ] + */ +void m_apm_tanh(M_APM rr, int places, M_APM aa) +{ +M_APM tmp1, tmp2, tmp3, tmp4; +int local_precision; + +tmp1 = M_get_stack_var(); +tmp2 = M_get_stack_var(); +tmp3 = M_get_stack_var(); +tmp4 = M_get_stack_var(); + +local_precision = places + 4; + +m_apm_exp(tmp1, local_precision, aa); +m_apm_reciprocal(tmp2, local_precision, tmp1); +m_apm_subtract(tmp3, tmp1, tmp2); +m_apm_add(tmp4, tmp1, tmp2); +m_apm_divide(tmp1, local_precision, tmp3, tmp4); +m_apm_round(rr, places, tmp1); + +M_restore_stack(4); +} +/****************************************************************************/ diff --git a/src/mapm/mapmipwr.c b/src/mapm/mapmipwr.c new file mode 100644 index 00000000..49a19f0f --- /dev/null +++ b/src/mapm/mapmipwr.c @@ -0,0 +1,91 @@ + +/* + * M_APM - mapmipwr.c + * + * Copyright (C) 1999 - 2002 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +/****************************************************************************/ +void m_apm_integer_pow(M_APM rr, int places, M_APM aa, int mexp) +{ +M_APM tmp0, tmpy, tmpz; +int nexp, ii, signflag, local_precision; + +if (mexp == 0) + { + m_apm_copy(rr, MM_One); + return; + } +else + { + if (mexp > 0) + { + signflag = 0; + nexp = mexp; + } + else + { + signflag = 1; + nexp = -mexp; + } + } + +if (aa->m_apm_sign == 0) + { + M_set_to_zero(rr); + return; + } + +tmp0 = M_get_stack_var(); +tmpy = M_get_stack_var(); +tmpz = M_get_stack_var(); + +local_precision = places + 8; + +m_apm_copy(tmpy, MM_One); +m_apm_copy(tmpz, aa); + +while (TRUE) + { + ii = nexp & 1; + nexp = nexp >> 1; + + if (ii != 0) /* exponent -was- odd */ + { + m_apm_multiply(tmp0, tmpy, tmpz); + m_apm_round(tmpy, local_precision, tmp0); + + if (nexp == 0) + break; + } + + m_apm_multiply(tmp0, tmpz, tmpz); + m_apm_round(tmpz, local_precision, tmp0); + } + +if (signflag) + { + m_apm_reciprocal(rr, places, tmpy); + } +else + { + m_apm_round(rr, places, tmpy); + } + +M_restore_stack(3); +} +/****************************************************************************/ diff --git a/src/mapm/mapmistr.c b/src/mapm/mapmistr.c new file mode 100644 index 00000000..12cb102f --- /dev/null +++ b/src/mapm/mapmistr.c @@ -0,0 +1,104 @@ + +/* + * M_APM - mapmistr.c + * + * Copyright (C) 1999 - 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +/****************************************************************************/ +void m_apm_to_integer_string(char *s, M_APM mtmp) +{ +void *vp; +UCHAR *ucp, numdiv, numrem; +char *cp, *p, sbuf[128]; +int ct, dl, numb, ii; + +vp = NULL; +ct = mtmp->m_apm_exponent; +dl = mtmp->m_apm_datalength; + +/* + * if |input| < 1, result is "0" + */ + +if (ct <= 0 || mtmp->m_apm_sign == 0) + { + s[0] = '0'; + s[1] = '\0'; + return; + } + +if (ct > 112) + { + if ((vp = (void *)MAPM_MALLOC((ct + 32) * sizeof(char))) == NULL) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, + "\'m_apm_to_integer_string\', Out of memory"); + } + + cp = (char *)vp; + } +else + { + cp = sbuf; + } + +p = cp; +ii = 0; + +/* handle a negative number */ + +if (mtmp->m_apm_sign == -1) + { + ii = 1; + *p++ = '-'; + } + +/* get num-bytes of data (#digits / 2) to use in the string */ + +if (ct > dl) + numb = (dl + 1) >> 1; +else + numb = (ct + 1) >> 1; + +ucp = mtmp->m_apm_data; + +while (TRUE) + { + M_get_div_rem_10((int)(*ucp++), &numdiv, &numrem); + + *p++ = numdiv + '0'; + *p++ = numrem + '0'; + + if (--numb == 0) + break; + } + +/* pad with trailing zeros if the exponent > datalength */ + +if (ct > dl) + memset(p, '0', (ct + 1 - dl)); + +cp[ct + ii] = '\0'; +strcpy(s, cp); + +if (vp != NULL) + MAPM_FREE(vp); +} +/****************************************************************************/ diff --git a/src/mapm/mapmpwr2.c b/src/mapm/mapmpwr2.c new file mode 100644 index 00000000..26cc14e7 --- /dev/null +++ b/src/mapm/mapmpwr2.c @@ -0,0 +1,96 @@ + +/* + * M_APM - mapmpwr2.c + * + * Copyright (C) 2002 - 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +/****************************************************************************/ +void m_apm_integer_pow_nr(M_APM rr, M_APM aa, int mexp) +{ +M_APM tmp0, tmpy, tmpz; +int nexp, ii; + +if (mexp == 0) + { + m_apm_copy(rr, MM_One); + return; + } +else + { + if (mexp < 0) + { + M_apm_log_error_msg(M_APM_RETURN, + "Warning! ... \'m_apm_integer_pow_nr\', Negative exponent"); + + M_set_to_zero(rr); + return; + } + } + +if (mexp == 1) + { + m_apm_copy(rr, aa); + return; + } + +if (mexp == 2) + { + m_apm_multiply(rr, aa, aa); + return; + } + +nexp = mexp; + +if (aa->m_apm_sign == 0) + { + M_set_to_zero(rr); + return; + } + +tmp0 = M_get_stack_var(); +tmpy = M_get_stack_var(); +tmpz = M_get_stack_var(); + +m_apm_copy(tmpy, MM_One); +m_apm_copy(tmpz, aa); + +while (TRUE) + { + ii = nexp & 1; + nexp = nexp >> 1; + + if (ii != 0) /* exponent -was- odd */ + { + m_apm_multiply(tmp0, tmpy, tmpz); + + if (nexp == 0) + break; + + m_apm_copy(tmpy, tmp0); + } + + m_apm_multiply(tmp0, tmpz, tmpz); + m_apm_copy(tmpz, tmp0); + } + +m_apm_copy(rr, tmp0); + +M_restore_stack(3); +} +/****************************************************************************/ + diff --git a/src/mapm/mapmrsin.c b/src/mapm/mapmrsin.c new file mode 100644 index 00000000..778aa77e --- /dev/null +++ b/src/mapm/mapmrsin.c @@ -0,0 +1,161 @@ + +/* + * M_APM - mapmrsin.c + * + * Copyright (C) 1999 - 2002 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +/****************************************************************************/ +/* + x^3 x^5 x^7 x^9 + sin(x) == x - --- + --- - --- + --- ... + 3! 5! 7! 9! +*/ +void M_raw_sin(M_APM rr, int places, M_APM xx) +{ +M_APM sum, term, tmp7, tmp8, tmp9; +int tolerance, flag, local_precision, prev_exp; +long m1, m2; + +sum = M_get_stack_var(); +term = M_get_stack_var(); +tmp7 = M_get_stack_var(); +tmp8 = M_get_stack_var(); +tmp9 = M_get_stack_var(); + +m_apm_copy(sum, xx); +m_apm_copy(term, xx); +m_apm_multiply(tmp8, xx, xx); +m_apm_round(tmp9, (places + 6), tmp8); + +local_precision = places + 8; +tolerance = -(places + 4); +prev_exp = 0; + +m1 = 2L; +flag = 0; + +while (TRUE) + { + m2 = m1 * (m1 + 1); + m_apm_set_long(tmp7, m2); + + m_apm_multiply(tmp8, term, tmp9); + m_apm_divide(term, local_precision, tmp8, tmp7); + + if (flag == 0) + { + m_apm_subtract(tmp7, sum, term); + m_apm_copy(sum, tmp7); + } + else + { + m_apm_add(tmp7, sum, term); + m_apm_copy(sum, tmp7); + } + + if ((term->m_apm_exponent < tolerance) || (term->m_apm_sign == 0)) + break; + + if (m1 != 2L) + { + local_precision = local_precision + term->m_apm_exponent - prev_exp; + + if (local_precision < 20) + local_precision = 20; + } + + prev_exp = term->m_apm_exponent; + + m1 += 2; + flag = 1 - flag; + } + +m_apm_round(rr, places, sum); +M_restore_stack(5); +} +/****************************************************************************/ +/* + x^2 x^4 x^6 x^8 + cos(x) == 1 - --- + --- - --- + --- ... + 2! 4! 6! 8! +*/ +void M_raw_cos(M_APM rr, int places, M_APM xx) +{ +M_APM sum, term, tmp7, tmp8, tmp9; +int tolerance, flag, local_precision, prev_exp; +long m1, m2; + +sum = M_get_stack_var(); +term = M_get_stack_var(); +tmp7 = M_get_stack_var(); +tmp8 = M_get_stack_var(); +tmp9 = M_get_stack_var(); + +m_apm_copy(sum, MM_One); +m_apm_copy(term, MM_One); + +m_apm_multiply(tmp8, xx, xx); +m_apm_round(tmp9, (places + 6), tmp8); + +local_precision = places + 8; +tolerance = -(places + 4); +prev_exp = 0; + +m1 = 1L; +flag = 0; + +while (TRUE) + { + m2 = m1 * (m1 + 1); + m_apm_set_long(tmp7, m2); + + m_apm_multiply(tmp8, term, tmp9); + m_apm_divide(term, local_precision, tmp8, tmp7); + + if (flag == 0) + { + m_apm_subtract(tmp7, sum, term); + m_apm_copy(sum, tmp7); + } + else + { + m_apm_add(tmp7, sum, term); + m_apm_copy(sum, tmp7); + } + + if ((term->m_apm_exponent < tolerance) || (term->m_apm_sign == 0)) + break; + + if (m1 != 1L) + { + local_precision = local_precision + term->m_apm_exponent - prev_exp; + + if (local_precision < 20) + local_precision = 20; + } + + prev_exp = term->m_apm_exponent; + + m1 += 2; + flag = 1 - flag; + } + +m_apm_round(rr, places, sum); +M_restore_stack(5); +} +/****************************************************************************/ diff --git a/src/mapm/mapmsqrt.c b/src/mapm/mapmsqrt.c new file mode 100644 index 00000000..1438692f --- /dev/null +++ b/src/mapm/mapmsqrt.c @@ -0,0 +1,134 @@ + +/* + * M_APM - mapmsqrt.c + * + * Copyright (C) 1999 - 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +/****************************************************************************/ +void m_apm_sqrt(M_APM rr, int places, M_APM aa) +{ +M_APM last_x, guess, tmpN, tmp7, tmp8, tmp9; +int ii, bflag, nexp, tolerance, dplaces; + +if (aa->m_apm_sign <= 0) + { + if (aa->m_apm_sign == -1) + { + M_apm_log_error_msg(M_APM_RETURN, + "Warning! ... \'m_apm_sqrt\', Negative argument"); + } + + M_set_to_zero(rr); + return; + } + +last_x = M_get_stack_var(); +guess = M_get_stack_var(); +tmpN = M_get_stack_var(); +tmp7 = M_get_stack_var(); +tmp8 = M_get_stack_var(); +tmp9 = M_get_stack_var(); + +m_apm_copy(tmpN, aa); +nexp = 0; + +/* + normalize the input number (make the exponent near 0) so + the 'guess' function will not over/under flow on large + magnitude exponents. +*/ + +if (aa->m_apm_exponent > 2) + { + nexp = aa->m_apm_exponent / 2; + tmpN->m_apm_exponent -= 2 * nexp; + } + +if (aa->m_apm_exponent < -2) + { + nexp = aa->m_apm_exponent / 2 - 1; + tmpN->m_apm_exponent -= 2 * nexp; + } + +M_get_sqrt_guess(guess, tmpN); /* actually gets 1/sqrt guess */ + +tolerance = places + 4; +dplaces = places + 16; +bflag = FALSE; + +m_apm_negate(last_x, MM_Ten); + +/* Use the following iteration to calculate 1 / sqrt(N) : + + X = 0.5 * X * [ 3 - N * X^2 ] + n+1 +*/ + +ii = 0; + +while (TRUE) + { + m_apm_multiply(tmp9, tmpN, guess); + m_apm_multiply(tmp8, tmp9, guess); + m_apm_round(tmp7, dplaces, tmp8); + m_apm_subtract(tmp9, MM_Three, tmp7); + m_apm_multiply(tmp8, tmp9, guess); + m_apm_multiply(tmp9, tmp8, MM_0_5); + + if (bflag) + break; + + m_apm_round(guess, dplaces, tmp9); + + /* force at least 2 iterations so 'last_x' has valid data */ + + if (ii != 0) + { + m_apm_subtract(tmp7, guess, last_x); + + if (tmp7->m_apm_sign == 0) + break; + + /* + * if we are within a factor of 4 on the error term, + * we will be accurate enough after the *next* iteration + * is complete. (note that the sign of the exponent on + * the error term will be a negative number). + */ + + if ((-4 * tmp7->m_apm_exponent) > tolerance) + bflag = TRUE; + } + + m_apm_copy(last_x, guess); + ii++; + } + +/* + * multiply by the starting number to get the final + * sqrt and then adjust the exponent since we found + * the sqrt of the normalized number. + */ + +m_apm_multiply(tmp8, tmp9, tmpN); +m_apm_round(rr, places, tmp8); +rr->m_apm_exponent += nexp; + +M_restore_stack(6); +} +/****************************************************************************/ diff --git a/src/mapm/mapmstck.c b/src/mapm/mapmstck.c new file mode 100644 index 00000000..6b845fc9 --- /dev/null +++ b/src/mapm/mapmstck.c @@ -0,0 +1,99 @@ + +/* + * M_APM - mapmstck.c + * + * Copyright (C) 1999 - 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +static int M_stack_ptr = -1; +static int M_last_init = -1; +static int M_stack_size = 0; + +static char *M_stack_err_msg = "\'M_get_stack_var\', Out of memory"; + +static M_APM *M_stack_array; + +/****************************************************************************/ +void M_free_all_stck() +{ +int k; + +if (M_last_init >= 0) + { + for (k=0; k <= M_last_init; k++) + m_apm_free(M_stack_array[k]); + + M_stack_ptr = -1; + M_last_init = -1; + M_stack_size = 0; + + MAPM_FREE(M_stack_array); + } +} +/****************************************************************************/ +M_APM M_get_stack_var() +{ +void *vp; + +if (++M_stack_ptr > M_last_init) + { + if (M_stack_size == 0) + { + M_stack_size = 18; + if ((vp = MAPM_MALLOC(M_stack_size * sizeof(M_APM))) == NULL) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, M_stack_err_msg); + } + + M_stack_array = (M_APM *)vp; + } + + if ((M_last_init + 4) >= M_stack_size) + { + M_stack_size += 12; + if ((vp = MAPM_REALLOC(M_stack_array, + (M_stack_size * sizeof(M_APM)))) == NULL) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, M_stack_err_msg); + } + + M_stack_array = (M_APM *)vp; + } + + M_stack_array[M_stack_ptr] = m_apm_init(); + M_stack_array[M_stack_ptr + 1] = m_apm_init(); + M_stack_array[M_stack_ptr + 2] = m_apm_init(); + M_stack_array[M_stack_ptr + 3] = m_apm_init(); + + M_last_init = M_stack_ptr + 3; + + /* printf("M_last_init = %d \n",M_last_init); */ + } + +return(M_stack_array[M_stack_ptr]); +} +/****************************************************************************/ +void M_restore_stack(int count) +{ +M_stack_ptr -= count; +} +/****************************************************************************/ + diff --git a/src/mapm/mapmutil.c b/src/mapm/mapmutil.c new file mode 100644 index 00000000..3e260874 --- /dev/null +++ b/src/mapm/mapmutil.c @@ -0,0 +1,466 @@ + +/* + * M_APM - mapmutil.c + * + * Copyright (C) 1999 - 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +static UCHAR *M_mul_div = NULL; +static UCHAR *M_mul_rem = NULL; + +static UCHAR M_mul_div_10[100]; +static UCHAR M_mul_rem_10[100]; + +static int M_util_firsttime = TRUE; +static int M_firsttime3 = TRUE; + +static M_APM M_work_0_5; + +/****************************************************************************/ +M_APM m_apm_init() +{ +M_APM atmp; + +if (M_firsttime3) + { + M_firsttime3 = FALSE; + M_init_util_data(); + M_init_trig_globals(); + } + +if ((atmp = (M_APM)MAPM_MALLOC(sizeof(M_APM_struct))) == NULL) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, "\'m_apm_init\', Out of memory"); + } + +atmp->m_apm_id = M_APM_IDENT; +atmp->m_apm_malloclength = 80; +atmp->m_apm_datalength = 1; +atmp->m_apm_refcount = 1; /* not for us, for MAPM C++ class */ +atmp->m_apm_exponent = 0; +atmp->m_apm_sign = 0; + +if ((atmp->m_apm_data = (UCHAR *)MAPM_MALLOC(84)) == NULL) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, "\'m_apm_init\', Out of memory"); + } + +atmp->m_apm_data[0] = 0; +return(atmp); +} +/****************************************************************************/ +void m_apm_free(M_APM atmp) +{ +if (atmp->m_apm_id == M_APM_IDENT) + { + atmp->m_apm_id = 0x0FFFFFF0L; + MAPM_FREE(atmp->m_apm_data); + MAPM_FREE(atmp); + } +else + { + M_apm_log_error_msg(M_APM_RETURN, + "Invalid M_APM variable passed to \'m_apm_free\'"); + } +} +/****************************************************************************/ +void M_free_all_util() +{ +if (M_util_firsttime == FALSE) + { + m_apm_free(M_work_0_5); + M_util_firsttime = TRUE; + } + +if (M_firsttime3 == FALSE) + { + MAPM_FREE(M_mul_div); + MAPM_FREE(M_mul_rem); + + M_mul_div = NULL; + M_mul_rem = NULL; + M_firsttime3 = TRUE; + } +} +/****************************************************************************/ +/* + * just a dummy wrapper to keep some compilers from complaining + */ +int M_get_sizeof_int() +{ +return(sizeof(int)); +} +/****************************************************************************/ +void M_init_util_data() +{ +int k; +UCHAR ndiv, nrem; + +if (M_mul_div != NULL) + return; + +M_mul_div = (UCHAR *)MAPM_MALLOC(10000 * sizeof(UCHAR)); +M_mul_rem = (UCHAR *)MAPM_MALLOC(10000 * sizeof(UCHAR)); + +if (M_mul_div == NULL || M_mul_rem == NULL) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, + "M_init_util_data() could not allocate memory"); + } + +ndiv = 0; +nrem = 0; + +for (k=0; k < 100; k++) + { + M_mul_div_10[k] = ndiv; + M_mul_rem_10[k] = nrem; + + if (++nrem == 10) + { + nrem = 0; + ndiv++; + } + } + +ndiv = 0; +nrem = 0; + +for (k=0; k < 10000; k++) + { + M_mul_div[k] = ndiv; + M_mul_rem[k] = nrem; + + if (++nrem == 100) + { + nrem = 0; + ndiv++; + } + } +} +/****************************************************************************/ +void M_get_div_rem_addr(UCHAR **ndivp, UCHAR **nremp) +{ +*ndivp = M_mul_div; +*nremp = M_mul_rem; +} +/****************************************************************************/ +void M_get_div_rem(int tbl_lookup, UCHAR *ndiv, UCHAR *nrem) +{ +*ndiv = M_mul_div[tbl_lookup]; +*nrem = M_mul_rem[tbl_lookup]; +} +/****************************************************************************/ +void M_get_div_rem_10(int tbl_lookup, UCHAR *ndiv, UCHAR *nrem) +{ +*ndiv = M_mul_div_10[tbl_lookup]; +*nrem = M_mul_rem_10[tbl_lookup]; +} +/****************************************************************************/ +void m_apm_round(M_APM btmp, int places, M_APM atmp) +{ +int ii; + +if (M_util_firsttime) + { + M_util_firsttime = FALSE; + + M_work_0_5 = m_apm_init(); + m_apm_set_string(M_work_0_5, "5"); + } + +ii = places + 1; + +if (atmp->m_apm_datalength <= ii) + { + m_apm_copy(btmp,atmp); + return; + } + +M_work_0_5->m_apm_exponent = atmp->m_apm_exponent - ii; + +if (atmp->m_apm_sign > 0) + m_apm_add(btmp, atmp, M_work_0_5); +else + m_apm_subtract(btmp, atmp, M_work_0_5); + +btmp->m_apm_datalength = ii; +M_apm_normalize(btmp); +} +/****************************************************************************/ +void M_apm_normalize(M_APM atmp) +{ +int i, index, datalength, exponent; +UCHAR *ucp, numdiv, numrem, numrem2; + +if (atmp->m_apm_sign == 0) + return; + +datalength = atmp->m_apm_datalength; +exponent = atmp->m_apm_exponent; + +/* make sure trailing bytes/chars are 0 */ +/* the following function will adjust the 'datalength' */ +/* we want the original value and will fix it later */ + +M_apm_pad(atmp, (datalength + 3)); + +while (TRUE) /* remove lead-in '0' if any */ + { + M_get_div_rem_10((int)atmp->m_apm_data[0], &numdiv, &numrem); + + if (numdiv >= 1) /* number is normalized, done here */ + break; + + index = (datalength + 1) >> 1; + + if (numrem == 0) /* both nibbles are 0, we can move full bytes */ + { + i = 0; + ucp = atmp->m_apm_data; + + while (TRUE) /* find out how many '00' bytes we can move */ + { + if (*ucp != 0) + break; + + ucp++; + i++; + } + + memmove(atmp->m_apm_data, ucp, (index + 1 - i)); + datalength -= 2 * i; + exponent -= 2 * i; + } + else + { + for (i=0; i < index; i++) + { + M_get_div_rem_10((int)atmp->m_apm_data[i+1], &numdiv, &numrem2); + atmp->m_apm_data[i] = 10 * numrem + numdiv; + numrem = numrem2; + } + + datalength--; + exponent--; + } + } + +while (TRUE) /* remove trailing '0' if any */ + { + index = ((datalength + 1) >> 1) - 1; + + if ((datalength & 1) == 0) /* back-up full bytes at a time if the */ + { /* current length is an even number */ + ucp = atmp->m_apm_data + index; + if (*ucp == 0) + { + while (TRUE) + { + datalength -= 2; + index--; + ucp--; + + if (*ucp != 0) + break; + } + } + } + + M_get_div_rem_10((int)atmp->m_apm_data[index], &numdiv, &numrem); + + if (numrem != 0) /* last digit non-zero, all done */ + break; + + if ((datalength & 1) != 0) /* if odd, then first char must be non-zero */ + { + if (numdiv != 0) + break; + } + + if (datalength == 1) + { + atmp->m_apm_sign = 0; + exponent = 0; + break; + } + + datalength--; + } + +atmp->m_apm_datalength = datalength; +atmp->m_apm_exponent = exponent; +} +/****************************************************************************/ +void M_apm_scale(M_APM ctmp, int count) +{ +int ii, numb, ct; +UCHAR *chp, numdiv, numdiv2, numrem; +void *vp; + +ct = count; + +ii = (ctmp->m_apm_datalength + ct + 1) >> 1; +if (ii > ctmp->m_apm_malloclength) + { + if ((vp = MAPM_REALLOC(ctmp->m_apm_data, (ii + 32))) == NULL) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, "\'M_apm_scale\', Out of memory"); + } + + ctmp->m_apm_malloclength = ii + 28; + ctmp->m_apm_data = (UCHAR *)vp; + } + +if ((ct & 1) != 0) /* move odd number first */ + { + ct--; + chp = ctmp->m_apm_data; + ii = ((ctmp->m_apm_datalength + 1) >> 1) - 1; + + if ((ctmp->m_apm_datalength & 1) == 0) + { + /* + * original datalength is even: + * + * uv wx yz becomes --> 0u vw xy z0 + */ + + numdiv = 0; + + while (TRUE) + { + M_get_div_rem_10((int)chp[ii], &numdiv2, &numrem); + + chp[ii + 1] = 10 * numrem + numdiv; + numdiv = numdiv2; + + if (ii == 0) + break; + + ii--; + } + + chp[0] = numdiv2; + } + else + { + /* + * original datalength is odd: + * + * uv wx y0 becomes --> 0u vw xy + */ + + M_get_div_rem_10((int)chp[ii], &numdiv2, &numrem); + + if (ii == 0) + { + chp[0] = numdiv2; + } + else + { + while (TRUE) + { + M_get_div_rem_10((int)chp[ii - 1], &numdiv, &numrem); + + chp[ii] = 10 * numrem + numdiv2; + numdiv2 = numdiv; + + if (--ii == 0) + break; + } + + chp[0] = numdiv; + } + } + + ctmp->m_apm_exponent++; + ctmp->m_apm_datalength++; + } + +/* ct is even here */ + +if (ct > 0) + { + numb = (ctmp->m_apm_datalength + 1) >> 1; + ii = ct >> 1; + + memmove((ctmp->m_apm_data + ii), ctmp->m_apm_data, numb); + memset(ctmp->m_apm_data, 0, ii); + + ctmp->m_apm_datalength += ct; + ctmp->m_apm_exponent += ct; + } +} +/****************************************************************************/ +void M_apm_pad(M_APM ctmp, int new_length) +{ +int num1, numb, ct; +UCHAR numdiv, numrem; +void *vp; + +ct = new_length; +if (ctmp->m_apm_datalength >= ct) + return; + +numb = (ct + 1) >> 1; +if (numb > ctmp->m_apm_malloclength) + { + if ((vp = MAPM_REALLOC(ctmp->m_apm_data, (numb + 32))) == NULL) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, "\'M_apm_pad\', Out of memory"); + } + + ctmp->m_apm_malloclength = numb + 28; + ctmp->m_apm_data = (UCHAR *)vp; + } + +num1 = (ctmp->m_apm_datalength + 1) >> 1; + +if ((ctmp->m_apm_datalength & 1) != 0) + { + M_get_div_rem_10((int)ctmp->m_apm_data[num1 - 1], &numdiv, &numrem); + ctmp->m_apm_data[num1 - 1] = 10 * numdiv; + } + +memset((ctmp->m_apm_data + num1), 0, (numb - num1)); +ctmp->m_apm_datalength = ct; +} +/****************************************************************************/ + +/* + debug_dsp(cc) + M_APM cc; + { +static char buffer[8192]; + +m_apm_to_string(buffer, -1, cc); +printf("(dsp func) = [%s]\n",buffer); + + } +*/ + diff --git a/src/mapm/mapmutl2.c b/src/mapm/mapmutl2.c new file mode 100644 index 00000000..78c9b235 --- /dev/null +++ b/src/mapm/mapmutl2.c @@ -0,0 +1,330 @@ + +/* + * M_APM - mapmutl2.c + * + * Copyright (C) 2002 - 2003 Michael C. Ring + * + * Permission to use, copy, and distribute this software and its + * documentation for any purpose with or without fee is hereby granted, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. + * + * Permission to modify the software is granted, but not the right to + * distribute the modified code. Modifications are to be distributed + * as patches to released version. + * + * This software is provided "as is" without express or implied warranty. + */ + +#include "m_apm_lc.h" + +/****************************************************************************/ +int m_apm_sign(M_APM atmp) +{ +return(atmp->m_apm_sign); +} +/****************************************************************************/ +int m_apm_exponent(M_APM atmp) +{ +if (atmp->m_apm_sign == 0) + return(0); +else + return(atmp->m_apm_exponent - 1); +} +/****************************************************************************/ +int m_apm_significant_digits(M_APM atmp) +{ +return(atmp->m_apm_datalength); +} +/****************************************************************************/ +int m_apm_is_integer(M_APM atmp) +{ +if (atmp->m_apm_sign == 0) + return(1); + +if (atmp->m_apm_exponent >= atmp->m_apm_datalength) + return(1); +else + return(0); +} +/****************************************************************************/ +int m_apm_is_even(M_APM aa) +{ +int ii, jj; + +if (aa->m_apm_sign == 0) + return(1); + +ii = aa->m_apm_datalength; +jj = aa->m_apm_exponent; + +if (jj < ii) + { + M_apm_log_error_msg(M_APM_RETURN, + "Warning! \'m_apm_is_even\', Non-integer input"); + return(0); + } + +if (jj > ii) + return(1); + +ii = ((ii + 1) >> 1) - 1; +ii = (int)aa->m_apm_data[ii]; + +if ((jj & 1) != 0) /* exponent is odd */ + ii = ii / 10; + +if ((ii & 1) == 0) + return(1); +else + return(0); +} +/****************************************************************************/ +int m_apm_is_odd(M_APM bb) +{ +if (m_apm_is_even(bb)) + return(0); +else + return(1); +} +/****************************************************************************/ +void M_set_to_zero(M_APM z) +{ +z->m_apm_datalength = 1; +z->m_apm_sign = 0; +z->m_apm_exponent = 0; +z->m_apm_data[0] = 0; +} +/****************************************************************************/ +void m_apm_negate(M_APM d, M_APM s) +{ +m_apm_copy(d,s); +if (d->m_apm_sign != 0) + d->m_apm_sign = -(d->m_apm_sign); +} +/****************************************************************************/ +void m_apm_absolute_value(M_APM d, M_APM s) +{ +m_apm_copy(d,s); +if (d->m_apm_sign != 0) + d->m_apm_sign = 1; +} +/****************************************************************************/ +void m_apm_copy(M_APM dest, M_APM src) +{ +int j; +void *vp; + +j = (src->m_apm_datalength + 1) >> 1; +if (j > dest->m_apm_malloclength) + { + if ((vp = MAPM_REALLOC(dest->m_apm_data, (j + 32))) == NULL) + { + /* fatal, this does not return */ + + M_apm_log_error_msg(M_APM_EXIT, "\'m_apm_copy\', Out of memory"); + } + + dest->m_apm_malloclength = j + 28; + dest->m_apm_data = (UCHAR *)vp; + } + +dest->m_apm_datalength = src->m_apm_datalength; +dest->m_apm_exponent = src->m_apm_exponent; +dest->m_apm_sign = src->m_apm_sign; + +memcpy(dest->m_apm_data, src->m_apm_data, j); +} +/****************************************************************************/ +int m_apm_compare(M_APM ltmp, M_APM rtmp) +{ +int llen, rlen, lsign, rsign, i, j, lexp, rexp; + +llen = ltmp->m_apm_datalength; +rlen = rtmp->m_apm_datalength; + +lsign = ltmp->m_apm_sign; +rsign = rtmp->m_apm_sign; + +lexp = ltmp->m_apm_exponent; +rexp = rtmp->m_apm_exponent; + +if (rsign == 0) + return(lsign); + +if (lsign == 0) + return(-rsign); + +if (lsign == -rsign) + return(lsign); + +/* signs are the same, check the exponents */ + +if (lexp > rexp) + goto E1; + +if (lexp < rexp) + goto E2; + +/* signs and exponents are the same, check the data */ + +if (llen < rlen) + j = (llen + 1) >> 1; +else + j = (rlen + 1) >> 1; + +for (i=0; i < j; i++) + { + if (ltmp->m_apm_data[i] > rtmp->m_apm_data[i]) + goto E1; + + if (ltmp->m_apm_data[i] < rtmp->m_apm_data[i]) + goto E2; + } + +if (llen == rlen) + return(0); +else + { + if (llen > rlen) + goto E1; + else + goto E2; + } + +E1: + +if (lsign == 1) + return(1); +else + return(-1); + +E2: + +if (lsign == 1) + return(-1); +else + return(1); +} +/****************************************************************************/ +void M_apm_log_error_msg(int ecode, char *message) +{ +fprintf(stderr, "%s\n", message); + +if (ecode == M_APM_EXIT) + exit(100); +} +/****************************************************************************/ +/* + * + * convert a signed long int to ASCII in base 10 + * + */ +void M_long_2_ascii(char *output, long input) +{ +long t, m; +int i, j; +char *p, tbuf[64]; + +m = input; +p = output; +i = 0; +t = 2147000000L; /* something < 2^31 */ + +if ((m > t) || (m < -t)) /* handle the bigger numbers with 'sprintf'. */ + { /* let them worry about wrap-around problems */ + sprintf(p, "%ld", m); /* at 'LONG_MIN', etc. */ + } +else + { + if (m < 0) /* handle the sign */ + { + *p++ = '-'; + m = -m; + } + + while (TRUE) /* build the digits in reverse order */ + { + t = m / 10; + j = (int)(m - (10 * t)); + tbuf[i++] = (char)(j + '0'); + m = t; + + if (t == 0) + break; + } + + while (TRUE) /* fill output string in the correct order */ + { + *p++ = tbuf[--i]; + if (i == 0) + break; + } + + *p = '\0'; + } +} +/****************************************************************************/ +/* + * this function will convert a string to lowercase + */ +char *M_lowercase(char *s) +{ +char *p; + +p = s; + +while (TRUE) + { + if (*p >= 'A' && *p <= 'Z') + *p += 'a' - 'A'; + + if (*p++ == '\0') break; + } +return(s); +} +/****************************************************************************/ +/* returns char position of first occurence of s2 in s1 + or -1 if no match found +*/ +int M_strposition(char *s1, char *s2) +{ +register char ch1, ch2; +char *p0, *p1, *p2; +int ct; + +ct = -1; +p0 = s1; + +if (*s2 == '\0') return(-1); + +while (TRUE) + { + ct++; + p1 = p0; + p2 = s2; + ch2 = *p2; + + while (TRUE) /* scan until first char matches */ + { + if ((ch1 = *p1) == '\0') return(-1); + if (ch1 == ch2) break; + p1++; + ct++; + } + + p2++; /* check remainder of 2 strings */ + p1++; + p0 = p1; + + while (TRUE) + { + if ((ch2 = *p2) == '\0') return(ct); + if (*p1 != ch2) break; + p1++; + p2++; + } + } +} +/****************************************************************************/ diff --git a/src/operators/And.cpp b/src/operators/And.cpp new file mode 100644 index 00000000..5d3a8cab --- /dev/null +++ b/src/operators/And.cpp @@ -0,0 +1,107 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: And.cpp,v 1.14 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +/*static*/ const XMLCh And::name[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +And::And(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQOperator(name, args, memMgr) +{ +} + +Result And::createResult(DynamicContext* context, int flags) const +{ + return new AndResult(this); +} + +ASTNode* And::staticResolution(StaticContext *context) +{ + AutoNodeSetOrderingReset orderReset(context); + for(VectorOfASTNodes::iterator i = _args.begin(); i != _args.end(); ++i) { + *i = (*i)->staticResolution(context); + } + return this; +} + +ASTNode* And::staticTyping(StaticContext *context) +{ + _src.clear(); + + VectorOfASTNodes newArgs(XQillaAllocator(context->getMemoryManager())); + + for(VectorOfASTNodes::iterator i = _args.begin(); i != _args.end(); ++i) { + *i = (*i)->staticTyping(context); + const StaticResolutionContext &valueSrc = (*i)->getStaticResolutionContext(); + + if(valueSrc.isUsed()) { + _src.add(valueSrc); + newArgs.push_back(*i); + } + else { + AutoDelete dContext(context->createDynamicContext()); + dContext->setMemoryManager(context->getMemoryManager()); + if(!(*i)->collapseTree(dContext)->getEffectiveBooleanValue(dContext, *i)) { + // It's constantly false, so this expression is false + ASTNode* newBlock = new (getMemoryManager()) + XQSequence(dContext->getItemFactory()->createBoolean(false, dContext), + dContext, getMemoryManager()); + newBlock->setLocationInfo(this); + return newBlock->staticResolution(context); + } + } + } + + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; + + _args = newArgs; + return this; +} + +And::AndResult::AndResult(const And *op) + : SingleResult(op), + _op(op) +{ +} + +Item::Ptr And::AndResult::getSingleResult(DynamicContext *context) const +{ + unsigned int numArgs=_op->getNumArgs(); + for(unsigned int i=0;igetArgument(i)->collapseTree(context)->getEffectiveBooleanValue(context, _op->getArgument(i))) { + return (const Item::Ptr)context->getItemFactory()->createBoolean(false, context); + } + } + + return (const Item::Ptr)context->getItemFactory()->createBoolean(true, context); +} + +std::string And::AndResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/operators/ArithmeticOperator.cpp b/src/operators/ArithmeticOperator.cpp new file mode 100644 index 00000000..0df15470 --- /dev/null +++ b/src/operators/ArithmeticOperator.cpp @@ -0,0 +1,182 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ArithmeticOperator.cpp,v 1.21 2006/11/02 15:07:56 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +ArithmeticOperator::ArithmeticOperator(const XMLCh* opName, const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQOperator(opName, args, memMgr) +{ +} + +ASTNode* ArithmeticOperator::staticResolution(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + for(VectorOfASTNodes::iterator i = _args.begin(); i != _args.end(); ++i) { + // An arithmetic expression is evaluated by applying the following rules, in order, + // until an error is raised or a value is computed: + + // 1. Atomization is applied to each operand. + + *i = new (mm) XQAtomize(*i, mm); + (*i)->setLocationInfo(this); + + // 2. If either operand is an empty sequence, the result of the operation is an empty sequence. + // 3. If either operand is now a sequence of length greater than one, then: + // * If XPath 1.0 compatibility mode is true, any items after the first item in the sequence are discarded. + // Otherwise, a type error is raised. + + if(!context->getXPath1CompatibilityMode()) { + SequenceType *seqType = new (mm) SequenceType(new (mm) SequenceType::ItemType(SequenceType::ItemType::TEST_ANYTHING), + SequenceType::QUESTION_MARK); + seqType->setLocationInfo(*i); + + *i = new (mm) XQTreatAs(*i, seqType, mm); + (*i)->setLocationInfo(this); + } + + // 4. If either operand is now of type xdt:untypedAtomic, it is cast to the default type for the given operator. + // If the cast fails, a type error is raised. + + *i = new (mm) XQPromoteUntyped(*i, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_DOUBLE, mm); + (*i)->setLocationInfo(this); + + *i = (*i)->staticResolution(context); + } + + return this; +} + +ASTNode* ArithmeticOperator::staticTyping(StaticContext *context) +{ + _src.clear(); + + bool emptyArgument = false; + for(VectorOfASTNodes::iterator i = _args.begin(); i != _args.end(); ++i) { + *i = (*i)->staticTyping(context); + + if((*i)->getStaticResolutionContext().getStaticType().flags == 0) + emptyArgument = true; + _src.add((*i)->getStaticResolutionContext()); + + if((*i)->isDateOrTimeAndHasNoTimezone(context)) + _src.implicitTimezoneUsed(true); + } + + _src.getStaticType().flags = 0; + calculateStaticType(); + + if(!emptyArgument && _src.getStaticType().flags == 0) { + XMLBuffer errMsg; + errMsg.set(X("The operator ")); + errMsg.append(_opName); + errMsg.append(X(" has been called on invalid operand types [err:XPTY0004]")); + XQThrow(XPath2ErrorException,X("ArithmeticOperator::staticResolution"), errMsg.getRawBuffer()); + } + + if(!_src.isUsed()) { + return constantFold(context); + } + return this; +} + +void ArithmeticOperator::calculateStaticTypeForNumerics(const StaticType &arg0, const StaticType &arg1) +{ + // Deal with numerics and numeric type promotion + if(arg0.containsType(StaticType::DECIMAL_TYPE)) { + if(arg1.containsType(StaticType::DECIMAL_TYPE)) { + _src.getStaticType().flags |= StaticType::DECIMAL_TYPE; + } + if(arg1.containsType(StaticType::FLOAT_TYPE)) { + _src.getStaticType().flags |= StaticType::FLOAT_TYPE; + } + // untypedAtomic will be promoted to xs:double + if(arg1.containsType(StaticType::DOUBLE_TYPE|StaticType::UNTYPED_ATOMIC_TYPE)) { + _src.getStaticType().flags |= StaticType::DOUBLE_TYPE; + } + } + if(arg0.containsType(StaticType::FLOAT_TYPE)) { + if(arg1.containsType(StaticType::DECIMAL_TYPE|StaticType::FLOAT_TYPE)) { + _src.getStaticType().flags |= StaticType::FLOAT_TYPE; + } + // untypedAtomic will be promoted to xs:double + if(arg1.containsType(StaticType::DOUBLE_TYPE|StaticType::UNTYPED_ATOMIC_TYPE)) { + _src.getStaticType().flags |= StaticType::DOUBLE_TYPE; + } + } + // untypedAtomic will be promoted to xs:double + if(arg0.containsType(StaticType::DOUBLE_TYPE|StaticType::UNTYPED_ATOMIC_TYPE)) { + if(arg1.containsType(StaticType::DECIMAL_TYPE|StaticType::FLOAT_TYPE|StaticType::DOUBLE_TYPE|StaticType::UNTYPED_ATOMIC_TYPE)) { + _src.getStaticType().flags |= StaticType::DOUBLE_TYPE; + } + } +} + +Result ArithmeticOperator::createResult(DynamicContext* context, int flags) const +{ + return new ArithmeticResult(this); +} + +AnyAtomicType::Ptr ArithmeticOperator::getArgument(unsigned int index, DynamicContext *context) const +{ + if(getNumArgs() <= index) return 0; + return (const AnyAtomicType::Ptr )_args[index]->collapseTree(context)->next(context); +} + +ArithmeticOperator::ArithmeticResult::ArithmeticResult(const ArithmeticOperator *op) + : SingleResult(op), + _op(op) +{ +} + +Item::Ptr ArithmeticOperator::ArithmeticResult::getSingleResult(DynamicContext *context) const +{ + try { + return _op->execute(_op->getArgument(0, context), _op->getArgument(1, context), context); + } + catch(XQException &e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(this); + throw; + } +} + +std::string ArithmeticOperator::ArithmeticResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/operators/ComparisonOperator.cpp b/src/operators/ComparisonOperator.cpp new file mode 100644 index 00000000..91bd92d6 --- /dev/null +++ b/src/operators/ComparisonOperator.cpp @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ComparisonOperator.cpp,v 1.19 2006/11/02 15:07:56 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +ComparisonOperator::ComparisonOperator(const XMLCh* opName, const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQOperator(opName, args, memMgr) +{ +} + +ASTNode* ComparisonOperator::staticResolution(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + for(VectorOfASTNodes::iterator i = _args.begin(); i != _args.end(); ++i) { + // Value comparisons are intended for comparing single values. The result of a value comparison is + // defined by applying the following rules, in order: + + // 1. Atomization is applied to each operand. If the result, called an atomized operand, does not contain + // exactly one atomic value, a type error is raised. + *i = new (mm) XQAtomize(*i, mm); + (*i)->setLocationInfo(this); + + // 2. If the atomized operand is an empty sequence, the result of the value comparison is an empty sequence, + // and the implementation need not evaluate the other operand or apply the operator. However, an + // implementation may choose to evaluate the other operand in order to determine whether it raises an error. + // 3. If the atomized operand is a sequence of length greater than one, a type error is raised [err:XPTY0004]. + SequenceType *seqType = new (mm) SequenceType(new (mm) SequenceType::ItemType(SequenceType::ItemType::TEST_ANYTHING), + SequenceType::QUESTION_MARK); + seqType->setLocationInfo(*i); + + *i = new (mm) XQTreatAs(*i, seqType, mm); + (*i)->setLocationInfo(this); + + // 4. Any atomized operand that has the dynamic type xdt:untypedAtomic is cast to the type xs:string. + *i = new (mm) XQPromoteUntyped(*i, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_STRING, mm); + (*i)->setLocationInfo(this); + + *i = (*i)->staticResolution(context); + } + + return this; +} + +ASTNode* ComparisonOperator::staticTyping(StaticContext *context) +{ + _src.clear(); + + for(VectorOfASTNodes::iterator i = _args.begin(); i != _args.end(); ++i) { + *i = (*i)->staticTyping(context); + _src.add((*i)->getStaticResolutionContext()); + + if((*i)->isDateOrTimeAndHasNoTimezone(context)) + _src.implicitTimezoneUsed(true); + } + + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; + + if(!_src.isUsed()) { + return constantFold(context); + } + return this; +} + +Result ComparisonOperator::createResult(DynamicContext* context, int flags) const +{ + return new ComparisonResult(this); +} + +AnyAtomicType::Ptr ComparisonOperator::getArgument(unsigned int index, DynamicContext *context) const +{ + assert(getNumArgs() > index); + return (const AnyAtomicType::Ptr )_args[index]->collapseTree(context)->next(context); +} + +ComparisonOperator::ComparisonResult::ComparisonResult(const ComparisonOperator *op) + : SingleResult(op), + _op(op) +{ +} + +Item::Ptr ComparisonOperator::ComparisonResult::getSingleResult(DynamicContext *context) const +{ + try { + AnyAtomicType::Ptr left=_op->getArgument(0, context); + if(left.isNull()) return 0; + AnyAtomicType::Ptr right=_op->getArgument(1, context); + if(right.isNull()) return 0; + bool result = _op->execute(left, right, context); + return (const Item::Ptr)context->getItemFactory()->createBoolean(result, context); + } + catch(XQException &e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(this); + throw; + } +} + +std::string ComparisonOperator::ComparisonResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/operators/Divide.cpp b/src/operators/Divide.cpp new file mode 100644 index 00000000..feae74ea --- /dev/null +++ b/src/operators/Divide.cpp @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Divide.cpp,v 1.10 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include + +/*static*/ const XMLCh Divide::name[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_v, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +Divide::Divide(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ArithmeticOperator(name, args, memMgr) +{ + // Nothing to do +} + +void Divide::calculateStaticType() +{ + const StaticType &arg0 = _args[0]->getStaticResolutionContext().getStaticType(); + const StaticType &arg1 = _args[1]->getStaticResolutionContext().getStaticType(); + + calculateStaticTypeForNumerics(arg0, arg1); + + // Dividing a duration by a number + if(arg0.containsType(StaticType::DAY_TIME_DURATION_TYPE|StaticType::YEAR_MONTH_DURATION_TYPE) + && arg1.containsType(StaticType::NUMERIC_TYPE)) { + _src.getStaticType().flags |= arg0.flags & (StaticType::DAY_TIME_DURATION_TYPE|StaticType::YEAR_MONTH_DURATION_TYPE); + } + + // Dividing a duration by a duration + if(arg0.containsType(StaticType::DAY_TIME_DURATION_TYPE) && arg1.containsType(StaticType::DAY_TIME_DURATION_TYPE)) { + _src.getStaticType().flags |= StaticType::DECIMAL_TYPE; + } + if(arg0.containsType(StaticType::YEAR_MONTH_DURATION_TYPE) && arg1.containsType(StaticType::YEAR_MONTH_DURATION_TYPE)) { + _src.getStaticType().flags |= StaticType::DECIMAL_TYPE; + } +} + +Item::Ptr Divide::execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const +{ + if(atom1 == NULLRCP || atom2 == NULLRCP) return 0; + + if(atom1->isNumericValue()) { + if(atom2->isNumericValue()) { + return (const Item::Ptr)((Numeric*)(const AnyAtomicType*)atom1)->divide((const Numeric::Ptr )atom2, context); + } + else { + XQThrow(XPath2ErrorException,X("Divide::collapseTreeInternal"), X("An attempt to divide a numeric type by a non-numeric type has occurred [err:XPTY0004]")); + } + } + + if(atom1->getPrimitiveTypeIndex() == AnyAtomicType::DAY_TIME_DURATION || + atom1->getPrimitiveTypeIndex() == AnyAtomicType::YEAR_MONTH_DURATION) { + const ATDurationOrDerived* duration = (const ATDurationOrDerived*)atom1.get(); + if(atom2->isNumericValue()) { + return (const Item::Ptr)duration->divide((const Numeric *)atom2.get(), context); + } + else if(atom2->getPrimitiveTypeIndex() == AnyAtomicType::DAY_TIME_DURATION || + atom2->getPrimitiveTypeIndex() == AnyAtomicType::YEAR_MONTH_DURATION) { + return (const Item::Ptr)duration->divide((const ATDurationOrDerived*)atom2.get(), context); + } + else { + XQThrow(XPath2ErrorException,X("Divide::collapseTreeInternal"), X("An attempt to divide an xs:duration by an invalid type has occured [err:XPTY0004]")); + } + } + else { + XQThrow(XPath2ErrorException,X("Divide::collapseTreeInternal"), X("The operator div has been called on invalid operand types [err:XPTY0004]")); + } + + return 0; +} + diff --git a/src/operators/Equals.cpp b/src/operators/Equals.cpp new file mode 100644 index 00000000..40107f03 --- /dev/null +++ b/src/operators/Equals.cpp @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Equals.cpp,v 1.13 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/*static*/ const XMLCh Equals::name[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_q, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +Equals::Equals(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ComparisonOperator(name, args, memMgr) +{ +} + +/*static*/ bool Equals::equals(const Item::Ptr &arg1, const Item::Ptr &arg2, Collation* collation, DynamicContext* context, const LocationInfo *info) +{ + assert(arg1->isAtomicValue() && arg2->isAtomicValue()); + return equals((const AnyAtomicType::Ptr)arg1, (const AnyAtomicType::Ptr)arg2, collation, context, info); +} + +/*static*/ bool Equals::equals(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, Collation* collation, DynamicContext* context, const LocationInfo *info) +{ + try { + // take care of the special case first + if(atom1->getPrimitiveTypeIndex() == AnyAtomicType::STRING) { + if(atom2->getPrimitiveTypeIndex() != AnyAtomicType::STRING && + atom2->getPrimitiveTypeIndex() != AnyAtomicType::ANY_URI) { + XQThrow3(XPath2ErrorException,X("Equals::equals"), X("An attempt to compare a string type to a non string type has occurred [err:XPTY0004]"), info); + } + // if the function returns 0, then they are equal + return (collation->compare(atom1->asString(context),atom2->asString(context))==0); + } + + return atom1->equals(atom2, context); + } + catch(XQException &e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(info); + throw; + } +} + +bool Equals::execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const +{ + return equals(atom1, atom2, context->getDefaultCollation(this), context, this); +} + diff --git a/src/operators/Except.cpp b/src/operators/Except.cpp new file mode 100644 index 00000000..e6777a9f --- /dev/null +++ b/src/operators/Except.cpp @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Except.cpp,v 1.16 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +/*static*/ const XMLCh Except::name[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_x, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +Except::Except(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQOperator(name, args, memMgr), + sortAdded_(false) +{ +} + +ASTNode* Except::staticResolution(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + if(!sortAdded_) { + sortAdded_ = true; + // Wrap ourselves in a document order sort + ASTNode *result = new (mm) XQDocumentOrder(this, mm); + result->setLocationInfo(this); + return result->staticResolution(context); + } + + for(VectorOfASTNodes::iterator i = _args.begin(); i != _args.end(); ++i) { + SequenceType *seqType = new (mm) SequenceType(new (mm) SequenceType::ItemType(SequenceType::ItemType::TEST_NODE), + SequenceType::STAR); + seqType->setLocationInfo(this); + + *i = new (mm) XQTreatAs(*i, seqType, mm); + (*i)->setLocationInfo(this); + + *i = (*i)->staticResolution(context); + } + + return this; +} + +ASTNode* Except::staticTyping(StaticContext *context) +{ + _src.getStaticType().flags = StaticType::NODE_TYPE; + + _args[0] = _args[0]->staticTyping(context); + _src.copy(_args[0]->getStaticResolutionContext()); + + _args[1] = _args[1]->staticTyping(context); + _src.add(_args[1]->getStaticResolutionContext()); + + return this; +} + +Result Except::createResult(DynamicContext* context, int flags) const +{ + return new ExceptResult(this, flags); +} + +Except::ExceptResult::ExceptResult(const Except *op, int flags) + : ResultImpl(op), + _op(op), + _flags(flags), + _toDo(true), + _result(0), + _excpt(0) +{ +} + +Item::Ptr Except::ExceptResult::next(DynamicContext *context) +{ + if(_toDo) { + _toDo = false; + _result = _op->getArgument(0)->collapseTree(context, _flags); + _excpt = _op->getArgument(1)->collapseTree(context); + } + + Item::Ptr item = _result->next(context); + while(item != NULLRCP) { + + bool found = false; + Result except_result(_excpt.createResult()); + Item::Ptr except_item; + while((except_item = except_result->next(context)) != NULLRCP) { + if(((Node*)item.get())->equals((Node*)except_item.get())) { + found = true; + break; + } + } + + if(!found) { + break; + } + + item = _result->next(context); + } + + if(item == NULLRCP) { + _result = 0; + _excpt = 0; + } + + return item; +} + +std::string Except::ExceptResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/operators/GeneralComp.cpp b/src/operators/GeneralComp.cpp new file mode 100644 index 00000000..41ac1762 --- /dev/null +++ b/src/operators/GeneralComp.cpp @@ -0,0 +1,205 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: GeneralComp.cpp,v 1.18 2006/11/02 15:07:56 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/*static*/ const XMLCh GeneralComp::name[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +GeneralComp::GeneralComp(ComparisonOperation operation, const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQOperator(name, args, memMgr), + xpath1compat_(false) +{ + _operation=operation; +} + +bool GeneralComp::compare(GeneralComp::ComparisonOperation operation, AnyAtomicType::Ptr first, AnyAtomicType::Ptr second, + Collation* collation, DynamicContext *context, bool xpath1compat, const LocationInfo *info) +{ + // The magnitude relationship between two atomic values is determined as follows: + // 1) If either atomic value has the dynamic type xdt:untypedAtomic, that value is cast to a required type, + // which is determined as follows: + // - If the dynamic type of the other atomic value is a numeric type, the required type is xs:double. + // - If the dynamic type of the other atomic value is xdt:untypedAtomic, the required type is xs:string. + // - Otherwise, the required type is the dynamic type of the other atomic value. + // If the cast to the required type fails, a dynamic error is raised. + // 2) If XPath 1.0 compatibility mode is true, and at least one of the atomic values has a numeric type, + // then both atomic values are cast to to the type xs:double. + // 3) After any necessary casting, the atomic values are compared using one of the value comparison operators + // eq, ne, lt, le, gt, or ge, depending on whether the general comparison operator was + // =, !=, <, <=, >, or >=. The values have the required magnitude relationship if the result of this + // value comparison is true. + + if(first->getPrimitiveTypeIndex() == AnyAtomicType::UNTYPED_ATOMIC) { + if (second->isNumericValue()) { + first = first->castAs(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_DOUBLE, context); + } + else if(second->getPrimitiveTypeIndex() == AnyAtomicType::UNTYPED_ATOMIC) { + first = first->castAs(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, context); + } + else { + first = first->castAs(second->getTypeURI(), + second->getTypeName(), context); + } + } + if(second->getPrimitiveTypeIndex() == AnyAtomicType::UNTYPED_ATOMIC) { + if(first->isNumericValue()) { + second = second->castAs(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_DOUBLE, context); + } + else if(first->getPrimitiveTypeIndex() == AnyAtomicType::UNTYPED_ATOMIC) { + second = second->castAs(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, context); + } + else { + second = second->castAs(first->getTypeURI(), + first->getTypeName(), context); + } + } + if(xpath1compat && (first->isNumericValue() || second->isNumericValue())) { + first = first->castAs(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_DOUBLE, context); + second = second->castAs(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_DOUBLE, context); + } + bool result = false; + switch(operation) { + case GeneralComp::EQUAL: result = Equals::equals(first,second,collation,context,info); break; + case GeneralComp::NOT_EQUAL: result = NotEquals::not_equals(first,second,collation,context,info); break; + case GeneralComp::LESS_THAN: result = LessThan::less_than(first,second,collation,context,info); break; + case GeneralComp::LESS_THAN_EQUAL: result = LessThanEqual::less_than_equal(first,second,collation,context,info); break; + case GeneralComp::GREATER_THAN: result = GreaterThan::greater_than(first,second,collation,context,info); break; + case GeneralComp::GREATER_THAN_EQUAL: result = GreaterThanEqual::greater_than_equal(first,second,collation,context,info); break; + default: assert(false); + } + + return result; +} + +ASTNode* GeneralComp::staticResolution(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + xpath1compat_ = context->getXPath1CompatibilityMode(); + + AutoNodeSetOrderingReset orderReset(context); + + for(VectorOfASTNodes::iterator i = _args.begin(); i != _args.end(); ++i) { + *i = new (mm) XQAtomize(*i, mm); + (*i)->setLocationInfo(this); + *i = (*i)->staticResolution(context); + } + + return this; +} + +ASTNode* GeneralComp::staticTyping(StaticContext *context) +{ + _src.clear(); + + for(VectorOfASTNodes::iterator i = _args.begin(); i != _args.end(); ++i) { + *i = (*i)->staticTyping(context); + _src.add((*i)->getStaticResolutionContext()); + + if((*i)->isDateOrTimeAndHasNoTimezone(context)) + _src.implicitTimezoneUsed(true); + } + + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; + + if(!_src.isUsed()) { + return constantFold(context); + } + return this; +} + +Result GeneralComp::createResult(DynamicContext* context, int flags) const +{ + return new GeneralCompResult(this); +} + +GeneralComp::ComparisonOperation GeneralComp::getOperation() const { + return _operation; +} + +GeneralComp::GeneralCompResult::GeneralCompResult(const GeneralComp *op) + : SingleResult(op), + _op(op) +{ +} + +Item::Ptr GeneralComp::GeneralCompResult::getSingleResult(DynamicContext *context) const +{ + // Atomization is applied to each operand of a general comparison. + Result arg1 = _op->getArgument(0)->collapseTree(context); + Result arg2 = _op->getArgument(1)->collapseTree(context); + + Collation* collation=context->getDefaultCollation(this); + + // The result of the comparison is true if and only if there is a pair of atomic values, + // one belonging to the result of atomization of the first operand and the other belonging + // to the result of atomization of the second operand, that have the required magnitude relationship. + // Otherwise the result of the general comparison is false. + + AnyAtomicType::Ptr item1 = (const AnyAtomicType::Ptr)arg1->next(context); + if(item1 != NULLRCP) { + // The first time we loop over arg2, we store it in a sequence + AnyAtomicType::Ptr item2; + Sequence arg2_sequence(context->getMemoryManager()); + while((item2 = (const AnyAtomicType::Ptr)arg2->next(context)) != NULLRCP) { + if(compare(_op->getOperation(), item1, item2, collation, context, _op->getXPath1CompatibilityMode(), this)) + return (const Item::Ptr)context->getItemFactory()->createBoolean(true, context); + arg2_sequence.addItem(item2); + } + + // The second and subsequent times, we iterate over the sequence + Sequence::iterator itSecond; + while((item1 = (const AnyAtomicType::Ptr)arg1->next(context)) != NULLRCP) { + for(itSecond = arg2_sequence.begin(); itSecond != arg2_sequence.end(); ++itSecond) { + if(compare(_op->getOperation(), item1, (const AnyAtomicType::Ptr)*itSecond, collation, context, + _op->getXPath1CompatibilityMode(), this)) + return (const Item::Ptr)context->getItemFactory()->createBoolean(true, context); + } + } + } + return (const Item::Ptr)context->getItemFactory()->createBoolean(false, context); +} + +std::string GeneralComp::GeneralCompResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/operators/GreaterThan.cpp b/src/operators/GreaterThan.cpp new file mode 100644 index 00000000..df1143e7 --- /dev/null +++ b/src/operators/GreaterThan.cpp @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: GreaterThan.cpp,v 1.18 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/*static*/ const XMLCh GreaterThan::name[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +GreaterThan::GreaterThan(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ComparisonOperator(name, args, memMgr) +{ +} + +/*static*/ bool GreaterThan::greater_than(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, Collation* collation, DynamicContext* context, const LocationInfo *info) +{ + try { + // take care of Numeric types first + if(atom1->isNumericValue()) { + if(atom2->isNumericValue()) { + return ((Numeric*)(const AnyAtomicType*)atom1)->greaterThan((const Numeric::Ptr )atom2, context); + } else { + XQThrow2(XPath2ErrorException,X("GreaterThan::greater_than"), X("An attempt to compare a numeric type to a non numeric type has occurred [err:XPTY0004]")); + } + } + + switch(atom1->getPrimitiveTypeIndex()) { + case AnyAtomicType::BOOLEAN: + { + // op:boolean-greater-than(A, B) + if(atom2->getPrimitiveTypeIndex() != AnyAtomicType::BOOLEAN) + XQThrow2(XPath2ErrorException,X("GreaterThan::greater_than"), X("An attempt to compare a boolean type to a non boolean type has occurred [err:XPTY0004]")); + return ((const ATBooleanOrDerived*)atom1.get())->compare((const ATBooleanOrDerived*)atom2.get(), context) > 0; + } + case AnyAtomicType::STRING: + case AnyAtomicType::ANY_URI: + { + // use function compare + if(atom2->getPrimitiveTypeIndex() != AnyAtomicType::STRING && + atom2->getPrimitiveTypeIndex() != AnyAtomicType::ANY_URI) + XQThrow2(XPath2ErrorException,X("GreaterThan::greater_than"), X("An attempt to compare a string type to a non string type has occurred [err:XPTY0004]")); + // if the function returns 1, then atom1 is greater + return collation->compare(atom1->asString(context),atom2->asString(context))>0; + } + case AnyAtomicType::DATE: + { + // op:date-greater-than(A, B) + if(atom2->getPrimitiveTypeIndex() != AnyAtomicType::DATE) + XQThrow2(XPath2ErrorException,X("GreaterThan::greater_than"), X("An attempt to compare a date type to a non date type has occurred [err:XPTY0004]")); + return ((ATDateOrDerived*)atom1.get())->compare((const ATDateOrDerived::Ptr )atom2, context) > 0; + } + case AnyAtomicType::TIME: + { + // op:time-greater-than(A, B) + if(atom2->getPrimitiveTypeIndex() != AnyAtomicType::TIME) + XQThrow2(XPath2ErrorException,X("GreaterThan::greater_than"), X("An attempt to compare a time type to a non time type has occurred [err:XPTY0004]")); + return ((ATTimeOrDerived*)atom1.get())->compare((const ATTimeOrDerived::Ptr )atom2, context) > 0; + } + case AnyAtomicType::DATE_TIME: + { + // op:datetime-greater-than(A, B) + if(atom2->getPrimitiveTypeIndex() != AnyAtomicType::DATE_TIME) + XQThrow2(XPath2ErrorException,X("GreaterThan::greater_than"), X("An attempt to compare a dateTime type to a non dateTime type has occurred [err:XPTY0004]")); + return ((ATDateTimeOrDerived*)atom1.get())->compare((const ATDateTimeOrDerived::Ptr)atom2, context) > 0; + } + case AnyAtomicType::DAY_TIME_DURATION: + { + if(atom2->getPrimitiveTypeIndex() != AnyAtomicType::DAY_TIME_DURATION) + XQThrow2(XPath2ErrorException,X("GreaterThan::greater_than"), X("An attempt to compare a duration type to a non duration type has occurred [err:XPTY0004]")); + return ((const ATDurationOrDerived*)atom1.get())->compare((const ATDurationOrDerived*)atom2.get(), context) > 0; + } + case AnyAtomicType::YEAR_MONTH_DURATION: + { + if(atom2->getPrimitiveTypeIndex() != AnyAtomicType::YEAR_MONTH_DURATION) + XQThrow2(XPath2ErrorException,X("GreaterThan::greater_than"), X("An attempt to compare a duration type to a non duration type has occurred [err:XPTY0004]")); + return ((const ATDurationOrDerived*)atom1.get())->compare((const ATDurationOrDerived*)atom2.get(), context) > 0; + } + default: + XQThrow2(XPath2ErrorException,X("GreaterThan::greater_than"), X("Unexpected data type in operator 'gt' [err:XPTY0004]")); + } + XQThrow2(FunctionException,X("GreaterThan::greater_than"), X("An equality operator is not defined for the provided arguments [err:XPTY0004]")); + } + catch(XQException &e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(info); + throw; + } + +} + +bool GreaterThan::execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const +{ + return greater_than(atom1, atom2, context->getDefaultCollation(this), context, this); +} + diff --git a/src/operators/GreaterThanEqual.cpp b/src/operators/GreaterThanEqual.cpp new file mode 100644 index 00000000..b958745d --- /dev/null +++ b/src/operators/GreaterThanEqual.cpp @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: GreaterThanEqual.cpp,v 1.12 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include + +/*static*/ const XMLCh GreaterThanEqual::name[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_g, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +GreaterThanEqual::GreaterThanEqual(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ComparisonOperator(name, args, memMgr) +{ +} + +/*static*/ bool GreaterThanEqual::greater_than_equal(const AnyAtomicType::Ptr &arg1, const AnyAtomicType::Ptr &arg2, Collation* collation, DynamicContext* context, const LocationInfo *info) +{ + // A ge B numeric numeric op:numeric-greater-than(A, B) or op:numeric-equal(A, B) + // A ge B xs:boolean xs:boolean fn:not(op:boolean-less-than(A, B)) + // A ge B xs:string xs:string op:numeric-greater-than(fn:compare(A, B), -1) + // A ge B xs:date xs:date fn:not(op:date-less-than(A, B)) + // A ge B xs:time xs:time fn:not(op:time-less-than(A, B)) + // A ge B xs:dateTime xs:dateTime fn:not(op:datetime-less-than(A, B)) + // A ge B xdt:yearMonthDuration xdt:yearMonthDuration fn:not(op:yearMonthDuration-less-than(A, B)) + // A ge B xdt:dayTimeDuration xdt:dayTimeDuration fn:not(op:dayTimeDuration-less-than(A, B)) + // numeric values need a special comparison, for the others we can just rely on LessThan + if(arg1->isNumericValue() && arg2->isNumericValue()) { + if(((Numeric*)arg1.get())->getState() == Numeric::NaN || + ((Numeric*)arg2.get())->getState() == Numeric::NaN) return false; + } + + return !LessThan::less_than(arg1,arg2,collation,context, info); +} + +bool GreaterThanEqual::execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const +{ + return greater_than_equal(atom1,atom2,context->getDefaultCollation(this),context, this); +} + diff --git a/src/operators/IntegerDivide.cpp b/src/operators/IntegerDivide.cpp new file mode 100644 index 00000000..27cc1b64 --- /dev/null +++ b/src/operators/IntegerDivide.cpp @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: IntegerDivide.cpp,v 1.12 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include + +#include + +/*static*/ const XMLCh IntegerDivide::name[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_v, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +IntegerDivide::IntegerDivide(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ArithmeticOperator(name, args, memMgr) +{ + // Nothing to do +} + +void IntegerDivide::calculateStaticType() +{ + const StaticType &arg0 = _args[0]->getStaticResolutionContext().getStaticType(); + // untypedAtomic will be promoted to xs:double + if(arg0.containsType(StaticType::NUMERIC_TYPE|StaticType::UNTYPED_ATOMIC_TYPE)) { + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; + } +} + +Item::Ptr IntegerDivide::execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const +{ + if(atom1 == NULLRCP || atom2 == NULLRCP) return 0; + + if(atom1->isNumericValue() && atom2->isNumericValue()) { + const Numeric::Ptr op1=atom1; + const Numeric::Ptr op2=atom2; + if(op2->isZero()) + XQThrow(XPath2ErrorException,X("IntegerDivide::execute"), X("Division by zero [err:FOAR0001]")); + + if(op1->isNaN() || op1->isInfinite() || op2->isNaN()) + XQThrow(XPath2ErrorException,X("IntegerDivide::execute"), X("Either operand is NaN or the dividend is INF or -INF [err:FOAR0002]")); + + // it divides the first argument by the second, and returns the integer obtained by truncating the fractional part + // of the result. + Numeric::Ptr div=op1->divide(op2, context); + if(div->isPositive()) + div = div->floor(context); + else if(div->isNegative()) + div = div->ceiling(context); + + return div->castAs(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_INTEGER, context); + } + XQThrow(XPath2ErrorException,X("IntegerDivide::execute"), X("An attempt to integer divide a non numeric type to a numeric type has occurred [err:XPTY0004]")); +} + diff --git a/src/operators/Intersect.cpp b/src/operators/Intersect.cpp new file mode 100644 index 00000000..a1505c7f --- /dev/null +++ b/src/operators/Intersect.cpp @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Intersect.cpp,v 1.15 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include + +/*static*/ const XMLCh Intersect::name[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_c, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +Intersect::Intersect(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQOperator(name, args, memMgr), + sortAdded_(false) +{ +} + +ASTNode* Intersect::staticResolution(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + if(!sortAdded_) { + sortAdded_ = true; + // Wrap ourselves in a document order sort + ASTNode *result = new (mm) XQDocumentOrder(this, mm); + result->setLocationInfo(this); + return result->staticResolution(context); + } + + for(VectorOfASTNodes::iterator i = _args.begin(); i != _args.end(); ++i) { + SequenceType *seqType = new (mm) SequenceType(new (mm) SequenceType::ItemType(SequenceType::ItemType::TEST_NODE), + SequenceType::STAR); + seqType->setLocationInfo(this); + + *i = new (mm) XQTreatAs(*i, seqType, mm); + (*i)->setLocationInfo(this); + + *i = (*i)->staticResolution(context); + } + + return this; +} + +ASTNode* Intersect::staticTyping(StaticContext *context) +{ + _src.clear(); + + _args[0] = _args[0]->staticTyping(context); + _src.copy(_args[0]->getStaticResolutionContext()); + + _args[1] = _args[1]->staticTyping(context); + _src.add(_args[1]->getStaticResolutionContext()); + _src.getStaticType().typeIntersect(_args[1]->getStaticResolutionContext().getStaticType()); + + return this; +} + +Sequence Intersect::collapseTreeInternal(DynamicContext* context, int flags) const +{ + Sequence param1 = _args[0]->collapseTree(context, flags)->toSequence(context); + Sequence param2 = _args[1]->collapseTree(context, flags)->toSequence(context); + + XPath2MemoryManager* memMgr = context->getMemoryManager(); + Sequence result(param1.getLength(),memMgr); + + Sequence::const_iterator p1It = param1.begin(); + Sequence::const_iterator p2It; + Sequence::const_iterator end1 = param1.end(); + Sequence::const_iterator end2 = param2.end(); + + for(;p1It != end1; ++p1It) { + for(p2It = param2.begin();p2It != end2; ++p2It) { + if(((Node*)p1It->get())->equals((Node*)p2It->get())) { + result.addItem(*p1It); + } + } + } + + return result; +} diff --git a/src/operators/LessThan.cpp b/src/operators/LessThan.cpp new file mode 100644 index 00000000..66340dab --- /dev/null +++ b/src/operators/LessThan.cpp @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: LessThan.cpp,v 1.19 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/*static*/ const XMLCh LessThan::name[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +LessThan::LessThan(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ComparisonOperator(name, args, memMgr) +{ +} + +/*static*/ bool LessThan::less_than(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, Collation* collation, DynamicContext* context, const LocationInfo *info) +{ + try { + // take care of Numeric types first + if(atom1->isNumericValue()) { + if(atom2->isNumericValue()) { + return ((Numeric*)atom1.get())->lessThan((Numeric*)atom2.get(), context); + } else { + XQThrow2(XPath2ErrorException,X("LessThan::less_than"), X("An attempt to compare a numeric type to a non numeric type has occurred [err:XPTY0004]")); + } + } + + switch(atom1->getPrimitiveTypeIndex()) { + case AnyAtomicType::BOOLEAN: + { + // op:boolean-less-than(A, B) + if(atom2->getPrimitiveTypeIndex() != AnyAtomicType::BOOLEAN) + XQThrow2(XPath2ErrorException,X("LessThan::less_than"), X("An attempt to compare a boolean type to a non boolean type has occurred [err:XPTY0004]")); + return ((const ATBooleanOrDerived*)atom1.get())->compare((const ATBooleanOrDerived*)atom2.get(), context) < 0; + } + case AnyAtomicType::STRING: + case AnyAtomicType::ANY_URI: + { + // op:numeric-less-than(fn:compare(A, B), 0) + if(atom2->getPrimitiveTypeIndex() != AnyAtomicType::STRING && + atom2->getPrimitiveTypeIndex() != AnyAtomicType::ANY_URI) + XQThrow2(XPath2ErrorException,X("LessThan::less_than"), X("An attempt to compare a string type to a non string type has occurred [err:XPTY0004]")); + // if the function returns -1, then atom1 is less + return collation->compare(atom1->asString(context),atom2->asString(context))<0; + } + case AnyAtomicType::DATE: + { + // op:date-less-than(A, B) + if(atom2->getPrimitiveTypeIndex() != AnyAtomicType::DATE) + XQThrow2(XPath2ErrorException,X("LessThan::less_than"), X("An attempt to compare a date type to a non date type has occurred [err:XPTY0004]")); + return ((ATDateOrDerived*)atom1.get())->compare((const ATDateOrDerived::Ptr )atom2, context) < 0; + } + case AnyAtomicType::TIME: + { + // op:time-less-than(A, B) + if(atom2->getPrimitiveTypeIndex() != AnyAtomicType::TIME) + XQThrow2(XPath2ErrorException,X("LessThan::less_than"), X("An attempt to compare a time type to a non time type has occurred [err:XPTY0004]")); + return ((ATTimeOrDerived*)atom1.get())->compare((const ATTimeOrDerived::Ptr )atom2, context) < 0; + } + case AnyAtomicType::DATE_TIME: + { + // op:datetime-less-than(A, B) + if(atom2->getPrimitiveTypeIndex() != AnyAtomicType::DATE_TIME) + XQThrow2(XPath2ErrorException,X("LessThan::less_than"), X("An attempt to compare a dateTime type to a non dateTime type has occurred [err:XPTY0004]")); + return ((ATDateTimeOrDerived*)atom1.get())->compare((const ATDateTimeOrDerived::Ptr)atom2, context) < 0; + } + case AnyAtomicType::DAY_TIME_DURATION: + { + // op:dayTimeDuration-less-than(A, B) + if(atom2->getPrimitiveTypeIndex() != AnyAtomicType::DAY_TIME_DURATION) + XQThrow2(XPath2ErrorException,X("LessThan::less_than"), X("An attempt to compare a duration type to a non duration type has occurred [err:XPTY0004]")); + return ((ATDurationOrDerived*)atom1.get())->compare((const ATDurationOrDerived::Ptr )atom2, context) < 0; + } + case AnyAtomicType::YEAR_MONTH_DURATION: + { + // op:yearMonthDuration-less-than(A, B) + if(atom2->getPrimitiveTypeIndex() != AnyAtomicType::YEAR_MONTH_DURATION) + XQThrow2(XPath2ErrorException,X("LessThan::less_than"), X("An attempt to compare a duration type to a non duration type has occurred [err:XPTY0004]")); + return ((ATDurationOrDerived*)atom1.get())->compare((const ATDurationOrDerived::Ptr )atom2, context) < 0; + } + default: + XQThrow2(XPath2ErrorException,X("LessThan::less_than"), X("Unexpected data type in operator 'lt' [err:XPTY0004]")); + } + XQThrow2(FunctionException,X("LessThan::less_than"), X("An equality operator is not defined for the provided arguments [err:XPTY0004]")); + } + catch(XQException &e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(info); + throw; + } +} + +bool LessThan::execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const +{ + return less_than(atom1, atom2, context->getDefaultCollation(this), context, this); +} diff --git a/src/operators/LessThanEqual.cpp b/src/operators/LessThanEqual.cpp new file mode 100644 index 00000000..2b316232 --- /dev/null +++ b/src/operators/LessThanEqual.cpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: LessThanEqual.cpp,v 1.12 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include + +/*static*/ const XMLCh LessThanEqual::name[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +LessThanEqual::LessThanEqual(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ComparisonOperator(name, args, memMgr) +{ +} + +/*static*/ bool LessThanEqual::less_than_equal(const AnyAtomicType::Ptr &arg1, const AnyAtomicType::Ptr &arg2, Collation* collation, DynamicContext* context, const LocationInfo *info) +{ + // A le B numeric numeric op:numeric-less-than(A, B) or op:numeric-equal(A, B) + // A le B xs:boolean xs:boolean fn:not(op:boolean-greater-than(A, B)) + // A le B xs:string xs:string op:numeric-less-than(fn:compare(A, B), 1) + // A le B xs:date xs:date fn:not(op:date-greater-than(A, B)) + // A le B xs:time xs:time fn:not(op:time-greater-than(A, B)) + // A le B xs:dateTime xs:dateTime fn:not(op:datetime-greater-than(A, B)) + // A le B xdt:yearMonthDuration xdt:yearMonthDuration fn:not(op:yearMonthDuration-greater-than(A, B)) + // A le B xdt:dayTimeDuration xdt:dayTimeDuration fn:not(op:dayTimeDuration-greater-than(A, B)) + // numeric values need a special comparison, for the others we can just rely on GreaterThan + if(arg1->isNumericValue() && arg2->isNumericValue()) { + if(((Numeric*)arg1.get())->getState() == Numeric::NaN || + ((Numeric*)arg2.get())->getState() == Numeric::NaN) return false; + } + + return !GreaterThan::greater_than(arg1,arg2,collation,context,info); +} + +bool LessThanEqual::execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const +{ + return less_than_equal(atom1, atom2, context->getDefaultCollation(this), context, this); +} diff --git a/src/operators/Minus.cpp b/src/operators/Minus.cpp new file mode 100644 index 00000000..fa8c4297 --- /dev/null +++ b/src/operators/Minus.cpp @@ -0,0 +1,144 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Minus.cpp,v 1.10 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/*static*/ const XMLCh Minus::name[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +Minus::Minus(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ArithmeticOperator(name, args, memMgr) +{ +} + +void Minus::calculateStaticType() +{ + const StaticType &arg0 = _args[0]->getStaticResolutionContext().getStaticType(); + const StaticType &arg1 = _args[1]->getStaticResolutionContext().getStaticType(); + + calculateStaticTypeForNumerics(arg0, arg1); + + // Subtracting a duration from a date, dateTime, time, or duration + if(arg1.containsType(StaticType::DAY_TIME_DURATION_TYPE)) { + _src.getStaticType().flags |= arg0.flags & (StaticType::DATE_TYPE|StaticType::DATE_TIME_TYPE|StaticType::TIME_TYPE| + StaticType::DAY_TIME_DURATION_TYPE); + } + if(arg1.containsType(StaticType::YEAR_MONTH_DURATION_TYPE)) { + _src.getStaticType().flags |= arg0.flags & (StaticType::DATE_TYPE|StaticType::DATE_TIME_TYPE|StaticType::YEAR_MONTH_DURATION_TYPE); + } + + // Subtracting date, dateTime and time + if(arg0.containsType(StaticType::DATE_TYPE) && arg1.containsType(StaticType::DATE_TYPE)) { + _src.getStaticType().flags |= StaticType::DAY_TIME_DURATION_TYPE; + } + if(arg0.containsType(StaticType::DATE_TIME_TYPE) && arg1.containsType(StaticType::DATE_TIME_TYPE)) { + _src.getStaticType().flags |= StaticType::DAY_TIME_DURATION_TYPE; + } + if(arg0.containsType(StaticType::TIME_TYPE) && arg1.containsType(StaticType::TIME_TYPE)) { + _src.getStaticType().flags |= StaticType::DAY_TIME_DURATION_TYPE; + } +} + +Item::Ptr Minus::execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const +{ + if(atom1 == NULLRCP || atom2 == NULLRCP) return 0; + + if(atom1->isNumericValue()) { + if(atom2->isNumericValue()) { + return (const Item::Ptr)((Numeric*)(const AnyAtomicType*)atom1)->subtract((const Numeric::Ptr )atom2, context); + } + else { + XQThrow(XPath2ErrorException,X("Minus::collapseTreeInternal"), X("An attempt to subtract a non numeric type from a numeric type has occurred [err:XPTY0004]")); + } + } + + switch(atom1->getPrimitiveTypeIndex()) { + case AnyAtomicType::DATE : { + switch(atom2->getPrimitiveTypeIndex()) { + case AnyAtomicType::DAY_TIME_DURATION: { + return (const Item::Ptr)((ATDateOrDerived*)atom1.get())->subtractDayTimeDuration((const ATDurationOrDerived *)atom2.get(), context); + } + case AnyAtomicType::YEAR_MONTH_DURATION: { + return (const Item::Ptr)((ATDateOrDerived*)atom1.get())->subtractYearMonthDuration((const ATDurationOrDerived *)atom2.get(), context); + } + case AnyAtomicType::DATE: { + return (const Item::Ptr)((ATDateOrDerived*)atom1.get())->subtractDate((const ATDateOrDerived *)atom2.get(), context); + } + default: { + XQThrow(XPath2ErrorException,X("Minus::collapseTreeInternal"), X("An invalid attempt to subtract from xs:date type has occurred [err:XPTY0004]")); + } + } + } + case AnyAtomicType::TIME : { + switch(atom2->getPrimitiveTypeIndex()) { + case AnyAtomicType::DAY_TIME_DURATION : { + return (const Item::Ptr)((ATTimeOrDerived*)atom1.get())->subtractDayTimeDuration((const ATDurationOrDerived *)atom2.get(), context ); + } + case AnyAtomicType::TIME : { + return (const Item::Ptr)((ATTimeOrDerived*)atom1.get())->subtractTime((const ATTimeOrDerived *)atom2.get(), context); + } + default: { + XQThrow(XPath2ErrorException,X("Minus::collapseTreeInternal"), X("An invalid attempt to subtract from xs:time type has occurred [err:XPTY0004]")); + } + } + } + case AnyAtomicType::DATE_TIME : { + switch(atom2->getPrimitiveTypeIndex()) { + case AnyAtomicType::DAY_TIME_DURATION: { + return (const Item::Ptr)((ATDateTimeOrDerived*)atom1.get())->subtractDayTimeDuration((const ATDurationOrDerived*)atom2.get(), context); + } + case AnyAtomicType::YEAR_MONTH_DURATION: { + return (const Item::Ptr)((ATDateTimeOrDerived*)atom1.get())->subtractYearMonthDuration((const ATDurationOrDerived*)atom2.get(), context); + } + case AnyAtomicType::DATE_TIME : { + return (const Item::Ptr)((ATDateTimeOrDerived*)(const AnyAtomicType*)atom1)->subtractDateTimeAsDayTimeDuration((const ATDateTimeOrDerived::Ptr )atom2, context); + } + default: { + XQThrow(XPath2ErrorException,X("Minus::collapseTreeInternal"), X("An invalid attempt to subtract from xs:dateTime type has occurred [err:XPTY0004]")); + } + } + } + case AnyAtomicType::DAY_TIME_DURATION: { + switch(atom2->getPrimitiveTypeIndex()) { + case AnyAtomicType::DAY_TIME_DURATION: { + return (const Item::Ptr)((ATDurationOrDerived*)atom1.get())->subtract((const ATDurationOrDerived *)atom2.get(), context); + } + default: { + XQThrow(XPath2ErrorException,X("Minus::collapseTreeInternal"), X("An invalid attempt to subtract from xdt:dayTimeDuration type has occurred [err:XPTY0004]")); + } + } + } + case AnyAtomicType::YEAR_MONTH_DURATION: { + switch(atom2->getPrimitiveTypeIndex()) { + case AnyAtomicType::YEAR_MONTH_DURATION: { + return (const Item::Ptr)((ATDurationOrDerived*)atom1.get())->subtract((const ATDurationOrDerived *)atom2.get(), context); + } + default: { + XQThrow(XPath2ErrorException,X("Minus::collapseTreeInternal"), X("An invalid attempt to subtract from xdt:yearMonthDuration type has occurred [err:XPTY0004]")); + } + } + } + default: { + XQThrow(XPath2ErrorException,X("Minus::collapseTreeInternal"), X("The operator subtract ('-') has been called on invalid operand types [err:XPTY0004]")); + } + } +} + diff --git a/src/operators/Mod.cpp b/src/operators/Mod.cpp new file mode 100644 index 00000000..ab16893a --- /dev/null +++ b/src/operators/Mod.cpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Mod.cpp,v 1.10 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include + +/*static*/ const XMLCh Mod::name[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +Mod::Mod(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ArithmeticOperator(name, args, memMgr) +{ +} + +void Mod::calculateStaticType() +{ + const StaticType &arg0 = _args[0]->getStaticResolutionContext().getStaticType(); + const StaticType &arg1 = _args[1]->getStaticResolutionContext().getStaticType(); + + calculateStaticTypeForNumerics(arg0, arg1); +} + +Item::Ptr Mod::execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const +{ + if(atom1 == NULLRCP || atom2 == NULLRCP) return 0; + + if(atom1->isNumericValue()) { + if(atom2->isNumericValue()) { + return (const Item::Ptr)((Numeric*)(const AnyAtomicType*)atom1)->mod((const Numeric::Ptr )atom2, context); + } + else { + XQThrow(XPath2ErrorException,X("Mod::collapseTreeInternal"), X("An attempt to mod a non numeric type to a numeric type has occurred [err:XPTY0004]")); + } + } + + XQThrow(XPath2ErrorException,X("Mod::collapseTreeInternal"), X("The operator mod has been called on invalid operand types [err:XPTY0004]")); +} + diff --git a/src/operators/Multiply.cpp b/src/operators/Multiply.cpp new file mode 100644 index 00000000..f8b301b5 --- /dev/null +++ b/src/operators/Multiply.cpp @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Multiply.cpp,v 1.11 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include + +/*static*/ const XMLCh Multiply::name[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +Multiply::Multiply(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ArithmeticOperator(name, args, memMgr) +{ + // Nothing to do +} + +void Multiply::calculateStaticType() +{ + const StaticType &arg0 = _args[0]->getStaticResolutionContext().getStaticType(); + const StaticType &arg1 = _args[1]->getStaticResolutionContext().getStaticType(); + + calculateStaticTypeForNumerics(arg0, arg1); + + // Multiplying a duration by a number + if(arg0.containsType(StaticType::DAY_TIME_DURATION_TYPE|StaticType::YEAR_MONTH_DURATION_TYPE) && arg1.containsType(StaticType::NUMERIC_TYPE)) + _src.getStaticType().flags |= arg0.flags & (StaticType::DAY_TIME_DURATION_TYPE|StaticType::YEAR_MONTH_DURATION_TYPE); + if(arg0.containsType(StaticType::NUMERIC_TYPE) && arg1.containsType(StaticType::DAY_TIME_DURATION_TYPE|StaticType::YEAR_MONTH_DURATION_TYPE)) + _src.getStaticType().flags |= arg1.flags & (StaticType::DAY_TIME_DURATION_TYPE|StaticType::YEAR_MONTH_DURATION_TYPE); +} + +Item::Ptr Multiply::execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const +{ + if(atom1 == NULLRCP || atom2 == NULLRCP) return 0; + + // xs:double * xs:duration (only xdt:dayTimeDuration and xdt:yearMonthDuration) + if(atom1->isNumericValue() && + (atom2->getPrimitiveTypeIndex() == AnyAtomicType::DURATION || + atom2->getPrimitiveTypeIndex() == AnyAtomicType::DAY_TIME_DURATION || + atom2->getPrimitiveTypeIndex() == AnyAtomicType::YEAR_MONTH_DURATION)) { + return (const Item::Ptr)((const ATDurationOrDerived*)atom2.get())->multiply((const Numeric::Ptr)atom1, context); + } + // xs:duration * xs:double (only xdt:dayTimeDuration and xdt:yearMonthDuration) + if(atom2->isNumericValue() && + (atom1->getPrimitiveTypeIndex() == AnyAtomicType::DURATION || + atom1->getPrimitiveTypeIndex() == AnyAtomicType::DAY_TIME_DURATION || + atom1->getPrimitiveTypeIndex() == AnyAtomicType::YEAR_MONTH_DURATION)) { + return (const Item::Ptr)((const ATDurationOrDerived*)atom1.get())->multiply((const Numeric::Ptr)atom2, context); + } + + // numeric * numeric + if(atom1->isNumericValue()) { + if(atom2->isNumericValue()) { + return (const Item::Ptr)((Numeric*)(const AnyAtomicType*)atom1)->multiply((const Numeric::Ptr )atom2, context); + } + else { + XQThrow(XPath2ErrorException,X("Multiply::collapseTreeInternal"), X("An attempt to multiply a non numeric type to a numeric type has occurred [err:XPTY0004]")); + } + } + + XQThrow(XPath2ErrorException,X("Multiply::collapseTreeInternal"), X("The operator * has been called on invalid operand types [err:XPTY0004]")); + +} + diff --git a/src/operators/NodeComparison.cpp b/src/operators/NodeComparison.cpp new file mode 100644 index 00000000..339f4abe --- /dev/null +++ b/src/operators/NodeComparison.cpp @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: NodeComparison.cpp,v 1.14 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/*static*/ const XMLCh NodeComparison::name[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +NodeComparison::NodeComparison(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQOperator(name, args, memMgr) +{ +} + +ASTNode* NodeComparison::staticResolution(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + for(VectorOfASTNodes::iterator i = _args.begin(); i != _args.end(); ++i) { + SequenceType *seqType = new (mm) SequenceType(new (mm) SequenceType::ItemType(SequenceType::ItemType::TEST_NODE), + SequenceType::QUESTION_MARK); + seqType->setLocationInfo(this); + + *i = new (mm) XQTreatAs(*i, seqType, mm); + (*i)->setLocationInfo(this); + + *i = (*i)->staticResolution(context); + } + + return this; +} + +ASTNode* NodeComparison::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; + + for(VectorOfASTNodes::iterator i = _args.begin(); i != _args.end(); ++i) { + *i = (*i)->staticTyping(context); + _src.add((*i)->getStaticResolutionContext()); + } + + return this; +} + +Result NodeComparison::createResult(DynamicContext* context, int flags) const +{ + return new NodeComparisonResult(this); +} + +NodeComparison::NodeComparisonResult::NodeComparisonResult(const NodeComparison *op) + : SingleResult(op), + _op(op) +{ +} + +Item::Ptr NodeComparison::NodeComparisonResult::getSingleResult(DynamicContext *context) const +{ + Item::Ptr arg1 = _op->getArgument(0)->collapseTree(context)->next(context); + if(arg1.isNull()) return 0; + Item::Ptr arg2 = _op->getArgument(1)->collapseTree(context)->next(context); + if(arg2.isNull()) return 0; + + return context->getItemFactory()->createBoolean(((Node*)arg1.get())->equals((Node*)arg2.get()), context); +} + +std::string NodeComparison::NodeComparisonResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/operators/NotEquals.cpp b/src/operators/NotEquals.cpp new file mode 100644 index 00000000..c655e235 --- /dev/null +++ b/src/operators/NotEquals.cpp @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: NotEquals.cpp,v 1.9 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include + +/*static*/ const XMLCh NotEquals::name[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +NotEquals::NotEquals(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ComparisonOperator(name, args, memMgr) +{ +} + +/*static*/ bool NotEquals::not_equals(const AnyAtomicType::Ptr &arg1, const AnyAtomicType::Ptr &arg2, Collation* collation, DynamicContext* context, const LocationInfo *info) +{ + // define "ne" as "!eq" + return !Equals::equals(arg1,arg2,collation,context, info); +} + +bool NotEquals::execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const +{ + return not_equals(atom1, atom2, context->getDefaultCollation(this), context, this); +} + + + + + + + + + + + + diff --git a/src/operators/Or.cpp b/src/operators/Or.cpp new file mode 100644 index 00000000..98d6cfda --- /dev/null +++ b/src/operators/Or.cpp @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Or.cpp,v 1.14 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +/*static*/ const XMLCh Or::name[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +Or::Or(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQOperator(name, args, memMgr) +{ + // Nothing to do +} + +Result Or::createResult(DynamicContext* context, int flags) const +{ + return new OrResult(this); +} + +ASTNode* Or::staticResolution(StaticContext *context) +{ + AutoNodeSetOrderingReset orderReset(context); + for(VectorOfASTNodes::iterator i = _args.begin(); i != _args.end(); ++i) { + *i = (*i)->staticResolution(context); + } + return this; +} + +ASTNode* Or::staticTyping(StaticContext *context) +{ + _src.clear(); + + VectorOfASTNodes newArgs(XQillaAllocator(context->getMemoryManager())); + + for(VectorOfASTNodes::iterator i = _args.begin(); i != _args.end(); ++i) { + *i = (*i)->staticTyping(context); + const StaticResolutionContext &valueSrc = (*i)->getStaticResolutionContext(); + + if(valueSrc.isUsed()) { + _src.add(valueSrc); + newArgs.push_back(*i); + } + else { + AutoDelete dContext(context->createDynamicContext()); + dContext->setMemoryManager(context->getMemoryManager()); + if((*i)->collapseTree(dContext)->getEffectiveBooleanValue(dContext, *i)) { + // It's constantly true, so this expression is true + ASTNode* newBlock = new (getMemoryManager()) + XQSequence(dContext->getItemFactory()->createBoolean(true, dContext), + dContext, getMemoryManager()); + newBlock->setLocationInfo(this); + return newBlock->staticResolution(context); + } + } + } + + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; + + _args = newArgs; + return this; +} + +Or::OrResult::OrResult(const Or *op) + : SingleResult(op), + _op(op) +{ +} + +Item::Ptr Or::OrResult::getSingleResult(DynamicContext *context) const +{ + unsigned int numArgs=_op->getNumArgs(); + for(unsigned int i=0;igetArgument(i)->collapseTree(context)->getEffectiveBooleanValue(context, _op->getArgument(i))) { + return (const Item::Ptr)context->getItemFactory()->createBoolean(true, context); + } + } + + return (const Item::Ptr)context->getItemFactory()->createBoolean(false, context); +} + +std::string Or::OrResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/operators/OrderComparison.cpp b/src/operators/OrderComparison.cpp new file mode 100644 index 00000000..5dcddb86 --- /dev/null +++ b/src/operators/OrderComparison.cpp @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: OrderComparison.cpp,v 1.14 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +/*static*/ const XMLCh OrderComparison::name[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chDash, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_r, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +OrderComparison::OrderComparison(const VectorOfASTNodes &args, bool testBefore, XPath2MemoryManager* memMgr) + : XQOperator(name, args, memMgr) +{ + _testBefore = testBefore; +} + +bool OrderComparison::getTestBefore() const +{ + return _testBefore; +} + +ASTNode* OrderComparison::staticResolution(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + for(VectorOfASTNodes::iterator i = _args.begin(); i != _args.end(); ++i) { + SequenceType *seqType = new (mm) SequenceType(new (mm) SequenceType::ItemType(SequenceType::ItemType::TEST_NODE), + SequenceType::QUESTION_MARK); + seqType->setLocationInfo(this); + + *i = new (mm) XQTreatAs(*i, seqType, mm); + (*i)->setLocationInfo(this); + + *i = (*i)->staticResolution(context); + } + + return this; +} + +ASTNode* OrderComparison::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::BOOLEAN_TYPE; + + for(VectorOfASTNodes::iterator i = _args.begin(); i != _args.end(); ++i) { + *i = (*i)->staticTyping(context); + _src.add((*i)->getStaticResolutionContext()); + } + + return this; +} + +Result OrderComparison::createResult(DynamicContext* context, int flags) const +{ + return new OrderComparisonResult(this); +} + +OrderComparison::OrderComparisonResult::OrderComparisonResult(const OrderComparison *op) + : SingleResult(op), + _op(op) +{ +} + +Item::Ptr OrderComparison::OrderComparisonResult::getSingleResult(DynamicContext *context) const +{ + Item::Ptr arg1 = _op->getArgument(0)->collapseTree(context)->next(context); + if(arg1.isNull()) return 0; + Item::Ptr arg2 = _op->getArgument(1)->collapseTree(context)->next(context); + if(arg2.isNull()) return 0; + + if(_op->getTestBefore()) + return context->getItemFactory()->createBoolean(((Node*)arg1.get())->lessThan((Node*)arg2.get(), context), context); + + return context->getItemFactory()->createBoolean(((Node*)arg2.get())->lessThan((Node*)arg1.get(), context), context); +} + +std::string OrderComparison::OrderComparisonResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/operators/Plus.cpp b/src/operators/Plus.cpp new file mode 100644 index 00000000..1d08aa39 --- /dev/null +++ b/src/operators/Plus.cpp @@ -0,0 +1,159 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Plus.cpp,v 1.13 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/*static*/ const XMLCh Plus::name[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_l, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +Plus::Plus(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ArithmeticOperator(name, args, memMgr) +{ + // Nothing to do +} + +void Plus::calculateStaticType() +{ + const StaticType &arg0 = _args[0]->getStaticResolutionContext().getStaticType(); + const StaticType &arg1 = _args[1]->getStaticResolutionContext().getStaticType(); + + calculateStaticTypeForNumerics(arg0, arg1); + + // Adding a duration to a date, dateTime, time, or duration + if(arg1.containsType(StaticType::DAY_TIME_DURATION_TYPE)) { + _src.getStaticType().flags |= arg0.flags & (StaticType::DATE_TYPE|StaticType::DATE_TIME_TYPE|StaticType::TIME_TYPE| + StaticType::DAY_TIME_DURATION_TYPE); + } + if(arg1.containsType(StaticType::YEAR_MONTH_DURATION_TYPE)) { + _src.getStaticType().flags |= arg0.flags & (StaticType::DATE_TYPE|StaticType::DATE_TIME_TYPE|StaticType::YEAR_MONTH_DURATION_TYPE); + } + if(arg0.containsType(StaticType::DAY_TIME_DURATION_TYPE)) { + _src.getStaticType().flags |= arg1.flags & (StaticType::DATE_TYPE|StaticType::DATE_TIME_TYPE|StaticType::TIME_TYPE| + StaticType::DAY_TIME_DURATION_TYPE); + } + if(arg0.containsType(StaticType::YEAR_MONTH_DURATION_TYPE)) { + _src.getStaticType().flags |= arg1.flags & (StaticType::DATE_TYPE|StaticType::DATE_TIME_TYPE|StaticType::YEAR_MONTH_DURATION_TYPE); + } +} + +Item::Ptr Plus::execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context) const +{ + return plus(atom1, atom2, context, this); +} + +Item::Ptr Plus::plus(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, DynamicContext *context, const LocationInfo *info) +{ + try { + if(atom1 == NULLRCP || atom2 == NULLRCP) return 0; + + if(atom1->isNumericValue()) { + if(atom2->isNumericValue()) { + return (const Item::Ptr)((Numeric*)(const AnyAtomicType*)atom1)->add((const Numeric::Ptr )atom2, context); + } + else { + XQThrow2(XPath2ErrorException,X("Plus::collapseTreeInternal"), X("An attempt to add a non numeric type to a numeric type has occurred [err:XPTY0004]")); + } + } + + switch(atom1->getPrimitiveTypeIndex()) { + case AnyAtomicType::DATE : { + switch(atom2->getPrimitiveTypeIndex()) { + case AnyAtomicType::DAY_TIME_DURATION: { + return (const Item::Ptr)((ATDateOrDerived*)atom1.get())->addDayTimeDuration((const ATDurationOrDerived*)atom2.get(), context); + } + case AnyAtomicType::YEAR_MONTH_DURATION: { + return (const Item::Ptr)((ATDateOrDerived*)atom1.get())->addYearMonthDuration((const ATDurationOrDerived*)atom2.get(), context); + } + default: { + XQThrow2(XPath2ErrorException,X("Plus::collapseTreeInternal"), X("An invalid attempt to add to xs:date type has occurred [err:XPTY0004]")); + } + } + } + case AnyAtomicType::TIME : { + switch(atom2->getPrimitiveTypeIndex()) { + case AnyAtomicType::DAY_TIME_DURATION: { + return (const Item::Ptr)((ATTimeOrDerived*)(const AnyAtomicType*)atom1)->addDayTimeDuration( (const ATDurationOrDerived::Ptr )atom2, context ); + } + default: { + XQThrow2(XPath2ErrorException,X("Plus::collapseTreeInternal"), X("An invalid attempt to add to xs:time type has occurred [err:XPTY0004]")); + } + } + } + case AnyAtomicType::DATE_TIME : { + switch(atom2->getPrimitiveTypeIndex()) { + case AnyAtomicType::DAY_TIME_DURATION: { + return (const Item::Ptr)((ATDateTimeOrDerived*)atom1.get())->addDayTimeDuration((const ATDurationOrDerived*)atom2.get(), context); + } + case AnyAtomicType::YEAR_MONTH_DURATION: { + return (const Item::Ptr)((ATDateTimeOrDerived*)atom1.get())->addYearMonthDuration((const ATDurationOrDerived*)atom2.get(), context); + } + default: { + XQThrow2(XPath2ErrorException,X("Plus::collapseTreeInternal"), X("An invalid attempt to add to xs:dateTime type has occurred [err:XPTY0004]")); + } + } + } + case AnyAtomicType::DAY_TIME_DURATION: { + switch(atom2->getPrimitiveTypeIndex()) { + case AnyAtomicType::DAY_TIME_DURATION: { + return (const Item::Ptr)((ATDurationOrDerived*)atom2.get())->add((const ATDurationOrDerived *)atom1.get(), context); + } + case AnyAtomicType::DATE: { + return (const Item::Ptr)((ATDateOrDerived*)atom2.get())->addDayTimeDuration((const ATDurationOrDerived *)atom1.get(), context); + } + case AnyAtomicType::DATE_TIME: { + return (const Item::Ptr)((ATDateTimeOrDerived*)atom2.get())->addDayTimeDuration((const ATDurationOrDerived *)atom1.get(), context); + } + case AnyAtomicType::TIME: { + return (const Item::Ptr)((ATTimeOrDerived*)atom2.get())->addDayTimeDuration((const ATDurationOrDerived *)atom1.get(), context); + } + default: { + XQThrow2(XPath2ErrorException,X("Plus::collapseTreeInternal"), X("An invalid attempt to add to xdt:dayTimeDuration type has occurred [err:XPTY0004]")); + } + } + } + case AnyAtomicType::YEAR_MONTH_DURATION: { + switch(atom2->getPrimitiveTypeIndex()) { + case AnyAtomicType::YEAR_MONTH_DURATION: { + return (const Item::Ptr)((ATDurationOrDerived*)atom2.get())->add((const ATDurationOrDerived *)atom1.get(), context); + } + case AnyAtomicType::DATE: { + return (const Item::Ptr)((ATDateOrDerived*)atom2.get())->addYearMonthDuration((const ATDurationOrDerived *)atom1.get(), context); + } + case AnyAtomicType::DATE_TIME: { + return (const Item::Ptr)((ATDateTimeOrDerived*)atom2.get())->addYearMonthDuration((const ATDurationOrDerived *)atom1.get(), context); + } + default: { + XQThrow2(XPath2ErrorException,X("Plus::collapseTreeInternal"), X("An invalid attempt to add to xdt:yearMonthDuration type has occurred [err:XPTY0004]")); + } + } + } + default: { + XQThrow2(XPath2ErrorException,X("Plus::collapseTreeInternal"), X("The operator add ('+') has been called on invalid operand types [err:XPTY0004]")); + } + } + } + catch(XQException &e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(info); + throw; + } +} + diff --git a/src/operators/Range.cpp b/src/operators/Range.cpp new file mode 100644 index 00000000..5bab2e58 --- /dev/null +++ b/src/operators/Range.cpp @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Range.cpp,v 1.17 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +/*static*/ const XMLCh Range::name[]={ chLatin_t, chLatin_o, chNull }; + +Range::Range(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQOperator(name, args, memMgr) +{ +} + +ASTNode* Range::staticResolution(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + for(VectorOfASTNodes::iterator i = _args.begin(); i != _args.end(); ++i) { + SequenceType *integerType = new (mm) SequenceType(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_INTEGER, + SequenceType::QUESTION_MARK, mm); + integerType->setLocationInfo(this); + + *i = integerType->convertFunctionArg(*i, context, /*numericfunction*/false, *i); + + *i = (*i)->staticResolution(context); + } + + return this; +} + +ASTNode* Range::staticTyping(StaticContext *context) +{ + _src.clear(); + + _src.getStaticType().flags = StaticType::DECIMAL_TYPE; + + for(VectorOfASTNodes::iterator i = _args.begin(); i != _args.end(); ++i) { + *i = (*i)->staticTyping(context); + _src.add((*i)->getStaticResolutionContext()); + + if((*i)->isDateOrTimeAndHasNoTimezone(context)) + _src.implicitTimezoneUsed(true); + } + + if(!_src.isUsed()) { + return constantFold(context); + } + return this; +} + +Result Range::createResult(DynamicContext* context, int flags) const +{ + return new RangeResult(this, context); +} + +Range::RangeResult::RangeResult(const Range *op, DynamicContext *context) + : ResultImpl(op), + _op(op), + _last(0), + _step(context->getItemFactory()->createInteger(1, context)), + _end(0) +{ +} + +Item::Ptr Range::RangeResult::next(DynamicContext *context) +{ + context->testInterrupt(); + + if(_end == NULLRCP) { + // initialise + _last = (const Numeric::Ptr )_op->getArgument(0)->collapseTree(context)->next(context); + _end = (const Numeric::Ptr )_op->getArgument(1)->collapseTree(context)->next(context); + if(_last.isNull() || _end.isNull() || _last->greaterThan(_end, context)) + _last = 0; + } + else if(_last != NULLRCP) { + if(_last->equals((const AnyAtomicType::Ptr)_end, context)) { + _last = 0; + } + else { + _last = _last->add(_step, context); + } + } + + return (const Item::Ptr)_last; +} + +std::string Range::RangeResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/operators/UnaryMinus.cpp b/src/operators/UnaryMinus.cpp new file mode 100644 index 00000000..607335c9 --- /dev/null +++ b/src/operators/UnaryMinus.cpp @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: UnaryMinus.cpp,v 1.13 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include + +/*static*/ const XMLCh UnaryMinus::name[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_m, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_s, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +UnaryMinus::UnaryMinus(bool positive, const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : ArithmeticOperator(name, args, memMgr), + positive_(positive) +{ + assert(_args.size() == 1); +} + +ASTNode* UnaryMinus::staticResolution(StaticContext *context) +{ + return ArithmeticOperator::staticResolution(context); +} + +ASTNode* UnaryMinus::staticTyping(StaticContext *context) +{ + _src.clear(); + + ASTNode *result = ArithmeticOperator::staticTyping(context); + + if(result == this && positive_) { + // constant fold unary plus after type checking + result = *_args.begin(); + } + + return result; +} + +void UnaryMinus::calculateStaticType() +{ + const StaticType &arg0 = _args[0]->getStaticResolutionContext().getStaticType(); + // untypedAtomic will be promoted to xs:double + if(arg0.containsType(StaticType::NUMERIC_TYPE)) { + _src.getStaticType().flags = arg0.flags & StaticType::NUMERIC_TYPE; + } + if(arg0.containsType(StaticType::UNTYPED_ATOMIC_TYPE)) { + _src.getStaticType().flags |= StaticType::DOUBLE_TYPE; + } +} + +Item::Ptr UnaryMinus::execute(const AnyAtomicType::Ptr &atom1, const AnyAtomicType::Ptr &atom2, + DynamicContext *context) const +{ + assert(atom2.isNull()); + + if(atom1.isNull()) return 0; + + // only works on Numeric types + if(atom1->isNumericValue()) { + if(positive_) + return atom1; + else + return ((const Numeric*)atom1.get())->invert(context); + } else { + XQThrow(XPath2ErrorException,X("UnaryMinus::collapseTreeInternal"), + X("An attempt to apply unary minus a non numeric type has occurred [err:XPTY0004]")); + } +} diff --git a/src/operators/Union.cpp b/src/operators/Union.cpp new file mode 100644 index 00000000..ca544d14 --- /dev/null +++ b/src/operators/Union.cpp @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Union.cpp,v 1.15 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include + +#include +#include +#include +#include +#include +#include +#include + +/*static*/ const XMLCh Union::name[]={ XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_i, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_o, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +Union::Union(const VectorOfASTNodes &args, XPath2MemoryManager* memMgr) + : XQOperator(name, args, memMgr), + sortAdded_(false) +{ +} + +ASTNode* Union::staticResolution(StaticContext *context) +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + if(!sortAdded_) { + sortAdded_ = true; + // Wrap ourselves in a document order sort + ASTNode *result = new (mm) XQDocumentOrder(this, mm); + return result->staticResolution(context); + } + + for(VectorOfASTNodes::iterator i = _args.begin(); i != _args.end(); ++i) { + SequenceType *seqType = new (mm) SequenceType(new (mm) SequenceType::ItemType(SequenceType::ItemType::TEST_NODE), + SequenceType::STAR); + seqType->setLocationInfo(this); + + *i = new (mm) XQTreatAs(*i, seqType, mm); + (*i)->setLocationInfo(*i); + + *i = (*i)->staticResolution(context); + } + + return this; +} + +ASTNode* Union::staticTyping(StaticContext *context) +{ + _src.clear(); + + _args[0] = _args[0]->staticTyping(context); + _src.add(_args[0]->getStaticResolutionContext()); + _src.getStaticType() = _args[0]->getStaticResolutionContext().getStaticType(); + + _args[1] = _args[1]->staticTyping(context); + _src.add(_args[1]->getStaticResolutionContext()); + _src.getStaticType().typeUnion(_args[1]->getStaticResolutionContext().getStaticType()); + + return this; +} + +Result Union::createResult(DynamicContext* context, int flags) const +{ + return new UnionResult(this, flags); +} + +Union::UnionResult::UnionResult(const Union *op, int flags) + : ResultImpl(op), + _op(op), + _flags(flags), + _index(0), + _result(0) +{ +} + +Item::Ptr Union::UnionResult::next(DynamicContext *context) +{ + Item::Ptr item = 0; + while(true) { + item = _result->next(context); + + if(item == NULLRCP) { + if(_index > 1) { + _index = 0; + return 0; + } + else { + _result = _op->getArgument(_index++)->collapseTree(context, _flags); + } + } + else { + return item; + } + } + + return 0; +} + +std::string Union::UnionResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/parser/QName.cpp b/src/parser/QName.cpp new file mode 100644 index 00000000..1c5d9e87 --- /dev/null +++ b/src/parser/QName.cpp @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: QName.cpp,v 1.10 2006/11/01 16:37:21 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include + +//Parse qualifiedName into prefix and name +QualifiedName::QualifiedName(const XMLCh* qualifiedName, XPath2MemoryManager* memMgr) : _bDeleteStrings(false) +{ + if(qualifiedName && *qualifiedName) + { + int colonPos = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::indexOf(qualifiedName, XERCES_CPP_NAMESPACE_QUALIFIER chColon, 0); + if(colonPos == -1) { + _name = memMgr->getPooledString(qualifiedName); + _prefix = 0; + } + else { + XMLCh* tempPrefix = new XMLCh[colonPos + 1]; + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::subString(tempPrefix, qualifiedName, 0, colonPos); + tempPrefix[colonPos] = 0; + _prefix = memMgr->getPooledString(tempPrefix); + delete [] tempPrefix; + + unsigned int length = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(qualifiedName); + XMLCh* tempName = new XMLCh[length - colonPos]; + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::subString(tempName, qualifiedName, colonPos + 1, length); + tempName[length - colonPos - 1] = 0; + _name = memMgr->getPooledString(tempName); + delete [] tempName; + } + } + else + { + _name = XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString; + _prefix = 0; + } +} + +QualifiedName::QualifiedName(const XMLCh* qualifiedName) : _bDeleteStrings(true) +{ + if(qualifiedName && *qualifiedName) + { + int colonPos=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::indexOf(qualifiedName, XERCES_CPP_NAMESPACE_QUALIFIER chColon, 0); + if(colonPos == -1) { + _name = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::replicate(qualifiedName); + _prefix = 0; + } + else + { + XMLCh* tempPrefix = new XMLCh[colonPos + 1]; + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::subString(tempPrefix, qualifiedName, 0, colonPos); + tempPrefix[colonPos] = 0; + _prefix = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::replicate(tempPrefix); + delete [] tempPrefix; + + unsigned int length = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(qualifiedName); + XMLCh* tempName = new XMLCh[length - colonPos]; + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::subString(tempName, qualifiedName, colonPos + 1, length); + tempName[length - colonPos - 1] = 0; + _name = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::replicate(tempName); + delete [] tempName; + } + } + else + { + _name = XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString; + _prefix = 0; + _bDeleteStrings = false; + } +} + +QualifiedName::QualifiedName(const XMLCh* prefix, const XMLCh* name) : _bDeleteStrings(false) +{ + _prefix = prefix; + _name = name; +} + +QualifiedName::~QualifiedName() +{ + if(_bDeleteStrings) + { + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::release((XMLCh**)&_prefix); + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::release((XMLCh**)&_name); + } +} + +const XMLCh* QualifiedName::getPrefix() const { + return _prefix; +} + +const XMLCh* QualifiedName::getName() const { + return _name; +} + +const XMLCh* QualifiedName::getFullName(XPath2MemoryManager* memMgr) const { + if(_prefix != NULL) { + XMLCh szColon[2] = {XERCES_CPP_NAMESPACE_QUALIFIER chColon, XERCES_CPP_NAMESPACE_QUALIFIER chNull}; + return XPath2Utils::concatStrings(_prefix, szColon, _name, memMgr); + } + + return memMgr->getPooledString(_name); +} diff --git a/src/parser/XQParser.cpp b/src/parser/XQParser.cpp new file mode 100644 index 00000000..9e8bc9cf --- /dev/null +++ b/src/parser/XQParser.cpp @@ -0,0 +1,6794 @@ +/* A Bison parser, made by GNU Bison 2.1. */ + +/* Skeleton parser for Yacc-like parsing with Bison, + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, when this file is copied by Bison into a + Bison output file, you may use that output file without restriction. + This special exception was added by the Free Software Foundation + in version 1.24 of Bison. */ + +/* Written by Richard Stallman by simplifying the original so called + ``semantic'' parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.1" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 1 + +/* Using locations. */ +#define YYLSP_NEEDED 1 + + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + MYEOF = 0, + _QNAME_ = 258, + _FUNCTION_CALL_ = 259, + _TAG_NAME_ = 260, + _ATTRIBUTE_NAME_ = 261, + _STRING_LITERAL_ = 262, + _VARIABLE_ = 263, + _CHAR_ = 264, + _CHAR_REF_ = 265, + _PREDEFINED_ENTITY_REF_ = 266, + _NCNAME_COLON_STAR_ = 267, + _STAR_COLON_NCNAME_ = 268, + _NCNAME_ = 269, + _PI_TARGET_ = 270, + _NAMED_ATTRIBUTE_CONSTR_ = 271, + _NAMED_ELEMENT_CONSTR_ = 272, + _INTEGER_NUMBER_ = 273, + _DECIMAL_NUMBER_ = 274, + _DOUBLE_NUMBER_ = 275, + _XML_COMMENT_ = 276, + _CDATA_SECTION_ = 277, + _PROCESSING_INSTRUCTION_CONTENT_ = 278, + _NAMED_PROCESSING_INSTRUCTION_CONSTR_ = 279, + _PRAGMA_NAME_ = 280, + _PRAGMA_CONTENT_ = 281, + _XQUERY_COMMENT_ = 282, + _XQUERY_WHITESPACE_ = 283, + _XQUERY_ERROR_ = 284, + _PRAGMA_OPEN_ = 285, + _PRAGMA_CLOSE_ = 286, + _ESCAPE_APOS_ = 287, + _ESCAPE_QUOT_ = 288, + _COMMA_ = 289, + _RETURN_ = 290, + _FOR_ = 291, + _IN_ = 292, + _DOLLAR_SIGN_ = 293, + _AT_KEYWORD_ = 294, + _LET_ = 295, + _COLON_EQ_ = 296, + _WHERE_ = 297, + _BY_ = 298, + _ORDER_ = 299, + _STABLE_ = 300, + _ASCENDING_ = 301, + _DESCENDING_ = 302, + _EMPTY_KEYWORD_ = 303, + _GREATEST_ = 304, + _LEAST_ = 305, + _COLLATION_ = 306, + _SOME_ = 307, + _EVERY_ = 308, + _SATISFIES_ = 309, + _TYPESWITCH_ = 310, + _CASE_ = 311, + _AS_ = 312, + _IF_ = 313, + _THEN_ = 314, + _ELSE_ = 315, + _OR_ = 316, + _AND_ = 317, + _INSTANCE_ = 318, + _OF_ = 319, + _CASTABLE_ = 320, + _TO_ = 321, + _PLUS_ = 322, + _MINUS_ = 323, + _MULTIPLY_ = 324, + _DIV_ = 325, + _INTEGER_DIV_ = 326, + _MOD_ = 327, + _UNION_ = 328, + _VERTICAL_BAR_ = 329, + _INTERSECT_ = 330, + _EXCEPT_ = 331, + _SLASH_ = 332, + _SLASHSLASH_ = 333, + _LBRACK_ = 334, + _RBRACK_ = 335, + _VALIDATE_ = 336, + _MODE_LAX_ = 337, + _MODE_STRICT_ = 338, + _CAST_ = 339, + _TREAT_ = 340, + _EQUALS_ = 341, + _NOT_EQUALS_ = 342, + _LT_ = 343, + _LT_EQUALS_ = 344, + _GT_ = 345, + _GT_EQUALS_ = 346, + _FORTRAN_EQ_ = 347, + _FORTRAN_NE_ = 348, + _FORTRAN_LT_ = 349, + _FORTRAN_LE_ = 350, + _FORTRAN_GT_ = 351, + _FORTRAN_GE_ = 352, + _IS_ = 353, + _LT_LT_ = 354, + _GT_GT_ = 355, + _DOT_ = 356, + _AT_ = 357, + _DOT_DOT_ = 358, + _AXIS_CHILD_ = 359, + _AXIS_DESCENDANT_ = 360, + _AXIS_ATTRIBUTE_ = 361, + _AXIS_SELF_ = 362, + _AXIS_DESCENDANT_OR_SELF_ = 363, + _AXIS_PARENT_ = 364, + _AXIS_NAMESPACE_ = 365, + _STAR_ = 366, + _PROCESSING_INSTRUCTION_LPAR_ = 367, + _COMMENT_LPAR_ = 368, + _TEXT_LPAR_ = 369, + _NODE_LPAR_ = 370, + _LPAR_ = 371, + _RPAR_ = 372, + _START_TAG_OPEN_ = 373, + _EMPTY_TAG_CLOSE_ = 374, + _VALUE_INDICATOR_ = 375, + _END_TAG_OPEN_ = 376, + _TAG_CLOSE_ = 377, + _DOCUMENT_CONSTR_ = 378, + _ELEMENT_CONSTR_ = 379, + _ATTRIBUTE_CONSTR_ = 380, + _TEXT_CONSTR_ = 381, + _PROCESSING_INSTRUCTION_START_ = 382, + _LCURLY_BRACE_ESCAPE_ = 383, + _RCURLY_BRACE_ESCAPE_ = 384, + _OPEN_QUOT_ = 385, + _CLOSE_QUOT_ = 386, + _OPEN_APOS_ = 387, + _CLOSE_APOS_ = 388, + _LBRACE_ = 389, + _RBRACE_ = 390, + _PRESERVE_ = 391, + _STRIP_ = 392, + _NAMESPACE_ = 393, + _EXPR_AS_ = 394, + _EMPTY_ = 395, + _ITEM_ = 396, + _NILLABLE_ = 397, + _DOCUMENT_NODE_LPAR_ = 398, + _ATTRIBUTE_LPAR_ = 399, + _ELEMENT_LPAR_ = 400, + _EXTERNAL_ = 401, + _PROCESSING_INSTRUCTION_CONSTR_ = 402, + _COMMENT_CONSTR_ = 403, + _AXIS_ANCESTOR_OR_SELF_ = 404, + _AXIS_ANCESTOR_ = 405, + _AXIS_FOLLOWING_SIBLING_ = 406, + _AXIS_FOLLOWING_ = 407, + _AXIS_PRECEDING_SIBLING_ = 408, + _AXIS_PRECEDING_ = 409, + _SEMICOLON_ = 410, + _SCHEMA_ELEMENT_LPAR_ = 411, + _SCHEMA_ATTRIBUTE_LPAR_ = 412, + _ORDERED_ = 413, + _UNORDERED_ = 414, + _ORDERING_UNORDERED_ = 415, + _ORDERING_ORDERED_ = 416, + _ZERO_OR_ONE_ = 417, + _ONE_OR_MORE_ = 418, + _ZERO_OR_MORE_ = 419, + _ENCODING_ = 420, + _NO_PRESERVE_ = 421, + _INHERIT_ = 422, + _NO_INHERIT_ = 423, + _DECLARE_ = 424, + _BOUNDARYSPACE_ = 425, + _BASEURI_ = 426, + _CONSTRUCTION_ = 427, + _ORDERING_ = 428, + _DEFAULT_ = 429, + _COPY_NAMESPACES_ = 430, + _VARIABLE_KEYWORD_ = 431, + _OPTION_ = 432, + _XQUERY_ = 433, + _VERSION_ = 434, + _IMPORT_ = 435, + _SCHEMA_ = 436, + _MODULE_ = 437, + _ELEMENT_ = 438, + _FUNCTION_ = 439, + _SCORE_ = 440, + _FTCONTAINS_ = 441, + _WEIGHT_ = 442, + _DECLARE_FT_OPTION_ = 443, + _DOUBLE_VERTICAL_BAR_ = 444, + _DOUBLE_AMPERSAND_ = 445, + _NOT_IN_ = 446, + _BANG_ = 447, + _WINDOW_ = 448, + _DISTANCE_ = 449, + _OCCURS_ = 450, + _TIMES_ = 451, + _SAME_ = 452, + _DIFFERENT_ = 453, + _AT_START_ = 454, + _AT_END_ = 455, + _ENTIRE_CONTENT_ = 456, + _LOWERCASE_ = 457, + _UPPERCASE_ = 458, + _CASE_INSENSITIVE_ = 459, + _CASE_SENSITIVE_ = 460, + _WITH_DIACRITICS_ = 461, + _WITHOUT_DIACRITICS_ = 462, + _DIACRITICS_SENSITIVE_ = 463, + _DIACRITICS_INSENSITIVE_ = 464, + _WITH_STEMMING_ = 465, + _WITHOUT_STEMMING_ = 466, + _WITH_THESAURUS_ = 467, + _WITHOUT_THESAURUS_ = 468, + _RELATIONSHIP_ = 469, + _LEVELS_ = 470, + _WITH_STOP_WORDS_ = 471, + _WITHOUT_STOP_WORDS_ = 472, + _WITH_DEFAULT_STOP_WORDS_ = 473, + _LANGUAGE_ = 474, + _WITH_WILDCARDS_ = 475, + _WITHOUT_WILDCARDS_ = 476, + _ANY_ = 477, + _ANY_WORD_ = 478, + _ALL_ = 479, + _ALL_WORDS_ = 480, + _PHRASE_ = 481, + _EXACTLY_ = 482, + _AT_LEAST_ = 483, + _AT_MOST_ = 484, + _FROM_ = 485, + _WORDS_ = 486, + _SENTENCES_ = 487, + _PARAGRAPHS_ = 488, + _SENTENCE_ = 489, + _PARAGRAPH_ = 490, + _WITHOUT_CONTENT_ = 491, + _EOF_ = 492 + }; +#endif +/* Tokens. */ +#define MYEOF 0 +#define _QNAME_ 258 +#define _FUNCTION_CALL_ 259 +#define _TAG_NAME_ 260 +#define _ATTRIBUTE_NAME_ 261 +#define _STRING_LITERAL_ 262 +#define _VARIABLE_ 263 +#define _CHAR_ 264 +#define _CHAR_REF_ 265 +#define _PREDEFINED_ENTITY_REF_ 266 +#define _NCNAME_COLON_STAR_ 267 +#define _STAR_COLON_NCNAME_ 268 +#define _NCNAME_ 269 +#define _PI_TARGET_ 270 +#define _NAMED_ATTRIBUTE_CONSTR_ 271 +#define _NAMED_ELEMENT_CONSTR_ 272 +#define _INTEGER_NUMBER_ 273 +#define _DECIMAL_NUMBER_ 274 +#define _DOUBLE_NUMBER_ 275 +#define _XML_COMMENT_ 276 +#define _CDATA_SECTION_ 277 +#define _PROCESSING_INSTRUCTION_CONTENT_ 278 +#define _NAMED_PROCESSING_INSTRUCTION_CONSTR_ 279 +#define _PRAGMA_NAME_ 280 +#define _PRAGMA_CONTENT_ 281 +#define _XQUERY_COMMENT_ 282 +#define _XQUERY_WHITESPACE_ 283 +#define _XQUERY_ERROR_ 284 +#define _PRAGMA_OPEN_ 285 +#define _PRAGMA_CLOSE_ 286 +#define _ESCAPE_APOS_ 287 +#define _ESCAPE_QUOT_ 288 +#define _COMMA_ 289 +#define _RETURN_ 290 +#define _FOR_ 291 +#define _IN_ 292 +#define _DOLLAR_SIGN_ 293 +#define _AT_KEYWORD_ 294 +#define _LET_ 295 +#define _COLON_EQ_ 296 +#define _WHERE_ 297 +#define _BY_ 298 +#define _ORDER_ 299 +#define _STABLE_ 300 +#define _ASCENDING_ 301 +#define _DESCENDING_ 302 +#define _EMPTY_KEYWORD_ 303 +#define _GREATEST_ 304 +#define _LEAST_ 305 +#define _COLLATION_ 306 +#define _SOME_ 307 +#define _EVERY_ 308 +#define _SATISFIES_ 309 +#define _TYPESWITCH_ 310 +#define _CASE_ 311 +#define _AS_ 312 +#define _IF_ 313 +#define _THEN_ 314 +#define _ELSE_ 315 +#define _OR_ 316 +#define _AND_ 317 +#define _INSTANCE_ 318 +#define _OF_ 319 +#define _CASTABLE_ 320 +#define _TO_ 321 +#define _PLUS_ 322 +#define _MINUS_ 323 +#define _MULTIPLY_ 324 +#define _DIV_ 325 +#define _INTEGER_DIV_ 326 +#define _MOD_ 327 +#define _UNION_ 328 +#define _VERTICAL_BAR_ 329 +#define _INTERSECT_ 330 +#define _EXCEPT_ 331 +#define _SLASH_ 332 +#define _SLASHSLASH_ 333 +#define _LBRACK_ 334 +#define _RBRACK_ 335 +#define _VALIDATE_ 336 +#define _MODE_LAX_ 337 +#define _MODE_STRICT_ 338 +#define _CAST_ 339 +#define _TREAT_ 340 +#define _EQUALS_ 341 +#define _NOT_EQUALS_ 342 +#define _LT_ 343 +#define _LT_EQUALS_ 344 +#define _GT_ 345 +#define _GT_EQUALS_ 346 +#define _FORTRAN_EQ_ 347 +#define _FORTRAN_NE_ 348 +#define _FORTRAN_LT_ 349 +#define _FORTRAN_LE_ 350 +#define _FORTRAN_GT_ 351 +#define _FORTRAN_GE_ 352 +#define _IS_ 353 +#define _LT_LT_ 354 +#define _GT_GT_ 355 +#define _DOT_ 356 +#define _AT_ 357 +#define _DOT_DOT_ 358 +#define _AXIS_CHILD_ 359 +#define _AXIS_DESCENDANT_ 360 +#define _AXIS_ATTRIBUTE_ 361 +#define _AXIS_SELF_ 362 +#define _AXIS_DESCENDANT_OR_SELF_ 363 +#define _AXIS_PARENT_ 364 +#define _AXIS_NAMESPACE_ 365 +#define _STAR_ 366 +#define _PROCESSING_INSTRUCTION_LPAR_ 367 +#define _COMMENT_LPAR_ 368 +#define _TEXT_LPAR_ 369 +#define _NODE_LPAR_ 370 +#define _LPAR_ 371 +#define _RPAR_ 372 +#define _START_TAG_OPEN_ 373 +#define _EMPTY_TAG_CLOSE_ 374 +#define _VALUE_INDICATOR_ 375 +#define _END_TAG_OPEN_ 376 +#define _TAG_CLOSE_ 377 +#define _DOCUMENT_CONSTR_ 378 +#define _ELEMENT_CONSTR_ 379 +#define _ATTRIBUTE_CONSTR_ 380 +#define _TEXT_CONSTR_ 381 +#define _PROCESSING_INSTRUCTION_START_ 382 +#define _LCURLY_BRACE_ESCAPE_ 383 +#define _RCURLY_BRACE_ESCAPE_ 384 +#define _OPEN_QUOT_ 385 +#define _CLOSE_QUOT_ 386 +#define _OPEN_APOS_ 387 +#define _CLOSE_APOS_ 388 +#define _LBRACE_ 389 +#define _RBRACE_ 390 +#define _PRESERVE_ 391 +#define _STRIP_ 392 +#define _NAMESPACE_ 393 +#define _EXPR_AS_ 394 +#define _EMPTY_ 395 +#define _ITEM_ 396 +#define _NILLABLE_ 397 +#define _DOCUMENT_NODE_LPAR_ 398 +#define _ATTRIBUTE_LPAR_ 399 +#define _ELEMENT_LPAR_ 400 +#define _EXTERNAL_ 401 +#define _PROCESSING_INSTRUCTION_CONSTR_ 402 +#define _COMMENT_CONSTR_ 403 +#define _AXIS_ANCESTOR_OR_SELF_ 404 +#define _AXIS_ANCESTOR_ 405 +#define _AXIS_FOLLOWING_SIBLING_ 406 +#define _AXIS_FOLLOWING_ 407 +#define _AXIS_PRECEDING_SIBLING_ 408 +#define _AXIS_PRECEDING_ 409 +#define _SEMICOLON_ 410 +#define _SCHEMA_ELEMENT_LPAR_ 411 +#define _SCHEMA_ATTRIBUTE_LPAR_ 412 +#define _ORDERED_ 413 +#define _UNORDERED_ 414 +#define _ORDERING_UNORDERED_ 415 +#define _ORDERING_ORDERED_ 416 +#define _ZERO_OR_ONE_ 417 +#define _ONE_OR_MORE_ 418 +#define _ZERO_OR_MORE_ 419 +#define _ENCODING_ 420 +#define _NO_PRESERVE_ 421 +#define _INHERIT_ 422 +#define _NO_INHERIT_ 423 +#define _DECLARE_ 424 +#define _BOUNDARYSPACE_ 425 +#define _BASEURI_ 426 +#define _CONSTRUCTION_ 427 +#define _ORDERING_ 428 +#define _DEFAULT_ 429 +#define _COPY_NAMESPACES_ 430 +#define _VARIABLE_KEYWORD_ 431 +#define _OPTION_ 432 +#define _XQUERY_ 433 +#define _VERSION_ 434 +#define _IMPORT_ 435 +#define _SCHEMA_ 436 +#define _MODULE_ 437 +#define _ELEMENT_ 438 +#define _FUNCTION_ 439 +#define _SCORE_ 440 +#define _FTCONTAINS_ 441 +#define _WEIGHT_ 442 +#define _DECLARE_FT_OPTION_ 443 +#define _DOUBLE_VERTICAL_BAR_ 444 +#define _DOUBLE_AMPERSAND_ 445 +#define _NOT_IN_ 446 +#define _BANG_ 447 +#define _WINDOW_ 448 +#define _DISTANCE_ 449 +#define _OCCURS_ 450 +#define _TIMES_ 451 +#define _SAME_ 452 +#define _DIFFERENT_ 453 +#define _AT_START_ 454 +#define _AT_END_ 455 +#define _ENTIRE_CONTENT_ 456 +#define _LOWERCASE_ 457 +#define _UPPERCASE_ 458 +#define _CASE_INSENSITIVE_ 459 +#define _CASE_SENSITIVE_ 460 +#define _WITH_DIACRITICS_ 461 +#define _WITHOUT_DIACRITICS_ 462 +#define _DIACRITICS_SENSITIVE_ 463 +#define _DIACRITICS_INSENSITIVE_ 464 +#define _WITH_STEMMING_ 465 +#define _WITHOUT_STEMMING_ 466 +#define _WITH_THESAURUS_ 467 +#define _WITHOUT_THESAURUS_ 468 +#define _RELATIONSHIP_ 469 +#define _LEVELS_ 470 +#define _WITH_STOP_WORDS_ 471 +#define _WITHOUT_STOP_WORDS_ 472 +#define _WITH_DEFAULT_STOP_WORDS_ 473 +#define _LANGUAGE_ 474 +#define _WITH_WILDCARDS_ 475 +#define _WITHOUT_WILDCARDS_ 476 +#define _ANY_ 477 +#define _ANY_WORD_ 478 +#define _ALL_ 479 +#define _ALL_WORDS_ 480 +#define _PHRASE_ 481 +#define _EXACTLY_ 482 +#define _AT_LEAST_ 483 +#define _AT_MOST_ 484 +#define _FROM_ 485 +#define _WORDS_ 486 +#define _SENTENCES_ 487 +#define _PARAGRAPHS_ 488 +#define _SENTENCE_ 489 +#define _PARAGRAPH_ 490 +#define _WITHOUT_CONTENT_ 491 +#define _EOF_ 492 + + + + +/* Copy the first part of user declarations. */ +#line 14 "../src/parser/XQParser.y" + + +#if defined(WIN32) && !defined(__CYGWIN__) +// turn off the warnings "switch statement contains 'default' but no 'case' labels" +// "'yyerrlab1' : unreferenced label" +#pragma warning(disable : 4065 4102) +#endif + +#include +#include + +#include "../lexer/XQLexer.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 +#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 "../config/xqilla_config.h" + +#define YYPARSE_PARAM qp +#define YYDEBUG 1 +#define YYERROR_VERBOSE + +// this removes a memory leak occurring when an error is found in the query (we throw an exception from inside +// yyerror, preventing the bison-generated code from cleaning up the memory); by defining this macro we use +// stack-based memory instead of the heap +#define YYSTACK_USE_ALLOCA 1 +#if HAVE_ALLOCA_H +#include +#elif defined __GNUC__ +#undef alloca +#define alloca __builtin_alloca +#elif defined _AIX +#define alloca __alloca +#elif defined _MSC_VER +#include +#else +#include +#ifdef __cplusplus +extern "C" +#endif +void *alloca (size_t); +#endif + +#define QP ((XQParserArgs*)qp) +#define CONTEXT (QP->_context) +#define LANGUAGE (QP->_lexer->getLanguage()) +#define MEMMGR (CONTEXT->getMemoryManager()) + +#define REJECT_NOT_XQUERY(where,pos) if(!QP->_lexer->isXQuery()) { yyerror(LANGUAGE, #where, (pos).first_line, (pos).first_column); } +#define REJECT_NOT_XPATH(where,pos) if(!QP->_lexer->isXPath()) { yyerror(LANGUAGE, #where, (pos).first_line, (pos).first_column); } +#define REJECT_NOT_FULLTEXT(where,pos) if(!QP->_lexer->isFullText()) { yyerror(LANGUAGE, #where, (pos).first_line, (pos).first_column); } + +#define WRAP(pos,object) (wrapForDebug((QP), (object), NULL, (pos).first_line, (pos).first_column)) +#define FNWRAP(pos,name,object) (wrapForDebug((QP),(object),(name),(pos).first_line, (pos).first_column)) + +#define LOCATION(pos,name) LocationInfo name(QP->_query->getFile(), (pos).first_line, (pos).first_column) + +#define BIT_ORDERING_SPECIFIED 0 +#define BIT_BOUNDARY_SPECIFIED 1 +#define BIT_COLLATION_SPECIFIED 2 +#define BIT_BASEURI_SPECIFIED 3 +#define BIT_CONSTRUCTION_SPECIFIED 4 +#define BIT_EMPTYORDERING_SPECIFIED 5 +#define BIT_COPYNAMESPACE_SPECIFIED 6 +#define BIT_DEFAULTELEMENTNAMESPACE_SPECIFIED 7 +#define BIT_DEFAULTFUNCTIONNAMESPACE_SPECIFIED 8 +#define BIT_DECLARE_SECOND_STEP 9 + +#undef yylex +#define yylex QP->_lexer->yylex +#undef yyerror +#define yyerror QP->_lexer->error + +static XMLCh szQuote[]= { XERCES_CPP_NAMESPACE_QUALIFIER chDoubleQuote, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; +static XMLCh szApos[]= { XERCES_CPP_NAMESPACE_QUALIFIER chSingleQuote, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; +static XMLCh szCurlyOpen[]= { XERCES_CPP_NAMESPACE_QUALIFIER chOpenCurly, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; +static XMLCh szCurlyClose[]= { XERCES_CPP_NAMESPACE_QUALIFIER chCloseCurly, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; +static XMLCh szFLWOR[] = { XERCES_CPP_NAMESPACE_QUALIFIER chLatin_F, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_L, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_W, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_O, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_R, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; +static XMLCh sz1_0[]= { XERCES_CPP_NAMESPACE_QUALIFIER chDigit_1, XERCES_CPP_NAMESPACE_QUALIFIER chPeriod, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0, + XERCES_CPP_NAMESPACE_QUALIFIER chNull }; +static XMLCh szTrue[]= { XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; +static XMLCh szFalse[]= { XERCES_CPP_NAMESPACE_QUALIFIER chLatin_F, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +static inline bool isAllSpaces(const XMLCh* str) +{ + while(*str) + { + if(*str!='\r' && *str != '\n' && *str != ' ' && *str != '\t') + return false; + str++; + } + return true; +} + +static inline XQNav* getNavigation(ASTNode *possibleNav, XPath2MemoryManager * expr) +{ + ASTNode* originalObj=possibleNav; + if((unsigned int)possibleNav->getType()==ASTNode::DEBUG_HOOK) + possibleNav=((XQDebugHook*)possibleNav)->m_impl; + if(possibleNav->getType()==ASTNode::NAVIGATION) + return (XQNav*)possibleNav; + else + { + XQNav* nav=new (expr) XQNav(expr); + nav->addStep(originalObj); + return nav; + } +} + +static inline VectorOfASTNodes packageArgs(ASTNode *arg1Impl, ASTNode *arg2Impl, XPath2MemoryManager* memMgr) +{ + VectorOfASTNodes args=VectorOfASTNodes(2,(ASTNode*)NULL,XQillaAllocator(memMgr)); + args[0]=arg1Impl; + args[1]=arg2Impl; + + return args; +} + +static void merge_strings(DynamicContext* context, VectorOfASTNodes* vec, XMLCh* toBeAdded) +{ + if(vec->size()>0 && vec->back()!=0 && vec->back()->getType()==ASTNode::LITERAL) + { + XQLiteral *lit = (XQLiteral*)vec->back(); + const XMLCh* string=lit->getItemConstructor()->createItem(context)->asString(context); + string=XPath2Utils::concatStrings(string,toBeAdded,context->getMemoryManager()); + + AnyAtomicTypeConstructor *ic = new (context->getMemoryManager()) + AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + string, AnyAtomicType::STRING); + lit->setItemConstructor(ic); + } + else + { + if(vec->size()>0 && vec->back()==0) + vec->pop_back(); + AnyAtomicTypeConstructor *ic = new (context->getMemoryManager()) + AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + toBeAdded, AnyAtomicType::STRING); + + vec->push_back(new (context->getMemoryManager()) + XQLiteral(ic, context->getMemoryManager())); + } +} + +template +TYPE *wrapForDebug(XQParserArgs *qp, TYPE* pObjToWrap, + const XMLCh* fnName, unsigned int line, unsigned int column) +{ + if(pObjToWrap->getLine() == 0) + pObjToWrap->setLocationInfo(QP->_query->getFile(), line, column); + return pObjToWrap; +} + +template<> +ASTNode *wrapForDebug(XQParserArgs *qp, ASTNode* pObjToWrap, + const XMLCh* fnName, unsigned int line, unsigned int column) +{ + if(pObjToWrap->getLine() == 0) + pObjToWrap->setLocationInfo(QP->_query->getFile(), line, column); + + if(!CONTEXT->isDebuggingEnabled() && !CONTEXT->getDebugCallback()) + return pObjToWrap; + if(fnName==NULL && (unsigned int)pObjToWrap->getType()==ASTNode::DEBUG_HOOK) + return pObjToWrap; + return new (MEMMGR) XQDebugHook(QP->_query->getFile(), line, column, pObjToWrap, fnName, MEMMGR); +} + +namespace XQParser { + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) +typedef int YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + +#if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED) +typedef struct YYLTYPE +{ + int first_line; + int first_column; + int last_line; + int last_column; +} YYLTYPE; +# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ +# define YYLTYPE_IS_DECLARED 1 +# define YYLTYPE_IS_TRIVIAL 1 +#endif + + +/* Copy the second part of user declarations. */ + + +/* Line 219 of yacc.c. */ +#line 840 "../src/parser/XQParser.cpp" + +#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) +# define YYSIZE_T __SIZE_TYPE__ +#endif +#if ! defined (YYSIZE_T) && defined (size_t) +# define YYSIZE_T size_t +#endif +#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus)) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +#endif +#if ! defined (YYSIZE_T) +# define YYSIZE_T unsigned int +#endif + +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +#if ! defined (yyoverflow) || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# else +# define YYSTACK_ALLOC alloca +# if defined (__STDC__) || defined (__cplusplus) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYINCLUDED_STDLIB_H +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1) +# endif +# ifdef __cplusplus +extern "C" { +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \ + && (defined (__STDC__) || defined (__cplusplus))) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \ + && (defined (__STDC__) || defined (__cplusplus))) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifdef __cplusplus +} +# endif +# endif +#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */ + + +#if (! defined (yyoverflow) \ + && (! defined (__cplusplus) \ + || (defined (YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIVIAL \ + && defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + short int yyss; + YYSTYPE yyvs; + YYLTYPE yyls; +}; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (short int) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ + + 2 * YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined (__GNUC__) && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (0) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) + +#endif + +#if defined (__STDC__) || defined (__cplusplus) + typedef signed char yysigned_char; +#else + typedef short int yysigned_char; +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 11 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 2651 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 238 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 180 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 465 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 829 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 492 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const unsigned char yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const unsigned short int yyprhs[] = +{ + 0, 0, 3, 6, 9, 11, 13, 18, 25, 28, + 31, 38, 39, 43, 47, 51, 55, 59, 63, 67, + 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, + 91, 97, 101, 105, 111, 117, 122, 125, 129, 133, + 139, 145, 151, 153, 155, 157, 159, 164, 168, 173, + 179, 183, 188, 191, 195, 199, 203, 211, 218, 223, + 227, 235, 242, 249, 255, 259, 263, 270, 276, 284, + 291, 298, 304, 312, 319, 323, 325, 329, 332, 336, + 338, 342, 344, 346, 348, 350, 352, 354, 360, 365, + 370, 374, 377, 379, 381, 383, 386, 390, 392, 397, + 403, 409, 416, 422, 429, 436, 444, 448, 452, 455, + 459, 461, 466, 472, 478, 485, 489, 492, 496, 501, + 505, 507, 511, 517, 518, 520, 522, 523, 526, 529, + 534, 539, 543, 545, 550, 556, 567, 576, 579, 581, + 586, 594, 603, 607, 609, 613, 615, 619, 623, 627, + 631, 635, 639, 643, 647, 651, 655, 659, 663, 667, + 671, 675, 677, 681, 686, 688, 692, 694, 698, 702, + 704, 708, 712, 716, 720, 722, 726, 730, 732, 736, + 740, 742, 747, 749, 754, 756, 761, 763, 768, 770, + 773, 776, 778, 780, 782, 784, 789, 795, 801, 805, + 810, 812, 815, 820, 824, 826, 829, 832, 834, 838, + 842, 844, 846, 848, 851, 854, 857, 859, 861, 863, + 865, 867, 869, 871, 873, 875, 878, 880, 883, 885, + 887, 889, 891, 893, 895, 897, 899, 901, 903, 905, + 907, 909, 911, 914, 915, 920, 922, 924, 926, 928, + 930, 932, 934, 936, 938, 940, 942, 944, 946, 949, + 953, 956, 958, 963, 968, 971, 975, 979, 981, 983, + 985, 987, 989, 991, 996, 1005, 1006, 1011, 1015, 1019, + 1020, 1023, 1026, 1029, 1032, 1033, 1036, 1039, 1042, 1045, + 1046, 1049, 1052, 1055, 1058, 1061, 1063, 1065, 1067, 1069, + 1071, 1075, 1077, 1079, 1081, 1083, 1085, 1087, 1089, 1094, + 1099, 1103, 1111, 1118, 1120, 1125, 1129, 1137, 1144, 1149, + 1154, 1159, 1163, 1171, 1178, 1181, 1183, 1186, 1189, 1191, + 1195, 1197, 1199, 1201, 1203, 1205, 1209, 1211, 1213, 1215, + 1217, 1219, 1221, 1223, 1225, 1227, 1229, 1232, 1235, 1239, + 1243, 1246, 1249, 1252, 1256, 1260, 1263, 1267, 1273, 1275, + 1277, 1281, 1283, 1286, 1290, 1296, 1303, 1305, 1307, 1311, + 1313, 1315, 1317, 1319, 1321, 1326, 1329, 1330, 1333, 1336, + 1340, 1342, 1346, 1348, 1352, 1354, 1357, 1359, 1363, 1365, + 1368, 1371, 1374, 1377, 1382, 1384, 1388, 1392, 1396, 1399, + 1402, 1404, 1406, 1408, 1410, 1412, 1414, 1416, 1418, 1420, + 1422, 1424, 1426, 1428, 1430, 1432, 1434, 1436, 1438, 1440, + 1442, 1445, 1448, 1454, 1460, 1462, 1463, 1467, 1470, 1475, + 1480, 1487, 1491, 1493, 1496, 1497, 1500, 1503, 1507, 1509, + 1513, 1516, 1519, 1522, 1524, 1526, 1527, 1529, 1531, 1533, + 1535, 1537, 1540, 1543, 1546, 1551, 1553, 1555, 1557, 1559, + 1561, 1564, 1566, 1568, 1570, 1572 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const short int yyrhs[] = +{ + 239, 0, -1, 240, 241, -1, 240, 242, -1, 241, + -1, 242, -1, 178, 179, 7, 247, -1, 178, 179, + 7, 165, 7, 247, -1, 244, 270, -1, 243, 244, + -1, 182, 138, 14, 86, 384, 247, -1, -1, 244, + 245, 247, -1, 244, 246, 247, -1, 244, 248, 247, + -1, 244, 250, 247, -1, 244, 264, 247, -1, 244, + 266, 247, -1, 244, 251, 247, -1, 244, 252, 247, + -1, 249, -1, 258, -1, 259, -1, 265, -1, 253, + -1, 254, -1, 255, -1, 260, -1, 263, -1, 155, + -1, 169, 138, 14, 86, 384, -1, 169, 170, 136, + -1, 169, 170, 137, -1, 169, 174, 183, 138, 384, + -1, 169, 174, 184, 138, 384, -1, 169, 177, 3, + 7, -1, 188, 394, -1, 169, 173, 161, -1, 169, + 173, 160, -1, 169, 174, 44, 48, 49, -1, 169, + 174, 44, 48, 50, -1, 169, 175, 256, 34, 257, + -1, 136, -1, 166, -1, 167, -1, 168, -1, 169, + 174, 51, 384, -1, 169, 171, 384, -1, 180, 181, + 262, 384, -1, 180, 181, 262, 384, 261, -1, 180, + 181, 384, -1, 180, 181, 384, 261, -1, 39, 384, + -1, 261, 34, 384, -1, 138, 14, 86, -1, 174, + 183, 138, -1, 180, 182, 138, 14, 86, 384, 261, + -1, 180, 182, 138, 14, 86, 384, -1, 180, 182, + 384, 261, -1, 180, 182, 384, -1, 169, 176, 38, + 8, 362, 41, 272, -1, 169, 176, 38, 8, 41, + 272, -1, 169, 176, 38, 8, 362, 146, -1, 169, + 176, 38, 8, 146, -1, 169, 172, 136, -1, 169, + 172, 137, -1, 169, 184, 4, 267, 117, 269, -1, + 169, 184, 4, 117, 269, -1, 169, 184, 4, 267, + 139, 363, 269, -1, 169, 184, 4, 139, 363, 269, + -1, 169, 184, 4, 267, 117, 146, -1, 169, 184, + 4, 117, 146, -1, 169, 184, 4, 267, 139, 363, + 146, -1, 169, 184, 4, 139, 363, 146, -1, 267, + 34, 268, -1, 268, -1, 38, 8, 362, -1, 38, + 8, -1, 134, 271, 135, -1, 271, -1, 271, 34, + 272, -1, 272, -1, 273, -1, 290, -1, 293, -1, + 296, -1, 297, -1, 274, 284, 285, 35, 272, -1, + 274, 284, 35, 272, -1, 274, 285, 35, 272, -1, + 274, 35, 272, -1, 274, 275, -1, 275, -1, 276, + -1, 281, -1, 36, 277, -1, 277, 34, 278, -1, + 278, -1, 38, 8, 37, 272, -1, 38, 8, 280, + 37, 272, -1, 38, 8, 279, 37, 272, -1, 38, + 8, 279, 280, 37, 272, -1, 38, 8, 362, 37, + 272, -1, 38, 8, 362, 280, 37, 272, -1, 38, + 8, 362, 279, 37, 272, -1, 38, 8, 362, 279, + 280, 37, 272, -1, 39, 38, 8, -1, 185, 38, + 8, -1, 40, 282, -1, 282, 34, 283, -1, 283, + -1, 38, 8, 41, 272, -1, 38, 8, 280, 41, + 272, -1, 38, 8, 362, 41, 272, -1, 38, 8, + 362, 280, 41, 272, -1, 280, 41, 272, -1, 42, + 272, -1, 44, 43, 286, -1, 45, 44, 43, 286, + -1, 286, 34, 287, -1, 287, -1, 272, 288, 289, + -1, 272, 288, 289, 51, 384, -1, -1, 46, -1, + 47, -1, -1, 48, 49, -1, 48, 50, -1, 52, + 291, 54, 272, -1, 53, 291, 54, 272, -1, 291, + 34, 292, -1, 292, -1, 38, 8, 37, 272, -1, + 38, 8, 362, 37, 272, -1, 55, 116, 271, 117, + 294, 174, 38, 8, 35, 272, -1, 55, 116, 271, + 117, 294, 174, 35, 272, -1, 294, 295, -1, 295, + -1, 56, 363, 35, 272, -1, 56, 38, 8, 57, + 363, 35, 272, -1, 58, 116, 271, 117, 59, 272, + 60, 272, -1, 297, 61, 298, -1, 298, -1, 298, + 62, 299, -1, 299, -1, 300, 86, 300, -1, 300, + 87, 300, -1, 300, 88, 300, -1, 300, 89, 300, + -1, 300, 90, 300, -1, 300, 91, 300, -1, 300, + 92, 300, -1, 300, 93, 300, -1, 300, 94, 300, + -1, 300, 95, 300, -1, 300, 96, 300, -1, 300, + 97, 300, -1, 300, 98, 300, -1, 300, 99, 300, + -1, 300, 100, 300, -1, 300, -1, 301, 186, 385, + -1, 301, 186, 385, 412, -1, 301, -1, 302, 66, + 302, -1, 302, -1, 302, 67, 303, -1, 302, 68, + 303, -1, 303, -1, 303, 69, 304, -1, 303, 70, + 304, -1, 303, 71, 304, -1, 303, 72, 304, -1, + 304, -1, 304, 74, 305, -1, 304, 73, 305, -1, + 305, -1, 305, 75, 306, -1, 305, 76, 306, -1, + 306, -1, 307, 63, 64, 363, -1, 307, -1, 308, + 85, 57, 363, -1, 308, -1, 309, 65, 57, 361, + -1, 309, -1, 310, 84, 57, 361, -1, 310, -1, + 68, 310, -1, 67, 310, -1, 311, -1, 312, -1, + 316, -1, 313, -1, 81, 134, 271, 135, -1, 81, + 82, 134, 271, 135, -1, 81, 83, 134, 271, 135, + -1, 314, 134, 135, -1, 314, 134, 271, 135, -1, + 315, -1, 314, 315, -1, 30, 25, 26, 31, -1, + 30, 25, 31, -1, 77, -1, 77, 317, -1, 78, + 317, -1, 317, -1, 317, 77, 318, -1, 317, 78, + 318, -1, 318, -1, 319, -1, 329, -1, 320, 330, + -1, 323, 330, -1, 321, 326, -1, 322, -1, 104, + -1, 105, -1, 106, -1, 107, -1, 108, -1, 151, + -1, 152, -1, 110, -1, 102, 326, -1, 326, -1, + 324, 326, -1, 325, -1, 109, -1, 150, -1, 153, + -1, 154, -1, 149, -1, 103, -1, 367, -1, 327, + -1, 417, -1, 328, -1, 111, -1, 12, -1, 13, + -1, 331, 330, -1, -1, 330, 79, 271, 80, -1, + 332, -1, 334, -1, 335, -1, 336, -1, 339, -1, + 341, -1, 337, -1, 338, -1, 333, -1, 416, -1, + 413, -1, 414, -1, 415, -1, 38, 8, -1, 116, + 271, 117, -1, 116, 117, -1, 101, -1, 158, 134, + 271, 135, -1, 159, 134, 271, 135, -1, 4, 117, + -1, 4, 340, 117, -1, 340, 34, 272, -1, 272, + -1, 342, -1, 353, -1, 343, -1, 350, -1, 351, + -1, 118, 5, 344, 119, -1, 118, 5, 344, 122, + 348, 121, 5, 122, -1, -1, 344, 6, 120, 345, + -1, 130, 346, 131, -1, 132, 347, 133, -1, -1, + 346, 269, -1, 346, 33, -1, 346, 9, -1, 346, + 349, -1, -1, 347, 269, -1, 347, 32, -1, 347, + 9, -1, 347, 349, -1, -1, 348, 342, -1, 348, + 9, -1, 348, 352, -1, 348, 269, -1, 348, 349, + -1, 11, -1, 10, -1, 128, -1, 129, -1, 21, + -1, 127, 15, 23, -1, 22, -1, 354, -1, 355, + -1, 357, -1, 358, -1, 359, -1, 360, -1, 123, + 134, 271, 135, -1, 17, 134, 356, 135, -1, 17, + 134, 135, -1, 124, 134, 271, 135, 134, 356, 135, + -1, 124, 134, 271, 135, 134, 135, -1, 271, -1, + 16, 134, 271, 135, -1, 16, 134, 135, -1, 125, + 134, 271, 135, 134, 271, 135, -1, 125, 134, 271, + 135, 134, 135, -1, 126, 134, 271, 135, -1, 148, + 134, 271, 135, -1, 24, 134, 271, 135, -1, 24, + 134, 135, -1, 147, 134, 271, 135, 134, 271, 135, + -1, 147, 134, 271, 135, 134, 135, -1, 366, 162, + -1, 366, -1, 57, 363, -1, 365, 364, -1, 365, + -1, 140, 116, 117, -1, 164, -1, 163, -1, 162, + -1, 366, -1, 367, -1, 141, 116, 117, -1, 417, + -1, 369, -1, 377, -1, 373, -1, 379, -1, 375, + -1, 372, -1, 371, -1, 370, -1, 368, -1, 115, + 117, -1, 143, 117, -1, 143, 377, 117, -1, 143, + 379, 117, -1, 114, 117, -1, 113, 117, -1, 112, + 117, -1, 112, 14, 117, -1, 112, 7, 117, -1, + 144, 117, -1, 144, 374, 117, -1, 144, 374, 34, + 383, 117, -1, 381, -1, 111, -1, 157, 376, 117, + -1, 381, -1, 145, 117, -1, 145, 378, 117, -1, + 145, 378, 34, 383, 117, -1, 145, 378, 34, 383, + 142, 117, -1, 382, -1, 111, -1, 156, 380, 117, + -1, 382, -1, 417, -1, 417, -1, 417, -1, 7, + -1, 387, 386, 187, 414, -1, 387, 386, -1, -1, + 386, 394, -1, 386, 393, -1, 387, 189, 388, -1, + 388, -1, 388, 190, 389, -1, 389, -1, 389, 191, + 390, -1, 390, -1, 192, 391, -1, 391, -1, 116, + 385, 117, -1, 392, -1, 332, 408, -1, 334, 408, + -1, 336, 408, -1, 339, 408, -1, 134, 271, 135, + 408, -1, 161, -1, 193, 304, 410, -1, 194, 409, + 410, -1, 195, 409, 196, -1, 197, 411, -1, 198, + 411, -1, 199, -1, 200, -1, 201, -1, 395, -1, + 396, -1, 397, -1, 398, -1, 401, -1, 406, -1, + 407, -1, 202, -1, 203, -1, 205, -1, 204, -1, + 206, -1, 207, -1, 208, -1, 209, -1, 210, -1, + 211, -1, 212, 400, -1, 212, 174, -1, 212, 116, + 400, 399, 117, -1, 212, 116, 174, 399, 117, -1, + 213, -1, -1, 399, 34, 400, -1, 39, 416, -1, + 39, 416, 214, 416, -1, 39, 416, 409, 215, -1, + 39, 416, 214, 416, 409, 215, -1, 216, 403, 402, + -1, 217, -1, 218, 402, -1, -1, 402, 405, -1, + 39, 416, -1, 116, 404, 117, -1, 416, -1, 404, + 34, 416, -1, 73, 403, -1, 76, 403, -1, 219, + 416, -1, 220, -1, 221, -1, -1, 222, -1, 223, + -1, 224, -1, 225, -1, 226, -1, 227, 304, -1, + 228, 304, -1, 229, 304, -1, 230, 304, 66, 304, + -1, 231, -1, 232, -1, 233, -1, 234, -1, 235, + -1, 236, 304, -1, 18, -1, 19, -1, 20, -1, + 7, -1, 3, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const unsigned short int yyrline[] = +{ + 0, 563, 563, 564, 565, 566, 571, 578, 612, 619, + 626, 638, 640, 645, 650, 655, 660, 664, 671, 675, + 689, 690, 691, 692, 693, 694, 695, 700, 701, 706, + 711, 725, 734, 747, 756, 769, 793, 802, 811, 824, + 833, 846, 860, 864, 872, 876, 884, 906, 919, 937, + 955, 967, 982, 987, 996, 1000, 1008, 1023, 1038, 1052, + 1070, 1077, 1085, 1092, 1104, 1113, 1127, 1133, 1139, 1145, + 1151, 1157, 1163, 1169, 1179, 1184, 1194, 1198, 1206, 1214, + 1222, 1240, 1248, 1249, 1250, 1251, 1252, 1257, 1261, 1265, + 1269, 1276, 1282, 1286, 1287, 1293, 1300, 1304, 1312, 1316, + 1321, 1325, 1329, 1333, 1337, 1341, 1349, 1359, 1371, 1380, + 1385, 1393, 1397, 1401, 1405, 1409, 1416, 1426, 1432, 1442, + 1447, 1457, 1461, 1478, 1479, 1481, 1487, 1496, 1498, 1505, + 1509, 1516, 1520, 1528, 1532, 1540, 1547, 1557, 1562, 1571, + 1575, 1583, 1591, 1605, 1610, 1624, 1634, 1638, 1642, 1646, + 1650, 1654, 1658, 1662, 1666, 1670, 1674, 1678, 1682, 1686, + 1690, 1694, 1699, 1705, 1711, 1716, 1720, 1725, 1729, 1733, + 1738, 1742, 1746, 1750, 1754, 1759, 1763, 1767, 1772, 1776, + 1780, 1785, 1789, 1794, 1800, 1805, 1809, 1814, 1818, 1823, + 1829, 1835, 1840, 1841, 1842, 1850, 1854, 1858, 1866, 1873, + 1883, 1884, 1890, 1908, 1930, 1945, 1960, 1981, 1986, 1992, + 2005, 2010, 2011, 2016, 2020, 2029, 2041, 2052, 2056, 2060, + 2064, 2068, 2072, 2076, 2080, 2089, 2097, 2115, 2123, 2132, + 2136, 2140, 2144, 2148, 2156, 2168, 2169, 2174, 2181, 2186, + 2193, 2200, 2211, 2221, 2224, 2234, 2235, 2236, 2237, 2238, + 2239, 2240, 2241, 2246, 2247, 2252, 2253, 2254, 2260, 2272, + 2286, 2294, 2302, 2312, 2322, 2327, 2334, 2339, 2348, 2352, + 2362, 2363, 2364, 2369, 2381, 2423, 2426, 2458, 2462, 2472, + 2475, 2483, 2488, 2493, 2504, 2507, 2515, 2520, 2525, 2541, + 2544, 2565, 2594, 2613, 2635, 2654, 2655, 2656, 2660, 2669, + 2684, 2708, 2727, 2728, 2729, 2730, 2731, 2732, 2737, 2745, + 2759, 2771, 2780, 2791, 2796, 2809, 2821, 2829, 2840, 2848, + 2856, 2867, 2878, 2884, 2894, 2901, 2912, 2922, 2929, 2936, + 2945, 2947, 2949, 2955, 2959, 2964, 2972, 2988, 2989, 2990, + 2991, 2992, 2993, 2994, 2995, 2996, 3001, 3011, 3017, 3026, + 3039, 3049, 3059, 3065, 3071, 3081, 3087, 3093, 3103, 3104, + 3112, 3122, 3127, 3133, 3139, 3145, 3157, 3158, 3166, 3176, + 3181, 3186, 3191, 3196, 3208, 3220, 3235, 3238, 3242, 3252, + 3263, 3268, 3279, 3284, 3288, 3293, 3297, 3302, 3306, 3311, + 3315, 3319, 3323, 3327, 3341, 3345, 3349, 3353, 3358, 3362, + 3366, 3370, 3374, 3388, 3389, 3390, 3391, 3392, 3393, 3394, + 3402, 3406, 3410, 3414, 3425, 3429, 3433, 3437, 3445, 3449, + 3459, 3463, 3467, 3471, 3475, 3483, 3485, 3492, 3496, 3500, + 3504, 3514, 3518, 3522, 3530, 3532, 3540, 3544, 3551, 3555, + 3563, 3567, 3575, 3583, 3587, 3596, 3599, 3603, 3607, 3611, + 3615, 3626, 3632, 3638, 3644, 3654, 3658, 3662, 3670, 3674, + 3682, 3690, 3703, 3716, 3730, 3743 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "\"\"", "error", "$undefined", "\"\"", + "\"(\"", "\"\"", "\"\"", "\"'...'\"", + "\"\"", "\"\"", "\"&#XXX;\"", + "\"\"", "\":*\"", "\"*:\"", + "\"\"", "\"\"", + "\"attribute {\"", "\"element {\"", "\"\"", + "\"\"", "\"\"", "\"\"", + "\"\"", "\"...?>\"", "\"processing-instruction {\"", + "\"\"", "\"\"", "\"(: comment :)\"", + "_XQUERY_WHITESPACE_", "_XQUERY_ERROR_", "\"(#\"", "\"#)\"", "\"''\"", + "\"\\\"\\\"\"", "\",\"", "\"return\"", "\"for\"", "\"in\"", "\"$\"", + "\"at\"", "\"let\"", "\":=\"", "\"where\"", "\"by\"", "\"order\"", + "\"stable\"", "\"ascending\"", "\"descending\"", "\"empty\"", + "\"greatest\"", "\"least\"", "\"collation\"", "\"some\"", "\"every\"", + "\"satisfies\"", "\"typeswitch\"", "\"case\"", "\"as\"", "\"if\"", + "\"then\"", "\"else\"", "\"or\"", "\"and\"", "\"instance\"", "\"of\"", + "\"castable\"", "\"to\"", "\"+ (arithmetic operator)\"", + "\"- (arithmetic operator)\"", "\"* (arithmetic operator)\"", "\"div\"", + "\"idiv\"", "\"mod\"", "\"union\"", "\"|\"", "\"intersect\"", + "\"except\"", "\"/\"", "\"//\"", "\"[\"", "\"]\"", "\"validate\"", + "\"lax\"", "\"strict\"", "\"cast\"", "\"treat\"", + "\"= (comparison operator)\"", "\"!=\"", "\"< (comparison operator)\"", + "\"<=\"", "\"> (comparison operator)\"", "\">=\"", "\"eq\"", "\"ne\"", + "\"lt\"", "\"le\"", "\"gt\"", "\"ge\"", "\"is\"", "\"<<\"", "\">>\"", + "\".\"", "\"@\"", "\"..\"", "\"child::\"", "\"descendant::\"", + "\"attribute::\"", "\"self::\"", "\"descendant-or-self::\"", + "\"parent::\"", "\"namespace::\"", "\"* (wildcard)\"", + "\"processing-instruction(\"", "\"comment(\"", "\"text(\"", "\"node(\"", + "\"(\"", "\")\"", "\"<\"", "\"/>\"", "\"=\"", "\">\"", "\" /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yysymprint (stderr, \ + Type, Value, Location); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +yy_stack_print (short int *bottom, short int *top) +#else +static void +yy_stack_print (bottom, top) + short int *bottom; + short int *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (/* Nothing. */; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +yy_reduce_print (int yyrule) +#else +static void +yy_reduce_print (yyrule) + int yyrule; +#endif +{ + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ", + yyrule - 1, yylno); + /* Print the symbols being reduced, and their result. */ + for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) + YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]); + YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]); +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (Rule); \ +} while (0) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined (__GLIBC__) && defined (_STRING_H) +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +static YYSIZE_T +# if defined (__STDC__) || defined (__cplusplus) +yystrlen (const char *yystr) +# else +yystrlen (yystr) + const char *yystr; +# endif +{ + const char *yys = yystr; + + while (*yys++ != '\0') + continue; + + return yys - yystr - 1; +} +# endif +# endif + +# ifndef yystpcpy +# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +static char * +# if defined (__STDC__) || defined (__cplusplus) +yystpcpy (char *yydest, const char *yysrc) +# else +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +# endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + size_t yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +#endif /* YYERROR_VERBOSE */ + + + +#if YYDEBUG +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp) +#else +static void +yysymprint (yyoutput, yytype, yyvaluep, yylocationp) + FILE *yyoutput; + int yytype; + YYSTYPE *yyvaluep; + YYLTYPE *yylocationp; +#endif +{ + /* Pacify ``unused variable'' warnings. */ + (void) yyvaluep; + (void) yylocationp; + + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + YY_LOCATION_PRINT (yyoutput, *yylocationp); + YYFPRINTF (yyoutput, ": "); + +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# endif + switch (yytype) + { + default: + break; + } + YYFPRINTF (yyoutput, ")"); +} + +#endif /* ! YYDEBUG */ +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +#if defined (__STDC__) || defined (__cplusplus) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp) +#else +static void +yydestruct (yymsg, yytype, yyvaluep, yylocationp) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; + YYLTYPE *yylocationp; +#endif +{ + /* Pacify ``unused variable'' warnings. */ + (void) yyvaluep; + (void) yylocationp; + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +# if defined (__STDC__) || defined (__cplusplus) +int yyparse (void *YYPARSE_PARAM); +# else +int yyparse (); +# endif +#else /* ! YYPARSE_PARAM */ +#if defined (__STDC__) || defined (__cplusplus) +int yyparse (void); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +# if defined (__STDC__) || defined (__cplusplus) +int yyparse (void *YYPARSE_PARAM) +# else +int yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +# endif +#else /* ! YYPARSE_PARAM */ +#if defined (__STDC__) || defined (__cplusplus) +int +yyparse (void) +#else +int +yyparse () + ; +#endif +#endif +{ + /* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; +/* Location data for the look-ahead symbol. */ +YYLTYPE yylloc; + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + short int yyssa[YYINITDEPTH]; + short int *yyss = yyssa; + short int *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + /* The location stack. */ + YYLTYPE yylsa[YYINITDEPTH]; + YYLTYPE *yyls = yylsa; + YYLTYPE *yylsp; + /* The locations where the error started and ended. */ + YYLTYPE yyerror_range[2]; + +#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + YYLTYPE yyloc; + + /* When reducing, the number of symbols on the RHS of the reduced + rule. */ + int yylen; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + yylsp = yyls; +#if YYLTYPE_IS_TRIVIAL + /* Initialize the default location before parsing starts. */ + yylloc.first_line = yylloc.last_line = 1; + yylloc.first_column = yylloc.last_column = 0; +#endif + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. so pushing a state here evens the stacks. + */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + short int *yyss1 = yyss; + YYLTYPE *yyls1 = yyls; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yyls1, yysize * sizeof (*yylsp), + &yystacksize); + yyls = yyls1; + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + short int *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + YYSTACK_RELOCATE (yyls); +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + yylsp = yyls + yysize - 1; + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + +/* Do appropriate processing given the current state. */ +/* Read a look-ahead token if we need one and don't already have one. */ +/* yyresume: */ + + /* First try to decide what to do without reference to look-ahead token. */ + + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the token being shifted unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + *++yyvsp = yylval; + *++yylsp = yylloc; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + yystate = yyn; + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + /* Default location. */ + YYLLOC_DEFAULT (yyloc, yylsp - yylen, yylen); + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 6: +#line 572 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(VersionDecl, (yylsp[-3])); + + if(!XPath2Utils::equals((yyvsp[-1].str),sz1_0)) + yyerror((yylsp[-2]), "This XQuery processor only supports version 1.0 of the specs [err:XQST0031]"); + } + break; + + case 7: +#line 579 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(VersionDecl, (yylsp[-5])); + + if(!XPath2Utils::equals((yyvsp[-3].str),sz1_0)) + yyerror((yylsp[-4]), "This XQuery processor only supports version 1.0 of the specs [err:XQST0031]"); + bool bValidEnc=false; + if(((yyvsp[-1].str)[0] >= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_A && (yyvsp[-1].str)[0] <= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_Z) || + ((yyvsp[-1].str)[0] >= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a && (yyvsp[-1].str)[0] <= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_z)) + { + bValidEnc=true; + int nLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen((yyvsp[-1].str)); + for(int i=1;i= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_A && (yyvsp[-1].str)[i] <= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_Z) || + ((yyvsp[-1].str)[i] >= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a && (yyvsp[-1].str)[i] <= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_z) || + ((yyvsp[-1].str)[i] >= XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0 && (yyvsp[-1].str)[i] <= XERCES_CPP_NAMESPACE_QUALIFIER chDigit_9) || + (yyvsp[-1].str)[i] == XERCES_CPP_NAMESPACE_QUALIFIER chPeriod || + (yyvsp[-1].str)[i] == XERCES_CPP_NAMESPACE_QUALIFIER chDash) + { + continue; + } + bValidEnc=false; + break; + } + } + if(!bValidEnc) + yyerror((yylsp[-1]), "The specified encoding does not conform to the definition of EncName [err:XQST0087]"); + // TODO: store the encoding somewhere + } + break; + + case 8: +#line 613 "../src/parser/XQParser.y" + { + } + break; + + case 9: +#line 620 "../src/parser/XQParser.y" + { + } + break; + + case 10: +#line 627 "../src/parser/XQParser.y" + { + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen((yyvsp[-1].str))==0) + yyerror((yylsp[-1]), "The literal that specifies the namespace of a module must not be of zero length [err:XQST0088]"); + QP->_query->setIsLibraryModule(); + QP->_query->setModuleTargetNamespace((yyvsp[-1].str)); + CONTEXT->setNamespaceBinding((yyvsp[-3].str),(yyvsp[-1].str)); + } + break; + + case 12: +#line 641 "../src/parser/XQParser.y" + { + if(QP->_flags.get(BIT_DECLARE_SECOND_STEP)) + yyerror((yylsp[-1]), "Prolog contains a setter declaration after a variable, function or option declaration"); + } + break; + + case 13: +#line 646 "../src/parser/XQParser.y" + { + if(QP->_flags.get(BIT_DECLARE_SECOND_STEP)) + yyerror((yylsp[-1]), "Prolog contains an import declaration after a variable, function or option declaration"); + } + break; + + case 14: +#line 651 "../src/parser/XQParser.y" + { + if(QP->_flags.get(BIT_DECLARE_SECOND_STEP)) + yyerror((yylsp[-1]), "Prolog contains a namespace declaration after a variable, function or option declaration"); + } + break; + + case 15: +#line 656 "../src/parser/XQParser.y" + { + if(QP->_flags.get(BIT_DECLARE_SECOND_STEP)) + yyerror((yylsp[-1]), "Prolog contains a default namespace declaration after a variable, function or option declaration"); + } + break; + + case 16: +#line 661 "../src/parser/XQParser.y" + { + QP->_flags.set(BIT_DECLARE_SECOND_STEP); + } + break; + + case 17: +#line 665 "../src/parser/XQParser.y" + { + QP->_flags.set(BIT_DECLARE_SECOND_STEP); + XQUserFunction* decl=(yyvsp[-1].functDecl); + CONTEXT->addCustomFunction(decl); + QP->_query->addFunction(decl); + } + break; + + case 18: +#line 672 "../src/parser/XQParser.y" + { + QP->_flags.set(BIT_DECLARE_SECOND_STEP); + } + break; + + case 19: +#line 676 "../src/parser/XQParser.y" + { + QP->_flags.set(BIT_DECLARE_SECOND_STEP); + } + break; + + case 30: +#line 712 "../src/parser/XQParser.y" + { + + REJECT_NOT_XQUERY(NamespaceDecl, (yylsp[-4])); + // if it has already bound, report an error + if(QP->_namespaceDecls.containsKey((yyvsp[-2].str))) + yyerror((yylsp[-2]), "Namespace prefix has already been bound to a namespace [err:XQST0033]"); + QP->_namespaceDecls.put((yyvsp[-2].str),NULL); + CONTEXT->setNamespaceBinding((yyvsp[-2].str),(yyvsp[0].str)); + } + break; + + case 31: +#line 726 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(BoundarySpaceDecl, (yylsp[-2])); + + if(QP->_flags.get(BIT_BOUNDARY_SPECIFIED)) + yyerror((yylsp[-2]), "Prolog contains more than one boundary space declaration [err:XQST0068]"); + QP->_flags.set(BIT_BOUNDARY_SPECIFIED); + CONTEXT->setPreserveBoundarySpace(true); + } + break; + + case 32: +#line 735 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(BoundarySpaceDecl, (yylsp[-2])); + + if(QP->_flags.get(BIT_BOUNDARY_SPECIFIED)) + yyerror((yylsp[-2]), "Prolog contains more than one boundary space declaration [err:XQST0068]"); + QP->_flags.set(BIT_BOUNDARY_SPECIFIED); + CONTEXT->setPreserveBoundarySpace(false); + } + break; + + case 33: +#line 748 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(DefaultNamespaceDecl, (yylsp[-4])); + + if(QP->_flags.get(BIT_DEFAULTELEMENTNAMESPACE_SPECIFIED)) + yyerror((yylsp[-4]), "Prolog contains more than one default element namespace declaration [err:XQST0066]"); + QP->_flags.set(BIT_DEFAULTELEMENTNAMESPACE_SPECIFIED); + CONTEXT->setDefaultElementAndTypeNS((yyvsp[0].str)); + } + break; + + case 34: +#line 757 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(DefaultNamespaceDecl, (yylsp[-4])); + + if(QP->_flags.get(BIT_DEFAULTFUNCTIONNAMESPACE_SPECIFIED)) + yyerror((yylsp[-4]), "Prolog contains more than one default function namespace declaration [err:XQST0066]"); + QP->_flags.set(BIT_DEFAULTFUNCTIONNAMESPACE_SPECIFIED); + CONTEXT->setDefaultFuncNS((yyvsp[0].str)); + } + break; + + case 35: +#line 770 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(OptionDecl, (yylsp[-3])); + + // validate the QName + QualifiedName qName((yyvsp[-1].str)); + const XMLCh* prefix=qName.getPrefix(); + if(prefix==NULL || *prefix==0) + yyerror((yylsp[-1]), "The option name must have a prefix [err:XPST0081]"); + + try + { + LOCATION((yylsp[-1]), loc); + CONTEXT->getUriBoundToPrefix(prefix, &loc); + } + catch(NamespaceLookupException&) + { + yyerror((yylsp[-1]), "The option name is using an undefined namespace prefix [err:XPST0081]"); + } + } + break; + + case 36: +#line 794 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(FTOptionDecl, (yylsp[-1])); + REJECT_NOT_FULLTEXT(FTOptionDecl, (yylsp[-1])); + } + break; + + case 37: +#line 803 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(OrderingModeDecl, (yylsp[-2])); + + if(QP->_flags.get(BIT_ORDERING_SPECIFIED)) + yyerror((yylsp[-2]), "Prolog contains more than one ordering mode declaration [err:XQST0065]"); + QP->_flags.set(BIT_ORDERING_SPECIFIED); + CONTEXT->setNodeSetOrdering(StaticContext::ORDERING_ORDERED); + } + break; + + case 38: +#line 812 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(OrderingModeDecl, (yylsp[-2])); + + if(QP->_flags.get(BIT_ORDERING_SPECIFIED)) + yyerror((yylsp[-2]), "Prolog contains more than one ordering mode declaration [err:XQST0065]"); + QP->_flags.set(BIT_ORDERING_SPECIFIED); + CONTEXT->setNodeSetOrdering(StaticContext::ORDERING_UNORDERED); + } + break; + + case 39: +#line 825 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(EmptyOrderDecl, (yylsp[-4])); + + if(QP->_flags.get(BIT_EMPTYORDERING_SPECIFIED)) + yyerror((yylsp[-4]), "Prolog contains more than one empty ordering mode declaration [err:XQST0069]"); + QP->_flags.set(BIT_EMPTYORDERING_SPECIFIED); + CONTEXT->setDefaultFLWOROrderingMode(StaticContext::FLWOR_ORDER_EMPTY_GREATEST); + } + break; + + case 40: +#line 834 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(EmptyOrderDecl, (yylsp[-4])); + + if(QP->_flags.get(BIT_EMPTYORDERING_SPECIFIED)) + yyerror((yylsp[-4]), "Prolog contains more than one empty ordering mode declaration [err:XQST0069]"); + QP->_flags.set(BIT_EMPTYORDERING_SPECIFIED); + CONTEXT->setDefaultFLWOROrderingMode(StaticContext::FLWOR_ORDER_EMPTY_LEAST); + } + break; + + case 41: +#line 847 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(CopyNamespacesDecl, (yylsp[-4])); + + if(QP->_flags.get(BIT_COPYNAMESPACE_SPECIFIED)) + yyerror((yylsp[-4]), "Prolog contains more than one copy namespace declaration [err:XQST0055]"); + QP->_flags.set(BIT_COPYNAMESPACE_SPECIFIED); + CONTEXT->setPreserveNamespaces(XPath2Utils::equals((yyvsp[-2].str),szTrue)); + CONTEXT->setInheritNamespaces(XPath2Utils::equals((yyvsp[0].str),szTrue)); + } + break; + + case 42: +#line 861 "../src/parser/XQParser.y" + { + (yyval.str) = szTrue; + } + break; + + case 43: +#line 865 "../src/parser/XQParser.y" + { + (yyval.str) = szFalse; + } + break; + + case 44: +#line 873 "../src/parser/XQParser.y" + { + (yyval.str) = szTrue; + } + break; + + case 45: +#line 877 "../src/parser/XQParser.y" + { + (yyval.str) = szFalse; + } + break; + + case 46: +#line 885 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(DefaultCollationDecl, (yylsp[-3])); + + if(QP->_flags.get(BIT_COLLATION_SPECIFIED)) + yyerror((yylsp[-3]), "Prolog contains more than one default collation declaration [err:XQST0038]"); + QP->_flags.set(BIT_COLLATION_SPECIFIED); + try + { + LOCATION((yylsp[0]), loc); + CONTEXT->getCollation((yyvsp[0].str), &loc); + } + catch(ContextException&) + { + yyerror((yylsp[0]), "The specified collation does not exist [err:XQST0038]"); + } + CONTEXT->setDefaultCollation((yyvsp[0].str)); + } + break; + + case 47: +#line 907 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(BaseURIDecl, (yylsp[-2])); + + if(QP->_flags.get(BIT_BASEURI_SPECIFIED)) + yyerror((yylsp[-2]), "Prolog contains more than one base URI declaration [err:XQST0032]"); + QP->_flags.set(BIT_BASEURI_SPECIFIED); + CONTEXT->setBaseURI((yyvsp[0].str)); + } + break; + + case 48: +#line 920 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(SchemaImport, (yylsp[-3])); + + if(XPath2Utils::equals((yyvsp[-1].str), XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString)) + CONTEXT->setDefaultElementAndTypeNS((yyvsp[0].str)); + else if(XPath2Utils::equals((yyvsp[0].str), XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString)) + yyerror((yylsp[-3]), "A schema that has no target namespace cannot be bound to non-empty prefix [err:XQST0057]"); + else + CONTEXT->setNamespaceBinding((yyvsp[-1].str),(yyvsp[0].str)); + try { + CONTEXT->addSchemaLocation((yyvsp[0].str),NULL); + } catch(XQException& e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(QP->_query->getFile(), (yylsp[-3]).first_line, (yylsp[-3]).first_column); + throw e; + } + } + break; + + case 49: +#line 938 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(SchemaImport, (yylsp[-4])); + + if(XPath2Utils::equals((yyvsp[-2].str), XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString)) + CONTEXT->setDefaultElementAndTypeNS((yyvsp[-1].str)); + else if(XPath2Utils::equals((yyvsp[-1].str), XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString)) + yyerror((yylsp[-4]), "A schema that has no target namespace cannot be bound to non-empty prefix [err:XQST0057]"); + else + CONTEXT->setNamespaceBinding((yyvsp[-2].str),(yyvsp[-1].str)); + try { + CONTEXT->addSchemaLocation((yyvsp[-1].str),(yyvsp[0].stringList)); + } catch(XQException& e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(QP->_query->getFile(), (yylsp[-4]).first_line, (yylsp[-4]).first_column); + throw e; + } + } + break; + + case 50: +#line 956 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(SchemaImport, (yylsp[-2])); + + try { + CONTEXT->addSchemaLocation((yyvsp[0].str),NULL); + } catch(XQException& e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(QP->_query->getFile(), (yylsp[-2]).first_line, (yylsp[-2]).first_column); + throw e; + } + } + break; + + case 51: +#line 968 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(SchemaImport, (yylsp[-3])); + + try { + CONTEXT->addSchemaLocation((yyvsp[-1].str),(yyvsp[0].stringList)); + } catch(XQException& e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(QP->_query->getFile(), (yylsp[-3]).first_line, (yylsp[-3]).first_column); + throw e; + } + } + break; + + case 52: +#line 983 "../src/parser/XQParser.y" + { + (yyval.stringList) = new (MEMMGR) VectorOfStrings(XQillaAllocator(MEMMGR)); + (yyval.stringList)->push_back((yyvsp[0].str)); + } + break; + + case 53: +#line 988 "../src/parser/XQParser.y" + { + (yyvsp[-2].stringList)->push_back((yyvsp[0].str)); + (yyval.stringList) = (yyvsp[-2].stringList); + } + break; + + case 54: +#line 997 "../src/parser/XQParser.y" + { + (yyval.str) = (yyvsp[-1].str); + } + break; + + case 55: +#line 1001 "../src/parser/XQParser.y" + { + (yyval.str) = (XMLCh*)XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString; + } + break; + + case 56: +#line 1009 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(ModuleImport, (yylsp[-6])); + + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen((yyvsp[-1].str))==0) + yyerror((yylsp[-1]), "The literal that specifies the target namespace in a module import must not be of zero length [err:XQST0088]"); + CONTEXT->setNamespaceBinding((yyvsp[-3].str),(yyvsp[-1].str)); + try { + QP->_query->importModule((yyvsp[-1].str),(yyvsp[0].stringList),CONTEXT); + } catch(XQException& e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(QP->_query->getFile(), (yylsp[-6]).first_line, (yylsp[-6]).first_column); + throw e; + } + } + break; + + case 57: +#line 1024 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(ModuleImport, (yylsp[-5])); + + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen((yyvsp[0].str))==0) + yyerror((yylsp[0]), "The literal that specifies the target namespace in a module import must not be of zero length [err:XQST0088]"); + CONTEXT->setNamespaceBinding((yyvsp[-2].str),(yyvsp[0].str)); + try { + QP->_query->importModule((yyvsp[0].str),NULL,CONTEXT); + } catch(XQException& e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(QP->_query->getFile(), (yylsp[-5]).first_line, (yylsp[-5]).first_column); + throw e; + } + } + break; + + case 58: +#line 1039 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(ModuleImport, (yylsp[-3])); + + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen((yyvsp[-1].str))==0) + yyerror((yylsp[-1]), "The literal that specifies the target namespace in a module import must not be of zero length [err:XQST0088]"); + try { + QP->_query->importModule((yyvsp[-1].str),(yyvsp[0].stringList),CONTEXT); + } catch(XQException& e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(QP->_query->getFile(), (yylsp[-3]).first_line, (yylsp[-3]).first_column); + throw e; + } + } + break; + + case 59: +#line 1053 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(ModuleImport, (yylsp[-2])); + + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen((yyvsp[0].str))==0) + yyerror((yylsp[0]), "The literal that specifies the target namespace in a module import must not be of zero length [err:XQST0088]"); + try { + QP->_query->importModule((yyvsp[0].str),NULL,CONTEXT); + } catch(XQException& e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(QP->_query->getFile(), (yylsp[-2]).first_line, (yylsp[-2]).first_column); + throw e; + } + } + break; + + case 60: +#line 1071 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(VarDecl, (yylsp[-6])); + + XQGlobalVariable* var=WRAP((yylsp[-6]), new (MEMMGR) XQGlobalVariable((yyvsp[-3].str),(yyvsp[-2].sequenceType), WRAP((yylsp[0]), (yyvsp[0].astNode)),MEMMGR)); + QP->_query->addVariable(var); + } + break; + + case 61: +#line 1078 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(VarDecl, (yylsp[-5])); + + XQGlobalVariable* var=WRAP((yylsp[-5]), new (MEMMGR) XQGlobalVariable((yyvsp[-2].str),WRAP((yylsp[-5]), new (MEMMGR) SequenceType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ANYTHING), SequenceType::STAR)), + WRAP((yylsp[0]), (yyvsp[0].astNode)),MEMMGR)); + QP->_query->addVariable(var); + } + break; + + case 62: +#line 1086 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(VarDecl, (yylsp[-5])); + + XQGlobalVariable* var=WRAP((yylsp[-5]), new (MEMMGR) XQGlobalVariable((yyvsp[-2].str),(yyvsp[-1].sequenceType),NULL,MEMMGR)); + QP->_query->addVariable(var); + } + break; + + case 63: +#line 1093 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(VarDecl, (yylsp[-4])); + + XQGlobalVariable* var=WRAP((yylsp[-4]), new (MEMMGR) XQGlobalVariable((yyvsp[-1].str),WRAP((yylsp[-4]), new (MEMMGR) SequenceType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ANYTHING), SequenceType::STAR)), + NULL,MEMMGR)); + QP->_query->addVariable(var); + } + break; + + case 64: +#line 1105 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(ConstructionDecl, (yylsp[-2])); + + if(QP->_flags.get(BIT_CONSTRUCTION_SPECIFIED)) + yyerror((yylsp[-2]), "Prolog contains more than one construction mode declaration [err:XQST0067]"); + QP->_flags.set(BIT_CONSTRUCTION_SPECIFIED); + CONTEXT->setConstructionMode(StaticContext::CONSTRUCTION_MODE_PRESERVE); + } + break; + + case 65: +#line 1114 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(ConstructionDecl, (yylsp[-2])); + + if(QP->_flags.get(BIT_CONSTRUCTION_SPECIFIED)) + yyerror((yylsp[-2]), "Prolog contains more than one construction mode declaration [err:XQST0067]"); + QP->_flags.set(BIT_CONSTRUCTION_SPECIFIED); + CONTEXT->setConstructionMode(StaticContext::CONSTRUCTION_MODE_STRIP); + } + break; + + case 66: +#line 1128 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(FunctionDecl, (yylsp[-5])); + + (yyval.functDecl) = WRAP((yylsp[-5]), new (MEMMGR) XQUserFunction((yyvsp[-3].str),(yyvsp[-2].funcParams),WRAP((yylsp[0]), (yyvsp[0].astNode)),NULL, CONTEXT)); + } + break; + + case 67: +#line 1134 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(FunctionDecl, (yylsp[-4])); + + (yyval.functDecl) = WRAP((yylsp[-4]), new (MEMMGR) XQUserFunction((yyvsp[-2].str),NULL,WRAP((yylsp[0]), (yyvsp[0].astNode)),NULL, CONTEXT)); + } + break; + + case 68: +#line 1140 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(FunctionDecl, (yylsp[-6])); + + (yyval.functDecl) = WRAP((yylsp[-6]), new (MEMMGR) XQUserFunction((yyvsp[-4].str),(yyvsp[-3].funcParams),WRAP((yylsp[0]), (yyvsp[0].astNode)),(yyvsp[-1].sequenceType), CONTEXT)); + } + break; + + case 69: +#line 1146 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(FunctionDecl, (yylsp[-5])); + + (yyval.functDecl) = WRAP((yylsp[-5]), new (MEMMGR) XQUserFunction((yyvsp[-3].str),NULL,WRAP((yylsp[0]), (yyvsp[0].astNode)),(yyvsp[-1].sequenceType), CONTEXT)); + } + break; + + case 70: +#line 1152 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(FunctionDecl, (yylsp[-5])); + + (yyval.functDecl) = WRAP((yylsp[-5]), new (MEMMGR) XQUserFunction((yyvsp[-3].str),(yyvsp[-2].funcParams),NULL,NULL, CONTEXT)); + } + break; + + case 71: +#line 1158 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(FunctionDecl, (yylsp[-4])); + + (yyval.functDecl) = WRAP((yylsp[-4]), new (MEMMGR) XQUserFunction((yyvsp[-2].str),NULL,NULL,NULL, CONTEXT)); + } + break; + + case 72: +#line 1164 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(FunctionDecl, (yylsp[-6])); + + (yyval.functDecl) = WRAP((yylsp[-6]), new (MEMMGR) XQUserFunction((yyvsp[-4].str),(yyvsp[-3].funcParams),NULL,(yyvsp[-1].sequenceType), CONTEXT)); + } + break; + + case 73: +#line 1170 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(FunctionDecl, (yylsp[-5])); + + (yyval.functDecl) = WRAP((yylsp[-5]), new (MEMMGR) XQUserFunction((yyvsp[-3].str),NULL,NULL,(yyvsp[-1].sequenceType), CONTEXT)); + } + break; + + case 74: +#line 1180 "../src/parser/XQParser.y" + { + (yyvsp[-2].funcParams)->push_back((yyvsp[0].funcParam)); + (yyval.funcParams) = (yyvsp[-2].funcParams); + } + break; + + case 75: +#line 1185 "../src/parser/XQParser.y" + { + XQUserFunction::VectorOfFunctionParameters* paramList = new (MEMMGR) XQUserFunction::VectorOfFunctionParameters(XQillaAllocator(MEMMGR)); + paramList->push_back((yyvsp[0].funcParam)); + (yyval.funcParams) = paramList; + } + break; + + case 76: +#line 1195 "../src/parser/XQParser.y" + { + (yyval.funcParam) = new (MEMMGR) XQUserFunction::XQFunctionParameter((yyvsp[-1].str),(yyvsp[0].sequenceType),MEMMGR); + } + break; + + case 77: +#line 1199 "../src/parser/XQParser.y" + { + (yyval.funcParam) = new (MEMMGR) XQUserFunction::XQFunctionParameter((yyvsp[0].str),WRAP((yylsp[-1]), new (MEMMGR) SequenceType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ANYTHING), SequenceType::STAR)) ,MEMMGR); + } + break; + + case 78: +#line 1207 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), (yyvsp[-1].astNode)); + } + break; + + case 79: +#line 1215 "../src/parser/XQParser.y" + { + QP->_query->setQueryBody((yyvsp[0].astNode)); + } + break; + + case 80: +#line 1223 "../src/parser/XQParser.y" + { + ASTNode* prevExpr=(yyvsp[-2].astNode); + if((unsigned int)prevExpr->getType()==ASTNode::DEBUG_HOOK) + prevExpr=((XQDebugHook*)prevExpr)->m_impl; + if(prevExpr->getType()==ASTNode::PARENTHESIZED) + { + ((XQParenthesizedExpr *)prevExpr)->addItem((yyvsp[0].astNode)); + (yyval.astNode) = (yyvsp[-2].astNode); + } + else + { + XQParenthesizedExpr *dis = new (MEMMGR) XQParenthesizedExpr(MEMMGR); + dis->addItem((yyvsp[-2].astNode)); + dis->addItem((yyvsp[0].astNode)); + (yyval.astNode) = dis; + } + } + break; + + case 81: +#line 1241 "../src/parser/XQParser.y" + { + (yyval.astNode) = (yyvsp[0].astNode); + } + break; + + case 87: +#line 1258 "../src/parser/XQParser.y" + { + (yyval.astNode) = FNWRAP((yylsp[-4]), szFLWOR, new (MEMMGR) XQFLWOR((yyvsp[-4].variableBindingList), (yyvsp[-3].astNode), (yyvsp[-2].sort), WRAP((yylsp[-1]), (yyvsp[0].astNode)), MEMMGR)); + } + break; + + case 88: +#line 1262 "../src/parser/XQParser.y" + { + (yyval.astNode) = FNWRAP((yylsp[-3]), szFLWOR, new (MEMMGR) XQFLWOR((yyvsp[-3].variableBindingList), (yyvsp[-2].astNode), NULL, WRAP((yylsp[-1]), (yyvsp[0].astNode)), MEMMGR)); + } + break; + + case 89: +#line 1266 "../src/parser/XQParser.y" + { + (yyval.astNode) = FNWRAP((yylsp[-3]), szFLWOR, new (MEMMGR) XQFLWOR((yyvsp[-3].variableBindingList), NULL, (yyvsp[-2].sort), WRAP((yylsp[-1]), (yyvsp[0].astNode)), MEMMGR)); + } + break; + + case 90: +#line 1270 "../src/parser/XQParser.y" + { + (yyval.astNode) = FNWRAP((yylsp[-2]), szFLWOR, new (MEMMGR) XQFLWOR((yyvsp[-2].variableBindingList), NULL, NULL, WRAP((yylsp[-1]), (yyvsp[0].astNode)), MEMMGR)); + } + break; + + case 91: +#line 1277 "../src/parser/XQParser.y" + { + (yyval.variableBindingList) = (yyvsp[-1].variableBindingList); + for (VectorOfVariableBinding::iterator it = (yyvsp[0].variableBindingList)->begin(); it != (yyvsp[0].variableBindingList)->end (); ++it) + (yyvsp[-1].variableBindingList)->push_back(*it); + } + break; + + case 95: +#line 1294 "../src/parser/XQParser.y" + { + (yyval.variableBindingList) = (yyvsp[0].variableBindingList); + } + break; + + case 96: +#line 1301 "../src/parser/XQParser.y" + { + (yyval.variableBindingList)->push_back((yyvsp[0].variableBinding)); + } + break; + + case 97: +#line 1305 "../src/parser/XQParser.y" + { + (yyval.variableBindingList) = new (MEMMGR) VectorOfVariableBinding(XQillaAllocator(MEMMGR)); + (yyval.variableBindingList)->push_back((yyvsp[0].variableBinding)); + } + break; + + case 98: +#line 1313 "../src/parser/XQParser.y" + { + (yyval.variableBinding) = WRAP((yylsp[-3]), new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::forBinding,(yyvsp[-2].str),(yyvsp[0].astNode))); + } + break; + + case 99: +#line 1317 "../src/parser/XQParser.y" + { + // TBD FTScoreVar + (yyval.variableBinding) = WRAP((yylsp[-4]), new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::forBinding,(yyvsp[-3].str),(yyvsp[0].astNode))); + } + break; + + case 100: +#line 1322 "../src/parser/XQParser.y" + { + (yyval.variableBinding) = WRAP((yylsp[-4]), new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::forBinding,(yyvsp[-3].str),(yyvsp[0].astNode),(yyvsp[-2].str))); + } + break; + + case 101: +#line 1326 "../src/parser/XQParser.y" + { + (yyval.variableBinding) = WRAP((yylsp[-5]), new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::forBinding,(yyvsp[-4].str),(yyvsp[0].astNode),(yyvsp[-3].str))); + } + break; + + case 102: +#line 1330 "../src/parser/XQParser.y" + { + (yyval.variableBinding) = WRAP((yylsp[-4]), new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::forBinding,(yyvsp[-3].str),(yyvsp[0].astNode),NULL,(yyvsp[-2].sequenceType))); + } + break; + + case 103: +#line 1334 "../src/parser/XQParser.y" + { + (yyval.variableBinding) = WRAP((yylsp[-5]), new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::forBinding,(yyvsp[-4].str),(yyvsp[0].astNode),NULL,(yyvsp[-3].sequenceType))); + } + break; + + case 104: +#line 1338 "../src/parser/XQParser.y" + { + (yyval.variableBinding) = WRAP((yylsp[-5]), new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::forBinding,(yyvsp[-4].str),(yyvsp[0].astNode),(yyvsp[-2].str),(yyvsp[-3].sequenceType))); + } + break; + + case 105: +#line 1342 "../src/parser/XQParser.y" + { + (yyval.variableBinding) = WRAP((yylsp[-6]), new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::forBinding,(yyvsp[-5].str),(yyvsp[0].astNode),(yyvsp[-3].str),(yyvsp[-4].sequenceType))); + } + break; + + case 106: +#line 1350 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(PositionalVar, (yylsp[-2])); + + (yyval.str) = (yyvsp[0].str); + } + break; + + case 107: +#line 1360 "../src/parser/XQParser.y" + { + REJECT_NOT_FULLTEXT(FTScoreVar, (yylsp[-2])); + + (yyval.str) = (yyvsp[0].str); + } + break; + + case 108: +#line 1372 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(LetClause, (yylsp[-1])); + + (yyval.variableBindingList) = (yyvsp[0].variableBindingList); + } + break; + + case 109: +#line 1381 "../src/parser/XQParser.y" + { + (yyvsp[-2].variableBindingList)->push_back((yyvsp[0].variableBinding)); + (yyval.variableBindingList) = (yyvsp[-2].variableBindingList); + } + break; + + case 110: +#line 1386 "../src/parser/XQParser.y" + { + (yyval.variableBindingList) = new (MEMMGR) VectorOfVariableBinding(XQillaAllocator(MEMMGR)); + (yyval.variableBindingList)->push_back((yyvsp[0].variableBinding)); + } + break; + + case 111: +#line 1394 "../src/parser/XQParser.y" + { + (yyval.variableBinding) = WRAP((yylsp[-3]), new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::letBinding,(yyvsp[-2].str),(yyvsp[0].astNode))); + } + break; + + case 112: +#line 1398 "../src/parser/XQParser.y" + { + (yyval.variableBinding) = WRAP((yylsp[-4]), new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::letBinding,(yyvsp[-3].str),(yyvsp[0].astNode))); + } + break; + + case 113: +#line 1402 "../src/parser/XQParser.y" + { + (yyval.variableBinding) = WRAP((yylsp[-4]), new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::letBinding,(yyvsp[-3].str),(yyvsp[0].astNode),NULL,(yyvsp[-2].sequenceType))); + } + break; + + case 114: +#line 1406 "../src/parser/XQParser.y" + { + (yyval.variableBinding) = WRAP((yylsp[-5]), new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::letBinding,(yyvsp[-4].str),(yyvsp[0].astNode),NULL,(yyvsp[-3].sequenceType))); + } + break; + + case 115: +#line 1410 "../src/parser/XQParser.y" + { + } + break; + + case 116: +#line 1417 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(WhereClause, (yylsp[-1])); + + (yyval.astNode) = WRAP((yylsp[-1]), (yyvsp[0].astNode)); + } + break; + + case 117: +#line 1427 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(OrderByClause, (yylsp[-2])); + + (yyval.sort)=new (MEMMGR) XQSort(XQSort::unstable,(yyvsp[0].sortSpecList)); + } + break; + + case 118: +#line 1433 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(OrderByClause, (yylsp[-3])); + + (yyval.sort)=new (MEMMGR) XQSort(XQSort::stable,(yyvsp[0].sortSpecList)); + } + break; + + case 119: +#line 1443 "../src/parser/XQParser.y" + { + (yyvsp[-2].sortSpecList)->push_back((yyvsp[0].sortSpec)); + (yyval.sortSpecList) = (yyvsp[-2].sortSpecList); + } + break; + + case 120: +#line 1448 "../src/parser/XQParser.y" + { + (yyval.sortSpecList) = new (MEMMGR) XQSort::VectorOfSortSpec(XQillaAllocator(MEMMGR)); + (yyval.sortSpecList)->push_back((yyvsp[0].sortSpec)); + } + break; + + case 121: +#line 1458 "../src/parser/XQParser.y" + { + (yyval.sortSpec) = WRAP((yylsp[-2]), new (MEMMGR) XQSort::SortSpec((yyvsp[-2].astNode),(yyvsp[-1].sortModifier)+(yyvsp[0].sortModifier),NULL)); + } + break; + + case 122: +#line 1462 "../src/parser/XQParser.y" + { + try + { + LOCATION((yylsp[0]), loc); + CONTEXT->getCollation((yyvsp[0].str), &loc); + } + catch(ContextException&) + { + yyerror((yylsp[0]), "The specified collation does not exist [err:XQST0076]"); + } + (yyval.sortSpec) = WRAP((yylsp[-4]), new (MEMMGR) XQSort::SortSpec((yyvsp[-4].astNode),(yyvsp[-3].sortModifier)+(yyvsp[-2].sortModifier),(yyvsp[0].str))); + } + break; + + case 123: +#line 1478 "../src/parser/XQParser.y" + { (yyval.sortModifier) = XQSort::SortSpec::ascending; } + break; + + case 124: +#line 1480 "../src/parser/XQParser.y" + { (yyval.sortModifier) = XQSort::SortSpec::ascending; } + break; + + case 125: +#line 1482 "../src/parser/XQParser.y" + { (yyval.sortModifier) = XQSort::SortSpec::descending; } + break; + + case 126: +#line 1487 "../src/parser/XQParser.y" + { + switch(CONTEXT->getDefaultFLWOROrderingMode()) + { + case StaticContext::FLWOR_ORDER_EMPTY_LEAST: + (yyval.sortModifier) = XQSort::SortSpec::empty_least; break; + case StaticContext::FLWOR_ORDER_EMPTY_GREATEST: + (yyval.sortModifier) = XQSort::SortSpec::empty_greatest; break; + } + } + break; + + case 127: +#line 1497 "../src/parser/XQParser.y" + { (yyval.sortModifier) = XQSort::SortSpec::empty_greatest; } + break; + + case 128: +#line 1499 "../src/parser/XQParser.y" + { (yyval.sortModifier) = XQSort::SortSpec::empty_least; } + break; + + case 129: +#line 1506 "../src/parser/XQParser.y" + { + (yyval.astNode) = new (MEMMGR) XQQuantified(XQQuantified::some, (yyvsp[-2].variableBindingList), WRAP((yylsp[-1]), (yyvsp[0].astNode)), MEMMGR); + } + break; + + case 130: +#line 1510 "../src/parser/XQParser.y" + { + (yyval.astNode) = new (MEMMGR) XQQuantified(XQQuantified::every, (yyvsp[-2].variableBindingList), WRAP((yylsp[-1]), (yyvsp[0].astNode)), MEMMGR); + } + break; + + case 131: +#line 1517 "../src/parser/XQParser.y" + { + (yyval.variableBindingList)->push_back((yyvsp[0].variableBinding)); + } + break; + + case 132: +#line 1521 "../src/parser/XQParser.y" + { + (yyval.variableBindingList) = new (MEMMGR) VectorOfVariableBinding(XQillaAllocator(MEMMGR)); + (yyval.variableBindingList)->push_back((yyvsp[0].variableBinding)); + } + break; + + case 133: +#line 1529 "../src/parser/XQParser.y" + { + (yyval.variableBinding) = WRAP((yylsp[-3]), new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::forBinding,(yyvsp[-2].str),(yyvsp[0].astNode))); + } + break; + + case 134: +#line 1533 "../src/parser/XQParser.y" + { + (yyval.variableBinding) = WRAP((yylsp[-4]), new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::forBinding,(yyvsp[-3].str),(yyvsp[0].astNode),NULL,(yyvsp[-2].sequenceType))); + } + break; + + case 135: +#line 1541 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(TypeswitchExpr, (yylsp[-9])); + + XQTypeswitch::Clause* defClause=WRAP((yylsp[-4]), new (MEMMGR) XQTypeswitch::Clause(NULL,(yyvsp[0].astNode),MEMMGR->getPooledString((yyvsp[-2].str)))); + (yyval.astNode) = new (MEMMGR) XQTypeswitch( WRAP((yylsp[-9]), (yyvsp[-7].astNode)), (yyvsp[-5].clauseList), defClause, MEMMGR); + } + break; + + case 136: +#line 1548 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(TypeswitchExpr, (yylsp[-7])); + + XQTypeswitch::Clause* defClause=WRAP((yylsp[-2]), new (MEMMGR) XQTypeswitch::Clause(NULL,(yyvsp[0].astNode),NULL)); + (yyval.astNode) = new (MEMMGR) XQTypeswitch( WRAP((yylsp[-7]), (yyvsp[-5].astNode)), (yyvsp[-3].clauseList), defClause, MEMMGR); + } + break; + + case 137: +#line 1558 "../src/parser/XQParser.y" + { + (yyvsp[-1].clauseList)->push_back((yyvsp[0].clause)); + (yyval.clauseList)=(yyvsp[-1].clauseList); + } + break; + + case 138: +#line 1563 "../src/parser/XQParser.y" + { + (yyval.clauseList)=new (MEMMGR) XQTypeswitch::VectorOfClause(XQillaAllocator(MEMMGR)); + (yyval.clauseList)->push_back((yyvsp[0].clause)); + } + break; + + case 139: +#line 1572 "../src/parser/XQParser.y" + { + (yyval.clause) = WRAP((yylsp[-3]), new (MEMMGR) XQTypeswitch::Clause((yyvsp[-2].sequenceType), (yyvsp[0].astNode), NULL)); + } + break; + + case 140: +#line 1576 "../src/parser/XQParser.y" + { + (yyval.clause) = WRAP((yylsp[-6]), new (MEMMGR) XQTypeswitch::Clause((yyvsp[-2].sequenceType), (yyvsp[0].astNode), MEMMGR->getPooledString((yyvsp[-4].str)))); + } + break; + + case 141: +#line 1584 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-7]), new (MEMMGR) XQIf((yyvsp[-5].astNode), (yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR)); + } + break; + + case 142: +#line 1592 "../src/parser/XQParser.y" + { + ASTNode* prevExpr=(yyvsp[-2].astNode); + if((unsigned int)prevExpr->getType()==ASTNode::DEBUG_HOOK) + prevExpr=((XQDebugHook*)prevExpr)->m_impl; + if(prevExpr->getType()==ASTNode::OPERATOR && + XPath2Utils::equals(((XQOperator*)prevExpr)->getOperatorName(),Or::name)) + { + ((Or*)prevExpr)->addArgument((yyvsp[0].astNode)); + (yyval.astNode) = prevExpr; + } + else + (yyval.astNode) = WRAP((yylsp[-2]), new (MEMMGR) Or(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 144: +#line 1611 "../src/parser/XQParser.y" + { + ASTNode* prevExpr=(yyvsp[-2].astNode); + if((unsigned int)prevExpr->getType()==ASTNode::DEBUG_HOOK) + prevExpr=((XQDebugHook*)prevExpr)->m_impl; + if(prevExpr->getType()==ASTNode::OPERATOR && + XPath2Utils::equals(((XQOperator*)prevExpr)->getOperatorName(),And::name)) + { + ((And*)prevExpr)->addArgument((yyvsp[0].astNode)); + (yyval.astNode) = prevExpr; + } + else + (yyval.astNode) = WRAP((yylsp[-2]), new (MEMMGR) And(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 146: +#line 1635 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) GeneralComp(GeneralComp::EQUAL,packageArgs((yyvsp[-2].astNode),(yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 147: +#line 1639 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) GeneralComp(GeneralComp::NOT_EQUAL,packageArgs((yyvsp[-2].astNode),(yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 148: +#line 1643 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) GeneralComp(GeneralComp::LESS_THAN,packageArgs((yyvsp[-2].astNode),(yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 149: +#line 1647 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) GeneralComp(GeneralComp::LESS_THAN_EQUAL,packageArgs((yyvsp[-2].astNode),(yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 150: +#line 1651 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) GeneralComp(GeneralComp::GREATER_THAN,packageArgs((yyvsp[-2].astNode),(yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 151: +#line 1655 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) GeneralComp(GeneralComp::GREATER_THAN_EQUAL,packageArgs((yyvsp[-2].astNode),(yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 152: +#line 1659 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) Equals(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 153: +#line 1663 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) NotEquals(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 154: +#line 1667 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) LessThan(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 155: +#line 1671 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) LessThanEqual(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 156: +#line 1675 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) GreaterThan(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 157: +#line 1679 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) GreaterThanEqual(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 158: +#line 1683 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) NodeComparison(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR), MEMMGR)); + } + break; + + case 159: +#line 1687 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) OrderComparison(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR), true, MEMMGR)); + } + break; + + case 160: +#line 1691 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) OrderComparison(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR), false,MEMMGR)); + } + break; + + case 162: +#line 1700 "../src/parser/XQParser.y" + { + REJECT_NOT_FULLTEXT(FTContainsExpr, (yylsp[-2])); + + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) FTContains((yyvsp[-2].astNode), (yyvsp[0].ftselection), NULL, MEMMGR)); + } + break; + + case 163: +#line 1706 "../src/parser/XQParser.y" + { + REJECT_NOT_FULLTEXT(FTContainsExpr, (yylsp[-3])); + + (yyval.astNode) = WRAP((yylsp[-2]), new (MEMMGR) FTContains((yyvsp[-3].astNode), (yyvsp[-1].ftselection), (yyvsp[0].astNode), MEMMGR)); + } + break; + + case 165: +#line 1717 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) Range(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 167: +#line 1726 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) Plus(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 168: +#line 1730 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) Minus(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 170: +#line 1739 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) Multiply(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 171: +#line 1743 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) Divide(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 172: +#line 1747 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) IntegerDivide(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 173: +#line 1751 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) Mod(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 175: +#line 1760 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) Union(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 176: +#line 1764 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) Union(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 178: +#line 1773 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) Intersect(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 179: +#line 1777 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) Except(packageArgs((yyvsp[-2].astNode), (yyvsp[0].astNode), MEMMGR),MEMMGR)); + } + break; + + case 181: +#line 1786 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-2]), new (MEMMGR) XQInstanceOf((yyvsp[-3].astNode),(yyvsp[0].sequenceType),MEMMGR)); + } + break; + + case 183: +#line 1795 "../src/parser/XQParser.y" + { + XQTreatAs* treatAs = new (MEMMGR) XQTreatAs((yyvsp[-3].astNode),(yyvsp[0].sequenceType),MEMMGR); + treatAs->setIsTreatAsStatement(true); + (yyval.astNode) = WRAP((yylsp[-2]), treatAs); + } + break; + + case 185: +#line 1806 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-2]), new (MEMMGR) XQCastableAs((yyvsp[-3].astNode),(yyvsp[0].sequenceType),MEMMGR)); + } + break; + + case 187: +#line 1815 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-3]), new (MEMMGR) XQCastAs((yyvsp[-3].astNode),(yyvsp[0].sequenceType),MEMMGR)); + } + break; + + case 189: +#line 1824 "../src/parser/XQParser.y" + { + VectorOfASTNodes args(XQillaAllocator(MEMMGR)); + args.push_back((yyvsp[0].astNode)); + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) UnaryMinus(/*positive*/false, args, MEMMGR)); + } + break; + + case 190: +#line 1830 "../src/parser/XQParser.y" + { + VectorOfASTNodes args(XQillaAllocator(MEMMGR)); + args.push_back((yyvsp[0].astNode)); + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) UnaryMinus(/*positive*/true, args, MEMMGR)); + } + break; + + case 195: +#line 1851 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-3]), new (MEMMGR) XQValidate((yyvsp[-1].astNode),DocumentCache::VALIDATION_STRICT,MEMMGR)); + } + break; + + case 196: +#line 1855 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-4]), new (MEMMGR) XQValidate((yyvsp[-1].astNode),DocumentCache::VALIDATION_LAX,MEMMGR)); + } + break; + + case 197: +#line 1859 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-4]), new (MEMMGR) XQValidate((yyvsp[-1].astNode),DocumentCache::VALIDATION_STRICT,MEMMGR)); + } + break; + + case 198: +#line 1867 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(ExtensionExpr, (yylsp[-2])); + + // we don't support any pragma + yyerror((yylsp[-2]), "This pragma is not recognized, and no alternative expression is specified [err:XQST0079]"); + } + break; + + case 199: +#line 1874 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(ExtensionExpr, (yylsp[-3])); + + // we don't support any pragma + (yyval.astNode) = (yyvsp[-1].astNode); + } + break; + + case 202: +#line 1891 "../src/parser/XQParser.y" + { + // validate the QName + QualifiedName qName((yyvsp[-2].str)); + const XMLCh* prefix=qName.getPrefix(); + if(prefix==NULL || *prefix==0) + yyerror((yylsp[-2]), "The pragma name must have a prefix [err:XPST0081]"); + + try + { + LOCATION((yylsp[-2]), loc); + CONTEXT->getUriBoundToPrefix(prefix, &loc); + } + catch(NamespaceLookupException&) + { + yyerror((yylsp[-2]), "The pragma name is using an undefined namespace prefix [err:XPST0081]"); + } + } + break; + + case 203: +#line 1909 "../src/parser/XQParser.y" + { + // validate the QName + QualifiedName qName((yyvsp[-1].str)); + const XMLCh* prefix=qName.getPrefix(); + if(prefix==NULL || *prefix==0) + yyerror((yylsp[-1]), "The pragma name must have a prefix [err:XPST0081]"); + + try + { + LOCATION((yylsp[-1]), loc); + CONTEXT->getUriBoundToPrefix(prefix, &loc); + } + catch(NamespaceLookupException&) + { + yyerror((yylsp[-1]), "The pragma name is using an undefined namespace prefix [err:XPST0081]"); + } + } + break; + + case 204: +#line 1931 "../src/parser/XQParser.y" + { + XQNav *nav = new (MEMMGR) XQNav(MEMMGR); + + VectorOfASTNodes args(XQillaAllocator(MEMMGR)); + FunctionRoot *root = WRAP((yylsp[0]), new (MEMMGR) FunctionRoot(args, MEMMGR)); + + SequenceType *documentNode = WRAP((yylsp[0]), new (MEMMGR) + SequenceType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_DOCUMENT))); + + XQTreatAs *treat = WRAP((yylsp[0]), new (MEMMGR) XQTreatAs(root, documentNode, MEMMGR)); + nav->addStepFront(treat); + + (yyval.astNode) = nav; + } + break; + + case 205: +#line 1946 "../src/parser/XQParser.y" + { + XQNav* nav=getNavigation((yyvsp[0].astNode),MEMMGR); + + VectorOfASTNodes args(XQillaAllocator(MEMMGR)); + FunctionRoot *root = WRAP((yylsp[-1]), new (MEMMGR) FunctionRoot(args, MEMMGR)); + + SequenceType *documentNode = WRAP((yylsp[-1]), new (MEMMGR) + SequenceType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_DOCUMENT))); + + XQTreatAs *treat = WRAP((yylsp[-1]), new (MEMMGR) XQTreatAs(root, documentNode, MEMMGR)); + nav->addStepFront(treat); + + (yyval.astNode) = nav; + } + break; + + case 206: +#line 1961 "../src/parser/XQParser.y" + { + XQNav *nav = getNavigation((yyvsp[0].astNode),MEMMGR); + + NodeTest *step = new (MEMMGR) NodeTest(); + step->setTypeWildcard(); + step->setNameWildcard(); + step->setNamespaceWildcard(); + nav->addStepFront(WRAP((yylsp[-1]), new (MEMMGR) XQStep(XQStep::DESCENDANT_OR_SELF, step, MEMMGR))); + + VectorOfASTNodes args(XQillaAllocator(MEMMGR)); + FunctionRoot *root = WRAP((yylsp[-1]), new (MEMMGR) FunctionRoot(args, MEMMGR)); + + SequenceType *documentNode = WRAP((yylsp[-1]), new (MEMMGR) + SequenceType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_DOCUMENT))); + + XQTreatAs *treat = WRAP((yylsp[-1]), new (MEMMGR) XQTreatAs(root, documentNode, MEMMGR)); + nav->addStepFront(treat); + + (yyval.astNode) = nav; + } + break; + + case 208: +#line 1987 "../src/parser/XQParser.y" + { + XQNav *nav = getNavigation((yyvsp[-2].astNode),MEMMGR); + nav->addStep((yyvsp[0].astNode)); + (yyval.astNode) = nav; + } + break; + + case 209: +#line 1993 "../src/parser/XQParser.y" + { + XQNav *nav = getNavigation((yyvsp[-2].astNode),MEMMGR); + + NodeTest *step = new (MEMMGR) NodeTest(); + step->setTypeWildcard(); + step->setNameWildcard(); + step->setNamespaceWildcard(); + nav->addStep(WRAP((yylsp[-1]), new (MEMMGR) XQStep(XQStep::DESCENDANT_OR_SELF, step, MEMMGR))); + nav->addStep((yyvsp[0].astNode)); + + (yyval.astNode) = nav; + } + break; + + case 213: +#line 2017 "../src/parser/XQParser.y" + { + (yyval.astNode) = XQPredicate::addPredicates((yyvsp[-1].astNode), (yyvsp[0].predicates)); + } + break; + + case 214: +#line 2021 "../src/parser/XQParser.y" + { + (yyval.astNode) = XQPredicate::addPredicates((yyvsp[-1].astNode), (yyvsp[0].predicates)); + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) XQDocumentOrder((yyval.astNode), MEMMGR)); + } + break; + + case 215: +#line 2030 "../src/parser/XQParser.y" + { + if(!(yyvsp[0].nodeTest)->isNodeTypeSet()) { + switch((yyvsp[-1].axis)) { + case XQStep::NAMESPACE: (yyvsp[0].nodeTest)->setNodeType(Node::namespace_string); break; + case XQStep::ATTRIBUTE: (yyvsp[0].nodeTest)->setNodeType(Node::attribute_string); break; + default: (yyvsp[0].nodeTest)->setNodeType(Node::element_string); break; + } + } + + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) XQStep((yyvsp[-1].axis),(yyvsp[0].nodeTest),MEMMGR)); + } + break; + + case 217: +#line 2053 "../src/parser/XQParser.y" + { + (yyval.axis) = XQStep::CHILD; + } + break; + + case 218: +#line 2057 "../src/parser/XQParser.y" + { + (yyval.axis) = XQStep::DESCENDANT; + } + break; + + case 219: +#line 2061 "../src/parser/XQParser.y" + { + (yyval.axis) = XQStep::ATTRIBUTE; + } + break; + + case 220: +#line 2065 "../src/parser/XQParser.y" + { + (yyval.axis) = XQStep::SELF; + } + break; + + case 221: +#line 2069 "../src/parser/XQParser.y" + { + (yyval.axis) = XQStep::DESCENDANT_OR_SELF; + } + break; + + case 222: +#line 2073 "../src/parser/XQParser.y" + { + (yyval.axis) = XQStep::FOLLOWING_SIBLING; + } + break; + + case 223: +#line 2077 "../src/parser/XQParser.y" + { + (yyval.axis) = XQStep::FOLLOWING; + } + break; + + case 224: +#line 2081 "../src/parser/XQParser.y" + { + REJECT_NOT_XPATH(AxisNamespace, (yylsp[0])); + (yyval.axis) = XQStep::NAMESPACE; + } + break; + + case 225: +#line 2090 "../src/parser/XQParser.y" + { + if(!(yyvsp[0].nodeTest)->isNodeTypeSet()) { + (yyvsp[0].nodeTest)->setNodeType(Node::attribute_string); + } + + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) XQStep(XQStep::ATTRIBUTE, (yyvsp[0].nodeTest), MEMMGR)); + } + break; + + case 226: +#line 2098 "../src/parser/XQParser.y" + { + XQStep::Axis axis = XQStep::CHILD; + SequenceType::ItemType *itemtype = (yyvsp[0].nodeTest)->getItemType(); + if(itemtype != 0 && + itemtype->getItemTestType() == SequenceType::ItemType::TEST_ATTRIBUTE) { + axis = XQStep::ATTRIBUTE; + } + else if(!(yyvsp[0].nodeTest)->isNodeTypeSet()) { + (yyvsp[0].nodeTest)->setNodeType(Node::element_string); + } + + (yyval.astNode) = WRAP((yylsp[0]), new (MEMMGR) XQStep(axis, (yyvsp[0].nodeTest), MEMMGR)); + } + break; + + case 227: +#line 2116 "../src/parser/XQParser.y" + { + if(!(yyvsp[0].nodeTest)->isNodeTypeSet()) { + (yyvsp[0].nodeTest)->setNodeType(Node::element_string); + } + + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) XQStep((yyvsp[-1].axis), (yyvsp[0].nodeTest), MEMMGR)); + } + break; + + case 229: +#line 2133 "../src/parser/XQParser.y" + { + (yyval.axis) = XQStep::PARENT; + } + break; + + case 230: +#line 2137 "../src/parser/XQParser.y" + { + (yyval.axis) = XQStep::ANCESTOR; + } + break; + + case 231: +#line 2141 "../src/parser/XQParser.y" + { + (yyval.axis) = XQStep::PRECEDING_SIBLING; + } + break; + + case 232: +#line 2145 "../src/parser/XQParser.y" + { + (yyval.axis) = XQStep::PRECEDING; + } + break; + + case 233: +#line 2149 "../src/parser/XQParser.y" + { + (yyval.axis) = XQStep::ANCESTOR_OR_SELF; + } + break; + + case 234: +#line 2157 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setNameWildcard(); + step->setNamespaceWildcard(); + step->setTypeWildcard(); + (yyval.astNode) = WRAP((yylsp[0]), new (MEMMGR) XQStep(XQStep::PARENT, step, MEMMGR)); + } + break; + + case 237: +#line 2175 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setNodePrefix((yyvsp[0].qName)->getPrefix()); + step->setNodeName((yyvsp[0].qName)->getName()); + (yyval.nodeTest) = step; + } + break; + + case 239: +#line 2187 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setNameWildcard(); + step->setNamespaceWildcard(); + (yyval.nodeTest) = step; + } + break; + + case 240: +#line 2194 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setNodePrefix((yyvsp[0].str)); + step->setNameWildcard(); + (yyval.nodeTest) = step; + } + break; + + case 241: +#line 2201 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setNodeName((yyvsp[0].str)); + step->setNamespaceWildcard(); + (yyval.nodeTest) = step; + } + break; + + case 242: +#line 2212 "../src/parser/XQParser.y" + { + (yyval.astNode) = XQPredicate::addPredicates((yyvsp[-1].astNode), (yyvsp[0].predicates)); + } + break; + + case 243: +#line 2221 "../src/parser/XQParser.y" + { + (yyval.predicates) = new (MEMMGR) VectorOfPredicates(MEMMGR); + } + break; + + case 244: +#line 2225 "../src/parser/XQParser.y" + { + XQPredicate *pred = WRAP((yylsp[-2]), new (MEMMGR) XQPredicate((yyvsp[-1].astNode), MEMMGR)); + (yyvsp[-3].predicates)->push_back(pred); + (yyval.predicates) = (yyvsp[-3].predicates); + } + break; + + case 258: +#line 2261 "../src/parser/XQParser.y" + { + int nColon=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::indexOf((yyvsp[0].str),':'); + if(nColon!=-1) + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) XQVariable((yyvsp[0].str),MEMMGR)); + else + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) XQVariable(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, (yyvsp[0].str),MEMMGR)); + } + break; + + case 259: +#line 2273 "../src/parser/XQParser.y" + { + ASTNode* prevExpr=(yyvsp[-1].astNode); + if((unsigned int)prevExpr->getType()==ASTNode::DEBUG_HOOK) + prevExpr=((XQDebugHook*)prevExpr)->m_impl; + if(prevExpr->getType()!=ASTNode::PARENTHESIZED) + { + XQParenthesizedExpr *dis = new (MEMMGR) XQParenthesizedExpr(MEMMGR); + dis->addItem((yyvsp[-1].astNode)); + (yyval.astNode) = WRAP((yylsp[-1]), dis); + } + else + (yyval.astNode) = WRAP((yylsp[-1]), (yyvsp[-1].astNode)); + } + break; + + case 260: +#line 2287 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-1]), new (MEMMGR) XQSequence(MEMMGR)); + } + break; + + case 261: +#line 2295 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[0]), new (MEMMGR) XQContextItem(MEMMGR)); + } + break; + + case 262: +#line 2303 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(OrderedExpr, (yylsp[-3])); + + (yyval.astNode) = WRAP((yylsp[-3]), new (MEMMGR) XQOrderingChange(StaticContext::ORDERING_ORDERED, (yyvsp[-1].astNode), MEMMGR)); + } + break; + + case 263: +#line 2313 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(UnorderedExpr, (yylsp[-3])); + + (yyval.astNode) = WRAP((yylsp[-3]), new (MEMMGR) XQOrderingChange(StaticContext::ORDERING_UNORDERED, (yyvsp[-1].astNode), MEMMGR)); + } + break; + + case 264: +#line 2323 "../src/parser/XQParser.y" + { + VectorOfASTNodes args(XQillaAllocator(MEMMGR)); + (yyval.astNode) = FNWRAP((yylsp[-1]), (yyvsp[-1].str), new (MEMMGR) XQFunctionCall(new (MEMMGR) QualifiedName((yyvsp[-1].str), MEMMGR), args, MEMMGR)); + } + break; + + case 265: +#line 2328 "../src/parser/XQParser.y" + { + (yyval.astNode) = FNWRAP((yylsp[-2]), (yyvsp[-2].str), new (MEMMGR) XQFunctionCall(new (MEMMGR) QualifiedName((yyvsp[-2].str), MEMMGR), *(yyvsp[-1].itemList),MEMMGR)); + } + break; + + case 266: +#line 2335 "../src/parser/XQParser.y" + { + (yyvsp[-2].itemList)->push_back((yyvsp[0].astNode)); + (yyval.itemList) = (yyvsp[-2].itemList); + } + break; + + case 267: +#line 2340 "../src/parser/XQParser.y" + { + (yyval.itemList) = new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + (yyval.itemList)->push_back((yyvsp[0].astNode)); + } + break; + + case 268: +#line 2349 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(Constructor, (yylsp[0])); + } + break; + + case 269: +#line 2353 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(Constructor, (yylsp[0])); + } + break; + + case 273: +#line 2370 "../src/parser/XQParser.y" + { + VectorOfASTNodes* content=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + (yyval.astNode) = WRAP((yylsp[-3]), new (MEMMGR) XQElementConstructor( + new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_QNAME, + (yyvsp[-2].str), AnyAtomicType::QNAME), + MEMMGR), + (yyvsp[-1].itemList), content, MEMMGR)); + } + break; + + case 274: +#line 2382 "../src/parser/XQParser.y" + { + if(!XPath2Utils::equals((yyvsp[-6].str),(yyvsp[-1].str))) + yyerror((yylsp[-1]), "Close tag does not match open tag"); + // if we are requested to strip whitespace-only nodes, check if the last element content should be removed + VectorOfASTNodes* elemContent=(yyvsp[-3].itemList); + if(elemContent->size()>0) + { + if(elemContent->back()==0) + elemContent->pop_back(); + else if(!CONTEXT->getPreserveBoundarySpace() && + elemContent->back()->getType()==ASTNode::LITERAL) + { + ASTNode* last=elemContent->back(); + Item::Ptr litVal = ((XQLiteral*)last)->getItemConstructor()->createItem(CONTEXT); + if(((AnyAtomicType*)(const Item*)litVal)->getPrimitiveTypeIndex()==AnyAtomicType::STRING && + isAllSpaces(litVal->asString(CONTEXT))) + { + elemContent->pop_back(); + // special case: if the previous node was a CDATA, put it back + if(elemContent->size()>0 && elemContent->back()->getType()==ASTNode::DOM_CONSTRUCTOR && + ((XQDOMConstructor*)elemContent->back())->getNodeType()==Node::cdata_string) + { + elemContent->push_back(last); + } + } + } + } + (yyval.astNode) = WRAP((yylsp[-7]), new (MEMMGR) XQElementConstructor( + new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_QNAME, + (yyvsp[-6].str), AnyAtomicType::QNAME), + MEMMGR), + (yyvsp[-5].itemList), elemContent,MEMMGR)); + } + break; + + case 275: +#line 2423 "../src/parser/XQParser.y" + { + (yyval.itemList) = new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + } + break; + + case 276: +#line 2427 "../src/parser/XQParser.y" + { + (yyval.itemList) = (yyvsp[-3].itemList); + bool bInsertAtFront=false; + if(XPath2Utils::equals((yyvsp[-2].str), XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXMLNSString) || + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::startsWith((yyvsp[-2].str), XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXMLNSColonString)) + { + // check that the value of an xmlns attribute is a stirng literal + if((yyvsp[0].itemList)->size()>1 || ((yyvsp[0].itemList)->size()==1 && (yyvsp[0].itemList)->front()->getType()!=ASTNode::LITERAL)) + yyerror((yylsp[0]), "Namespace URI of a namespace declaration must be a literal [err:XQST0022]"); + bInsertAtFront=true; + } + if((yyvsp[0].itemList)->size()>0 && (yyvsp[0].itemList)->back()==0) + (yyvsp[0].itemList)->pop_back(); + ASTNode* attrItem=WRAP((yylsp[-2]), new (MEMMGR) XQAttributeConstructor( + new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_QNAME, + (yyvsp[-2].str), AnyAtomicType::QNAME), + MEMMGR), + (yyvsp[0].itemList),MEMMGR)); + if(bInsertAtFront) + (yyval.itemList)->insert((yyval.itemList)->begin(), attrItem); + else + (yyval.itemList)->push_back(attrItem); + } + break; + + case 277: +#line 2459 "../src/parser/XQParser.y" + { + (yyval.itemList) = (yyvsp[-1].itemList); + } + break; + + case 278: +#line 2463 "../src/parser/XQParser.y" + { + (yyval.itemList) = (yyvsp[-1].itemList); + } + break; + + case 279: +#line 2472 "../src/parser/XQParser.y" + { + (yyval.itemList) = new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + } + break; + + case 280: +#line 2476 "../src/parser/XQParser.y" + { + (yyval.itemList) = (yyvsp[-1].itemList); + if((yyval.itemList)->size()>0 && (yyval.itemList)->back()==0) + (yyval.itemList)->pop_back(); + (yyval.itemList)->push_back((yyvsp[0].astNode)); + (yyval.itemList)->push_back(0); + } + break; + + case 281: +#line 2484 "../src/parser/XQParser.y" + { + (yyval.itemList) = (yyvsp[-1].itemList); + merge_strings(CONTEXT,(yyval.itemList),szQuote); + } + break; + + case 282: +#line 2489 "../src/parser/XQParser.y" + { + (yyval.itemList) = (yyvsp[-1].itemList); + merge_strings(CONTEXT,(yyval.itemList),(yyvsp[0].str)); + } + break; + + case 283: +#line 2494 "../src/parser/XQParser.y" + { + (yyval.itemList) = (yyvsp[-1].itemList); + merge_strings(CONTEXT,(yyval.itemList),(yyvsp[0].str)); + } + break; + + case 284: +#line 2504 "../src/parser/XQParser.y" + { + (yyval.itemList) = new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + } + break; + + case 285: +#line 2508 "../src/parser/XQParser.y" + { + (yyval.itemList) = (yyvsp[-1].itemList); + if((yyval.itemList)->size()>0 && (yyval.itemList)->back()==0) + (yyval.itemList)->pop_back(); + (yyval.itemList)->push_back((yyvsp[0].astNode)); + (yyval.itemList)->push_back(0); + } + break; + + case 286: +#line 2516 "../src/parser/XQParser.y" + { + (yyval.itemList) = (yyvsp[-1].itemList); + merge_strings(CONTEXT,(yyval.itemList),szApos); + } + break; + + case 287: +#line 2521 "../src/parser/XQParser.y" + { + (yyval.itemList) = (yyvsp[-1].itemList); + merge_strings(CONTEXT,(yyval.itemList),(yyvsp[0].str)); + } + break; + + case 288: +#line 2526 "../src/parser/XQParser.y" + { + (yyval.itemList) = (yyvsp[-1].itemList); + merge_strings(CONTEXT,(yyval.itemList),(yyvsp[0].str)); + } + break; + + case 289: +#line 2541 "../src/parser/XQParser.y" + { + (yyval.itemList) = new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + } + break; + + case 290: +#line 2545 "../src/parser/XQParser.y" + { + (yyval.itemList) = (yyvsp[-1].itemList); + // if the last token was a string literal made of whitespace and + // we are adding a node constructor, and the context tells us to strip whitespace, remove it + if((yyval.itemList)->size()>0) + { + if((yyval.itemList)->back()==0) + (yyval.itemList)->pop_back(); + else if(!CONTEXT->getPreserveBoundarySpace() && (yyval.itemList)->back()->getType()==ASTNode::LITERAL) + { + const XMLCh* lastString=NULL; + Item::Ptr litVal = ((XQLiteral*)(yyval.itemList)->back())->getItemConstructor()->createItem(CONTEXT); + if(((AnyAtomicType*)(const Item*)litVal)->getPrimitiveTypeIndex()==AnyAtomicType::STRING) + lastString=litVal->asString(CONTEXT); + if(lastString!=NULL && *lastString!=0 && isAllSpaces(lastString)) + (yyval.itemList)->pop_back(); + } + } + (yyval.itemList)->push_back((yyvsp[0].astNode)); + } + break; + + case 291: +#line 2566 "../src/parser/XQParser.y" + { + (yyval.itemList) = (yyvsp[-1].itemList); + if((yyval.itemList)->size()>0 && (yyval.itemList)->back() && (yyval.itemList)->back()->getType()==ASTNode::LITERAL) + { + XQLiteral *lit = (XQLiteral*)(yyval.itemList)->back(); + const XMLCh* string=lit->getItemConstructor()->createItem(CONTEXT)->asString(CONTEXT); + string=XPath2Utils::concatStrings(string,(yyvsp[0].str),MEMMGR); + + AnyAtomicTypeConstructor *ic = new (MEMMGR) + AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + string, AnyAtomicType::STRING); + lit->setItemConstructor(ic); + } + else + { + if((yyval.itemList)->size()>0 && (yyval.itemList)->back()==0) + (yyval.itemList)->pop_back(); + AnyAtomicTypeConstructor *ic = new (MEMMGR) + AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + (yyvsp[0].str), AnyAtomicType::STRING); + + (yyval.itemList)->push_back(new (MEMMGR) XQLiteral(ic, MEMMGR)); + } + } + break; + + case 292: +#line 2595 "../src/parser/XQParser.y" + { + (yyval.itemList) = (yyvsp[-1].itemList); + if((yyval.itemList)->size()>0 && (yyval.itemList)->back()==0) + (yyval.itemList)->pop_back(); + + // if the last token was a string literal made of whitespace and + // we are adding a node constructor, and the context tells us to strip whitespace, remove it + if(!CONTEXT->getPreserveBoundarySpace() && (yyval.itemList)->size()>0 && (yyval.itemList)->back()->getType()==ASTNode::LITERAL) + { + const XMLCh* lastString=NULL; + Item::Ptr litVal = ((XQLiteral*)(yyval.itemList)->back())->getItemConstructor()->createItem(CONTEXT); + if(((AnyAtomicType*)(const Item*)litVal)->getPrimitiveTypeIndex()==AnyAtomicType::STRING) + lastString=litVal->asString(CONTEXT); + if(lastString!=NULL && *lastString!=0 && isAllSpaces(lastString)) + (yyval.itemList)->pop_back(); + } + (yyval.itemList)->push_back((yyvsp[0].astNode)); + } + break; + + case 293: +#line 2614 "../src/parser/XQParser.y" + { + (yyval.itemList) = (yyvsp[-1].itemList); + // if the last token was a string literal made of whitespace and + // we are adding an enclosed expression, and the context tells us to strip whitespace, remove it + if((yyval.itemList)->size()>0) + { + if((yyval.itemList)->back()==0) + (yyval.itemList)->pop_back(); + else if(!CONTEXT->getPreserveBoundarySpace() && (yyval.itemList)->back()->getType()==ASTNode::LITERAL) + { + const XMLCh* lastString=NULL; + Item::Ptr litVal = ((XQLiteral*)(yyval.itemList)->back())->getItemConstructor()->createItem(CONTEXT); + if(((AnyAtomicType*)(const Item*)litVal)->getPrimitiveTypeIndex()==AnyAtomicType::STRING) + lastString=litVal->asString(CONTEXT); + if(lastString!=NULL && *lastString!=0 && isAllSpaces(lastString)) + (yyval.itemList)->pop_back(); + } + } + (yyval.itemList)->push_back((yyvsp[0].astNode)); + (yyval.itemList)->push_back(0); + } + break; + + case 294: +#line 2636 "../src/parser/XQParser.y" + { + (yyval.itemList) = (yyvsp[-1].itemList); + if((yyval.itemList)->size()>0 && (yyval.itemList)->back()==0) + (yyval.itemList)->pop_back(); + + AnyAtomicTypeConstructor *ic = new (MEMMGR) + AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + (yyvsp[0].str), AnyAtomicType::STRING); + + (yyval.itemList)->push_back(new (MEMMGR) XQLiteral(ic, MEMMGR)); + } + break; + + case 297: +#line 2657 "../src/parser/XQParser.y" + { + (yyval.str) = szCurlyOpen; + } + break; + + case 298: +#line 2661 "../src/parser/XQParser.y" + { + (yyval.str) = szCurlyClose; + } + break; + + case 299: +#line 2670 "../src/parser/XQParser.y" + { + ASTNode *value = WRAP((yylsp[0]), new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + (yyvsp[0].str), AnyAtomicType::STRING), + MEMMGR)); + (yyval.astNode) = WRAP((yylsp[0]), new (MEMMGR) XQCommentConstructor(value, MEMMGR)); + } + break; + + case 300: +#line 2685 "../src/parser/XQParser.y" + { + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::compareIString((yyvsp[-1].str), XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXMLString)==0) + yyerror((yylsp[-1]), "The target for the processing instruction must not be 'XML'"); + ASTNode *value = WRAP((yylsp[0]), new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + (yyvsp[0].str), AnyAtomicType::STRING), + MEMMGR)); + (yyval.astNode) = WRAP((yylsp[-2]), new (MEMMGR) XQPIConstructor( + WRAP((yylsp[-1]), new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + (yyvsp[-1].str), AnyAtomicType::STRING), + MEMMGR)), + value, MEMMGR)); + } + break; + + case 301: +#line 2709 "../src/parser/XQParser.y" + { + ASTNode *value = new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + (yyvsp[0].str), AnyAtomicType::STRING), + MEMMGR); + (yyval.astNode) = WRAP((yylsp[0]), new (MEMMGR) XQTextConstructor(/*isCDATA*/true, value, MEMMGR)); + } + break; + + case 308: +#line 2738 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-3]), new (MEMMGR) XQDocumentConstructor(WRAP((yylsp[-1]), (yyvsp[-1].astNode)),MEMMGR)); + } + break; + + case 309: +#line 2746 "../src/parser/XQParser.y" + { + VectorOfASTNodes* content=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + VectorOfASTNodes* empty=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + content->push_back(WRAP((yylsp[-1]), (yyvsp[-1].astNode))); + (yyval.astNode) = WRAP((yylsp[-3]), new (MEMMGR) XQElementConstructor( + new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_QNAME, + (yyvsp[-3].str), AnyAtomicType::QNAME), + MEMMGR), + empty, content,MEMMGR)); + } + break; + + case 310: +#line 2760 "../src/parser/XQParser.y" + { + VectorOfASTNodes* empty=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + (yyval.astNode) = WRAP((yylsp[-2]), new (MEMMGR) XQElementConstructor( + new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_QNAME, + (yyvsp[-2].str), AnyAtomicType::QNAME), + MEMMGR), + empty, empty,MEMMGR)); + } + break; + + case 311: +#line 2772 "../src/parser/XQParser.y" + { + VectorOfASTNodes* content=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + VectorOfASTNodes* empty=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + content->push_back(WRAP((yylsp[-1]), (yyvsp[-1].astNode))); + (yyval.astNode) = WRAP((yylsp[-6]), new (MEMMGR) XQElementConstructor( + WRAP((yylsp[-4]), (yyvsp[-4].astNode)), + empty, content, MEMMGR)); + } + break; + + case 312: +#line 2781 "../src/parser/XQParser.y" + { + VectorOfASTNodes* empty=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + (yyval.astNode) = WRAP((yylsp[-5]), new (MEMMGR) XQElementConstructor( + WRAP((yylsp[-3]), (yyvsp[-3].astNode)), + empty, empty, MEMMGR)); + } + break; + + case 314: +#line 2797 "../src/parser/XQParser.y" + { + VectorOfASTNodes* content=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + content->push_back(WRAP((yylsp[-1]), (yyvsp[-1].astNode))); + (yyval.astNode) = WRAP((yylsp[-3]), new (MEMMGR) XQAttributeConstructor( + new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_QNAME, + (yyvsp[-3].str), AnyAtomicType::QNAME), + MEMMGR), + content,MEMMGR)); + } + break; + + case 315: +#line 2810 "../src/parser/XQParser.y" + { + VectorOfASTNodes* empty=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + (yyval.astNode) = WRAP((yylsp[-2]), new (MEMMGR) XQAttributeConstructor( + new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_QNAME, + (yyvsp[-2].str), AnyAtomicType::QNAME), + MEMMGR), + empty,MEMMGR)); + } + break; + + case 316: +#line 2822 "../src/parser/XQParser.y" + { + VectorOfASTNodes* content=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + content->push_back(WRAP((yylsp[-1]), (yyvsp[-1].astNode))); + (yyval.astNode) = WRAP((yylsp[-6]), new (MEMMGR) XQAttributeConstructor( + WRAP((yylsp[-4]), (yyvsp[-4].astNode)), + content, MEMMGR)); + } + break; + + case 317: +#line 2830 "../src/parser/XQParser.y" + { + VectorOfASTNodes* empty=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + (yyval.astNode) = WRAP((yylsp[-5]), new (MEMMGR) XQAttributeConstructor( + WRAP((yylsp[-3]), (yyvsp[-3].astNode)), + empty, MEMMGR)); + } + break; + + case 318: +#line 2841 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-3]), new (MEMMGR) XQTextConstructor(/*isCDATA*/false, WRAP((yylsp[-1]), (yyvsp[-1].astNode)), MEMMGR)); + } + break; + + case 319: +#line 2849 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-3]), new (MEMMGR) XQCommentConstructor(WRAP((yylsp[-1]), (yyvsp[-1].astNode)), MEMMGR)); + } + break; + + case 320: +#line 2857 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-3]), new (MEMMGR) XQPIConstructor( + new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + (yyvsp[-3].str), AnyAtomicType::STRING), + MEMMGR), + WRAP((yylsp[-1]), (yyvsp[-1].astNode)), MEMMGR)); + } + break; + + case 321: +#line 2868 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-2]), new (MEMMGR) XQPIConstructor( + new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + (yyvsp[-2].str), AnyAtomicType::STRING), + MEMMGR), + new (MEMMGR) XQSequence(MEMMGR), MEMMGR)); + } + break; + + case 322: +#line 2879 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-6]), new (MEMMGR) XQPIConstructor( + WRAP((yylsp[-4]), (yyvsp[-4].astNode)), + WRAP((yylsp[-1]), (yyvsp[-1].astNode)), MEMMGR)); + } + break; + + case 323: +#line 2885 "../src/parser/XQParser.y" + { + (yyval.astNode) = WRAP((yylsp[-5]), new (MEMMGR) XQPIConstructor( + WRAP((yylsp[-3]), (yyvsp[-3].astNode)), + new (MEMMGR) XQSequence(MEMMGR), MEMMGR)); + } + break; + + case 324: +#line 2895 "../src/parser/XQParser.y" + { + SequenceType* seq=WRAP((yylsp[-1]), new (MEMMGR) SequenceType()); + seq->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ATOMIC_TYPE,NULL,(yyvsp[-1].qName))); + seq->setOccurrence(SequenceType::QUESTION_MARK); + (yyval.sequenceType) = seq; + } + break; + + case 325: +#line 2902 "../src/parser/XQParser.y" + { + SequenceType* seq=WRAP((yylsp[0]), new (MEMMGR) SequenceType()); + seq->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ATOMIC_TYPE,NULL,(yyvsp[0].qName))); + seq->setOccurrence(SequenceType::EXACTLY_ONE); + (yyval.sequenceType) = seq; + } + break; + + case 326: +#line 2913 "../src/parser/XQParser.y" + { + REJECT_NOT_XQUERY(TypeDeclaration, (yylsp[-1])); + + (yyval.sequenceType) = (yyvsp[0].sequenceType); + } + break; + + case 327: +#line 2923 "../src/parser/XQParser.y" + { + SequenceType* seq=WRAP((yylsp[-1]), new (MEMMGR) SequenceType()); + seq->setItemType((yyvsp[-1].itemType)); + seq->setOccurrence((yyvsp[0].occurrence)); + (yyval.sequenceType) = seq; + } + break; + + case 328: +#line 2930 "../src/parser/XQParser.y" + { + SequenceType* seq=WRAP((yylsp[0]), new (MEMMGR) SequenceType()); + seq->setItemType((yyvsp[0].itemType)); + seq->setOccurrence(SequenceType::EXACTLY_ONE); + (yyval.sequenceType) = seq; + } + break; + + case 329: +#line 2937 "../src/parser/XQParser.y" + { + (yyval.sequenceType) = WRAP((yylsp[-2]), new (MEMMGR) SequenceType()); + } + break; + + case 330: +#line 2946 "../src/parser/XQParser.y" + { (yyval.occurrence) = SequenceType::STAR; } + break; + + case 331: +#line 2948 "../src/parser/XQParser.y" + { (yyval.occurrence) = SequenceType::PLUS; } + break; + + case 332: +#line 2950 "../src/parser/XQParser.y" + { (yyval.occurrence) = SequenceType::QUESTION_MARK; } + break; + + case 333: +#line 2956 "../src/parser/XQParser.y" + { + (yyval.itemType) = new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ATOMIC_TYPE, NULL, (yyvsp[0].qName)); + } + break; + + case 334: +#line 2960 "../src/parser/XQParser.y" + { + (yyval.itemType) = (yyvsp[0].nodeTest)->getItemType(); + (yyvsp[0].nodeTest)->setItemType(NULL); + } + break; + + case 335: +#line 2965 "../src/parser/XQParser.y" + { + (yyval.itemType) = new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ANYTHING); + } + break; + + case 336: +#line 2973 "../src/parser/XQParser.y" + { + (yyval.qName) = (yyvsp[0].qName); + } + break; + + case 346: +#line 3002 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_NODE)); + (yyval.nodeTest) = step; + } + break; + + case 347: +#line 3012 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_DOCUMENT)); + (yyval.nodeTest) = step; + } + break; + + case 348: +#line 3018 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + SequenceType::ItemType* elemTest=(yyvsp[-1].nodeTest)->getItemType(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_DOCUMENT,elemTest->getName(),elemTest->getType())); + elemTest->setName(NULL); + elemTest->setType(NULL); + (yyval.nodeTest) = step; + } + break; + + case 349: +#line 3027 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + SequenceType::ItemType* elemTest=(yyvsp[-1].nodeTest)->getItemType(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_DOCUMENT,elemTest->getName(),elemTest->getType())); + elemTest->setName(NULL); + elemTest->setType(NULL); + (yyval.nodeTest) = step; + } + break; + + case 350: +#line 3040 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_TEXT)); + (yyval.nodeTest) = step; + } + break; + + case 351: +#line 3050 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_COMMENT)); + (yyval.nodeTest) = step; + } + break; + + case 352: +#line 3060 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_PI)); + (yyval.nodeTest) = step; + } + break; + + case 353: +#line 3066 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_PI, new (MEMMGR) QualifiedName((yyvsp[-1].str)))); + (yyval.nodeTest) = step; + } + break; + + case 354: +#line 3072 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_PI, new (MEMMGR) QualifiedName((yyvsp[-1].str)))); + (yyval.nodeTest) = step; + } + break; + + case 355: +#line 3082 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ATTRIBUTE)); + (yyval.nodeTest) = step; + } + break; + + case 356: +#line 3088 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ATTRIBUTE,(yyvsp[-1].qName))); + (yyval.nodeTest) = step; + } + break; + + case 357: +#line 3094 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ATTRIBUTE,(yyvsp[-3].qName),(yyvsp[-1].qName))); + (yyval.nodeTest) = step; + } + break; + + case 359: +#line 3105 "../src/parser/XQParser.y" + { + (yyval.qName) = NULL; + } + break; + + case 360: +#line 3113 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_SCHEMA_ATTRIBUTE,(yyvsp[-1].qName))); + (yyval.nodeTest) = step; + } + break; + + case 362: +#line 3128 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ELEMENT)); + (yyval.nodeTest) = step; + } + break; + + case 363: +#line 3134 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ELEMENT,(yyvsp[-1].qName))); + (yyval.nodeTest) = step; + } + break; + + case 364: +#line 3140 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ELEMENT,(yyvsp[-3].qName),(yyvsp[-1].qName))); + (yyval.nodeTest) = step; + } + break; + + case 365: +#line 3146 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + SequenceType::ItemType* pType=new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ELEMENT,(yyvsp[-4].qName),(yyvsp[-2].qName)); + pType->setAllowNilled(true); + step->setItemType(pType); + (yyval.nodeTest) = step; + } + break; + + case 367: +#line 3159 "../src/parser/XQParser.y" + { + (yyval.qName) = NULL; + } + break; + + case 368: +#line 3167 "../src/parser/XQParser.y" + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_SCHEMA_ELEMENT,(yyvsp[-1].qName))); + (yyval.nodeTest) = step; + } + break; + + case 373: +#line 3197 "../src/parser/XQParser.y" + { + // the string must be whitespace-normalized + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::collapseWS((yyvsp[0].str), MEMMGR); + if((yyvsp[0].str) && *(yyvsp[0].str) && !XPath2Utils::isValidURI((yyvsp[0].str), MEMMGR)) + yyerror((yylsp[0]), "The URI literal is not valid [err:XQST0046]"); + (yyval.str) = (yyvsp[0].str); + } + break; + + case 374: +#line 3209 "../src/parser/XQParser.y" + { + // TBD FTSelectionOptions and weight + (yyval.ftselection) = (yyvsp[-3].ftselection); + + for(VectorOfFTOptions::iterator i = (yyvsp[-2].ftoptionlist)->begin(); + i != (yyvsp[-2].ftoptionlist)->end(); ++i) { + (*i)->setArgument((yyval.ftselection)); + (yyval.ftselection) = *i; + } + delete (yyvsp[-2].ftoptionlist); + } + break; + + case 375: +#line 3221 "../src/parser/XQParser.y" + { + (yyval.ftselection) = (yyvsp[-1].ftselection); + + for(VectorOfFTOptions::iterator i = (yyvsp[0].ftoptionlist)->begin(); + i != (yyvsp[0].ftoptionlist)->end(); ++i) { + (*i)->setArgument((yyval.ftselection)); + (yyval.ftselection) = *i; + } + delete (yyvsp[0].ftoptionlist); + } + break; + + case 376: +#line 3235 "../src/parser/XQParser.y" + { + (yyval.ftoptionlist) = new (MEMMGR) VectorOfFTOptions(XQillaAllocator(MEMMGR)); + } + break; + + case 377: +#line 3239 "../src/parser/XQParser.y" + { + (yyval.ftoptionlist) = (yyvsp[-1].ftoptionlist); + } + break; + + case 378: +#line 3243 "../src/parser/XQParser.y" + { + if((yyvsp[0].ftoption) != NULL) + (yyvsp[-1].ftoptionlist)->push_back((yyvsp[0].ftoption)); + (yyval.ftoptionlist) = (yyvsp[-1].ftoptionlist); + } + break; + + case 379: +#line 3253 "../src/parser/XQParser.y" + { + if((yyvsp[-2].ftselection)->getType() == FTSelection::OR) { + FTOr *op = (FTOr*)(yyvsp[-2].ftselection); + op->addArg((yyvsp[0].ftselection)); + (yyval.ftselection) = op; + } + else { + (yyval.ftselection) = WRAP((yylsp[-1]), new (MEMMGR) FTOr((yyvsp[-2].ftselection), (yyvsp[0].ftselection), MEMMGR)); + } + } + break; + + case 381: +#line 3269 "../src/parser/XQParser.y" + { + if((yyvsp[-2].ftselection)->getType() == FTSelection::AND) { + FTAnd *op = (FTAnd*)(yyvsp[-2].ftselection); + op->addArg((yyvsp[0].ftselection)); + (yyval.ftselection) = op; + } + else { + (yyval.ftselection) = WRAP((yylsp[-1]), new (MEMMGR) FTAnd((yyvsp[-2].ftselection), (yyvsp[0].ftselection), MEMMGR)); + } + } + break; + + case 383: +#line 3285 "../src/parser/XQParser.y" + { + (yyval.ftselection) = WRAP((yylsp[-1]), new (MEMMGR) FTMildnot((yyvsp[-2].ftselection), (yyvsp[0].ftselection), MEMMGR)); + } + break; + + case 385: +#line 3294 "../src/parser/XQParser.y" + { + (yyval.ftselection) = WRAP((yylsp[-1]), new (MEMMGR) FTUnaryNot((yyvsp[0].ftselection), MEMMGR)); + } + break; + + case 387: +#line 3303 "../src/parser/XQParser.y" + { + (yyval.ftselection) = (yyvsp[-1].ftselection); + } + break; + + case 389: +#line 3312 "../src/parser/XQParser.y" + { + (yyval.ftselection) = WRAP((yylsp[-1]), new (MEMMGR) FTWords((yyvsp[-1].astNode), (yyvsp[0].ftanyalloption), MEMMGR)); + } + break; + + case 390: +#line 3316 "../src/parser/XQParser.y" + { + (yyval.ftselection) = WRAP((yylsp[-1]), new (MEMMGR) FTWords((yyvsp[-1].astNode), (yyvsp[0].ftanyalloption), MEMMGR)); + } + break; + + case 391: +#line 3320 "../src/parser/XQParser.y" + { + (yyval.ftselection) = WRAP((yylsp[-1]), new (MEMMGR) FTWords((yyvsp[-1].astNode), (yyvsp[0].ftanyalloption), MEMMGR)); + } + break; + + case 392: +#line 3324 "../src/parser/XQParser.y" + { + (yyval.ftselection) = WRAP((yylsp[-1]), new (MEMMGR) FTWords((yyvsp[-1].astNode), (yyvsp[0].ftanyalloption), MEMMGR)); + } + break; + + case 393: +#line 3328 "../src/parser/XQParser.y" + { + (yyval.ftselection) = WRAP((yylsp[-2]), new (MEMMGR) FTWords((yyvsp[-2].astNode), (yyvsp[0].ftanyalloption), MEMMGR)); + } + break; + + case 394: +#line 3342 "../src/parser/XQParser.y" + { + (yyval.ftoption) = WRAP((yylsp[0]), new (MEMMGR) FTOrder(MEMMGR)); + } + break; + + case 395: +#line 3346 "../src/parser/XQParser.y" + { + (yyval.ftoption) = WRAP((yylsp[-2]), new (MEMMGR) FTWindow((yyvsp[-1].astNode), (yyvsp[0].ftunit), MEMMGR)); + } + break; + + case 396: +#line 3350 "../src/parser/XQParser.y" + { + (yyval.ftoption) = WRAP((yylsp[-2]), new (MEMMGR) FTDistance((yyvsp[-1].ftrange), (yyvsp[0].ftunit), MEMMGR)); + } + break; + + case 397: +#line 3354 "../src/parser/XQParser.y" + { + std::cerr << "occurs" << std::endl; + (yyval.ftoption) = NULL; + } + break; + + case 398: +#line 3359 "../src/parser/XQParser.y" + { + (yyval.ftoption) = WRAP((yylsp[-1]), new (MEMMGR) FTScope(FTScope::SAME, (yyvsp[0].ftunit), MEMMGR)); + } + break; + + case 399: +#line 3363 "../src/parser/XQParser.y" + { + (yyval.ftoption) = WRAP((yylsp[-1]), new (MEMMGR) FTScope(FTScope::DIFFERENT, (yyvsp[0].ftunit), MEMMGR)); + } + break; + + case 400: +#line 3367 "../src/parser/XQParser.y" + { + (yyval.ftoption) = WRAP((yylsp[0]), new (MEMMGR) FTContent(FTContent::AT_START, MEMMGR)); + } + break; + + case 401: +#line 3371 "../src/parser/XQParser.y" + { + (yyval.ftoption) = WRAP((yylsp[0]), new (MEMMGR) FTContent(FTContent::AT_END, MEMMGR)); + } + break; + + case 402: +#line 3375 "../src/parser/XQParser.y" + { + (yyval.ftoption) = WRAP((yylsp[0]), new (MEMMGR) FTContent(FTContent::ENTIRE_CONTENT, MEMMGR)); + } + break; + + case 410: +#line 3403 "../src/parser/XQParser.y" + { + std::cerr << "lowercase" << std::endl; + } + break; + + case 411: +#line 3407 "../src/parser/XQParser.y" + { + std::cerr << "uppercase" << std::endl; + } + break; + + case 412: +#line 3411 "../src/parser/XQParser.y" + { + std::cerr << "case sensitive" << std::endl; + } + break; + + case 413: +#line 3415 "../src/parser/XQParser.y" + { + std::cerr << "case insensitive" << std::endl; + } + break; + + case 414: +#line 3426 "../src/parser/XQParser.y" + { + std::cerr << "with diacritics" << std::endl; + } + break; + + case 415: +#line 3430 "../src/parser/XQParser.y" + { + std::cerr << "without diacritics" << std::endl; + } + break; + + case 416: +#line 3434 "../src/parser/XQParser.y" + { + std::cerr << "diacritics sensitive" << std::endl; + } + break; + + case 417: +#line 3438 "../src/parser/XQParser.y" + { + std::cerr << "diacritics insensitive" << std::endl; + } + break; + + case 418: +#line 3446 "../src/parser/XQParser.y" + { + std::cerr << "with stemming" << std::endl; + } + break; + + case 419: +#line 3450 "../src/parser/XQParser.y" + { + std::cerr << "without stemming" << std::endl; + } + break; + + case 420: +#line 3460 "../src/parser/XQParser.y" + { + std::cerr << "with thesaurus" << std::endl; + } + break; + + case 421: +#line 3464 "../src/parser/XQParser.y" + { + std::cerr << "with thesaurus default" << std::endl; + } + break; + + case 422: +#line 3468 "../src/parser/XQParser.y" + { + std::cerr << "with thesaurus ()" << std::endl; + } + break; + + case 423: +#line 3472 "../src/parser/XQParser.y" + { + std::cerr << "with thesaurus (default)" << std::endl; + } + break; + + case 424: +#line 3476 "../src/parser/XQParser.y" + { + std::cerr << "without thesaurus" << std::endl; + } + break; + + case 425: +#line 3483 "../src/parser/XQParser.y" + { + } + break; + + case 426: +#line 3486 "../src/parser/XQParser.y" + { + } + break; + + case 427: +#line 3493 "../src/parser/XQParser.y" + { + std::cerr << "at StringLiteral" << std::endl; + } + break; + + case 428: +#line 3497 "../src/parser/XQParser.y" + { + std::cerr << "at StringLiteral relationship StringLiteral" << std::endl; + } + break; + + case 429: +#line 3501 "../src/parser/XQParser.y" + { + std::cerr << "at StringLiteral levels" << std::endl; + } + break; + + case 430: +#line 3505 "../src/parser/XQParser.y" + { + std::cerr << "at StringLiteral relationship StringLiteral levels" << std::endl; + } + break; + + case 431: +#line 3515 "../src/parser/XQParser.y" + { + std::cerr << "with stop words" << std::endl; + } + break; + + case 432: +#line 3519 "../src/parser/XQParser.y" + { + std::cerr << "without stop words" << std::endl; + } + break; + + case 433: +#line 3523 "../src/parser/XQParser.y" + { + std::cerr << "with default stop words" << std::endl; + } + break; + + case 434: +#line 3530 "../src/parser/XQParser.y" + { + } + break; + + case 435: +#line 3533 "../src/parser/XQParser.y" + { + } + break; + + case 436: +#line 3541 "../src/parser/XQParser.y" + { + std::cerr << "at StringLiteral" << std::endl; + } + break; + + case 437: +#line 3545 "../src/parser/XQParser.y" + { + std::cerr << "()" << std::endl; + } + break; + + case 438: +#line 3552 "../src/parser/XQParser.y" + { + std::cerr << "StringLiteral" << std::endl; + } + break; + + case 439: +#line 3556 "../src/parser/XQParser.y" + { + std::cerr << ", StringLiteral" << std::endl; + } + break; + + case 440: +#line 3564 "../src/parser/XQParser.y" + { + std::cerr << "union" << std::endl; + } + break; + + case 441: +#line 3568 "../src/parser/XQParser.y" + { + std::cerr << "except" << std::endl; + } + break; + + case 442: +#line 3576 "../src/parser/XQParser.y" + { + std::cerr << "language StringLiteral" << std::endl; + } + break; + + case 443: +#line 3584 "../src/parser/XQParser.y" + { + std::cerr << "with wildcards" << std::endl; + } + break; + + case 444: +#line 3588 "../src/parser/XQParser.y" + { + std::cerr << "without wildcards" << std::endl; + } + break; + + case 445: +#line 3596 "../src/parser/XQParser.y" + { + (yyval.ftanyalloption) = FTWords::ANY; + } + break; + + case 446: +#line 3600 "../src/parser/XQParser.y" + { + (yyval.ftanyalloption) = FTWords::ANY; + } + break; + + case 447: +#line 3604 "../src/parser/XQParser.y" + { + (yyval.ftanyalloption) = FTWords::ANY_WORD; + } + break; + + case 448: +#line 3608 "../src/parser/XQParser.y" + { + (yyval.ftanyalloption) = FTWords::ALL; + } + break; + + case 449: +#line 3612 "../src/parser/XQParser.y" + { + (yyval.ftanyalloption) = FTWords::ALL_WORDS; + } + break; + + case 450: +#line 3616 "../src/parser/XQParser.y" + { + (yyval.ftanyalloption) = FTWords::PHRASE; + } + break; + + case 451: +#line 3627 "../src/parser/XQParser.y" + { + (yyval.ftrange).type = FTRange::EXACTLY; + (yyval.ftrange).arg1 = (yyvsp[0].astNode); + (yyval.ftrange).arg2 = 0; + } + break; + + case 452: +#line 3633 "../src/parser/XQParser.y" + { + (yyval.ftrange).type = FTRange::AT_LEAST; + (yyval.ftrange).arg1 = (yyvsp[0].astNode); + (yyval.ftrange).arg2 = 0; + } + break; + + case 453: +#line 3639 "../src/parser/XQParser.y" + { + (yyval.ftrange).type = FTRange::AT_MOST; + (yyval.ftrange).arg1 = (yyvsp[0].astNode); + (yyval.ftrange).arg2 = 0; + } + break; + + case 454: +#line 3645 "../src/parser/XQParser.y" + { + (yyval.ftrange).type = FTRange::FROM_TO; + (yyval.ftrange).arg1 = (yyvsp[-2].astNode); + (yyval.ftrange).arg2 = (yyvsp[0].astNode); + } + break; + + case 455: +#line 3655 "../src/parser/XQParser.y" + { + (yyval.ftunit) = FTOption::WORDS; + } + break; + + case 456: +#line 3659 "../src/parser/XQParser.y" + { + (yyval.ftunit) = FTOption::SENTENCES; + } + break; + + case 457: +#line 3663 "../src/parser/XQParser.y" + { + (yyval.ftunit) = FTOption::PARAGRAPHS; + } + break; + + case 458: +#line 3671 "../src/parser/XQParser.y" + { + (yyval.ftunit) = FTOption::SENTENCES; + } + break; + + case 459: +#line 3675 "../src/parser/XQParser.y" + { + (yyval.ftunit) = FTOption::PARAGRAPHS; + } + break; + + case 460: +#line 3683 "../src/parser/XQParser.y" + { + (yyval.astNode) = (yyvsp[0].astNode); + } + break; + + case 461: +#line 3691 "../src/parser/XQParser.y" + { + (yyval.astNode) = new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_INTEGER, + (yyvsp[0].str), AnyAtomicType::DECIMAL), + MEMMGR); + } + break; + + case 462: +#line 3704 "../src/parser/XQParser.y" + { + (yyval.astNode) = new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_DECIMAL, + (yyvsp[0].str), AnyAtomicType::DECIMAL), + MEMMGR); + } + break; + + case 463: +#line 3717 "../src/parser/XQParser.y" + { + (yyval.astNode) = new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_DOUBLE, + (yyvsp[0].str), AnyAtomicType::DOUBLE), + MEMMGR); + } + break; + + case 464: +#line 3731 "../src/parser/XQParser.y" + { + (yyval.astNode) = new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + (yyvsp[0].str), AnyAtomicType::STRING), + MEMMGR); + } + break; + + case 465: +#line 3744 "../src/parser/XQParser.y" + { + (yyval.qName) = new (MEMMGR) QualifiedName((yyvsp[0].str),MEMMGR); + } + break; + + + default: break; + } + +/* Line 1126 of yacc.c. */ +#line 6514 "../src/parser/XQParser.cpp" + + yyvsp -= yylen; + yyssp -= yylen; + yylsp -= yylen; + + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + *++yylsp = yyloc; + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if YYERROR_VERBOSE + yyn = yypact[yystate]; + + if (YYPACT_NINF < yyn && yyn < YYLAST) + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + char *yymsg = 0; +# define YYERROR_VERBOSE_ARGS_MAXIMUM 5 + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +#if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +#endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= yysize1 < yysize; + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= yysize1 < yysize; + yysize = yysize1; + + if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM) + yymsg = (char *) YYSTACK_ALLOC (yysize); + if (yymsg) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yymsg; + int yyi = 0; + while ((*yyp = *yyf)) + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + yyerror (yymsg); + YYSTACK_FREE (yymsg); + } + else + { + yyerror (YY_("syntax error")); + goto yyexhaustedlab; + } + } + else +#endif /* YYERROR_VERBOSE */ + yyerror (YY_("syntax error")); + } + + yyerror_range[0] = yylloc; + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", yytoken, &yylval, &yylloc); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (0) + goto yyerrorlab; + + yyerror_range[0] = yylsp[1-yylen]; + yylsp -= yylen; + yyvsp -= yylen; + yyssp -= yylen; + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + yyerror_range[0] = *yylsp; + yydestruct ("Error: popping", yystos[yystate], yyvsp, yylsp); + YYPOPSTACK; + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + yyerror_range[1] = yylloc; + /* Using YYLLOC is tempting, but would change the location of + the look-ahead. YYLOC is available though. */ + YYLLOC_DEFAULT (yyloc, yyerror_range - 1, 2); + *++yylsp = yyloc; + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval, &yylloc); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp, yylsp); + YYPOPSTACK; + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif + return yyresult; +} + + +#line 3748 "../src/parser/XQParser.y" + + +} // namespace XQParser + + + diff --git a/src/parser/XQParser.hpp b/src/parser/XQParser.hpp new file mode 100644 index 00000000..180710f7 --- /dev/null +++ b/src/parser/XQParser.hpp @@ -0,0 +1,535 @@ +/* A Bison parser, made by GNU Bison 2.1. */ + +/* Skeleton parser for Yacc-like parsing with Bison, + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, when this file is copied by Bison into a + Bison output file, you may use that output file without restriction. + This special exception was added by the Free Software Foundation + in version 1.24 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + MYEOF = 0, + _QNAME_ = 258, + _FUNCTION_CALL_ = 259, + _TAG_NAME_ = 260, + _ATTRIBUTE_NAME_ = 261, + _STRING_LITERAL_ = 262, + _VARIABLE_ = 263, + _CHAR_ = 264, + _CHAR_REF_ = 265, + _PREDEFINED_ENTITY_REF_ = 266, + _NCNAME_COLON_STAR_ = 267, + _STAR_COLON_NCNAME_ = 268, + _NCNAME_ = 269, + _PI_TARGET_ = 270, + _NAMED_ATTRIBUTE_CONSTR_ = 271, + _NAMED_ELEMENT_CONSTR_ = 272, + _INTEGER_NUMBER_ = 273, + _DECIMAL_NUMBER_ = 274, + _DOUBLE_NUMBER_ = 275, + _XML_COMMENT_ = 276, + _CDATA_SECTION_ = 277, + _PROCESSING_INSTRUCTION_CONTENT_ = 278, + _NAMED_PROCESSING_INSTRUCTION_CONSTR_ = 279, + _PRAGMA_NAME_ = 280, + _PRAGMA_CONTENT_ = 281, + _XQUERY_COMMENT_ = 282, + _XQUERY_WHITESPACE_ = 283, + _XQUERY_ERROR_ = 284, + _PRAGMA_OPEN_ = 285, + _PRAGMA_CLOSE_ = 286, + _ESCAPE_APOS_ = 287, + _ESCAPE_QUOT_ = 288, + _COMMA_ = 289, + _RETURN_ = 290, + _FOR_ = 291, + _IN_ = 292, + _DOLLAR_SIGN_ = 293, + _AT_KEYWORD_ = 294, + _LET_ = 295, + _COLON_EQ_ = 296, + _WHERE_ = 297, + _BY_ = 298, + _ORDER_ = 299, + _STABLE_ = 300, + _ASCENDING_ = 301, + _DESCENDING_ = 302, + _EMPTY_KEYWORD_ = 303, + _GREATEST_ = 304, + _LEAST_ = 305, + _COLLATION_ = 306, + _SOME_ = 307, + _EVERY_ = 308, + _SATISFIES_ = 309, + _TYPESWITCH_ = 310, + _CASE_ = 311, + _AS_ = 312, + _IF_ = 313, + _THEN_ = 314, + _ELSE_ = 315, + _OR_ = 316, + _AND_ = 317, + _INSTANCE_ = 318, + _OF_ = 319, + _CASTABLE_ = 320, + _TO_ = 321, + _PLUS_ = 322, + _MINUS_ = 323, + _MULTIPLY_ = 324, + _DIV_ = 325, + _INTEGER_DIV_ = 326, + _MOD_ = 327, + _UNION_ = 328, + _VERTICAL_BAR_ = 329, + _INTERSECT_ = 330, + _EXCEPT_ = 331, + _SLASH_ = 332, + _SLASHSLASH_ = 333, + _LBRACK_ = 334, + _RBRACK_ = 335, + _VALIDATE_ = 336, + _MODE_LAX_ = 337, + _MODE_STRICT_ = 338, + _CAST_ = 339, + _TREAT_ = 340, + _EQUALS_ = 341, + _NOT_EQUALS_ = 342, + _LT_ = 343, + _LT_EQUALS_ = 344, + _GT_ = 345, + _GT_EQUALS_ = 346, + _FORTRAN_EQ_ = 347, + _FORTRAN_NE_ = 348, + _FORTRAN_LT_ = 349, + _FORTRAN_LE_ = 350, + _FORTRAN_GT_ = 351, + _FORTRAN_GE_ = 352, + _IS_ = 353, + _LT_LT_ = 354, + _GT_GT_ = 355, + _DOT_ = 356, + _AT_ = 357, + _DOT_DOT_ = 358, + _AXIS_CHILD_ = 359, + _AXIS_DESCENDANT_ = 360, + _AXIS_ATTRIBUTE_ = 361, + _AXIS_SELF_ = 362, + _AXIS_DESCENDANT_OR_SELF_ = 363, + _AXIS_PARENT_ = 364, + _AXIS_NAMESPACE_ = 365, + _STAR_ = 366, + _PROCESSING_INSTRUCTION_LPAR_ = 367, + _COMMENT_LPAR_ = 368, + _TEXT_LPAR_ = 369, + _NODE_LPAR_ = 370, + _LPAR_ = 371, + _RPAR_ = 372, + _START_TAG_OPEN_ = 373, + _EMPTY_TAG_CLOSE_ = 374, + _VALUE_INDICATOR_ = 375, + _END_TAG_OPEN_ = 376, + _TAG_CLOSE_ = 377, + _DOCUMENT_CONSTR_ = 378, + _ELEMENT_CONSTR_ = 379, + _ATTRIBUTE_CONSTR_ = 380, + _TEXT_CONSTR_ = 381, + _PROCESSING_INSTRUCTION_START_ = 382, + _LCURLY_BRACE_ESCAPE_ = 383, + _RCURLY_BRACE_ESCAPE_ = 384, + _OPEN_QUOT_ = 385, + _CLOSE_QUOT_ = 386, + _OPEN_APOS_ = 387, + _CLOSE_APOS_ = 388, + _LBRACE_ = 389, + _RBRACE_ = 390, + _PRESERVE_ = 391, + _STRIP_ = 392, + _NAMESPACE_ = 393, + _EXPR_AS_ = 394, + _EMPTY_ = 395, + _ITEM_ = 396, + _NILLABLE_ = 397, + _DOCUMENT_NODE_LPAR_ = 398, + _ATTRIBUTE_LPAR_ = 399, + _ELEMENT_LPAR_ = 400, + _EXTERNAL_ = 401, + _PROCESSING_INSTRUCTION_CONSTR_ = 402, + _COMMENT_CONSTR_ = 403, + _AXIS_ANCESTOR_OR_SELF_ = 404, + _AXIS_ANCESTOR_ = 405, + _AXIS_FOLLOWING_SIBLING_ = 406, + _AXIS_FOLLOWING_ = 407, + _AXIS_PRECEDING_SIBLING_ = 408, + _AXIS_PRECEDING_ = 409, + _SEMICOLON_ = 410, + _SCHEMA_ELEMENT_LPAR_ = 411, + _SCHEMA_ATTRIBUTE_LPAR_ = 412, + _ORDERED_ = 413, + _UNORDERED_ = 414, + _ORDERING_UNORDERED_ = 415, + _ORDERING_ORDERED_ = 416, + _ZERO_OR_ONE_ = 417, + _ONE_OR_MORE_ = 418, + _ZERO_OR_MORE_ = 419, + _ENCODING_ = 420, + _NO_PRESERVE_ = 421, + _INHERIT_ = 422, + _NO_INHERIT_ = 423, + _DECLARE_ = 424, + _BOUNDARYSPACE_ = 425, + _BASEURI_ = 426, + _CONSTRUCTION_ = 427, + _ORDERING_ = 428, + _DEFAULT_ = 429, + _COPY_NAMESPACES_ = 430, + _VARIABLE_KEYWORD_ = 431, + _OPTION_ = 432, + _XQUERY_ = 433, + _VERSION_ = 434, + _IMPORT_ = 435, + _SCHEMA_ = 436, + _MODULE_ = 437, + _ELEMENT_ = 438, + _FUNCTION_ = 439, + _SCORE_ = 440, + _FTCONTAINS_ = 441, + _WEIGHT_ = 442, + _DECLARE_FT_OPTION_ = 443, + _DOUBLE_VERTICAL_BAR_ = 444, + _DOUBLE_AMPERSAND_ = 445, + _NOT_IN_ = 446, + _BANG_ = 447, + _WINDOW_ = 448, + _DISTANCE_ = 449, + _OCCURS_ = 450, + _TIMES_ = 451, + _SAME_ = 452, + _DIFFERENT_ = 453, + _AT_START_ = 454, + _AT_END_ = 455, + _ENTIRE_CONTENT_ = 456, + _LOWERCASE_ = 457, + _UPPERCASE_ = 458, + _CASE_INSENSITIVE_ = 459, + _CASE_SENSITIVE_ = 460, + _WITH_DIACRITICS_ = 461, + _WITHOUT_DIACRITICS_ = 462, + _DIACRITICS_SENSITIVE_ = 463, + _DIACRITICS_INSENSITIVE_ = 464, + _WITH_STEMMING_ = 465, + _WITHOUT_STEMMING_ = 466, + _WITH_THESAURUS_ = 467, + _WITHOUT_THESAURUS_ = 468, + _RELATIONSHIP_ = 469, + _LEVELS_ = 470, + _WITH_STOP_WORDS_ = 471, + _WITHOUT_STOP_WORDS_ = 472, + _WITH_DEFAULT_STOP_WORDS_ = 473, + _LANGUAGE_ = 474, + _WITH_WILDCARDS_ = 475, + _WITHOUT_WILDCARDS_ = 476, + _ANY_ = 477, + _ANY_WORD_ = 478, + _ALL_ = 479, + _ALL_WORDS_ = 480, + _PHRASE_ = 481, + _EXACTLY_ = 482, + _AT_LEAST_ = 483, + _AT_MOST_ = 484, + _FROM_ = 485, + _WORDS_ = 486, + _SENTENCES_ = 487, + _PARAGRAPHS_ = 488, + _SENTENCE_ = 489, + _PARAGRAPH_ = 490, + _WITHOUT_CONTENT_ = 491, + _EOF_ = 492 + }; +#endif +/* Tokens. */ +#define MYEOF 0 +#define _QNAME_ 258 +#define _FUNCTION_CALL_ 259 +#define _TAG_NAME_ 260 +#define _ATTRIBUTE_NAME_ 261 +#define _STRING_LITERAL_ 262 +#define _VARIABLE_ 263 +#define _CHAR_ 264 +#define _CHAR_REF_ 265 +#define _PREDEFINED_ENTITY_REF_ 266 +#define _NCNAME_COLON_STAR_ 267 +#define _STAR_COLON_NCNAME_ 268 +#define _NCNAME_ 269 +#define _PI_TARGET_ 270 +#define _NAMED_ATTRIBUTE_CONSTR_ 271 +#define _NAMED_ELEMENT_CONSTR_ 272 +#define _INTEGER_NUMBER_ 273 +#define _DECIMAL_NUMBER_ 274 +#define _DOUBLE_NUMBER_ 275 +#define _XML_COMMENT_ 276 +#define _CDATA_SECTION_ 277 +#define _PROCESSING_INSTRUCTION_CONTENT_ 278 +#define _NAMED_PROCESSING_INSTRUCTION_CONSTR_ 279 +#define _PRAGMA_NAME_ 280 +#define _PRAGMA_CONTENT_ 281 +#define _XQUERY_COMMENT_ 282 +#define _XQUERY_WHITESPACE_ 283 +#define _XQUERY_ERROR_ 284 +#define _PRAGMA_OPEN_ 285 +#define _PRAGMA_CLOSE_ 286 +#define _ESCAPE_APOS_ 287 +#define _ESCAPE_QUOT_ 288 +#define _COMMA_ 289 +#define _RETURN_ 290 +#define _FOR_ 291 +#define _IN_ 292 +#define _DOLLAR_SIGN_ 293 +#define _AT_KEYWORD_ 294 +#define _LET_ 295 +#define _COLON_EQ_ 296 +#define _WHERE_ 297 +#define _BY_ 298 +#define _ORDER_ 299 +#define _STABLE_ 300 +#define _ASCENDING_ 301 +#define _DESCENDING_ 302 +#define _EMPTY_KEYWORD_ 303 +#define _GREATEST_ 304 +#define _LEAST_ 305 +#define _COLLATION_ 306 +#define _SOME_ 307 +#define _EVERY_ 308 +#define _SATISFIES_ 309 +#define _TYPESWITCH_ 310 +#define _CASE_ 311 +#define _AS_ 312 +#define _IF_ 313 +#define _THEN_ 314 +#define _ELSE_ 315 +#define _OR_ 316 +#define _AND_ 317 +#define _INSTANCE_ 318 +#define _OF_ 319 +#define _CASTABLE_ 320 +#define _TO_ 321 +#define _PLUS_ 322 +#define _MINUS_ 323 +#define _MULTIPLY_ 324 +#define _DIV_ 325 +#define _INTEGER_DIV_ 326 +#define _MOD_ 327 +#define _UNION_ 328 +#define _VERTICAL_BAR_ 329 +#define _INTERSECT_ 330 +#define _EXCEPT_ 331 +#define _SLASH_ 332 +#define _SLASHSLASH_ 333 +#define _LBRACK_ 334 +#define _RBRACK_ 335 +#define _VALIDATE_ 336 +#define _MODE_LAX_ 337 +#define _MODE_STRICT_ 338 +#define _CAST_ 339 +#define _TREAT_ 340 +#define _EQUALS_ 341 +#define _NOT_EQUALS_ 342 +#define _LT_ 343 +#define _LT_EQUALS_ 344 +#define _GT_ 345 +#define _GT_EQUALS_ 346 +#define _FORTRAN_EQ_ 347 +#define _FORTRAN_NE_ 348 +#define _FORTRAN_LT_ 349 +#define _FORTRAN_LE_ 350 +#define _FORTRAN_GT_ 351 +#define _FORTRAN_GE_ 352 +#define _IS_ 353 +#define _LT_LT_ 354 +#define _GT_GT_ 355 +#define _DOT_ 356 +#define _AT_ 357 +#define _DOT_DOT_ 358 +#define _AXIS_CHILD_ 359 +#define _AXIS_DESCENDANT_ 360 +#define _AXIS_ATTRIBUTE_ 361 +#define _AXIS_SELF_ 362 +#define _AXIS_DESCENDANT_OR_SELF_ 363 +#define _AXIS_PARENT_ 364 +#define _AXIS_NAMESPACE_ 365 +#define _STAR_ 366 +#define _PROCESSING_INSTRUCTION_LPAR_ 367 +#define _COMMENT_LPAR_ 368 +#define _TEXT_LPAR_ 369 +#define _NODE_LPAR_ 370 +#define _LPAR_ 371 +#define _RPAR_ 372 +#define _START_TAG_OPEN_ 373 +#define _EMPTY_TAG_CLOSE_ 374 +#define _VALUE_INDICATOR_ 375 +#define _END_TAG_OPEN_ 376 +#define _TAG_CLOSE_ 377 +#define _DOCUMENT_CONSTR_ 378 +#define _ELEMENT_CONSTR_ 379 +#define _ATTRIBUTE_CONSTR_ 380 +#define _TEXT_CONSTR_ 381 +#define _PROCESSING_INSTRUCTION_START_ 382 +#define _LCURLY_BRACE_ESCAPE_ 383 +#define _RCURLY_BRACE_ESCAPE_ 384 +#define _OPEN_QUOT_ 385 +#define _CLOSE_QUOT_ 386 +#define _OPEN_APOS_ 387 +#define _CLOSE_APOS_ 388 +#define _LBRACE_ 389 +#define _RBRACE_ 390 +#define _PRESERVE_ 391 +#define _STRIP_ 392 +#define _NAMESPACE_ 393 +#define _EXPR_AS_ 394 +#define _EMPTY_ 395 +#define _ITEM_ 396 +#define _NILLABLE_ 397 +#define _DOCUMENT_NODE_LPAR_ 398 +#define _ATTRIBUTE_LPAR_ 399 +#define _ELEMENT_LPAR_ 400 +#define _EXTERNAL_ 401 +#define _PROCESSING_INSTRUCTION_CONSTR_ 402 +#define _COMMENT_CONSTR_ 403 +#define _AXIS_ANCESTOR_OR_SELF_ 404 +#define _AXIS_ANCESTOR_ 405 +#define _AXIS_FOLLOWING_SIBLING_ 406 +#define _AXIS_FOLLOWING_ 407 +#define _AXIS_PRECEDING_SIBLING_ 408 +#define _AXIS_PRECEDING_ 409 +#define _SEMICOLON_ 410 +#define _SCHEMA_ELEMENT_LPAR_ 411 +#define _SCHEMA_ATTRIBUTE_LPAR_ 412 +#define _ORDERED_ 413 +#define _UNORDERED_ 414 +#define _ORDERING_UNORDERED_ 415 +#define _ORDERING_ORDERED_ 416 +#define _ZERO_OR_ONE_ 417 +#define _ONE_OR_MORE_ 418 +#define _ZERO_OR_MORE_ 419 +#define _ENCODING_ 420 +#define _NO_PRESERVE_ 421 +#define _INHERIT_ 422 +#define _NO_INHERIT_ 423 +#define _DECLARE_ 424 +#define _BOUNDARYSPACE_ 425 +#define _BASEURI_ 426 +#define _CONSTRUCTION_ 427 +#define _ORDERING_ 428 +#define _DEFAULT_ 429 +#define _COPY_NAMESPACES_ 430 +#define _VARIABLE_KEYWORD_ 431 +#define _OPTION_ 432 +#define _XQUERY_ 433 +#define _VERSION_ 434 +#define _IMPORT_ 435 +#define _SCHEMA_ 436 +#define _MODULE_ 437 +#define _ELEMENT_ 438 +#define _FUNCTION_ 439 +#define _SCORE_ 440 +#define _FTCONTAINS_ 441 +#define _WEIGHT_ 442 +#define _DECLARE_FT_OPTION_ 443 +#define _DOUBLE_VERTICAL_BAR_ 444 +#define _DOUBLE_AMPERSAND_ 445 +#define _NOT_IN_ 446 +#define _BANG_ 447 +#define _WINDOW_ 448 +#define _DISTANCE_ 449 +#define _OCCURS_ 450 +#define _TIMES_ 451 +#define _SAME_ 452 +#define _DIFFERENT_ 453 +#define _AT_START_ 454 +#define _AT_END_ 455 +#define _ENTIRE_CONTENT_ 456 +#define _LOWERCASE_ 457 +#define _UPPERCASE_ 458 +#define _CASE_INSENSITIVE_ 459 +#define _CASE_SENSITIVE_ 460 +#define _WITH_DIACRITICS_ 461 +#define _WITHOUT_DIACRITICS_ 462 +#define _DIACRITICS_SENSITIVE_ 463 +#define _DIACRITICS_INSENSITIVE_ 464 +#define _WITH_STEMMING_ 465 +#define _WITHOUT_STEMMING_ 466 +#define _WITH_THESAURUS_ 467 +#define _WITHOUT_THESAURUS_ 468 +#define _RELATIONSHIP_ 469 +#define _LEVELS_ 470 +#define _WITH_STOP_WORDS_ 471 +#define _WITHOUT_STOP_WORDS_ 472 +#define _WITH_DEFAULT_STOP_WORDS_ 473 +#define _LANGUAGE_ 474 +#define _WITH_WILDCARDS_ 475 +#define _WITHOUT_WILDCARDS_ 476 +#define _ANY_ 477 +#define _ANY_WORD_ 478 +#define _ALL_ 479 +#define _ALL_WORDS_ 480 +#define _PHRASE_ 481 +#define _EXACTLY_ 482 +#define _AT_LEAST_ 483 +#define _AT_MOST_ 484 +#define _FROM_ 485 +#define _WORDS_ 486 +#define _SENTENCES_ 487 +#define _PARAGRAPHS_ 488 +#define _SENTENCE_ 489 +#define _PARAGRAPH_ 490 +#define _WITHOUT_CONTENT_ 491 +#define _EOF_ 492 + + + + +#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) +typedef int YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +#if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED) +typedef struct YYLTYPE +{ + int first_line; + int first_column; + int last_line; + int last_column; +} YYLTYPE; +# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ +# define YYLTYPE_IS_DECLARED 1 +# define YYLTYPE_IS_TRIVIAL 1 +#endif + + + + diff --git a/src/parser/XQParser.y b/src/parser/XQParser.y new file mode 100644 index 00000000..0e0001e8 --- /dev/null +++ b/src/parser/XQParser.y @@ -0,0 +1,3752 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQParser.y,v 1.15 2006/11/21 14:42:40 jpcs Exp $ + */ + +%{ + +#if defined(WIN32) && !defined(__CYGWIN__) +// turn off the warnings "switch statement contains 'default' but no 'case' labels" +// "'yyerrlab1' : unreferenced label" +#pragma warning(disable : 4065 4102) +#endif + +#include +#include + +#include "../lexer/XQLexer.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 +#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 "../config/xqilla_config.h" + +#define YYPARSE_PARAM qp +#define YYDEBUG 1 +#define YYERROR_VERBOSE + +// this removes a memory leak occurring when an error is found in the query (we throw an exception from inside +// yyerror, preventing the bison-generated code from cleaning up the memory); by defining this macro we use +// stack-based memory instead of the heap +#define YYSTACK_USE_ALLOCA 1 +#if HAVE_ALLOCA_H +#include +#elif defined __GNUC__ +#undef alloca +#define alloca __builtin_alloca +#elif defined _AIX +#define alloca __alloca +#elif defined _MSC_VER +#include +#else +#include +#ifdef __cplusplus +extern "C" +#endif +void *alloca (size_t); +#endif + +#define QP ((XQParserArgs*)qp) +#define CONTEXT (QP->_context) +#define LANGUAGE (QP->_lexer->getLanguage()) +#define MEMMGR (CONTEXT->getMemoryManager()) + +#define REJECT_NOT_XQUERY(where,pos) if(!QP->_lexer->isXQuery()) { yyerror(LANGUAGE, #where, (pos).first_line, (pos).first_column); } +#define REJECT_NOT_XPATH(where,pos) if(!QP->_lexer->isXPath()) { yyerror(LANGUAGE, #where, (pos).first_line, (pos).first_column); } +#define REJECT_NOT_FULLTEXT(where,pos) if(!QP->_lexer->isFullText()) { yyerror(LANGUAGE, #where, (pos).first_line, (pos).first_column); } + +#define WRAP(pos,object) (wrapForDebug((QP), (object), NULL, (pos).first_line, (pos).first_column)) +#define FNWRAP(pos,name,object) (wrapForDebug((QP),(object),(name),(pos).first_line, (pos).first_column)) + +#define LOCATION(pos,name) LocationInfo name(QP->_query->getFile(), (pos).first_line, (pos).first_column) + +#define BIT_ORDERING_SPECIFIED 0 +#define BIT_BOUNDARY_SPECIFIED 1 +#define BIT_COLLATION_SPECIFIED 2 +#define BIT_BASEURI_SPECIFIED 3 +#define BIT_CONSTRUCTION_SPECIFIED 4 +#define BIT_EMPTYORDERING_SPECIFIED 5 +#define BIT_COPYNAMESPACE_SPECIFIED 6 +#define BIT_DEFAULTELEMENTNAMESPACE_SPECIFIED 7 +#define BIT_DEFAULTFUNCTIONNAMESPACE_SPECIFIED 8 +#define BIT_DECLARE_SECOND_STEP 9 + +#undef yylex +#define yylex QP->_lexer->yylex +#undef yyerror +#define yyerror QP->_lexer->error + +static XMLCh szQuote[]= { XERCES_CPP_NAMESPACE_QUALIFIER chDoubleQuote, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; +static XMLCh szApos[]= { XERCES_CPP_NAMESPACE_QUALIFIER chSingleQuote, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; +static XMLCh szCurlyOpen[]= { XERCES_CPP_NAMESPACE_QUALIFIER chOpenCurly, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; +static XMLCh szCurlyClose[]= { XERCES_CPP_NAMESPACE_QUALIFIER chCloseCurly, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; +static XMLCh szFLWOR[] = { XERCES_CPP_NAMESPACE_QUALIFIER chLatin_F, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_L, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_W, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_O, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_R, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; +static XMLCh sz1_0[]= { XERCES_CPP_NAMESPACE_QUALIFIER chDigit_1, XERCES_CPP_NAMESPACE_QUALIFIER chPeriod, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0, + XERCES_CPP_NAMESPACE_QUALIFIER chNull }; +static XMLCh szTrue[]= { XERCES_CPP_NAMESPACE_QUALIFIER chLatin_T, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; +static XMLCh szFalse[]= { XERCES_CPP_NAMESPACE_QUALIFIER chLatin_F, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + +static inline bool isAllSpaces(const XMLCh* str) +{ + while(*str) + { + if(*str!='\r' && *str != '\n' && *str != ' ' && *str != '\t') + return false; + str++; + } + return true; +} + +static inline XQNav* getNavigation(ASTNode *possibleNav, XPath2MemoryManager * expr) +{ + ASTNode* originalObj=possibleNav; + if((unsigned int)possibleNav->getType()==ASTNode::DEBUG_HOOK) + possibleNav=((XQDebugHook*)possibleNav)->m_impl; + if(possibleNav->getType()==ASTNode::NAVIGATION) + return (XQNav*)possibleNav; + else + { + XQNav* nav=new (expr) XQNav(expr); + nav->addStep(originalObj); + return nav; + } +} + +static inline VectorOfASTNodes packageArgs(ASTNode *arg1Impl, ASTNode *arg2Impl, XPath2MemoryManager* memMgr) +{ + VectorOfASTNodes args=VectorOfASTNodes(2,(ASTNode*)NULL,XQillaAllocator(memMgr)); + args[0]=arg1Impl; + args[1]=arg2Impl; + + return args; +} + +static void merge_strings(DynamicContext* context, VectorOfASTNodes* vec, XMLCh* toBeAdded) +{ + if(vec->size()>0 && vec->back()!=0 && vec->back()->getType()==ASTNode::LITERAL) + { + XQLiteral *lit = (XQLiteral*)vec->back(); + const XMLCh* string=lit->getItemConstructor()->createItem(context)->asString(context); + string=XPath2Utils::concatStrings(string,toBeAdded,context->getMemoryManager()); + + AnyAtomicTypeConstructor *ic = new (context->getMemoryManager()) + AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + string, AnyAtomicType::STRING); + lit->setItemConstructor(ic); + } + else + { + if(vec->size()>0 && vec->back()==0) + vec->pop_back(); + AnyAtomicTypeConstructor *ic = new (context->getMemoryManager()) + AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + toBeAdded, AnyAtomicType::STRING); + + vec->push_back(new (context->getMemoryManager()) + XQLiteral(ic, context->getMemoryManager())); + } +} + +template +TYPE *wrapForDebug(XQParserArgs *qp, TYPE* pObjToWrap, + const XMLCh* fnName, unsigned int line, unsigned int column) +{ + if(pObjToWrap->getLine() == 0) + pObjToWrap->setLocationInfo(QP->_query->getFile(), line, column); + return pObjToWrap; +} + +template<> +ASTNode *wrapForDebug(XQParserArgs *qp, ASTNode* pObjToWrap, + const XMLCh* fnName, unsigned int line, unsigned int column) +{ + if(pObjToWrap->getLine() == 0) + pObjToWrap->setLocationInfo(QP->_query->getFile(), line, column); + + if(!CONTEXT->isDebuggingEnabled() && !CONTEXT->getDebugCallback()) + return pObjToWrap; + if(fnName==NULL && (unsigned int)pObjToWrap->getType()==ASTNode::DEBUG_HOOK) + return pObjToWrap; + return new (MEMMGR) XQDebugHook(QP->_query->getFile(), line, column, pObjToWrap, fnName, MEMMGR); +} + +namespace XQParser { + +%} + +/* this gives a nice name to the $end token */ +%token MYEOF 0 "" + +/* str */ +%token _QNAME_ "" +%token _FUNCTION_CALL_ "(" +%token _TAG_NAME_ "" +%token _ATTRIBUTE_NAME_ "" +%token _STRING_LITERAL_ "'...'" +%token _VARIABLE_ "" +%token _CHAR_ "" +%token _CHAR_REF_ "&#XXX;" +%token _PREDEFINED_ENTITY_REF_ "" +%token _NCNAME_COLON_STAR_ ":*" +%token _STAR_COLON_NCNAME_ "*:" +%token _NCNAME_ "" +%token _PI_TARGET_ "" +%token _NAMED_ATTRIBUTE_CONSTR_ "attribute {" +%token _NAMED_ELEMENT_CONSTR_ "element {" +%token _INTEGER_NUMBER_ "" +%token _DECIMAL_NUMBER_ "" +%token _DOUBLE_NUMBER_ "" +%token _XML_COMMENT_ "" +%token _CDATA_SECTION_ "" +%token _PROCESSING_INSTRUCTION_CONTENT_ "...?>" +%token _NAMED_PROCESSING_INSTRUCTION_CONSTR_ "processing-instruction {" +%token _PRAGMA_NAME_ "" +%token _PRAGMA_CONTENT_ "" + +/* tok */ +%token _XQUERY_COMMENT_ "(: comment :)" +%token _XQUERY_WHITESPACE_ +%token _XQUERY_ERROR_ +%token _PRAGMA_OPEN_ "(#" +%token _PRAGMA_CLOSE_ "#)" +%token _ESCAPE_APOS_ "''" +%token _ESCAPE_QUOT_ "\"\"" +%token _COMMA_ "," +%token _RETURN_ "return" +%token _FOR_ "for" +%token _IN_ "in" +%token _DOLLAR_SIGN_ "$" +%token _AT_KEYWORD_ "at" +%token _LET_ "let" +%token _COLON_EQ_ ":=" +%token _WHERE_ "where" +%token _BY_ "by" +%token _ORDER_ "order" +%token _STABLE_ "stable" +%token _ASCENDING_ "ascending" +%token _DESCENDING_ "descending" +%token _EMPTY_KEYWORD_ "empty" +%token _GREATEST_ "greatest" +%token _LEAST_ "least" +%token _COLLATION_ "collation" +%token _SOME_ "some" +%token _EVERY_ "every" +%token _SATISFIES_ "satisfies" +%token _TYPESWITCH_ "typeswitch" +%token _CASE_ "case" +%token _AS_ "as" +%token _IF_ "if" +%token _THEN_ "then" +%token _ELSE_ "else" +%token _OR_ "or" +%token _AND_ "and" +%token _INSTANCE_ "instance" +%token _OF_ "of" +%token _CASTABLE_ "castable" +%token _TO_ "to" +%token _PLUS_ "+ (arithmetic operator)" +%token _MINUS_ "- (arithmetic operator)" +%token _MULTIPLY_ "* (arithmetic operator)" +%token _DIV_ "div" +%token _INTEGER_DIV_ "idiv" +%token _MOD_ "mod" +%token _UNION_ "union" +%token _VERTICAL_BAR_ "|" +%token _INTERSECT_ "intersect" +%token _EXCEPT_ "except" +%token _SLASH_ "/" +%token _SLASHSLASH_ "//" +%token _LBRACK_ "[" +%token _RBRACK_ "]" +%token _VALIDATE_ "validate" +%token _MODE_LAX_ "lax" +%token _MODE_STRICT_ "strict" +%token _CAST_ "cast" +%token _TREAT_ "treat" +%token _EQUALS_ "= (comparison operator)" +%token _NOT_EQUALS_ "!=" +%token _LT_ "< (comparison operator)" +%token _LT_EQUALS_ "<=" +%token _GT_ "> (comparison operator)" +%token _GT_EQUALS_ ">=" +%token _FORTRAN_EQ_ "eq" +%token _FORTRAN_NE_ "ne" +%token _FORTRAN_LT_ "lt" +%token _FORTRAN_LE_ "le" +%token _FORTRAN_GT_ "gt" +%token _FORTRAN_GE_ "ge" +%token _IS_ "is" +%token _LT_LT_ "<<" +%token _GT_GT_ ">>" +%token _DOT_ "." +%token _AT_ "@" +%token _DOT_DOT_ ".." +%token _AXIS_CHILD_ "child::" +%token _AXIS_DESCENDANT_ "descendant::" +%token _AXIS_ATTRIBUTE_ "attribute::" +%token _AXIS_SELF_ "self::" +%token _AXIS_DESCENDANT_OR_SELF_ "descendant-or-self::" +%token _AXIS_PARENT_ "parent::" +%token _AXIS_NAMESPACE_ "namespace::" +%token _STAR_ "* (wildcard)" +%token _PROCESSING_INSTRUCTION_LPAR_ "processing-instruction(" +%token _COMMENT_LPAR_ "comment(" +%token _TEXT_LPAR_ "text(" +%token _NODE_LPAR_ "node(" +%token _LPAR_ "(" +%token _RPAR_ ")" +%token _START_TAG_OPEN_ "<" +%token _EMPTY_TAG_CLOSE_ "/>" +%token _VALUE_INDICATOR_ "=" +%token _END_TAG_OPEN_ ">" +%token _TAG_CLOSE_ " FunctionDecl +%type Param +%type ParamList +%type Expr ExprSingle OrExpr AndExpr EnclosedExpr FLWORExpr IfExpr ComparisonExpr DecimalLiteral VarRef +%type RangeExpr AdditiveExpr MultiplicativeExpr UnionExpr QuantifiedExpr StringLiteral Literal ContextItemExpr +%type UnaryExpr ValidateExpr CastExpr TreatExpr IntersectExceptExpr ParenthesizedExpr PrimaryExpr FunctionCall +%type RelativePathExpr StepExpr AxisStep FilterExpr TypeswitchExpr ValueExpr PathExpr NumericLiteral IntegerLiteral +%type CastableExpr Constructor ComputedConstructor DirElemConstructor DirCommentConstructor DirPIConstructor +%type CompElemConstructor CompTextConstructor CompPIConstructor CompCommentConstructor OrderedExpr UnorderedExpr +%type CompAttrConstructor WhereClause CompDocConstructor DoubleLiteral InstanceofExpr DirectConstructor +%type ContentExpr ExtensionExpr CdataSection FTContainsExpr FTIgnoreOption +%type ForwardStep ReverseStep AbbrevForwardStep AbbrevReverseStep + +%type FTSelection FTWords FTWordsSelection FTUnaryNot FTMildnot FTAnd FTOr +%type FTProximity +%type FTSelectionOptions +%type FTAnyallOption +%type FTRange +%type FTUnit FTBigUnit + +%type DirElementContent DirAttributeList QuotAttrValueContent AposAttrValueContent DirAttributeValue FunctionCallArgumentList +%type PredicateList +%type ForwardAxis ReverseAxis +%type NodeTest NameTest KindTest AttributeTest SchemaAttributeTest +%type Wildcard PITest CommentTest TextTest AnyKindTest ElementTest DocumentTest SchemaElementTest +%type QName AtomicType TypeName ElementName AttributeName ElementNameOrWildcard AttribNameOrWildcard AttributeDeclaration ElementDeclaration +%type SequenceType TypeDeclaration SingleType +%type OccurrenceIndicator +%type ItemType +%type ForBinding LetBinding QuantifyBinding +%type FlworExprForLetList ForOrLetClause ForClause LetClause ForBindingList LetBindingList QuantifyBindingList +%type CaseClause +%type CaseClauseList +%type OrderDirection EmptyHandling +%type OrderSpecList +%type OrderSpec +%type OrderByClause +%type ResourceLocations +%type PositionalVar SchemaPrefix CommonContent URILiteral FTScoreVar +%type PreserveMode InheritMode + +%start Module + +%pure_parser + +%% + +// Parser rules go here. + +// [1] Module ::= VersionDecl? (MainModule | LibraryModule) +Module: + VersionDecl MainModule + | VersionDecl LibraryModule + | MainModule + | LibraryModule + ; + +// [2] VersionDecl ::= <"xquery" "version" StringLiteral> ("encoding" StringLiteral)? Separator +VersionDecl: + _XQUERY_ _VERSION_ _STRING_LITERAL_ Separator + { + REJECT_NOT_XQUERY(VersionDecl, @1); + + if(!XPath2Utils::equals($3,sz1_0)) + yyerror(@2, "This XQuery processor only supports version 1.0 of the specs [err:XQST0031]"); + } + | _XQUERY_ _VERSION_ _STRING_LITERAL_ _ENCODING_ _STRING_LITERAL_ Separator + { + REJECT_NOT_XQUERY(VersionDecl, @1); + + if(!XPath2Utils::equals($3,sz1_0)) + yyerror(@2, "This XQuery processor only supports version 1.0 of the specs [err:XQST0031]"); + bool bValidEnc=false; + if(($5[0] >= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_A && $5[0] <= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_Z) || + ($5[0] >= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a && $5[0] <= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_z)) + { + bValidEnc=true; + int nLen=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen($5); + for(int i=1;i= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_A && $5[i] <= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_Z) || + ($5[i] >= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_a && $5[i] <= XERCES_CPP_NAMESPACE_QUALIFIER chLatin_z) || + ($5[i] >= XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0 && $5[i] <= XERCES_CPP_NAMESPACE_QUALIFIER chDigit_9) || + $5[i] == XERCES_CPP_NAMESPACE_QUALIFIER chPeriod || + $5[i] == XERCES_CPP_NAMESPACE_QUALIFIER chDash) + { + continue; + } + bValidEnc=false; + break; + } + } + if(!bValidEnc) + yyerror(@5, "The specified encoding does not conform to the definition of EncName [err:XQST0087]"); + // TODO: store the encoding somewhere + } + ; + +// [3] MainModule ::= Prolog QueryBody +MainModule: + Prolog QueryBody + { + } + ; + +// [4] LibraryModule ::= ModuleDecl Prolog +LibraryModule: + ModuleDecl Prolog + { + } + ; + +// [5] ModuleDecl ::= <"module" "namespace"> NCName "=" URILiteral Separator +ModuleDecl: + _MODULE_ _NAMESPACE_ _NCNAME_ _EQUALS_ URILiteral Separator + { + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen($5)==0) + yyerror(@5, "The literal that specifies the namespace of a module must not be of zero length [err:XQST0088]"); + QP->_query->setIsLibraryModule(); + QP->_query->setModuleTargetNamespace($5); + CONTEXT->setNamespaceBinding($3,$5); + } + ; + +// [6] Prolog ::= ((Setter | Import | NamespaceDecl | DefaultNamespaceDecl) Separator)* +// ((VarDecl | FunctionDecl | OptionDecl | FTOptionDecl) Separator)* +Prolog: + /* empty */ + | Prolog Setter Separator + { + if(QP->_flags.get(BIT_DECLARE_SECOND_STEP)) + yyerror(@2, "Prolog contains a setter declaration after a variable, function or option declaration"); + } + | Prolog Import Separator + { + if(QP->_flags.get(BIT_DECLARE_SECOND_STEP)) + yyerror(@2, "Prolog contains an import declaration after a variable, function or option declaration"); + } + | Prolog NamespaceDecl Separator + { + if(QP->_flags.get(BIT_DECLARE_SECOND_STEP)) + yyerror(@2, "Prolog contains a namespace declaration after a variable, function or option declaration"); + } + | Prolog DefaultNamespaceDecl Separator + { + if(QP->_flags.get(BIT_DECLARE_SECOND_STEP)) + yyerror(@2, "Prolog contains a default namespace declaration after a variable, function or option declaration"); + } + | Prolog VarDecl Separator + { + QP->_flags.set(BIT_DECLARE_SECOND_STEP); + } + | Prolog FunctionDecl Separator + { + QP->_flags.set(BIT_DECLARE_SECOND_STEP); + XQUserFunction* decl=$2; + CONTEXT->addCustomFunction(decl); + QP->_query->addFunction(decl); + } + | Prolog OptionDecl Separator + { + QP->_flags.set(BIT_DECLARE_SECOND_STEP); + } + | Prolog FTOptionDecl Separator + { + QP->_flags.set(BIT_DECLARE_SECOND_STEP); + } +; + +// [7] Setter ::= BoundarySpaceDecl +// | DefaultCollationDecl +// | BaseURIDecl +// | ConstructionDecl +// | OrderingModeDecl +// | EmptyOrderDecl +// | CopyNamespacesDecl +Setter: + BoundarySpaceDecl + | DefaultCollationDecl + | BaseURIDecl + | ConstructionDecl + | OrderingModeDecl + | EmptyOrderDecl + | CopyNamespacesDecl +; + +// [8] Import ::= SchemaImport | ModuleImport +Import: + SchemaImport + | ModuleImport +; + +// [9] Separator ::= ";" +Separator: + _SEMICOLON_ + ; + +// [10] NamespaceDecl ::= <"declare" "namespace"> NCName "=" URILiteral +NamespaceDecl: + _DECLARE_ _NAMESPACE_ _NCNAME_ _EQUALS_ URILiteral + { + + REJECT_NOT_XQUERY(NamespaceDecl, @1); + // if it has already bound, report an error + if(QP->_namespaceDecls.containsKey($3)) + yyerror(@3, "Namespace prefix has already been bound to a namespace [err:XQST0033]"); + QP->_namespaceDecls.put($3,NULL); + CONTEXT->setNamespaceBinding($3,$5); + } + ; + +// [11] BoundarySpaceDecl ::= <"declare" "boundary-space"> ("preserve" | "strip") +BoundarySpaceDecl : + _DECLARE_ _BOUNDARYSPACE_ _PRESERVE_ + { + REJECT_NOT_XQUERY(BoundarySpaceDecl, @1); + + if(QP->_flags.get(BIT_BOUNDARY_SPECIFIED)) + yyerror(@1, "Prolog contains more than one boundary space declaration [err:XQST0068]"); + QP->_flags.set(BIT_BOUNDARY_SPECIFIED); + CONTEXT->setPreserveBoundarySpace(true); + } + | _DECLARE_ _BOUNDARYSPACE_ _STRIP_ + { + REJECT_NOT_XQUERY(BoundarySpaceDecl, @1); + + if(QP->_flags.get(BIT_BOUNDARY_SPECIFIED)) + yyerror(@1, "Prolog contains more than one boundary space declaration [err:XQST0068]"); + QP->_flags.set(BIT_BOUNDARY_SPECIFIED); + CONTEXT->setPreserveBoundarySpace(false); + } + ; + +// [12] DefaultNamespaceDecl ::= (<"declare" "default" "element"> | <"declare" "default" "function">) "namespace" URILiteral +DefaultNamespaceDecl: + _DECLARE_ _DEFAULT_ _ELEMENT_ _NAMESPACE_ URILiteral + { + REJECT_NOT_XQUERY(DefaultNamespaceDecl, @1); + + if(QP->_flags.get(BIT_DEFAULTELEMENTNAMESPACE_SPECIFIED)) + yyerror(@1, "Prolog contains more than one default element namespace declaration [err:XQST0066]"); + QP->_flags.set(BIT_DEFAULTELEMENTNAMESPACE_SPECIFIED); + CONTEXT->setDefaultElementAndTypeNS($5); + } + | _DECLARE_ _DEFAULT_ _FUNCTION_ _NAMESPACE_ URILiteral + { + REJECT_NOT_XQUERY(DefaultNamespaceDecl, @1); + + if(QP->_flags.get(BIT_DEFAULTFUNCTIONNAMESPACE_SPECIFIED)) + yyerror(@1, "Prolog contains more than one default function namespace declaration [err:XQST0066]"); + QP->_flags.set(BIT_DEFAULTFUNCTIONNAMESPACE_SPECIFIED); + CONTEXT->setDefaultFuncNS($5); + } + ; + +// [13] OptionDecl ::= <"declare" "option"> QName StringLiteral +OptionDecl: + _DECLARE_ _OPTION_ _QNAME_ _STRING_LITERAL_ + { + REJECT_NOT_XQUERY(OptionDecl, @1); + + // validate the QName + QualifiedName qName($3); + const XMLCh* prefix=qName.getPrefix(); + if(prefix==NULL || *prefix==0) + yyerror(@3, "The option name must have a prefix [err:XPST0081]"); + + try + { + LOCATION(@3, loc); + CONTEXT->getUriBoundToPrefix(prefix, &loc); + } + catch(NamespaceLookupException&) + { + yyerror(@3, "The option name is using an undefined namespace prefix [err:XPST0081]"); + } + } + ; + +// [14] FTOptionDecl ::= "declare" "ft-option" FTMatchOption +FTOptionDecl: + _DECLARE_FT_OPTION_ FTMatchOption + { + REJECT_NOT_XQUERY(FTOptionDecl, @1); + REJECT_NOT_FULLTEXT(FTOptionDecl, @1); + } + ; + +// [15] OrderingModeDecl ::= <"declare" "ordering"> ("ordered" | "unordered") +OrderingModeDecl: + _DECLARE_ _ORDERING_ _ORDERING_ORDERED_ + { + REJECT_NOT_XQUERY(OrderingModeDecl, @1); + + if(QP->_flags.get(BIT_ORDERING_SPECIFIED)) + yyerror(@1, "Prolog contains more than one ordering mode declaration [err:XQST0065]"); + QP->_flags.set(BIT_ORDERING_SPECIFIED); + CONTEXT->setNodeSetOrdering(StaticContext::ORDERING_ORDERED); + } + | _DECLARE_ _ORDERING_ _ORDERING_UNORDERED_ + { + REJECT_NOT_XQUERY(OrderingModeDecl, @1); + + if(QP->_flags.get(BIT_ORDERING_SPECIFIED)) + yyerror(@1, "Prolog contains more than one ordering mode declaration [err:XQST0065]"); + QP->_flags.set(BIT_ORDERING_SPECIFIED); + CONTEXT->setNodeSetOrdering(StaticContext::ORDERING_UNORDERED); + } + ; + +// [16] EmptyOrderDecl ::= "declare" "default" "order" "empty" ("greatest" | "least") +EmptyOrderDecl: + _DECLARE_ _DEFAULT_ _ORDER_ _EMPTY_KEYWORD_ _GREATEST_ + { + REJECT_NOT_XQUERY(EmptyOrderDecl, @1); + + if(QP->_flags.get(BIT_EMPTYORDERING_SPECIFIED)) + yyerror(@1, "Prolog contains more than one empty ordering mode declaration [err:XQST0069]"); + QP->_flags.set(BIT_EMPTYORDERING_SPECIFIED); + CONTEXT->setDefaultFLWOROrderingMode(StaticContext::FLWOR_ORDER_EMPTY_GREATEST); + } + | _DECLARE_ _DEFAULT_ _ORDER_ _EMPTY_KEYWORD_ _LEAST_ + { + REJECT_NOT_XQUERY(EmptyOrderDecl, @1); + + if(QP->_flags.get(BIT_EMPTYORDERING_SPECIFIED)) + yyerror(@1, "Prolog contains more than one empty ordering mode declaration [err:XQST0069]"); + QP->_flags.set(BIT_EMPTYORDERING_SPECIFIED); + CONTEXT->setDefaultFLWOROrderingMode(StaticContext::FLWOR_ORDER_EMPTY_LEAST); + } + ; + +// [17] CopyNamespacesDecl ::= <"declare" "copy-namespaces"> PreserveMode "," InheritMode +CopyNamespacesDecl: + _DECLARE_ _COPY_NAMESPACES_ PreserveMode _COMMA_ InheritMode + { + REJECT_NOT_XQUERY(CopyNamespacesDecl, @1); + + if(QP->_flags.get(BIT_COPYNAMESPACE_SPECIFIED)) + yyerror(@1, "Prolog contains more than one copy namespace declaration [err:XQST0055]"); + QP->_flags.set(BIT_COPYNAMESPACE_SPECIFIED); + CONTEXT->setPreserveNamespaces(XPath2Utils::equals($3,szTrue)); + CONTEXT->setInheritNamespaces(XPath2Utils::equals($5,szTrue)); + } +; + +// [18] PreserveMode ::= "preserve" | "no-preserve" +PreserveMode: + _PRESERVE_ + { + $$ = szTrue; + } + | _NO_PRESERVE_ + { + $$ = szFalse; + } + ; + +// [19] InheritMode ::= "inherit" | "no-inherit" +InheritMode: + _INHERIT_ + { + $$ = szTrue; + } + | _NO_INHERIT_ + { + $$ = szFalse; + } + ; + +// [20] DefaultCollationDecl ::= <"declare" "default" "collation"> URILiteral +DefaultCollationDecl: + _DECLARE_ _DEFAULT_ _COLLATION_ URILiteral + { + REJECT_NOT_XQUERY(DefaultCollationDecl, @1); + + if(QP->_flags.get(BIT_COLLATION_SPECIFIED)) + yyerror(@1, "Prolog contains more than one default collation declaration [err:XQST0038]"); + QP->_flags.set(BIT_COLLATION_SPECIFIED); + try + { + LOCATION(@4, loc); + CONTEXT->getCollation($4, &loc); + } + catch(ContextException&) + { + yyerror(@4, "The specified collation does not exist [err:XQST0038]"); + } + CONTEXT->setDefaultCollation($4); + } + ; + +// [21] BaseURIDecl ::= <"declare" "base-uri"> URILiteral +BaseURIDecl: + _DECLARE_ _BASEURI_ URILiteral + { + REJECT_NOT_XQUERY(BaseURIDecl, @1); + + if(QP->_flags.get(BIT_BASEURI_SPECIFIED)) + yyerror(@1, "Prolog contains more than one base URI declaration [err:XQST0032]"); + QP->_flags.set(BIT_BASEURI_SPECIFIED); + CONTEXT->setBaseURI($3); + } + ; + +// [22] SchemaImport ::= <"import" "schema"> SchemaPrefix? URILiteral (<"at" URILiteral> ("," URILiteral)*)? +SchemaImport: + _IMPORT_ _SCHEMA_ SchemaPrefix URILiteral + { + REJECT_NOT_XQUERY(SchemaImport, @1); + + if(XPath2Utils::equals($3, XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString)) + CONTEXT->setDefaultElementAndTypeNS($4); + else if(XPath2Utils::equals($4, XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString)) + yyerror(@1, "A schema that has no target namespace cannot be bound to non-empty prefix [err:XQST0057]"); + else + CONTEXT->setNamespaceBinding($3,$4); + try { + CONTEXT->addSchemaLocation($4,NULL); + } catch(XQException& e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(QP->_query->getFile(), @1.first_line, @1.first_column); + throw e; + } + } + | _IMPORT_ _SCHEMA_ SchemaPrefix URILiteral ResourceLocations + { + REJECT_NOT_XQUERY(SchemaImport, @1); + + if(XPath2Utils::equals($3, XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString)) + CONTEXT->setDefaultElementAndTypeNS($4); + else if(XPath2Utils::equals($4, XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString)) + yyerror(@1, "A schema that has no target namespace cannot be bound to non-empty prefix [err:XQST0057]"); + else + CONTEXT->setNamespaceBinding($3,$4); + try { + CONTEXT->addSchemaLocation($4,$5); + } catch(XQException& e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(QP->_query->getFile(), @1.first_line, @1.first_column); + throw e; + } + } + | _IMPORT_ _SCHEMA_ URILiteral + { + REJECT_NOT_XQUERY(SchemaImport, @1); + + try { + CONTEXT->addSchemaLocation($3,NULL); + } catch(XQException& e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(QP->_query->getFile(), @1.first_line, @1.first_column); + throw e; + } + } + | _IMPORT_ _SCHEMA_ URILiteral ResourceLocations + { + REJECT_NOT_XQUERY(SchemaImport, @1); + + try { + CONTEXT->addSchemaLocation($3,$4); + } catch(XQException& e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(QP->_query->getFile(), @1.first_line, @1.first_column); + throw e; + } + } + ; + +ResourceLocations: + _AT_KEYWORD_ URILiteral + { + $$ = new (MEMMGR) VectorOfStrings(XQillaAllocator(MEMMGR)); + $$->push_back($2); + } + | ResourceLocations _COMMA_ URILiteral + { + $1->push_back($3); + $$ = $1; + } +; + +// [23] SchemaPrefix ::= ("namespace" NCName "=") | (<"default" "element"> "namespace") +SchemaPrefix: + _NAMESPACE_ _NCNAME_ _EQUALS_ + { + $$ = $2; + } + | _DEFAULT_ _ELEMENT_ _NAMESPACE_ + { + $$ = (XMLCh*)XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString; + } + ; + +// [24] ModuleImport ::= <"import" "module"> ("namespace" NCName "=")? URILiteral (<"at" URILiteral> ("," URILiteral)*)? +ModuleImport: + _IMPORT_ _MODULE_ _NAMESPACE_ _NCNAME_ _EQUALS_ URILiteral ResourceLocations + { + REJECT_NOT_XQUERY(ModuleImport, @1); + + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen($6)==0) + yyerror(@6, "The literal that specifies the target namespace in a module import must not be of zero length [err:XQST0088]"); + CONTEXT->setNamespaceBinding($4,$6); + try { + QP->_query->importModule($6,$7,CONTEXT); + } catch(XQException& e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(QP->_query->getFile(), @1.first_line, @1.first_column); + throw e; + } + } + | _IMPORT_ _MODULE_ _NAMESPACE_ _NCNAME_ _EQUALS_ URILiteral + { + REJECT_NOT_XQUERY(ModuleImport, @1); + + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen($6)==0) + yyerror(@6, "The literal that specifies the target namespace in a module import must not be of zero length [err:XQST0088]"); + CONTEXT->setNamespaceBinding($4,$6); + try { + QP->_query->importModule($6,NULL,CONTEXT); + } catch(XQException& e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(QP->_query->getFile(), @1.first_line, @1.first_column); + throw e; + } + } + | _IMPORT_ _MODULE_ URILiteral ResourceLocations + { + REJECT_NOT_XQUERY(ModuleImport, @1); + + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen($3)==0) + yyerror(@3, "The literal that specifies the target namespace in a module import must not be of zero length [err:XQST0088]"); + try { + QP->_query->importModule($3,$4,CONTEXT); + } catch(XQException& e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(QP->_query->getFile(), @1.first_line, @1.first_column); + throw e; + } + } + | _IMPORT_ _MODULE_ URILiteral + { + REJECT_NOT_XQUERY(ModuleImport, @1); + + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen($3)==0) + yyerror(@3, "The literal that specifies the target namespace in a module import must not be of zero length [err:XQST0088]"); + try { + QP->_query->importModule($3,NULL,CONTEXT); + } catch(XQException& e) { + if(e.getXQueryLine() == 0) + e.setXQueryPosition(QP->_query->getFile(), @1.first_line, @1.first_column); + throw e; + } + } + ; + +// [25] VarDecl ::= <"declare" "variable" "$"> VarName TypeDeclaration? ((":=" ExprSingle) | "external") +VarDecl: + _DECLARE_ _VARIABLE_KEYWORD_ _DOLLAR_SIGN_ _VARIABLE_ TypeDeclaration _COLON_EQ_ ExprSingle + { + REJECT_NOT_XQUERY(VarDecl, @1); + + XQGlobalVariable* var=WRAP(@1, new (MEMMGR) XQGlobalVariable($4,$5, WRAP(@7, $7),MEMMGR)); + QP->_query->addVariable(var); + } + | _DECLARE_ _VARIABLE_KEYWORD_ _DOLLAR_SIGN_ _VARIABLE_ _COLON_EQ_ ExprSingle + { + REJECT_NOT_XQUERY(VarDecl, @1); + + XQGlobalVariable* var=WRAP(@1, new (MEMMGR) XQGlobalVariable($4,WRAP(@1, new (MEMMGR) SequenceType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ANYTHING), SequenceType::STAR)), + WRAP(@6, $6),MEMMGR)); + QP->_query->addVariable(var); + } + | _DECLARE_ _VARIABLE_KEYWORD_ _DOLLAR_SIGN_ _VARIABLE_ TypeDeclaration _EXTERNAL_ + { + REJECT_NOT_XQUERY(VarDecl, @1); + + XQGlobalVariable* var=WRAP(@1, new (MEMMGR) XQGlobalVariable($4,$5,NULL,MEMMGR)); + QP->_query->addVariable(var); + } + | _DECLARE_ _VARIABLE_KEYWORD_ _DOLLAR_SIGN_ _VARIABLE_ _EXTERNAL_ + { + REJECT_NOT_XQUERY(VarDecl, @1); + + XQGlobalVariable* var=WRAP(@1, new (MEMMGR) XQGlobalVariable($4,WRAP(@1, new (MEMMGR) SequenceType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ANYTHING), SequenceType::STAR)), + NULL,MEMMGR)); + QP->_query->addVariable(var); + } + ; + +// [26] ConstructionDecl ::= <"declare" "construction"> ("preserve" | "strip") +ConstructionDecl: + _DECLARE_ _CONSTRUCTION_ _PRESERVE_ + { + REJECT_NOT_XQUERY(ConstructionDecl, @1); + + if(QP->_flags.get(BIT_CONSTRUCTION_SPECIFIED)) + yyerror(@1, "Prolog contains more than one construction mode declaration [err:XQST0067]"); + QP->_flags.set(BIT_CONSTRUCTION_SPECIFIED); + CONTEXT->setConstructionMode(StaticContext::CONSTRUCTION_MODE_PRESERVE); + } + | _DECLARE_ _CONSTRUCTION_ _STRIP_ + { + REJECT_NOT_XQUERY(ConstructionDecl, @1); + + if(QP->_flags.get(BIT_CONSTRUCTION_SPECIFIED)) + yyerror(@1, "Prolog contains more than one construction mode declaration [err:XQST0067]"); + QP->_flags.set(BIT_CONSTRUCTION_SPECIFIED); + CONTEXT->setConstructionMode(StaticContext::CONSTRUCTION_MODE_STRIP); + } + ; + +// [27] FunctionDecl ::= <"declare" "function"> ParamList? (")" | (<")" "as"> SequenceType)) +// (EnclosedExpr | "external") +FunctionDecl: + _DECLARE_ _FUNCTION_ _FUNCTION_CALL_ ParamList _RPAR_ EnclosedExpr + { + REJECT_NOT_XQUERY(FunctionDecl, @1); + + $$ = WRAP(@1, new (MEMMGR) XQUserFunction($3,$4,WRAP(@6, $6),NULL, CONTEXT)); + } + | _DECLARE_ _FUNCTION_ _FUNCTION_CALL_ _RPAR_ EnclosedExpr + { + REJECT_NOT_XQUERY(FunctionDecl, @1); + + $$ = WRAP(@1, new (MEMMGR) XQUserFunction($3,NULL,WRAP(@5, $5),NULL, CONTEXT)); + } + | _DECLARE_ _FUNCTION_ _FUNCTION_CALL_ ParamList _EXPR_AS_ SequenceType EnclosedExpr + { + REJECT_NOT_XQUERY(FunctionDecl, @1); + + $$ = WRAP(@1, new (MEMMGR) XQUserFunction($3,$4,WRAP(@7, $7),$6, CONTEXT)); + } + | _DECLARE_ _FUNCTION_ _FUNCTION_CALL_ _EXPR_AS_ SequenceType EnclosedExpr + { + REJECT_NOT_XQUERY(FunctionDecl, @1); + + $$ = WRAP(@1, new (MEMMGR) XQUserFunction($3,NULL,WRAP(@6, $6),$5, CONTEXT)); + } + | _DECLARE_ _FUNCTION_ _FUNCTION_CALL_ ParamList _RPAR_ _EXTERNAL_ + { + REJECT_NOT_XQUERY(FunctionDecl, @1); + + $$ = WRAP(@1, new (MEMMGR) XQUserFunction($3,$4,NULL,NULL, CONTEXT)); + } + | _DECLARE_ _FUNCTION_ _FUNCTION_CALL_ _RPAR_ _EXTERNAL_ + { + REJECT_NOT_XQUERY(FunctionDecl, @1); + + $$ = WRAP(@1, new (MEMMGR) XQUserFunction($3,NULL,NULL,NULL, CONTEXT)); + } + | _DECLARE_ _FUNCTION_ _FUNCTION_CALL_ ParamList _EXPR_AS_ SequenceType _EXTERNAL_ + { + REJECT_NOT_XQUERY(FunctionDecl, @1); + + $$ = WRAP(@1, new (MEMMGR) XQUserFunction($3,$4,NULL,$6, CONTEXT)); + } + | _DECLARE_ _FUNCTION_ _FUNCTION_CALL_ _EXPR_AS_ SequenceType _EXTERNAL_ + { + REJECT_NOT_XQUERY(FunctionDecl, @1); + + $$ = WRAP(@1, new (MEMMGR) XQUserFunction($3,NULL,NULL,$5, CONTEXT)); + } + ; + +// [28] ParamList ::= Param ("," Param)* +ParamList: + ParamList _COMMA_ Param + { + $1->push_back($3); + $$ = $1; + } + | Param + { + XQUserFunction::VectorOfFunctionParameters* paramList = new (MEMMGR) XQUserFunction::VectorOfFunctionParameters(XQillaAllocator(MEMMGR)); + paramList->push_back($1); + $$ = paramList; + } + ; + +// [29] Param ::= "$" VarName TypeDeclaration? +Param: + _DOLLAR_SIGN_ _VARIABLE_ TypeDeclaration + { + $$ = new (MEMMGR) XQUserFunction::XQFunctionParameter($2,$3,MEMMGR); + } + | _DOLLAR_SIGN_ _VARIABLE_ + { + $$ = new (MEMMGR) XQUserFunction::XQFunctionParameter($2,WRAP(@1, new (MEMMGR) SequenceType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ANYTHING), SequenceType::STAR)) ,MEMMGR); + } + ; + +// [30] EnclosedExpr ::= "{" Expr "}" +EnclosedExpr: + _LBRACE_ Expr _RBRACE_ + { + $$ = WRAP(@2, $2); + } + ; + +// [31] QueryBody ::= Expr +QueryBody: + Expr + { + QP->_query->setQueryBody($1); + } + ; + +// [32] Expr ::= ExprSingle ("," ExprSingle)* +Expr: + Expr _COMMA_ ExprSingle + { + ASTNode* prevExpr=$1; + if((unsigned int)prevExpr->getType()==ASTNode::DEBUG_HOOK) + prevExpr=((XQDebugHook*)prevExpr)->m_impl; + if(prevExpr->getType()==ASTNode::PARENTHESIZED) + { + ((XQParenthesizedExpr *)prevExpr)->addItem($3); + $$ = $1; + } + else + { + XQParenthesizedExpr *dis = new (MEMMGR) XQParenthesizedExpr(MEMMGR); + dis->addItem($1); + dis->addItem($3); + $$ = dis; + } + } + | ExprSingle + { + $$ = $1; + } + ; + +// [33] ExprSingle ::= FLWORExpr | QuantifiedExpr | TypeswitchExpr | IfExpr | OrExpr +ExprSingle: + FLWORExpr + | QuantifiedExpr + | TypeswitchExpr + | IfExpr + | OrExpr + ; + +// [34] FLWORExpr ::= (ForClause | LetClause)+ WhereClause? OrderByClause? "return" ExprSingle +FLWORExpr: + FlworExprForLetList WhereClause OrderByClause _RETURN_ ExprSingle + { + $$ = FNWRAP(@1, szFLWOR, new (MEMMGR) XQFLWOR($1, $2, $3, WRAP(@4, $5), MEMMGR)); + } + | FlworExprForLetList WhereClause _RETURN_ ExprSingle + { + $$ = FNWRAP(@1, szFLWOR, new (MEMMGR) XQFLWOR($1, $2, NULL, WRAP(@3, $4), MEMMGR)); + } + | FlworExprForLetList OrderByClause _RETURN_ ExprSingle + { + $$ = FNWRAP(@1, szFLWOR, new (MEMMGR) XQFLWOR($1, NULL, $2, WRAP(@3, $4), MEMMGR)); + } + | FlworExprForLetList _RETURN_ ExprSingle + { + $$ = FNWRAP(@1, szFLWOR, new (MEMMGR) XQFLWOR($1, NULL, NULL, WRAP(@2, $3), MEMMGR)); + } + ; + +FlworExprForLetList: + FlworExprForLetList ForOrLetClause + { + $$ = $1; + for (VectorOfVariableBinding::iterator it = $2->begin(); it != $2->end (); ++it) + $1->push_back(*it); + } + | ForOrLetClause + ; + +ForOrLetClause: + ForClause + | LetClause + ; + +// [35] ForClause ::= "for" "$" VarName TypeDeclaration? PositionalVar? FTScoreVar? "in" ExprSingle +// ("," "$" VarName TypeDeclaration? PositionalVar? FTScoreVar? "in" ExprSingle)* +ForClause: + _FOR_ ForBindingList + { + $$ = $2; + } + ; + +ForBindingList: + ForBindingList _COMMA_ ForBinding + { + $$->push_back($3); + } + | ForBinding + { + $$ = new (MEMMGR) VectorOfVariableBinding(XQillaAllocator(MEMMGR)); + $$->push_back($1); + } + ; + +ForBinding: + _DOLLAR_SIGN_ _VARIABLE_ _IN_ ExprSingle + { + $$ = WRAP(@1, new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::forBinding,$2,$4)); + } + | _DOLLAR_SIGN_ _VARIABLE_ FTScoreVar _IN_ ExprSingle + { + // TBD FTScoreVar + $$ = WRAP(@1, new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::forBinding,$2,$5)); + } + | _DOLLAR_SIGN_ _VARIABLE_ PositionalVar _IN_ ExprSingle + { + $$ = WRAP(@1, new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::forBinding,$2,$5,$3)); + } + | _DOLLAR_SIGN_ _VARIABLE_ PositionalVar FTScoreVar _IN_ ExprSingle + { + $$ = WRAP(@1, new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::forBinding,$2,$6,$3)); + } + | _DOLLAR_SIGN_ _VARIABLE_ TypeDeclaration _IN_ ExprSingle + { + $$ = WRAP(@1, new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::forBinding,$2,$5,NULL,$3)); + } + | _DOLLAR_SIGN_ _VARIABLE_ TypeDeclaration FTScoreVar _IN_ ExprSingle + { + $$ = WRAP(@1, new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::forBinding,$2,$6,NULL,$3)); + } + | _DOLLAR_SIGN_ _VARIABLE_ TypeDeclaration PositionalVar _IN_ ExprSingle + { + $$ = WRAP(@1, new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::forBinding,$2,$6,$4,$3)); + } + | _DOLLAR_SIGN_ _VARIABLE_ TypeDeclaration PositionalVar FTScoreVar _IN_ ExprSingle + { + $$ = WRAP(@1, new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::forBinding,$2,$7,$4,$3)); + } + ; + +// [36] PositionalVar ::= "at" "$" VarName +PositionalVar: + _AT_KEYWORD_ _DOLLAR_SIGN_ _VARIABLE_ + { + REJECT_NOT_XQUERY(PositionalVar, @1); + + $$ = $3; + } + ; + +// [37] FTScoreVar ::= "score" "$" VarName +FTScoreVar: + _SCORE_ _DOLLAR_SIGN_ _VARIABLE_ + { + REJECT_NOT_FULLTEXT(FTScoreVar, @1); + + $$ = $3; + } + ; + +// [38] LetClause ::= (("let" "$" VarName TypeDeclaration? FTScoreVar?) | +// ("let" "score" "$" VarName)) ":=" ExprSingle +// ("," (("$" VarName TypeDeclaration? FTScoreVar?) | FTScoreVar) ":=" ExprSingle)* +LetClause: + _LET_ LetBindingList + { + REJECT_NOT_XQUERY(LetClause, @1); + + $$ = $2; + } + ; + +LetBindingList: + LetBindingList _COMMA_ LetBinding + { + $1->push_back($3); + $$ = $1; + } + | LetBinding + { + $$ = new (MEMMGR) VectorOfVariableBinding(XQillaAllocator(MEMMGR)); + $$->push_back($1); + } + ; + +LetBinding: + _DOLLAR_SIGN_ _VARIABLE_ _COLON_EQ_ ExprSingle + { + $$ = WRAP(@1, new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::letBinding,$2,$4)); + } + | _DOLLAR_SIGN_ _VARIABLE_ FTScoreVar _COLON_EQ_ ExprSingle + { + $$ = WRAP(@1, new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::letBinding,$2,$5)); + } + | _DOLLAR_SIGN_ _VARIABLE_ TypeDeclaration _COLON_EQ_ ExprSingle + { + $$ = WRAP(@1, new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::letBinding,$2,$5,NULL,$3)); + } + | _DOLLAR_SIGN_ _VARIABLE_ TypeDeclaration FTScoreVar _COLON_EQ_ ExprSingle + { + $$ = WRAP(@1, new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::letBinding,$2,$6,NULL,$3)); + } + | FTScoreVar _COLON_EQ_ ExprSingle + { + } + ; + +// [39] WhereClause ::= "where" ExprSingle +WhereClause: + _WHERE_ ExprSingle + { + REJECT_NOT_XQUERY(WhereClause, @1); + + $$ = WRAP(@1, $2); + } + ; + +// [40] OrderByClause ::= (<"order" "by"> | <"stable" "order" "by">) OrderSpecList +OrderByClause: + _ORDER_ _BY_ OrderSpecList + { + REJECT_NOT_XQUERY(OrderByClause, @1); + + $$=new (MEMMGR) XQSort(XQSort::unstable,$3); + } + | _STABLE_ _ORDER_ _BY_ OrderSpecList + { + REJECT_NOT_XQUERY(OrderByClause, @1); + + $$=new (MEMMGR) XQSort(XQSort::stable,$4); + } + ; + +// [41] OrderSpecList ::= OrderSpec ("," OrderSpec)* +OrderSpecList: + OrderSpecList _COMMA_ OrderSpec + { + $1->push_back($3); + $$ = $1; + } + | OrderSpec + { + $$ = new (MEMMGR) XQSort::VectorOfSortSpec(XQillaAllocator(MEMMGR)); + $$->push_back($1); + } + ; + +// [42] OrderSpec ::= ExprSingle OrderModifier +// [43] OrderModifier ::= ("ascending" | "descending")? (<"empty" "greatest"> | <"empty" "least">)? ("collation" URILiteral)? +OrderSpec: + ExprSingle OrderDirection EmptyHandling + { + $$ = WRAP(@1, new (MEMMGR) XQSort::SortSpec($1,$2+$3,NULL)); + } + | ExprSingle OrderDirection EmptyHandling _COLLATION_ URILiteral + { + try + { + LOCATION(@5, loc); + CONTEXT->getCollation($5, &loc); + } + catch(ContextException&) + { + yyerror(@5, "The specified collation does not exist [err:XQST0076]"); + } + $$ = WRAP(@1, new (MEMMGR) XQSort::SortSpec($1,$2+$3,$5)); + } + ; + +OrderDirection: + /* empty */ + { $$ = XQSort::SortSpec::ascending; } + | _ASCENDING_ + { $$ = XQSort::SortSpec::ascending; } + | _DESCENDING_ + { $$ = XQSort::SortSpec::descending; } + ; + +EmptyHandling: + /* empty */ + { + switch(CONTEXT->getDefaultFLWOROrderingMode()) + { + case StaticContext::FLWOR_ORDER_EMPTY_LEAST: + $$ = XQSort::SortSpec::empty_least; break; + case StaticContext::FLWOR_ORDER_EMPTY_GREATEST: + $$ = XQSort::SortSpec::empty_greatest; break; + } + } + | _EMPTY_KEYWORD_ _GREATEST_ + { $$ = XQSort::SortSpec::empty_greatest; } + | _EMPTY_KEYWORD_ _LEAST_ + { $$ = XQSort::SortSpec::empty_least; } + ; + +// [44] QuantifiedExpr ::= (<"some" "$"> | <"every" "$">) VarName TypeDeclaration? "in" ExprSingle +// ("," "$" VarName TypeDeclaration? "in" ExprSingle)* "satisfies" ExprSingle +QuantifiedExpr: + _SOME_ QuantifyBindingList _SATISFIES_ ExprSingle + { + $$ = new (MEMMGR) XQQuantified(XQQuantified::some, $2, WRAP(@3, $4), MEMMGR); + } + | _EVERY_ QuantifyBindingList _SATISFIES_ ExprSingle + { + $$ = new (MEMMGR) XQQuantified(XQQuantified::every, $2, WRAP(@3, $4), MEMMGR); + } + ; + +QuantifyBindingList: + QuantifyBindingList _COMMA_ QuantifyBinding + { + $$->push_back($3); + } + | QuantifyBinding + { + $$ = new (MEMMGR) VectorOfVariableBinding(XQillaAllocator(MEMMGR)); + $$->push_back($1); + } + ; + +QuantifyBinding: + _DOLLAR_SIGN_ _VARIABLE_ _IN_ ExprSingle + { + $$ = WRAP(@1, new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::forBinding,$2,$4)); + } + | _DOLLAR_SIGN_ _VARIABLE_ TypeDeclaration _IN_ ExprSingle + { + $$ = WRAP(@1, new (MEMMGR) XQVariableBinding(MEMMGR, XQVariableBinding::forBinding,$2,$5,NULL,$3)); + } + ; + +// [45] TypeswitchExpr ::= <"typeswitch" "("> Expr ")" CaseClause+ "default" ("$" VarName)? "return" ExprSingle +TypeswitchExpr: + _TYPESWITCH_ _LPAR_ Expr _RPAR_ CaseClauseList _DEFAULT_ _DOLLAR_SIGN_ _VARIABLE_ _RETURN_ ExprSingle + { + REJECT_NOT_XQUERY(TypeswitchExpr, @1); + + XQTypeswitch::Clause* defClause=WRAP(@6, new (MEMMGR) XQTypeswitch::Clause(NULL,$10,MEMMGR->getPooledString($8))); + $$ = new (MEMMGR) XQTypeswitch( WRAP(@1, $3), $5, defClause, MEMMGR); + } + | _TYPESWITCH_ _LPAR_ Expr _RPAR_ CaseClauseList _DEFAULT_ _RETURN_ ExprSingle + { + REJECT_NOT_XQUERY(TypeswitchExpr, @1); + + XQTypeswitch::Clause* defClause=WRAP(@6, new (MEMMGR) XQTypeswitch::Clause(NULL,$8,NULL)); + $$ = new (MEMMGR) XQTypeswitch( WRAP(@1, $3), $5, defClause, MEMMGR); + } + ; + +CaseClauseList: + CaseClauseList CaseClause + { + $1->push_back($2); + $$=$1; + } + | CaseClause + { + $$=new (MEMMGR) XQTypeswitch::VectorOfClause(XQillaAllocator(MEMMGR)); + $$->push_back($1); + } + ; + +// [46] CaseClause ::= "case" ("$" VarName "as")? SequenceType "return" ExprSingle +CaseClause: + _CASE_ SequenceType _RETURN_ ExprSingle + { + $$ = WRAP(@1, new (MEMMGR) XQTypeswitch::Clause($2, $4, NULL)); + } + | _CASE_ _DOLLAR_SIGN_ _VARIABLE_ _AS_ SequenceType _RETURN_ ExprSingle + { + $$ = WRAP(@1, new (MEMMGR) XQTypeswitch::Clause($5, $7, MEMMGR->getPooledString($3))); + } + ; + +// [47] IfExpr ::= <"if" "("> Expr ")" "then" ExprSingle "else" ExprSingle +IfExpr: + _IF_ _LPAR_ Expr _RPAR_ _THEN_ ExprSingle _ELSE_ ExprSingle + { + $$ = WRAP(@1, new (MEMMGR) XQIf($3, $6, $8, MEMMGR)); + } + ; + +// [48] OrExpr ::= AndExpr ( "or" AndExpr )* +OrExpr: + OrExpr _OR_ AndExpr + { + ASTNode* prevExpr=$1; + if((unsigned int)prevExpr->getType()==ASTNode::DEBUG_HOOK) + prevExpr=((XQDebugHook*)prevExpr)->m_impl; + if(prevExpr->getType()==ASTNode::OPERATOR && + XPath2Utils::equals(((XQOperator*)prevExpr)->getOperatorName(),Or::name)) + { + ((Or*)prevExpr)->addArgument($3); + $$ = prevExpr; + } + else + $$ = WRAP(@1, new (MEMMGR) Or(packageArgs($1, $3, MEMMGR),MEMMGR)); + } + | AndExpr + ; + +// [49] AndExpr ::= ComparisonExpr ( "and" ComparisonExpr )* +AndExpr: + AndExpr _AND_ ComparisonExpr + { + ASTNode* prevExpr=$1; + if((unsigned int)prevExpr->getType()==ASTNode::DEBUG_HOOK) + prevExpr=((XQDebugHook*)prevExpr)->m_impl; + if(prevExpr->getType()==ASTNode::OPERATOR && + XPath2Utils::equals(((XQOperator*)prevExpr)->getOperatorName(),And::name)) + { + ((And*)prevExpr)->addArgument($3); + $$ = prevExpr; + } + else + $$ = WRAP(@1, new (MEMMGR) And(packageArgs($1, $3, MEMMGR),MEMMGR)); + } + | ComparisonExpr + ; + +// [50] ComparisonExpr ::= FTContainsExpr ( (ValueComp +// | GeneralComp +// | NodeComp) FTContainsExpr )? +// [63] GeneralComp ::= "=" | "!=" | "<" | "<=" | ">" | ">=" +// [64] ValueComp ::= "eq" | "ne" | "lt" | "le" | "gt" | "ge" +// [65] NodeComp ::= "is" | "<<" | ">>" +ComparisonExpr: + FTContainsExpr _EQUALS_ FTContainsExpr + { + $$ = WRAP(@2, new (MEMMGR) GeneralComp(GeneralComp::EQUAL,packageArgs($1,$3, MEMMGR),MEMMGR)); + } + | FTContainsExpr _NOT_EQUALS_ FTContainsExpr + { + $$ = WRAP(@2, new (MEMMGR) GeneralComp(GeneralComp::NOT_EQUAL,packageArgs($1,$3, MEMMGR),MEMMGR)); + } + | FTContainsExpr _LT_ FTContainsExpr + { + $$ = WRAP(@2, new (MEMMGR) GeneralComp(GeneralComp::LESS_THAN,packageArgs($1,$3, MEMMGR),MEMMGR)); + } + | FTContainsExpr _LT_EQUALS_ FTContainsExpr + { + $$ = WRAP(@2, new (MEMMGR) GeneralComp(GeneralComp::LESS_THAN_EQUAL,packageArgs($1,$3, MEMMGR),MEMMGR)); + } + | FTContainsExpr _GT_ FTContainsExpr + { + $$ = WRAP(@2, new (MEMMGR) GeneralComp(GeneralComp::GREATER_THAN,packageArgs($1,$3, MEMMGR),MEMMGR)); + } + | FTContainsExpr _GT_EQUALS_ FTContainsExpr + { + $$ = WRAP(@2, new (MEMMGR) GeneralComp(GeneralComp::GREATER_THAN_EQUAL,packageArgs($1,$3, MEMMGR),MEMMGR)); + } + | FTContainsExpr _FORTRAN_EQ_ FTContainsExpr + { + $$ = WRAP(@2, new (MEMMGR) Equals(packageArgs($1, $3, MEMMGR),MEMMGR)); + } + | FTContainsExpr _FORTRAN_NE_ FTContainsExpr + { + $$ = WRAP(@2, new (MEMMGR) NotEquals(packageArgs($1, $3, MEMMGR),MEMMGR)); + } + | FTContainsExpr _FORTRAN_LT_ FTContainsExpr + { + $$ = WRAP(@2, new (MEMMGR) LessThan(packageArgs($1, $3, MEMMGR),MEMMGR)); + } + | FTContainsExpr _FORTRAN_LE_ FTContainsExpr + { + $$ = WRAP(@2, new (MEMMGR) LessThanEqual(packageArgs($1, $3, MEMMGR),MEMMGR)); + } + | FTContainsExpr _FORTRAN_GT_ FTContainsExpr + { + $$ = WRAP(@2, new (MEMMGR) GreaterThan(packageArgs($1, $3, MEMMGR),MEMMGR)); + } + | FTContainsExpr _FORTRAN_GE_ FTContainsExpr + { + $$ = WRAP(@2, new (MEMMGR) GreaterThanEqual(packageArgs($1, $3, MEMMGR),MEMMGR)); + } + | FTContainsExpr _IS_ FTContainsExpr + { + $$ = WRAP(@2, new (MEMMGR) NodeComparison(packageArgs($1, $3, MEMMGR), MEMMGR)); + } + | FTContainsExpr _LT_LT_ FTContainsExpr + { + $$ = WRAP(@2, new (MEMMGR) OrderComparison(packageArgs($1, $3, MEMMGR), true, MEMMGR)); + } + | FTContainsExpr _GT_GT_ FTContainsExpr + { + $$ = WRAP(@2, new (MEMMGR) OrderComparison(packageArgs($1, $3, MEMMGR), false,MEMMGR)); + } + | FTContainsExpr + ; + +// [51] FTContainsExpr ::= RangeExpr ( "ftcontains" FTSelection FTIgnoreOption? )? +FTContainsExpr: + RangeExpr _FTCONTAINS_ FTSelection + { + REJECT_NOT_FULLTEXT(FTContainsExpr, @1); + + $$ = WRAP(@2, new (MEMMGR) FTContains($1, $3, NULL, MEMMGR)); + } + | RangeExpr _FTCONTAINS_ FTSelection FTIgnoreOption + { + REJECT_NOT_FULLTEXT(FTContainsExpr, @1); + + $$ = WRAP(@2, new (MEMMGR) FTContains($1, $3, $4, MEMMGR)); + } + | RangeExpr + ; + +// [52] RangeExpr ::= AdditiveExpr ( "to" AdditiveExpr )? +RangeExpr: + AdditiveExpr _TO_ AdditiveExpr + { + $$ = WRAP(@2, new (MEMMGR) Range(packageArgs($1, $3, MEMMGR),MEMMGR)); + } + | AdditiveExpr + ; + +// [53] AdditiveExpr ::= MultiplicativeExpr ( ("+" | "-") MultiplicativeExpr )* +AdditiveExpr: + AdditiveExpr _PLUS_ MultiplicativeExpr + { + $$ = WRAP(@2, new (MEMMGR) Plus(packageArgs($1, $3, MEMMGR),MEMMGR)); + } + | AdditiveExpr _MINUS_ MultiplicativeExpr + { + $$ = WRAP(@2, new (MEMMGR) Minus(packageArgs($1, $3, MEMMGR),MEMMGR)); + } + | MultiplicativeExpr + ; + +// [54] MultiplicativeExpr ::= UnionExpr ( ("*" | "div" | "idiv" | "mod") UnionExpr )* +MultiplicativeExpr: + MultiplicativeExpr _MULTIPLY_ UnionExpr + { + $$ = WRAP(@2, new (MEMMGR) Multiply(packageArgs($1, $3, MEMMGR),MEMMGR)); + } + | MultiplicativeExpr _DIV_ UnionExpr + { + $$ = WRAP(@2, new (MEMMGR) Divide(packageArgs($1, $3, MEMMGR),MEMMGR)); + } + | MultiplicativeExpr _INTEGER_DIV_ UnionExpr + { + $$ = WRAP(@2, new (MEMMGR) IntegerDivide(packageArgs($1, $3, MEMMGR),MEMMGR)); + } + | MultiplicativeExpr _MOD_ UnionExpr + { + $$ = WRAP(@2, new (MEMMGR) Mod(packageArgs($1, $3, MEMMGR),MEMMGR)); + } + | UnionExpr + ; + +// [55] UnionExpr ::= IntersectExceptExpr ( ("union" | "|") IntersectExceptExpr )* +UnionExpr: + UnionExpr _VERTICAL_BAR_ IntersectExceptExpr + { + $$ = WRAP(@2, new (MEMMGR) Union(packageArgs($1, $3, MEMMGR),MEMMGR)); + } + | UnionExpr _UNION_ IntersectExceptExpr + { + $$ = WRAP(@2, new (MEMMGR) Union(packageArgs($1, $3, MEMMGR),MEMMGR)); + } + | IntersectExceptExpr + ; + +// [56] IntersectExceptExpr ::= InstanceofExpr ( ("intersect" | "except") InstanceofExpr )* +IntersectExceptExpr: + IntersectExceptExpr _INTERSECT_ InstanceofExpr + { + $$ = WRAP(@2, new (MEMMGR) Intersect(packageArgs($1, $3, MEMMGR),MEMMGR)); + } + | IntersectExceptExpr _EXCEPT_ InstanceofExpr + { + $$ = WRAP(@2, new (MEMMGR) Except(packageArgs($1, $3, MEMMGR),MEMMGR)); + } + | InstanceofExpr + ; + +// [57] InstanceofExpr ::= TreatExpr ( <"instance" "of"> SequenceType )? +InstanceofExpr: + TreatExpr _INSTANCE_ _OF_ SequenceType + { + $$ = WRAP(@2, new (MEMMGR) XQInstanceOf($1,$4,MEMMGR)); + } + | TreatExpr + ; + +// [58] TreatExpr ::= CastableExpr ( <"treat" "as"> SequenceType )? +TreatExpr: + CastableExpr _TREAT_ _AS_ SequenceType + { + XQTreatAs* treatAs = new (MEMMGR) XQTreatAs($1,$4,MEMMGR); + treatAs->setIsTreatAsStatement(true); + $$ = WRAP(@2, treatAs); + } + | CastableExpr + ; + +// [59] CastableExpr ::= CastExpr ( <"castable" "as"> SingleType )? +CastableExpr: + CastExpr _CASTABLE_ _AS_ SingleType + { + $$ = WRAP(@2, new (MEMMGR) XQCastableAs($1,$4,MEMMGR)); + } + | CastExpr + ; + +// [60] CastExpr ::= UnaryExpr (<"cast" "as"> SingleType)? +CastExpr: + UnaryExpr _CAST_ _AS_ SingleType + { + $$ = WRAP(@1, new (MEMMGR) XQCastAs($1,$4,MEMMGR)); + } + | UnaryExpr + ; + +// [61] UnaryExpr ::= ("-" | "+")* ValueExpr +UnaryExpr: + _MINUS_ UnaryExpr + { + VectorOfASTNodes args(XQillaAllocator(MEMMGR)); + args.push_back($2); + $$ = WRAP(@1, new (MEMMGR) UnaryMinus(/*positive*/false, args, MEMMGR)); + } + | _PLUS_ UnaryExpr + { + VectorOfASTNodes args(XQillaAllocator(MEMMGR)); + args.push_back($2); + $$ = WRAP(@1, new (MEMMGR) UnaryMinus(/*positive*/true, args, MEMMGR)); + } + | ValueExpr + ; + +// [62] ValueExpr ::= ValidateExpr | PathExpr | ExtensionExpr +ValueExpr: + ValidateExpr + | PathExpr + | ExtensionExpr + ; + +// [66] ValidateExpr ::= (<"validate" "{"> | +// (<"validate" ValidationMode> "{") +// ) Expr "}" +// [67] ValidationMode ::= "lax" | "strict" +ValidateExpr: + _VALIDATE_ _LBRACE_ Expr _RBRACE_ + { + $$ = WRAP(@1, new (MEMMGR) XQValidate($3,DocumentCache::VALIDATION_STRICT,MEMMGR)); + } + | _VALIDATE_ _MODE_LAX_ _LBRACE_ Expr _RBRACE_ + { + $$ = WRAP(@1, new (MEMMGR) XQValidate($4,DocumentCache::VALIDATION_LAX,MEMMGR)); + } + | _VALIDATE_ _MODE_STRICT_ _LBRACE_ Expr _RBRACE_ + { + $$ = WRAP(@1, new (MEMMGR) XQValidate($4,DocumentCache::VALIDATION_STRICT,MEMMGR)); + } + ; + +// [68] ExtensionExpr ::= Pragma+ "{" Expr? "}" +ExtensionExpr: + PragmaList _LBRACE_ _RBRACE_ + { + REJECT_NOT_XQUERY(ExtensionExpr, @1); + + // we don't support any pragma + yyerror(@1, "This pragma is not recognized, and no alternative expression is specified [err:XQST0079]"); + } + | PragmaList _LBRACE_ Expr _RBRACE_ + { + REJECT_NOT_XQUERY(ExtensionExpr, @1); + + // we don't support any pragma + $$ = $3; + } + ; + +PragmaList: + Pragma + | PragmaList Pragma + ; + +// [69] Pragma ::= "(#" S? QName PragmaContents "#)" +// [70] PragmaContents ::= (Char* - (Char* '#)' Char*)) +Pragma: + _PRAGMA_OPEN_ _PRAGMA_NAME_ _PRAGMA_CONTENT_ _PRAGMA_CLOSE_ + { + // validate the QName + QualifiedName qName($2); + const XMLCh* prefix=qName.getPrefix(); + if(prefix==NULL || *prefix==0) + yyerror(@2, "The pragma name must have a prefix [err:XPST0081]"); + + try + { + LOCATION(@2, loc); + CONTEXT->getUriBoundToPrefix(prefix, &loc); + } + catch(NamespaceLookupException&) + { + yyerror(@2, "The pragma name is using an undefined namespace prefix [err:XPST0081]"); + } + } + | _PRAGMA_OPEN_ _PRAGMA_NAME_ _PRAGMA_CLOSE_ + { + // validate the QName + QualifiedName qName($2); + const XMLCh* prefix=qName.getPrefix(); + if(prefix==NULL || *prefix==0) + yyerror(@2, "The pragma name must have a prefix [err:XPST0081]"); + + try + { + LOCATION(@2, loc); + CONTEXT->getUriBoundToPrefix(prefix, &loc); + } + catch(NamespaceLookupException&) + { + yyerror(@2, "The pragma name is using an undefined namespace prefix [err:XPST0081]"); + } + } + ; + +// [71] PathExpr ::= ("/" RelativePathExpr?) | ("//" RelativePathExpr) | RelativePathExpr +PathExpr: + _SLASH_ + { + XQNav *nav = new (MEMMGR) XQNav(MEMMGR); + + VectorOfASTNodes args(XQillaAllocator(MEMMGR)); + FunctionRoot *root = WRAP(@1, new (MEMMGR) FunctionRoot(args, MEMMGR)); + + SequenceType *documentNode = WRAP(@1, new (MEMMGR) + SequenceType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_DOCUMENT))); + + XQTreatAs *treat = WRAP(@1, new (MEMMGR) XQTreatAs(root, documentNode, MEMMGR)); + nav->addStepFront(treat); + + $$ = nav; + } + | _SLASH_ RelativePathExpr + { + XQNav* nav=getNavigation($2,MEMMGR); + + VectorOfASTNodes args(XQillaAllocator(MEMMGR)); + FunctionRoot *root = WRAP(@1, new (MEMMGR) FunctionRoot(args, MEMMGR)); + + SequenceType *documentNode = WRAP(@1, new (MEMMGR) + SequenceType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_DOCUMENT))); + + XQTreatAs *treat = WRAP(@1, new (MEMMGR) XQTreatAs(root, documentNode, MEMMGR)); + nav->addStepFront(treat); + + $$ = nav; + } + | _SLASHSLASH_ RelativePathExpr + { + XQNav *nav = getNavigation($2,MEMMGR); + + NodeTest *step = new (MEMMGR) NodeTest(); + step->setTypeWildcard(); + step->setNameWildcard(); + step->setNamespaceWildcard(); + nav->addStepFront(WRAP(@1, new (MEMMGR) XQStep(XQStep::DESCENDANT_OR_SELF, step, MEMMGR))); + + VectorOfASTNodes args(XQillaAllocator(MEMMGR)); + FunctionRoot *root = WRAP(@1, new (MEMMGR) FunctionRoot(args, MEMMGR)); + + SequenceType *documentNode = WRAP(@1, new (MEMMGR) + SequenceType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_DOCUMENT))); + + XQTreatAs *treat = WRAP(@1, new (MEMMGR) XQTreatAs(root, documentNode, MEMMGR)); + nav->addStepFront(treat); + + $$ = nav; + } + | RelativePathExpr + ; + +// [72] RelativePathExpr ::= StepExpr (("/" | "//") StepExpr)* +RelativePathExpr: + RelativePathExpr _SLASH_ StepExpr + { + XQNav *nav = getNavigation($1,MEMMGR); + nav->addStep($3); + $$ = nav; + } + | RelativePathExpr _SLASHSLASH_ StepExpr + { + XQNav *nav = getNavigation($1,MEMMGR); + + NodeTest *step = new (MEMMGR) NodeTest(); + step->setTypeWildcard(); + step->setNameWildcard(); + step->setNamespaceWildcard(); + nav->addStep(WRAP(@2, new (MEMMGR) XQStep(XQStep::DESCENDANT_OR_SELF, step, MEMMGR))); + nav->addStep($3); + + $$ = nav; + } + | StepExpr + ; + +// [73] StepExpr ::= AxisStep | FilterExpr +StepExpr: + AxisStep + | FilterExpr + ; + +// [74] AxisStep ::= (ForwardStep | ReverseStep) PredicateList +AxisStep: + ForwardStep PredicateList + { + $$ = XQPredicate::addPredicates($1, $2); + } + | ReverseStep PredicateList + { + $$ = XQPredicate::addPredicates($1, $2); + $$ = WRAP(@1, new (MEMMGR) XQDocumentOrder($$, MEMMGR)); + } + ; + +// [75] ForwardStep ::= (ForwardAxis NodeTest) | AbbrevForwardStep +ForwardStep: + ForwardAxis NodeTest + { + if(!$2->isNodeTypeSet()) { + switch($1) { + case XQStep::NAMESPACE: $2->setNodeType(Node::namespace_string); break; + case XQStep::ATTRIBUTE: $2->setNodeType(Node::attribute_string); break; + default: $2->setNodeType(Node::element_string); break; + } + } + + $$ = WRAP(@1, new (MEMMGR) XQStep($1,$2,MEMMGR)); + } + | AbbrevForwardStep + ; + +// [76] ForwardAxis ::= <"child" "::"> +// | <"descendant" "::"> +// | <"attribute" "::"> +// | <"self" "::"> +// | <"descendant-or-self" "::"> +// | <"following-sibling" "::"> +// | <"following" "::"> +ForwardAxis: + _AXIS_CHILD_ + { + $$ = XQStep::CHILD; + } + | _AXIS_DESCENDANT_ + { + $$ = XQStep::DESCENDANT; + } + | _AXIS_ATTRIBUTE_ + { + $$ = XQStep::ATTRIBUTE; + } + | _AXIS_SELF_ + { + $$ = XQStep::SELF; + } + | _AXIS_DESCENDANT_OR_SELF_ + { + $$ = XQStep::DESCENDANT_OR_SELF; + } + | _AXIS_FOLLOWING_SIBLING_ + { + $$ = XQStep::FOLLOWING_SIBLING; + } + | _AXIS_FOLLOWING_ + { + $$ = XQStep::FOLLOWING; + } + | _AXIS_NAMESPACE_ + { + REJECT_NOT_XPATH(AxisNamespace, @1); + $$ = XQStep::NAMESPACE; + } + ; + +// [77] AbbrevForwardStep ::= "@"? NodeTest +AbbrevForwardStep: + _AT_ NodeTest + { + if(!$2->isNodeTypeSet()) { + $2->setNodeType(Node::attribute_string); + } + + $$ = WRAP(@1, new (MEMMGR) XQStep(XQStep::ATTRIBUTE, $2, MEMMGR)); + } + | NodeTest + { + XQStep::Axis axis = XQStep::CHILD; + SequenceType::ItemType *itemtype = $1->getItemType(); + if(itemtype != 0 && + itemtype->getItemTestType() == SequenceType::ItemType::TEST_ATTRIBUTE) { + axis = XQStep::ATTRIBUTE; + } + else if(!$1->isNodeTypeSet()) { + $1->setNodeType(Node::element_string); + } + + $$ = WRAP(@1, new (MEMMGR) XQStep(axis, $1, MEMMGR)); + } + ; + +// [78] ReverseStep ::= (ReverseAxis NodeTest) | AbbrevReverseStep +ReverseStep: + ReverseAxis NodeTest + { + if(!$2->isNodeTypeSet()) { + $2->setNodeType(Node::element_string); + } + + $$ = WRAP(@1, new (MEMMGR) XQStep($1, $2, MEMMGR)); + } + | AbbrevReverseStep + ; + +// [79] ReverseAxis ::= <"parent" "::"> +// | <"ancestor" "::"> +// | <"preceding-sibling" "::"> +// | <"preceding" "::"> +// | <"ancestor-or-self" "::"> +ReverseAxis: + _AXIS_PARENT_ + { + $$ = XQStep::PARENT; + } + | _AXIS_ANCESTOR_ + { + $$ = XQStep::ANCESTOR; + } + | _AXIS_PRECEDING_SIBLING_ + { + $$ = XQStep::PRECEDING_SIBLING; + } + | _AXIS_PRECEDING_ + { + $$ = XQStep::PRECEDING; + } + | _AXIS_ANCESTOR_OR_SELF_ + { + $$ = XQStep::ANCESTOR_OR_SELF; + } + ; + +// [80] AbbrevReverseStep ::= ".." +AbbrevReverseStep: + _DOT_DOT_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setNameWildcard(); + step->setNamespaceWildcard(); + step->setTypeWildcard(); + $$ = WRAP(@1, new (MEMMGR) XQStep(XQStep::PARENT, step, MEMMGR)); + } + ; + +// [81] NodeTest ::= KindTest | NameTest +NodeTest: + KindTest + | NameTest + ; + +// [82] NameTest ::= QName | Wildcard +NameTest: + QName + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setNodePrefix($1->getPrefix()); + step->setNodeName($1->getName()); + $$ = step; + } + | Wildcard + ; + +// [83] Wildcard ::= "*" | | <"*" ":" NCName> +Wildcard: + _STAR_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setNameWildcard(); + step->setNamespaceWildcard(); + $$ = step; + } + | _NCNAME_COLON_STAR_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setNodePrefix($1); + step->setNameWildcard(); + $$ = step; + } + | _STAR_COLON_NCNAME_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setNodeName($1); + step->setNamespaceWildcard(); + $$ = step; + } + ; + +// [84] FilterExpr ::= PrimaryExpr PredicateList +FilterExpr: + PrimaryExpr PredicateList + { + $$ = XQPredicate::addPredicates($1, $2); + } + ; + +// [85] PredicateList ::= Predicate* +// [86] Predicate ::= "[" Expr "]" +PredicateList: + /* empty */ + { + $$ = new (MEMMGR) VectorOfPredicates(MEMMGR); + } + | PredicateList _LBRACK_ Expr _RBRACK_ + { + XQPredicate *pred = WRAP(@2, new (MEMMGR) XQPredicate($3, MEMMGR)); + $1->push_back(pred); + $$ = $1; + } + ; + +// [87] PrimaryExpr ::= Literal | VarRef | ParenthesizedExpr | ContextItemExpr | FunctionCall | Constructor | OrderedExpr | UnorderedExpr +PrimaryExpr: + Literal + | VarRef + | ParenthesizedExpr + | ContextItemExpr + | FunctionCall + | Constructor + | OrderedExpr + | UnorderedExpr + ; + +// [88] Literal ::= NumericLiteral | StringLiteral +Literal: + NumericLiteral + | StringLiteral + ; + +// [89] NumericLiteral ::= IntegerLiteral | DecimalLiteral | DoubleLiteral +NumericLiteral: + IntegerLiteral + | DecimalLiteral + | DoubleLiteral + ; + +// [90] VarRef ::= "$" VarName +// [91] VarName ::= QName +VarRef: + _DOLLAR_SIGN_ _VARIABLE_ + { + int nColon=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::indexOf($2,':'); + if(nColon!=-1) + $$ = WRAP(@1, new (MEMMGR) XQVariable($2,MEMMGR)); + else + $$ = WRAP(@1, new (MEMMGR) XQVariable(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, $2,MEMMGR)); + } + ; + +// [92] ParenthesizedExpr ::= "(" Expr? ")" +ParenthesizedExpr: + _LPAR_ Expr _RPAR_ + { + ASTNode* prevExpr=$2; + if((unsigned int)prevExpr->getType()==ASTNode::DEBUG_HOOK) + prevExpr=((XQDebugHook*)prevExpr)->m_impl; + if(prevExpr->getType()!=ASTNode::PARENTHESIZED) + { + XQParenthesizedExpr *dis = new (MEMMGR) XQParenthesizedExpr(MEMMGR); + dis->addItem($2); + $$ = WRAP(@2, dis); + } + else + $$ = WRAP(@2, $2); + } + | _LPAR_ _RPAR_ + { + $$ = WRAP(@1, new (MEMMGR) XQSequence(MEMMGR)); + } + ; + +// [93] ContextItemExpr ::= "." +ContextItemExpr: + _DOT_ + { + $$ = WRAP(@1, new (MEMMGR) XQContextItem(MEMMGR)); + } + ; + +// [94] OrderedExpr ::= <"ordered" "{"> Expr "}" +OrderedExpr: + _ORDERED_ _LBRACE_ Expr _RBRACE_ + { + REJECT_NOT_XQUERY(OrderedExpr, @1); + + $$ = WRAP(@1, new (MEMMGR) XQOrderingChange(StaticContext::ORDERING_ORDERED, $3, MEMMGR)); + } + ; + +// [95] UnorderedExpr ::= <"unordered" "{"> Expr "}" +UnorderedExpr: + _UNORDERED_ _LBRACE_ Expr _RBRACE_ + { + REJECT_NOT_XQUERY(UnorderedExpr, @1); + + $$ = WRAP(@1, new (MEMMGR) XQOrderingChange(StaticContext::ORDERING_UNORDERED, $3, MEMMGR)); + } + ; + +// [96] FunctionCall ::= (ExprSingle ("," ExprSingle)*)? ")" +FunctionCall: + _FUNCTION_CALL_ _RPAR_ + { + VectorOfASTNodes args(XQillaAllocator(MEMMGR)); + $$ = FNWRAP(@1, $1, new (MEMMGR) XQFunctionCall(new (MEMMGR) QualifiedName($1, MEMMGR), args, MEMMGR)); + } + | _FUNCTION_CALL_ FunctionCallArgumentList _RPAR_ + { + $$ = FNWRAP(@1, $1, new (MEMMGR) XQFunctionCall(new (MEMMGR) QualifiedName($1, MEMMGR), *$2,MEMMGR)); + } + ; + +FunctionCallArgumentList: + FunctionCallArgumentList _COMMA_ ExprSingle + { + $1->push_back($3); + $$ = $1; + } + | ExprSingle + { + $$ = new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + $$->push_back($1); + } + ; + +// [97] Constructor ::= DirectConstructor | ComputedConstructor +Constructor: + DirectConstructor + { + REJECT_NOT_XQUERY(Constructor, @1); + } + | ComputedConstructor + { + REJECT_NOT_XQUERY(Constructor, @1); + } + ; + +// [98] DirectConstructor ::= DirElemConstructor +// | DirCommentConstructor +// | DirPIConstructor +DirectConstructor: + DirElemConstructor + | DirCommentConstructor + | DirPIConstructor + ; + +// [99] DirElemConstructor ::= "<" QName DirAttributeList ("/>" | (">" DirElementContent* "")) +DirElemConstructor: + _START_TAG_OPEN_ _TAG_NAME_ DirAttributeList _EMPTY_TAG_CLOSE_ + { + VectorOfASTNodes* content=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + $$ = WRAP(@1, new (MEMMGR) XQElementConstructor( + new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_QNAME, + $2, AnyAtomicType::QNAME), + MEMMGR), + $3, content, MEMMGR)); + } + | _START_TAG_OPEN_ _TAG_NAME_ DirAttributeList _TAG_CLOSE_ DirElementContent _END_TAG_OPEN_ _TAG_NAME_ _TAG_CLOSE_ + { + if(!XPath2Utils::equals($2,$7)) + yyerror(@7, "Close tag does not match open tag"); + // if we are requested to strip whitespace-only nodes, check if the last element content should be removed + VectorOfASTNodes* elemContent=$5; + if(elemContent->size()>0) + { + if(elemContent->back()==0) + elemContent->pop_back(); + else if(!CONTEXT->getPreserveBoundarySpace() && + elemContent->back()->getType()==ASTNode::LITERAL) + { + ASTNode* last=elemContent->back(); + Item::Ptr litVal = ((XQLiteral*)last)->getItemConstructor()->createItem(CONTEXT); + if(((AnyAtomicType*)(const Item*)litVal)->getPrimitiveTypeIndex()==AnyAtomicType::STRING && + isAllSpaces(litVal->asString(CONTEXT))) + { + elemContent->pop_back(); + // special case: if the previous node was a CDATA, put it back + if(elemContent->size()>0 && elemContent->back()->getType()==ASTNode::DOM_CONSTRUCTOR && + ((XQDOMConstructor*)elemContent->back())->getNodeType()==Node::cdata_string) + { + elemContent->push_back(last); + } + } + } + } + $$ = WRAP(@1, new (MEMMGR) XQElementConstructor( + new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_QNAME, + $2, AnyAtomicType::QNAME), + MEMMGR), + $3, elemContent,MEMMGR)); + } + ; + +// [100] DirAttributeList ::= (S (QName S? "=" S? DirAttributeValue)?)* +DirAttributeList: + /* empty */ + { + $$ = new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + } + | DirAttributeList _ATTRIBUTE_NAME_ _VALUE_INDICATOR_ DirAttributeValue + { + $$ = $1; + bool bInsertAtFront=false; + if(XPath2Utils::equals($2, XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXMLNSString) || + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::startsWith($2, XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXMLNSColonString)) + { + // check that the value of an xmlns attribute is a stirng literal + if($4->size()>1 || ($4->size()==1 && $4->front()->getType()!=ASTNode::LITERAL)) + yyerror(@4, "Namespace URI of a namespace declaration must be a literal [err:XQST0022]"); + bInsertAtFront=true; + } + if($4->size()>0 && $4->back()==0) + $4->pop_back(); + ASTNode* attrItem=WRAP(@2, new (MEMMGR) XQAttributeConstructor( + new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_QNAME, + $2, AnyAtomicType::QNAME), + MEMMGR), + $4,MEMMGR)); + if(bInsertAtFront) + $$->insert($$->begin(), attrItem); + else + $$->push_back(attrItem); + } + ; + +// [101] DirAttributeValue ::= ('"' (EscapeQuot | QuotAttrValueContent)* '"') +// | ("'" (EscapeApos | AposAttrValueContent)* "'") +DirAttributeValue: + _OPEN_QUOT_ QuotAttrValueContent _CLOSE_QUOT_ + { + $$ = $2; + } + | _OPEN_APOS_ AposAttrValueContent _CLOSE_APOS_ + { + $$ = $2; + } + ; + +// [102] QuotAttrValueContent ::= QuotAttContentChar +// | CommonContent +QuotAttrValueContent: + /* empty */ + { + $$ = new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + } + | QuotAttrValueContent EnclosedExpr + { + $$ = $1; + if($$->size()>0 && $$->back()==0) + $$->pop_back(); + $$->push_back($2); + $$->push_back(0); + } + | QuotAttrValueContent _ESCAPE_QUOT_ + { + $$ = $1; + merge_strings(CONTEXT,$$,szQuote); + } + | QuotAttrValueContent _CHAR_ + { + $$ = $1; + merge_strings(CONTEXT,$$,$2); + } + | QuotAttrValueContent CommonContent + { + $$ = $1; + merge_strings(CONTEXT,$$,$2); + } + ; + +// [103] AposAttrValueContent ::= AposAttContentChar +// | CommonContent +AposAttrValueContent: + /* empty */ + { + $$ = new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + } + | AposAttrValueContent EnclosedExpr + { + $$ = $1; + if($$->size()>0 && $$->back()==0) + $$->pop_back(); + $$->push_back($2); + $$->push_back(0); + } + | AposAttrValueContent _ESCAPE_APOS_ + { + $$ = $1; + merge_strings(CONTEXT,$$,szApos); + } + | AposAttrValueContent _CHAR_ + { + $$ = $1; + merge_strings(CONTEXT,$$,$2); + } + | AposAttrValueContent CommonContent + { + $$ = $1; + merge_strings(CONTEXT,$$,$2); + } + ; + +// [104] DirElementContent ::= DirectConstructor +// | ElementContentChar +// | CdataSection +// | CommonContent + +// As literal strings generated by entity references or enclosed expressions should not be merged with real literal strings, +// I add a NULL pointer after them that has to be removed by the next fragment or by the parent rule +DirElementContent: + /* empty */ + { + $$ = new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + } + | DirElementContent DirectConstructor + { + $$ = $1; + // if the last token was a string literal made of whitespace and + // we are adding a node constructor, and the context tells us to strip whitespace, remove it + if($$->size()>0) + { + if($$->back()==0) + $$->pop_back(); + else if(!CONTEXT->getPreserveBoundarySpace() && $$->back()->getType()==ASTNode::LITERAL) + { + const XMLCh* lastString=NULL; + Item::Ptr litVal = ((XQLiteral*)$$->back())->getItemConstructor()->createItem(CONTEXT); + if(((AnyAtomicType*)(const Item*)litVal)->getPrimitiveTypeIndex()==AnyAtomicType::STRING) + lastString=litVal->asString(CONTEXT); + if(lastString!=NULL && *lastString!=0 && isAllSpaces(lastString)) + $$->pop_back(); + } + } + $$->push_back($2); + } + | DirElementContent _CHAR_ + { + $$ = $1; + if($$->size()>0 && $$->back() && $$->back()->getType()==ASTNode::LITERAL) + { + XQLiteral *lit = (XQLiteral*)$$->back(); + const XMLCh* string=lit->getItemConstructor()->createItem(CONTEXT)->asString(CONTEXT); + string=XPath2Utils::concatStrings(string,$2,MEMMGR); + + AnyAtomicTypeConstructor *ic = new (MEMMGR) + AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + string, AnyAtomicType::STRING); + lit->setItemConstructor(ic); + } + else + { + if($$->size()>0 && $$->back()==0) + $$->pop_back(); + AnyAtomicTypeConstructor *ic = new (MEMMGR) + AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + $2, AnyAtomicType::STRING); + + $$->push_back(new (MEMMGR) XQLiteral(ic, MEMMGR)); + } + } + | DirElementContent CdataSection + { + $$ = $1; + if($$->size()>0 && $$->back()==0) + $$->pop_back(); + + // if the last token was a string literal made of whitespace and + // we are adding a node constructor, and the context tells us to strip whitespace, remove it + if(!CONTEXT->getPreserveBoundarySpace() && $$->size()>0 && $$->back()->getType()==ASTNode::LITERAL) + { + const XMLCh* lastString=NULL; + Item::Ptr litVal = ((XQLiteral*)$$->back())->getItemConstructor()->createItem(CONTEXT); + if(((AnyAtomicType*)(const Item*)litVal)->getPrimitiveTypeIndex()==AnyAtomicType::STRING) + lastString=litVal->asString(CONTEXT); + if(lastString!=NULL && *lastString!=0 && isAllSpaces(lastString)) + $$->pop_back(); + } + $$->push_back($2); + } + | DirElementContent EnclosedExpr + { + $$ = $1; + // if the last token was a string literal made of whitespace and + // we are adding an enclosed expression, and the context tells us to strip whitespace, remove it + if($$->size()>0) + { + if($$->back()==0) + $$->pop_back(); + else if(!CONTEXT->getPreserveBoundarySpace() && $$->back()->getType()==ASTNode::LITERAL) + { + const XMLCh* lastString=NULL; + Item::Ptr litVal = ((XQLiteral*)$$->back())->getItemConstructor()->createItem(CONTEXT); + if(((AnyAtomicType*)(const Item*)litVal)->getPrimitiveTypeIndex()==AnyAtomicType::STRING) + lastString=litVal->asString(CONTEXT); + if(lastString!=NULL && *lastString!=0 && isAllSpaces(lastString)) + $$->pop_back(); + } + } + $$->push_back($2); + $$->push_back(0); + } + | DirElementContent CommonContent + { + $$ = $1; + if($$->size()>0 && $$->back()==0) + $$->pop_back(); + + AnyAtomicTypeConstructor *ic = new (MEMMGR) + AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + $2, AnyAtomicType::STRING); + + $$->push_back(new (MEMMGR) XQLiteral(ic, MEMMGR)); + } + ; + +// [105] CommonContent ::= PredefinedEntityRef | CharRef | "{{" | "}}" | EnclosedExpr +// we choose to remove the EnclosedExpr, so that the type can be a string +CommonContent: + _PREDEFINED_ENTITY_REF_ + | _CHAR_REF_ + | _LCURLY_BRACE_ESCAPE_ + { + $$ = szCurlyOpen; + } + | _RCURLY_BRACE_ESCAPE_ + { + $$ = szCurlyClose; + } + ; + +// [106] DirCommentConstructor ::= "" +// [107] DirCommentContents ::= ((Char - '-') | <'-' (Char - '-')>)* +DirCommentConstructor: + _XML_COMMENT_ + { + ASTNode *value = WRAP(@1, new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + $1, AnyAtomicType::STRING), + MEMMGR)); + $$ = WRAP(@1, new (MEMMGR) XQCommentConstructor(value, MEMMGR)); + } + ; + +// [108] DirPIConstructor ::= "" +// [109] DirPIContents ::= (Char* - (Char* '?>' Char*)) +DirPIConstructor: + _PROCESSING_INSTRUCTION_START_ _PI_TARGET_ _PROCESSING_INSTRUCTION_CONTENT_ + { + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::compareIString($2, XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXMLString)==0) + yyerror(@2, "The target for the processing instruction must not be 'XML'"); + ASTNode *value = WRAP(@3, new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + $3, AnyAtomicType::STRING), + MEMMGR)); + $$ = WRAP(@1, new (MEMMGR) XQPIConstructor( + WRAP(@2, new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + $2, AnyAtomicType::STRING), + MEMMGR)), + value, MEMMGR)); + } + ; + +// [110] CDataSection ::= "" +// [111] CDataSectionContents ::= (Char* - (Char* ']]>' Char*)) +CdataSection: + _CDATA_SECTION_ + { + ASTNode *value = new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + $1, AnyAtomicType::STRING), + MEMMGR); + $$ = WRAP(@1, new (MEMMGR) XQTextConstructor(/*isCDATA*/true, value, MEMMGR)); + } + ; + +// [112] ComputedConstructor ::= CompDocConstructor +// | CompElemConstructor +// | CompAttrConstructor +// | CompTextConstructor +// | CompCommentConstructor +// | CompPIConstructor +ComputedConstructor: + CompDocConstructor + | CompElemConstructor + | CompAttrConstructor + | CompTextConstructor + | CompCommentConstructor + | CompPIConstructor + ; + +// [113] CompDocConstructor ::= <"document" "{"> Expr "}" +CompDocConstructor: + _DOCUMENT_CONSTR_ _LBRACE_ Expr _RBRACE_ + { + $$ = WRAP(@1, new (MEMMGR) XQDocumentConstructor(WRAP(@3, $3),MEMMGR)); + } + ; + +// [114] CompElemConstructor ::= (<"element" QName "{"> | (<"element" "{"> Expr "}" "{")) ContentExpr? "}" +CompElemConstructor: + _NAMED_ELEMENT_CONSTR_ _LBRACE_ ContentExpr _RBRACE_ + { + VectorOfASTNodes* content=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + VectorOfASTNodes* empty=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + content->push_back(WRAP(@3, $3)); + $$ = WRAP(@1, new (MEMMGR) XQElementConstructor( + new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_QNAME, + $1, AnyAtomicType::QNAME), + MEMMGR), + empty, content,MEMMGR)); + } + | _NAMED_ELEMENT_CONSTR_ _LBRACE_ _RBRACE_ + { + VectorOfASTNodes* empty=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + $$ = WRAP(@1, new (MEMMGR) XQElementConstructor( + new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_QNAME, + $1, AnyAtomicType::QNAME), + MEMMGR), + empty, empty,MEMMGR)); + } + | _ELEMENT_CONSTR_ _LBRACE_ Expr _RBRACE_ _LBRACE_ ContentExpr _RBRACE_ + { + VectorOfASTNodes* content=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + VectorOfASTNodes* empty=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + content->push_back(WRAP(@6, $6)); + $$ = WRAP(@1, new (MEMMGR) XQElementConstructor( + WRAP(@3, $3), + empty, content, MEMMGR)); + } + | _ELEMENT_CONSTR_ _LBRACE_ Expr _RBRACE_ _LBRACE_ _RBRACE_ + { + VectorOfASTNodes* empty=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + $$ = WRAP(@1, new (MEMMGR) XQElementConstructor( + WRAP(@3, $3), + empty, empty, MEMMGR)); + } + ; + +// [115] ContentExpr ::= Expr +ContentExpr: + Expr + ; + +// [116] CompAttrConstructor ::= (<"attribute" QName "{"> | (<"attribute" "{"> Expr "}" "{")) Expr? "}" +CompAttrConstructor: + _NAMED_ATTRIBUTE_CONSTR_ _LBRACE_ Expr _RBRACE_ + { + VectorOfASTNodes* content=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + content->push_back(WRAP(@3, $3)); + $$ = WRAP(@1, new (MEMMGR) XQAttributeConstructor( + new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_QNAME, + $1, AnyAtomicType::QNAME), + MEMMGR), + content,MEMMGR)); + } + | _NAMED_ATTRIBUTE_CONSTR_ _LBRACE_ _RBRACE_ + { + VectorOfASTNodes* empty=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + $$ = WRAP(@1, new (MEMMGR) XQAttributeConstructor( + new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_QNAME, + $1, AnyAtomicType::QNAME), + MEMMGR), + empty,MEMMGR)); + } + | _ATTRIBUTE_CONSTR_ _LBRACE_ Expr _RBRACE_ _LBRACE_ Expr _RBRACE_ + { + VectorOfASTNodes* content=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + content->push_back(WRAP(@6, $6)); + $$ = WRAP(@1, new (MEMMGR) XQAttributeConstructor( + WRAP(@3, $3), + content, MEMMGR)); + } + | _ATTRIBUTE_CONSTR_ _LBRACE_ Expr _RBRACE_ _LBRACE_ _RBRACE_ + { + VectorOfASTNodes* empty=new (MEMMGR) VectorOfASTNodes(XQillaAllocator(MEMMGR)); + $$ = WRAP(@1, new (MEMMGR) XQAttributeConstructor( + WRAP(@3, $3), + empty, MEMMGR)); + } + ; + +// [117] CompTextConstructor ::= <"text" "{"> Expr "}" +CompTextConstructor: + _TEXT_CONSTR_ _LBRACE_ Expr _RBRACE_ + { + $$ = WRAP(@1, new (MEMMGR) XQTextConstructor(/*isCDATA*/false, WRAP(@3, $3), MEMMGR)); + } + ; + +// [118] CompCommentConstructor ::= <"comment" "{"> Expr "}" +CompCommentConstructor: + _COMMENT_CONSTR_ _LBRACE_ Expr _RBRACE_ + { + $$ = WRAP(@1, new (MEMMGR) XQCommentConstructor(WRAP(@3, $3), MEMMGR)); + } + ; + +// [119] CompPIConstructor ::= (<"processing-instruction" NCName "{"> | (<"processing-instruction" "{"> Expr "}" "{")) Expr? "}" +CompPIConstructor: + _NAMED_PROCESSING_INSTRUCTION_CONSTR_ _LBRACE_ Expr _RBRACE_ + { + $$ = WRAP(@1, new (MEMMGR) XQPIConstructor( + new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + $1, AnyAtomicType::STRING), + MEMMGR), + WRAP(@3, $3), MEMMGR)); + } + | _NAMED_PROCESSING_INSTRUCTION_CONSTR_ _LBRACE_ _RBRACE_ + { + $$ = WRAP(@1, new (MEMMGR) XQPIConstructor( + new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + $1, AnyAtomicType::STRING), + MEMMGR), + new (MEMMGR) XQSequence(MEMMGR), MEMMGR)); + } + | _PROCESSING_INSTRUCTION_CONSTR_ _LBRACE_ Expr _RBRACE_ _LBRACE_ Expr _RBRACE_ + { + $$ = WRAP(@1, new (MEMMGR) XQPIConstructor( + WRAP(@3, $3), + WRAP(@6, $6), MEMMGR)); + } + | _PROCESSING_INSTRUCTION_CONSTR_ _LBRACE_ Expr _RBRACE_ _LBRACE_ _RBRACE_ + { + $$ = WRAP(@1, new (MEMMGR) XQPIConstructor( + WRAP(@3, $3), + new (MEMMGR) XQSequence(MEMMGR), MEMMGR)); + } + ; + +// [120] SingleType ::= AtomicType "?"? +SingleType: + AtomicType _ZERO_OR_ONE_ + { + SequenceType* seq=WRAP(@1, new (MEMMGR) SequenceType()); + seq->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ATOMIC_TYPE,NULL,$1)); + seq->setOccurrence(SequenceType::QUESTION_MARK); + $$ = seq; + } + | AtomicType + { + SequenceType* seq=WRAP(@1, new (MEMMGR) SequenceType()); + seq->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ATOMIC_TYPE,NULL,$1)); + seq->setOccurrence(SequenceType::EXACTLY_ONE); + $$ = seq; + } + ; + +// [121] TypeDeclaration ::= "as" SequenceType +TypeDeclaration: + _AS_ SequenceType + { + REJECT_NOT_XQUERY(TypeDeclaration, @1); + + $$ = $2; + } + ; + +// [122] SequenceType ::= (ItemType OccurrenceIndicator?) | <" empty-sequence" "(" ")"> +SequenceType: + ItemType OccurrenceIndicator + { + SequenceType* seq=WRAP(@1, new (MEMMGR) SequenceType()); + seq->setItemType($1); + seq->setOccurrence($2); + $$ = seq; + } + | ItemType + { + SequenceType* seq=WRAP(@1, new (MEMMGR) SequenceType()); + seq->setItemType($1); + seq->setOccurrence(SequenceType::EXACTLY_ONE); + $$ = seq; + } + | _EMPTY_ _LPAR_ _RPAR_ + { + $$ = WRAP(@1, new (MEMMGR) SequenceType()); + } + ; + + +// [123] OccurrenceIndicator ::= "*" | "+" | "?" +OccurrenceIndicator: + _ZERO_OR_MORE_ + { $$ = SequenceType::STAR; } + | _ONE_OR_MORE_ + { $$ = SequenceType::PLUS; } + | _ZERO_OR_ONE_ + { $$ = SequenceType::QUESTION_MARK; } + ; + +// [124] ItemType ::= AtomicType | KindTest | <"item" "(" ")"> +ItemType: + AtomicType + { + $$ = new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ATOMIC_TYPE, NULL, $1); + } + | KindTest + { + $$ = $1->getItemType(); + $1->setItemType(NULL); + } + | _ITEM_ _LPAR_ _RPAR_ + { + $$ = new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ANYTHING); + } + ; + +// [125] AtomicType ::= QName +AtomicType: + QName + { + $$ = $1; + } + ; + +// [126] KindTest ::= DocumentTest +// | ElementTest +// | AttributeTest +// | SchemaElementTest +// | SchemaAttributeTest +// | PITest +// | CommentTest +// | TextTest +// | AnyKindTest +KindTest: + DocumentTest + | ElementTest + | AttributeTest + | SchemaElementTest + | SchemaAttributeTest + | PITest + | CommentTest + | TextTest + | AnyKindTest + ; + +// [127] AnyKindTest ::= <"node" "("> ")" +AnyKindTest: + _NODE_LPAR_ _RPAR_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_NODE)); + $$ = step; + } + ; + +// [128] DocumentTest ::= <"document-node" "("> (ElementTest | SchemaElementTest)? ")" +DocumentTest: + _DOCUMENT_NODE_LPAR_ _RPAR_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_DOCUMENT)); + $$ = step; + } + | _DOCUMENT_NODE_LPAR_ ElementTest _RPAR_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + SequenceType::ItemType* elemTest=$2->getItemType(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_DOCUMENT,elemTest->getName(),elemTest->getType())); + elemTest->setName(NULL); + elemTest->setType(NULL); + $$ = step; + } + | _DOCUMENT_NODE_LPAR_ SchemaElementTest _RPAR_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + SequenceType::ItemType* elemTest=$2->getItemType(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_DOCUMENT,elemTest->getName(),elemTest->getType())); + elemTest->setName(NULL); + elemTest->setType(NULL); + $$ = step; + } + ; + +// [129] TextTest ::= <"text" "("> ")" +TextTest: + _TEXT_LPAR_ _RPAR_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_TEXT)); + $$ = step; + } + ; + +// [130] CommentTest ::= <"comment" "("> ")" +CommentTest: + _COMMENT_LPAR_ _RPAR_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_COMMENT)); + $$ = step; + } + ; + +// [131] PITest ::= <"processing-instruction" "("> (NCName | StringLiteral)? ")" +PITest: + _PROCESSING_INSTRUCTION_LPAR_ _RPAR_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_PI)); + $$ = step; + } + | _PROCESSING_INSTRUCTION_LPAR_ _NCNAME_ _RPAR_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_PI, new (MEMMGR) QualifiedName($2))); + $$ = step; + } + | _PROCESSING_INSTRUCTION_LPAR_ _STRING_LITERAL_ _RPAR_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_PI, new (MEMMGR) QualifiedName($2))); + $$ = step; + } + ; + +// [132] AttributeTest ::= <"attribute" "("> (AttribNameOrWildcard ("," TypeName)?)? ")" +AttributeTest: + _ATTRIBUTE_LPAR_ _RPAR_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ATTRIBUTE)); + $$ = step; + } + | _ATTRIBUTE_LPAR_ AttribNameOrWildcard _RPAR_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ATTRIBUTE,$2)); + $$ = step; + } + | _ATTRIBUTE_LPAR_ AttribNameOrWildcard _COMMA_ TypeName _RPAR_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ATTRIBUTE,$2,$4)); + $$ = step; + } + ; + +// [133] AttribNameOrWildcard ::= AttributeName | "*" +AttribNameOrWildcard: + AttributeName + | _STAR_ + { + $$ = NULL; + } + ; + +// [134] SchemaAttributeTest ::= <"schema-attribute" "("> AttributeDeclaration ")" +SchemaAttributeTest: + _SCHEMA_ATTRIBUTE_LPAR_ AttributeDeclaration _RPAR_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_SCHEMA_ATTRIBUTE,$2)); + $$ = step; + } + ; + +// [135] AttributeDeclaration ::= AttributeName +AttributeDeclaration: + AttributeName + ; + +// [136] ElementTest ::= <"element" "("> (ElementNameOrWildcard ("," TypeName "?"?)?)? ")" +ElementTest: + _ELEMENT_LPAR_ _RPAR_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ELEMENT)); + $$ = step; + } + | _ELEMENT_LPAR_ ElementNameOrWildcard _RPAR_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ELEMENT,$2)); + $$ = step; + } + | _ELEMENT_LPAR_ ElementNameOrWildcard _COMMA_ TypeName _RPAR_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ELEMENT,$2,$4)); + $$ = step; + } + | _ELEMENT_LPAR_ ElementNameOrWildcard _COMMA_ TypeName _NILLABLE_ _RPAR_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + SequenceType::ItemType* pType=new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_ELEMENT,$2,$4); + pType->setAllowNilled(true); + step->setItemType(pType); + $$ = step; + } + ; + +// [137] ElementNameOrWildcard ::= ElementName | "*" +ElementNameOrWildcard: + ElementName + | _STAR_ + { + $$ = NULL; + } + ; + +// [138] SchemaElementTest ::= <"schema-element" "("> ElementDeclaration ")" +SchemaElementTest: + _SCHEMA_ELEMENT_LPAR_ ElementDeclaration _RPAR_ + { + NodeTest *step = new (MEMMGR) NodeTest(); + step->setItemType(new (MEMMGR) SequenceType::ItemType(SequenceType::ItemType::TEST_SCHEMA_ELEMENT,$2)); + $$ = step; + } + ; + +// [139] ElementDeclaration ::= ElementName +ElementDeclaration: + ElementName + ; + +// [140] AttributeName ::= QName +AttributeName: + QName + ; + +// [141] ElementName ::= QName +ElementName: + QName + ; + +// [142] TypeName ::= QName +TypeName: + QName + ; + +// [143] URILiteral ::= StringLiteral +URILiteral: + _STRING_LITERAL_ + { + // the string must be whitespace-normalized + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::collapseWS($1, MEMMGR); + if($1 && *$1 && !XPath2Utils::isValidURI($1, MEMMGR)) + yyerror(@1, "The URI literal is not valid [err:XQST0046]"); + $$ = $1; + } + ; + +// [144] FTSelection ::= FTOr (FTMatchOption | FTProximity)* ("weight" DecimalLiteral)? +FTSelection: + FTOr FTSelectionOptions _WEIGHT_ DecimalLiteral + { + // TBD FTSelectionOptions and weight + $$ = $1; + + for(VectorOfFTOptions::iterator i = $2->begin(); + i != $2->end(); ++i) { + (*i)->setArgument($$); + $$ = *i; + } + delete $2; + } + | FTOr FTSelectionOptions + { + $$ = $1; + + for(VectorOfFTOptions::iterator i = $2->begin(); + i != $2->end(); ++i) { + (*i)->setArgument($$); + $$ = *i; + } + delete $2; + } + ; + +FTSelectionOptions: + /* empty */ + { + $$ = new (MEMMGR) VectorOfFTOptions(XQillaAllocator(MEMMGR)); + } + | FTSelectionOptions FTMatchOption + { + $$ = $1; + } + | FTSelectionOptions FTProximity + { + if($2 != NULL) + $1->push_back($2); + $$ = $1; + } + ; + +// [145] FTOr ::= FTAnd ( "||" FTAnd )* +FTOr: + FTOr _DOUBLE_VERTICAL_BAR_ FTAnd + { + if($1->getType() == FTSelection::OR) { + FTOr *op = (FTOr*)$1; + op->addArg($3); + $$ = op; + } + else { + $$ = WRAP(@2, new (MEMMGR) FTOr($1, $3, MEMMGR)); + } + } + | FTAnd + ; + +// [146] FTAnd ::= FTMildnot ( "&&" FTMildnot )* +FTAnd: + FTAnd _DOUBLE_AMPERSAND_ FTMildnot + { + if($1->getType() == FTSelection::AND) { + FTAnd *op = (FTAnd*)$1; + op->addArg($3); + $$ = op; + } + else { + $$ = WRAP(@2, new (MEMMGR) FTAnd($1, $3, MEMMGR)); + } + } + | FTMildnot + ; + +// [147] FTMildnot ::= FTUnaryNot ( "not" "in" FTUnaryNot )* +FTMildnot: + FTMildnot _NOT_IN_ FTUnaryNot + { + $$ = WRAP(@2, new (MEMMGR) FTMildnot($1, $3, MEMMGR)); + } + | FTUnaryNot + ; + +// [148] FTUnaryNot ::= ("!")? FTWordsSelection +FTUnaryNot: + _BANG_ FTWordsSelection + { + $$ = WRAP(@1, new (MEMMGR) FTUnaryNot($2, MEMMGR)); + } + | FTWordsSelection + ; + +// [149] FTWordsSelection ::= FTWords | ("(" FTSelection ")") +FTWordsSelection: + _LPAR_ FTSelection _RPAR_ + { + $$ = $2; + } + | FTWords + ; + +// [150] FTWords ::= (Literal | VarRef | ContextItemExpr | FunctionCall | ("{" Expr "}")) FTAnyallOption? +FTWords: + Literal FTAnyallOption + { + $$ = WRAP(@1, new (MEMMGR) FTWords($1, $2, MEMMGR)); + } + | VarRef FTAnyallOption + { + $$ = WRAP(@1, new (MEMMGR) FTWords($1, $2, MEMMGR)); + } + | ContextItemExpr FTAnyallOption + { + $$ = WRAP(@1, new (MEMMGR) FTWords($1, $2, MEMMGR)); + } + | FunctionCall FTAnyallOption + { + $$ = WRAP(@1, new (MEMMGR) FTWords($1, $2, MEMMGR)); + } + | _LBRACE_ Expr _RBRACE_ FTAnyallOption + { + $$ = WRAP(@2, new (MEMMGR) FTWords($2, $4, MEMMGR)); + } + ; + +// [151] FTProximity ::= FTOrderedIndicator | FTWindow | FTDistance | FTTimes | FTScope | FTContent +// [152] FTOrderedIndicator ::= "ordered" +// [164] FTContent ::= ("at" "start") | ("at" "end") | ("entire" "content") +// [167] FTDistance ::= "distance" FTRange FTUnit +// [168] FTWindow ::= "window" UnionExpr FTUnit +// [169] FTTimes ::= "occurs" FTRange "times" +// [170] FTScope ::= ("same" | "different") FTBigUnit +FTProximity: + _ORDERING_ORDERED_ + { + $$ = WRAP(@1, new (MEMMGR) FTOrder(MEMMGR)); + } + | _WINDOW_ UnionExpr FTUnit + { + $$ = WRAP(@1, new (MEMMGR) FTWindow($2, $3, MEMMGR)); + } + | _DISTANCE_ FTRange FTUnit + { + $$ = WRAP(@1, new (MEMMGR) FTDistance($2, $3, MEMMGR)); + } + | _OCCURS_ FTRange _TIMES_ + { + std::cerr << "occurs" << std::endl; + $$ = NULL; + } + | _SAME_ FTBigUnit + { + $$ = WRAP(@1, new (MEMMGR) FTScope(FTScope::SAME, $2, MEMMGR)); + } + | _DIFFERENT_ FTBigUnit + { + $$ = WRAP(@1, new (MEMMGR) FTScope(FTScope::DIFFERENT, $2, MEMMGR)); + } + | _AT_START_ + { + $$ = WRAP(@1, new (MEMMGR) FTContent(FTContent::AT_START, MEMMGR)); + } + | _AT_END_ + { + $$ = WRAP(@1, new (MEMMGR) FTContent(FTContent::AT_END, MEMMGR)); + } + | _ENTIRE_CONTENT_ + { + $$ = WRAP(@1, new (MEMMGR) FTContent(FTContent::ENTIRE_CONTENT, MEMMGR)); + } + ; + +// [153] FTMatchOption ::= FTCaseOption +// | FTDiacriticsOption +// | FTStemOption +// | FTThesaurusOption +// | FTStopwordOption +// | FTLanguageOption +// | FTWildCardOption +FTMatchOption: + FTCaseOption + | FTDiacriticsOption + | FTStemOption + | FTThesaurusOption + | FTStopwordOption + | FTLanguageOption + | FTWildCardOption + ; + +// [154] FTCaseOption ::= "lowercase" +// | "uppercase" +// | ("case" "sensitive") +// | ("case" "insensitive") +FTCaseOption: + _LOWERCASE_ + { + std::cerr << "lowercase" << std::endl; + } + | _UPPERCASE_ + { + std::cerr << "uppercase" << std::endl; + } + | _CASE_SENSITIVE_ + { + std::cerr << "case sensitive" << std::endl; + } + | _CASE_INSENSITIVE_ + { + std::cerr << "case insensitive" << std::endl; + } + ; + +// [155] FTDiacriticsOption ::= ("with" "diacritics") +// | ("without" "diacritics") +// | ("diacritics" "sensitive") +// | ("diacritics" "insensitive") +FTDiacriticsOption: + _WITH_DIACRITICS_ + { + std::cerr << "with diacritics" << std::endl; + } + | _WITHOUT_DIACRITICS_ + { + std::cerr << "without diacritics" << std::endl; + } + | _DIACRITICS_SENSITIVE_ + { + std::cerr << "diacritics sensitive" << std::endl; + } + | _DIACRITICS_INSENSITIVE_ + { + std::cerr << "diacritics insensitive" << std::endl; + } + ; + +// [156] FTStemOption ::= ("with" "stemming") | ("without" "stemming") +FTStemOption: + _WITH_STEMMING_ + { + std::cerr << "with stemming" << std::endl; + } + | _WITHOUT_STEMMING_ + { + std::cerr << "without stemming" << std::endl; + } + ; + +// [157] FTThesaurusOption ::= ("with" "thesaurus" (FTThesaurusID | "default")) +// | ("with" "thesaurus" "(" (FTThesaurusID | "default") ("," FTThesaurusID)* ")") +// | ("without" "thesaurus") +FTThesaurusOption: + _WITH_THESAURUS_ FTThesaurusID + { + std::cerr << "with thesaurus" << std::endl; + } + | _WITH_THESAURUS_ _DEFAULT_ + { + std::cerr << "with thesaurus default" << std::endl; + } + | _WITH_THESAURUS_ _LPAR_ FTThesaurusID FTThesaurusIDList _RPAR_ + { + std::cerr << "with thesaurus ()" << std::endl; + } + | _WITH_THESAURUS_ _LPAR_ _DEFAULT_ FTThesaurusIDList _RPAR_ + { + std::cerr << "with thesaurus (default)" << std::endl; + } + | _WITHOUT_THESAURUS_ + { + std::cerr << "without thesaurus" << std::endl; + } + ; + +FTThesaurusIDList: + /* empty */ + { + } + | FTThesaurusIDList _COMMA_ FTThesaurusID + { + } + ; + +// [158] FTThesaurusID ::= "at" StringLiteral ("relationship" StringLiteral)? (FTRange "levels")? +FTThesaurusID: + _AT_KEYWORD_ StringLiteral + { + std::cerr << "at StringLiteral" << std::endl; + } + | _AT_KEYWORD_ StringLiteral _RELATIONSHIP_ StringLiteral + { + std::cerr << "at StringLiteral relationship StringLiteral" << std::endl; + } + | _AT_KEYWORD_ StringLiteral FTRange _LEVELS_ + { + std::cerr << "at StringLiteral levels" << std::endl; + } + | _AT_KEYWORD_ StringLiteral _RELATIONSHIP_ StringLiteral FTRange _LEVELS_ + { + std::cerr << "at StringLiteral relationship StringLiteral levels" << std::endl; + } + ; + +// [159] FTStopwordOption ::= ("with" "stop" "words" FTRefOrList FTInclExclStringLiteral*) +// | ("without" "stop" "words") +// | ("with" "default" "stop" "words" FTInclExclStringLiteral*) +FTStopwordOption: + _WITH_STOP_WORDS_ FTRefOrList FTInclExclStringLiteralList + { + std::cerr << "with stop words" << std::endl; + } + | _WITHOUT_STOP_WORDS_ + { + std::cerr << "without stop words" << std::endl; + } + | _WITH_DEFAULT_STOP_WORDS_ FTInclExclStringLiteralList + { + std::cerr << "with default stop words" << std::endl; + } + ; + +FTInclExclStringLiteralList: + /* empty */ + { + } + | FTInclExclStringLiteralList FTInclExclStringLiteral + { + } + ; + +// [160] FTRefOrList ::= ("at" StringLiteral) +// | ("(" StringLiteral ("," StringLiteral)* ")") +FTRefOrList: + _AT_KEYWORD_ StringLiteral + { + std::cerr << "at StringLiteral" << std::endl; + } + | _LPAR_ FTRefOrListStringList _RPAR_ + { + std::cerr << "()" << std::endl; + } + ; + +FTRefOrListStringList: + StringLiteral + { + std::cerr << "StringLiteral" << std::endl; + } + | FTRefOrListStringList _COMMA_ StringLiteral + { + std::cerr << ", StringLiteral" << std::endl; + } + ; + +// [161] FTInclExclStringLiteral ::= ("union" | "except") FTRefOrList +FTInclExclStringLiteral: + _UNION_ FTRefOrList + { + std::cerr << "union" << std::endl; + } + | _EXCEPT_ FTRefOrList + { + std::cerr << "except" << std::endl; + } + ; + +// [162] FTLanguageOption ::= "language" StringLiteral +FTLanguageOption: + _LANGUAGE_ StringLiteral + { + std::cerr << "language StringLiteral" << std::endl; + } + ; + +// [163] FTWildCardOption ::= ("with" "wildcards") | ("without" "wildcards") +FTWildCardOption: + _WITH_WILDCARDS_ + { + std::cerr << "with wildcards" << std::endl; + } + | _WITHOUT_WILDCARDS_ + { + std::cerr << "without wildcards" << std::endl; + } + ; + +// [165] FTAnyallOption ::= ("any" "word"?) | ("all" "words"?) | "phrase" +FTAnyallOption: + /* empty */ + { + $$ = FTWords::ANY; + } + | _ANY_ + { + $$ = FTWords::ANY; + } + | _ANY_WORD_ + { + $$ = FTWords::ANY_WORD; + } + | _ALL_ + { + $$ = FTWords::ALL; + } + | _ALL_WORDS_ + { + $$ = FTWords::ALL_WORDS; + } + | _PHRASE_ + { + $$ = FTWords::PHRASE; + } + ; + +// [166] FTRange ::= ("exactly" UnionExpr) +// | ("at" "least" UnionExpr) +// | ("at" "most" UnionExpr) +// | ("from" UnionExpr "to" UnionExpr) +FTRange: + _EXACTLY_ UnionExpr + { + $$.type = FTRange::EXACTLY; + $$.arg1 = $2; + $$.arg2 = 0; + } + | _AT_LEAST_ UnionExpr + { + $$.type = FTRange::AT_LEAST; + $$.arg1 = $2; + $$.arg2 = 0; + } + | _AT_MOST_ UnionExpr + { + $$.type = FTRange::AT_MOST; + $$.arg1 = $2; + $$.arg2 = 0; + } + | _FROM_ UnionExpr _TO_ UnionExpr + { + $$.type = FTRange::FROM_TO; + $$.arg1 = $2; + $$.arg2 = $4; + } + ; + +// [171] FTUnit ::= "words" | "sentences" | "paragraphs" +FTUnit: + _WORDS_ + { + $$ = FTOption::WORDS; + } + | _SENTENCES_ + { + $$ = FTOption::SENTENCES; + } + | _PARAGRAPHS_ + { + $$ = FTOption::PARAGRAPHS; + } + ; + +// [172] FTBigUnit ::= "sentence" | "paragraph" +FTBigUnit: + _SENTENCE_ + { + $$ = FTOption::SENTENCES; + } + | _PARAGRAPH_ + { + $$ = FTOption::PARAGRAPHS; + } + ; + +// [173] FTIgnoreOption ::= "without" "content" UnionExpr +FTIgnoreOption: + _WITHOUT_CONTENT_ UnionExpr + { + $$ = $2; + } + ; + +// [174] IntegerLiteral ::= Digits +IntegerLiteral: + _INTEGER_NUMBER_ + { + $$ = new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_INTEGER, + $1, AnyAtomicType::DECIMAL), + MEMMGR); + } + ; + +// [175] DecimalLiteral ::= ("." Digits) | (Digits "." [0-9]*) +DecimalLiteral: + _DECIMAL_NUMBER_ + { + $$ = new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_DECIMAL, + $1, AnyAtomicType::DECIMAL), + MEMMGR); + } + ; + +// [176] DoubleLiteral ::= (("." Digits) | (Digits ("." [0-9]*)?)) [eE] [+-]? Digits +DoubleLiteral: + _DOUBLE_NUMBER_ + { + $$ = new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_DOUBLE, + $1, AnyAtomicType::DOUBLE), + MEMMGR); + } + ; + +// [177] StringLiteral ::= ('"' (PredefinedEntityRef | CharRef | ('"' '"') | [^"&])* '"') | +// ("'" (PredefinedEntityRef | CharRef | ("'" "'") | [^'&])* "'") +StringLiteral: + _STRING_LITERAL_ + { + $$ = new (MEMMGR) XQLiteral( + new (MEMMGR) AnyAtomicTypeConstructor( + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING, + $1, AnyAtomicType::STRING), + MEMMGR); + } + ; + + +QName: + _QNAME_ + { + $$ = new (MEMMGR) QualifiedName($1,MEMMGR); + } + ; +%% + +} // namespace XQParser + + diff --git a/src/runtime/EmptyResult.cpp b/src/runtime/EmptyResult.cpp new file mode 100644 index 00000000..2251a30c --- /dev/null +++ b/src/runtime/EmptyResult.cpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: EmptyResult.cpp,v 1.9 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +EmptyResult::EmptyResult(const LocationInfo *o) + : ResultImpl(o) +{ +} + +Item::Ptr EmptyResult::next(DynamicContext *context) +{ + return 0; +} + +std::string EmptyResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/runtime/LazySequenceResult.cpp b/src/runtime/LazySequenceResult.cpp new file mode 100644 index 00000000..547a0c28 --- /dev/null +++ b/src/runtime/LazySequenceResult.cpp @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: LazySequenceResult.cpp,v 1.9 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include + +LazySequenceResult::LazySequenceResult(const LocationInfo *o, DynamicContext *context) + : ResultImpl(o), + toInit_(true), + seq_(context->getMemoryManager()) +{ +} + +Item::Ptr LazySequenceResult::next(DynamicContext *context) +{ + if(toInit_) { + toInit_ = false; + getResult(seq_, context); + it_ = seq_.begin(); + } + + if(it_ == seq_.end()) { + return 0; + } + else { + return *(it_++); + } +} + +Sequence LazySequenceResult::toSequence(DynamicContext *context) +{ + if(toInit_) { + toInit_ = false; + getResult(seq_, context); + it_ = seq_.begin(); + } + + return seq_; +} diff --git a/src/runtime/Result.cpp b/src/runtime/Result.cpp new file mode 100644 index 00000000..e4c75201 --- /dev/null +++ b/src/runtime/Result.cpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Result.cpp,v 1.11 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include + +EmptyResult Result::_empty(0); + +Result::Result(const Sequence &seq) + : _impl(new SequenceResult(0, seq)) +{ + _impl->incrementRefCount(); +} + +Result::Result(ResultImpl *impl) + : _impl(impl) +{ + if(_impl) _impl->incrementRefCount(); +} + +Result::Result(const Result &o) + : _impl(o._impl) +{ + if(_impl) _impl->incrementRefCount(); +} + +Result::~Result() +{ + if(_impl) _impl->decrementRefCount(); +} + +EmptyResult* Result::getEmpty() const +{ + return &_empty; +} + diff --git a/src/runtime/ResultBuffer.cpp b/src/runtime/ResultBuffer.cpp new file mode 100644 index 00000000..1acd86ba --- /dev/null +++ b/src/runtime/ResultBuffer.cpp @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ResultBuffer.cpp,v 1.9 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include + +ResultBuffer::ResultBuffer(const Result &result, unsigned int readCount) + : _impl(new ResultBufferImpl(result, readCount)) +{ +} + +ResultBuffer::ResultBuffer(const Item::Ptr &item, unsigned int readCount) + : _impl(new ResultBufferImpl(item, readCount)) +{ +} + +ResultBuffer::ResultBuffer(ResultBufferImpl *impl) + : _impl(impl) +{ +} + +Result ResultBuffer::createResult() +{ + if(_impl.isNull()) return 0; + + Result result = _impl->createResult(); + + if(_impl->getMaxReadCount() != ResultBufferImpl::UNLIMITED_COUNT && + _impl->incrementReadCount() >= _impl->getMaxReadCount()) { + // We've reached the maximum read count, so noone + // else will want to read from this ResultBuffer + _impl = 0; + } + + return result; +} diff --git a/src/runtime/ResultBufferImpl.cpp b/src/runtime/ResultBufferImpl.cpp new file mode 100644 index 00000000..fbfc8176 --- /dev/null +++ b/src/runtime/ResultBufferImpl.cpp @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ResultBufferImpl.cpp,v 1.11 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +const unsigned int ResultBufferImpl::UNLIMITED_COUNT = (unsigned int)-1; + +ResultBufferImpl::ResultBufferImpl(const Result &result, unsigned int readCount) + : _refCount(0), + _result(result), + _readCount(0), + _maxReadCount(readCount) +{ + // Do nothing +} + +ResultBufferImpl::ResultBufferImpl(const Item::Ptr &item, unsigned int readCount) + : _refCount(0), + _result(0), + _readCount(0), + _maxReadCount(readCount) +{ + _items.push_back(item); +} + +ResultBufferImpl::~ResultBufferImpl() +{ + // Do nothing +} + +Result ResultBufferImpl::createResult() +{ + return new BufferedResult(this); +} + +Item::Ptr ResultBufferImpl::item(unsigned int index, DynamicContext *context) +{ + while(!_result.isNull() && index >= _items.size()) { + const Item::Ptr item = _result->next(context); + if(item.isNull()) { + _result = 0; + } + else { + _items.push_back(item); + } + } + + if(index >= _items.size()) { + return 0; + } + else { + return _items[index]; + } +} + +BufferedResult::BufferedResult(ResultBufferImpl *impl) + : ResultImpl(0), + _impl(impl), + _pos(0) +{ +} + +Item::Ptr BufferedResult::next(DynamicContext *context) +{ + return _impl->item(_pos++, context); +} + +std::string BufferedResult::asString(DynamicContext *context, int indent) const +{ + return "bufferedresult"; +} diff --git a/src/runtime/ResultImpl.cpp b/src/runtime/ResultImpl.cpp new file mode 100644 index 00000000..7af69138 --- /dev/null +++ b/src/runtime/ResultImpl.cpp @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: ResultImpl.cpp,v 1.11 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#include +#include +#include +#include +#include +#include + +static inline bool getEffectiveBooleanValueInternal(const Item::Ptr &first, const Item::Ptr &second, DynamicContext* context, const LocationInfo *info) +{ + // If its operand is a singleton value ... + if(second == NULLRCP && first->isAtomicValue()) { + const AnyAtomicType::Ptr atom=first; + // ... of type xs:boolean or derived from xs:boolean, fn:boolean returns the value of its operand unchanged. + if(atom->getPrimitiveTypeIndex() == AnyAtomicType::BOOLEAN) + return ((const ATBooleanOrDerived::Ptr)atom)->isTrue(); + + // ... of type xs:string, xdt:untypedAtomic, or a type derived from one of these, fn:boolean returns false + // if the operand value has zero length; otherwise it returns true. + if((atom->getPrimitiveTypeIndex() == AnyAtomicType::STRING || + atom->getPrimitiveTypeIndex() == AnyAtomicType::ANY_URI || + atom->getPrimitiveTypeIndex() == AnyAtomicType::UNTYPED_ATOMIC)) + return !XPath2Utils::equals(atom->asString(context), XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString); + + // ... of any numeric type or derived from a numeric type, fn:boolean returns false if the operand value is + // NaN or is numerically equal to zero; otherwise it returns true. + if(atom->isNumericValue()) { + const Numeric::Ptr number=atom; + return (!number->isZero() && !number->isNaN()); + } + } + + // In all other cases, fn:boolean raises a type error. + XQThrow3(XPath2TypeMatchException,X("ResultImpl::getEffectiveBooleanValue"), X("Effective Boolean Value cannot be extracted from this type [err:FORG0006]"), info); + return true; +} + +bool ResultImpl::getEffectiveBooleanValue(DynamicContext* context, const LocationInfo *info) +{ + const Item::Ptr first = next(context); + if(first == NULLRCP) return false; + if(first->isNode()) return true; + return getEffectiveBooleanValueInternal(first, next(context), context, info); +} + +bool ResultImpl::getEffectiveBooleanValue(const Item::Ptr &first, const Item::Ptr &second, DynamicContext* context, const LocationInfo *info) +{ + // From $ 15.1.4 of the F&O specs: + // The effective boolean value of an operand is defined as follows: + // + // If its operand is an empty sequence, fn:boolean returns false. + if(first == NULLRCP) { + return false; + } + + // If its operand is a sequence whose first item is a node, fn:boolean returns true. + if(first->isNode()) + return true; + + return getEffectiveBooleanValueInternal(first, second, context, info); +} + +Sequence ResultImpl::toSequence(DynamicContext *context) +{ + Sequence result(context->getMemoryManager()); + + Item::Ptr item = 0; + while((item = next(context)) != NULLRCP) { + result.addItem(item); + } + + return result; +} + +std::string ResultImpl::getIndent(int indent) +{ + std::ostringstream oss; + + for(int i = 0; i < indent; ++i) { + oss << " "; + } + + return oss.str(); +} diff --git a/src/runtime/Sequence.cpp b/src/runtime/Sequence.cpp new file mode 100644 index 00000000..e698830f --- /dev/null +++ b/src/runtime/Sequence.cpp @@ -0,0 +1,216 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: Sequence.cpp,v 1.12 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include "../exceptions/MiscException.hpp" +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +Sequence::Sequence(MemoryManager* memMgr) + : _itemList(XQillaAllocator(memMgr)) +{ +} + +Sequence::~Sequence() +{ + //no-op +} + +Sequence::Sequence(const Item::Ptr &item, MemoryManager* memMgr) + : _itemList(XQillaAllocator(memMgr)) +{ + if(item.notNull()) { + addItem(item); + } +} + +Sequence::Sequence(const Sequence &s) + : _itemList(s._itemList) +{ +} + +Sequence::Sequence(const Sequence &s, MemoryManager* memMgr) + : _itemList(XQillaAllocator(memMgr)) +{ + joinSequence(s); +} + +Sequence::Sequence(unsigned int n, MemoryManager* memMgr) + : _itemList(XQillaAllocator(memMgr)) +{ + _itemList.reserve(n); +} + +Sequence & Sequence::operator=(const Sequence & s) { + if( this != &s ) { // no self-assignment + _itemList = s._itemList; + } + return *this; +} + +void Sequence::addItemFront(const Item::Ptr &item) +{ + //This is a hack since the redhat 6.2 deque warns with push_front + _itemList.insert(_itemList.begin(), item); +} + +// returns the first item in the Sequence, or null if it is empty +const Item::Ptr &Sequence::first() const +{ + assert(!isEmpty()); // should not be asking for elements if the list is empty + return _itemList[0]; +} + +// returns the second item in the Sequence, or null if it is empty +const Item::Ptr &Sequence::second() const +{ + assert(!isEmpty()); // should not be asking for elements if the list is empty + return _itemList[1]; +} + +// might return NULL +const Item::Ptr &Sequence::item(unsigned int index) const +{ + return _itemList[index]; +} + +const Item::Ptr &Sequence::item(const ATDecimalOrDerived::Ptr &index) const +{ + if(index->isNegative()) { + XQThrow2(MiscException,X("Sequence:item"),X("Index less than zero")); + } + return item(NumUtils::MAPMtoInt(((const ATDecimalOrDerived*)index)->asMAPM())); +} + +void Sequence::clear(void) { + _itemList.clear(); +} + +Sequence::iterator Sequence::begin(void) +{ + return _itemList.begin(); +} + +Sequence::iterator Sequence::end(void) +{ + return _itemList.end(); +} + +Sequence::const_iterator Sequence::begin(void) const +{ + return _itemList.begin(); +} + +Sequence::const_iterator Sequence::end(void) const +{ + return _itemList.end(); +} + +Sequence::reverse_iterator Sequence::rbegin(void) +{ + return _itemList.rbegin(); +} + +Sequence::reverse_iterator Sequence::rend(void) +{ + return _itemList.rend(); +} + +Sequence::const_reverse_iterator Sequence::rbegin(void) const +{ + return _itemList.rbegin(); +} + +Sequence::const_reverse_iterator Sequence::rend(void) const +{ + return _itemList.rend(); +} + +unsigned int Sequence::getLength(void) const +{ + return _itemList.size(); +} + +void Sequence::addItem(const Item::Ptr &item) { + _itemList.push_back(item); +} + +void Sequence::joinSequence(const Sequence & s) { + _itemList.insert(_itemList.end(),s._itemList.begin(),s._itemList.end()); +} + +bool Sequence::isEmpty() const { + return _itemList.empty(); +} + +class lessThanCompareFn { +public: + lessThanCompareFn(const DynamicContext *context) + : context_(context) {} + + bool operator()(const Item::Ptr &first, const Item::Ptr &second) + { + return ((const Node*)first.get())->lessThan((const Node::Ptr)second, context_); + } + +private: + const DynamicContext *context_; +}; + +bool equalCompareFn(const Item::Ptr &first, const Item::Ptr &second) +{ + return ((const Node*)first.get())->equals((const Node*)second.get()); +} + +void Sequence::sortIntoDocumentOrder(const DynamicContext *context) +{ + // REVISIT: we should ensure that the sequence is made only of nodes, but for performance reason + // we just check the first item. + // Note that it is OK that we are asked to sort a sequence made of atomic values, as a path expression + // can now return it, so we should not complain + if(isEmpty() || !first()->isNode()) + return; + // Sort + std::sort(_itemList.begin(), _itemList.end(), lessThanCompareFn(context)); + + // Remove the duplicates + _itemList.erase(std::unique(_itemList.begin(), _itemList.end(), equalCompareFn), _itemList.end()); +} + +struct CollationCompare { + CollationCompare(const Collation *collation, const DynamicContext *context) + : _collation(collation), _context(context) {} + + bool operator()(const Item::Ptr arg1, const Item::Ptr arg2) const { + const XMLCh* s1 = arg1->asString(_context); + const XMLCh* s2 = arg2->asString(_context); + return (_collation->compare(s1,s2) == -1); + } + + const Collation *_collation; + const DynamicContext *_context; +}; + +void Sequence::sortWithCollation(const Collation *collation, const DynamicContext *context) +{ + std::sort(_itemList.begin(), _itemList.end(), CollationCompare(collation, context)); +} diff --git a/src/runtime/SequenceResult.cpp b/src/runtime/SequenceResult.cpp new file mode 100644 index 00000000..b9fe81ef --- /dev/null +++ b/src/runtime/SequenceResult.cpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: SequenceResult.cpp,v 1.9 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +SequenceResult::SequenceResult(const LocationInfo *o, const Sequence &seq) + : ResultImpl(o), + seq_(seq) +{ + it_ = seq_.begin(); +} + +Item::Ptr SequenceResult::next(DynamicContext *context) +{ + if(it_ == seq_.end()) { + return 0; + } + else { + return *(it_++); + } +} + +Sequence SequenceResult::toSequence(DynamicContext *context) +{ + return seq_; +} + +std::string SequenceResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/runtime/SingleResult.cpp b/src/runtime/SingleResult.cpp new file mode 100644 index 00000000..76c1d8b6 --- /dev/null +++ b/src/runtime/SingleResult.cpp @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: SingleResult.cpp,v 1.9 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +SingleResult::SingleResult(const LocationInfo *o) + : ResultImpl(o), + toDo_(true) +{ +} + +Item::Ptr SingleResult::next(DynamicContext *context) +{ + if(toDo_) { + toDo_ = false; + return getSingleResult(context); + } + else { + return 0; + } +} diff --git a/src/samples/basic/basicXQillaUsage.cpp b/src/samples/basic/basicXQillaUsage.cpp new file mode 100644 index 00000000..c235055a --- /dev/null +++ b/src/samples/basic/basicXQillaUsage.cpp @@ -0,0 +1,161 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: basicXQillaUsage.cpp,v 1.9 2006/11/01 16:37:22 jpcs Exp $ + */ + +//System includes + + +#include + +//Xerces includes + +#include +#include + +//XQilla includes + +#include + +// IO include +#include + +XERCES_CPP_NAMESPACE_USE; +using namespace std; + +int main(int argc, char *argv[]) +{ + if(argc != 2) { + cerr << "Data file not specified." << endl; + return 1; + } + + /////////////////////// + // Initialise XQilla // + /////////////////////// + + // 1. Initialize XQilla + // + // Note that this initialisation takes care of initialising + // xerces-c as well + try { + + XQillaPlatformUtils::initialize(); + + } catch (const XMLException& eXerces) { + cerr << "Error during Xerces-C initialisation.\n" + << "Xerces exception message: " + << UTF8(eXerces.getMessage()) << endl; + return 1; + } + + try { + + // 2. Obtain a DOM3 XPath2 implementation. This is a XQilla-specific + // implementation that overrides the standard DOMDocument, the standard + // DOMWriter and the standard DOMBuilder + DOMImplementation* xqillaImplementation = + DOMImplementationRegistry::getDOMImplementation(X("XPath2 3.0")); + + // 3. Obtain a parser and set 'do namespaces', 'use schema' and 'validate' to + // true. + DOMBuilder* xmlParser = xqillaImplementation->createDOMBuilder(DOMImplementationLS::MODE_SYNCHRONOUS, 0); + xmlParser->setFeature(X("namespaces"), true); + xmlParser->setFeature(X("http://apache.org/xml/features/validation/schema"), true); + xmlParser->setFeature(X("validation"), true); + + //////////////////////////// + // Parse our XML document // + //////////////////////////// + + DOMDocument* document = xmlParser->parseURI(argv[1]); + if(document == 0) { + cerr << "Document not found: " << argv[1] << endl; + return 1; + } + + //////////////////////////////// + // Create a parsed expression // + // (compiled) and evaluate it // + //////////////////////////////// + + + // 1. Create a Namespace Resolver. This holds a map of namespace prefixes + // to namespace URIs. + + const DOMXPathNSResolver* resolver = document->createNSResolver(document->getDocumentElement()); + + // For a more advanced interface (like to have the ability to add + // namespace bindings, this NSResolver can be cast to a XQillaNSResolver + XQillaNSResolver* xqillaResolver = (XQillaNSResolver*)resolver; + xqillaResolver->addNamespaceBinding(X("my"), X("http://example.com/myURI")); + + // **************** Example 1: max() function ****************** // + + // 2. Create a parsed expression + char* expression = "max(/Catalogue/Book/Price)"; + const DOMXPathExpression* parsedExpression = document->createExpression(X(expression), resolver); + + // 3. Evaluate the expression. We choose to have a first result, since we + // know the answer will have only one item. Could also choose + // XPath2Result::SNAPSHOT_RESULT and XPath2Result::ITERATOR_RESULT + XPath2Result* firstResult = (XPath2Result*)parsedExpression->evaluate(document->getDocumentElement(), XPath2Result::FIRST_RESULT, 0); + + // 4. Work with the result: output it to the screen in this case + cout << "The answer for expression '" << expression << "' is: " << firstResult->asDouble() << endl; + + // **************** Example 2: output of nodes ****************** // + + // 2. Create a parsed expression + char* expression2 = "//Magazine"; + parsedExpression = document->createExpression(X(expression2), resolver); + + // 3. Evaluate the expression. We choose to have an iterator result + XPath2Result* iteratorResult = (XPath2Result*)parsedExpression->evaluate(document->getDocumentElement(), XPath2Result::ITERATOR_RESULT, 0); + + // 4. Work with the result: output it to the screen in this case + + // create a DOMWriter (serializer) to output the nodes + DOMWriter* serializer = xqillaImplementation->createDOMWriter(); + StdOutFormatTarget* target = new StdOutFormatTarget(); + + cout << "The answer for expression '" << expression2 << "' is: " <iterateNext()) { + if(iteratorResult->isNode()) { + cout << "Node " << i++ << ": "<< flush; + serializer->writeNode(target, *(iteratorResult->asNode())); + cout << endl; + } else { + cerr << "Expected a node but received an atomic value!"<< endl; + } + } + + serializer->release(); + } + catch(DOMException &e) { + cerr << "DOMException: " << UTF8(e.getMessage()) << endl; + return 1; + } + catch(DOMXPathException &e) { + cerr << "DOMException: " << UTF8(e.msg) << endl; + return 1; + } + + /////////////// + // Terminate // + /////////////// + + XQillaPlatformUtils::terminate(); + + return 0; +} diff --git a/src/samples/xqilla/xqilla-commandline.cpp b/src/samples/xqilla/xqilla-commandline.cpp new file mode 100644 index 00000000..5f9cf90e --- /dev/null +++ b/src/samples/xqilla/xqilla-commandline.cpp @@ -0,0 +1,318 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: xqilla-commandline.cpp,v 1.9 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include +#include + +#include +#include + +//XQilla includes +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +#define QUERY_BUFFER_SIZE 32 * 1024 +#define BASEURI_BUFFER_SIZE 2 * 1024 + +//////////////////////////// +// function declarations // +//////////////////////////// + +/** Print usage */ +void usage(const char *progname); + +class QueryStore +{ +public: + typedef std::vector::iterator iterator; + typedef std::vector::const_iterator const_iterator; + + QueryStore() {} + ~QueryStore() { + for(iterator i = begin(); i != end(); ++i) + delete *i; + } + + void push_back(XQQuery *query) { + queries_.push_back(query); + } + const XQQuery *back() const { + return queries_.back(); + } + + iterator begin() { + return queries_.begin(); + } + iterator end() { + return queries_.end(); + } + const_iterator begin() const { + return queries_.begin(); + } + const_iterator end() const { + return queries_.end(); + } + +private: + QueryStore(const QueryStore &); + QueryStore &operator=(const QueryStore &); + + std::vector queries_; +}; + +int main(int argc, char *argv[]) +{ + // First we parse the command line arguments + std::vector queries; + + const char* inputFile=NULL, *outputFile=NULL, *host=NULL, *baseURIDir=NULL; + bool bRemoteDebug=false; + bool quiet = false; + XQilla::Language language = XQilla::XQUERY; + bool xpathCompatible = false; + int numberOfTimes = 1; + bool printAST = false; + + for(int i = 1; i < argc; ++i) { + if(*argv[i] == '-' && argv[i][2] == '\0' ){ + + // -h option, print usage + if(argv[i][1] == 'h') { + usage(argv[0]); + return 0; + } + else if(argv[i][1] == 'i') { + i++; + if(i==argc) + { + std::cerr << "Missing argument to option 'i'" << std::endl; + return 1; + } + inputFile=argv[i]; + } + else if(argv[i][1] == 'b') { + i++; + if(i==argc) + { + std::cerr << "Missing argument to option 'b'" << std::endl; + return 1; + } + baseURIDir=argv[i]; + } + else if(argv[i][1] == 'o') { + i++; + if(i==argc) + { + std::cerr << "Missing argument to option 'o'" << std::endl; + return 1; + } + outputFile=argv[i]; + } + else if(argv[i][1] == 'd') { + bRemoteDebug=true; + i++; + if(i==argc) + { + std::cerr << "Missing argument to option 'd'" << std::endl; + return 1; + } + host=argv[i]; + } + else if(argv[i][1] == 'n') { + i++; + if(i==argc) + { + std::cerr << "Missing argument to option 'n'" << std::endl; + return 1; + } + numberOfTimes=atoi(argv[i]); + } + else if(argv[i][1] == 'q') { + quiet = true; + } + else if(argv[i][1] == 'f') { + if(language == XQilla::XQUERY) + language = XQilla::XQUERY_FULLTEXT; + else if(language == XQilla::XPATH2) + language = XQilla::XPATH2_FULLTEXT; + } + else if(argv[i][1] == 'p') { + if(language == XQilla::XQUERY) + language = XQilla::XPATH2; + else if(language == XQilla::XQUERY_FULLTEXT) + language = XQilla::XPATH2_FULLTEXT; + } + else if(argv[i][1] == 'P') { + // You can't use xpath 1 compatibility in + // XQuery mode. + language = XQilla::XPATH2; + xpathCompatible = true; + } + else if(argv[i][1] == 't') { + printAST = true; + } + else { + usage(argv[0]); + return 1; + } + } + else { + queries.push_back(argv[i]); + } + } + + // Check for bad command line arguments + if(queries.empty()) { + usage(argv[0]); + return 1; + } + + // Create the XQilla object + XQilla xqilla; + + int executionCount = 0; + try { + QueryStore parsedQueries; + for(std::vector::iterator it1 = queries.begin(); + it1 != queries.end(); ++it1) { + Janitor contextGuard(xqilla.createContext()); + DynamicContext *context = contextGuard.get(); + + // the DynamicContext has set the baseURI to the current file + // we override to a user-specified value, or to the same directory as the + // query (current file) + if(baseURIDir != NULL) { + context->setBaseURI(X(baseURIDir)); + } + else { + // FIXME assumes UTF8, Windows portability issues? + char *pwd = ::getenv("PWD"); + if(pwd != NULL) { + std::string queryPath(*it1); + size_t idx = queryPath.rfind('/'); + if(idx != std::string::npos) { + std::string baseURI = std::string("file:"); + baseURI += std::string(pwd); + baseURI += std::string(1, '/'); + baseURI += queryPath.substr(0, idx); + baseURI += std::string(1, '/'); + context->setBaseURI(X(baseURI.c_str())); + } + } + } + + context->setXPath1CompatibilityMode(xpathCompatible); + + if(bRemoteDebug) { + context->setDebugCallback(new (context->getMemoryManager()) XQRemoteDebugger(X(host), context->getMemoryManager())); + context->enableDebugging(true); + } + + parsedQueries.push_back(xqilla.parseFromURI(X(*it1), language, contextGuard.release())); + + if(printAST) { + std::cerr << PrintAST::print(parsedQueries.back(), context) << std::endl; + } + } + + for(int count = numberOfTimes; count > 0; --count) { + + for(QueryStore::const_iterator it2 = parsedQueries.begin(); + it2 != parsedQueries.end(); ++it2) { + + Janitor dynamic_context((*it2)->createDynamicContext()); + if(inputFile != NULL) { + // if an XML file was specified + Sequence seq=dynamic_context->resolveDocument(X(inputFile), 0); + if(!seq.isEmpty() && seq.first()->isNode()) { + dynamic_context->setContextItem(seq.first()); + dynamic_context->setContextPosition(1); + dynamic_context->setContextSize(1); + } + } + time_t now; + dynamic_context->setCurrentTime(time(&now)); + + Result result = (*it2)->execute(dynamic_context.get())->toSequence(dynamic_context.get()); + ++executionCount; + + if(outputFile != NULL || !quiet) { + // use STDOUT if a file was not specified + Janitor target(0); + if(outputFile != NULL) { + target.reset(new LocalFileFormatTarget(outputFile)); + } else { + target.reset(new StdOutFormatTarget()); + } + + // assume UTF8 + XMLFormatter formatter(XMLUni::fgUTF8EncodingString, target.get()); + formatter << XMLFormatter::NoEscapes << XMLFormatter::UnRep_CharRef; + + Item::Ptr item; + while((item = result->next(dynamic_context.get())) != NULLRCP) { + formatter << item->asString(dynamic_context.get()) << (XMLCh)'\n'; + } + } + + } + } + } + catch(XQException &e) { + std::cerr << "Caught XQException:" << std::endl << UTF8(e.getError()) << std::endl; + std::cerr << "at " << UTF8(e.getXQueryFile()) << ":" << e.getXQueryLine() << ":" << e.getXQueryColumn() << std::endl; +// std::cerr << "at " << e.getCppFile() << ":" << e.getCppLine() << std::endl; + return 1; + } + catch(...) { + std::cerr << "Caught unknown exception" << std::endl; + return 1; + } + + if(quiet) std::cout << "Executions: " << executionCount << std::endl; + + // clean up and exit + return 0; +} + +// print the usage message +void usage(const char *progname) +{ + const char *name = progname; + while(*progname != 0) { + if(*progname == '/' || *progname == '\\') { + ++progname; + name = progname; + } else { + ++progname; + } + } + + std::cerr << "Usage: " << name << " [options] ..." << std::endl << std::endl; + std::cerr << "-b : Set the base URI for the context" << std::endl; + std::cerr << "-d : Enable remote debugging" << std::endl; + std::cerr << "-f : Parse in XQuery Full-Text mode (default is XQuery mode)" << std::endl; + std::cerr << "-h : Show this display" << std::endl; + std::cerr << "-i : Load XML document and bind it as the context item" << std::endl; + std::cerr << "-n : Run the queries a number of times" << std::endl; + std::cerr << "-o : Write the result to the specified file" << std::endl; + std::cerr << "-p : Parse in XPath 2 mode (default is XQuery mode)" << std::endl; + std::cerr << "-P : Parse in XPath 1.0 compatibility mode (default is XQuery mode)" << std::endl; + std::cerr << "-q : Quiet mode - no output" << std::endl; + std::cerr << "-t : Output an XML representation of the AST" << std::endl; +} diff --git a/src/schema/AnyAtomicTypeDatatypeValidator.cpp b/src/schema/AnyAtomicTypeDatatypeValidator.cpp new file mode 100644 index 00000000..d929a7f1 --- /dev/null +++ b/src/schema/AnyAtomicTypeDatatypeValidator.cpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: AnyAtomicTypeDatatypeValidator.cpp,v 1.7 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include + + +AnyAtomicTypeDatatypeValidator::AnyAtomicTypeDatatypeValidator(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const manager) : XERCES_CPP_NAMESPACE_QUALIFIER AnySimpleTypeDatatypeValidator(manager) { +} + +AnyAtomicTypeDatatypeValidator::~AnyAtomicTypeDatatypeValidator () { +} + +XERCES_CPP_NAMESPACE_QUALIFIER DatatypeValidator* AnyAtomicTypeDatatypeValidator::newInstance +( + XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf* const facets + , XERCES_CPP_NAMESPACE_QUALIFIER RefArrayVectorOf* const enums + , const int finalSet + , XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const manager +) +{ + return new (manager) AnyAtomicTypeDatatypeValidator(manager); +} diff --git a/src/schema/DocumentCacheImpl.cpp b/src/schema/DocumentCacheImpl.cpp new file mode 100644 index 00000000..cc2df8e8 --- /dev/null +++ b/src/schema/DocumentCacheImpl.cpp @@ -0,0 +1,746 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DocumentCacheImpl.cpp,v 1.26.2.1 2006/12/08 15:19:12 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#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 + +class HackGrammarResolver : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory +{ +public: + bool fCacheGrammar; + bool fUseCachedGrammar; + bool fGrammarPoolFromExternalApplication; + XERCES_CPP_NAMESPACE_QUALIFIER XMLStringPool* fStringPool; + XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf* fGrammarBucket; + XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf* fGrammarFromPool; + XERCES_CPP_NAMESPACE_QUALIFIER DatatypeValidatorFactory* fDataTypeReg; + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* fMemoryManager; + XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool* fGrammarPool; + XERCES_CPP_NAMESPACE_QUALIFIER XSModel* fXSModel; + XERCES_CPP_NAMESPACE_QUALIFIER XSModel* fGrammarPoolXSModel; + XERCES_CPP_NAMESPACE_QUALIFIER ValueVectorOf* fGrammarsToAddToXSModel; +}; + +XQillaGrammarResolver::XQillaGrammarResolver( + XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool* const gramPool, + XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const manager /*= XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager*/) +: GrammarResolver(gramPool, manager) +{ + // trigger the creation of the fDataTypeReg data member + getDatatypeValidator(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA, XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_STRING); + + XERCES_CPP_NAMESPACE_QUALIFIER DatatypeValidatorFactory* dvdt=((HackGrammarResolver*)this)->fDataTypeReg; + // xdt:yearMonthDuration + XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf* facets = + new (manager) XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf(1,manager); + facets->put((void*) XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgELT_PATTERN, + new (manager) XERCES_CPP_NAMESPACE_QUALIFIER KVStringPair(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgELT_PATTERN, ATDurationOrDerived::pattern_DT_YEARMONTHDURATION,manager)); + + dvdt->createDatatypeValidator(ATDurationOrDerived::fgDT_YEARMONTHDURATION, + dvdt->getDatatypeValidator(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_DURATION), + facets, 0, false, 0, true, manager); + + // xdt:dayTimeDuration + facets = new (manager) XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf(1,manager); + facets->put((void*) XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgELT_PATTERN, + new (manager) XERCES_CPP_NAMESPACE_QUALIFIER KVStringPair(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgELT_PATTERN, ATDurationOrDerived::pattern_DT_DAYTIMEDURATION,manager)); + + dvdt->createDatatypeValidator(ATDurationOrDerived::fgDT_DAYTIMEDURATION, + dvdt->getDatatypeValidator(XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_DURATION), + facets, 0, false, 0, true, manager); + + // xdt:untypedAtomic -- no facets + dvdt->createDatatypeValidator(ATUntypedAtomic::fgDT_UNTYPEDATOMIC, + dvdt->getDatatypeValidator(AnyAtomicType::fgDT_ANYATOMICTYPE_XERCESHASH), + 0, 0, false, 0, true, manager); +} + +///////////////////////////////////////////////////////////////// +// +// + +void DocumentCacheErrorCatcher::warning(const XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& toCatch) +{ + // ignore them +} + +void DocumentCacheErrorCatcher::error(const XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& toCatch) +{ + throw toCatch; +} + +void DocumentCacheErrorCatcher::fatalError(const XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& toCatch) +{ + throw toCatch; +} + +void DocumentCacheErrorCatcher::resetErrors() +{ +} + +///////////////////////////////////////////////////////////////// +// +// + +/* untyped */ +const XMLCh DocumentCacheParser::g_szUntyped[]= { + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_u, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_n, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_t, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_y, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_p, XERCES_CPP_NAMESPACE_QUALIFIER chLatin_e, + XERCES_CPP_NAMESPACE_QUALIFIER chLatin_d, XERCES_CPP_NAMESPACE_QUALIFIER chNull +}; + +DocumentCacheParser::DocumentCacheParser(const DocumentCacheParser &parent, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr) + : XercesDOMParser(0, memMgr, parent.getGrammarResolver()->getGrammarPool()), + _context(0) +{ + init(); +} + +DocumentCacheParser::DocumentCacheParser(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr, XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool* xmlgr) : + XercesDOMParser(0,memMgr, xmlgr), + _context(0) +{ + init(); +} + +DocumentCacheParser::~DocumentCacheParser() +{ +} + +void DocumentCacheParser::init() +{ + delete fGrammarResolver; delete fScanner; + // re-init using this grammar resolver + fGrammarResolver = new (fMemoryManager) XQillaGrammarResolver(fGrammarPool, fMemoryManager); + fURIStringPool = fGrammarResolver->getStringPool(); + + // Create a scanner and tell it what validator to use. Then set us + // as the document event handler so we can fill the DOM document. + fScanner = XERCES_CPP_NAMESPACE_QUALIFIER XMLScannerResolver::getDefaultScanner(fValidator, fGrammarResolver, fMemoryManager); + fScanner->setDocHandler(this); + fScanner->setDocTypeHandler(this); + fScanner->setURIStringPool(fURIStringPool); + + // hold the loaded schemas in the cache, so that can be reused + fGrammarResolver->cacheGrammarFromParse(true); + fGrammarResolver->useCachedGrammarInParse(true); + cacheGrammarFromParse(true); + + // set up the parser + setDoSchema(true);// enable schema processing + setDoNamespaces(true);// enable namespaces (needed for schema processing) + setValidationScheme(XERCES_CPP_NAMESPACE_QUALIFIER AbstractDOMParser::Val_Auto);// try to validate + setCreateEntityReferenceNodes(false);// don't create entity reference nodes, but represent its value in the DOM tree + setValidationConstraintFatal(false);// if a schema validation error is encountered, don't abort parsing + setErrorHandler(&_errorHandler); + setCreateSchemaInfo(true); +} + +void DocumentCacheParser::startDocument() +{ + // Mostly copied from AbstractDOMParser::startDocument() + + if(_context) { + fDocument = (XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl *) + _context->createNewDocument(); // This uses the context's memory manager + } + else { + fDocument = (XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl *) + XERCES_CPP_NAMESPACE_QUALIFIER DOMImplementation::getImplementation()->createDocument(fMemoryManager); + } + + // Just set the document as the current parent and current node + fCurrentParent = fDocument; + fCurrentNode = fDocument; + // set DOM error checking off + fDocument->setErrorChecking(false); + fDocument->setDocumentURI(fScanner->getLocator()->getSystemId()); + fDocument->setActualEncoding(fScanner->getReaderMgr()->getCurrentEncodingStr()); +} + +XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *DocumentCacheParser::parseWithContext(const XERCES_CPP_NAMESPACE_QUALIFIER InputSource &source, DynamicContext *context) +{ + _context = context; + try { + parse(source); + } + catch(...) { + _context = 0; + throw; + } + _context = 0; + return adoptDocument(); +} + +XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *DocumentCacheParser::parseWithContext(const XMLCh* const uri, DynamicContext *context) +{ + XERCES_CPP_NAMESPACE_QUALIFIER InputSource* srcToUse = 0; + if(getXMLEntityResolver()){ + XERCES_CPP_NAMESPACE_QUALIFIER XMLResourceIdentifier + resourceIdentifier(XERCES_CPP_NAMESPACE_QUALIFIER XMLResourceIdentifier::UnKnown, uri, 0, + XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, context->getBaseURI()); + srcToUse = getXMLEntityResolver()->resolveEntity(&resourceIdentifier); + } + XERCES_CPP_NAMESPACE_QUALIFIER Janitor janIS(srcToUse); + + _context = context; + try { + if(srcToUse) + parse(*srcToUse); + else { + // Resolve the uri against the base uri + const XMLCh *systemId = uri; + XERCES_CPP_NAMESPACE_QUALIFIER XMLURL urlTmp(context->getMemoryManager()); + if(urlTmp.setURL(context->getBaseURI(), uri, urlTmp)) { + systemId = context->getMemoryManager()->getPooledString(urlTmp.getURLText()); + } + + parse(systemId); + } + } + catch(...) { + _context = 0; + throw; + } + _context = 0; + return adoptDocument(); +} + +void DocumentCacheParser::loadSchema(const XMLCh* const uri, const XMLCh* const location, StaticContext *context) +{ + // if we are requested to load the XMLSchema schema, just return + if(XPath2Utils::equals(uri, XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) + return; + XERCES_CPP_NAMESPACE_QUALIFIER InputSource* srcToUse = 0; + if (getXMLEntityResolver()){ + XERCES_CPP_NAMESPACE_QUALIFIER XMLResourceIdentifier resourceIdentifier(XERCES_CPP_NAMESPACE_QUALIFIER XMLResourceIdentifier::SchemaGrammar, + location, + uri, + XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, + context->getBaseURI()); + srcToUse = getXMLEntityResolver()->resolveEntity(&resourceIdentifier); + } + XERCES_CPP_NAMESPACE_QUALIFIER Janitor janIS(srcToUse); + + // always validate, so that the preloaded schema can be matched even if the XML doesn't reference it + setValidationScheme(XERCES_CPP_NAMESPACE_QUALIFIER AbstractDOMParser::Val_Always); + + XERCES_CPP_NAMESPACE_QUALIFIER Grammar* grammar=NULL; + if(srcToUse) { + grammar=getScanner()->loadGrammar(*srcToUse, XERCES_CPP_NAMESPACE_QUALIFIER Grammar::SchemaGrammarType, true); + } + else if(location) { + // Resolve the location against the base uri + const XMLCh *systemId = location; + XERCES_CPP_NAMESPACE_QUALIFIER XMLURL urlTmp(context->getMemoryManager()); + if(urlTmp.setURL(context->getBaseURI(), location, urlTmp)) { + systemId = urlTmp.getURLText(); + } + + grammar=getScanner()->loadGrammar(systemId, XERCES_CPP_NAMESPACE_QUALIFIER Grammar::SchemaGrammarType, true); + } + if(grammar==NULL) + XQThrow2(StaticErrorException,X("DocumentCacheParser::loadSchema"), X("Schema not found [err:XQST0059]")); +} + +unsigned int DocumentCacheParser::getSchemaUriId(const XMLCh* uri) const +{ + // This is a kind of hack... I should directly use fURIStringPool, but it's private. + // So I ask the scanner to give me back the string pool I gave him before.... + return getScanner()->getURIStringPool()->getId(uri); +} + +const XMLCh* DocumentCacheParser::getSchemaUri(unsigned int id) const +{ + // This is a kind of hack... I should directly use fURIStringPool, but it's private. + // So I ask the scanner to give me back the string pool I gave him before.... + return getScanner()->getURIStringPool()->getValueForId(id); +} + +XERCES_CPP_NAMESPACE_QUALIFIER SchemaElementDecl* DocumentCacheParser::getElementDecl(const XMLCh* elementUri, const XMLCh* elementName) const { + XERCES_CPP_NAMESPACE_QUALIFIER XMLSchemaDescription* gramDesc = getGrammarResolver()->getGrammarPool()->createSchemaDescription(elementUri); + XERCES_CPP_NAMESPACE_QUALIFIER Janitor janName(gramDesc); + XERCES_CPP_NAMESPACE_QUALIFIER SchemaGrammar* schGrammar=(XERCES_CPP_NAMESPACE_QUALIFIER SchemaGrammar*)getGrammarResolver()->getGrammar(gramDesc); + if(schGrammar==NULL) + return NULL; + + unsigned int uriId=getSchemaUriId(elementUri); + // find the definition for this node, as a global definition + return (XERCES_CPP_NAMESPACE_QUALIFIER SchemaElementDecl*)schGrammar->getElemDecl(uriId, + elementName, + NULL, + (unsigned int)XERCES_CPP_NAMESPACE_QUALIFIER Grammar::TOP_LEVEL_SCOPE); +} + +XERCES_CPP_NAMESPACE_QUALIFIER SchemaAttDef* DocumentCacheParser::getAttributeDecl(const XMLCh* attributeUri, const XMLCh* attributeName) const { + + XERCES_CPP_NAMESPACE_QUALIFIER XMLSchemaDescription* gramDesc = getGrammarResolver()->getGrammarPool()->createSchemaDescription(attributeUri); + XERCES_CPP_NAMESPACE_QUALIFIER Janitor janName(gramDesc); + XERCES_CPP_NAMESPACE_QUALIFIER SchemaGrammar* schGrammar=(XERCES_CPP_NAMESPACE_QUALIFIER SchemaGrammar*)getGrammarResolver()->getGrammar(gramDesc); + if(schGrammar==NULL) + return NULL; + + // find the definition for this node, as a global definition + return (XERCES_CPP_NAMESPACE_QUALIFIER SchemaAttDef*)schGrammar->getAttributeDeclRegistry()->get(attributeName); +} + +Node::Ptr DocumentCacheParser::validate(const Node::Ptr &node, + DocumentCache::ValidationMode valMode, + DynamicContext *context) +{ + XERCES_CPP_NAMESPACE_QUALIFIER AbstractDOMParser::ValSchemes oldValScheme=getValidationScheme(); + try { + if(node->dmNodeKind() == Node::document_string) + { + Result children = node->dmChildren(context,0); + Node::Ptr child; + bool bSeenElement=false; + while((child=children->next(context)).notNull()) + { + if(child->dmNodeKind()==Node::element_string) + if(bSeenElement) + XQThrow2(DynamicErrorException,X("DocumentCacheParser::validate"), X("A document being validate must have exactly one child element [err:XQDY0061]")); + else + bSeenElement=true; + else if(child->dmNodeKind()!=Node::processing_instruction_string && + child->dmNodeKind()!=Node::comment_string) + XQThrow2(DynamicErrorException,X("DocumentCacheParser::validate"), X("A document being validate can only have element, comments and processing instructions as children [err:XQDY0061]")); + } + if(!bSeenElement) + XQThrow2(DynamicErrorException,X("DocumentCacheParser::validate"), X("A document being validate must have exactly one child element [err:XQDY0061]")); + } + + // if validation is strict, there must be a schema for the root node + if(valMode==DocumentCache::VALIDATION_STRICT) { + ATQNameOrDerived::Ptr name; + if(node->dmNodeKind() == Node::document_string) + name = ((const Node::Ptr)(node->dmChildren(context,0)->next(context)))->dmNodeName(context); + else + name = node->dmNodeName(context); + const XMLCh *node_uri = ((const ATQNameOrDerived*)name.get())->getURI(); + const XMLCh *node_name = ((const ATQNameOrDerived*)name.get())->getName(); + + XERCES_CPP_NAMESPACE_QUALIFIER SchemaElementDecl* elemDecl=getElementDecl(node_uri, node_name); + if(elemDecl==NULL) { + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer msg(1023, context->getMemoryManager()); + msg.set(X("Element {")); + msg.append(node_uri); + msg.append(X("}")); + msg.append(node_name); + msg.append(X(" is not defined as a global element [err:XQDY0084]")); + XQThrow2(DynamicErrorException,X("DocumentCacheParser::validate"), msg.getRawBuffer()); + } + } + // - build a textual representation of the element + const XMLCh* serializedForm = node->asString(context); + + // - enable the flag bValidationConstraintFatal, if validation is strict + if(valMode==DocumentCache::VALIDATION_STRICT) + setValidationConstraintFatal(true); + setValidationScheme(XERCES_CPP_NAMESPACE_QUALIFIER AbstractDOMParser::Val_Always); + setIdentityConstraintChecking(false); + + XERCES_CPP_NAMESPACE_QUALIFIER MemBufInputSource inputSrc( (const XMLByte*)serializedForm, + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(serializedForm)*sizeof(XMLCh), + XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString, + false, + context->getMemoryManager()); + inputSrc.setCopyBufToStream(false); + inputSrc.setEncoding(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgUTF16EncodingString); + // - parse the text (with validation on) + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* pDoc=parseWithContext(inputSrc, context); + setValidationConstraintFatal(false); + setValidationScheme(oldValScheme); + setIdentityConstraintChecking(true); + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::release((void**)&serializedForm, context->getMemoryManager() ); + // - return the document element + if(pDoc==NULL) + return NULL; + // if we were asked to validate a document node, return the document; otherwise, return the root node + if(node->dmNodeKind() == Node::document_string) + return new NodeImpl(pDoc, context); + else + { + // the newly returned node has no parent + return new NodeImpl(pDoc->removeChild(pDoc->getDocumentElement()), context); + } + } + catch (const XERCES_CPP_NAMESPACE_QUALIFIER SAXException& toCatch) { + setValidationConstraintFatal(false); + setValidationScheme(oldValScheme); + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer exc_msg(1023, context->getMemoryManager()); + exc_msg.set(X("Validation failed: ")); + exc_msg.append(toCatch.getMessage()); + exc_msg.append(X(" [err:XQDY0027]")); + XQThrow2(DynamicErrorException,X("DocumentCacheParser::validate"), exc_msg.getRawBuffer()); + } + catch (const XERCES_CPP_NAMESPACE_QUALIFIER DOMException& toCatch) { + setValidationConstraintFatal(false); + setValidationScheme(oldValScheme); + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer exc_msg(1023, context->getMemoryManager()); + exc_msg.set(X("Validation failed: ")); + exc_msg.append(toCatch.msg); + exc_msg.append(X(" [err:XQDY0027]")); + XQThrow2(DynamicErrorException,X("DocumentCacheParser::validate"), exc_msg.getRawBuffer()); + } + catch (const XERCES_CPP_NAMESPACE_QUALIFIER XMLException& toCatch) { + setValidationConstraintFatal(false); + setValidationScheme(oldValScheme); + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer exc_msg(1023, context->getMemoryManager()); + exc_msg.set(X("Validation failed: ")); + exc_msg.append(toCatch.getMessage()); + exc_msg.append(X(" [err:XQDY0027]")); + XQThrow2(DynamicErrorException,X("DocumentCacheParser::validate"), exc_msg.getRawBuffer()); + } + return NULL; +} + +void DocumentCacheParser::error(const unsigned int errCode + , const XMLCh* const msgDomain + , const XERCES_CPP_NAMESPACE_QUALIFIER XMLErrorReporter::ErrTypes errType + , const XMLCh* const errorText + , const XMLCh* const systemId + , const XMLCh* const publicId + , const XMLSSize_t lineNum + , const XMLSSize_t colNum + ) +{ + XERCES_CPP_NAMESPACE_QUALIFIER XMLErrorReporter::ErrTypes newErrType=errType; + // if we have disabled validation errors, convert them into warnings + if (!getValidationConstraintFatal() && XPath2Utils::equals(msgDomain, XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgValidityDomain)) + newErrType=XERCES_CPP_NAMESPACE_QUALIFIER XMLErrorReporter::ErrType_Warning; + XercesDOMParser::error(errCode,msgDomain,newErrType,errorText,systemId,publicId,lineNum,colNum); +} + +///////////////////////////////////////////////////// +// + +DocumentCacheImpl::DocumentCacheImpl(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr, XERCES_CPP_NAMESPACE_QUALIFIER XMLGrammarPool* xmlgr) : + _parser(memMgr, xmlgr), + _loadedSchemas(0), + _memMgr(memMgr) +{ + _loadedSchemas=new (_memMgr) XERCES_CPP_NAMESPACE_QUALIFIER XMLStringPool(3, _memMgr); +} + +DocumentCacheImpl::DocumentCacheImpl(const DocumentCacheImpl *parent, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr) + : _parser(parent->_parser, memMgr), + _loadedSchemas(0), + _memMgr(memMgr) +{ +} + +DocumentCacheImpl::~DocumentCacheImpl() +{ + if(_loadedSchemas) + delete _loadedSchemas; +} + +void DocumentCacheImpl::setXMLEntityResolver(XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* const handler) +{ + _parser.setXMLEntityResolver(handler); +} + +XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* DocumentCacheImpl::getXMLEntityResolver() const +{ + return const_cast(_parser.getXMLEntityResolver()); +} + +XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *DocumentCacheImpl::loadXMLDocument(XERCES_CPP_NAMESPACE_QUALIFIER + InputSource& inputSource, + DynamicContext *context) +{ + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc = 0; + try { + doc = _parser.parseWithContext(inputSource, context); + } + catch(const XERCES_CPP_NAMESPACE_QUALIFIER SAXException& toCatch) { + //TODO: Find a way to decipher whether the exception is actually because of a parsing problem or because the document can't be found + XQThrow2(XMLParseException, X("DocumentCacheImpl::loadXMLDocument"), toCatch.getMessage()); + } + catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException& toCatch) { + XQThrow2(XMLParseException,X("DocumentCacheImpl::loadXMLDocument"), toCatch.msg); + } + catch(const XERCES_CPP_NAMESPACE_QUALIFIER XMLException& toCatch) { + XQThrow2(XMLParseException,X("DocumentCacheImpl::loadXMLDocument"), toCatch.getMessage()); + } + return doc; +} + +XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *DocumentCacheImpl::loadXMLDocument(const XMLCh* uri, DynamicContext *context) +{ + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc = 0; + try { + doc = _parser.parseWithContext(uri, context); + } + catch(const XERCES_CPP_NAMESPACE_QUALIFIER SAXException& toCatch) { + //TODO: Find a way to decipher whether the exception is actually because of a parsing problem or because the document can't be found + XQThrow2(XMLParseException, X("DocumentCacheImpl::loadXMLDocument"), toCatch.getMessage()); + } + catch(const XERCES_CPP_NAMESPACE_QUALIFIER DOMException& toCatch) { + XQThrow2(XMLParseException,X("DocumentCacheImpl::loadXMLDocument"), toCatch.msg); + } + catch(const XERCES_CPP_NAMESPACE_QUALIFIER XMLException& toCatch) { + XQThrow2(XMLParseException,X("DocumentCacheImpl::loadXMLDocument"), toCatch.getMessage()); + } + return doc; +} + +/* + * returns true if the type represented by uri:typename is an instance of uriToCheck:typeNameToCheck + * + * ie: to check + * xs:integer instance of xs:decimal, + * call + * isTypeOrDerivedFromType("xs", "integer", "xs", "decimal") + * (except of course, call with URIs, not prefixes!) + */ +bool DocumentCacheImpl::isTypeOrDerivedFromType(const XMLCh* const uri, const XMLCh* const typeName, const XMLCh* const uriToCheck, const XMLCh* const typeNameToCheck) const +{ + //cerr<<"is "<getDatatypeValidator(uri,typeName); + if(dtvDerived==NULL) + { + ////cerr << "looking at complex" << endl; + //now lets take a look at complex stuff + XERCES_CPP_NAMESPACE_QUALIFIER ComplexTypeInfo *cti = getComplexTypeInfo(uri, typeName); + + //in the case of non-schema grammar + if (cti) + { + // if we are here, the type is a complex type + while(cti != 0) + { + if(XPath2Utils::equals(uriToCheck, cti->getTypeUri()) && + XPath2Utils::equals(typeNameToCheck, cti->getTypeLocalName())) + return true; + XERCES_CPP_NAMESPACE_QUALIFIER ComplexTypeInfo *ctiOld = cti; + cti = cti->getBaseComplexTypeInfo(); + + //might be derived from a simple type + if(cti == 0) + { + XERCES_CPP_NAMESPACE_QUALIFIER DatatypeValidator* dtv = ctiOld->getDatatypeValidator(); + + while(dtv != 0) + { + //cerr << "dtv type nameUDCom is '" << XERCES_CPP_NAMESPACE_QUALIFIER XMLString::transcode(dtv->getTypeName()) << "'" << endl; + if(XPath2Utils::equals(uriToCheck, dtv->getTypeUri()) && + XPath2Utils::equals(typeNameToCheck, dtv->getTypeLocalName())) + return true; + dtv = dtv->getBaseValidator(); + } + } + } + } + return false; + } + + // if we are here, the type is a simple type + if(XPath2Utils::equals(typeNameToCheck, XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgDT_ANYSIMPLETYPE) && + XPath2Utils::equals(uriToCheck, XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) + return true; + + if(XPath2Utils::equals(typeNameToCheck, AnyAtomicType::fgDT_ANYATOMICTYPE) && + XPath2Utils::equals(uriToCheck, FunctionConstructor::XMLChXPath2DatatypesURI) ) + return dtvDerived->isAtomic(); + + XERCES_CPP_NAMESPACE_QUALIFIER DatatypeValidator* dtvBase=_parser.getGrammarResolver()->getDatatypeValidator(uriToCheck,typeNameToCheck); + if(dtvBase==NULL) + return false; + while(dtvDerived != 0) + { + if(XPath2Utils::equals(dtvBase->getTypeUri(), dtvDerived->getTypeUri()) && + XPath2Utils::equals(dtvBase->getTypeLocalName(), dtvDerived->getTypeLocalName())) + return true; + dtvDerived = dtvDerived->getBaseValidator(); + } + + return false; +} + +bool DocumentCacheImpl::isTypeDefined(const XMLCh* const uri, const XMLCh* const typeName) const +{ + if(getComplexTypeInfo(uri, typeName) != NULL) + return true; + + if(_parser.getGrammarResolver()->getDatatypeValidator(uri,typeName) != NULL) + return true; + + // these types are not present in the XMLSchema grammar, but they are defined + if(XPath2Utils::equals(uri, XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) + { + return (XPath2Utils::equals(typeName, AnyAtomicType::fgDT_ANYATOMICTYPE) || + XPath2Utils::equals(typeName, ATUntypedAtomic::fgDT_UNTYPEDATOMIC) || + XPath2Utils::equals(typeName, DocumentCacheParser::g_szUntyped) || + XPath2Utils::equals(typeName, XERCES_CPP_NAMESPACE_QUALIFIER SchemaSymbols::fgATTVAL_ANYTYPE)); + } + return false; +} + +void DocumentCacheImpl::addSchemaLocation(const XMLCh* uri, VectorOfStrings* locations, StaticContext *context) +{ + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer buf(1023,context->getMemoryManager()); + if(_loadedSchemas->exists(uri)) + { + buf.set(X("More than one 'import schema' specifies the same target namespace \"")); + buf.append(uri); + buf.append(X("\" [err:XQST0058]")); + XQThrow2(StaticErrorException,X("DocumentCacheImpl::addSchemaLocation"), buf.getRawBuffer()); + } + _loadedSchemas->addOrFind(uri); + + bool bFoundSchema=false; + if(locations==NULL) { + // if no locations are given, try to see if the entity resolver can still find it + try { + _parser.loadSchema(uri, 0, context); + bFoundSchema = true; + } catch(XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& e) { + buf.set(X("An error occurred while trying to load the schema for namespace \"")); + buf.append(uri); + buf.append(X("\": ")); + buf.append(e.getMessage()); + buf.append(X(" [err:XQST0059]")); + } + } + else { + for(VectorOfStrings::iterator it=locations->begin(); it!=locations->end(); it++) { + try { + _parser.loadSchema(uri, *it, context); + bFoundSchema = true; + break; + } catch(XERCES_CPP_NAMESPACE_QUALIFIER SAXParseException& e) { + buf.set(X("An error occurred while trying to load the schema for namespace \"")); + buf.append(uri); + buf.append(X("\" from \"")); + buf.append(*it); + buf.append(X("\": ")); + buf.append(e.getMessage()); + buf.append(X(" [err:XQST0059]")); + } + } + } + if(!bFoundSchema) + { + if(buf.isEmpty()) + XQThrow2(StaticErrorException,X("DocumentCacheImpl::addSchemaLocation"), X("Schema not found [err:XQST0059]")); + else + XQThrow2(StaticErrorException,X("DocumentCacheImpl::addSchemaLocation"), buf.getRawBuffer()); + } +} + +unsigned int DocumentCacheImpl::getSchemaUriId(const XMLCh* uri) const +{ + return _parser.getSchemaUriId(uri); +} + +const XMLCh* DocumentCacheImpl::getSchemaUri(unsigned int id) const +{ + return _parser.getSchemaUri(id); +} + +Node::Ptr DocumentCacheImpl::validate(const Node::Ptr &node, + DocumentCache::ValidationMode valMode, + DynamicContext *context) +{ + return _parser.validate(node, valMode, context); +} + +XERCES_CPP_NAMESPACE_QUALIFIER DatatypeValidator* DocumentCacheImpl::getDatatypeValidator(const XMLCh* uri, const XMLCh* typeName) const { + + return _parser.getGrammarResolver()->getDatatypeValidator(uri,typeName); +} + +XERCES_CPP_NAMESPACE_QUALIFIER SchemaElementDecl* DocumentCacheImpl::getElementDecl(const XMLCh* elementUri, const XMLCh* elementName) const { + + return _parser.getElementDecl(elementUri,elementName); +} + +XERCES_CPP_NAMESPACE_QUALIFIER SchemaAttDef* DocumentCacheImpl::getAttributeDecl(const XMLCh* attributeUri, const XMLCh* attributeName) const { + + return _parser.getAttributeDecl(attributeUri,attributeName); +} + +XERCES_CPP_NAMESPACE_QUALIFIER ComplexTypeInfo* DocumentCacheImpl::getComplexTypeInfo(const XMLCh* uri, const XMLCh* typeName) const { + + XERCES_CPP_NAMESPACE_QUALIFIER Grammar* grammar=_parser.getGrammarResolver()->getGrammar(uri); + if(grammar==NULL) + return NULL; + if(grammar->getGrammarType()!=XERCES_CPP_NAMESPACE_QUALIFIER Grammar::SchemaGrammarType) + return NULL; + XERCES_CPP_NAMESPACE_QUALIFIER SchemaGrammar* schGrammar=(XERCES_CPP_NAMESPACE_QUALIFIER SchemaGrammar*)grammar; + XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf *ctr = schGrammar->getComplexTypeRegistry(); + if(ctr==NULL) + return NULL; + + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer typeKey(1023, _memMgr); + typeKey.set(uri); + typeKey.append(XERCES_CPP_NAMESPACE_QUALIFIER chComma); + typeKey.append(typeName); + + return ctr->get(typeKey.getRawBuffer()); + +} + +DocumentCache *DocumentCacheImpl::createDerivedCache(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr) const +{ + // lock the grammar pool, so we can share it accross threads + _parser.getGrammarResolver()->getGrammarPool()->lockPool(); + + // Construct a new DocumentCacheImpl, based on this one + return new (memMgr) DocumentCacheImpl(this, memMgr); +} diff --git a/src/schema/SequenceType.cpp b/src/schema/SequenceType.cpp new file mode 100644 index 00000000..f8fc20ce --- /dev/null +++ b/src/schema/SequenceType.cpp @@ -0,0 +1,814 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: SequenceType.cpp,v 1.26 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#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 + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +SequenceType::SequenceType(const XMLCh* typeURI,const XMLCh* typeName, SequenceType::OccurrenceIndicator occur, XPath2MemoryManager *mm) +{ + m_pItemType=new (mm) SequenceType::ItemType(ItemType::TEST_ATOMIC_TYPE,NULL,new (mm) QualifiedName(XMLUni::fgZeroLenString, typeName)); + m_pItemType->setTypeURI(typeURI); + m_nOccurrence=occur; +} + +SequenceType::SequenceType(SequenceType::ItemType* test, OccurrenceIndicator occur /*= EXACTLY_ONE*/) +{ + m_pItemType=test; + m_nOccurrence=occur; +} + +SequenceType::SequenceType() +{ + m_pItemType=0; + m_nOccurrence=EXACTLY_ONE; +} + +SequenceType::~SequenceType() +{ + if(m_pItemType) + delete m_pItemType; +} + +Result SequenceType::occurrenceMatches(const Result &toBeTested, const LocationInfo *location) const +{ + return new OccurrenceMatchesResult(toBeTested, this, location); +} + +Result SequenceType::typeMatches(const Result &toBeTested, const LocationInfo *location) const +{ + return new TypeMatchesResult(toBeTested, this, location); +} + +Result SequenceType::matches(const Result &toBeTested, const LocationInfo *location) const +{ + return typeMatches(occurrenceMatches(toBeTested, location), location); +} + +void SequenceType::setItemType(SequenceType::ItemType* itemType) +{ + if(m_pItemType) + delete m_pItemType; + m_pItemType=itemType; +} + +SequenceType::ItemType::ItemTestType SequenceType::getItemTestType(void) const { + + return m_pItemType->getItemTestType(); +} + +SequenceType::OccurrenceIndicator SequenceType::getOccurrenceIndicator(void) const { + + return m_nOccurrence; +} + +void SequenceType::setOccurrence(SequenceType::OccurrenceIndicator nOccurrence) +{ + m_nOccurrence=nOccurrence; +} + +void SequenceType::setNameURI(const XMLCh* const nameURI) { + + if(m_pItemType!=NULL) { + m_pItemType->setNameURI(nameURI); + } +} + +const XMLCh* SequenceType::getNameURI(const StaticContext* context) const { + + if(m_pItemType!=NULL) { + return m_pItemType->getNameURI(context, this); + } + return 0; +} + +void SequenceType::setTypeURI(const XMLCh* const typeURI) { + + //cerr << "SequnceType:: Setting typeURI: " << typeURI << endl; + + if(m_pItemType!=NULL) { + m_pItemType->setTypeURI(typeURI); + } +} + +const XMLCh* SequenceType::getTypeURI(const StaticContext* context) const { + + if(m_pItemType!=NULL) { + return m_pItemType->getTypeURI(context, this); + } + return 0; +} + +QualifiedName *SequenceType::getConstrainingName(void) const { + + return m_pItemType->getName(); +} + +QualifiedName *SequenceType::getConstrainingType(void) const { + + return m_pItemType->getType(); +} + +void SequenceType::staticResolution(StaticContext* context) const +{ + if(m_pItemType!=NULL && m_pItemType->getItemTestType()==ItemType::TEST_ATOMIC_TYPE && m_pItemType->getType()!=NULL) + { + // check if the type to be tested is defined and is really an atomic one + const XMLCh* uriToCheck=m_pItemType->getTypeURI(context, this); + const XMLCh* nameToCheck=m_pItemType->getType()->getName(); + if(!context->getDocumentCache()->isTypeDefined(uriToCheck, nameToCheck)) + { + XMLBuffer buf; + buf.set(X("Type {")); + buf.append(uriToCheck); + buf.append(X("}:")); + buf.append(nameToCheck); + buf.append(X(" is not defined [err:XPST0051]")); + XQThrow(StaticErrorException, X("SequenceType::staticResolution"), buf.getRawBuffer()); + } + if(!context->getDocumentCache()->isTypeOrDerivedFromType(uriToCheck, nameToCheck, + FunctionConstructor::XMLChXPath2DatatypesURI, AnyAtomicType::fgDT_ANYATOMICTYPE)) + { + XMLBuffer buf; + buf.set(X("Type {")); + buf.append(uriToCheck); + buf.append(X("}:")); + buf.append(nameToCheck); + buf.append(X(" is not an atomic type [err:XPST0051]")); + XQThrow(StaticErrorException, X("SequenceType::staticResolution"), buf.getRawBuffer()); + } + } +} + +SequenceType::ItemType::ItemType(ItemTestType test,QualifiedName* name /*=NULL*/, QualifiedName* type /*=NULL*/) +{ + m_nTestType=test; + m_pName=name; + m_pType=type; + m_TypeURI=m_NameURI=NULL; + m_bAllowNil=false; +} + +SequenceType::ItemType::~ItemType() +{ + delete m_pName; + delete m_pType; +} + +SequenceType::ItemType::ItemTestType SequenceType::ItemType::getItemTestType(void) const +{ + return m_nTestType; +} + +void SequenceType::ItemType::setAllowNilled(bool value) +{ + m_bAllowNil=value; +} + +bool SequenceType::ItemType::getAllowNilled() const +{ + return m_bAllowNil; +} + +void SequenceType::ItemType::setName(QualifiedName * name) +{ + m_pName=name; +} + +QualifiedName *SequenceType::ItemType::getName(void) const { + + return m_pName; +} + +void SequenceType::ItemType::setType(QualifiedName * type) +{ + m_pType=type; +} + +QualifiedName *SequenceType::ItemType::getType(void) const { + + return m_pType; +} + +void SequenceType::ItemType::setNameURI(const XMLCh* const nameURI) { + + m_NameURI = nameURI; +} + +void SequenceType::ItemType::setTypeURI(const XMLCh* const typeURI) { + + m_TypeURI = typeURI; +} + +const XMLCh* SequenceType::ItemType::getTypeURI(const StaticContext* context, const LocationInfo *location) const +{ + if(m_TypeURI!=0 && *m_TypeURI!=0) { + return m_TypeURI; + } + if(m_pType != 0) + { + const XMLCh* prefix=m_pType->getPrefix(); + // an empty prefix means the default element and type namespace + if(prefix==0 || *prefix==0) + return context->getDefaultElementAndTypeNS(); + return context->getUriBoundToPrefix(prefix, location); + } + return 0; +} + +const XMLCh* SequenceType::ItemType::getNameURI(const StaticContext* context, const LocationInfo *location) const +{ + if(m_NameURI!=0 && *m_NameURI!=0) + return m_NameURI; + if(m_pName != 0) + { + const XMLCh* prefix=m_pName->getPrefix(); + // if we are testing for an attribute, an empty prefix means empty namespace; if we are testing an element, it means + // the default element and type namespace + if(prefix==0 || *prefix==0) + if(m_nTestType==TEST_ATTRIBUTE || m_nTestType==TEST_SCHEMA_ATTRIBUTE) + return 0; + else if(m_nTestType==TEST_ELEMENT || m_nTestType==TEST_SCHEMA_ELEMENT) + return context->getDefaultElementAndTypeNS(); + + return context->getUriBoundToPrefix(prefix, location); + } + return 0; +} + +void SequenceType::ItemType::getStaticType(StaticType &st, const StaticContext *context, bool &isExact, const LocationInfo *location) const +{ + if(this==NULL) + { + st.flags = 0; + isExact = true; + return; + } + + switch(m_nTestType) { + case TEST_ANYTHING: { + st.flags = StaticType::ITEM_TYPE; + isExact = true; + break; + } + case TEST_ATOMIC_TYPE: { + st.flags = StaticType::getFlagsFor(getTypeURI(context, location), getType()->getName(), context, isExact); + break; + } + case TEST_DOCUMENT: { + st.flags = StaticType::DOCUMENT_TYPE; + if(m_pName == NULL && m_pType == NULL) + isExact = true; + else isExact = false; + break; + } + case TEST_ELEMENT: { + st.flags = StaticType::ELEMENT_TYPE; + if(m_pName == NULL && m_pType == NULL) + isExact = true; + else isExact = false; + break; + } + case TEST_ATTRIBUTE: { + st.flags = StaticType::ATTRIBUTE_TYPE; + if(m_pName == NULL && m_pType == NULL) + isExact = true; + else isExact = false; + break; + } + case TEST_PI: { + st.flags = StaticType::PI_TYPE; + if(m_pName == NULL && m_pType == NULL) + isExact = true; + else isExact = false; + break; + } + case TEST_SCHEMA_ELEMENT: { + st.flags = StaticType::ELEMENT_TYPE; + isExact = false; + break; + } + case TEST_SCHEMA_ATTRIBUTE: { + st.flags = StaticType::ATTRIBUTE_TYPE; + isExact = false; + break; + } + case TEST_COMMENT: { + st.flags = StaticType::COMMENT_TYPE; + isExact = true; + break; + } + case TEST_TEXT: { + st.flags = StaticType::TEXT_TYPE; + isExact = true; + break; + } + case TEST_NODE: { + st.flags = StaticType::NODE_TYPE; + isExact = true; + break; + } + } +} + +bool SequenceType::ItemType::matchesNameType(const Item::Ptr &toBeTested, DynamicContext* context, + const LocationInfo *location) const +{ + // Check name constraint + if(m_pName!=NULL) { + if(toBeTested->isNode()) { + + ATQNameOrDerived::Ptr name = ((const Node*)(const Item*)toBeTested)->dmNodeName(context); + if(name.isNull()) return false; + + // Match node name + const XMLCh* nodeName = m_pName->getName(); + + if(!(XPath2Utils::equals(nodeName, ((const ATQNameOrDerived*)name.get())->getName()))) + return false; + + // Match node uri + if(!(XPath2Utils::equals(getNameURI(context, location), ((const ATQNameOrDerived*)name.get())->getURI()))) + return false; + } + } + + //A named atomic type matches a value if the dynamic type of the + //value is the same as the named atomic type or is derived from the + //named atomic type by restriction. For example, the ItemType + //xs:decimal matches the value 12.34 (a decimal literal); it also + //matches a value whose dynamic type is shoesize, if shoesize is an + //atomic type derived from xs:decimal. + + if(m_pType) { + if(!context->getDocumentCache()->isTypeDefined(getTypeURI(context, location), m_pType->getName())) + { + XMLBuffer msg(1023, context->getMemoryManager()); + msg.set(X("Type {")); + msg.append(getTypeURI(context, location)); + msg.append(X("}")); + msg.append(m_pType->getName()); + msg.append(X(" is not defined [err:XPTY0004]")); + XQThrow3(XPath2ErrorException,X("SequenceType::ItemType::matchesNameType"), msg.getRawBuffer(), location); + } + bool result; + if(toBeTested->isAtomicValue()) { + result = ((AnyAtomicType*)(const Item*)toBeTested)->isInstanceOfType(getTypeURI(context, location), m_pType->getName(), context); + } else if (toBeTested->isNode()) { + result = ((Node*)(const Item*)toBeTested)->hasInstanceOfType(getTypeURI(context, location), m_pType->getName(), context); + } else { + assert(false); // should never get here + } + //cerr << "was toBeTested ("<getTypeURI()) << ":" + // << XMLString::transcode(((AnyAtomicType*)toBeTested)->getTypeName()) + // << ") instance of "<< XMLString::transcode(getTypeURI(context)) << ":" + // << XMLString::transcode(m_pType->getName()) << "? "<< result<dmNodeKind() != Node::element_string) + return false; + + if(!matchesNameType(toBeTested, context, location)) + return false; + + // if the element has xsi:nil="true", m_bAllowNil MUST be true + if(toBeTested->dmNilled(context)->isTrue() && !m_bAllowNil) + return false; + + return true; + }//case + + case TEST_ATTRIBUTE: + { + if(toBeTested->dmNodeKind() != Node::attribute_string) + return false; + if(!matchesNameType(toBeTested, context, location)) + return false; + return true; + }//case + + case TEST_SCHEMA_ELEMENT: + { + if(toBeTested->dmNodeKind() != Node::element_string) + return false; + + // retrieve the type of the element name + assert(m_pName!=NULL); + const XMLCh* elementNS=getNameURI(context, location); + const XMLCh* elementName=m_pName->getName(); + SchemaElementDecl* elemDecl=context->getDocumentCache()->getElementDecl(elementNS, elementName); + if(elemDecl==NULL) { + XMLBuffer msg(1023, context->getMemoryManager()); + msg.set(X("Element {")); + msg.append(elementNS); + msg.append(X("}")); + msg.append(elementName); + msg.append(X(" is not defined as a global element [err:XPST0081]")); + XQThrow3(StaticErrorException,X("SequenceType::ItemType::matches"), msg.getRawBuffer(), location); + } + // 1. The name of the candidate node matches the specified ElementName or matches the name of an element in a + // substitution group headed by an element named ElementName. + ATQNameOrDerived::Ptr name = toBeTested->dmNodeName(context); + if(name.isNull()) return false; + const XMLCh *node_uri = ((const ATQNameOrDerived*)name.get())->getURI(); + const XMLCh *node_name = ((const ATQNameOrDerived*)name.get())->getName(); + + if(!(XPath2Utils::equals(elementName, node_name)) || + !(XPath2Utils::equals(elementNS, node_uri))) + { + // the node doesn't match the ElementName; check if it is in its substitution group + SchemaElementDecl* thisElemDecl=context->getDocumentCache()->getElementDecl(node_uri, node_name); + if(thisElemDecl==NULL) // the node to be tested has no type info + return false; + + SchemaElementDecl* rootElemDecl=thisElemDecl->getSubstitutionGroupElem(); + bool foundIt=false; + while (rootElemDecl) + { + if (XPath2Utils::equals(rootElemDecl->getBaseName(), elementName) && + XPath2Utils::equals(context->getDocumentCache()->getSchemaUri(rootElemDecl->getURI()), elementNS)) + { + foundIt = true; + break; + } + + rootElemDecl = rootElemDecl->getSubstitutionGroupElem(); + } + if(!foundIt) + return false; + } + + // 2. derives-from(AT, ET) is true, where AT is the type of the candidate node and ET is the type declared for + // element ElementName in the in-scope element declarations. + ComplexTypeInfo* pTypeInfo=elemDecl->getComplexTypeInfo(); + if(pTypeInfo && !toBeTested->hasInstanceOfType(pTypeInfo->getTypeUri(), pTypeInfo->getTypeLocalName(), context)) + return false; + + // 3. Either the nilled property of the candidate node is false, or the element declaration for ElementName in + // the in-scope element declarations is nillable. + if(toBeTested->dmNilled(context).get()->isTrue() && + !(elemDecl->getMiscFlags() & SchemaSymbols::XSD_NILLABLE)) + return false; + + return true; + }//case + + case TEST_SCHEMA_ATTRIBUTE: + { + if(toBeTested->dmNodeKind() != Node::attribute_string) + return false; + + // retrieve the type of the attribute name + assert(m_pName!=NULL); + const XMLCh* attributeNS=getNameURI(context, location); + const XMLCh* attributeName=m_pName->getName(); + SchemaAttDef* attrDecl=context->getDocumentCache()->getAttributeDecl(attributeNS, attributeName); + if(attrDecl==NULL) { + XMLBuffer msg(1023, context->getMemoryManager()); + msg.set(X("Attribute {")); + msg.append(attributeNS); + msg.append(X("}")); + msg.append(attributeName); + msg.append(X(" is not defined as a global attribute [err:XPST0081]")); + XQThrow3(StaticErrorException,X("SequenceType::ItemType::matches"), msg.getRawBuffer(), location); + } + // 1. The name of the candidate node matches the specified AttributeName + ATQNameOrDerived::Ptr name = toBeTested->dmNodeName(context); + if(name.isNull()) return false; + const XMLCh *node_uri = ((const ATQNameOrDerived*)name.get())->getURI(); + const XMLCh *node_name = ((const ATQNameOrDerived*)name.get())->getName(); + + if(!(XPath2Utils::equals(attributeName, node_name)) || + !(XPath2Utils::equals(attributeNS, node_uri))) + return false; + + // 2. derives-from(AT, ET) is true, where AT is the type of the candidate node and ET is the type declared + // for attribute AttributeName in the in-scope attribute declarations. + DatatypeValidator* pDV=attrDecl->getDatatypeValidator(); + if(pDV && !toBeTested->hasInstanceOfType(pDV->getTypeUri(), pDV->getTypeLocalName(), context)) + return false; + + return true; + }//case + + case TEST_NODE: + { + return true; + } + + case TEST_PI: + { + if(toBeTested->dmNodeKind() != Node::processing_instruction_string) + return false; + if(!matchesNameType(toBeTested, context, location)) + return false; + return true; + } + + case TEST_COMMENT: + { + return (toBeTested->dmNodeKind() == Node::comment_string); + } + + case TEST_TEXT: + { + return (toBeTested->dmNodeKind() == Node::text_string); + } + + case TEST_DOCUMENT: + { + if(toBeTested->dmNodeKind() != Node::document_string) + return false; + if(m_pName!=NULL || m_pType!=NULL) { + + // if we have a constraint on name/type, they apply to the document element + Result children = toBeTested->dmChildren(context,0); + Node::Ptr docElement; + while((docElement = children->next(context)).notNull() && + docElement->dmNodeKind() != Node::element_string) {} + + if(docElement.isNull()) return false; + + if(!matchesNameType(docElement, context, location)) + return false; + } + return true; + } + + case TEST_ANYTHING: + { + return true; + } + + case TEST_ATOMIC_TYPE: + { + return false; + }//case + }//switch + return true; +} + +bool SequenceType::ItemType::matches(const Item::Ptr &toBeTested, DynamicContext* context, + const LocationInfo *location) const +{ + if(toBeTested->isNode()) + return matches((const Node::Ptr)toBeTested, context, location); + + switch(m_nTestType) { + case TEST_ELEMENT: + case TEST_ATTRIBUTE: + case TEST_SCHEMA_ELEMENT: + case TEST_SCHEMA_ATTRIBUTE: + case TEST_NODE: + case TEST_PI: + case TEST_COMMENT: + case TEST_TEXT: + case TEST_DOCUMENT: + { + return false; + } + + case TEST_ANYTHING: + { + return true; + } + + case TEST_ATOMIC_TYPE: + { + return matchesNameType(toBeTested, context, location); + }//case + + }//switch + return true; +} + +ASTNode *SequenceType::convertFunctionArg(ASTNode *arg, StaticContext *context, bool numericFunction, + const LocationInfo *location) const +{ + XPath2MemoryManager *mm = context->getMemoryManager(); + + // From XPath2 Spec, Section 3.1.5 (http://www.w3.org/TR/xpath20/#id-function-calls) + + // The function conversion rules are used to convert an argument value to its expected type; that is, to the + // declared type of the function parameter. The expected type is expressed as a SequenceType. The function + // conversion rules are applied to a given value as follows: + + if(m_pItemType!=NULL) + { + SequenceType::ItemType::ItemTestType testType = getItemTestType(); + // FS says we atomize first if the sequence type is atomic, and I think that's sensible - jpcs + if( testType == ItemType::TEST_ATOMIC_TYPE) { + arg = new (mm) XQAtomize(arg, mm); + arg->setLocationInfo(location); + } + + // If XPath 1.0 compatibility mode is true and an argument is not of the expected type, then the following + // conversions are applied sequentially to the argument value V: + if(context->getXPath1CompatibilityMode()) { + if(m_nOccurrence == SequenceType::EXACTLY_ONE || m_nOccurrence == SequenceType::QUESTION_MARK) { + arg = new (mm) XPath1CompatConvertFunctionArg(arg, this, mm); + arg->setLocationInfo(location); + } + } + // If the expected type is a sequence of an atomic type (possibly with an occurrence indicator *, +, or ?), + // the following conversions are applied: + else if(testType == ItemType::TEST_ATOMIC_TYPE) { + const XMLCh *uri = m_pItemType->getTypeURI(context, this); + const XMLCh *name = m_pItemType->getType()->getName(); + + if(numericFunction && + XPath2Utils::equals(uri, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) && + XPath2Utils::equals(name, AnyAtomicType::fgDT_ANYATOMICTYPE)) { + arg = new (mm) XQPromoteUntyped(arg, + SchemaSymbols::fgURI_SCHEMAFORSCHEMA, + SchemaSymbols::fgDT_DOUBLE, + mm); + arg->setLocationInfo(location); + } + else { + arg = new (mm) XQPromoteUntyped(arg, uri, name, mm); + arg->setLocationInfo(location); + } + + arg = new (mm) XQPromoteNumeric(arg, uri, name, mm); + arg->setLocationInfo(location); + arg = new (mm) XQPromoteAnyURI(arg, uri, name, mm); + arg->setLocationInfo(location); + } + } + // If, after the above conversions, the resulting value does not match the expected type according to the + // rules for SequenceType Matching, a type error is raised. [err:XPTY0004] Note that the rules for + // SequenceType Matching permit a value of a derived type to be substituted for a value of its base type. + arg = new (mm) XQTreatAs(arg, this, mm); + arg->setLocationInfo(location); + + return arg; +} + +const SequenceType::ItemType *SequenceType::getItemType() const { + return m_pItemType; +} + +//////////////////////////////////////// +// OccurrenceMatchesResult +//////////////////////////////////////// + +SequenceType::OccurrenceMatchesResult::OccurrenceMatchesResult(const Result &parent, const SequenceType *seqType, const LocationInfo *location) + : ResultImpl(location), + _seqType(seqType), + _parent(parent), + _toDo(true) +{ +} + +Item::Ptr SequenceType::OccurrenceMatchesResult::next(DynamicContext *context) +{ + Item::Ptr item = _parent->next(context); + if(_toDo) { + _toDo = false; + + // "SequenceType matching between a given value and a given SequenceType is performed as follows: + // If the SequenceType is empty, the match succeeds only if the value is an empty sequence." + if(_seqType->getItemType() == NULL && item != NULLRCP) { + XQThrow(XPath2TypeMatchException, X("SequenceType::MatchesResult::next"), + X("SequenceType matching failed: the sequence is not empty [err:XPTY0004]")); + } + // "If the SequenceType contains an ItemType and an OccurrenceIndicator, the match succeeds only if + // the number of items in the value matches the OccurrenceIndicator and each of these items matches the ItemType. " + if(_seqType->getItemType() && + (_seqType->getOccurrenceIndicator() == PLUS || _seqType->getOccurrenceIndicator() == EXACTLY_ONE) && + item == NULLRCP) { + XQThrow(XPath2TypeMatchException, X("SequenceType::MatchesResult::next"), + X("SequenceType matching failed: the sequence does not contain items [err:XPTY0004]")); + } + + // "If the SequenceType is an ItemType with no OccurrenceIndicator, the match succeeds only if + // the value contains precisely one item and that item matches the ItemType " + if(_seqType->getItemType() && + (_seqType->getOccurrenceIndicator() == EXACTLY_ONE || _seqType->getOccurrenceIndicator() == QUESTION_MARK) && + item != NULLRCP) { + // Do the tests on the number of items up front, + // since often functions that cast to a single or + // optional item only call next once. - jpcs + + Item::Ptr second = _parent->next(context); + + if(second == NULLRCP) { + _parent = 0; + } + else { + XQThrow(XPath2TypeMatchException, X("SequenceType::MatchesResult::next"), + X("SequenceType matching failed: the sequence contains more than one item [err:XPTY0004]")); + } + } + } + + if(item == NULLRCP) { + _parent = 0; + } + + return item; +} + +std::string SequenceType::OccurrenceMatchesResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + oss << _parent->asString(context, indent + 1); + oss << in << "" << std::endl; + + return oss.str(); +} + +//////////////////////////////////////// +// TypeMatchesResult +//////////////////////////////////////// + +SequenceType::TypeMatchesResult::TypeMatchesResult(const Result &parent, const SequenceType *seqType, const LocationInfo *location) + : ResultImpl(location), + _seqType(seqType), + _parent(parent) +{ +} + +Item::Ptr SequenceType::TypeMatchesResult::next(DynamicContext *context) +{ + Item::Ptr item = _parent->next(context); + if(item == NULLRCP) { + _parent = 0; + } + else if(!_seqType->getItemType()->matches(item, context, this)) { + XQThrow(XPath2TypeMatchException, X("SequenceType::MatchesResult::next"), + X("ItemType matching failed [err:XPTY0004]")); + } + + return item; +} + +std::string SequenceType::TypeMatchesResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + oss << _parent->asString(context, indent + 1); + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/simple-api/XQQuery.cpp b/src/simple-api/XQQuery.cpp new file mode 100644 index 00000000..8d1730dd --- /dev/null +++ b/src/simple-api/XQQuery.cpp @@ -0,0 +1,654 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQQuery.cpp,v 1.31.2.1 2006/12/08 15:19:12 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQQuery.cpp: implementation of the XQQuery class. +////////////////////////////////////////////////////////////////////// + +#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 + +using namespace std; + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +////////////////////////////////////////////////////////////////////// +// Construction/Destruction +////////////////////////////////////////////////////////////////////// + +XQQuery::XQQuery(const XMLCh* queryText, DynamicContext *context, bool contextOwned, MemoryManager *memMgr) + : m_memMgr(memMgr), + m_context(context), + m_contextOwned(contextOwned), + m_query(NULL), + m_bIsLibraryModule(false), + m_szTargetNamespace(NULL), + m_szQueryText(m_context->getMemoryManager()->getPooledString(queryText)), + m_szCurrentFile(NULL), + m_userDefFns(XQillaAllocator(memMgr)), + m_userDefVars(XQillaAllocator(memMgr)), + m_importedModules(XQillaAllocator(memMgr)) +{ +} + +XQQuery::~XQQuery() +{ + for(ImportedModules::iterator it = m_importedModules.begin(); + it != m_importedModules.end(); ++it) { + delete *it; + } + if(m_contextOwned) + delete m_context; +} + +DynamicContext *XQQuery::createDynamicContext(MemoryManager *memMgr) const +{ + return m_context->createDynamicContext(memMgr); +} + +Result XQQuery::execute(DynamicContext* context) const +{ + if(context->getDebugCallback()) { + return new DebugResult(this, context); + } + else { + return new QueryResult(this); + } +} + +void XQQuery::staticResolution(StaticContext *context) +{ + if(context == 0) context = m_context; + + // Run staticResolutionStage1 on the user defined functions, + // which gives them the static type they were defined with + UserFunctions::iterator i; + for(i = m_userDefFns.begin(); i != m_userDefFns.end(); ++i) { + if(getIsLibraryModule() && !XERCES_CPP_NAMESPACE::XMLString::equals((*i)->getURI(), getModuleTargetNamespace())) + XQThrow3(StaticErrorException,X("XQQuery::staticResolution"), X("Every function in a module must be in the module namespace [err:XQST0048]."), *i); + (*i)->staticResolutionStage1(context); + } + + // Define types for the imported variables + for(ImportedModules::const_iterator modIt = m_importedModules.begin(); + modIt != m_importedModules.end(); ++modIt) { + for(GlobalVariables::const_iterator varIt = (*modIt)->m_userDefVars.begin(); + varIt != (*modIt)->m_userDefVars.end(); ++varIt) { + context->getVariableTypeStore()-> + declareGlobalVar((*varIt)->getVariableURI(), (*varIt)->getVariableLocalName(), + (*varIt)->getStaticResolutionContext()); + } + } + + // Run staticResolution on the global variables + if(!m_userDefVars.empty()) + { + GlobalVariables::iterator itVar, itVar2; + // declare all the global variables with a special StaticResolutionContext, in order to recognize 'variable is defined later' errors + // instead of more generic 'variable not found' + // In order to catch references to not yet defined variables (but when no recursion happens) we also create a scope where we undefine + // the rest of the variables (once we enter in a function call, the scope will disappear and the forward references to the global variables + // will happear) + StaticResolutionContext forwardRef(context->getMemoryManager()); + forwardRef.setProperties(StaticResolutionContext::FORWARDREF); + for(itVar = m_userDefVars.begin(); itVar != m_userDefVars.end(); ++itVar) { + const XMLCh* varName=(*itVar)->getVariableName(); + const XMLCh* prefix=XPath2NSUtils::getPrefix(varName, context->getMemoryManager()); + const XMLCh* uri=NULL; + if(prefix && *prefix) + uri = context->getUriBoundToPrefix(prefix, *itVar); + const XMLCh* name= XPath2NSUtils::getLocalName(varName); + context->getVariableTypeStore()->declareGlobalVar(uri, name, forwardRef); + } + StaticResolutionContext forwardRef2(context->getMemoryManager()); + forwardRef2.setProperties(StaticResolutionContext::UNDEFINEDVAR); + for(itVar = m_userDefVars.begin(); itVar != m_userDefVars.end(); ++itVar) { + context->getVariableTypeStore()->addLogicalBlockScope(); + for(itVar2 = itVar; itVar2 != m_userDefVars.end(); ++itVar2) { + const XMLCh* varName=(*itVar2)->getVariableName(); + const XMLCh* prefix=XPath2NSUtils::getPrefix(varName, context->getMemoryManager()); + const XMLCh* uri=NULL; + if(prefix && *prefix) + uri = context->getUriBoundToPrefix(prefix, *itVar2); + const XMLCh* name= XPath2NSUtils::getLocalName(varName); + context->getVariableTypeStore()->declareVar(uri,name,forwardRef2); + } + (*itVar)->staticResolution(context); + context->getVariableTypeStore()->removeScope(); + if(getIsLibraryModule() && !XERCES_CPP_NAMESPACE::XMLString::equals((*itVar)->getVariableURI(), + getModuleTargetNamespace())) + XQThrow3(StaticErrorException,X("XQQuery::staticResolution"), + X("Every global variable in a module must be in the module namespace [err:XQST0048]."), *itVar); + } + // check for duplicate variable declarations + for(itVar = m_userDefVars.begin(); itVar != m_userDefVars.end(); ++itVar) + { + for (GlobalVariables::iterator it2 = itVar+1; it2 != m_userDefVars.end(); ++it2) + { + if(XPath2Utils::equals((*itVar)->getVariableURI(), (*it2)->getVariableURI()) && + XPath2Utils::equals((*itVar)->getVariableLocalName(), (*it2)->getVariableLocalName())) + { + XMLBuffer errMsg(1023, context->getMemoryManager()); + errMsg.set(X("A variable with name {")); + errMsg.append((*itVar)->getVariableURI()); + errMsg.append(X("}")); + errMsg.append((*itVar)->getVariableLocalName()); + errMsg.append(X(" has already been declared [err:XQST0049]")); + XQThrow3(StaticErrorException,X("XQQuery::staticResolution"), errMsg.getRawBuffer(), *itVar); + } + } + for(ImportedModules::const_iterator modIt = m_importedModules.begin(); + modIt != m_importedModules.end(); ++modIt) { + for(GlobalVariables::const_iterator varIt = (*modIt)->m_userDefVars.begin(); + varIt != (*modIt)->m_userDefVars.end(); ++varIt) { + if(XPath2Utils::equals((*itVar)->getVariableURI(), (*varIt)->getVariableURI()) && + XPath2Utils::equals((*itVar)->getVariableLocalName(), (*varIt)->getVariableLocalName())) { + XMLBuffer errMsg(1023, context->getMemoryManager()); + errMsg.set(X("A variable with name {")); + errMsg.append((*itVar)->getVariableURI()); + errMsg.append(X("}")); + errMsg.append((*itVar)->getVariableLocalName()); + errMsg.append(X(" has already been imported from a module [err:XQST0049]")); + XQThrow3(StaticErrorException,X("XQQuery::staticResolution"), errMsg.getRawBuffer(), *varIt); + } + } + } + } + } + + // Run staticResolutionStage2 on the user defined functions, + // which statically resolves their function bodies + for(i = m_userDefFns.begin(); i != m_userDefFns.end(); ++i) { + try { + (*i)->staticResolutionStage2(context); + } catch(XQException& e) { + XMLBuffer errMsg(1023, context->getMemoryManager()); + errMsg.set(X("Error while running static resolution on user-defined function {")); + errMsg.append((*i)->getURI()); + errMsg.append(X("}")); + errMsg.append((*i)->getName()); + errMsg.append(X(": ")); + errMsg.append(e.getError()); + XQThrow3(StaticErrorException,X("XQQuery::staticResolution"), errMsg.getRawBuffer(), *i); + } + } + if(m_query) m_query = m_query->staticResolution(context); + + staticTyping(context); +} + +void XQQuery::staticTyping(StaticContext *context) +{ + if(context == 0) context = m_context; + + VariableTypeStore* varStore = context->getVariableTypeStore(); + + // Define types for the imported variables + for(ImportedModules::const_iterator modIt = m_importedModules.begin(); + modIt != m_importedModules.end(); ++modIt) { + for(GlobalVariables::const_iterator varIt = (*modIt)->m_userDefVars.begin(); + varIt != (*modIt)->m_userDefVars.end(); ++varIt) { + varStore->declareGlobalVar((*varIt)->getVariableURI(), (*varIt)->getVariableLocalName(), + (*varIt)->getStaticResolutionContext()); + } + } + + // Run staticTyping on the global variables + if(!m_userDefVars.empty()) + { + // declare all the global variables with a special StaticResolutionContext, in order to recognize 'variable is defined + // later' errors instead of more generic 'variable not found'. In order to catch references to not yet defined + // variables (but when no recursion happens) we also create a scope where we undefine the rest of the variables (once + // we enter in a function call, the scope will disappear and the forward references to the global variables will + // appear). + StaticResolutionContext forwardRef(context->getMemoryManager()); + forwardRef.setProperties(StaticResolutionContext::FORWARDREF); + + StaticResolutionContext undefinedVar(context->getMemoryManager()); + undefinedVar.setProperties(StaticResolutionContext::UNDEFINEDVAR); + + GlobalVariables::iterator itVar, itVar2; + for(itVar = m_userDefVars.begin(); itVar != m_userDefVars.end(); ++itVar) { + varStore->declareGlobalVar((*itVar)->getVariableURI(), (*itVar)->getVariableLocalName(), + forwardRef); + } + + for(itVar = m_userDefVars.begin(); itVar != m_userDefVars.end(); ++itVar) { + varStore->addLogicalBlockScope(); + for(itVar2 = itVar; itVar2 != m_userDefVars.end(); ++itVar2) { + varStore->declareVar((*itVar2)->getVariableURI(), (*itVar2)->getVariableLocalName(), + undefinedVar); + } + (*itVar)->staticTyping(context); + varStore->removeScope(); + } + } + + // Run staticTyping on the user defined functions, + // which calculates a better type for them + UserFunctions::iterator i; + for(i = m_userDefFns.begin(); i != m_userDefFns.end(); ++i) { + try { + (*i)->staticTyping(context); + } catch(XQException& e) { + XMLBuffer errMsg(1023, context->getMemoryManager()); + errMsg.set(X("Error while calculating static type of user-defined function {")); + errMsg.append((*i)->getURI()); + errMsg.append(X("}")); + errMsg.append((*i)->getName()); + errMsg.append(X(": ")); + errMsg.append(e.getError()); + XQThrow3(StaticErrorException,X("XQQuery::staticTyping"), errMsg.getRawBuffer(), *i); + } + } + if(m_query) m_query = m_query->staticTyping(context); +} + +std::string XQQuery::getQueryPlan() const +{ + return PrintAST::print(this, m_context); +} + +ASTNode* XQQuery::getQueryBody() const +{ + return m_query; +} + +void XQQuery::setQueryBody(ASTNode* query) +{ + m_query=query; +} + +void XQQuery::addFunction(XQUserFunction* fnDef) +{ + m_userDefFns.push_back(fnDef); +} + +void XQQuery::addVariable(XQGlobalVariable* varDef) +{ + m_userDefVars.push_back(varDef); +} + +void XQQuery::setIsLibraryModule(bool bIsModule/*=true*/) +{ + m_bIsLibraryModule=bIsModule; +} + +bool XQQuery::getIsLibraryModule() const +{ + return m_bIsLibraryModule; +} + +void XQQuery::setModuleTargetNamespace(const XMLCh* uri) +{ + m_szTargetNamespace=uri; +} + +const XMLCh* XQQuery::getModuleTargetNamespace() const +{ + return m_szTargetNamespace; +} + +class LoopDetector : public XMLEntityResolver +{ +public: + LoopDetector(XMLEntityResolver* pParent, const XMLCh* myModuleURI) + { + m_pParentResolver=pParent; + m_PreviousModuleNamespace=myModuleURI; + } + + virtual InputSource* resolveEntity(XMLResourceIdentifier* resourceIdentifier) + { + if(resourceIdentifier->getResourceIdentifierType()==XMLResourceIdentifier::UnKnown && + XPath2Utils::equals(resourceIdentifier->getNameSpace(), m_PreviousModuleNamespace)) + { + XMLBuffer buf; + buf.set(X("The graph of module imports contains a cycle for namespace '")); + buf.append(resourceIdentifier->getNameSpace()); + buf.append(X("' [err:XQST0073]")); + XQThrow2(StaticErrorException, X("XQQuery::ImportModule"), buf.getRawBuffer()); + } + if(m_pParentResolver) + return m_pParentResolver->resolveEntity(resourceIdentifier); + return NULL; + } + +protected: + XMLEntityResolver* m_pParentResolver; + const XMLCh* m_PreviousModuleNamespace; +}; + +void XQQuery::importModule(const XMLCh* szUri, VectorOfStrings* locations, StaticContext* context) +{ + for(ImportedModules::iterator modIt = m_importedModules.begin(); + modIt != m_importedModules.end(); ++modIt) { + if(XPath2Utils::equals((*modIt)->getModuleTargetNamespace(),szUri)) + { + XMLBuffer buf(1023,context->getMemoryManager()); + buf.set(X("Module for namespace '")); + buf.append(szUri); + buf.append(X("' has already been imported [err:XQST0047]")); + XQThrow2(StaticErrorException, X("XQQuery::ImportModule"), buf.getRawBuffer()); + } + } + if(locations==NULL) + locations=context->resolveModuleURI(szUri); + if(locations==NULL || locations->empty()) + { + XMLBuffer buf(1023,context->getMemoryManager()); + buf.set(X("Cannot locate module for namespace ")); + buf.append(szUri); + buf.append(X(" without the 'at ' keyword [err:XQST0059]")); + XQThrow2(StaticErrorException,X("XQQuery::ImportModule"), buf.getRawBuffer()); + } + + bool bFound=false; + for(VectorOfStrings::iterator it=locations->begin();it!=locations->end();it++) + { + InputSource* srcToUse = 0; + if (context->getDocumentCache()->getXMLEntityResolver()){ + XMLResourceIdentifier resourceIdentifier(XMLResourceIdentifier::UnKnown, + *it, szUri, XMLUni::fgZeroLenString, + context->getBaseURI()); + srcToUse = context->getDocumentCache()->getXMLEntityResolver()->resolveEntity(&resourceIdentifier); + } + + if(srcToUse==0) + { + try { + XMLURL urlTmp(context->getBaseURI(), *it); + if (urlTmp.isRelative()) { + throw MalformedURLException(__FILE__, __LINE__, XMLExcepts::URL_NoProtocolPresent); + } + srcToUse = new URLInputSource(urlTmp); + } + catch(const MalformedURLException&) { + // It's not a URL, so let's assume it's a local file name. + const XMLCh* baseUri=context->getBaseURI(); + if(baseUri && baseUri[0]) { + XMLCh* tmpBuf = XMLPlatformUtils::weavePaths(baseUri, *it); + srcToUse = new LocalFileInputSource(tmpBuf); + XMLPlatformUtils::fgMemoryManager->deallocate(tmpBuf); + } + else { + srcToUse = new LocalFileInputSource(*it); + } + } + } + Janitor janIS(srcToUse); + + DynamicContext* moduleCtx = context->createModuleContext(); + moduleCtx->setBaseURI(srcToUse->getSystemId()); + LoopDetector loopDetector(context->getXMLEntityResolver(), szUri); + moduleCtx->setXMLEntityResolver(&loopDetector); + moduleCtx->setModuleResolver(context->getModuleResolver()); + + XQQuery* pParsedQuery = XQilla::parse(*srcToUse, XQilla::XQUERY, moduleCtx); + + if(!pParsedQuery->getIsLibraryModule()) { + XMLBuffer buf(1023,context->getMemoryManager()); + buf.set(X("The module at ")); + buf.append(srcToUse->getSystemId()); + buf.append(X(" is not a module")); + XQThrow2(StaticErrorException, X("XQQuery::ImportModule"), buf.getRawBuffer()); + } + if(!XERCES_CPP_NAMESPACE::XMLString::equals(szUri,pParsedQuery->getModuleTargetNamespace())) { + XMLBuffer buf(1023,context->getMemoryManager()); + buf.set(X("The module at ")); + buf.append(srcToUse->getSystemId()); + buf.append(X(" specifies a different namespace [err:XQST0059]")); + XQThrow2(StaticErrorException, X("XQQuery::ImportModule"), buf.getRawBuffer()); + } + // now move the variable declarations and the function definitions into my context + for(UserFunctions::iterator itFn = pParsedQuery->m_userDefFns.begin(); itFn != pParsedQuery->m_userDefFns.end(); ++itFn) { + (*itFn)->setModuleDocumentCache(const_cast(moduleCtx->getDocumentCache())); + context->addCustomFunction(*itFn); + } + for(GlobalVariables::iterator itVar = pParsedQuery->m_userDefVars.begin(); itVar != pParsedQuery->m_userDefVars.end(); ++itVar) { + for(ImportedModules::const_iterator modIt = m_importedModules.begin(); + modIt != m_importedModules.end(); ++modIt) { + for(GlobalVariables::const_iterator varIt = (*modIt)->m_userDefVars.begin(); + varIt != (*modIt)->m_userDefVars.end(); ++varIt) { + if(XPath2Utils::equals((*varIt)->getVariableURI(), (*itVar)->getVariableURI()) && + XPath2Utils::equals((*varIt)->getVariableLocalName(), (*itVar)->getVariableLocalName())) { + XMLBuffer buf(1023,context->getMemoryManager()); + buf.set(X("An imported variable {")); + buf.append((*itVar)->getVariableURI()); + buf.append(X("}")); + buf.append((*itVar)->getVariableLocalName()); + buf.append(X(" conflicts with an already defined global variable [err:XQST0049].")); + XQThrow3(StaticErrorException, X("XQQuery::ImportModule"), buf.getRawBuffer(), *varIt); + } + } + } + } + + moduleCtx->setXMLEntityResolver(NULL); + moduleCtx->setModuleResolver(NULL); + m_importedModules.push_back(pParsedQuery); + + bFound=true; + } + if(!bFound) + { + XMLBuffer buf(1023,context->getMemoryManager()); + buf.set(X("Cannot locate the module for namespace \"")); + buf.append(szUri); + buf.append(X("\" [err:XQST0059]")); + XQThrow2(StaticErrorException,X("XQQuery::ImportModule"), buf.getRawBuffer()); + } +} + +const XMLCh* XQQuery::getFile() const +{ + return m_szCurrentFile; +} + +void XQQuery::setFile(const XMLCh* file) +{ + m_szCurrentFile=m_context->getMemoryManager()->getPooledString(file); +} + +const XMLCh* XQQuery::getQueryText() const +{ + return m_szQueryText; +} + +XQQuery::QueryResult::QueryResult(const XQQuery *query) + : ResultImpl(query->getQueryBody()), + _query(query), + _parent(0), + _toDo(true) +{ +} + +Item::Ptr XQQuery::QueryResult::next(DynamicContext *context) +{ + if(_toDo) { + _toDo = false; + + // Execute the imported modules + for(ImportedModules::const_iterator modIt = _query->m_importedModules.begin(); + modIt != _query->m_importedModules.end(); ++modIt) { + + // Derive the module's execution context from it's static context + AutoDelete moduleCtx((*modIt)->createDynamicContext(context->getMemoryManager())); + moduleCtx->setMemoryManager(context->getMemoryManager()); + + (*modIt)->execute(moduleCtx)->next(moduleCtx); + + // Copy the module's imported variables into our context + for(GlobalVariables::const_iterator varIt = (*modIt)->m_userDefVars.begin(); + varIt != (*modIt)->m_userDefVars.end(); ++varIt) { + std::pair value = moduleCtx->getVariableStore()-> + getGlobalVar((*varIt)->getVariableURI(), (*varIt)->getVariableLocalName(), moduleCtx); + assert(value.first); + Sequence newSeq(value.second.getLength()); + for(Sequence::iterator it=value.second.begin(); it!=value.second.end(); it++) + if((*it)->isNode()) + newSeq.addItem(context->getItemFactory()->cloneNode((const Node::Ptr)(*it), context)); + else + newSeq.addItem(*it); + context->getVariableStore()-> + setGlobalVar((*varIt)->getVariableURI(), (*varIt)->getVariableLocalName(), newSeq, context); + } + } + + // define global variables + for(GlobalVariables::const_iterator it3 = _query->m_userDefVars.begin(); it3 != _query->m_userDefVars.end(); ++it3) + (*it3)->execute(context); + + // execute the query body + if(_query->getQueryBody() != NULL) { + _parent = _query->getQueryBody()->collapseTree(context); + } + } + + Item::Ptr item = _parent->next(context); + + if(item == NULLRCP) { + _parent = 0; + } + + return item; +} + +std::string XQQuery::QueryResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + oss << _parent->asString(context, indent + 1); + oss << in << "" << std::endl; + + return oss.str(); +} + +XQQuery::DebugResult::DebugResult(const XQQuery *query, DynamicContext *context) + : LazySequenceResult(query->getQueryBody(), context), + _query(query) +{ +} + +void XQQuery::DebugResult::getResult(Sequence &toFill, DynamicContext *context) const +{ + static XMLCh szMain[]= { chLatin_M, chLatin_a, chLatin_i, chLatin_n, chNull }; + + if(context->getDebugCallback()) { + context->getDebugCallback()->NotifyQueryBegin(context, _query->getQueryText()); + context->getDebugCallback()->EnterFunction(context, _query->getFile(), szMain, 0, 0); + } + + try + { + // Execute the imported modules + for(ImportedModules::const_iterator modIt = _query->m_importedModules.begin(); + modIt != _query->m_importedModules.end(); ++modIt) { + + // Derive the module's execution context from it's static context + AutoDelete moduleCtx((*modIt)->createDynamicContext(context->getMemoryManager())); + moduleCtx->setMemoryManager(context->getMemoryManager()); + // propagate debug settings + moduleCtx->setDebugCallback(context->getDebugCallback()); + + (*modIt)->execute(moduleCtx)->next(moduleCtx); + + // Copy the module's imported variables into our context + for(GlobalVariables::const_iterator varIt = (*modIt)->m_userDefVars.begin(); + varIt != (*modIt)->m_userDefVars.end(); ++varIt) { + std::pair value = moduleCtx->getVariableStore()-> + getGlobalVar((*varIt)->getVariableURI(), (*varIt)->getVariableLocalName(), moduleCtx); + assert(value.first); + Sequence newSeq(value.second.getLength()); + for(Sequence::iterator it=value.second.begin(); it!=value.second.end(); it++) + if((*it)->isNode()) + newSeq.addItem(context->getItemFactory()->cloneNode((const Node::Ptr)(*it), context)); + else + newSeq.addItem(*it); + context->getVariableStore()-> + setGlobalVar((*varIt)->getVariableURI(), (*varIt)->getVariableLocalName(), newSeq, context); + } + } + + // define global variables + for(GlobalVariables::const_iterator it3 = _query->m_userDefVars.begin(); it3 != _query->m_userDefVars.end(); ++it3) + (*it3)->execute(context); + + // execute the query body + if(_query->getQueryBody() != NULL) { + toFill = _query->getQueryBody()->collapseTree(context)->toSequence(context); + } + } + catch(XQException& e) + { + if(!e.isErrorReported()) { + if(context->getDebugCallback() && context->isDebuggingEnabled()) + context->getDebugCallback()->ReportFirstError(context, e.getError(), _query->getFile(), 0); + e.setErrorReported(); + if(e.getXQueryLine() == 0) { + e.setXQueryPosition(_query->getFile(), 1, 1); + } + } + throw e; + } + + if(context->getDebugCallback()) { + context->getDebugCallback()->ExitFunction(context, szMain); + context->getDebugCallback()->NotifyQueryEnd(context, toFill); + } +} + +std::string XQQuery::DebugResult::asString(DynamicContext *context, int indent) const +{ + std::ostringstream oss; + std::string in(getIndent(indent)); + + oss << in << "" << std::endl; + + return oss.str(); +} diff --git a/src/simple-api/XQilla.cpp b/src/simple-api/XQilla.cpp new file mode 100644 index 00000000..d5ea771c --- /dev/null +++ b/src/simple-api/XQilla.cpp @@ -0,0 +1,196 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQilla.cpp,v 1.14 2006/11/01 16:37:22 jpcs Exp $ + */ + +////////////////////////////////////////////////////////////////////// +// XQEvaluator.cpp: implementation of the XQEvaluator class. +////////////////////////////////////////////////////////////////////// + +#include +#include +#include +#include +#include +#include +#include +#include +#include "../lexer/XQLexer.hpp" + +#include +#include +#include +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +XQilla::XQilla(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr) +{ + XQillaPlatformUtils::initialize(memMgr); +} + +XQilla::~XQilla() +{ + XQillaPlatformUtils::terminate(); +} + +XQQuery* XQilla::parse(const XMLCh* inputQuery, Language language, DynamicContext* context, + const XMLCh* queryFile, unsigned int flags, + MemoryManager *memMgr) +{ + bool contextOwned = (flags & NO_ADOPT_CONTEXT) == 0; + if(context == 0) { + contextOwned = true; + context = createContext(); + } + + Janitor query(new (memMgr) XQQuery(inputQuery, context, contextOwned, memMgr)); + + try { + XQLexer lexer(context->getMemoryManager(), queryFile, inputQuery, language); + + XQParserArgs args; + args._context=context; + args._lexer=&lexer; + args._query=query.get(); + args._query->setFile(queryFile); + + XQParser::yyparse(&args); + + // Perform static resolution, if requested + if((flags & NO_STATIC_RESOLUTION) == 0) { + args._query->staticResolution(context); + } + } + catch(XQException& e) { + // parsing errors and staticResolution don't invoke ReportFirstError, so do it here + if(context->getDebugCallback() && context->isDebuggingEnabled()) + context->getDebugCallback()->ReportFirstError(context, e.getError(), queryFile, e.getXQueryLine()); + throw e; + } + + return query.release(); +} + +XQQuery* XQilla::parse(const InputSource& querySrc, Language language, DynamicContext* context, + unsigned int flags, MemoryManager *memMgr) +{ + XMLBuffer moduleText; + try { + if(!readQuery(querySrc, memMgr, moduleText)) + { + XMLBuffer buf(1023,context->getMemoryManager()); + buf.set(X("Cannot read query content from ")); + buf.append(querySrc.getSystemId()); + buf.append(X(" [err:XQST0059]")); + XQThrow2(ContextException,X("XQilla::parse"), buf.getRawBuffer()); + } + } catch(XMLException& e) { + XMLBuffer buf(1023,context->getMemoryManager()); + buf.set(X("Exception reading query content: ")); + buf.append(e.getMessage()); + XQThrow2(ContextException,X("XQilla::parse"), buf.getRawBuffer()); + } + + return parse(moduleText.getRawBuffer(), language, context, querySrc.getSystemId(), flags, memMgr); +} + +XQQuery* XQilla::parseFromURI(const XMLCh* queryFile, Language language, DynamicContext* context, + unsigned int flags, MemoryManager *memMgr) +{ + XMLBuffer moduleText; + try { + if(!readQuery(queryFile, memMgr, moduleText)) + { + XMLBuffer buf(1023,context->getMemoryManager()); + buf.set(X("Cannot read query content from ")); + buf.append(queryFile); + buf.append(X(" [err:XQST0059]")); + XQThrow2(ContextException,X("XQilla::parseFromURI"), buf.getRawBuffer()); + } + } catch(XMLException& e) { + XMLBuffer buf(1023,context->getMemoryManager()); + buf.set(X("Exception reading query content: ")); + buf.append(e.getMessage()); + XQThrow2(ContextException,X("XQilla::parseFromURI"), buf.getRawBuffer()); + } + + return parse(moduleText.getRawBuffer(), language, context, queryFile, flags, memMgr); +} + +DynamicContext *XQilla::createContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr) +{ + return new (memMgr) XQContextImpl(memMgr, 0, 0); +} + +#ifdef _DEBUG + #define BUFFER_SIZE 128 +#else + #define BUFFER_SIZE 8192 +#endif + +bool XQilla::readQuery(const XMLCh* queryFile, MemoryManager* memMgr, XMLBuffer& queryText) +{ + Janitor srcToFill(NULL); + try { + XMLURL urlTmp(queryFile); + if (urlTmp.isRelative()) + throw MalformedURLException(__FILE__, __LINE__, XMLExcepts::URL_NoProtocolPresent); + srcToFill.reset(new (memMgr) URLInputSource(urlTmp)); + } + catch(const MalformedURLException&) { + srcToFill.reset(new (memMgr) LocalFileInputSource(queryFile)); + } + return readQuery(*srcToFill.get(), memMgr, queryText); +} + +bool XQilla::readQuery(const InputSource& querySrc, MemoryManager* memMgr, XMLBuffer& queryText) +{ + BinInputStream* stream=querySrc.makeStream(); + if(stream==NULL) + return false; + Janitor janStream(stream); + XMLByte buffer[BUFFER_SIZE]; + unsigned int nRead=stream->readBytes(buffer,BUFFER_SIZE); + Janitor transcoder(NULL); + XMLTransService::Codes retCode; + if(querySrc.getEncoding()==NULL) { + XMLRecognizer::Encodings encoding=XMLRecognizer::basicEncodingProbe(buffer,BUFFER_SIZE); + transcoder.reset(XMLPlatformUtils::fgTransService->makeNewTranscoderFor(encoding, retCode, BUFFER_SIZE, memMgr)); + } + else { + transcoder.reset(XMLPlatformUtils::fgTransService->makeNewTranscoderFor(querySrc.getEncoding(), retCode, BUFFER_SIZE, memMgr)); + } + XMLCh tempBuff[BUFFER_SIZE]; + unsigned char charSizes[BUFFER_SIZE]; + unsigned int bytesEaten=0, nOffset=0; + unsigned int nCount=transcoder->transcodeFrom(buffer,nRead,tempBuff,BUFFER_SIZE,bytesEaten,charSizes); + queryText.set(tempBuff,nCount); + if(bytesEatenreadBytes(buffer+nOffset,BUFFER_SIZE-nOffset))>0) { + nCount=transcoder->transcodeFrom(buffer,nRead,tempBuff,BUFFER_SIZE,bytesEaten,charSizes); + queryText.append(tempBuff,nCount); + if(bytesEaten +#include "DateUtils.hpp" + +#include + +int ContextUtils::getTimezone() +{ + time_t tt; + time(&tt); + + struct tm tm; + DateUtils::threadsafe_gmtime(&tt, &tm); + + struct tm ltm; + DateUtils::threadsafe_localtime(&tt, <m); + + return (((int)tt - (int)mktime(&tm)) / 60 + + /*daylight saving time*/(ltm.tm_isdst > 0 ? 1 * 60 : 0)) * + DateUtils::g_secondsPerMinute; +} diff --git a/src/utils/DateUtils.cpp b/src/utils/DateUtils.cpp new file mode 100644 index 00000000..ba09e285 --- /dev/null +++ b/src/utils/DateUtils.cpp @@ -0,0 +1,348 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DateUtils.cpp,v 1.15 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include "DateUtils.hpp" +#include +#include +#include // for sprintf +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#if defined(WIN32) && !defined(__CYGWIN__) +#define snprintf _snprintf +#endif + +const int DateUtils::g_secondsPerMinute = 60; +const int DateUtils::g_minutesPerHour = 60; +const int DateUtils::g_hoursPerDay = 24; +const int DateUtils::g_secondsPerHour = DateUtils::g_secondsPerMinute*DateUtils::g_minutesPerHour; +const int DateUtils::g_secondsPerDay = DateUtils::g_secondsPerHour*DateUtils::g_hoursPerDay; + +void DateUtils::formatNumber(int value, int minDigits, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer& buffer) +{ + bool bIsNegative=false; + if(value<0) + { + bIsNegative=true; + value=-value; + } + XMLCh tmpBuff[19]; + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::binToText(value,tmpBuff,18,10); + if(bIsNegative) + buffer.append(XERCES_CPP_NAMESPACE_QUALIFIER chDash); + for(int len=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(tmpBuff);len INT_MAX) { + XQThrow2(XPath2TypeCastException, X("DateUtils::asInt"), X("Invalid representation of an int [err:FORG0001]")); + } else { + char out_string[256]; + num.toIntegerString(out_string); + return atoi(out_string); + } +} + +static int days_before_month[] = { 0, + 0+31, + 0+31+28, + 0+31+28+31, + 0+31+28+31+30, + 0+31+28+31+30+31, + 0+31+28+31+30+31+30, + 0+31+28+31+30+31+30+31, + 0+31+28+31+30+31+30+31+31, + 0+31+28+31+30+31+30+31+31+30, + 0+31+28+31+30+31+30+31+31+30+31, + 0+31+28+31+30+31+30+31+31+30+31+30 + }; +static int days_before_month_leap[] = { 0, + 0+31, + 0+31+29, + 0+31+29+31, + 0+31+29+31+30, + 0+31+29+31+30+31, + 0+31+29+31+30+31+30, + 0+31+29+31+30+31+30+31, + 0+31+29+31+30+31+30+31+31, + 0+31+29+31+30+31+30+31+31+30, + 0+31+29+31+30+31+30+31+31+30+31, + 0+31+29+31+30+31+30+31+31+30+31+30 + }; + +MAPM DateUtils::convertDMY2Absolute(MAPM day, MAPM month, MAPM year) +{ + MAPM prevYear = year - 1; + if(year.sign() < 0) ++prevYear; + MAPM absolute = ( prevYear * 365 ) + prevYear.integer_divide(4) - prevYear.integer_divide(100) + + prevYear.integer_divide(400); + + if(isLeapYear(year)) + absolute+=days_before_month_leap[asInt(month)-1]; + else + absolute+=days_before_month[asInt(month)-1]; + absolute+= day; + return absolute - 1; +} + +static int days_in_400_years = 400*365 + 400/4 - 400/100 + 400/400; +static int days_in_100_years = 100*365 + 100/4 - 100/100; +static int days_in_4_years = 4*365 + 4/4; +static int days_in_1_years = 1*365; + +static inline int daysInYear(const MAPM &year) +{ + return DateUtils::isLeapYear(year) ? 366 : 365; +} + +void DateUtils::convertAbsolute2DMY(MAPM absolute, MAPM& day, MAPM& month, MAPM& year) +{ + absolute += 1; + + bool bc = absolute.sign() <= 0; + bool fix = false; + + MAPM div, rem; + absolute.integer_div_rem(days_in_400_years, div, rem); + year = div * 400; + absolute = rem; + + absolute.integer_div_rem(days_in_100_years, div, rem); + if(div <= -4) fix = true; + year += div * 100; + absolute = rem; + + absolute.integer_div_rem(days_in_4_years, div, rem); + year += div * 4; + absolute = rem; + + absolute.integer_div_rem(days_in_1_years, div, rem); + if(div <= -4) fix = true; + year += div; + absolute = rem; + + if(bc) { + if(fix && absolute.sign() == 0) { + // Correct off by one error in year calculations + // due to negative leap years + absolute += 1; + } + else { + --year; + absolute += daysInYear(year); + } + } + else { + if(absolute.sign() != 0) { + ++year; + } + } + + month = 12; + day = 31; + int *days = isLeapYear(year) ? days_before_month_leap : days_before_month; + for(int i = 11; i >= 0; --i) { + if(absolute > days[i]) { + month = i + 1; + day = absolute - days[i]; + break; + } + } +} + +const ATDateOrDerived::Ptr DateUtils::getCurrentDate(const DynamicContext* context) +{ + // We get the current time and adjust it to our timezone. We then set + // this timezone in the Date object. + time_t curDate = context->getCurrentTime(); + // Note using localtime uses the tzset() function used by + // DateUtils::getImplicitTimezone. This function and getImplicitTimezone + // MUST get the same value in order for the correct time to be stored. + struct tm curLocalDate; + threadsafe_localtime(&curDate, &curLocalDate); + + char szDate[256]; + snprintf(szDate, 256,"%04d-%02d-%02d", + curLocalDate.tm_year+1900, + curLocalDate.tm_mon+1, + curLocalDate.tm_mday); + + const ATDateOrDerived::Ptr date = context->getItemFactory()-> + createDate(context->getMemoryManager()->getPooledString(szDate), context); + return date->setTimezone(new Timezone(ContextUtils::getTimezone()), context); +} + +const ATDateTimeOrDerived::Ptr DateUtils::getCurrentDateTime(const DynamicContext* context) +{ + // We get the current time and adjust it to our timezone. We then set + // this timezone in the DateTime object. + time_t curDate = context->getCurrentTime(); + // Note using localtime uses the tzset() function used by + // DateUtils::getImplicitTimezone. This function and getImplicitTimezone + // MUST get the same value in order for the correct time to be stored. + struct tm curLocalDate; + threadsafe_localtime(&curDate, &curLocalDate); + + char szDate[256]; + snprintf(szDate, 256,"%04d-%02d-%02dT%02d:%02d:%02d", + curLocalDate.tm_year+1900, + curLocalDate.tm_mon+1, + curLocalDate.tm_mday, + curLocalDate.tm_hour, + curLocalDate.tm_min, + curLocalDate.tm_sec); + + const ATDateTimeOrDerived::Ptr dateTime = context->getItemFactory()-> + createDateTime(context->getMemoryManager()->getPooledString(szDate), context); + return dateTime->setTimezone(new Timezone(ContextUtils::getTimezone()), context); +} + +const ATTimeOrDerived::Ptr DateUtils::getCurrentTime(const DynamicContext* context) +{ + time_t curDate = context->getCurrentTime(); + + struct tm curLocalDate; + threadsafe_localtime(&curDate, &curLocalDate); + + char szDate[256]; + snprintf(szDate, 256,"%02d:%02d:%02d", + curLocalDate.tm_hour, + curLocalDate.tm_min, + curLocalDate.tm_sec); + + const ATTimeOrDerived::Ptr time = context->getItemFactory()-> + createTime(context->getMemoryManager()->getPooledString(szDate), context); + return time->setTimezone(new Timezone(ContextUtils::getTimezone()), context); +} + +static XERCES_CPP_NAMESPACE_QUALIFIER XMLMutex *time_mutex = 0; + +void DateUtils::initialize() +{ + if(time_mutex == 0) { + time_mutex = new XERCES_CPP_NAMESPACE_QUALIFIER XMLMutex(); + } +} + +void DateUtils::terminate() +{ + delete time_mutex; + time_mutex = 0; +} + +struct tm *DateUtils::threadsafe_localtime(const time_t *timep, struct tm *result) +{ + XERCES_CPP_NAMESPACE_QUALIFIER XMLMutexLock lock(time_mutex); + + struct tm *tmp = ::localtime(timep); + memcpy(result, tmp, sizeof(struct tm)); + return result; +} + +struct tm *DateUtils::threadsafe_gmtime(const time_t *timep, struct tm *result) +{ + XERCES_CPP_NAMESPACE_QUALIFIER XMLMutexLock lock(time_mutex); + + struct tm *tmp = ::gmtime(timep); + memcpy(result, tmp, sizeof(struct tm)); + return result; +} diff --git a/src/utils/DateUtils.hpp b/src/utils/DateUtils.hpp new file mode 100644 index 00000000..4b402acc --- /dev/null +++ b/src/utils/DateUtils.hpp @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: DateUtils.hpp,v 1.9 2006/11/01 16:37:22 jpcs Exp $ + */ + +#ifndef _DATEUTILS_HPP +#define _DATEUTILS_HPP + +#include + +#include +#include +#include +#include +#include + +XERCES_CPP_NAMESPACE_BEGIN +class XMLBuffer; +XERCES_CPP_NAMESPACE_END + +/** Class with static methods for dealing with date operations */ +class DateUtils +{ +public: + + /** + * Constants used when doing date math + */ + static const int g_secondsPerHour, g_secondsPerMinute, g_secondsPerDay, g_minutesPerHour, g_hoursPerDay; + + /** + * Helper function that appends the specified number with the requested precision + * to the buffer (by adding 0s before the number so that it always has minDigits digits) + */ + static void formatNumber(int value, int minDigits, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer& buffer); + + /** + * Helper function that appends the specified number with the requested precision + * to the buffer (by adding 0s before the number so that it always has minDigits digits) + */ + static void formatNumber(const MAPM &value, int minDigits, XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer& buffer); + + /** + * Helper function for adding durations to dateTimes + * Returns the greatest integer less than or equal to a/b + */ + static int fQuotient(int a, int b); + + /** + * Helper function for adding durations to dateTimes + * Returns the greatest integer less than or equal to a/b + */ + static int fQuotient(double a, double b); + + /** + * Helper function for adding durations to dateTimes + * Mod function + */ + static int modulo(int a, int b); + + /** + * Helper function for adding durations to dateTimes + * Mod function for seconds part + */ + static double modulo(double a, double b); + + /** + * Helper function for adding durations to dateTimes + * Mod function for seconds part + */ + static MAPM modulo(MAPM a, MAPM b); + + /** + * Helper function for adding durations for dateTimes + * Returns fQuotient(a - low, high - low) + */ + static int fQuotient(int a, int low, int high); + + /** + * Helper function for adding durations for dateTimes + * Returns modulow(a - low, high - low) + */ + static int modulo(int a, int low, int high); + + /** + * Returns the maximum day of the given month for the given year + * month - Value between 1 (January) and 12 (December) + */ + static int maximumDayInMonthFor(MAPM yearValue, MAPM monthValue); + static int maximumDayInMonthFor(int yearValue, int monthValue); + + /** + * Returns whether the yer is a leap year + */ + static bool isLeapYear(MAPM year); + + /** + * Convert a MAPM to an int (to be used on small numbers!!! + */ + static int asInt(MAPM num); + + /** + * Convert from day,month,year into the proleptic Gregorian calendar used by XMLSchema + */ + static MAPM convertDMY2Absolute(MAPM day, MAPM month, MAPM year); + + /** + * Convert the proleptic Gregorian calendar used by XMLSchema into day,month,year + */ + static void convertAbsolute2DMY(MAPM absolute, MAPM& day, MAPM& month, MAPM& year); + + /** + * Returns the current date as an ATDateOrDerived + */ + static const ATDateOrDerived::Ptr getCurrentDate(const DynamicContext* context); + + /** + * Returns the current date and time as an ATDateTimeOrDerived + */ + static const ATDateTimeOrDerived::Ptr getCurrentDateTime(const DynamicContext* context); + + /** + * Returns the current time as an ATTimeOrDerived + */ + static const ATTimeOrDerived::Ptr getCurrentTime(const DynamicContext* context); + + static void initialize(); + static void terminate(); + static struct tm *threadsafe_localtime(const time_t *timep, struct tm *result); + static struct tm *threadsafe_gmtime(const time_t *timep, struct tm *result); +}; + +#endif // _DATEUTILS_HPP + diff --git a/src/utils/NumUtils.cpp b/src/utils/NumUtils.cpp new file mode 100644 index 00000000..528804a1 --- /dev/null +++ b/src/utils/NumUtils.cpp @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: NumUtils.cpp,v 1.7 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +int NumUtils::MAPMtoInt(MAPM m) { + char tmpout[1024]; + m.toIntegerString(tmpout); + int result = atoi(tmpout); + return result; +} + +double NumUtils::MAPMtoDouble(MAPM m) { + char tmpdouble[1024]; + m.toFixPtString(tmpdouble,1000); + double result = atof(tmpdouble); + return result; +} diff --git a/src/utils/PrintAST.cpp b/src/utils/PrintAST.cpp new file mode 100644 index 00000000..78b5924e --- /dev/null +++ b/src/utils/PrintAST.cpp @@ -0,0 +1,1577 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: PrintAST.cpp,v 1.15 2006/12/01 23:16:59 gmfeinberg Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +#include +#include + +#include "../dom-api/impl/XQillaExpressionImpl.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 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#if defined(XERCES_HAS_CPP_NAMESPACE) + XERCES_CPP_NAMESPACE_USE +#endif + +using namespace std; + +static const int INDENT = 1; + +string PrintAST::print(const XQillaExpression *expr, const DynamicContext *context, int indent) +{ + return print(((const XQillaExpressionImpl *)expr)->getCompiledExpression(), context, indent); +} + +string PrintAST::print(const XQQuery *query, const DynamicContext *context, int indent) +{ + ostringstream s; + + s << getIndent(indent) << "getIsLibraryModule()) { + s << " module=\"true\""; + } + if(query->getModuleTargetNamespace()) { + s << " targetNamespace=\"" << UTF8(query->getModuleTargetNamespace()) << "\""; + } + s << ">" << endl; + indent += INDENT; + + PrintAST p; + + for(std::vector >::const_iterator i = query->getFunctions().begin(); + i != query->getFunctions().end(); ++i) { + XQUserFunction *f = *i; + + const XMLCh *funUri = f->getURI(); + const XMLCh *funName = f->getName(); + + string name("{"); + name += UTF8(funUri); + name += "}:"; + name += UTF8(funName); + + s << " " << endl; + s << p.printASTNode(f->getFunctionBody(), context, 2); + s << " " << endl; + } + for(vector >::const_iterator it = query->getVariables().begin(); + it != query->getVariables().end(); ++it) { + s << p.printGlobal(*it, context, indent); + } + s << p.printASTNode(query->getQueryBody(), context, indent); + + indent -= INDENT; + s << getIndent(indent) << "" << endl; + + return s.str(); +} + +string PrintAST::print(const ASTNode *item, const DynamicContext *context, int indent) +{ + PrintAST p; + return p.printASTNode(item, context, indent); +} + +string PrintAST::printASTNode(const ASTNode *item, const DynamicContext *context, int indent) +{ + switch(item->getType()) { + case ASTNode::LITERAL: { + return printLiteral((XQLiteral *)item, context, indent); + break; + } + case ASTNode::SEQUENCE: { + return printSequence((XQSequence *)item, context, indent); + break; + } + case ASTNode::FUNCTION: { + return printFunction((XQFunction *)item, context, indent); + break; + } + case ASTNode::NAVIGATION: { + return printNav((XQNav *)item, context, indent); + break; + } + case ASTNode::VARIABLE: { + return printVariable((XQVariable *)item, context, indent); + break; + } + case ASTNode::STEP: { + return printStep((XQStep *)item, context, indent); + break; + } + case ASTNode::IF: { + return printIf((XQIf *)item, context, indent); + break; + } + case ASTNode::INSTANCE_OF: { + return printInstanceOf((XQInstanceOf *)item, context, indent); + break; + } + case ASTNode::CASTABLE_AS: { + return printCastableAs((XQCastableAs *)item, context, indent); + break; + } + case ASTNode::CAST_AS: { + return printCastAs((XQCastAs *)item, context, indent); + break; + } + case ASTNode::TREAT_AS: { + return printTreatAs((XQTreatAs *)item, context, indent); + break; + } + case ASTNode::PARENTHESIZED: { + return printParenthesized((XQParenthesizedExpr *)item, context, indent); + break; + } + case ASTNode::OPERATOR: { + return printOperator((XQOperator *)item, context, indent); + break; + } + case ASTNode::CONTEXT_ITEM: { + return printContextItem((XQContextItem *)item, context, indent); + break; + } + case ASTNode::DEBUG_HOOK: { + return printDebugHook((XQDebugHook *)item, context, indent); + break; + } + case ASTNode::FLWOR: { + return printFLWOR((XQFLWOR *)item, context, indent); + break; + } + case ASTNode::FLWOR_QUANTIFIED: { + return printFLWORQuantified((XQQuantified *)item, context, indent); + break; + } + case ASTNode::TYPESWITCH: { + return printTypeswitch((XQTypeswitch *)item, context, indent); + break; + } + case ASTNode::VALIDATE: { + return printValidate((XQValidate *)item, context, indent); + break; + } + case ASTNode::FUNCTION_CALL: { + return printFunctionCall((XQFunctionCall *)item, context, indent); + break; + } + case ASTNode::DOM_CONSTRUCTOR: { + return printDOMConstructor((XQDOMConstructor *)item, context, indent); + break; + } + case ASTNode::ORDERING_CHANGE: { + return printOrderingChange((XQOrderingChange *)item, context, indent); + break; + } + case ASTNode::ATOMIZE: { + return printAtomize((XQAtomize *)item, context, indent); + break; + } + case ASTNode::DOCUMENT_ORDER: { + return printDocumentOrder((XQDocumentOrder *)item, context, indent); + break; + } + case ASTNode::XPATH1_CONVERT: { + return printXPath1CompatConvertFunctionArg((XPath1CompatConvertFunctionArg *)item, context, indent); + break; + } + case ASTNode::PROMOTE_UNTYPED: { + return printPromoteUntyped((XQPromoteUntyped *)item, context, indent); + break; + } + case ASTNode::PROMOTE_NUMERIC: { + return printPromoteNumeric((XQPromoteNumeric *)item, context, indent); + break; + } + case ASTNode::PROMOTE_ANY_URI: { + return printPromoteAnyURI((XQPromoteAnyURI *)item, context, indent); + break; + } + case ASTNode::PREDICATE: { + return printPredicate((XQPredicate *)item, context, indent); + break; + } + case ASTNode::USER_FUNCTION: { + return printUserFunction((XQUserFunction::XQFunctionEvaluator *)item, context, indent); + break; + } + case ASTNode::FTCONTAINS: { + return printFTContains((FTContains *)item, context, indent); + break; + } + default: + break; + } + return getIndent(indent) + "\n"; +} + +string PrintAST::printFunction(const XQFunction *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + const XMLCh *funUri = item->getFunctionURI(); + const XMLCh *funName = item->getFunctionName(); + + string name("{"); + name += UTF8(funUri); + name += "}:"; + name += UTF8(funName); + + const VectorOfASTNodes &args = item->getArguments(); + if(args.empty()) { + s << in << "" << endl; + } + else { + s << in << "" << endl; + for(VectorOfASTNodes::const_iterator i = args.begin(); i != args.end(); ++i) { + s << printASTNode(*i, context, indent + INDENT); + } + s << in << "" << endl; + } + + return s.str(); +} + +string PrintAST::printOperator(const XQOperator *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + string name(UTF8(item->getOperatorName())); + if(name == "comp") { + name = getComparisonOperationName(((const GeneralComp *)item)->getOperation()); + } + + const VectorOfASTNodes &args = item->getArguments(); + if(args.empty()) { + s << in << "" << endl; + } + else { + s << in << "" << endl; + for(VectorOfASTNodes::const_iterator i = args.begin(); i != args.end(); ++i) { + s << printASTNode(*i, context, indent + INDENT); + } + s << in << "" << endl; + } + + return s.str(); +} + +string PrintAST::printContextItem(const XQContextItem *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printLiteral(const XQLiteral *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "" << endl; + s << in << " " << item->getItemConstructor()->asString(context) << endl; + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printNav(const XQNav *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + const XQNav::Steps &steps = item->getSteps(); + + s << in << "" << endl; + for(XQNav::Steps::const_iterator i = steps.begin(); i != steps.end(); ++i) { + s << printASTNode(i->step, context, indent + INDENT); + } + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printStep(const XQStep *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + const NodeTest *step = item->getNodeTest(); + + s << in << "getAxis()) << "\""; + + SequenceType::ItemType *type = step->getItemType(); + if(type == 0) { + if(step->getNamespaceWildcard()) { + s << " uri=\"*\""; + } + else { + if(step->getNodePrefix() != 0) { + s << " prefix=\"" << UTF8(step->getNodePrefix()) << "\""; + } + if(step->getNodeUri() != 0) { + s << " uri=\"" << UTF8(step->getNodeUri()) << "\""; + } + } + if(step->getNameWildcard()) { + s << " name=\"*\""; + } + else if(step->getNodeName() != 0) { + s << " name=\"" << UTF8(step->getNodeName()) << "\""; + } + + if(step->getTypeWildcard()) { + s << " nodeType=\"*\""; + } + else if(step->isNodeTypeSet()) { + s << " nodeType=\"" << UTF8(step->getNodeType()) << "\""; + } + } + + if(type != 0) { + s << ">" << endl; + if(type != 0) { + s << in << " " << endl; + } + s << in << "" << endl; + } + else { + s << "/>" << endl; + } + + return s.str(); +} + +string PrintAST::printParenthesized(const XQParenthesizedExpr *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + const VectorOfASTNodes &children = item->getChildren(); + + if(children.empty()) { + s << in << "" << endl; + } + else { + s << in << "" << endl; + for(VectorOfASTNodes::const_iterator i = children.begin(); i != children.end(); ++i) { + s << printASTNode(*i, context, indent + INDENT); + } + s << in << "" << endl; + } + + return s.str(); +} + +string PrintAST::printSequence(const XQSequence *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + const ItemConstructor::Vector &values = item->getItemConstructors(); + + if(values.empty()) { + s << in << "" << endl; + } + else { + s << in << "" << endl; + for(ItemConstructor::Vector::const_iterator i = values.begin(); i != values.end(); ++i) { + s << in << " " << (*i)->asString(context) << endl; + } + s << in << "" << endl; + } + + return s.str(); +} + +string PrintAST::printVariable(const XQVariable *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + string prefix(UTF8(item->getPrefix())); + string name(UTF8(item->getName())); + if(prefix != "") { + name = prefix + ":" + name; + } + + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printIf(const XQIf *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "" << endl; + s << in << " " << endl; + s << printASTNode(item->getTest(), context, indent + INDENT + INDENT); + s << in << " " << endl; + s << in << " " << endl; + s << printASTNode(item->getWhenTrue(), context, indent + INDENT + INDENT); + s << in << " " << endl; + s << in << " " << endl; + s << printASTNode(item->getWhenFalse(), context, indent + INDENT + INDENT); + s << in << " " << endl; + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printInstanceOf(const XQInstanceOf *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "" << endl; + s << printASTNode(item->getExpression(), context, indent + INDENT); + s << printSequenceType(item->getSequenceType(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printCastableAs(const XQCastableAs *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "" << endl; + s << printASTNode(item->getExpression(), context, indent + INDENT); + s << printSequenceType(item->getSequenceType(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printCastAs(const XQCastAs *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "" << endl; + s << printASTNode(item->getExpression(), context, indent + INDENT); + s << printSequenceType(item->getSequenceType(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printTreatAs(const XQTreatAs *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "" << endl; + s << printASTNode(item->getExpression(), context, indent + INDENT); + s << printSequenceType(item->getSequenceType(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printUserFunction(const XQUserFunction::XQFunctionEvaluator *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + const XMLCh *funUri = item->getFunctionURI(); + const XMLCh *funName = item->getFunctionName(); + + string name("{"); + name += UTF8(funUri); + name += "}:"; + name += UTF8(funName); + + const VectorOfASTNodes &args = item->getArguments(); + s << in << "" << endl; + + if(item->getFunctionDefinition()->getParams()) { + XQUserFunction::VectorOfFunctionParameters::const_iterator binding = item->getFunctionDefinition()->getParams()->begin(); + for(VectorOfASTNodes::const_iterator arg = args.begin(); arg != args.end() && binding != item->getFunctionDefinition()->getParams()->end(); ++arg, ++binding) { + if((*binding)->_qname) { + s << in << " _uri) << "}:" << UTF8((*binding)->_name) << "\">" << endl; + s << printASTNode(*arg, context, indent + INDENT + INDENT); + s << in << " " << endl; + } + } + } + + // We don't output the body, as it may result in an infinite loop + // for recursive user functions - jpcs +// s << in << " " << endl; +// s << printASTNode(item->getFunctionDefinition()->getFunctionBody(), context, indent + INDENT + INDENT); +// s << in << " " << endl; + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printDebugHook(const XQDebugHook *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + string functionName(UTF8(item->getFunctionName())); + string file(UTF8(item->getFile())); + + s << in << "getLine() << ":" + << item->getColumn() << "\">" << endl; + s << printASTNode(item->m_impl, context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printFLWOR(const XQFLWOR *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + const VectorOfVariableBinding *bindings = item->getBindings(); + const ASTNode *where = item->getWhereExpr(); + const XQSort *sort = item->getSort(); + + s << in << "" << endl; + for(VectorOfVariableBinding::const_iterator i = bindings->begin(); i != bindings->end(); ++i) { + s << printXQVariableBinding(*i, context, indent + INDENT); + } + if(where) { + s << in << " " << endl; + s << printASTNode(where, context, indent + INDENT + INDENT); + s << in << " " << endl; + } + if(sort) s << printSort(sort, context, indent + INDENT); + s << printASTNode(item->getReturnExpr(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printXQVariableBinding(const XQVariableBinding *binding, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + string type; + if(binding->_bindingType == XQVariableBinding::letBinding) { + type = "LetBinding"; + } + else { + type = "ForBinding"; + } + + s << in << "<" << type << " name=\"" << UTF8(binding->_variable); + if(binding->_positionalVariable) { + s << "\" at=\"" << UTF8(binding->_positionalVariable); + } + s << "\">" << endl; + s << printASTNode(binding->_allValues, context, indent + INDENT); + if(binding->_where) { + s << in << " " << endl; + s << printASTNode(binding->_where, context, indent + INDENT + INDENT); + s << in << " " << endl; + } + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printSort(const XQSort *sort, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + string type; + if(sort->getSortType() == XQSort::stable) { + type = "StableSort"; + } + else { + type = "Sort"; + } + + s << in << "<" << type << ">" << endl; + for(XQSort::VectorOfSortSpec::const_iterator it = sort->getSortSpecs()->begin(); + it != sort->getSortSpecs()->end(); ++it) { + s << in << " getModifier()) { + s << " modifier=\""; + bool addBar = false; + if((*it)->getModifier() & XQSort::SortSpec::ascending) { + s << "ascending"; + addBar = true; + } + if((*it)->getModifier() & XQSort::SortSpec::descending) { + if(addBar) s << "|"; + s << "descending"; + addBar = true; + } + if((*it)->getModifier() & XQSort::SortSpec::empty_greatest) { + if(addBar) s << "|"; + s << "empty_greatest"; + addBar = true; + } + if((*it)->getModifier() & XQSort::SortSpec::empty_least) { + if(addBar) s << "|"; + s << "empty_least"; + } + s << "\""; + } + if((*it)->getCollation() != 0 && *((*it)->getCollation()) != 0) { + s << " collation=\"" << UTF8((*it)->getCollation()) << "\""; + } + s << ">" << endl; + s << printASTNode((*it)->getExpression(), context, indent + INDENT + INDENT); + s << in << " " << endl; + } + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printFLWORQuantified(const XQQuantified *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + XQQuantified::QuantifierType type = item->getQuantifierType(); + string name(type == XQQuantified::some ? "SomeFLWOR" : "EveryFLWOR"); + + const VectorOfVariableBinding *bindings = item->getBindings(); + + s << in << "<" << name << ">" << endl; + for(VectorOfVariableBinding::const_iterator i = bindings->begin(); i != bindings->end(); ++i) { + s << printXQVariableBinding(*i, context, indent + INDENT); + } + s << printASTNode(item->getReturnExpr(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printTypeswitch(const XQTypeswitch *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + const XQTypeswitch::VectorOfClause *clauses = item->getClauses(); + + s << in << "" << endl; + s << printASTNode(item->getExpression(), context, indent + INDENT); + for(XQTypeswitch::VectorOfClause::const_iterator i = clauses->begin(); i != clauses->end(); ++i) { + s << printClause(*i, context, indent + INDENT); + } + s << printClause(item->getDefaultClause(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printClause(const XQTypeswitch::Clause *clause, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + if(clause->_type) { + s << in << "_variable) { + s << " name=\"" << UTF8(clause->_variable) << "\""; + } + s << ">" << endl; + s << printSequenceType(clause->_type, context, indent + INDENT); + s << printASTNode(clause->_expr, context, indent + INDENT); + s << in << "" << endl; + } + else { + s << in << "_variable) { + s << " name=\"" << UTF8(clause->_variable) << "\""; + } + s << ">" << endl; + s << printASTNode(clause->_expr, context, indent + INDENT); + s << in << "" << endl; + } + + return s.str(); +} + +string PrintAST::printValidate(const XQValidate *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "getValidationMode()) { + case DocumentCache::VALIDATION_STRICT: { + s << "strict"; + break; + } + case DocumentCache::VALIDATION_LAX: { + s << "lax"; + break; + } + } + s << "\">" << endl; + s << printASTNode(item->getExpression(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printGlobal(const XQGlobalVariable *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "getVariableName()); + if(item->isExternal()) { + s << " external=\"true\""; + } + if(item->getSequenceType() || item->getVariableExpr()) { + s << ">" << endl; + if(item->getSequenceType()) { + s << printSequenceType(item->getSequenceType(), context, indent + INDENT); + } + if(item->getVariableExpr()) { + s << printASTNode(item->getVariableExpr(), context, indent + INDENT); + } + s << in << "" << endl; + } + else { + s << "/>" << endl; + } + + return s.str(); +} + +string PrintAST::printFunctionCall(const XQFunctionCall *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + const XMLCh *funPre = item->getName()->getPrefix(); + const XMLCh *funName = item->getName()->getName(); + + string name; + name += UTF8(funPre); + name += ":"; + name += UTF8(funName); + + const VectorOfASTNodes &args = item->getArguments(); + if(args.empty()) { + s << in << "" << endl; + } + else { + s << in << "" << endl; + for(VectorOfASTNodes::const_iterator i = args.begin(); i != args.end(); ++i) { + s << printASTNode(*i, context, indent + INDENT); + } + s << in << "" << endl; + } + + return s.str(); +} + +string PrintAST::printDOMConstructor(const XQDOMConstructor *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "getNodeType()); + if(item->getName() || + (item->getAttributes() != 0 && !item->getAttributes()->empty()) || + (item->getChildren() != 0 && !item->getChildren()->empty())) { + s << "\">" << endl; + if(item->getName()) { + s << in << " " << endl; + s << printASTNode(item->getName(), context, indent + INDENT + INDENT); + s << in << " " << endl; + } + if(item->getAttributes() != 0 && !item->getAttributes()->empty()) { + s << in << " " << endl; + for(VectorOfASTNodes::const_iterator i = item->getAttributes()->begin(); + i != item->getAttributes()->end(); ++i) { + s << printASTNode(*i, context, indent + INDENT + INDENT); + } + s << in << " " << endl; + } + if(item->getChildren() != 0 && !item->getChildren()->empty()) { + s << in << " " << endl; + for(VectorOfASTNodes::const_iterator i = item->getChildren()->begin(); + i != item->getChildren()->end(); ++i) { + s << printASTNode(*i, context, indent + INDENT + INDENT); + } + s << in << " " << endl; + } + if(item->getValue() != 0) { + s << in << " " << endl; + s << printASTNode(item->getValue(), context, indent + INDENT + INDENT); + s << in << " " << endl; + } + s << in << "" << endl; + } + else { + s << "\"/>" << endl; + } + + return s.str(); +} + +string PrintAST::printOrderingChange(const XQOrderingChange *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "getOrderingValue() == StaticContext::ORDERING_ORDERED) + s << "ordered"; + else s << "unordered"; + s << "\">" << endl; + s << printASTNode(item->getExpr(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printFTContains(const FTContains *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "" << endl; + s << printASTNode(item->getArgument(), context, indent + INDENT); + s << printFTSelection(item->getSelection(), context, indent + INDENT); + if(item->getIgnore() != NULL) { + s << in << " " << endl; + s << printASTNode(item->getIgnore(), context, indent + INDENT + INDENT); + s << in << " " << endl; + } + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printFTSelection(const FTSelection *selection, const DynamicContext *context, int indent) +{ + switch(selection->getType()) { + case FTSelection::OR: { + return printFTOr((FTOr*)selection, context, indent); + break; + } + case FTSelection::AND: { + return printFTAnd((FTAnd*)selection, context, indent); + break; + } + case FTSelection::MILD_NOT: { + return printFTMildnot((FTMildnot*)selection, context, indent); + break; + } + case FTSelection::UNARY_NOT: { + return printFTUnaryNot((FTUnaryNot*)selection, context, indent); + break; + } + case FTSelection::WORDS: { + return printFTWords((FTWords*)selection, context, indent); + break; + } + case FTSelection::WORD: { + return printFTWord((FTWord*)selection, context, indent); + break; + } + case FTSelection::ORDER: { + return printFTOrder((FTOrder*)selection, context, indent); + break; + } + case FTSelection::DISTANCE: { + return printFTDistance((FTDistance*)selection, context, indent); + break; + } + case FTSelection::DISTANCE_LITERAL: { + return printFTDistanceLiteral((FTDistanceLiteral*)selection, context, indent); + break; + } + case FTSelection::SCOPE: { + return printFTScope((FTScope*)selection, context, indent); + break; + } + case FTSelection::CONTENT: { + return printFTContent((FTContent*)selection, context, indent); + break; + } + case FTSelection::WINDOW: { + return printFTWindow((FTWindow*)selection, context, indent); + break; + } + case FTSelection::WINDOW_LITERAL: { + return printFTWindowLiteral((FTWindowLiteral*)selection, context, indent); + break; + } + default: + break; + } + return getIndent(indent) + "\n"; +} + +string PrintAST::printFTWords(const FTWords *selection, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "getOption()) { + case FTWords::ANY: s << "any"; break; + case FTWords::ANY_WORD: s << "any word"; break; + case FTWords::ALL: s << "all"; break; + case FTWords::ALL_WORDS: s << "all words"; break; + case FTWords::PHRASE: s << "phrase"; break; + } + s << "\">" << endl; + s << printASTNode(selection->getExpr(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printFTWord(const FTWord *selection, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "" << UTF8(selection->getQueryString()) << "" << endl; + + return s.str(); +} + +string PrintAST::printFTOr(const FTOr *selection, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "" << endl; + for(VectorOfFTSelections::const_iterator i = selection->getArguments().begin(); + i != selection->getArguments().end(); ++i) { + s << printFTSelection(*i, context, indent + INDENT); + } + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printFTAnd(const FTAnd *selection, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "" << endl; + for(VectorOfFTSelections::const_iterator i = selection->getArguments().begin(); + i != selection->getArguments().end(); ++i) { + s << printFTSelection(*i, context, indent + INDENT); + } + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printFTMildnot(const FTMildnot *selection, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "" << endl; + s << printFTSelection(selection->getLeft(), context, indent + INDENT); + s << printFTSelection(selection->getRight(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printFTUnaryNot(const FTUnaryNot *selection, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "" << endl; + s << printFTSelection(selection->getArgument(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printFTOrder(const FTOrder *selection, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "" << endl; + s << printFTSelection(selection->getArgument(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printFTDistance(const FTDistance *selection, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "getUnit()) << "\">" << endl; + s << printFTSelection(selection->getArgument(), context, indent + INDENT); + s << printFTRange(selection->getRange(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printFTDistanceLiteral(const FTDistanceLiteral *selection, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "getType()) + << "\" distance=\"" << selection->getDistance(); + if(selection->getType() == FTRange::FROM_TO) { + s << "\" distance2=\"" << selection->getDistance2(); + } + s << "\" units=\"" << getFTUnitName(selection->getUnit()) << "\">" << endl; + s << printFTSelection(selection->getArgument(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printFTScope(const FTScope *selection, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "getType()) { + case FTScope::SAME: s << "same"; break; + case FTScope::DIFFERENT: s << "different"; break; + } + s << "\" units=\"" << getFTUnitName(selection->getUnit()) << "\">" << endl; + s << printFTSelection(selection->getArgument(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printFTContent(const FTContent *selection, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "getType()) { + case FTContent::AT_START: s << "at start"; break; + case FTContent::AT_END: s << "at end"; break; + case FTContent::ENTIRE_CONTENT: s << "entire content"; break; + } + s << "\">" << endl; + s << printFTSelection(selection->getArgument(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printFTWindow(const FTWindow *selection, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "getUnit()) << "\">" << endl; + s << printFTSelection(selection->getArgument(), context, indent + INDENT); + s << printASTNode(selection->getExpr(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printFTWindowLiteral(const FTWindowLiteral *selection, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "getDistance(); + s << "\" units=\"" << getFTUnitName(selection->getUnit()) << "\">" << endl; + s << printFTSelection(selection->getArgument(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printFTRange(const FTRange &range, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "" << endl; + s << printASTNode(range.arg1, context, indent + INDENT); + if(range.arg2 != 0) + s << printASTNode(range.arg2, context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::getFTRangeTypeName(FTRange::Type type) +{ + switch(type) { + case FTRange::EXACTLY: return "exactly"; + case FTRange::AT_LEAST: return "at least"; + case FTRange::AT_MOST: return "at most"; + case FTRange::FROM_TO: return "from to"; + } + return "unknown"; +} + +string PrintAST::getFTUnitName(FTOption::FTUnit unit) +{ + switch(unit) { + case FTOption::WORDS: return "words"; + case FTOption::SENTENCES: return "sentences"; + case FTOption::PARAGRAPHS: return "paragraphs"; + } + return "unknown"; +} + +string PrintAST::printAtomize(const XQAtomize *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "" << endl; + s << printASTNode(item->getExpression(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printDocumentOrder(const XQDocumentOrder *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + string name(item->getUnordered() ? "UniqueNodes" : "DocumentOrder"); + + s << in << "<" << name << ">" << endl; + s << printASTNode(item->getExpression(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printXPath1CompatConvertFunctionArg(const XPath1CompatConvertFunctionArg *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "" << endl; + s << printASTNode(item->getExpression(), context, indent + INDENT); + s << printSequenceType(item->getSequenceType(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printPromoteUntyped(const XQPromoteUntyped *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "getTypeURI()) + << "\" name=\"" << UTF8(item->getTypeName()) + << "\">" << endl; + s << printASTNode(item->getExpression(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printPromoteNumeric(const XQPromoteNumeric *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "getTypeURI()) + << "\" name=\"" << UTF8(item->getTypeName()) + << "\">" << endl; + s << printASTNode(item->getExpression(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printPromoteAnyURI(const XQPromoteAnyURI *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "getTypeURI()) + << "\" name=\"" << UTF8(item->getTypeName()) + << "\">" << endl; + s << printASTNode(item->getExpression(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printPredicate(const XQPredicate *item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "" << endl; + s << printASTNode(item->getExpression(), context, indent + INDENT); + s << printASTNode(item->getPredicate(), context, indent + INDENT); + s << in << "" << endl; + + return s.str(); +} + +string PrintAST::printSequenceType(const SequenceType *type, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + + s << in << "getOccurrenceIndicator()) << "\""; + s << printItemTypeAttrs(type->getItemType(), context); + s << "/>" << endl; + + return s.str(); +} + +string PrintAST::printItemTypeAttrs(const SequenceType::ItemType *type, const DynamicContext *context) +{ + if(type == 0) return " testType=\"empty\""; + + ostringstream s; + + s << " testType=\"" << getItemTestTypeName(type->getItemTestType()) << "\""; + + if(type->getAllowNilled()) { + s << " nil=\"true\""; + } + + try { + const XMLCh *nameURI = type->getNameURI((DynamicContext *)context, 0); + if(type->getName() != 0) { + s << " name=\"{" << UTF8(nameURI) + << "}:" << UTF8(type->getName()->getName()) << "\""; + } + else if(nameURI != 0) { + s << " nameURI=\"" << UTF8(nameURI) << "\""; + } + } + catch(const NamespaceLookupException &e) { + if(type->getName() != 0) { + s << " name=\"" << UTF8(type->getName()->getPrefix()) + << ":" << UTF8(type->getName()->getName()) << "\""; + } + } + + try { + const XMLCh *typeURI = type->getTypeURI((DynamicContext *)context, 0); + if(type->getType() != 0) { + s << " type=\"" << UTF8(typeURI) + << ":" << UTF8(type->getType()->getName()) << "\""; + } + else if(typeURI != 0) { + s << " typeURI=\"" << UTF8(typeURI) << "\""; + } + } + catch(const NamespaceLookupException &e) { + if(type->getType() != 0) { + s << " type=\"" << UTF8(type->getType()->getPrefix()) + << ":" << UTF8(type->getType()->getName()) << "\""; + } + } + + return s.str(); +} + +string PrintAST::printItem(const Item::Ptr item, const DynamicContext *context, int indent) +{ + ostringstream s; + + string in(getIndent(indent)); + string value(UTF8(item->asString(context))); + s << in << "isNode()) { + s << "node"; + } + else { + const AnyAtomicType::Ptr att = (const AnyAtomicType::Ptr )item; + s << "{" << UTF8(att->getTypeURI()) << "}:" + << UTF8(att->getTypeName()); + } + s << "\"/>" << endl; + + return s.str(); +} + +string PrintAST::getIndent(int indent) +{ + ostringstream s; + + for(int i = indent; i != 0; --i) { + s << " "; + } + + return s.str(); +} + +string PrintAST::getAxisName(XQStep::Axis axis) +{ + switch(axis) { + case XQStep::ANCESTOR: { + return "ancestor"; + } + case XQStep::ANCESTOR_OR_SELF: { + return "ancestor-or-self"; + } + case XQStep::ATTRIBUTE: { + return "attribute"; + } + case XQStep::CHILD: { + return "child"; + } + case XQStep::DESCENDANT: { + return "descendant"; + } + case XQStep::DESCENDANT_OR_SELF: { + return "descendant-or-self"; + } + case XQStep::FOLLOWING: { + return "following"; + } + case XQStep::FOLLOWING_SIBLING: { + return "following-sibling"; + } + case XQStep::NAMESPACE: { + return "namespace"; + } + case XQStep::PARENT: { + return "parent"; + } + case XQStep::PRECEDING: { + return "preceding"; + } + case XQStep::PRECEDING_SIBLING: { + return "preceding-sibling"; + } + case XQStep::SELF: { + return "self"; + } + default: { + return "unknown"; + } + } +} + +string PrintAST::getItemTestTypeName(int type) +{ + switch(type) { + case SequenceType::ItemType::TEST_ELEMENT: { + return "element"; + } + case SequenceType::ItemType::TEST_ATTRIBUTE: { + return "attribute"; + } + case SequenceType::ItemType::TEST_SCHEMA_ELEMENT: { + return "schema-element"; + } + case SequenceType::ItemType::TEST_SCHEMA_ATTRIBUTE: { + return "schema-attribute"; + } + case SequenceType::ItemType::TEST_NODE: { + return "node"; + } + case SequenceType::ItemType::TEST_PI: { + return "processing-instruction"; + } + case SequenceType::ItemType::TEST_COMMENT: { + return "comment"; + } + case SequenceType::ItemType::TEST_TEXT: { + return "text"; + } + case SequenceType::ItemType::TEST_DOCUMENT: { + return "document"; + } + case SequenceType::ItemType::TEST_ANYTHING: { + return "anything"; + } + case SequenceType::ItemType::TEST_ATOMIC_TYPE: { + return "atomic-type"; + } + default: { + return "unknown"; + } + } +} + +string PrintAST::getOccurrenceIndicatorName(SequenceType::OccurrenceIndicator oi) +{ + switch(oi) { + case SequenceType::EXACTLY_ONE: { + return "exactly_one"; + } + case SequenceType::STAR: { + return "zero_to_many"; + } + case SequenceType::PLUS: { + return "one_to_many"; + } + case SequenceType::QUESTION_MARK: { + return "zero_or_one"; + } + default: { + return "unknown"; + } + } +} + +string PrintAST::getComparisonOperationName(GeneralComp::ComparisonOperation co) +{ + switch(co) { + case GeneralComp::EQUAL: { + return "equal"; + } + case GeneralComp::NOT_EQUAL: { + return "not_equal"; + } + case GeneralComp::LESS_THAN: { + return "less_than"; + } + case GeneralComp::LESS_THAN_EQUAL: { + return "less_than_equal"; + } + case GeneralComp::GREATER_THAN: { + return "greater_than"; + } + case GeneralComp::GREATER_THAN_EQUAL: { + return "greater_than_equal"; + } + default: { + return "unknown"; + } + } +} diff --git a/src/utils/UCANormalizer.cpp b/src/utils/UCANormalizer.cpp new file mode 100644 index 00000000..667639b5 --- /dev/null +++ b/src/utils/UCANormalizer.cpp @@ -0,0 +1,329 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: UCANormalizer.cpp,v 1.2 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include + +#define NO_COMPOSITION 0xFFFFFFFF + +using namespace std; +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif + +void NormalizeTransform::pushChar(unsigned int ch) +{ + if(ch == 0) { + composeCache(); + dest_->pushChar(ch); + } + else { + getRecursiveDecomposition(ch); + } +} + +void NormalizeTransform::getRecursiveDecomposition(unsigned int ch) +{ + unsigned int *decomp = getDecomposition(ch); + if(decomp != 0) { + for(; *decomp != 0; ++decomp) + getRecursiveDecomposition(*decomp); + } + else if(!decomposeHangul(ch)) { + unsigned int chClass = getCanonicalCombiningClass(ch); + if(chClass != 0) { + if(cache_.empty()) { + cache_.push_back(ch); + } + else { + // Find the correct position for the combining char + vector::iterator begin = cache_.begin(); + vector::iterator pos = cache_.end(); + while(pos != begin) { + --pos; + if(getCanonicalCombiningClass(*pos) <= chClass) { + ++pos; + break; + } + } + cache_.insert(pos, ch); + } + } + else { + composeCache(); + cache_.push_back(ch); + } + } +} + +// Performs composition on the cached characters if required, +// and sends them to the destination +void NormalizeTransform::composeCache() +{ + if(cache_.empty()) return; + + vector::iterator starterPos = cache_.begin(); + vector::iterator end = cache_.end(); + unsigned int starterCh = *starterPos; + int lastClass = getCanonicalCombiningClass(starterCh); + + if(!compose_ || lastClass != 0) { + // Unbuffer the chars in the cache + for(; starterPos != end; ++starterPos) { + dest_->pushChar(*starterPos); + } + } + else { + vector::iterator target = starterPos; + ++target; + + // Loop on the decomposed characters, combining where possible + for(vector::iterator source = target; source != end; ++source) { + unsigned int ch = *source; + + int chClass = getCanonicalCombiningClass(ch); + if(lastClass < chClass) { + + unsigned int composite = getComposition(starterCh, ch); + if(composite == NO_COMPOSITION) + composite = composeHangul(starterCh, ch); + + if(composite != NO_COMPOSITION) { + *starterPos = composite; + starterCh = composite; + continue; + } + } + else { + lastClass = chClass; + *target++ = ch; + } + } + + for(starterPos = cache_.begin(); starterPos != target; ++starterPos) { + dest_->pushChar(*starterPos); + } + } + + cache_.clear(); +} + +// Hangul constants +static const unsigned int SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161, TBase = 0x11A7, + LCount = 19, VCount = 21, TCount = 28, + NCount = VCount * TCount, // 588 + SCount = LCount * NCount; // 11172 + +bool NormalizeTransform::decomposeHangul(unsigned int s) +{ + if(s < SBase) return false; + + unsigned int SIndex = s - SBase; + if(SIndex >= SCount) return false; + + unsigned int l = LBase + SIndex / NCount; + getRecursiveDecomposition(l); + + unsigned int v = VBase + (SIndex % NCount) / TCount; + getRecursiveDecomposition(v); + + unsigned int t = TBase + SIndex % TCount; + if(t != TBase) + getRecursiveDecomposition(t); + + return true; +} + +unsigned int NormalizeTransform::composeHangul(unsigned int first, unsigned int second) +{ + // 1. check to see if two current characters are L and V + if(first >= LBase && second >= VBase) { + unsigned int LIndex = first - LBase; + unsigned int VIndex = second - VBase; + if(LIndex < LCount && VIndex < VCount) { + // make syllable of form LV + return SBase + (LIndex * VCount + VIndex) * TCount; + } + } + + // 2. check to see if two current characters are LV and T + if(first >= SBase && second > TBase) { + unsigned int SIndex = first - SBase; + unsigned int TIndex = second - TBase; + if(SIndex < SCount && (SIndex % TCount) == 0 && TIndex < TCount) { + // make syllable of form LVT + return first + TIndex; + } + } + + return NO_COMPOSITION; +} + +void RemoveDiacriticsTransform::pushChar(unsigned int ch) +{ + if(ch == 0 || !isDiacritic(ch)) { + dest_->pushChar(ch); + } +} + +void CaseFoldTransform::pushChar(unsigned int ch) +{ + if(ch != 0) { + unsigned int *value = getCaseFold(ch); + if(value != 0) { + while(*value != 0) { + dest_->pushChar(*value); + ++value; + } + return; + } + } + + dest_->pushChar(ch); +} + +void LowerCaseTransform::pushChar(unsigned int ch) +{ + if(ch != 0) { + unsigned int *value = getLowerCase(ch); + if(value != 0) { + while(*value != 0) { + dest_->pushChar(*value); + ++value; + } + return; + } + } + + dest_->pushChar(ch); +} + +void UpperCaseTransform::pushChar(unsigned int ch) +{ + if(ch != 0) { + unsigned int *value = getUpperCase(ch); + if(value != 0) { + while(*value != 0) { + dest_->pushChar(*value); + ++value; + } + return; + } + } + + dest_->pushChar(ch); +} + +void XMLBufferTransform::pushChar(unsigned int ch) +{ + if(!(ch & 0xFFFF0000)) { + if(ch != 0) + buffer_.append((XMLCh)ch); + } + else { + assert(ch <= 0x10FFFF); + + // Store the leading surrogate char + ch -= 0x10000; + buffer_.append((XMLCh)((ch >> 10) | 0xD800)); + + // the trailing char + buffer_.append((XMLCh)((ch & 0x3FF) | 0xDC00)); + } +} + +void StringTransformer::transformUTF16(const XMLCh *source, StringTransform *transform) +{ + while(*source != 0) { + unsigned int ch = *source; + ++source; + + if((ch & 0xDC00) == 0xD800) { + if(*source == 0) break; + ch = ((ch & 0x3FF) << 10) | (*source & 0x3FF); + ch += 0x10000; + ++source; + } + + transform->pushChar(ch); + } + transform->pushChar(0); +} + +void Normalizer::normalizeC(const XMLCh* source, XMLBuffer &dest) +{ + XMLBufferTransform buf(dest); + NormalizeTransform normalize(true, true, &buf); + StringTransformer::transformUTF16(source, &normalize); +} + +void Normalizer::normalizeD(const XMLCh* source, XMLBuffer &dest) +{ + XMLBufferTransform buf(dest); + NormalizeTransform normalize(true, false, &buf); + StringTransformer::transformUTF16(source, &normalize); +} + +void Normalizer::normalizeKC(const XMLCh* source, XMLBuffer &dest) +{ + XMLBufferTransform buf(dest); + NormalizeTransform normalize(false, true, &buf); + StringTransformer::transformUTF16(source, &normalize); +} + +void Normalizer::normalizeKD(const XMLCh* source, XMLBuffer &dest) +{ + XMLBufferTransform buf(dest); + NormalizeTransform normalize(false, false, &buf); + StringTransformer::transformUTF16(source, &normalize); +} + +void Normalizer::removeDiacritics(const XMLCh* source, XMLBuffer &dest) +{ + XMLBufferTransform buf(dest); + RemoveDiacriticsTransform diacritics(&buf); + NormalizeTransform normalize(true, false, &diacritics); + StringTransformer::transformUTF16(source, &normalize); +} + +void Normalizer::caseFold(const XMLCh* source, XMLBuffer &dest) +{ + XMLBufferTransform buf(dest); + CaseFoldTransform caseFold(&buf); + StringTransformer::transformUTF16(source, &caseFold); +} + +void Normalizer::caseFoldAndRemoveDiacritics(const XMLCh* source, XMLBuffer &dest) +{ + XMLBufferTransform buf(dest); + CaseFoldTransform caseFold(&buf); + RemoveDiacriticsTransform diacritics(&caseFold); + NormalizeTransform normalize(true, false, &diacritics); + StringTransformer::transformUTF16(source, &normalize); +} + +void Normalizer::lowerCase(const XMLCh* source, XMLBuffer &dest) +{ + XMLBufferTransform buf(dest); + LowerCaseTransform caseFold(&buf); + StringTransformer::transformUTF16(source, &caseFold); +} + +void Normalizer::upperCase(const XMLCh* source, XMLBuffer &dest) +{ + XMLBufferTransform buf(dest); + UpperCaseTransform caseFold(&buf); + StringTransformer::transformUTF16(source, &caseFold); +} diff --git a/src/utils/UCANormalizer1.cpp b/src/utils/UCANormalizer1.cpp new file mode 100644 index 00000000..15d36412 --- /dev/null +++ b/src/utils/UCANormalizer1.cpp @@ -0,0 +1,7103 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: UCANormalizer1.cpp,v 1.2 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +static unsigned int de000A0[] = { 0x00020, 0x00000 }; +static unsigned int de000A8[] = { 0x00020, 0x00308, 0x00000 }; +static unsigned int de000AA[] = { 0x00061, 0x00000 }; +static unsigned int de000AF[] = { 0x00020, 0x00304, 0x00000 }; +static unsigned int de000B2[] = { 0x00032, 0x00000 }; +static unsigned int de000B3[] = { 0x00033, 0x00000 }; +static unsigned int de000B4[] = { 0x00020, 0x00301, 0x00000 }; +static unsigned int de000B5[] = { 0x003BC, 0x00000 }; +static unsigned int de000B8[] = { 0x00020, 0x00327, 0x00000 }; +static unsigned int de000B9[] = { 0x00031, 0x00000 }; +static unsigned int de000BA[] = { 0x0006F, 0x00000 }; +static unsigned int de000BC[] = { 0x00031, 0x02044, 0x00034, 0x00000 }; +static unsigned int de000BD[] = { 0x00031, 0x02044, 0x00032, 0x00000 }; +static unsigned int de000BE[] = { 0x00033, 0x02044, 0x00034, 0x00000 }; +static unsigned int de000C0[] = { 0x00041, 0x00300, 0x00000 }; +static unsigned int de000C1[] = { 0x00041, 0x00301, 0x00000 }; +static unsigned int de000C2[] = { 0x00041, 0x00302, 0x00000 }; +static unsigned int de000C3[] = { 0x00041, 0x00303, 0x00000 }; +static unsigned int de000C4[] = { 0x00041, 0x00308, 0x00000 }; +static unsigned int de000C5[] = { 0x00041, 0x0030A, 0x00000 }; +static unsigned int de000C7[] = { 0x00043, 0x00327, 0x00000 }; +static unsigned int de000C8[] = { 0x00045, 0x00300, 0x00000 }; +static unsigned int de000C9[] = { 0x00045, 0x00301, 0x00000 }; +static unsigned int de000CA[] = { 0x00045, 0x00302, 0x00000 }; +static unsigned int de000CB[] = { 0x00045, 0x00308, 0x00000 }; +static unsigned int de000CC[] = { 0x00049, 0x00300, 0x00000 }; +static unsigned int de000CD[] = { 0x00049, 0x00301, 0x00000 }; +static unsigned int de000CE[] = { 0x00049, 0x00302, 0x00000 }; +static unsigned int de000CF[] = { 0x00049, 0x00308, 0x00000 }; +static unsigned int de000D1[] = { 0x0004E, 0x00303, 0x00000 }; +static unsigned int de000D2[] = { 0x0004F, 0x00300, 0x00000 }; +static unsigned int de000D3[] = { 0x0004F, 0x00301, 0x00000 }; +static unsigned int de000D4[] = { 0x0004F, 0x00302, 0x00000 }; +static unsigned int de000D5[] = { 0x0004F, 0x00303, 0x00000 }; +static unsigned int de000D6[] = { 0x0004F, 0x00308, 0x00000 }; +static unsigned int de000D9[] = { 0x00055, 0x00300, 0x00000 }; +static unsigned int de000DA[] = { 0x00055, 0x00301, 0x00000 }; +static unsigned int de000DB[] = { 0x00055, 0x00302, 0x00000 }; +static unsigned int de000DC[] = { 0x00055, 0x00308, 0x00000 }; +static unsigned int de000DD[] = { 0x00059, 0x00301, 0x00000 }; +static unsigned int de000E0[] = { 0x00061, 0x00300, 0x00000 }; +static unsigned int de000E1[] = { 0x00061, 0x00301, 0x00000 }; +static unsigned int de000E2[] = { 0x00061, 0x00302, 0x00000 }; +static unsigned int de000E3[] = { 0x00061, 0x00303, 0x00000 }; +static unsigned int de000E4[] = { 0x00061, 0x00308, 0x00000 }; +static unsigned int de000E5[] = { 0x00061, 0x0030A, 0x00000 }; +static unsigned int de000E7[] = { 0x00063, 0x00327, 0x00000 }; +static unsigned int de000E8[] = { 0x00065, 0x00300, 0x00000 }; +static unsigned int de000E9[] = { 0x00065, 0x00301, 0x00000 }; +static unsigned int de000EA[] = { 0x00065, 0x00302, 0x00000 }; +static unsigned int de000EB[] = { 0x00065, 0x00308, 0x00000 }; +static unsigned int de000EC[] = { 0x00069, 0x00300, 0x00000 }; +static unsigned int de000ED[] = { 0x00069, 0x00301, 0x00000 }; +static unsigned int de000EE[] = { 0x00069, 0x00302, 0x00000 }; +static unsigned int de000EF[] = { 0x00069, 0x00308, 0x00000 }; +static unsigned int de000F1[] = { 0x0006E, 0x00303, 0x00000 }; +static unsigned int de000F2[] = { 0x0006F, 0x00300, 0x00000 }; +static unsigned int de000F3[] = { 0x0006F, 0x00301, 0x00000 }; +static unsigned int de000F4[] = { 0x0006F, 0x00302, 0x00000 }; +static unsigned int de000F5[] = { 0x0006F, 0x00303, 0x00000 }; +static unsigned int de000F6[] = { 0x0006F, 0x00308, 0x00000 }; +static unsigned int de000F9[] = { 0x00075, 0x00300, 0x00000 }; +static unsigned int de000FA[] = { 0x00075, 0x00301, 0x00000 }; +static unsigned int de000FB[] = { 0x00075, 0x00302, 0x00000 }; +static unsigned int de000FC[] = { 0x00075, 0x00308, 0x00000 }; +static unsigned int de000FD[] = { 0x00079, 0x00301, 0x00000 }; +static unsigned int de000FF[] = { 0x00079, 0x00308, 0x00000 }; +static unsigned int de00100[] = { 0x00041, 0x00304, 0x00000 }; +static unsigned int de00101[] = { 0x00061, 0x00304, 0x00000 }; +static unsigned int de00102[] = { 0x00041, 0x00306, 0x00000 }; +static unsigned int de00103[] = { 0x00061, 0x00306, 0x00000 }; +static unsigned int de00104[] = { 0x00041, 0x00328, 0x00000 }; +static unsigned int de00105[] = { 0x00061, 0x00328, 0x00000 }; +static unsigned int de00106[] = { 0x00043, 0x00301, 0x00000 }; +static unsigned int de00107[] = { 0x00063, 0x00301, 0x00000 }; +static unsigned int de00108[] = { 0x00043, 0x00302, 0x00000 }; +static unsigned int de00109[] = { 0x00063, 0x00302, 0x00000 }; +static unsigned int de0010A[] = { 0x00043, 0x00307, 0x00000 }; +static unsigned int de0010B[] = { 0x00063, 0x00307, 0x00000 }; +static unsigned int de0010C[] = { 0x00043, 0x0030C, 0x00000 }; +static unsigned int de0010D[] = { 0x00063, 0x0030C, 0x00000 }; +static unsigned int de0010E[] = { 0x00044, 0x0030C, 0x00000 }; +static unsigned int de0010F[] = { 0x00064, 0x0030C, 0x00000 }; +static unsigned int de00112[] = { 0x00045, 0x00304, 0x00000 }; +static unsigned int de00113[] = { 0x00065, 0x00304, 0x00000 }; +static unsigned int de00114[] = { 0x00045, 0x00306, 0x00000 }; +static unsigned int de00115[] = { 0x00065, 0x00306, 0x00000 }; +static unsigned int de00116[] = { 0x00045, 0x00307, 0x00000 }; +static unsigned int de00117[] = { 0x00065, 0x00307, 0x00000 }; +static unsigned int de00118[] = { 0x00045, 0x00328, 0x00000 }; +static unsigned int de00119[] = { 0x00065, 0x00328, 0x00000 }; +static unsigned int de0011A[] = { 0x00045, 0x0030C, 0x00000 }; +static unsigned int de0011B[] = { 0x00065, 0x0030C, 0x00000 }; +static unsigned int de0011C[] = { 0x00047, 0x00302, 0x00000 }; +static unsigned int de0011D[] = { 0x00067, 0x00302, 0x00000 }; +static unsigned int de0011E[] = { 0x00047, 0x00306, 0x00000 }; +static unsigned int de0011F[] = { 0x00067, 0x00306, 0x00000 }; +static unsigned int de00120[] = { 0x00047, 0x00307, 0x00000 }; +static unsigned int de00121[] = { 0x00067, 0x00307, 0x00000 }; +static unsigned int de00122[] = { 0x00047, 0x00327, 0x00000 }; +static unsigned int de00123[] = { 0x00067, 0x00327, 0x00000 }; +static unsigned int de00124[] = { 0x00048, 0x00302, 0x00000 }; +static unsigned int de00125[] = { 0x00068, 0x00302, 0x00000 }; +static unsigned int de00128[] = { 0x00049, 0x00303, 0x00000 }; +static unsigned int de00129[] = { 0x00069, 0x00303, 0x00000 }; +static unsigned int de0012A[] = { 0x00049, 0x00304, 0x00000 }; +static unsigned int de0012B[] = { 0x00069, 0x00304, 0x00000 }; +static unsigned int de0012C[] = { 0x00049, 0x00306, 0x00000 }; +static unsigned int de0012D[] = { 0x00069, 0x00306, 0x00000 }; +static unsigned int de0012E[] = { 0x00049, 0x00328, 0x00000 }; +static unsigned int de0012F[] = { 0x00069, 0x00328, 0x00000 }; +static unsigned int de00130[] = { 0x00049, 0x00307, 0x00000 }; +static unsigned int de00132[] = { 0x00049, 0x0004A, 0x00000 }; +static unsigned int de00133[] = { 0x00069, 0x0006A, 0x00000 }; +static unsigned int de00134[] = { 0x0004A, 0x00302, 0x00000 }; +static unsigned int de00135[] = { 0x0006A, 0x00302, 0x00000 }; +static unsigned int de00136[] = { 0x0004B, 0x00327, 0x00000 }; +static unsigned int de00137[] = { 0x0006B, 0x00327, 0x00000 }; +static unsigned int de00139[] = { 0x0004C, 0x00301, 0x00000 }; +static unsigned int de0013A[] = { 0x0006C, 0x00301, 0x00000 }; +static unsigned int de0013B[] = { 0x0004C, 0x00327, 0x00000 }; +static unsigned int de0013C[] = { 0x0006C, 0x00327, 0x00000 }; +static unsigned int de0013D[] = { 0x0004C, 0x0030C, 0x00000 }; +static unsigned int de0013E[] = { 0x0006C, 0x0030C, 0x00000 }; +static unsigned int de0013F[] = { 0x0004C, 0x000B7, 0x00000 }; +static unsigned int de00140[] = { 0x0006C, 0x000B7, 0x00000 }; +static unsigned int de00143[] = { 0x0004E, 0x00301, 0x00000 }; +static unsigned int de00144[] = { 0x0006E, 0x00301, 0x00000 }; +static unsigned int de00145[] = { 0x0004E, 0x00327, 0x00000 }; +static unsigned int de00146[] = { 0x0006E, 0x00327, 0x00000 }; +static unsigned int de00147[] = { 0x0004E, 0x0030C, 0x00000 }; +static unsigned int de00148[] = { 0x0006E, 0x0030C, 0x00000 }; +static unsigned int de00149[] = { 0x002BC, 0x0006E, 0x00000 }; +static unsigned int de0014C[] = { 0x0004F, 0x00304, 0x00000 }; +static unsigned int de0014D[] = { 0x0006F, 0x00304, 0x00000 }; +static unsigned int de0014E[] = { 0x0004F, 0x00306, 0x00000 }; +static unsigned int de0014F[] = { 0x0006F, 0x00306, 0x00000 }; +static unsigned int de00150[] = { 0x0004F, 0x0030B, 0x00000 }; +static unsigned int de00151[] = { 0x0006F, 0x0030B, 0x00000 }; +static unsigned int de00154[] = { 0x00052, 0x00301, 0x00000 }; +static unsigned int de00155[] = { 0x00072, 0x00301, 0x00000 }; +static unsigned int de00156[] = { 0x00052, 0x00327, 0x00000 }; +static unsigned int de00157[] = { 0x00072, 0x00327, 0x00000 }; +static unsigned int de00158[] = { 0x00052, 0x0030C, 0x00000 }; +static unsigned int de00159[] = { 0x00072, 0x0030C, 0x00000 }; +static unsigned int de0015A[] = { 0x00053, 0x00301, 0x00000 }; +static unsigned int de0015B[] = { 0x00073, 0x00301, 0x00000 }; +static unsigned int de0015C[] = { 0x00053, 0x00302, 0x00000 }; +static unsigned int de0015D[] = { 0x00073, 0x00302, 0x00000 }; +static unsigned int de0015E[] = { 0x00053, 0x00327, 0x00000 }; +static unsigned int de0015F[] = { 0x00073, 0x00327, 0x00000 }; +static unsigned int de00160[] = { 0x00053, 0x0030C, 0x00000 }; +static unsigned int de00161[] = { 0x00073, 0x0030C, 0x00000 }; +static unsigned int de00162[] = { 0x00054, 0x00327, 0x00000 }; +static unsigned int de00163[] = { 0x00074, 0x00327, 0x00000 }; +static unsigned int de00164[] = { 0x00054, 0x0030C, 0x00000 }; +static unsigned int de00165[] = { 0x00074, 0x0030C, 0x00000 }; +static unsigned int de00168[] = { 0x00055, 0x00303, 0x00000 }; +static unsigned int de00169[] = { 0x00075, 0x00303, 0x00000 }; +static unsigned int de0016A[] = { 0x00055, 0x00304, 0x00000 }; +static unsigned int de0016B[] = { 0x00075, 0x00304, 0x00000 }; +static unsigned int de0016C[] = { 0x00055, 0x00306, 0x00000 }; +static unsigned int de0016D[] = { 0x00075, 0x00306, 0x00000 }; +static unsigned int de0016E[] = { 0x00055, 0x0030A, 0x00000 }; +static unsigned int de0016F[] = { 0x00075, 0x0030A, 0x00000 }; +static unsigned int de00170[] = { 0x00055, 0x0030B, 0x00000 }; +static unsigned int de00171[] = { 0x00075, 0x0030B, 0x00000 }; +static unsigned int de00172[] = { 0x00055, 0x00328, 0x00000 }; +static unsigned int de00173[] = { 0x00075, 0x00328, 0x00000 }; +static unsigned int de00174[] = { 0x00057, 0x00302, 0x00000 }; +static unsigned int de00175[] = { 0x00077, 0x00302, 0x00000 }; +static unsigned int de00176[] = { 0x00059, 0x00302, 0x00000 }; +static unsigned int de00177[] = { 0x00079, 0x00302, 0x00000 }; +static unsigned int de00178[] = { 0x00059, 0x00308, 0x00000 }; +static unsigned int de00179[] = { 0x0005A, 0x00301, 0x00000 }; +static unsigned int de0017A[] = { 0x0007A, 0x00301, 0x00000 }; +static unsigned int de0017B[] = { 0x0005A, 0x00307, 0x00000 }; +static unsigned int de0017C[] = { 0x0007A, 0x00307, 0x00000 }; +static unsigned int de0017D[] = { 0x0005A, 0x0030C, 0x00000 }; +static unsigned int de0017E[] = { 0x0007A, 0x0030C, 0x00000 }; +static unsigned int de0017F[] = { 0x00073, 0x00000 }; +static unsigned int de001A0[] = { 0x0004F, 0x0031B, 0x00000 }; +static unsigned int de001A1[] = { 0x0006F, 0x0031B, 0x00000 }; +static unsigned int de001AF[] = { 0x00055, 0x0031B, 0x00000 }; +static unsigned int de001B0[] = { 0x00075, 0x0031B, 0x00000 }; +static unsigned int de001C4[] = { 0x00044, 0x0017D, 0x00000 }; +static unsigned int de001C5[] = { 0x00044, 0x0017E, 0x00000 }; +static unsigned int de001C6[] = { 0x00064, 0x0017E, 0x00000 }; +static unsigned int de001C7[] = { 0x0004C, 0x0004A, 0x00000 }; +static unsigned int de001C8[] = { 0x0004C, 0x0006A, 0x00000 }; +static unsigned int de001C9[] = { 0x0006C, 0x0006A, 0x00000 }; +static unsigned int de001CA[] = { 0x0004E, 0x0004A, 0x00000 }; +static unsigned int de001CB[] = { 0x0004E, 0x0006A, 0x00000 }; +static unsigned int de001CC[] = { 0x0006E, 0x0006A, 0x00000 }; +static unsigned int de001CD[] = { 0x00041, 0x0030C, 0x00000 }; +static unsigned int de001CE[] = { 0x00061, 0x0030C, 0x00000 }; +static unsigned int de001CF[] = { 0x00049, 0x0030C, 0x00000 }; +static unsigned int de001D0[] = { 0x00069, 0x0030C, 0x00000 }; +static unsigned int de001D1[] = { 0x0004F, 0x0030C, 0x00000 }; +static unsigned int de001D2[] = { 0x0006F, 0x0030C, 0x00000 }; +static unsigned int de001D3[] = { 0x00055, 0x0030C, 0x00000 }; +static unsigned int de001D4[] = { 0x00075, 0x0030C, 0x00000 }; +static unsigned int de001D5[] = { 0x000DC, 0x00304, 0x00000 }; +static unsigned int de001D6[] = { 0x000FC, 0x00304, 0x00000 }; +static unsigned int de001D7[] = { 0x000DC, 0x00301, 0x00000 }; +static unsigned int de001D8[] = { 0x000FC, 0x00301, 0x00000 }; +static unsigned int de001D9[] = { 0x000DC, 0x0030C, 0x00000 }; +static unsigned int de001DA[] = { 0x000FC, 0x0030C, 0x00000 }; +static unsigned int de001DB[] = { 0x000DC, 0x00300, 0x00000 }; +static unsigned int de001DC[] = { 0x000FC, 0x00300, 0x00000 }; +static unsigned int de001DE[] = { 0x000C4, 0x00304, 0x00000 }; +static unsigned int de001DF[] = { 0x000E4, 0x00304, 0x00000 }; +static unsigned int de001E0[] = { 0x00226, 0x00304, 0x00000 }; +static unsigned int de001E1[] = { 0x00227, 0x00304, 0x00000 }; +static unsigned int de001E2[] = { 0x000C6, 0x00304, 0x00000 }; +static unsigned int de001E3[] = { 0x000E6, 0x00304, 0x00000 }; +static unsigned int de001E6[] = { 0x00047, 0x0030C, 0x00000 }; +static unsigned int de001E7[] = { 0x00067, 0x0030C, 0x00000 }; +static unsigned int de001E8[] = { 0x0004B, 0x0030C, 0x00000 }; +static unsigned int de001E9[] = { 0x0006B, 0x0030C, 0x00000 }; +static unsigned int de001EA[] = { 0x0004F, 0x00328, 0x00000 }; +static unsigned int de001EB[] = { 0x0006F, 0x00328, 0x00000 }; +static unsigned int de001EC[] = { 0x001EA, 0x00304, 0x00000 }; +static unsigned int de001ED[] = { 0x001EB, 0x00304, 0x00000 }; +static unsigned int de001EE[] = { 0x001B7, 0x0030C, 0x00000 }; +static unsigned int de001EF[] = { 0x00292, 0x0030C, 0x00000 }; +static unsigned int de001F0[] = { 0x0006A, 0x0030C, 0x00000 }; +static unsigned int de001F1[] = { 0x00044, 0x0005A, 0x00000 }; +static unsigned int de001F2[] = { 0x00044, 0x0007A, 0x00000 }; +static unsigned int de001F3[] = { 0x00064, 0x0007A, 0x00000 }; +static unsigned int de001F4[] = { 0x00047, 0x00301, 0x00000 }; +static unsigned int de001F5[] = { 0x00067, 0x00301, 0x00000 }; +static unsigned int de001F8[] = { 0x0004E, 0x00300, 0x00000 }; +static unsigned int de001F9[] = { 0x0006E, 0x00300, 0x00000 }; +static unsigned int de001FA[] = { 0x000C5, 0x00301, 0x00000 }; +static unsigned int de001FB[] = { 0x000E5, 0x00301, 0x00000 }; +static unsigned int de001FC[] = { 0x000C6, 0x00301, 0x00000 }; +static unsigned int de001FD[] = { 0x000E6, 0x00301, 0x00000 }; +static unsigned int de001FE[] = { 0x000D8, 0x00301, 0x00000 }; +static unsigned int de001FF[] = { 0x000F8, 0x00301, 0x00000 }; +static unsigned int de00200[] = { 0x00041, 0x0030F, 0x00000 }; +static unsigned int de00201[] = { 0x00061, 0x0030F, 0x00000 }; +static unsigned int de00202[] = { 0x00041, 0x00311, 0x00000 }; +static unsigned int de00203[] = { 0x00061, 0x00311, 0x00000 }; +static unsigned int de00204[] = { 0x00045, 0x0030F, 0x00000 }; +static unsigned int de00205[] = { 0x00065, 0x0030F, 0x00000 }; +static unsigned int de00206[] = { 0x00045, 0x00311, 0x00000 }; +static unsigned int de00207[] = { 0x00065, 0x00311, 0x00000 }; +static unsigned int de00208[] = { 0x00049, 0x0030F, 0x00000 }; +static unsigned int de00209[] = { 0x00069, 0x0030F, 0x00000 }; +static unsigned int de0020A[] = { 0x00049, 0x00311, 0x00000 }; +static unsigned int de0020B[] = { 0x00069, 0x00311, 0x00000 }; +static unsigned int de0020C[] = { 0x0004F, 0x0030F, 0x00000 }; +static unsigned int de0020D[] = { 0x0006F, 0x0030F, 0x00000 }; +static unsigned int de0020E[] = { 0x0004F, 0x00311, 0x00000 }; +static unsigned int de0020F[] = { 0x0006F, 0x00311, 0x00000 }; +static unsigned int de00210[] = { 0x00052, 0x0030F, 0x00000 }; +static unsigned int de00211[] = { 0x00072, 0x0030F, 0x00000 }; +static unsigned int de00212[] = { 0x00052, 0x00311, 0x00000 }; +static unsigned int de00213[] = { 0x00072, 0x00311, 0x00000 }; +static unsigned int de00214[] = { 0x00055, 0x0030F, 0x00000 }; +static unsigned int de00215[] = { 0x00075, 0x0030F, 0x00000 }; +static unsigned int de00216[] = { 0x00055, 0x00311, 0x00000 }; +static unsigned int de00217[] = { 0x00075, 0x00311, 0x00000 }; +static unsigned int de00218[] = { 0x00053, 0x00326, 0x00000 }; +static unsigned int de00219[] = { 0x00073, 0x00326, 0x00000 }; +static unsigned int de0021A[] = { 0x00054, 0x00326, 0x00000 }; +static unsigned int de0021B[] = { 0x00074, 0x00326, 0x00000 }; +static unsigned int de0021E[] = { 0x00048, 0x0030C, 0x00000 }; +static unsigned int de0021F[] = { 0x00068, 0x0030C, 0x00000 }; +static unsigned int de00226[] = { 0x00041, 0x00307, 0x00000 }; +static unsigned int de00227[] = { 0x00061, 0x00307, 0x00000 }; +static unsigned int de00228[] = { 0x00045, 0x00327, 0x00000 }; +static unsigned int de00229[] = { 0x00065, 0x00327, 0x00000 }; +static unsigned int de0022A[] = { 0x000D6, 0x00304, 0x00000 }; +static unsigned int de0022B[] = { 0x000F6, 0x00304, 0x00000 }; +static unsigned int de0022C[] = { 0x000D5, 0x00304, 0x00000 }; +static unsigned int de0022D[] = { 0x000F5, 0x00304, 0x00000 }; +static unsigned int de0022E[] = { 0x0004F, 0x00307, 0x00000 }; +static unsigned int de0022F[] = { 0x0006F, 0x00307, 0x00000 }; +static unsigned int de00230[] = { 0x0022E, 0x00304, 0x00000 }; +static unsigned int de00231[] = { 0x0022F, 0x00304, 0x00000 }; +static unsigned int de00232[] = { 0x00059, 0x00304, 0x00000 }; +static unsigned int de00233[] = { 0x00079, 0x00304, 0x00000 }; +static unsigned int de002B0[] = { 0x00068, 0x00000 }; +static unsigned int de002B1[] = { 0x00266, 0x00000 }; +static unsigned int de002B2[] = { 0x0006A, 0x00000 }; +static unsigned int de002B3[] = { 0x00072, 0x00000 }; +static unsigned int de002B4[] = { 0x00279, 0x00000 }; +static unsigned int de002B5[] = { 0x0027B, 0x00000 }; +static unsigned int de002B6[] = { 0x00281, 0x00000 }; +static unsigned int de002B7[] = { 0x00077, 0x00000 }; +static unsigned int de002B8[] = { 0x00079, 0x00000 }; +static unsigned int de002D8[] = { 0x00020, 0x00306, 0x00000 }; +static unsigned int de002D9[] = { 0x00020, 0x00307, 0x00000 }; +static unsigned int de002DA[] = { 0x00020, 0x0030A, 0x00000 }; +static unsigned int de002DB[] = { 0x00020, 0x00328, 0x00000 }; +static unsigned int de002DC[] = { 0x00020, 0x00303, 0x00000 }; +static unsigned int de002DD[] = { 0x00020, 0x0030B, 0x00000 }; +static unsigned int de002E0[] = { 0x00263, 0x00000 }; +static unsigned int de002E1[] = { 0x0006C, 0x00000 }; +static unsigned int de002E2[] = { 0x00073, 0x00000 }; +static unsigned int de002E3[] = { 0x00078, 0x00000 }; +static unsigned int de002E4[] = { 0x00295, 0x00000 }; +static unsigned int de00340[] = { 0x00300, 0x00000 }; +static unsigned int de00341[] = { 0x00301, 0x00000 }; +static unsigned int de00343[] = { 0x00313, 0x00000 }; +static unsigned int de00344[] = { 0x00308, 0x00301, 0x00000 }; +static unsigned int de00374[] = { 0x002B9, 0x00000 }; +static unsigned int de0037A[] = { 0x00020, 0x00345, 0x00000 }; +static unsigned int de0037E[] = { 0x0003B, 0x00000 }; +static unsigned int de00384[] = { 0x00020, 0x00301, 0x00000 }; +static unsigned int de00385[] = { 0x000A8, 0x00301, 0x00000 }; +static unsigned int de00386[] = { 0x00391, 0x00301, 0x00000 }; +static unsigned int de00387[] = { 0x000B7, 0x00000 }; +static unsigned int de00388[] = { 0x00395, 0x00301, 0x00000 }; +static unsigned int de00389[] = { 0x00397, 0x00301, 0x00000 }; +static unsigned int de0038A[] = { 0x00399, 0x00301, 0x00000 }; +static unsigned int de0038C[] = { 0x0039F, 0x00301, 0x00000 }; +static unsigned int de0038E[] = { 0x003A5, 0x00301, 0x00000 }; +static unsigned int de0038F[] = { 0x003A9, 0x00301, 0x00000 }; +static unsigned int de00390[] = { 0x003CA, 0x00301, 0x00000 }; +static unsigned int de003AA[] = { 0x00399, 0x00308, 0x00000 }; +static unsigned int de003AB[] = { 0x003A5, 0x00308, 0x00000 }; +static unsigned int de003AC[] = { 0x003B1, 0x00301, 0x00000 }; +static unsigned int de003AD[] = { 0x003B5, 0x00301, 0x00000 }; +static unsigned int de003AE[] = { 0x003B7, 0x00301, 0x00000 }; +static unsigned int de003AF[] = { 0x003B9, 0x00301, 0x00000 }; +static unsigned int de003B0[] = { 0x003CB, 0x00301, 0x00000 }; +static unsigned int de003CA[] = { 0x003B9, 0x00308, 0x00000 }; +static unsigned int de003CB[] = { 0x003C5, 0x00308, 0x00000 }; +static unsigned int de003CC[] = { 0x003BF, 0x00301, 0x00000 }; +static unsigned int de003CD[] = { 0x003C5, 0x00301, 0x00000 }; +static unsigned int de003CE[] = { 0x003C9, 0x00301, 0x00000 }; +static unsigned int de003D0[] = { 0x003B2, 0x00000 }; +static unsigned int de003D1[] = { 0x003B8, 0x00000 }; +static unsigned int de003D2[] = { 0x003A5, 0x00000 }; +static unsigned int de003D3[] = { 0x003D2, 0x00301, 0x00000 }; +static unsigned int de003D4[] = { 0x003D2, 0x00308, 0x00000 }; +static unsigned int de003D5[] = { 0x003C6, 0x00000 }; +static unsigned int de003D6[] = { 0x003C0, 0x00000 }; +static unsigned int de003F0[] = { 0x003BA, 0x00000 }; +static unsigned int de003F1[] = { 0x003C1, 0x00000 }; +static unsigned int de003F2[] = { 0x003C2, 0x00000 }; +static unsigned int de003F4[] = { 0x00398, 0x00000 }; +static unsigned int de003F5[] = { 0x003B5, 0x00000 }; +static unsigned int de003F9[] = { 0x003A3, 0x00000 }; +static unsigned int de00400[] = { 0x00415, 0x00300, 0x00000 }; +static unsigned int de00401[] = { 0x00415, 0x00308, 0x00000 }; +static unsigned int de00403[] = { 0x00413, 0x00301, 0x00000 }; +static unsigned int de00407[] = { 0x00406, 0x00308, 0x00000 }; +static unsigned int de0040C[] = { 0x0041A, 0x00301, 0x00000 }; +static unsigned int de0040D[] = { 0x00418, 0x00300, 0x00000 }; +static unsigned int de0040E[] = { 0x00423, 0x00306, 0x00000 }; +static unsigned int de00419[] = { 0x00418, 0x00306, 0x00000 }; +static unsigned int de00439[] = { 0x00438, 0x00306, 0x00000 }; +static unsigned int de00450[] = { 0x00435, 0x00300, 0x00000 }; +static unsigned int de00451[] = { 0x00435, 0x00308, 0x00000 }; +static unsigned int de00453[] = { 0x00433, 0x00301, 0x00000 }; +static unsigned int de00457[] = { 0x00456, 0x00308, 0x00000 }; +static unsigned int de0045C[] = { 0x0043A, 0x00301, 0x00000 }; +static unsigned int de0045D[] = { 0x00438, 0x00300, 0x00000 }; +static unsigned int de0045E[] = { 0x00443, 0x00306, 0x00000 }; +static unsigned int de00476[] = { 0x00474, 0x0030F, 0x00000 }; +static unsigned int de00477[] = { 0x00475, 0x0030F, 0x00000 }; +static unsigned int de004C1[] = { 0x00416, 0x00306, 0x00000 }; +static unsigned int de004C2[] = { 0x00436, 0x00306, 0x00000 }; +static unsigned int de004D0[] = { 0x00410, 0x00306, 0x00000 }; +static unsigned int de004D1[] = { 0x00430, 0x00306, 0x00000 }; +static unsigned int de004D2[] = { 0x00410, 0x00308, 0x00000 }; +static unsigned int de004D3[] = { 0x00430, 0x00308, 0x00000 }; +static unsigned int de004D6[] = { 0x00415, 0x00306, 0x00000 }; +static unsigned int de004D7[] = { 0x00435, 0x00306, 0x00000 }; +static unsigned int de004DA[] = { 0x004D8, 0x00308, 0x00000 }; +static unsigned int de004DB[] = { 0x004D9, 0x00308, 0x00000 }; +static unsigned int de004DC[] = { 0x00416, 0x00308, 0x00000 }; +static unsigned int de004DD[] = { 0x00436, 0x00308, 0x00000 }; +static unsigned int de004DE[] = { 0x00417, 0x00308, 0x00000 }; +static unsigned int de004DF[] = { 0x00437, 0x00308, 0x00000 }; +static unsigned int de004E2[] = { 0x00418, 0x00304, 0x00000 }; +static unsigned int de004E3[] = { 0x00438, 0x00304, 0x00000 }; +static unsigned int de004E4[] = { 0x00418, 0x00308, 0x00000 }; +static unsigned int de004E5[] = { 0x00438, 0x00308, 0x00000 }; +static unsigned int de004E6[] = { 0x0041E, 0x00308, 0x00000 }; +static unsigned int de004E7[] = { 0x0043E, 0x00308, 0x00000 }; +static unsigned int de004EA[] = { 0x004E8, 0x00308, 0x00000 }; +static unsigned int de004EB[] = { 0x004E9, 0x00308, 0x00000 }; +static unsigned int de004EC[] = { 0x0042D, 0x00308, 0x00000 }; +static unsigned int de004ED[] = { 0x0044D, 0x00308, 0x00000 }; +static unsigned int de004EE[] = { 0x00423, 0x00304, 0x00000 }; +static unsigned int de004EF[] = { 0x00443, 0x00304, 0x00000 }; +static unsigned int de004F0[] = { 0x00423, 0x00308, 0x00000 }; +static unsigned int de004F1[] = { 0x00443, 0x00308, 0x00000 }; +static unsigned int de004F2[] = { 0x00423, 0x0030B, 0x00000 }; +static unsigned int de004F3[] = { 0x00443, 0x0030B, 0x00000 }; +static unsigned int de004F4[] = { 0x00427, 0x00308, 0x00000 }; +static unsigned int de004F5[] = { 0x00447, 0x00308, 0x00000 }; +static unsigned int de004F8[] = { 0x0042B, 0x00308, 0x00000 }; +static unsigned int de004F9[] = { 0x0044B, 0x00308, 0x00000 }; +static unsigned int de00587[] = { 0x00565, 0x00582, 0x00000 }; +static unsigned int de00622[] = { 0x00627, 0x00653, 0x00000 }; +static unsigned int de00623[] = { 0x00627, 0x00654, 0x00000 }; +static unsigned int de00624[] = { 0x00648, 0x00654, 0x00000 }; +static unsigned int de00625[] = { 0x00627, 0x00655, 0x00000 }; +static unsigned int de00626[] = { 0x0064A, 0x00654, 0x00000 }; +static unsigned int de00675[] = { 0x00627, 0x00674, 0x00000 }; +static unsigned int de00676[] = { 0x00648, 0x00674, 0x00000 }; +static unsigned int de00677[] = { 0x006C7, 0x00674, 0x00000 }; +static unsigned int de00678[] = { 0x0064A, 0x00674, 0x00000 }; +static unsigned int de006C0[] = { 0x006D5, 0x00654, 0x00000 }; +static unsigned int de006C2[] = { 0x006C1, 0x00654, 0x00000 }; +static unsigned int de006D3[] = { 0x006D2, 0x00654, 0x00000 }; +static unsigned int de00929[] = { 0x00928, 0x0093C, 0x00000 }; +static unsigned int de00931[] = { 0x00930, 0x0093C, 0x00000 }; +static unsigned int de00934[] = { 0x00933, 0x0093C, 0x00000 }; +static unsigned int de00958[] = { 0x00915, 0x0093C, 0x00000 }; +static unsigned int de00959[] = { 0x00916, 0x0093C, 0x00000 }; +static unsigned int de0095A[] = { 0x00917, 0x0093C, 0x00000 }; +static unsigned int de0095B[] = { 0x0091C, 0x0093C, 0x00000 }; +static unsigned int de0095C[] = { 0x00921, 0x0093C, 0x00000 }; +static unsigned int de0095D[] = { 0x00922, 0x0093C, 0x00000 }; +static unsigned int de0095E[] = { 0x0092B, 0x0093C, 0x00000 }; +static unsigned int de0095F[] = { 0x0092F, 0x0093C, 0x00000 }; +static unsigned int de009CB[] = { 0x009C7, 0x009BE, 0x00000 }; +static unsigned int de009CC[] = { 0x009C7, 0x009D7, 0x00000 }; +static unsigned int de009DC[] = { 0x009A1, 0x009BC, 0x00000 }; +static unsigned int de009DD[] = { 0x009A2, 0x009BC, 0x00000 }; +static unsigned int de009DF[] = { 0x009AF, 0x009BC, 0x00000 }; +static unsigned int de00A33[] = { 0x00A32, 0x00A3C, 0x00000 }; +static unsigned int de00A36[] = { 0x00A38, 0x00A3C, 0x00000 }; +static unsigned int de00A59[] = { 0x00A16, 0x00A3C, 0x00000 }; +static unsigned int de00A5A[] = { 0x00A17, 0x00A3C, 0x00000 }; +static unsigned int de00A5B[] = { 0x00A1C, 0x00A3C, 0x00000 }; +static unsigned int de00A5E[] = { 0x00A2B, 0x00A3C, 0x00000 }; +static unsigned int de00B48[] = { 0x00B47, 0x00B56, 0x00000 }; +static unsigned int de00B4B[] = { 0x00B47, 0x00B3E, 0x00000 }; +static unsigned int de00B4C[] = { 0x00B47, 0x00B57, 0x00000 }; +static unsigned int de00B5C[] = { 0x00B21, 0x00B3C, 0x00000 }; +static unsigned int de00B5D[] = { 0x00B22, 0x00B3C, 0x00000 }; +static unsigned int de00B94[] = { 0x00B92, 0x00BD7, 0x00000 }; +static unsigned int de00BCA[] = { 0x00BC6, 0x00BBE, 0x00000 }; +static unsigned int de00BCB[] = { 0x00BC7, 0x00BBE, 0x00000 }; +static unsigned int de00BCC[] = { 0x00BC6, 0x00BD7, 0x00000 }; +static unsigned int de00C48[] = { 0x00C46, 0x00C56, 0x00000 }; +static unsigned int de00CC0[] = { 0x00CBF, 0x00CD5, 0x00000 }; +static unsigned int de00CC7[] = { 0x00CC6, 0x00CD5, 0x00000 }; +static unsigned int de00CC8[] = { 0x00CC6, 0x00CD6, 0x00000 }; +static unsigned int de00CCA[] = { 0x00CC6, 0x00CC2, 0x00000 }; +static unsigned int de00CCB[] = { 0x00CCA, 0x00CD5, 0x00000 }; +static unsigned int de00D4A[] = { 0x00D46, 0x00D3E, 0x00000 }; +static unsigned int de00D4B[] = { 0x00D47, 0x00D3E, 0x00000 }; +static unsigned int de00D4C[] = { 0x00D46, 0x00D57, 0x00000 }; +static unsigned int de00DDA[] = { 0x00DD9, 0x00DCA, 0x00000 }; +static unsigned int de00DDC[] = { 0x00DD9, 0x00DCF, 0x00000 }; +static unsigned int de00DDD[] = { 0x00DDC, 0x00DCA, 0x00000 }; +static unsigned int de00DDE[] = { 0x00DD9, 0x00DDF, 0x00000 }; +static unsigned int de00E33[] = { 0x00E4D, 0x00E32, 0x00000 }; +static unsigned int de00EB3[] = { 0x00ECD, 0x00EB2, 0x00000 }; +static unsigned int de00EDC[] = { 0x00EAB, 0x00E99, 0x00000 }; +static unsigned int de00EDD[] = { 0x00EAB, 0x00EA1, 0x00000 }; +static unsigned int de00F0C[] = { 0x00F0B, 0x00000 }; +static unsigned int de00F43[] = { 0x00F42, 0x00FB7, 0x00000 }; +static unsigned int de00F4D[] = { 0x00F4C, 0x00FB7, 0x00000 }; +static unsigned int de00F52[] = { 0x00F51, 0x00FB7, 0x00000 }; +static unsigned int de00F57[] = { 0x00F56, 0x00FB7, 0x00000 }; +static unsigned int de00F5C[] = { 0x00F5B, 0x00FB7, 0x00000 }; +static unsigned int de00F69[] = { 0x00F40, 0x00FB5, 0x00000 }; +static unsigned int de00F73[] = { 0x00F71, 0x00F72, 0x00000 }; +static unsigned int de00F75[] = { 0x00F71, 0x00F74, 0x00000 }; +static unsigned int de00F76[] = { 0x00FB2, 0x00F80, 0x00000 }; +static unsigned int de00F77[] = { 0x00FB2, 0x00F81, 0x00000 }; +static unsigned int de00F78[] = { 0x00FB3, 0x00F80, 0x00000 }; +static unsigned int de00F79[] = { 0x00FB3, 0x00F81, 0x00000 }; +static unsigned int de00F81[] = { 0x00F71, 0x00F80, 0x00000 }; +static unsigned int de00F93[] = { 0x00F92, 0x00FB7, 0x00000 }; +static unsigned int de00F9D[] = { 0x00F9C, 0x00FB7, 0x00000 }; +static unsigned int de00FA2[] = { 0x00FA1, 0x00FB7, 0x00000 }; +static unsigned int de00FA7[] = { 0x00FA6, 0x00FB7, 0x00000 }; +static unsigned int de00FAC[] = { 0x00FAB, 0x00FB7, 0x00000 }; +static unsigned int de00FB9[] = { 0x00F90, 0x00FB5, 0x00000 }; +static unsigned int de01026[] = { 0x01025, 0x0102E, 0x00000 }; +static unsigned int de010FC[] = { 0x010DC, 0x00000 }; +static unsigned int de01D2C[] = { 0x00041, 0x00000 }; +static unsigned int de01D2D[] = { 0x000C6, 0x00000 }; +static unsigned int de01D2E[] = { 0x00042, 0x00000 }; +static unsigned int de01D30[] = { 0x00044, 0x00000 }; +static unsigned int de01D31[] = { 0x00045, 0x00000 }; +static unsigned int de01D32[] = { 0x0018E, 0x00000 }; +static unsigned int de01D33[] = { 0x00047, 0x00000 }; +static unsigned int de01D34[] = { 0x00048, 0x00000 }; +static unsigned int de01D35[] = { 0x00049, 0x00000 }; +static unsigned int de01D36[] = { 0x0004A, 0x00000 }; +static unsigned int de01D37[] = { 0x0004B, 0x00000 }; +static unsigned int de01D38[] = { 0x0004C, 0x00000 }; +static unsigned int de01D39[] = { 0x0004D, 0x00000 }; +static unsigned int de01D3A[] = { 0x0004E, 0x00000 }; +static unsigned int de01D3C[] = { 0x0004F, 0x00000 }; +static unsigned int de01D3D[] = { 0x00222, 0x00000 }; +static unsigned int de01D3E[] = { 0x00050, 0x00000 }; +static unsigned int de01D3F[] = { 0x00052, 0x00000 }; +static unsigned int de01D40[] = { 0x00054, 0x00000 }; +static unsigned int de01D41[] = { 0x00055, 0x00000 }; +static unsigned int de01D42[] = { 0x00057, 0x00000 }; +static unsigned int de01D43[] = { 0x00061, 0x00000 }; +static unsigned int de01D44[] = { 0x00250, 0x00000 }; +static unsigned int de01D45[] = { 0x00251, 0x00000 }; +static unsigned int de01D46[] = { 0x01D02, 0x00000 }; +static unsigned int de01D47[] = { 0x00062, 0x00000 }; +static unsigned int de01D48[] = { 0x00064, 0x00000 }; +static unsigned int de01D49[] = { 0x00065, 0x00000 }; +static unsigned int de01D4A[] = { 0x00259, 0x00000 }; +static unsigned int de01D4B[] = { 0x0025B, 0x00000 }; +static unsigned int de01D4C[] = { 0x0025C, 0x00000 }; +static unsigned int de01D4D[] = { 0x00067, 0x00000 }; +static unsigned int de01D4F[] = { 0x0006B, 0x00000 }; +static unsigned int de01D50[] = { 0x0006D, 0x00000 }; +static unsigned int de01D51[] = { 0x0014B, 0x00000 }; +static unsigned int de01D52[] = { 0x0006F, 0x00000 }; +static unsigned int de01D53[] = { 0x00254, 0x00000 }; +static unsigned int de01D54[] = { 0x01D16, 0x00000 }; +static unsigned int de01D55[] = { 0x01D17, 0x00000 }; +static unsigned int de01D56[] = { 0x00070, 0x00000 }; +static unsigned int de01D57[] = { 0x00074, 0x00000 }; +static unsigned int de01D58[] = { 0x00075, 0x00000 }; +static unsigned int de01D59[] = { 0x01D1D, 0x00000 }; +static unsigned int de01D5A[] = { 0x0026F, 0x00000 }; +static unsigned int de01D5B[] = { 0x00076, 0x00000 }; +static unsigned int de01D5C[] = { 0x01D25, 0x00000 }; +static unsigned int de01D5D[] = { 0x003B2, 0x00000 }; +static unsigned int de01D5E[] = { 0x003B3, 0x00000 }; +static unsigned int de01D5F[] = { 0x003B4, 0x00000 }; +static unsigned int de01D60[] = { 0x003C6, 0x00000 }; +static unsigned int de01D61[] = { 0x003C7, 0x00000 }; +static unsigned int de01D62[] = { 0x00069, 0x00000 }; +static unsigned int de01D63[] = { 0x00072, 0x00000 }; +static unsigned int de01D64[] = { 0x00075, 0x00000 }; +static unsigned int de01D65[] = { 0x00076, 0x00000 }; +static unsigned int de01D66[] = { 0x003B2, 0x00000 }; +static unsigned int de01D67[] = { 0x003B3, 0x00000 }; +static unsigned int de01D68[] = { 0x003C1, 0x00000 }; +static unsigned int de01D69[] = { 0x003C6, 0x00000 }; +static unsigned int de01D6A[] = { 0x003C7, 0x00000 }; +static unsigned int de01D78[] = { 0x0043D, 0x00000 }; +static unsigned int de01D9B[] = { 0x00252, 0x00000 }; +static unsigned int de01D9C[] = { 0x00063, 0x00000 }; +static unsigned int de01D9D[] = { 0x00255, 0x00000 }; +static unsigned int de01D9E[] = { 0x000F0, 0x00000 }; +static unsigned int de01D9F[] = { 0x0025C, 0x00000 }; +static unsigned int de01DA0[] = { 0x00066, 0x00000 }; +static unsigned int de01DA1[] = { 0x0025F, 0x00000 }; +static unsigned int de01DA2[] = { 0x00261, 0x00000 }; +static unsigned int de01DA3[] = { 0x00265, 0x00000 }; +static unsigned int de01DA4[] = { 0x00268, 0x00000 }; +static unsigned int de01DA5[] = { 0x00269, 0x00000 }; +static unsigned int de01DA6[] = { 0x0026A, 0x00000 }; +static unsigned int de01DA7[] = { 0x01D7B, 0x00000 }; +static unsigned int de01DA8[] = { 0x0029D, 0x00000 }; +static unsigned int de01DA9[] = { 0x0026D, 0x00000 }; +static unsigned int de01DAA[] = { 0x01D85, 0x00000 }; +static unsigned int de01DAB[] = { 0x0029F, 0x00000 }; +static unsigned int de01DAC[] = { 0x00271, 0x00000 }; +static unsigned int de01DAD[] = { 0x00270, 0x00000 }; +static unsigned int de01DAE[] = { 0x00272, 0x00000 }; +static unsigned int de01DAF[] = { 0x00273, 0x00000 }; +static unsigned int de01DB0[] = { 0x00274, 0x00000 }; +static unsigned int de01DB1[] = { 0x00275, 0x00000 }; +static unsigned int de01DB2[] = { 0x00278, 0x00000 }; +static unsigned int de01DB3[] = { 0x00282, 0x00000 }; +static unsigned int de01DB4[] = { 0x00283, 0x00000 }; +static unsigned int de01DB5[] = { 0x001AB, 0x00000 }; +static unsigned int de01DB6[] = { 0x00289, 0x00000 }; +static unsigned int de01DB7[] = { 0x0028A, 0x00000 }; +static unsigned int de01DB8[] = { 0x01D1C, 0x00000 }; +static unsigned int de01DB9[] = { 0x0028B, 0x00000 }; +static unsigned int de01DBA[] = { 0x0028C, 0x00000 }; +static unsigned int de01DBB[] = { 0x0007A, 0x00000 }; +static unsigned int de01DBC[] = { 0x00290, 0x00000 }; +static unsigned int de01DBD[] = { 0x00291, 0x00000 }; +static unsigned int de01DBE[] = { 0x00292, 0x00000 }; +static unsigned int de01DBF[] = { 0x003B8, 0x00000 }; +static unsigned int de01E00[] = { 0x00041, 0x00325, 0x00000 }; +static unsigned int de01E01[] = { 0x00061, 0x00325, 0x00000 }; +static unsigned int de01E02[] = { 0x00042, 0x00307, 0x00000 }; +static unsigned int de01E03[] = { 0x00062, 0x00307, 0x00000 }; +static unsigned int de01E04[] = { 0x00042, 0x00323, 0x00000 }; +static unsigned int de01E05[] = { 0x00062, 0x00323, 0x00000 }; +static unsigned int de01E06[] = { 0x00042, 0x00331, 0x00000 }; +static unsigned int de01E07[] = { 0x00062, 0x00331, 0x00000 }; +static unsigned int de01E08[] = { 0x000C7, 0x00301, 0x00000 }; +static unsigned int de01E09[] = { 0x000E7, 0x00301, 0x00000 }; +static unsigned int de01E0A[] = { 0x00044, 0x00307, 0x00000 }; +static unsigned int de01E0B[] = { 0x00064, 0x00307, 0x00000 }; +static unsigned int de01E0C[] = { 0x00044, 0x00323, 0x00000 }; +static unsigned int de01E0D[] = { 0x00064, 0x00323, 0x00000 }; +static unsigned int de01E0E[] = { 0x00044, 0x00331, 0x00000 }; +static unsigned int de01E0F[] = { 0x00064, 0x00331, 0x00000 }; +static unsigned int de01E10[] = { 0x00044, 0x00327, 0x00000 }; +static unsigned int de01E11[] = { 0x00064, 0x00327, 0x00000 }; +static unsigned int de01E12[] = { 0x00044, 0x0032D, 0x00000 }; +static unsigned int de01E13[] = { 0x00064, 0x0032D, 0x00000 }; +static unsigned int de01E14[] = { 0x00112, 0x00300, 0x00000 }; +static unsigned int de01E15[] = { 0x00113, 0x00300, 0x00000 }; +static unsigned int de01E16[] = { 0x00112, 0x00301, 0x00000 }; +static unsigned int de01E17[] = { 0x00113, 0x00301, 0x00000 }; +static unsigned int de01E18[] = { 0x00045, 0x0032D, 0x00000 }; +static unsigned int de01E19[] = { 0x00065, 0x0032D, 0x00000 }; +static unsigned int de01E1A[] = { 0x00045, 0x00330, 0x00000 }; +static unsigned int de01E1B[] = { 0x00065, 0x00330, 0x00000 }; +static unsigned int de01E1C[] = { 0x00228, 0x00306, 0x00000 }; +static unsigned int de01E1D[] = { 0x00229, 0x00306, 0x00000 }; +static unsigned int de01E1E[] = { 0x00046, 0x00307, 0x00000 }; +static unsigned int de01E1F[] = { 0x00066, 0x00307, 0x00000 }; +static unsigned int de01E20[] = { 0x00047, 0x00304, 0x00000 }; +static unsigned int de01E21[] = { 0x00067, 0x00304, 0x00000 }; +static unsigned int de01E22[] = { 0x00048, 0x00307, 0x00000 }; +static unsigned int de01E23[] = { 0x00068, 0x00307, 0x00000 }; +static unsigned int de01E24[] = { 0x00048, 0x00323, 0x00000 }; +static unsigned int de01E25[] = { 0x00068, 0x00323, 0x00000 }; +static unsigned int de01E26[] = { 0x00048, 0x00308, 0x00000 }; +static unsigned int de01E27[] = { 0x00068, 0x00308, 0x00000 }; +static unsigned int de01E28[] = { 0x00048, 0x00327, 0x00000 }; +static unsigned int de01E29[] = { 0x00068, 0x00327, 0x00000 }; +static unsigned int de01E2A[] = { 0x00048, 0x0032E, 0x00000 }; +static unsigned int de01E2B[] = { 0x00068, 0x0032E, 0x00000 }; +static unsigned int de01E2C[] = { 0x00049, 0x00330, 0x00000 }; +static unsigned int de01E2D[] = { 0x00069, 0x00330, 0x00000 }; +static unsigned int de01E2E[] = { 0x000CF, 0x00301, 0x00000 }; +static unsigned int de01E2F[] = { 0x000EF, 0x00301, 0x00000 }; +static unsigned int de01E30[] = { 0x0004B, 0x00301, 0x00000 }; +static unsigned int de01E31[] = { 0x0006B, 0x00301, 0x00000 }; +static unsigned int de01E32[] = { 0x0004B, 0x00323, 0x00000 }; +static unsigned int de01E33[] = { 0x0006B, 0x00323, 0x00000 }; +static unsigned int de01E34[] = { 0x0004B, 0x00331, 0x00000 }; +static unsigned int de01E35[] = { 0x0006B, 0x00331, 0x00000 }; +static unsigned int de01E36[] = { 0x0004C, 0x00323, 0x00000 }; +static unsigned int de01E37[] = { 0x0006C, 0x00323, 0x00000 }; +static unsigned int de01E38[] = { 0x01E36, 0x00304, 0x00000 }; +static unsigned int de01E39[] = { 0x01E37, 0x00304, 0x00000 }; +static unsigned int de01E3A[] = { 0x0004C, 0x00331, 0x00000 }; +static unsigned int de01E3B[] = { 0x0006C, 0x00331, 0x00000 }; +static unsigned int de01E3C[] = { 0x0004C, 0x0032D, 0x00000 }; +static unsigned int de01E3D[] = { 0x0006C, 0x0032D, 0x00000 }; +static unsigned int de01E3E[] = { 0x0004D, 0x00301, 0x00000 }; +static unsigned int de01E3F[] = { 0x0006D, 0x00301, 0x00000 }; +static unsigned int de01E40[] = { 0x0004D, 0x00307, 0x00000 }; +static unsigned int de01E41[] = { 0x0006D, 0x00307, 0x00000 }; +static unsigned int de01E42[] = { 0x0004D, 0x00323, 0x00000 }; +static unsigned int de01E43[] = { 0x0006D, 0x00323, 0x00000 }; +static unsigned int de01E44[] = { 0x0004E, 0x00307, 0x00000 }; +static unsigned int de01E45[] = { 0x0006E, 0x00307, 0x00000 }; +static unsigned int de01E46[] = { 0x0004E, 0x00323, 0x00000 }; +static unsigned int de01E47[] = { 0x0006E, 0x00323, 0x00000 }; +static unsigned int de01E48[] = { 0x0004E, 0x00331, 0x00000 }; +static unsigned int de01E49[] = { 0x0006E, 0x00331, 0x00000 }; +static unsigned int de01E4A[] = { 0x0004E, 0x0032D, 0x00000 }; +static unsigned int de01E4B[] = { 0x0006E, 0x0032D, 0x00000 }; +static unsigned int de01E4C[] = { 0x000D5, 0x00301, 0x00000 }; +static unsigned int de01E4D[] = { 0x000F5, 0x00301, 0x00000 }; +static unsigned int de01E4E[] = { 0x000D5, 0x00308, 0x00000 }; +static unsigned int de01E4F[] = { 0x000F5, 0x00308, 0x00000 }; +static unsigned int de01E50[] = { 0x0014C, 0x00300, 0x00000 }; +static unsigned int de01E51[] = { 0x0014D, 0x00300, 0x00000 }; +static unsigned int de01E52[] = { 0x0014C, 0x00301, 0x00000 }; +static unsigned int de01E53[] = { 0x0014D, 0x00301, 0x00000 }; +static unsigned int de01E54[] = { 0x00050, 0x00301, 0x00000 }; +static unsigned int de01E55[] = { 0x00070, 0x00301, 0x00000 }; +static unsigned int de01E56[] = { 0x00050, 0x00307, 0x00000 }; +static unsigned int de01E57[] = { 0x00070, 0x00307, 0x00000 }; +static unsigned int de01E58[] = { 0x00052, 0x00307, 0x00000 }; +static unsigned int de01E59[] = { 0x00072, 0x00307, 0x00000 }; +static unsigned int de01E5A[] = { 0x00052, 0x00323, 0x00000 }; +static unsigned int de01E5B[] = { 0x00072, 0x00323, 0x00000 }; +static unsigned int de01E5C[] = { 0x01E5A, 0x00304, 0x00000 }; +static unsigned int de01E5D[] = { 0x01E5B, 0x00304, 0x00000 }; +static unsigned int de01E5E[] = { 0x00052, 0x00331, 0x00000 }; +static unsigned int de01E5F[] = { 0x00072, 0x00331, 0x00000 }; +static unsigned int de01E60[] = { 0x00053, 0x00307, 0x00000 }; +static unsigned int de01E61[] = { 0x00073, 0x00307, 0x00000 }; +static unsigned int de01E62[] = { 0x00053, 0x00323, 0x00000 }; +static unsigned int de01E63[] = { 0x00073, 0x00323, 0x00000 }; +static unsigned int de01E64[] = { 0x0015A, 0x00307, 0x00000 }; +static unsigned int de01E65[] = { 0x0015B, 0x00307, 0x00000 }; +static unsigned int de01E66[] = { 0x00160, 0x00307, 0x00000 }; +static unsigned int de01E67[] = { 0x00161, 0x00307, 0x00000 }; +static unsigned int de01E68[] = { 0x01E62, 0x00307, 0x00000 }; +static unsigned int de01E69[] = { 0x01E63, 0x00307, 0x00000 }; +static unsigned int de01E6A[] = { 0x00054, 0x00307, 0x00000 }; +static unsigned int de01E6B[] = { 0x00074, 0x00307, 0x00000 }; +static unsigned int de01E6C[] = { 0x00054, 0x00323, 0x00000 }; +static unsigned int de01E6D[] = { 0x00074, 0x00323, 0x00000 }; +static unsigned int de01E6E[] = { 0x00054, 0x00331, 0x00000 }; +static unsigned int de01E6F[] = { 0x00074, 0x00331, 0x00000 }; +static unsigned int de01E70[] = { 0x00054, 0x0032D, 0x00000 }; +static unsigned int de01E71[] = { 0x00074, 0x0032D, 0x00000 }; +static unsigned int de01E72[] = { 0x00055, 0x00324, 0x00000 }; +static unsigned int de01E73[] = { 0x00075, 0x00324, 0x00000 }; +static unsigned int de01E74[] = { 0x00055, 0x00330, 0x00000 }; +static unsigned int de01E75[] = { 0x00075, 0x00330, 0x00000 }; +static unsigned int de01E76[] = { 0x00055, 0x0032D, 0x00000 }; +static unsigned int de01E77[] = { 0x00075, 0x0032D, 0x00000 }; +static unsigned int de01E78[] = { 0x00168, 0x00301, 0x00000 }; +static unsigned int de01E79[] = { 0x00169, 0x00301, 0x00000 }; +static unsigned int de01E7A[] = { 0x0016A, 0x00308, 0x00000 }; +static unsigned int de01E7B[] = { 0x0016B, 0x00308, 0x00000 }; +static unsigned int de01E7C[] = { 0x00056, 0x00303, 0x00000 }; +static unsigned int de01E7D[] = { 0x00076, 0x00303, 0x00000 }; +static unsigned int de01E7E[] = { 0x00056, 0x00323, 0x00000 }; +static unsigned int de01E7F[] = { 0x00076, 0x00323, 0x00000 }; +static unsigned int de01E80[] = { 0x00057, 0x00300, 0x00000 }; +static unsigned int de01E81[] = { 0x00077, 0x00300, 0x00000 }; +static unsigned int de01E82[] = { 0x00057, 0x00301, 0x00000 }; +static unsigned int de01E83[] = { 0x00077, 0x00301, 0x00000 }; +static unsigned int de01E84[] = { 0x00057, 0x00308, 0x00000 }; +static unsigned int de01E85[] = { 0x00077, 0x00308, 0x00000 }; +static unsigned int de01E86[] = { 0x00057, 0x00307, 0x00000 }; +static unsigned int de01E87[] = { 0x00077, 0x00307, 0x00000 }; +static unsigned int de01E88[] = { 0x00057, 0x00323, 0x00000 }; +static unsigned int de01E89[] = { 0x00077, 0x00323, 0x00000 }; +static unsigned int de01E8A[] = { 0x00058, 0x00307, 0x00000 }; +static unsigned int de01E8B[] = { 0x00078, 0x00307, 0x00000 }; +static unsigned int de01E8C[] = { 0x00058, 0x00308, 0x00000 }; +static unsigned int de01E8D[] = { 0x00078, 0x00308, 0x00000 }; +static unsigned int de01E8E[] = { 0x00059, 0x00307, 0x00000 }; +static unsigned int de01E8F[] = { 0x00079, 0x00307, 0x00000 }; +static unsigned int de01E90[] = { 0x0005A, 0x00302, 0x00000 }; +static unsigned int de01E91[] = { 0x0007A, 0x00302, 0x00000 }; +static unsigned int de01E92[] = { 0x0005A, 0x00323, 0x00000 }; +static unsigned int de01E93[] = { 0x0007A, 0x00323, 0x00000 }; +static unsigned int de01E94[] = { 0x0005A, 0x00331, 0x00000 }; +static unsigned int de01E95[] = { 0x0007A, 0x00331, 0x00000 }; +static unsigned int de01E96[] = { 0x00068, 0x00331, 0x00000 }; +static unsigned int de01E97[] = { 0x00074, 0x00308, 0x00000 }; +static unsigned int de01E98[] = { 0x00077, 0x0030A, 0x00000 }; +static unsigned int de01E99[] = { 0x00079, 0x0030A, 0x00000 }; +static unsigned int de01E9A[] = { 0x00061, 0x002BE, 0x00000 }; +static unsigned int de01E9B[] = { 0x0017F, 0x00307, 0x00000 }; +static unsigned int de01EA0[] = { 0x00041, 0x00323, 0x00000 }; +static unsigned int de01EA1[] = { 0x00061, 0x00323, 0x00000 }; +static unsigned int de01EA2[] = { 0x00041, 0x00309, 0x00000 }; +static unsigned int de01EA3[] = { 0x00061, 0x00309, 0x00000 }; +static unsigned int de01EA4[] = { 0x000C2, 0x00301, 0x00000 }; +static unsigned int de01EA5[] = { 0x000E2, 0x00301, 0x00000 }; +static unsigned int de01EA6[] = { 0x000C2, 0x00300, 0x00000 }; +static unsigned int de01EA7[] = { 0x000E2, 0x00300, 0x00000 }; +static unsigned int de01EA8[] = { 0x000C2, 0x00309, 0x00000 }; +static unsigned int de01EA9[] = { 0x000E2, 0x00309, 0x00000 }; +static unsigned int de01EAA[] = { 0x000C2, 0x00303, 0x00000 }; +static unsigned int de01EAB[] = { 0x000E2, 0x00303, 0x00000 }; +static unsigned int de01EAC[] = { 0x01EA0, 0x00302, 0x00000 }; +static unsigned int de01EAD[] = { 0x01EA1, 0x00302, 0x00000 }; +static unsigned int de01EAE[] = { 0x00102, 0x00301, 0x00000 }; +static unsigned int de01EAF[] = { 0x00103, 0x00301, 0x00000 }; +static unsigned int de01EB0[] = { 0x00102, 0x00300, 0x00000 }; +static unsigned int de01EB1[] = { 0x00103, 0x00300, 0x00000 }; +static unsigned int de01EB2[] = { 0x00102, 0x00309, 0x00000 }; +static unsigned int de01EB3[] = { 0x00103, 0x00309, 0x00000 }; +static unsigned int de01EB4[] = { 0x00102, 0x00303, 0x00000 }; +static unsigned int de01EB5[] = { 0x00103, 0x00303, 0x00000 }; +static unsigned int de01EB6[] = { 0x01EA0, 0x00306, 0x00000 }; +static unsigned int de01EB7[] = { 0x01EA1, 0x00306, 0x00000 }; +static unsigned int de01EB8[] = { 0x00045, 0x00323, 0x00000 }; +static unsigned int de01EB9[] = { 0x00065, 0x00323, 0x00000 }; +static unsigned int de01EBA[] = { 0x00045, 0x00309, 0x00000 }; +static unsigned int de01EBB[] = { 0x00065, 0x00309, 0x00000 }; +static unsigned int de01EBC[] = { 0x00045, 0x00303, 0x00000 }; +static unsigned int de01EBD[] = { 0x00065, 0x00303, 0x00000 }; +static unsigned int de01EBE[] = { 0x000CA, 0x00301, 0x00000 }; +static unsigned int de01EBF[] = { 0x000EA, 0x00301, 0x00000 }; +static unsigned int de01EC0[] = { 0x000CA, 0x00300, 0x00000 }; +static unsigned int de01EC1[] = { 0x000EA, 0x00300, 0x00000 }; +static unsigned int de01EC2[] = { 0x000CA, 0x00309, 0x00000 }; +static unsigned int de01EC3[] = { 0x000EA, 0x00309, 0x00000 }; +static unsigned int de01EC4[] = { 0x000CA, 0x00303, 0x00000 }; +static unsigned int de01EC5[] = { 0x000EA, 0x00303, 0x00000 }; +static unsigned int de01EC6[] = { 0x01EB8, 0x00302, 0x00000 }; +static unsigned int de01EC7[] = { 0x01EB9, 0x00302, 0x00000 }; +static unsigned int de01EC8[] = { 0x00049, 0x00309, 0x00000 }; +static unsigned int de01EC9[] = { 0x00069, 0x00309, 0x00000 }; +static unsigned int de01ECA[] = { 0x00049, 0x00323, 0x00000 }; +static unsigned int de01ECB[] = { 0x00069, 0x00323, 0x00000 }; +static unsigned int de01ECC[] = { 0x0004F, 0x00323, 0x00000 }; +static unsigned int de01ECD[] = { 0x0006F, 0x00323, 0x00000 }; +static unsigned int de01ECE[] = { 0x0004F, 0x00309, 0x00000 }; +static unsigned int de01ECF[] = { 0x0006F, 0x00309, 0x00000 }; +static unsigned int de01ED0[] = { 0x000D4, 0x00301, 0x00000 }; +static unsigned int de01ED1[] = { 0x000F4, 0x00301, 0x00000 }; +static unsigned int de01ED2[] = { 0x000D4, 0x00300, 0x00000 }; +static unsigned int de01ED3[] = { 0x000F4, 0x00300, 0x00000 }; +static unsigned int de01ED4[] = { 0x000D4, 0x00309, 0x00000 }; +static unsigned int de01ED5[] = { 0x000F4, 0x00309, 0x00000 }; +static unsigned int de01ED6[] = { 0x000D4, 0x00303, 0x00000 }; +static unsigned int de01ED7[] = { 0x000F4, 0x00303, 0x00000 }; +static unsigned int de01ED8[] = { 0x01ECC, 0x00302, 0x00000 }; +static unsigned int de01ED9[] = { 0x01ECD, 0x00302, 0x00000 }; +static unsigned int de01EDA[] = { 0x001A0, 0x00301, 0x00000 }; +static unsigned int de01EDB[] = { 0x001A1, 0x00301, 0x00000 }; +static unsigned int de01EDC[] = { 0x001A0, 0x00300, 0x00000 }; +static unsigned int de01EDD[] = { 0x001A1, 0x00300, 0x00000 }; +static unsigned int de01EDE[] = { 0x001A0, 0x00309, 0x00000 }; +static unsigned int de01EDF[] = { 0x001A1, 0x00309, 0x00000 }; +static unsigned int de01EE0[] = { 0x001A0, 0x00303, 0x00000 }; +static unsigned int de01EE1[] = { 0x001A1, 0x00303, 0x00000 }; +static unsigned int de01EE2[] = { 0x001A0, 0x00323, 0x00000 }; +static unsigned int de01EE3[] = { 0x001A1, 0x00323, 0x00000 }; +static unsigned int de01EE4[] = { 0x00055, 0x00323, 0x00000 }; +static unsigned int de01EE5[] = { 0x00075, 0x00323, 0x00000 }; +static unsigned int de01EE6[] = { 0x00055, 0x00309, 0x00000 }; +static unsigned int de01EE7[] = { 0x00075, 0x00309, 0x00000 }; +static unsigned int de01EE8[] = { 0x001AF, 0x00301, 0x00000 }; +static unsigned int de01EE9[] = { 0x001B0, 0x00301, 0x00000 }; +static unsigned int de01EEA[] = { 0x001AF, 0x00300, 0x00000 }; +static unsigned int de01EEB[] = { 0x001B0, 0x00300, 0x00000 }; +static unsigned int de01EEC[] = { 0x001AF, 0x00309, 0x00000 }; +static unsigned int de01EED[] = { 0x001B0, 0x00309, 0x00000 }; +static unsigned int de01EEE[] = { 0x001AF, 0x00303, 0x00000 }; +static unsigned int de01EEF[] = { 0x001B0, 0x00303, 0x00000 }; +static unsigned int de01EF0[] = { 0x001AF, 0x00323, 0x00000 }; +static unsigned int de01EF1[] = { 0x001B0, 0x00323, 0x00000 }; +static unsigned int de01EF2[] = { 0x00059, 0x00300, 0x00000 }; +static unsigned int de01EF3[] = { 0x00079, 0x00300, 0x00000 }; +static unsigned int de01EF4[] = { 0x00059, 0x00323, 0x00000 }; +static unsigned int de01EF5[] = { 0x00079, 0x00323, 0x00000 }; +static unsigned int de01EF6[] = { 0x00059, 0x00309, 0x00000 }; +static unsigned int de01EF7[] = { 0x00079, 0x00309, 0x00000 }; +static unsigned int de01EF8[] = { 0x00059, 0x00303, 0x00000 }; +static unsigned int de01EF9[] = { 0x00079, 0x00303, 0x00000 }; +static unsigned int de01F00[] = { 0x003B1, 0x00313, 0x00000 }; +static unsigned int de01F01[] = { 0x003B1, 0x00314, 0x00000 }; +static unsigned int de01F02[] = { 0x01F00, 0x00300, 0x00000 }; +static unsigned int de01F03[] = { 0x01F01, 0x00300, 0x00000 }; +static unsigned int de01F04[] = { 0x01F00, 0x00301, 0x00000 }; +static unsigned int de01F05[] = { 0x01F01, 0x00301, 0x00000 }; +static unsigned int de01F06[] = { 0x01F00, 0x00342, 0x00000 }; +static unsigned int de01F07[] = { 0x01F01, 0x00342, 0x00000 }; +static unsigned int de01F08[] = { 0x00391, 0x00313, 0x00000 }; +static unsigned int de01F09[] = { 0x00391, 0x00314, 0x00000 }; +static unsigned int de01F0A[] = { 0x01F08, 0x00300, 0x00000 }; +static unsigned int de01F0B[] = { 0x01F09, 0x00300, 0x00000 }; +static unsigned int de01F0C[] = { 0x01F08, 0x00301, 0x00000 }; +static unsigned int de01F0D[] = { 0x01F09, 0x00301, 0x00000 }; +static unsigned int de01F0E[] = { 0x01F08, 0x00342, 0x00000 }; +static unsigned int de01F0F[] = { 0x01F09, 0x00342, 0x00000 }; +static unsigned int de01F10[] = { 0x003B5, 0x00313, 0x00000 }; +static unsigned int de01F11[] = { 0x003B5, 0x00314, 0x00000 }; +static unsigned int de01F12[] = { 0x01F10, 0x00300, 0x00000 }; +static unsigned int de01F13[] = { 0x01F11, 0x00300, 0x00000 }; +static unsigned int de01F14[] = { 0x01F10, 0x00301, 0x00000 }; +static unsigned int de01F15[] = { 0x01F11, 0x00301, 0x00000 }; +static unsigned int de01F18[] = { 0x00395, 0x00313, 0x00000 }; +static unsigned int de01F19[] = { 0x00395, 0x00314, 0x00000 }; +static unsigned int de01F1A[] = { 0x01F18, 0x00300, 0x00000 }; +static unsigned int de01F1B[] = { 0x01F19, 0x00300, 0x00000 }; +static unsigned int de01F1C[] = { 0x01F18, 0x00301, 0x00000 }; +static unsigned int de01F1D[] = { 0x01F19, 0x00301, 0x00000 }; +static unsigned int de01F20[] = { 0x003B7, 0x00313, 0x00000 }; +static unsigned int de01F21[] = { 0x003B7, 0x00314, 0x00000 }; +static unsigned int de01F22[] = { 0x01F20, 0x00300, 0x00000 }; +static unsigned int de01F23[] = { 0x01F21, 0x00300, 0x00000 }; +static unsigned int de01F24[] = { 0x01F20, 0x00301, 0x00000 }; +static unsigned int de01F25[] = { 0x01F21, 0x00301, 0x00000 }; +static unsigned int de01F26[] = { 0x01F20, 0x00342, 0x00000 }; +static unsigned int de01F27[] = { 0x01F21, 0x00342, 0x00000 }; +static unsigned int de01F28[] = { 0x00397, 0x00313, 0x00000 }; +static unsigned int de01F29[] = { 0x00397, 0x00314, 0x00000 }; +static unsigned int de01F2A[] = { 0x01F28, 0x00300, 0x00000 }; +static unsigned int de01F2B[] = { 0x01F29, 0x00300, 0x00000 }; +static unsigned int de01F2C[] = { 0x01F28, 0x00301, 0x00000 }; +static unsigned int de01F2D[] = { 0x01F29, 0x00301, 0x00000 }; +static unsigned int de01F2E[] = { 0x01F28, 0x00342, 0x00000 }; +static unsigned int de01F2F[] = { 0x01F29, 0x00342, 0x00000 }; +static unsigned int de01F30[] = { 0x003B9, 0x00313, 0x00000 }; +static unsigned int de01F31[] = { 0x003B9, 0x00314, 0x00000 }; +static unsigned int de01F32[] = { 0x01F30, 0x00300, 0x00000 }; +static unsigned int de01F33[] = { 0x01F31, 0x00300, 0x00000 }; +static unsigned int de01F34[] = { 0x01F30, 0x00301, 0x00000 }; +static unsigned int de01F35[] = { 0x01F31, 0x00301, 0x00000 }; +static unsigned int de01F36[] = { 0x01F30, 0x00342, 0x00000 }; +static unsigned int de01F37[] = { 0x01F31, 0x00342, 0x00000 }; +static unsigned int de01F38[] = { 0x00399, 0x00313, 0x00000 }; +static unsigned int de01F39[] = { 0x00399, 0x00314, 0x00000 }; +static unsigned int de01F3A[] = { 0x01F38, 0x00300, 0x00000 }; +static unsigned int de01F3B[] = { 0x01F39, 0x00300, 0x00000 }; +static unsigned int de01F3C[] = { 0x01F38, 0x00301, 0x00000 }; +static unsigned int de01F3D[] = { 0x01F39, 0x00301, 0x00000 }; +static unsigned int de01F3E[] = { 0x01F38, 0x00342, 0x00000 }; +static unsigned int de01F3F[] = { 0x01F39, 0x00342, 0x00000 }; +static unsigned int de01F40[] = { 0x003BF, 0x00313, 0x00000 }; +static unsigned int de01F41[] = { 0x003BF, 0x00314, 0x00000 }; +static unsigned int de01F42[] = { 0x01F40, 0x00300, 0x00000 }; +static unsigned int de01F43[] = { 0x01F41, 0x00300, 0x00000 }; +static unsigned int de01F44[] = { 0x01F40, 0x00301, 0x00000 }; +static unsigned int de01F45[] = { 0x01F41, 0x00301, 0x00000 }; +static unsigned int de01F48[] = { 0x0039F, 0x00313, 0x00000 }; +static unsigned int de01F49[] = { 0x0039F, 0x00314, 0x00000 }; +static unsigned int de01F4A[] = { 0x01F48, 0x00300, 0x00000 }; +static unsigned int de01F4B[] = { 0x01F49, 0x00300, 0x00000 }; +static unsigned int de01F4C[] = { 0x01F48, 0x00301, 0x00000 }; +static unsigned int de01F4D[] = { 0x01F49, 0x00301, 0x00000 }; +static unsigned int de01F50[] = { 0x003C5, 0x00313, 0x00000 }; +static unsigned int de01F51[] = { 0x003C5, 0x00314, 0x00000 }; +static unsigned int de01F52[] = { 0x01F50, 0x00300, 0x00000 }; +static unsigned int de01F53[] = { 0x01F51, 0x00300, 0x00000 }; +static unsigned int de01F54[] = { 0x01F50, 0x00301, 0x00000 }; +static unsigned int de01F55[] = { 0x01F51, 0x00301, 0x00000 }; +static unsigned int de01F56[] = { 0x01F50, 0x00342, 0x00000 }; +static unsigned int de01F57[] = { 0x01F51, 0x00342, 0x00000 }; +static unsigned int de01F59[] = { 0x003A5, 0x00314, 0x00000 }; +static unsigned int de01F5B[] = { 0x01F59, 0x00300, 0x00000 }; +static unsigned int de01F5D[] = { 0x01F59, 0x00301, 0x00000 }; +static unsigned int de01F5F[] = { 0x01F59, 0x00342, 0x00000 }; +static unsigned int de01F60[] = { 0x003C9, 0x00313, 0x00000 }; +static unsigned int de01F61[] = { 0x003C9, 0x00314, 0x00000 }; +static unsigned int de01F62[] = { 0x01F60, 0x00300, 0x00000 }; +static unsigned int de01F63[] = { 0x01F61, 0x00300, 0x00000 }; +static unsigned int de01F64[] = { 0x01F60, 0x00301, 0x00000 }; +static unsigned int de01F65[] = { 0x01F61, 0x00301, 0x00000 }; +static unsigned int de01F66[] = { 0x01F60, 0x00342, 0x00000 }; +static unsigned int de01F67[] = { 0x01F61, 0x00342, 0x00000 }; +static unsigned int de01F68[] = { 0x003A9, 0x00313, 0x00000 }; +static unsigned int de01F69[] = { 0x003A9, 0x00314, 0x00000 }; +static unsigned int de01F6A[] = { 0x01F68, 0x00300, 0x00000 }; +static unsigned int de01F6B[] = { 0x01F69, 0x00300, 0x00000 }; +static unsigned int de01F6C[] = { 0x01F68, 0x00301, 0x00000 }; +static unsigned int de01F6D[] = { 0x01F69, 0x00301, 0x00000 }; +static unsigned int de01F6E[] = { 0x01F68, 0x00342, 0x00000 }; +static unsigned int de01F6F[] = { 0x01F69, 0x00342, 0x00000 }; +static unsigned int de01F70[] = { 0x003B1, 0x00300, 0x00000 }; +static unsigned int de01F71[] = { 0x003AC, 0x00000 }; +static unsigned int de01F72[] = { 0x003B5, 0x00300, 0x00000 }; +static unsigned int de01F73[] = { 0x003AD, 0x00000 }; +static unsigned int de01F74[] = { 0x003B7, 0x00300, 0x00000 }; +static unsigned int de01F75[] = { 0x003AE, 0x00000 }; +static unsigned int de01F76[] = { 0x003B9, 0x00300, 0x00000 }; +static unsigned int de01F77[] = { 0x003AF, 0x00000 }; +static unsigned int de01F78[] = { 0x003BF, 0x00300, 0x00000 }; +static unsigned int de01F79[] = { 0x003CC, 0x00000 }; +static unsigned int de01F7A[] = { 0x003C5, 0x00300, 0x00000 }; +static unsigned int de01F7B[] = { 0x003CD, 0x00000 }; +static unsigned int de01F7C[] = { 0x003C9, 0x00300, 0x00000 }; +static unsigned int de01F7D[] = { 0x003CE, 0x00000 }; +static unsigned int de01F80[] = { 0x01F00, 0x00345, 0x00000 }; +static unsigned int de01F81[] = { 0x01F01, 0x00345, 0x00000 }; +static unsigned int de01F82[] = { 0x01F02, 0x00345, 0x00000 }; +static unsigned int de01F83[] = { 0x01F03, 0x00345, 0x00000 }; +static unsigned int de01F84[] = { 0x01F04, 0x00345, 0x00000 }; +static unsigned int de01F85[] = { 0x01F05, 0x00345, 0x00000 }; +static unsigned int de01F86[] = { 0x01F06, 0x00345, 0x00000 }; +static unsigned int de01F87[] = { 0x01F07, 0x00345, 0x00000 }; +static unsigned int de01F88[] = { 0x01F08, 0x00345, 0x00000 }; +static unsigned int de01F89[] = { 0x01F09, 0x00345, 0x00000 }; +static unsigned int de01F8A[] = { 0x01F0A, 0x00345, 0x00000 }; +static unsigned int de01F8B[] = { 0x01F0B, 0x00345, 0x00000 }; +static unsigned int de01F8C[] = { 0x01F0C, 0x00345, 0x00000 }; +static unsigned int de01F8D[] = { 0x01F0D, 0x00345, 0x00000 }; +static unsigned int de01F8E[] = { 0x01F0E, 0x00345, 0x00000 }; +static unsigned int de01F8F[] = { 0x01F0F, 0x00345, 0x00000 }; +static unsigned int de01F90[] = { 0x01F20, 0x00345, 0x00000 }; +static unsigned int de01F91[] = { 0x01F21, 0x00345, 0x00000 }; +static unsigned int de01F92[] = { 0x01F22, 0x00345, 0x00000 }; +static unsigned int de01F93[] = { 0x01F23, 0x00345, 0x00000 }; +static unsigned int de01F94[] = { 0x01F24, 0x00345, 0x00000 }; +static unsigned int de01F95[] = { 0x01F25, 0x00345, 0x00000 }; +static unsigned int de01F96[] = { 0x01F26, 0x00345, 0x00000 }; +static unsigned int de01F97[] = { 0x01F27, 0x00345, 0x00000 }; +static unsigned int de01F98[] = { 0x01F28, 0x00345, 0x00000 }; +static unsigned int de01F99[] = { 0x01F29, 0x00345, 0x00000 }; +static unsigned int de01F9A[] = { 0x01F2A, 0x00345, 0x00000 }; +static unsigned int de01F9B[] = { 0x01F2B, 0x00345, 0x00000 }; +static unsigned int de01F9C[] = { 0x01F2C, 0x00345, 0x00000 }; +static unsigned int de01F9D[] = { 0x01F2D, 0x00345, 0x00000 }; +static unsigned int de01F9E[] = { 0x01F2E, 0x00345, 0x00000 }; +static unsigned int de01F9F[] = { 0x01F2F, 0x00345, 0x00000 }; +static unsigned int de01FA0[] = { 0x01F60, 0x00345, 0x00000 }; +static unsigned int de01FA1[] = { 0x01F61, 0x00345, 0x00000 }; +static unsigned int de01FA2[] = { 0x01F62, 0x00345, 0x00000 }; +static unsigned int de01FA3[] = { 0x01F63, 0x00345, 0x00000 }; +static unsigned int de01FA4[] = { 0x01F64, 0x00345, 0x00000 }; +static unsigned int de01FA5[] = { 0x01F65, 0x00345, 0x00000 }; +static unsigned int de01FA6[] = { 0x01F66, 0x00345, 0x00000 }; +static unsigned int de01FA7[] = { 0x01F67, 0x00345, 0x00000 }; +static unsigned int de01FA8[] = { 0x01F68, 0x00345, 0x00000 }; +static unsigned int de01FA9[] = { 0x01F69, 0x00345, 0x00000 }; +static unsigned int de01FAA[] = { 0x01F6A, 0x00345, 0x00000 }; +static unsigned int de01FAB[] = { 0x01F6B, 0x00345, 0x00000 }; +static unsigned int de01FAC[] = { 0x01F6C, 0x00345, 0x00000 }; +static unsigned int de01FAD[] = { 0x01F6D, 0x00345, 0x00000 }; +static unsigned int de01FAE[] = { 0x01F6E, 0x00345, 0x00000 }; +static unsigned int de01FAF[] = { 0x01F6F, 0x00345, 0x00000 }; +static unsigned int de01FB0[] = { 0x003B1, 0x00306, 0x00000 }; +static unsigned int de01FB1[] = { 0x003B1, 0x00304, 0x00000 }; +static unsigned int de01FB2[] = { 0x01F70, 0x00345, 0x00000 }; +static unsigned int de01FB3[] = { 0x003B1, 0x00345, 0x00000 }; +static unsigned int de01FB4[] = { 0x003AC, 0x00345, 0x00000 }; +static unsigned int de01FB6[] = { 0x003B1, 0x00342, 0x00000 }; +static unsigned int de01FB7[] = { 0x01FB6, 0x00345, 0x00000 }; +static unsigned int de01FB8[] = { 0x00391, 0x00306, 0x00000 }; +static unsigned int de01FB9[] = { 0x00391, 0x00304, 0x00000 }; +static unsigned int de01FBA[] = { 0x00391, 0x00300, 0x00000 }; +static unsigned int de01FBB[] = { 0x00386, 0x00000 }; +static unsigned int de01FBC[] = { 0x00391, 0x00345, 0x00000 }; +static unsigned int de01FBD[] = { 0x00020, 0x00313, 0x00000 }; +static unsigned int de01FBE[] = { 0x003B9, 0x00000 }; +static unsigned int de01FBF[] = { 0x00020, 0x00313, 0x00000 }; +static unsigned int de01FC0[] = { 0x00020, 0x00342, 0x00000 }; +static unsigned int de01FC1[] = { 0x000A8, 0x00342, 0x00000 }; +static unsigned int de01FC2[] = { 0x01F74, 0x00345, 0x00000 }; +static unsigned int de01FC3[] = { 0x003B7, 0x00345, 0x00000 }; +static unsigned int de01FC4[] = { 0x003AE, 0x00345, 0x00000 }; +static unsigned int de01FC6[] = { 0x003B7, 0x00342, 0x00000 }; +static unsigned int de01FC7[] = { 0x01FC6, 0x00345, 0x00000 }; +static unsigned int de01FC8[] = { 0x00395, 0x00300, 0x00000 }; +static unsigned int de01FC9[] = { 0x00388, 0x00000 }; +static unsigned int de01FCA[] = { 0x00397, 0x00300, 0x00000 }; +static unsigned int de01FCB[] = { 0x00389, 0x00000 }; +static unsigned int de01FCC[] = { 0x00397, 0x00345, 0x00000 }; +static unsigned int de01FCD[] = { 0x01FBF, 0x00300, 0x00000 }; +static unsigned int de01FCE[] = { 0x01FBF, 0x00301, 0x00000 }; +static unsigned int de01FCF[] = { 0x01FBF, 0x00342, 0x00000 }; +static unsigned int de01FD0[] = { 0x003B9, 0x00306, 0x00000 }; +static unsigned int de01FD1[] = { 0x003B9, 0x00304, 0x00000 }; +static unsigned int de01FD2[] = { 0x003CA, 0x00300, 0x00000 }; +static unsigned int de01FD3[] = { 0x00390, 0x00000 }; +static unsigned int de01FD6[] = { 0x003B9, 0x00342, 0x00000 }; +static unsigned int de01FD7[] = { 0x003CA, 0x00342, 0x00000 }; +static unsigned int de01FD8[] = { 0x00399, 0x00306, 0x00000 }; +static unsigned int de01FD9[] = { 0x00399, 0x00304, 0x00000 }; +static unsigned int de01FDA[] = { 0x00399, 0x00300, 0x00000 }; +static unsigned int de01FDB[] = { 0x0038A, 0x00000 }; +static unsigned int de01FDD[] = { 0x01FFE, 0x00300, 0x00000 }; +static unsigned int de01FDE[] = { 0x01FFE, 0x00301, 0x00000 }; +static unsigned int de01FDF[] = { 0x01FFE, 0x00342, 0x00000 }; +static unsigned int de01FE0[] = { 0x003C5, 0x00306, 0x00000 }; +static unsigned int de01FE1[] = { 0x003C5, 0x00304, 0x00000 }; +static unsigned int de01FE2[] = { 0x003CB, 0x00300, 0x00000 }; +static unsigned int de01FE3[] = { 0x003B0, 0x00000 }; +static unsigned int de01FE4[] = { 0x003C1, 0x00313, 0x00000 }; +static unsigned int de01FE5[] = { 0x003C1, 0x00314, 0x00000 }; +static unsigned int de01FE6[] = { 0x003C5, 0x00342, 0x00000 }; +static unsigned int de01FE7[] = { 0x003CB, 0x00342, 0x00000 }; +static unsigned int de01FE8[] = { 0x003A5, 0x00306, 0x00000 }; +static unsigned int de01FE9[] = { 0x003A5, 0x00304, 0x00000 }; +static unsigned int de01FEA[] = { 0x003A5, 0x00300, 0x00000 }; +static unsigned int de01FEB[] = { 0x0038E, 0x00000 }; +static unsigned int de01FEC[] = { 0x003A1, 0x00314, 0x00000 }; +static unsigned int de01FED[] = { 0x000A8, 0x00300, 0x00000 }; +static unsigned int de01FEE[] = { 0x00385, 0x00000 }; +static unsigned int de01FEF[] = { 0x00060, 0x00000 }; +static unsigned int de01FF2[] = { 0x01F7C, 0x00345, 0x00000 }; +static unsigned int de01FF3[] = { 0x003C9, 0x00345, 0x00000 }; +static unsigned int de01FF4[] = { 0x003CE, 0x00345, 0x00000 }; +static unsigned int de01FF6[] = { 0x003C9, 0x00342, 0x00000 }; +static unsigned int de01FF7[] = { 0x01FF6, 0x00345, 0x00000 }; +static unsigned int de01FF8[] = { 0x0039F, 0x00300, 0x00000 }; +static unsigned int de01FF9[] = { 0x0038C, 0x00000 }; +static unsigned int de01FFA[] = { 0x003A9, 0x00300, 0x00000 }; +static unsigned int de01FFB[] = { 0x0038F, 0x00000 }; +static unsigned int de01FFC[] = { 0x003A9, 0x00345, 0x00000 }; +static unsigned int de01FFD[] = { 0x000B4, 0x00000 }; +static unsigned int de01FFE[] = { 0x00020, 0x00314, 0x00000 }; +static unsigned int de02000[] = { 0x02002, 0x00000 }; +static unsigned int de02001[] = { 0x02003, 0x00000 }; +static unsigned int de02002[] = { 0x00020, 0x00000 }; +static unsigned int de02003[] = { 0x00020, 0x00000 }; +static unsigned int de02004[] = { 0x00020, 0x00000 }; +static unsigned int de02005[] = { 0x00020, 0x00000 }; +static unsigned int de02006[] = { 0x00020, 0x00000 }; +static unsigned int de02007[] = { 0x00020, 0x00000 }; +static unsigned int de02008[] = { 0x00020, 0x00000 }; +static unsigned int de02009[] = { 0x00020, 0x00000 }; +static unsigned int de0200A[] = { 0x00020, 0x00000 }; +static unsigned int de02011[] = { 0x02010, 0x00000 }; +static unsigned int de02017[] = { 0x00020, 0x00333, 0x00000 }; +static unsigned int de02024[] = { 0x0002E, 0x00000 }; +static unsigned int de02025[] = { 0x0002E, 0x0002E, 0x00000 }; +static unsigned int de02026[] = { 0x0002E, 0x0002E, 0x0002E, 0x00000 }; +static unsigned int de0202F[] = { 0x00020, 0x00000 }; +static unsigned int de02033[] = { 0x02032, 0x02032, 0x00000 }; +static unsigned int de02034[] = { 0x02032, 0x02032, 0x02032, 0x00000 }; +static unsigned int de02036[] = { 0x02035, 0x02035, 0x00000 }; +static unsigned int de02037[] = { 0x02035, 0x02035, 0x02035, 0x00000 }; +static unsigned int de0203C[] = { 0x00021, 0x00021, 0x00000 }; +static unsigned int de0203E[] = { 0x00020, 0x00305, 0x00000 }; +static unsigned int de02047[] = { 0x0003F, 0x0003F, 0x00000 }; +static unsigned int de02048[] = { 0x0003F, 0x00021, 0x00000 }; +static unsigned int de02049[] = { 0x00021, 0x0003F, 0x00000 }; +static unsigned int de02057[] = { 0x02032, 0x02032, 0x02032, 0x02032, 0x00000 }; +static unsigned int de0205F[] = { 0x00020, 0x00000 }; +static unsigned int de02070[] = { 0x00030, 0x00000 }; +static unsigned int de02071[] = { 0x00069, 0x00000 }; +static unsigned int de02074[] = { 0x00034, 0x00000 }; +static unsigned int de02075[] = { 0x00035, 0x00000 }; +static unsigned int de02076[] = { 0x00036, 0x00000 }; +static unsigned int de02077[] = { 0x00037, 0x00000 }; +static unsigned int de02078[] = { 0x00038, 0x00000 }; +static unsigned int de02079[] = { 0x00039, 0x00000 }; +static unsigned int de0207A[] = { 0x0002B, 0x00000 }; +static unsigned int de0207B[] = { 0x02212, 0x00000 }; +static unsigned int de0207C[] = { 0x0003D, 0x00000 }; +static unsigned int de0207D[] = { 0x00028, 0x00000 }; +static unsigned int de0207E[] = { 0x00029, 0x00000 }; +static unsigned int de0207F[] = { 0x0006E, 0x00000 }; +static unsigned int de02080[] = { 0x00030, 0x00000 }; +static unsigned int de02081[] = { 0x00031, 0x00000 }; +static unsigned int de02082[] = { 0x00032, 0x00000 }; +static unsigned int de02083[] = { 0x00033, 0x00000 }; +static unsigned int de02084[] = { 0x00034, 0x00000 }; +static unsigned int de02085[] = { 0x00035, 0x00000 }; +static unsigned int de02086[] = { 0x00036, 0x00000 }; +static unsigned int de02087[] = { 0x00037, 0x00000 }; +static unsigned int de02088[] = { 0x00038, 0x00000 }; +static unsigned int de02089[] = { 0x00039, 0x00000 }; +static unsigned int de0208A[] = { 0x0002B, 0x00000 }; +static unsigned int de0208B[] = { 0x02212, 0x00000 }; +static unsigned int de0208C[] = { 0x0003D, 0x00000 }; +static unsigned int de0208D[] = { 0x00028, 0x00000 }; +static unsigned int de0208E[] = { 0x00029, 0x00000 }; +static unsigned int de02090[] = { 0x00061, 0x00000 }; +static unsigned int de02091[] = { 0x00065, 0x00000 }; +static unsigned int de02092[] = { 0x0006F, 0x00000 }; +static unsigned int de02093[] = { 0x00078, 0x00000 }; +static unsigned int de02094[] = { 0x00259, 0x00000 }; +static unsigned int de020A8[] = { 0x00052, 0x00073, 0x00000 }; +static unsigned int de02100[] = { 0x00061, 0x0002F, 0x00063, 0x00000 }; +static unsigned int de02101[] = { 0x00061, 0x0002F, 0x00073, 0x00000 }; +static unsigned int de02102[] = { 0x00043, 0x00000 }; +static unsigned int de02103[] = { 0x000B0, 0x00043, 0x00000 }; +static unsigned int de02105[] = { 0x00063, 0x0002F, 0x0006F, 0x00000 }; +static unsigned int de02106[] = { 0x00063, 0x0002F, 0x00075, 0x00000 }; +static unsigned int de02107[] = { 0x00190, 0x00000 }; +static unsigned int de02109[] = { 0x000B0, 0x00046, 0x00000 }; +static unsigned int de0210A[] = { 0x00067, 0x00000 }; +static unsigned int de0210B[] = { 0x00048, 0x00000 }; +static unsigned int de0210C[] = { 0x00048, 0x00000 }; +static unsigned int de0210D[] = { 0x00048, 0x00000 }; +static unsigned int de0210E[] = { 0x00068, 0x00000 }; +static unsigned int de0210F[] = { 0x00127, 0x00000 }; +static unsigned int de02110[] = { 0x00049, 0x00000 }; +static unsigned int de02111[] = { 0x00049, 0x00000 }; +static unsigned int de02112[] = { 0x0004C, 0x00000 }; +static unsigned int de02113[] = { 0x0006C, 0x00000 }; +static unsigned int de02115[] = { 0x0004E, 0x00000 }; +static unsigned int de02116[] = { 0x0004E, 0x0006F, 0x00000 }; +static unsigned int de02119[] = { 0x00050, 0x00000 }; +static unsigned int de0211A[] = { 0x00051, 0x00000 }; +static unsigned int de0211B[] = { 0x00052, 0x00000 }; +static unsigned int de0211C[] = { 0x00052, 0x00000 }; +static unsigned int de0211D[] = { 0x00052, 0x00000 }; +static unsigned int de02120[] = { 0x00053, 0x0004D, 0x00000 }; +static unsigned int de02121[] = { 0x00054, 0x00045, 0x0004C, 0x00000 }; +static unsigned int de02122[] = { 0x00054, 0x0004D, 0x00000 }; +static unsigned int de02124[] = { 0x0005A, 0x00000 }; +static unsigned int de02126[] = { 0x003A9, 0x00000 }; +static unsigned int de02128[] = { 0x0005A, 0x00000 }; +static unsigned int de0212A[] = { 0x0004B, 0x00000 }; +static unsigned int de0212B[] = { 0x000C5, 0x00000 }; +static unsigned int de0212C[] = { 0x00042, 0x00000 }; +static unsigned int de0212D[] = { 0x00043, 0x00000 }; +static unsigned int de0212F[] = { 0x00065, 0x00000 }; +static unsigned int de02130[] = { 0x00045, 0x00000 }; +static unsigned int de02131[] = { 0x00046, 0x00000 }; +static unsigned int de02133[] = { 0x0004D, 0x00000 }; +static unsigned int de02134[] = { 0x0006F, 0x00000 }; +static unsigned int de02135[] = { 0x005D0, 0x00000 }; +static unsigned int de02136[] = { 0x005D1, 0x00000 }; +static unsigned int de02137[] = { 0x005D2, 0x00000 }; +static unsigned int de02138[] = { 0x005D3, 0x00000 }; +static unsigned int de02139[] = { 0x00069, 0x00000 }; +static unsigned int de0213B[] = { 0x00046, 0x00041, 0x00058, 0x00000 }; +static unsigned int de0213C[] = { 0x003C0, 0x00000 }; +static unsigned int de0213D[] = { 0x003B3, 0x00000 }; +static unsigned int de0213E[] = { 0x00393, 0x00000 }; +static unsigned int de0213F[] = { 0x003A0, 0x00000 }; +static unsigned int de02140[] = { 0x02211, 0x00000 }; +static unsigned int de02145[] = { 0x00044, 0x00000 }; +static unsigned int de02146[] = { 0x00064, 0x00000 }; +static unsigned int de02147[] = { 0x00065, 0x00000 }; +static unsigned int de02148[] = { 0x00069, 0x00000 }; +static unsigned int de02149[] = { 0x0006A, 0x00000 }; +static unsigned int de02153[] = { 0x00031, 0x02044, 0x00033, 0x00000 }; +static unsigned int de02154[] = { 0x00032, 0x02044, 0x00033, 0x00000 }; +static unsigned int de02155[] = { 0x00031, 0x02044, 0x00035, 0x00000 }; +static unsigned int de02156[] = { 0x00032, 0x02044, 0x00035, 0x00000 }; +static unsigned int de02157[] = { 0x00033, 0x02044, 0x00035, 0x00000 }; +static unsigned int de02158[] = { 0x00034, 0x02044, 0x00035, 0x00000 }; +static unsigned int de02159[] = { 0x00031, 0x02044, 0x00036, 0x00000 }; +static unsigned int de0215A[] = { 0x00035, 0x02044, 0x00036, 0x00000 }; +static unsigned int de0215B[] = { 0x00031, 0x02044, 0x00038, 0x00000 }; +static unsigned int de0215C[] = { 0x00033, 0x02044, 0x00038, 0x00000 }; +static unsigned int de0215D[] = { 0x00035, 0x02044, 0x00038, 0x00000 }; +static unsigned int de0215E[] = { 0x00037, 0x02044, 0x00038, 0x00000 }; +static unsigned int de0215F[] = { 0x00031, 0x02044, 0x00000 }; +static unsigned int de02160[] = { 0x00049, 0x00000 }; +static unsigned int de02161[] = { 0x00049, 0x00049, 0x00000 }; +static unsigned int de02162[] = { 0x00049, 0x00049, 0x00049, 0x00000 }; +static unsigned int de02163[] = { 0x00049, 0x00056, 0x00000 }; +static unsigned int de02164[] = { 0x00056, 0x00000 }; +static unsigned int de02165[] = { 0x00056, 0x00049, 0x00000 }; +static unsigned int de02166[] = { 0x00056, 0x00049, 0x00049, 0x00000 }; +static unsigned int de02167[] = { 0x00056, 0x00049, 0x00049, 0x00049, 0x00000 }; +static unsigned int de02168[] = { 0x00049, 0x00058, 0x00000 }; +static unsigned int de02169[] = { 0x00058, 0x00000 }; +static unsigned int de0216A[] = { 0x00058, 0x00049, 0x00000 }; +static unsigned int de0216B[] = { 0x00058, 0x00049, 0x00049, 0x00000 }; +static unsigned int de0216C[] = { 0x0004C, 0x00000 }; +static unsigned int de0216D[] = { 0x00043, 0x00000 }; +static unsigned int de0216E[] = { 0x00044, 0x00000 }; +static unsigned int de0216F[] = { 0x0004D, 0x00000 }; +static unsigned int de02170[] = { 0x00069, 0x00000 }; +static unsigned int de02171[] = { 0x00069, 0x00069, 0x00000 }; +static unsigned int de02172[] = { 0x00069, 0x00069, 0x00069, 0x00000 }; +static unsigned int de02173[] = { 0x00069, 0x00076, 0x00000 }; +static unsigned int de02174[] = { 0x00076, 0x00000 }; +static unsigned int de02175[] = { 0x00076, 0x00069, 0x00000 }; +static unsigned int de02176[] = { 0x00076, 0x00069, 0x00069, 0x00000 }; +static unsigned int de02177[] = { 0x00076, 0x00069, 0x00069, 0x00069, 0x00000 }; +static unsigned int de02178[] = { 0x00069, 0x00078, 0x00000 }; +static unsigned int de02179[] = { 0x00078, 0x00000 }; +static unsigned int de0217A[] = { 0x00078, 0x00069, 0x00000 }; +static unsigned int de0217B[] = { 0x00078, 0x00069, 0x00069, 0x00000 }; +static unsigned int de0217C[] = { 0x0006C, 0x00000 }; +static unsigned int de0217D[] = { 0x00063, 0x00000 }; +static unsigned int de0217E[] = { 0x00064, 0x00000 }; +static unsigned int de0217F[] = { 0x0006D, 0x00000 }; +static unsigned int de0219A[] = { 0x02190, 0x00338, 0x00000 }; +static unsigned int de0219B[] = { 0x02192, 0x00338, 0x00000 }; +static unsigned int de021AE[] = { 0x02194, 0x00338, 0x00000 }; +static unsigned int de021CD[] = { 0x021D0, 0x00338, 0x00000 }; +static unsigned int de021CE[] = { 0x021D4, 0x00338, 0x00000 }; +static unsigned int de021CF[] = { 0x021D2, 0x00338, 0x00000 }; +static unsigned int de02204[] = { 0x02203, 0x00338, 0x00000 }; +static unsigned int de02209[] = { 0x02208, 0x00338, 0x00000 }; +static unsigned int de0220C[] = { 0x0220B, 0x00338, 0x00000 }; +static unsigned int de02224[] = { 0x02223, 0x00338, 0x00000 }; +static unsigned int de02226[] = { 0x02225, 0x00338, 0x00000 }; +static unsigned int de0222C[] = { 0x0222B, 0x0222B, 0x00000 }; +static unsigned int de0222D[] = { 0x0222B, 0x0222B, 0x0222B, 0x00000 }; +static unsigned int de0222F[] = { 0x0222E, 0x0222E, 0x00000 }; +static unsigned int de02230[] = { 0x0222E, 0x0222E, 0x0222E, 0x00000 }; +static unsigned int de02241[] = { 0x0223C, 0x00338, 0x00000 }; +static unsigned int de02244[] = { 0x02243, 0x00338, 0x00000 }; +static unsigned int de02247[] = { 0x02245, 0x00338, 0x00000 }; +static unsigned int de02249[] = { 0x02248, 0x00338, 0x00000 }; +static unsigned int de02260[] = { 0x0003D, 0x00338, 0x00000 }; +static unsigned int de02262[] = { 0x02261, 0x00338, 0x00000 }; +static unsigned int de0226D[] = { 0x0224D, 0x00338, 0x00000 }; +static unsigned int de0226E[] = { 0x0003C, 0x00338, 0x00000 }; +static unsigned int de0226F[] = { 0x0003E, 0x00338, 0x00000 }; +static unsigned int de02270[] = { 0x02264, 0x00338, 0x00000 }; +static unsigned int de02271[] = { 0x02265, 0x00338, 0x00000 }; +static unsigned int de02274[] = { 0x02272, 0x00338, 0x00000 }; +static unsigned int de02275[] = { 0x02273, 0x00338, 0x00000 }; +static unsigned int de02278[] = { 0x02276, 0x00338, 0x00000 }; +static unsigned int de02279[] = { 0x02277, 0x00338, 0x00000 }; +static unsigned int de02280[] = { 0x0227A, 0x00338, 0x00000 }; +static unsigned int de02281[] = { 0x0227B, 0x00338, 0x00000 }; +static unsigned int de02284[] = { 0x02282, 0x00338, 0x00000 }; +static unsigned int de02285[] = { 0x02283, 0x00338, 0x00000 }; +static unsigned int de02288[] = { 0x02286, 0x00338, 0x00000 }; +static unsigned int de02289[] = { 0x02287, 0x00338, 0x00000 }; +static unsigned int de022AC[] = { 0x022A2, 0x00338, 0x00000 }; +static unsigned int de022AD[] = { 0x022A8, 0x00338, 0x00000 }; +static unsigned int de022AE[] = { 0x022A9, 0x00338, 0x00000 }; +static unsigned int de022AF[] = { 0x022AB, 0x00338, 0x00000 }; +static unsigned int de022E0[] = { 0x0227C, 0x00338, 0x00000 }; +static unsigned int de022E1[] = { 0x0227D, 0x00338, 0x00000 }; +static unsigned int de022E2[] = { 0x02291, 0x00338, 0x00000 }; +static unsigned int de022E3[] = { 0x02292, 0x00338, 0x00000 }; +static unsigned int de022EA[] = { 0x022B2, 0x00338, 0x00000 }; +static unsigned int de022EB[] = { 0x022B3, 0x00338, 0x00000 }; +static unsigned int de022EC[] = { 0x022B4, 0x00338, 0x00000 }; +static unsigned int de022ED[] = { 0x022B5, 0x00338, 0x00000 }; +static unsigned int de02329[] = { 0x03008, 0x00000 }; +static unsigned int de0232A[] = { 0x03009, 0x00000 }; +static unsigned int de02460[] = { 0x00031, 0x00000 }; +static unsigned int de02461[] = { 0x00032, 0x00000 }; +static unsigned int de02462[] = { 0x00033, 0x00000 }; +static unsigned int de02463[] = { 0x00034, 0x00000 }; +static unsigned int de02464[] = { 0x00035, 0x00000 }; +static unsigned int de02465[] = { 0x00036, 0x00000 }; +static unsigned int de02466[] = { 0x00037, 0x00000 }; +static unsigned int de02467[] = { 0x00038, 0x00000 }; +static unsigned int de02468[] = { 0x00039, 0x00000 }; +static unsigned int de02469[] = { 0x00031, 0x00030, 0x00000 }; +static unsigned int de0246A[] = { 0x00031, 0x00031, 0x00000 }; +static unsigned int de0246B[] = { 0x00031, 0x00032, 0x00000 }; +static unsigned int de0246C[] = { 0x00031, 0x00033, 0x00000 }; +static unsigned int de0246D[] = { 0x00031, 0x00034, 0x00000 }; +static unsigned int de0246E[] = { 0x00031, 0x00035, 0x00000 }; +static unsigned int de0246F[] = { 0x00031, 0x00036, 0x00000 }; +static unsigned int de02470[] = { 0x00031, 0x00037, 0x00000 }; +static unsigned int de02471[] = { 0x00031, 0x00038, 0x00000 }; +static unsigned int de02472[] = { 0x00031, 0x00039, 0x00000 }; +static unsigned int de02473[] = { 0x00032, 0x00030, 0x00000 }; +static unsigned int de02474[] = { 0x00028, 0x00031, 0x00029, 0x00000 }; +static unsigned int de02475[] = { 0x00028, 0x00032, 0x00029, 0x00000 }; +static unsigned int de02476[] = { 0x00028, 0x00033, 0x00029, 0x00000 }; +static unsigned int de02477[] = { 0x00028, 0x00034, 0x00029, 0x00000 }; +static unsigned int de02478[] = { 0x00028, 0x00035, 0x00029, 0x00000 }; +static unsigned int de02479[] = { 0x00028, 0x00036, 0x00029, 0x00000 }; +static unsigned int de0247A[] = { 0x00028, 0x00037, 0x00029, 0x00000 }; +static unsigned int de0247B[] = { 0x00028, 0x00038, 0x00029, 0x00000 }; +static unsigned int de0247C[] = { 0x00028, 0x00039, 0x00029, 0x00000 }; +static unsigned int de0247D[] = { 0x00028, 0x00031, 0x00030, 0x00029, 0x00000 }; +static unsigned int de0247E[] = { 0x00028, 0x00031, 0x00031, 0x00029, 0x00000 }; +static unsigned int de0247F[] = { 0x00028, 0x00031, 0x00032, 0x00029, 0x00000 }; +static unsigned int de02480[] = { 0x00028, 0x00031, 0x00033, 0x00029, 0x00000 }; +static unsigned int de02481[] = { 0x00028, 0x00031, 0x00034, 0x00029, 0x00000 }; +static unsigned int de02482[] = { 0x00028, 0x00031, 0x00035, 0x00029, 0x00000 }; +static unsigned int de02483[] = { 0x00028, 0x00031, 0x00036, 0x00029, 0x00000 }; +static unsigned int de02484[] = { 0x00028, 0x00031, 0x00037, 0x00029, 0x00000 }; +static unsigned int de02485[] = { 0x00028, 0x00031, 0x00038, 0x00029, 0x00000 }; +static unsigned int de02486[] = { 0x00028, 0x00031, 0x00039, 0x00029, 0x00000 }; +static unsigned int de02487[] = { 0x00028, 0x00032, 0x00030, 0x00029, 0x00000 }; +static unsigned int de02488[] = { 0x00031, 0x0002E, 0x00000 }; +static unsigned int de02489[] = { 0x00032, 0x0002E, 0x00000 }; +static unsigned int de0248A[] = { 0x00033, 0x0002E, 0x00000 }; +static unsigned int de0248B[] = { 0x00034, 0x0002E, 0x00000 }; +static unsigned int de0248C[] = { 0x00035, 0x0002E, 0x00000 }; +static unsigned int de0248D[] = { 0x00036, 0x0002E, 0x00000 }; +static unsigned int de0248E[] = { 0x00037, 0x0002E, 0x00000 }; +static unsigned int de0248F[] = { 0x00038, 0x0002E, 0x00000 }; +static unsigned int de02490[] = { 0x00039, 0x0002E, 0x00000 }; +static unsigned int de02491[] = { 0x00031, 0x00030, 0x0002E, 0x00000 }; +static unsigned int de02492[] = { 0x00031, 0x00031, 0x0002E, 0x00000 }; +static unsigned int de02493[] = { 0x00031, 0x00032, 0x0002E, 0x00000 }; +static unsigned int de02494[] = { 0x00031, 0x00033, 0x0002E, 0x00000 }; +static unsigned int de02495[] = { 0x00031, 0x00034, 0x0002E, 0x00000 }; +static unsigned int de02496[] = { 0x00031, 0x00035, 0x0002E, 0x00000 }; +static unsigned int de02497[] = { 0x00031, 0x00036, 0x0002E, 0x00000 }; +static unsigned int de02498[] = { 0x00031, 0x00037, 0x0002E, 0x00000 }; +static unsigned int de02499[] = { 0x00031, 0x00038, 0x0002E, 0x00000 }; +static unsigned int de0249A[] = { 0x00031, 0x00039, 0x0002E, 0x00000 }; +static unsigned int de0249B[] = { 0x00032, 0x00030, 0x0002E, 0x00000 }; +static unsigned int de0249C[] = { 0x00028, 0x00061, 0x00029, 0x00000 }; +static unsigned int de0249D[] = { 0x00028, 0x00062, 0x00029, 0x00000 }; +static unsigned int de0249E[] = { 0x00028, 0x00063, 0x00029, 0x00000 }; +static unsigned int de0249F[] = { 0x00028, 0x00064, 0x00029, 0x00000 }; +static unsigned int de024A0[] = { 0x00028, 0x00065, 0x00029, 0x00000 }; +static unsigned int de024A1[] = { 0x00028, 0x00066, 0x00029, 0x00000 }; +static unsigned int de024A2[] = { 0x00028, 0x00067, 0x00029, 0x00000 }; +static unsigned int de024A3[] = { 0x00028, 0x00068, 0x00029, 0x00000 }; +static unsigned int de024A4[] = { 0x00028, 0x00069, 0x00029, 0x00000 }; +static unsigned int de024A5[] = { 0x00028, 0x0006A, 0x00029, 0x00000 }; +static unsigned int de024A6[] = { 0x00028, 0x0006B, 0x00029, 0x00000 }; +static unsigned int de024A7[] = { 0x00028, 0x0006C, 0x00029, 0x00000 }; +static unsigned int de024A8[] = { 0x00028, 0x0006D, 0x00029, 0x00000 }; +static unsigned int de024A9[] = { 0x00028, 0x0006E, 0x00029, 0x00000 }; +static unsigned int de024AA[] = { 0x00028, 0x0006F, 0x00029, 0x00000 }; +static unsigned int de024AB[] = { 0x00028, 0x00070, 0x00029, 0x00000 }; +static unsigned int de024AC[] = { 0x00028, 0x00071, 0x00029, 0x00000 }; +static unsigned int de024AD[] = { 0x00028, 0x00072, 0x00029, 0x00000 }; +static unsigned int de024AE[] = { 0x00028, 0x00073, 0x00029, 0x00000 }; +static unsigned int de024AF[] = { 0x00028, 0x00074, 0x00029, 0x00000 }; +static unsigned int de024B0[] = { 0x00028, 0x00075, 0x00029, 0x00000 }; +static unsigned int de024B1[] = { 0x00028, 0x00076, 0x00029, 0x00000 }; +static unsigned int de024B2[] = { 0x00028, 0x00077, 0x00029, 0x00000 }; +static unsigned int de024B3[] = { 0x00028, 0x00078, 0x00029, 0x00000 }; +static unsigned int de024B4[] = { 0x00028, 0x00079, 0x00029, 0x00000 }; +static unsigned int de024B5[] = { 0x00028, 0x0007A, 0x00029, 0x00000 }; +static unsigned int de024B6[] = { 0x00041, 0x00000 }; +static unsigned int de024B7[] = { 0x00042, 0x00000 }; +static unsigned int de024B8[] = { 0x00043, 0x00000 }; +static unsigned int de024B9[] = { 0x00044, 0x00000 }; +static unsigned int de024BA[] = { 0x00045, 0x00000 }; +static unsigned int de024BB[] = { 0x00046, 0x00000 }; +static unsigned int de024BC[] = { 0x00047, 0x00000 }; +static unsigned int de024BD[] = { 0x00048, 0x00000 }; +static unsigned int de024BE[] = { 0x00049, 0x00000 }; +static unsigned int de024BF[] = { 0x0004A, 0x00000 }; +static unsigned int de024C0[] = { 0x0004B, 0x00000 }; +static unsigned int de024C1[] = { 0x0004C, 0x00000 }; +static unsigned int de024C2[] = { 0x0004D, 0x00000 }; +static unsigned int de024C3[] = { 0x0004E, 0x00000 }; +static unsigned int de024C4[] = { 0x0004F, 0x00000 }; +static unsigned int de024C5[] = { 0x00050, 0x00000 }; +static unsigned int de024C6[] = { 0x00051, 0x00000 }; +static unsigned int de024C7[] = { 0x00052, 0x00000 }; +static unsigned int de024C8[] = { 0x00053, 0x00000 }; +static unsigned int de024C9[] = { 0x00054, 0x00000 }; +static unsigned int de024CA[] = { 0x00055, 0x00000 }; +static unsigned int de024CB[] = { 0x00056, 0x00000 }; +static unsigned int de024CC[] = { 0x00057, 0x00000 }; +static unsigned int de024CD[] = { 0x00058, 0x00000 }; +static unsigned int de024CE[] = { 0x00059, 0x00000 }; +static unsigned int de024CF[] = { 0x0005A, 0x00000 }; +static unsigned int de024D0[] = { 0x00061, 0x00000 }; +static unsigned int de024D1[] = { 0x00062, 0x00000 }; +static unsigned int de024D2[] = { 0x00063, 0x00000 }; +static unsigned int de024D3[] = { 0x00064, 0x00000 }; +static unsigned int de024D4[] = { 0x00065, 0x00000 }; +static unsigned int de024D5[] = { 0x00066, 0x00000 }; +static unsigned int de024D6[] = { 0x00067, 0x00000 }; +static unsigned int de024D7[] = { 0x00068, 0x00000 }; +static unsigned int de024D8[] = { 0x00069, 0x00000 }; +static unsigned int de024D9[] = { 0x0006A, 0x00000 }; +static unsigned int de024DA[] = { 0x0006B, 0x00000 }; +static unsigned int de024DB[] = { 0x0006C, 0x00000 }; +static unsigned int de024DC[] = { 0x0006D, 0x00000 }; +static unsigned int de024DD[] = { 0x0006E, 0x00000 }; +static unsigned int de024DE[] = { 0x0006F, 0x00000 }; +static unsigned int de024DF[] = { 0x00070, 0x00000 }; +static unsigned int de024E0[] = { 0x00071, 0x00000 }; +static unsigned int de024E1[] = { 0x00072, 0x00000 }; +static unsigned int de024E2[] = { 0x00073, 0x00000 }; +static unsigned int de024E3[] = { 0x00074, 0x00000 }; +static unsigned int de024E4[] = { 0x00075, 0x00000 }; +static unsigned int de024E5[] = { 0x00076, 0x00000 }; +static unsigned int de024E6[] = { 0x00077, 0x00000 }; +static unsigned int de024E7[] = { 0x00078, 0x00000 }; +static unsigned int de024E8[] = { 0x00079, 0x00000 }; +static unsigned int de024E9[] = { 0x0007A, 0x00000 }; +static unsigned int de024EA[] = { 0x00030, 0x00000 }; +static unsigned int de02A0C[] = { 0x0222B, 0x0222B, 0x0222B, 0x0222B, 0x00000 }; +static unsigned int de02A74[] = { 0x0003A, 0x0003A, 0x0003D, 0x00000 }; +static unsigned int de02A75[] = { 0x0003D, 0x0003D, 0x00000 }; +static unsigned int de02A76[] = { 0x0003D, 0x0003D, 0x0003D, 0x00000 }; +static unsigned int de02ADC[] = { 0x02ADD, 0x00338, 0x00000 }; +static unsigned int de02D6F[] = { 0x02D61, 0x00000 }; +static unsigned int de02E9F[] = { 0x06BCD, 0x00000 }; +static unsigned int de02EF3[] = { 0x09F9F, 0x00000 }; +static unsigned int de02F00[] = { 0x04E00, 0x00000 }; +static unsigned int de02F01[] = { 0x04E28, 0x00000 }; +static unsigned int de02F02[] = { 0x04E36, 0x00000 }; +static unsigned int de02F03[] = { 0x04E3F, 0x00000 }; +static unsigned int de02F04[] = { 0x04E59, 0x00000 }; +static unsigned int de02F05[] = { 0x04E85, 0x00000 }; +static unsigned int de02F06[] = { 0x04E8C, 0x00000 }; +static unsigned int de02F07[] = { 0x04EA0, 0x00000 }; +static unsigned int de02F08[] = { 0x04EBA, 0x00000 }; +static unsigned int de02F09[] = { 0x0513F, 0x00000 }; +static unsigned int de02F0A[] = { 0x05165, 0x00000 }; +static unsigned int de02F0B[] = { 0x0516B, 0x00000 }; +static unsigned int de02F0C[] = { 0x05182, 0x00000 }; +static unsigned int de02F0D[] = { 0x05196, 0x00000 }; +static unsigned int de02F0E[] = { 0x051AB, 0x00000 }; +static unsigned int de02F0F[] = { 0x051E0, 0x00000 }; +static unsigned int de02F10[] = { 0x051F5, 0x00000 }; +static unsigned int de02F11[] = { 0x05200, 0x00000 }; +static unsigned int de02F12[] = { 0x0529B, 0x00000 }; +static unsigned int de02F13[] = { 0x052F9, 0x00000 }; +static unsigned int de02F14[] = { 0x05315, 0x00000 }; +static unsigned int de02F15[] = { 0x0531A, 0x00000 }; +static unsigned int de02F16[] = { 0x05338, 0x00000 }; +static unsigned int de02F17[] = { 0x05341, 0x00000 }; +static unsigned int de02F18[] = { 0x0535C, 0x00000 }; +static unsigned int de02F19[] = { 0x05369, 0x00000 }; +static unsigned int de02F1A[] = { 0x05382, 0x00000 }; +static unsigned int de02F1B[] = { 0x053B6, 0x00000 }; +static unsigned int de02F1C[] = { 0x053C8, 0x00000 }; +static unsigned int de02F1D[] = { 0x053E3, 0x00000 }; +static unsigned int de02F1E[] = { 0x056D7, 0x00000 }; +static unsigned int de02F1F[] = { 0x0571F, 0x00000 }; +static unsigned int de02F20[] = { 0x058EB, 0x00000 }; +static unsigned int de02F21[] = { 0x05902, 0x00000 }; +static unsigned int de02F22[] = { 0x0590A, 0x00000 }; +static unsigned int de02F23[] = { 0x05915, 0x00000 }; +static unsigned int de02F24[] = { 0x05927, 0x00000 }; +static unsigned int de02F25[] = { 0x05973, 0x00000 }; +static unsigned int de02F26[] = { 0x05B50, 0x00000 }; +static unsigned int de02F27[] = { 0x05B80, 0x00000 }; +static unsigned int de02F28[] = { 0x05BF8, 0x00000 }; +static unsigned int de02F29[] = { 0x05C0F, 0x00000 }; +static unsigned int de02F2A[] = { 0x05C22, 0x00000 }; +static unsigned int de02F2B[] = { 0x05C38, 0x00000 }; +static unsigned int de02F2C[] = { 0x05C6E, 0x00000 }; +static unsigned int de02F2D[] = { 0x05C71, 0x00000 }; +static unsigned int de02F2E[] = { 0x05DDB, 0x00000 }; +static unsigned int de02F2F[] = { 0x05DE5, 0x00000 }; +static unsigned int de02F30[] = { 0x05DF1, 0x00000 }; +static unsigned int de02F31[] = { 0x05DFE, 0x00000 }; +static unsigned int de02F32[] = { 0x05E72, 0x00000 }; +static unsigned int de02F33[] = { 0x05E7A, 0x00000 }; +static unsigned int de02F34[] = { 0x05E7F, 0x00000 }; +static unsigned int de02F35[] = { 0x05EF4, 0x00000 }; +static unsigned int de02F36[] = { 0x05EFE, 0x00000 }; +static unsigned int de02F37[] = { 0x05F0B, 0x00000 }; +static unsigned int de02F38[] = { 0x05F13, 0x00000 }; +static unsigned int de02F39[] = { 0x05F50, 0x00000 }; +static unsigned int de02F3A[] = { 0x05F61, 0x00000 }; +static unsigned int de02F3B[] = { 0x05F73, 0x00000 }; +static unsigned int de02F3C[] = { 0x05FC3, 0x00000 }; +static unsigned int de02F3D[] = { 0x06208, 0x00000 }; +static unsigned int de02F3E[] = { 0x06236, 0x00000 }; +static unsigned int de02F3F[] = { 0x0624B, 0x00000 }; +static unsigned int de02F40[] = { 0x0652F, 0x00000 }; +static unsigned int de02F41[] = { 0x06534, 0x00000 }; +static unsigned int de02F42[] = { 0x06587, 0x00000 }; +static unsigned int de02F43[] = { 0x06597, 0x00000 }; +static unsigned int de02F44[] = { 0x065A4, 0x00000 }; +static unsigned int de02F45[] = { 0x065B9, 0x00000 }; +static unsigned int de02F46[] = { 0x065E0, 0x00000 }; +static unsigned int de02F47[] = { 0x065E5, 0x00000 }; +static unsigned int de02F48[] = { 0x066F0, 0x00000 }; +static unsigned int de02F49[] = { 0x06708, 0x00000 }; +static unsigned int de02F4A[] = { 0x06728, 0x00000 }; +static unsigned int de02F4B[] = { 0x06B20, 0x00000 }; +static unsigned int de02F4C[] = { 0x06B62, 0x00000 }; +static unsigned int de02F4D[] = { 0x06B79, 0x00000 }; +static unsigned int de02F4E[] = { 0x06BB3, 0x00000 }; +static unsigned int de02F4F[] = { 0x06BCB, 0x00000 }; +static unsigned int de02F50[] = { 0x06BD4, 0x00000 }; +static unsigned int de02F51[] = { 0x06BDB, 0x00000 }; +static unsigned int de02F52[] = { 0x06C0F, 0x00000 }; +static unsigned int de02F53[] = { 0x06C14, 0x00000 }; +static unsigned int de02F54[] = { 0x06C34, 0x00000 }; +static unsigned int de02F55[] = { 0x0706B, 0x00000 }; +static unsigned int de02F56[] = { 0x0722A, 0x00000 }; +static unsigned int de02F57[] = { 0x07236, 0x00000 }; +static unsigned int de02F58[] = { 0x0723B, 0x00000 }; +static unsigned int de02F59[] = { 0x0723F, 0x00000 }; +static unsigned int de02F5A[] = { 0x07247, 0x00000 }; +static unsigned int de02F5B[] = { 0x07259, 0x00000 }; +static unsigned int de02F5C[] = { 0x0725B, 0x00000 }; +static unsigned int de02F5D[] = { 0x072AC, 0x00000 }; +static unsigned int de02F5E[] = { 0x07384, 0x00000 }; +static unsigned int de02F5F[] = { 0x07389, 0x00000 }; +static unsigned int de02F60[] = { 0x074DC, 0x00000 }; +static unsigned int de02F61[] = { 0x074E6, 0x00000 }; +static unsigned int de02F62[] = { 0x07518, 0x00000 }; +static unsigned int de02F63[] = { 0x0751F, 0x00000 }; +static unsigned int de02F64[] = { 0x07528, 0x00000 }; +static unsigned int de02F65[] = { 0x07530, 0x00000 }; +static unsigned int de02F66[] = { 0x0758B, 0x00000 }; +static unsigned int de02F67[] = { 0x07592, 0x00000 }; +static unsigned int de02F68[] = { 0x07676, 0x00000 }; +static unsigned int de02F69[] = { 0x0767D, 0x00000 }; +static unsigned int de02F6A[] = { 0x076AE, 0x00000 }; +static unsigned int de02F6B[] = { 0x076BF, 0x00000 }; +static unsigned int de02F6C[] = { 0x076EE, 0x00000 }; +static unsigned int de02F6D[] = { 0x077DB, 0x00000 }; +static unsigned int de02F6E[] = { 0x077E2, 0x00000 }; +static unsigned int de02F6F[] = { 0x077F3, 0x00000 }; +static unsigned int de02F70[] = { 0x0793A, 0x00000 }; +static unsigned int de02F71[] = { 0x079B8, 0x00000 }; +static unsigned int de02F72[] = { 0x079BE, 0x00000 }; +static unsigned int de02F73[] = { 0x07A74, 0x00000 }; +static unsigned int de02F74[] = { 0x07ACB, 0x00000 }; +static unsigned int de02F75[] = { 0x07AF9, 0x00000 }; +static unsigned int de02F76[] = { 0x07C73, 0x00000 }; +static unsigned int de02F77[] = { 0x07CF8, 0x00000 }; +static unsigned int de02F78[] = { 0x07F36, 0x00000 }; +static unsigned int de02F79[] = { 0x07F51, 0x00000 }; +static unsigned int de02F7A[] = { 0x07F8A, 0x00000 }; +static unsigned int de02F7B[] = { 0x07FBD, 0x00000 }; +static unsigned int de02F7C[] = { 0x08001, 0x00000 }; +static unsigned int de02F7D[] = { 0x0800C, 0x00000 }; +static unsigned int de02F7E[] = { 0x08012, 0x00000 }; +static unsigned int de02F7F[] = { 0x08033, 0x00000 }; +static unsigned int de02F80[] = { 0x0807F, 0x00000 }; +static unsigned int de02F81[] = { 0x08089, 0x00000 }; +static unsigned int de02F82[] = { 0x081E3, 0x00000 }; +static unsigned int de02F83[] = { 0x081EA, 0x00000 }; +static unsigned int de02F84[] = { 0x081F3, 0x00000 }; +static unsigned int de02F85[] = { 0x081FC, 0x00000 }; +static unsigned int de02F86[] = { 0x0820C, 0x00000 }; +static unsigned int de02F87[] = { 0x0821B, 0x00000 }; +static unsigned int de02F88[] = { 0x0821F, 0x00000 }; +static unsigned int de02F89[] = { 0x0826E, 0x00000 }; +static unsigned int de02F8A[] = { 0x08272, 0x00000 }; +static unsigned int de02F8B[] = { 0x08278, 0x00000 }; +static unsigned int de02F8C[] = { 0x0864D, 0x00000 }; +static unsigned int de02F8D[] = { 0x0866B, 0x00000 }; +static unsigned int de02F8E[] = { 0x08840, 0x00000 }; +static unsigned int de02F8F[] = { 0x0884C, 0x00000 }; +static unsigned int de02F90[] = { 0x08863, 0x00000 }; +static unsigned int de02F91[] = { 0x0897E, 0x00000 }; +static unsigned int de02F92[] = { 0x0898B, 0x00000 }; +static unsigned int de02F93[] = { 0x089D2, 0x00000 }; +static unsigned int de02F94[] = { 0x08A00, 0x00000 }; +static unsigned int de02F95[] = { 0x08C37, 0x00000 }; +static unsigned int de02F96[] = { 0x08C46, 0x00000 }; +static unsigned int de02F97[] = { 0x08C55, 0x00000 }; +static unsigned int de02F98[] = { 0x08C78, 0x00000 }; +static unsigned int de02F99[] = { 0x08C9D, 0x00000 }; +static unsigned int de02F9A[] = { 0x08D64, 0x00000 }; +static unsigned int de02F9B[] = { 0x08D70, 0x00000 }; +static unsigned int de02F9C[] = { 0x08DB3, 0x00000 }; +static unsigned int de02F9D[] = { 0x08EAB, 0x00000 }; +static unsigned int de02F9E[] = { 0x08ECA, 0x00000 }; +static unsigned int de02F9F[] = { 0x08F9B, 0x00000 }; +static unsigned int de02FA0[] = { 0x08FB0, 0x00000 }; +static unsigned int de02FA1[] = { 0x08FB5, 0x00000 }; +static unsigned int de02FA2[] = { 0x09091, 0x00000 }; +static unsigned int de02FA3[] = { 0x09149, 0x00000 }; +static unsigned int de02FA4[] = { 0x091C6, 0x00000 }; +static unsigned int de02FA5[] = { 0x091CC, 0x00000 }; +static unsigned int de02FA6[] = { 0x091D1, 0x00000 }; +static unsigned int de02FA7[] = { 0x09577, 0x00000 }; +static unsigned int de02FA8[] = { 0x09580, 0x00000 }; +static unsigned int de02FA9[] = { 0x0961C, 0x00000 }; +static unsigned int de02FAA[] = { 0x096B6, 0x00000 }; +static unsigned int de02FAB[] = { 0x096B9, 0x00000 }; +static unsigned int de02FAC[] = { 0x096E8, 0x00000 }; +static unsigned int de02FAD[] = { 0x09751, 0x00000 }; +static unsigned int de02FAE[] = { 0x0975E, 0x00000 }; +static unsigned int de02FAF[] = { 0x09762, 0x00000 }; +static unsigned int de02FB0[] = { 0x09769, 0x00000 }; +static unsigned int de02FB1[] = { 0x097CB, 0x00000 }; +static unsigned int de02FB2[] = { 0x097ED, 0x00000 }; +static unsigned int de02FB3[] = { 0x097F3, 0x00000 }; +static unsigned int de02FB4[] = { 0x09801, 0x00000 }; +static unsigned int de02FB5[] = { 0x098A8, 0x00000 }; +static unsigned int de02FB6[] = { 0x098DB, 0x00000 }; +static unsigned int de02FB7[] = { 0x098DF, 0x00000 }; +static unsigned int de02FB8[] = { 0x09996, 0x00000 }; +static unsigned int de02FB9[] = { 0x09999, 0x00000 }; +static unsigned int de02FBA[] = { 0x099AC, 0x00000 }; +static unsigned int de02FBB[] = { 0x09AA8, 0x00000 }; +static unsigned int de02FBC[] = { 0x09AD8, 0x00000 }; +static unsigned int de02FBD[] = { 0x09ADF, 0x00000 }; +static unsigned int de02FBE[] = { 0x09B25, 0x00000 }; +static unsigned int de02FBF[] = { 0x09B2F, 0x00000 }; +static unsigned int de02FC0[] = { 0x09B32, 0x00000 }; +static unsigned int de02FC1[] = { 0x09B3C, 0x00000 }; +static unsigned int de02FC2[] = { 0x09B5A, 0x00000 }; +static unsigned int de02FC3[] = { 0x09CE5, 0x00000 }; +static unsigned int de02FC4[] = { 0x09E75, 0x00000 }; +static unsigned int de02FC5[] = { 0x09E7F, 0x00000 }; +static unsigned int de02FC6[] = { 0x09EA5, 0x00000 }; +static unsigned int de02FC7[] = { 0x09EBB, 0x00000 }; +static unsigned int de02FC8[] = { 0x09EC3, 0x00000 }; +static unsigned int de02FC9[] = { 0x09ECD, 0x00000 }; +static unsigned int de02FCA[] = { 0x09ED1, 0x00000 }; +static unsigned int de02FCB[] = { 0x09EF9, 0x00000 }; +static unsigned int de02FCC[] = { 0x09EFD, 0x00000 }; +static unsigned int de02FCD[] = { 0x09F0E, 0x00000 }; +static unsigned int de02FCE[] = { 0x09F13, 0x00000 }; +static unsigned int de02FCF[] = { 0x09F20, 0x00000 }; +static unsigned int de02FD0[] = { 0x09F3B, 0x00000 }; +static unsigned int de02FD1[] = { 0x09F4A, 0x00000 }; +static unsigned int de02FD2[] = { 0x09F52, 0x00000 }; +static unsigned int de02FD3[] = { 0x09F8D, 0x00000 }; +static unsigned int de02FD4[] = { 0x09F9C, 0x00000 }; +static unsigned int de02FD5[] = { 0x09FA0, 0x00000 }; +static unsigned int de03000[] = { 0x00020, 0x00000 }; +static unsigned int de03036[] = { 0x03012, 0x00000 }; +static unsigned int de03038[] = { 0x05341, 0x00000 }; +static unsigned int de03039[] = { 0x05344, 0x00000 }; +static unsigned int de0303A[] = { 0x05345, 0x00000 }; +static unsigned int de0304C[] = { 0x0304B, 0x03099, 0x00000 }; +static unsigned int de0304E[] = { 0x0304D, 0x03099, 0x00000 }; +static unsigned int de03050[] = { 0x0304F, 0x03099, 0x00000 }; +static unsigned int de03052[] = { 0x03051, 0x03099, 0x00000 }; +static unsigned int de03054[] = { 0x03053, 0x03099, 0x00000 }; +static unsigned int de03056[] = { 0x03055, 0x03099, 0x00000 }; +static unsigned int de03058[] = { 0x03057, 0x03099, 0x00000 }; +static unsigned int de0305A[] = { 0x03059, 0x03099, 0x00000 }; +static unsigned int de0305C[] = { 0x0305B, 0x03099, 0x00000 }; +static unsigned int de0305E[] = { 0x0305D, 0x03099, 0x00000 }; +static unsigned int de03060[] = { 0x0305F, 0x03099, 0x00000 }; +static unsigned int de03062[] = { 0x03061, 0x03099, 0x00000 }; +static unsigned int de03065[] = { 0x03064, 0x03099, 0x00000 }; +static unsigned int de03067[] = { 0x03066, 0x03099, 0x00000 }; +static unsigned int de03069[] = { 0x03068, 0x03099, 0x00000 }; +static unsigned int de03070[] = { 0x0306F, 0x03099, 0x00000 }; +static unsigned int de03071[] = { 0x0306F, 0x0309A, 0x00000 }; +static unsigned int de03073[] = { 0x03072, 0x03099, 0x00000 }; +static unsigned int de03074[] = { 0x03072, 0x0309A, 0x00000 }; +static unsigned int de03076[] = { 0x03075, 0x03099, 0x00000 }; +static unsigned int de03077[] = { 0x03075, 0x0309A, 0x00000 }; +static unsigned int de03079[] = { 0x03078, 0x03099, 0x00000 }; +static unsigned int de0307A[] = { 0x03078, 0x0309A, 0x00000 }; +static unsigned int de0307C[] = { 0x0307B, 0x03099, 0x00000 }; +static unsigned int de0307D[] = { 0x0307B, 0x0309A, 0x00000 }; +static unsigned int de03094[] = { 0x03046, 0x03099, 0x00000 }; +static unsigned int de0309B[] = { 0x00020, 0x03099, 0x00000 }; +static unsigned int de0309C[] = { 0x00020, 0x0309A, 0x00000 }; +static unsigned int de0309E[] = { 0x0309D, 0x03099, 0x00000 }; +static unsigned int de0309F[] = { 0x03088, 0x0308A, 0x00000 }; +static unsigned int de030AC[] = { 0x030AB, 0x03099, 0x00000 }; +static unsigned int de030AE[] = { 0x030AD, 0x03099, 0x00000 }; +static unsigned int de030B0[] = { 0x030AF, 0x03099, 0x00000 }; +static unsigned int de030B2[] = { 0x030B1, 0x03099, 0x00000 }; +static unsigned int de030B4[] = { 0x030B3, 0x03099, 0x00000 }; +static unsigned int de030B6[] = { 0x030B5, 0x03099, 0x00000 }; +static unsigned int de030B8[] = { 0x030B7, 0x03099, 0x00000 }; +static unsigned int de030BA[] = { 0x030B9, 0x03099, 0x00000 }; +static unsigned int de030BC[] = { 0x030BB, 0x03099, 0x00000 }; +static unsigned int de030BE[] = { 0x030BD, 0x03099, 0x00000 }; +static unsigned int de030C0[] = { 0x030BF, 0x03099, 0x00000 }; +static unsigned int de030C2[] = { 0x030C1, 0x03099, 0x00000 }; +static unsigned int de030C5[] = { 0x030C4, 0x03099, 0x00000 }; +static unsigned int de030C7[] = { 0x030C6, 0x03099, 0x00000 }; +static unsigned int de030C9[] = { 0x030C8, 0x03099, 0x00000 }; +static unsigned int de030D0[] = { 0x030CF, 0x03099, 0x00000 }; +static unsigned int de030D1[] = { 0x030CF, 0x0309A, 0x00000 }; +static unsigned int de030D3[] = { 0x030D2, 0x03099, 0x00000 }; +static unsigned int de030D4[] = { 0x030D2, 0x0309A, 0x00000 }; +static unsigned int de030D6[] = { 0x030D5, 0x03099, 0x00000 }; +static unsigned int de030D7[] = { 0x030D5, 0x0309A, 0x00000 }; +static unsigned int de030D9[] = { 0x030D8, 0x03099, 0x00000 }; +static unsigned int de030DA[] = { 0x030D8, 0x0309A, 0x00000 }; +static unsigned int de030DC[] = { 0x030DB, 0x03099, 0x00000 }; +static unsigned int de030DD[] = { 0x030DB, 0x0309A, 0x00000 }; +static unsigned int de030F4[] = { 0x030A6, 0x03099, 0x00000 }; +static unsigned int de030F7[] = { 0x030EF, 0x03099, 0x00000 }; +static unsigned int de030F8[] = { 0x030F0, 0x03099, 0x00000 }; +static unsigned int de030F9[] = { 0x030F1, 0x03099, 0x00000 }; +static unsigned int de030FA[] = { 0x030F2, 0x03099, 0x00000 }; +static unsigned int de030FE[] = { 0x030FD, 0x03099, 0x00000 }; +static unsigned int de030FF[] = { 0x030B3, 0x030C8, 0x00000 }; +static unsigned int de03131[] = { 0x01100, 0x00000 }; +static unsigned int de03132[] = { 0x01101, 0x00000 }; +static unsigned int de03133[] = { 0x011AA, 0x00000 }; +static unsigned int de03134[] = { 0x01102, 0x00000 }; +static unsigned int de03135[] = { 0x011AC, 0x00000 }; +static unsigned int de03136[] = { 0x011AD, 0x00000 }; +static unsigned int de03137[] = { 0x01103, 0x00000 }; +static unsigned int de03138[] = { 0x01104, 0x00000 }; +static unsigned int de03139[] = { 0x01105, 0x00000 }; +static unsigned int de0313A[] = { 0x011B0, 0x00000 }; +static unsigned int de0313B[] = { 0x011B1, 0x00000 }; +static unsigned int de0313C[] = { 0x011B2, 0x00000 }; +static unsigned int de0313D[] = { 0x011B3, 0x00000 }; +static unsigned int de0313E[] = { 0x011B4, 0x00000 }; +static unsigned int de0313F[] = { 0x011B5, 0x00000 }; +static unsigned int de03140[] = { 0x0111A, 0x00000 }; +static unsigned int de03141[] = { 0x01106, 0x00000 }; +static unsigned int de03142[] = { 0x01107, 0x00000 }; +static unsigned int de03143[] = { 0x01108, 0x00000 }; +static unsigned int de03144[] = { 0x01121, 0x00000 }; +static unsigned int de03145[] = { 0x01109, 0x00000 }; +static unsigned int de03146[] = { 0x0110A, 0x00000 }; +static unsigned int de03147[] = { 0x0110B, 0x00000 }; +static unsigned int de03148[] = { 0x0110C, 0x00000 }; +static unsigned int de03149[] = { 0x0110D, 0x00000 }; +static unsigned int de0314A[] = { 0x0110E, 0x00000 }; +static unsigned int de0314B[] = { 0x0110F, 0x00000 }; +static unsigned int de0314C[] = { 0x01110, 0x00000 }; +static unsigned int de0314D[] = { 0x01111, 0x00000 }; +static unsigned int de0314E[] = { 0x01112, 0x00000 }; +static unsigned int de0314F[] = { 0x01161, 0x00000 }; +static unsigned int de03150[] = { 0x01162, 0x00000 }; +static unsigned int de03151[] = { 0x01163, 0x00000 }; +static unsigned int de03152[] = { 0x01164, 0x00000 }; +static unsigned int de03153[] = { 0x01165, 0x00000 }; +static unsigned int de03154[] = { 0x01166, 0x00000 }; +static unsigned int de03155[] = { 0x01167, 0x00000 }; +static unsigned int de03156[] = { 0x01168, 0x00000 }; +static unsigned int de03157[] = { 0x01169, 0x00000 }; +static unsigned int de03158[] = { 0x0116A, 0x00000 }; +static unsigned int de03159[] = { 0x0116B, 0x00000 }; +static unsigned int de0315A[] = { 0x0116C, 0x00000 }; +static unsigned int de0315B[] = { 0x0116D, 0x00000 }; +static unsigned int de0315C[] = { 0x0116E, 0x00000 }; +static unsigned int de0315D[] = { 0x0116F, 0x00000 }; +static unsigned int de0315E[] = { 0x01170, 0x00000 }; +static unsigned int de0315F[] = { 0x01171, 0x00000 }; +static unsigned int de03160[] = { 0x01172, 0x00000 }; +static unsigned int de03161[] = { 0x01173, 0x00000 }; +static unsigned int de03162[] = { 0x01174, 0x00000 }; +static unsigned int de03163[] = { 0x01175, 0x00000 }; +static unsigned int de03164[] = { 0x01160, 0x00000 }; +static unsigned int de03165[] = { 0x01114, 0x00000 }; +static unsigned int de03166[] = { 0x01115, 0x00000 }; +static unsigned int de03167[] = { 0x011C7, 0x00000 }; +static unsigned int de03168[] = { 0x011C8, 0x00000 }; +static unsigned int de03169[] = { 0x011CC, 0x00000 }; +static unsigned int de0316A[] = { 0x011CE, 0x00000 }; +static unsigned int de0316B[] = { 0x011D3, 0x00000 }; +static unsigned int de0316C[] = { 0x011D7, 0x00000 }; +static unsigned int de0316D[] = { 0x011D9, 0x00000 }; +static unsigned int de0316E[] = { 0x0111C, 0x00000 }; +static unsigned int de0316F[] = { 0x011DD, 0x00000 }; +static unsigned int de03170[] = { 0x011DF, 0x00000 }; +static unsigned int de03171[] = { 0x0111D, 0x00000 }; +static unsigned int de03172[] = { 0x0111E, 0x00000 }; +static unsigned int de03173[] = { 0x01120, 0x00000 }; +static unsigned int de03174[] = { 0x01122, 0x00000 }; +static unsigned int de03175[] = { 0x01123, 0x00000 }; +static unsigned int de03176[] = { 0x01127, 0x00000 }; +static unsigned int de03177[] = { 0x01129, 0x00000 }; +static unsigned int de03178[] = { 0x0112B, 0x00000 }; +static unsigned int de03179[] = { 0x0112C, 0x00000 }; +static unsigned int de0317A[] = { 0x0112D, 0x00000 }; +static unsigned int de0317B[] = { 0x0112E, 0x00000 }; +static unsigned int de0317C[] = { 0x0112F, 0x00000 }; +static unsigned int de0317D[] = { 0x01132, 0x00000 }; +static unsigned int de0317E[] = { 0x01136, 0x00000 }; +static unsigned int de0317F[] = { 0x01140, 0x00000 }; +static unsigned int de03180[] = { 0x01147, 0x00000 }; +static unsigned int de03181[] = { 0x0114C, 0x00000 }; +static unsigned int de03182[] = { 0x011F1, 0x00000 }; +static unsigned int de03183[] = { 0x011F2, 0x00000 }; +static unsigned int de03184[] = { 0x01157, 0x00000 }; +static unsigned int de03185[] = { 0x01158, 0x00000 }; +static unsigned int de03186[] = { 0x01159, 0x00000 }; +static unsigned int de03187[] = { 0x01184, 0x00000 }; +static unsigned int de03188[] = { 0x01185, 0x00000 }; +static unsigned int de03189[] = { 0x01188, 0x00000 }; +static unsigned int de0318A[] = { 0x01191, 0x00000 }; +static unsigned int de0318B[] = { 0x01192, 0x00000 }; +static unsigned int de0318C[] = { 0x01194, 0x00000 }; +static unsigned int de0318D[] = { 0x0119E, 0x00000 }; +static unsigned int de0318E[] = { 0x011A1, 0x00000 }; +static unsigned int de03192[] = { 0x04E00, 0x00000 }; +static unsigned int de03193[] = { 0x04E8C, 0x00000 }; +static unsigned int de03194[] = { 0x04E09, 0x00000 }; +static unsigned int de03195[] = { 0x056DB, 0x00000 }; +static unsigned int de03196[] = { 0x04E0A, 0x00000 }; +static unsigned int de03197[] = { 0x04E2D, 0x00000 }; +static unsigned int de03198[] = { 0x04E0B, 0x00000 }; +static unsigned int de03199[] = { 0x07532, 0x00000 }; +static unsigned int de0319A[] = { 0x04E59, 0x00000 }; +static unsigned int de0319B[] = { 0x04E19, 0x00000 }; +static unsigned int de0319C[] = { 0x04E01, 0x00000 }; +static unsigned int de0319D[] = { 0x05929, 0x00000 }; +static unsigned int de0319E[] = { 0x05730, 0x00000 }; +static unsigned int de0319F[] = { 0x04EBA, 0x00000 }; +static unsigned int de03200[] = { 0x00028, 0x01100, 0x00029, 0x00000 }; +static unsigned int de03201[] = { 0x00028, 0x01102, 0x00029, 0x00000 }; +static unsigned int de03202[] = { 0x00028, 0x01103, 0x00029, 0x00000 }; +static unsigned int de03203[] = { 0x00028, 0x01105, 0x00029, 0x00000 }; +static unsigned int de03204[] = { 0x00028, 0x01106, 0x00029, 0x00000 }; +static unsigned int de03205[] = { 0x00028, 0x01107, 0x00029, 0x00000 }; +static unsigned int de03206[] = { 0x00028, 0x01109, 0x00029, 0x00000 }; +static unsigned int de03207[] = { 0x00028, 0x0110B, 0x00029, 0x00000 }; +static unsigned int de03208[] = { 0x00028, 0x0110C, 0x00029, 0x00000 }; +static unsigned int de03209[] = { 0x00028, 0x0110E, 0x00029, 0x00000 }; +static unsigned int de0320A[] = { 0x00028, 0x0110F, 0x00029, 0x00000 }; +static unsigned int de0320B[] = { 0x00028, 0x01110, 0x00029, 0x00000 }; +static unsigned int de0320C[] = { 0x00028, 0x01111, 0x00029, 0x00000 }; +static unsigned int de0320D[] = { 0x00028, 0x01112, 0x00029, 0x00000 }; +static unsigned int de0320E[] = { 0x00028, 0x01100, 0x01161, 0x00029, 0x00000 }; +static unsigned int de0320F[] = { 0x00028, 0x01102, 0x01161, 0x00029, 0x00000 }; +static unsigned int de03210[] = { 0x00028, 0x01103, 0x01161, 0x00029, 0x00000 }; +static unsigned int de03211[] = { 0x00028, 0x01105, 0x01161, 0x00029, 0x00000 }; +static unsigned int de03212[] = { 0x00028, 0x01106, 0x01161, 0x00029, 0x00000 }; +static unsigned int de03213[] = { 0x00028, 0x01107, 0x01161, 0x00029, 0x00000 }; +static unsigned int de03214[] = { 0x00028, 0x01109, 0x01161, 0x00029, 0x00000 }; +static unsigned int de03215[] = { 0x00028, 0x0110B, 0x01161, 0x00029, 0x00000 }; +static unsigned int de03216[] = { 0x00028, 0x0110C, 0x01161, 0x00029, 0x00000 }; +static unsigned int de03217[] = { 0x00028, 0x0110E, 0x01161, 0x00029, 0x00000 }; +static unsigned int de03218[] = { 0x00028, 0x0110F, 0x01161, 0x00029, 0x00000 }; +static unsigned int de03219[] = { 0x00028, 0x01110, 0x01161, 0x00029, 0x00000 }; +static unsigned int de0321A[] = { 0x00028, 0x01111, 0x01161, 0x00029, 0x00000 }; +static unsigned int de0321B[] = { 0x00028, 0x01112, 0x01161, 0x00029, 0x00000 }; +static unsigned int de0321C[] = { 0x00028, 0x0110C, 0x0116E, 0x00029, 0x00000 }; +static unsigned int de0321D[] = { 0x00028, 0x0110B, 0x01169, 0x0110C, 0x01165, 0x011AB, 0x00029, 0x00000 }; +static unsigned int de0321E[] = { 0x00028, 0x0110B, 0x01169, 0x01112, 0x0116E, 0x00029, 0x00000 }; +static unsigned int de03220[] = { 0x00028, 0x04E00, 0x00029, 0x00000 }; +static unsigned int de03221[] = { 0x00028, 0x04E8C, 0x00029, 0x00000 }; +static unsigned int de03222[] = { 0x00028, 0x04E09, 0x00029, 0x00000 }; +static unsigned int de03223[] = { 0x00028, 0x056DB, 0x00029, 0x00000 }; +static unsigned int de03224[] = { 0x00028, 0x04E94, 0x00029, 0x00000 }; +static unsigned int de03225[] = { 0x00028, 0x0516D, 0x00029, 0x00000 }; +static unsigned int de03226[] = { 0x00028, 0x04E03, 0x00029, 0x00000 }; +static unsigned int de03227[] = { 0x00028, 0x0516B, 0x00029, 0x00000 }; +static unsigned int de03228[] = { 0x00028, 0x04E5D, 0x00029, 0x00000 }; +static unsigned int de03229[] = { 0x00028, 0x05341, 0x00029, 0x00000 }; +static unsigned int de0322A[] = { 0x00028, 0x06708, 0x00029, 0x00000 }; +static unsigned int de0322B[] = { 0x00028, 0x0706B, 0x00029, 0x00000 }; +static unsigned int de0322C[] = { 0x00028, 0x06C34, 0x00029, 0x00000 }; +static unsigned int de0322D[] = { 0x00028, 0x06728, 0x00029, 0x00000 }; +static unsigned int de0322E[] = { 0x00028, 0x091D1, 0x00029, 0x00000 }; +static unsigned int de0322F[] = { 0x00028, 0x0571F, 0x00029, 0x00000 }; +static unsigned int de03230[] = { 0x00028, 0x065E5, 0x00029, 0x00000 }; +static unsigned int de03231[] = { 0x00028, 0x0682A, 0x00029, 0x00000 }; +static unsigned int de03232[] = { 0x00028, 0x06709, 0x00029, 0x00000 }; +static unsigned int de03233[] = { 0x00028, 0x0793E, 0x00029, 0x00000 }; +static unsigned int de03234[] = { 0x00028, 0x0540D, 0x00029, 0x00000 }; +static unsigned int de03235[] = { 0x00028, 0x07279, 0x00029, 0x00000 }; +static unsigned int de03236[] = { 0x00028, 0x08CA1, 0x00029, 0x00000 }; +static unsigned int de03237[] = { 0x00028, 0x0795D, 0x00029, 0x00000 }; +static unsigned int de03238[] = { 0x00028, 0x052B4, 0x00029, 0x00000 }; +static unsigned int de03239[] = { 0x00028, 0x04EE3, 0x00029, 0x00000 }; +static unsigned int de0323A[] = { 0x00028, 0x0547C, 0x00029, 0x00000 }; +static unsigned int de0323B[] = { 0x00028, 0x05B66, 0x00029, 0x00000 }; +static unsigned int de0323C[] = { 0x00028, 0x076E3, 0x00029, 0x00000 }; +static unsigned int de0323D[] = { 0x00028, 0x04F01, 0x00029, 0x00000 }; +static unsigned int de0323E[] = { 0x00028, 0x08CC7, 0x00029, 0x00000 }; +static unsigned int de0323F[] = { 0x00028, 0x05354, 0x00029, 0x00000 }; +static unsigned int de03240[] = { 0x00028, 0x0796D, 0x00029, 0x00000 }; +static unsigned int de03241[] = { 0x00028, 0x04F11, 0x00029, 0x00000 }; +static unsigned int de03242[] = { 0x00028, 0x081EA, 0x00029, 0x00000 }; +static unsigned int de03243[] = { 0x00028, 0x081F3, 0x00029, 0x00000 }; +static unsigned int de03250[] = { 0x00050, 0x00054, 0x00045, 0x00000 }; +static unsigned int de03251[] = { 0x00032, 0x00031, 0x00000 }; +static unsigned int de03252[] = { 0x00032, 0x00032, 0x00000 }; +static unsigned int de03253[] = { 0x00032, 0x00033, 0x00000 }; +static unsigned int de03254[] = { 0x00032, 0x00034, 0x00000 }; +static unsigned int de03255[] = { 0x00032, 0x00035, 0x00000 }; +static unsigned int de03256[] = { 0x00032, 0x00036, 0x00000 }; +static unsigned int de03257[] = { 0x00032, 0x00037, 0x00000 }; +static unsigned int de03258[] = { 0x00032, 0x00038, 0x00000 }; +static unsigned int de03259[] = { 0x00032, 0x00039, 0x00000 }; +static unsigned int de0325A[] = { 0x00033, 0x00030, 0x00000 }; +static unsigned int de0325B[] = { 0x00033, 0x00031, 0x00000 }; +static unsigned int de0325C[] = { 0x00033, 0x00032, 0x00000 }; +static unsigned int de0325D[] = { 0x00033, 0x00033, 0x00000 }; +static unsigned int de0325E[] = { 0x00033, 0x00034, 0x00000 }; +static unsigned int de0325F[] = { 0x00033, 0x00035, 0x00000 }; +static unsigned int de03260[] = { 0x01100, 0x00000 }; +static unsigned int de03261[] = { 0x01102, 0x00000 }; +static unsigned int de03262[] = { 0x01103, 0x00000 }; +static unsigned int de03263[] = { 0x01105, 0x00000 }; +static unsigned int de03264[] = { 0x01106, 0x00000 }; +static unsigned int de03265[] = { 0x01107, 0x00000 }; +static unsigned int de03266[] = { 0x01109, 0x00000 }; +static unsigned int de03267[] = { 0x0110B, 0x00000 }; +static unsigned int de03268[] = { 0x0110C, 0x00000 }; +static unsigned int de03269[] = { 0x0110E, 0x00000 }; +static unsigned int de0326A[] = { 0x0110F, 0x00000 }; +static unsigned int de0326B[] = { 0x01110, 0x00000 }; +static unsigned int de0326C[] = { 0x01111, 0x00000 }; +static unsigned int de0326D[] = { 0x01112, 0x00000 }; +static unsigned int de0326E[] = { 0x01100, 0x01161, 0x00000 }; +static unsigned int de0326F[] = { 0x01102, 0x01161, 0x00000 }; +static unsigned int de03270[] = { 0x01103, 0x01161, 0x00000 }; +static unsigned int de03271[] = { 0x01105, 0x01161, 0x00000 }; +static unsigned int de03272[] = { 0x01106, 0x01161, 0x00000 }; +static unsigned int de03273[] = { 0x01107, 0x01161, 0x00000 }; +static unsigned int de03274[] = { 0x01109, 0x01161, 0x00000 }; +static unsigned int de03275[] = { 0x0110B, 0x01161, 0x00000 }; +static unsigned int de03276[] = { 0x0110C, 0x01161, 0x00000 }; +static unsigned int de03277[] = { 0x0110E, 0x01161, 0x00000 }; +static unsigned int de03278[] = { 0x0110F, 0x01161, 0x00000 }; +static unsigned int de03279[] = { 0x01110, 0x01161, 0x00000 }; +static unsigned int de0327A[] = { 0x01111, 0x01161, 0x00000 }; +static unsigned int de0327B[] = { 0x01112, 0x01161, 0x00000 }; +static unsigned int de0327C[] = { 0x0110E, 0x01161, 0x011B7, 0x01100, 0x01169, 0x00000 }; +static unsigned int de0327D[] = { 0x0110C, 0x0116E, 0x0110B, 0x01174, 0x00000 }; +static unsigned int de0327E[] = { 0x0110B, 0x0116E, 0x00000 }; +static unsigned int de03280[] = { 0x04E00, 0x00000 }; +static unsigned int de03281[] = { 0x04E8C, 0x00000 }; +static unsigned int de03282[] = { 0x04E09, 0x00000 }; +static unsigned int de03283[] = { 0x056DB, 0x00000 }; +static unsigned int de03284[] = { 0x04E94, 0x00000 }; +static unsigned int de03285[] = { 0x0516D, 0x00000 }; +static unsigned int de03286[] = { 0x04E03, 0x00000 }; +static unsigned int de03287[] = { 0x0516B, 0x00000 }; +static unsigned int de03288[] = { 0x04E5D, 0x00000 }; +static unsigned int de03289[] = { 0x05341, 0x00000 }; +static unsigned int de0328A[] = { 0x06708, 0x00000 }; +static unsigned int de0328B[] = { 0x0706B, 0x00000 }; +static unsigned int de0328C[] = { 0x06C34, 0x00000 }; +static unsigned int de0328D[] = { 0x06728, 0x00000 }; +static unsigned int de0328E[] = { 0x091D1, 0x00000 }; +static unsigned int de0328F[] = { 0x0571F, 0x00000 }; +static unsigned int de03290[] = { 0x065E5, 0x00000 }; +static unsigned int de03291[] = { 0x0682A, 0x00000 }; +static unsigned int de03292[] = { 0x06709, 0x00000 }; +static unsigned int de03293[] = { 0x0793E, 0x00000 }; +static unsigned int de03294[] = { 0x0540D, 0x00000 }; +static unsigned int de03295[] = { 0x07279, 0x00000 }; +static unsigned int de03296[] = { 0x08CA1, 0x00000 }; +static unsigned int de03297[] = { 0x0795D, 0x00000 }; +static unsigned int de03298[] = { 0x052B4, 0x00000 }; +static unsigned int de03299[] = { 0x079D8, 0x00000 }; +static unsigned int de0329A[] = { 0x07537, 0x00000 }; +static unsigned int de0329B[] = { 0x05973, 0x00000 }; +static unsigned int de0329C[] = { 0x09069, 0x00000 }; +static unsigned int de0329D[] = { 0x0512A, 0x00000 }; +static unsigned int de0329E[] = { 0x05370, 0x00000 }; +static unsigned int de0329F[] = { 0x06CE8, 0x00000 }; +static unsigned int de032A0[] = { 0x09805, 0x00000 }; +static unsigned int de032A1[] = { 0x04F11, 0x00000 }; +static unsigned int de032A2[] = { 0x05199, 0x00000 }; +static unsigned int de032A3[] = { 0x06B63, 0x00000 }; +static unsigned int de032A4[] = { 0x04E0A, 0x00000 }; +static unsigned int de032A5[] = { 0x04E2D, 0x00000 }; +static unsigned int de032A6[] = { 0x04E0B, 0x00000 }; +static unsigned int de032A7[] = { 0x05DE6, 0x00000 }; +static unsigned int de032A8[] = { 0x053F3, 0x00000 }; +static unsigned int de032A9[] = { 0x0533B, 0x00000 }; +static unsigned int de032AA[] = { 0x05B97, 0x00000 }; +static unsigned int de032AB[] = { 0x05B66, 0x00000 }; +static unsigned int de032AC[] = { 0x076E3, 0x00000 }; +static unsigned int de032AD[] = { 0x04F01, 0x00000 }; +static unsigned int de032AE[] = { 0x08CC7, 0x00000 }; +static unsigned int de032AF[] = { 0x05354, 0x00000 }; +static unsigned int de032B0[] = { 0x0591C, 0x00000 }; +static unsigned int de032B1[] = { 0x00033, 0x00036, 0x00000 }; +static unsigned int de032B2[] = { 0x00033, 0x00037, 0x00000 }; +static unsigned int de032B3[] = { 0x00033, 0x00038, 0x00000 }; +static unsigned int de032B4[] = { 0x00033, 0x00039, 0x00000 }; +static unsigned int de032B5[] = { 0x00034, 0x00030, 0x00000 }; +static unsigned int de032B6[] = { 0x00034, 0x00031, 0x00000 }; +static unsigned int de032B7[] = { 0x00034, 0x00032, 0x00000 }; +static unsigned int de032B8[] = { 0x00034, 0x00033, 0x00000 }; +static unsigned int de032B9[] = { 0x00034, 0x00034, 0x00000 }; +static unsigned int de032BA[] = { 0x00034, 0x00035, 0x00000 }; +static unsigned int de032BB[] = { 0x00034, 0x00036, 0x00000 }; +static unsigned int de032BC[] = { 0x00034, 0x00037, 0x00000 }; +static unsigned int de032BD[] = { 0x00034, 0x00038, 0x00000 }; +static unsigned int de032BE[] = { 0x00034, 0x00039, 0x00000 }; +static unsigned int de032BF[] = { 0x00035, 0x00030, 0x00000 }; +static unsigned int de032C0[] = { 0x00031, 0x06708, 0x00000 }; +static unsigned int de032C1[] = { 0x00032, 0x06708, 0x00000 }; +static unsigned int de032C2[] = { 0x00033, 0x06708, 0x00000 }; +static unsigned int de032C3[] = { 0x00034, 0x06708, 0x00000 }; +static unsigned int de032C4[] = { 0x00035, 0x06708, 0x00000 }; +static unsigned int de032C5[] = { 0x00036, 0x06708, 0x00000 }; +static unsigned int de032C6[] = { 0x00037, 0x06708, 0x00000 }; +static unsigned int de032C7[] = { 0x00038, 0x06708, 0x00000 }; +static unsigned int de032C8[] = { 0x00039, 0x06708, 0x00000 }; +static unsigned int de032C9[] = { 0x00031, 0x00030, 0x06708, 0x00000 }; +static unsigned int de032CA[] = { 0x00031, 0x00031, 0x06708, 0x00000 }; +static unsigned int de032CB[] = { 0x00031, 0x00032, 0x06708, 0x00000 }; +static unsigned int de032CC[] = { 0x00048, 0x00067, 0x00000 }; +static unsigned int de032CD[] = { 0x00065, 0x00072, 0x00067, 0x00000 }; +static unsigned int de032CE[] = { 0x00065, 0x00056, 0x00000 }; +static unsigned int de032CF[] = { 0x0004C, 0x00054, 0x00044, 0x00000 }; +static unsigned int de032D0[] = { 0x030A2, 0x00000 }; +static unsigned int de032D1[] = { 0x030A4, 0x00000 }; +static unsigned int de032D2[] = { 0x030A6, 0x00000 }; +static unsigned int de032D3[] = { 0x030A8, 0x00000 }; +static unsigned int de032D4[] = { 0x030AA, 0x00000 }; +static unsigned int de032D5[] = { 0x030AB, 0x00000 }; +static unsigned int de032D6[] = { 0x030AD, 0x00000 }; +static unsigned int de032D7[] = { 0x030AF, 0x00000 }; +static unsigned int de032D8[] = { 0x030B1, 0x00000 }; +static unsigned int de032D9[] = { 0x030B3, 0x00000 }; +static unsigned int de032DA[] = { 0x030B5, 0x00000 }; +static unsigned int de032DB[] = { 0x030B7, 0x00000 }; +static unsigned int de032DC[] = { 0x030B9, 0x00000 }; +static unsigned int de032DD[] = { 0x030BB, 0x00000 }; +static unsigned int de032DE[] = { 0x030BD, 0x00000 }; +static unsigned int de032DF[] = { 0x030BF, 0x00000 }; +static unsigned int de032E0[] = { 0x030C1, 0x00000 }; +static unsigned int de032E1[] = { 0x030C4, 0x00000 }; +static unsigned int de032E2[] = { 0x030C6, 0x00000 }; +static unsigned int de032E3[] = { 0x030C8, 0x00000 }; +static unsigned int de032E4[] = { 0x030CA, 0x00000 }; +static unsigned int de032E5[] = { 0x030CB, 0x00000 }; +static unsigned int de032E6[] = { 0x030CC, 0x00000 }; +static unsigned int de032E7[] = { 0x030CD, 0x00000 }; +static unsigned int de032E8[] = { 0x030CE, 0x00000 }; +static unsigned int de032E9[] = { 0x030CF, 0x00000 }; +static unsigned int de032EA[] = { 0x030D2, 0x00000 }; +static unsigned int de032EB[] = { 0x030D5, 0x00000 }; +static unsigned int de032EC[] = { 0x030D8, 0x00000 }; +static unsigned int de032ED[] = { 0x030DB, 0x00000 }; +static unsigned int de032EE[] = { 0x030DE, 0x00000 }; +static unsigned int de032EF[] = { 0x030DF, 0x00000 }; +static unsigned int de032F0[] = { 0x030E0, 0x00000 }; +static unsigned int de032F1[] = { 0x030E1, 0x00000 }; +static unsigned int de032F2[] = { 0x030E2, 0x00000 }; +static unsigned int de032F3[] = { 0x030E4, 0x00000 }; +static unsigned int de032F4[] = { 0x030E6, 0x00000 }; +static unsigned int de032F5[] = { 0x030E8, 0x00000 }; +static unsigned int de032F6[] = { 0x030E9, 0x00000 }; +static unsigned int de032F7[] = { 0x030EA, 0x00000 }; +static unsigned int de032F8[] = { 0x030EB, 0x00000 }; +static unsigned int de032F9[] = { 0x030EC, 0x00000 }; +static unsigned int de032FA[] = { 0x030ED, 0x00000 }; +static unsigned int de032FB[] = { 0x030EF, 0x00000 }; +static unsigned int de032FC[] = { 0x030F0, 0x00000 }; +static unsigned int de032FD[] = { 0x030F1, 0x00000 }; +static unsigned int de032FE[] = { 0x030F2, 0x00000 }; +static unsigned int de03300[] = { 0x030A2, 0x030D1, 0x030FC, 0x030C8, 0x00000 }; +static unsigned int de03301[] = { 0x030A2, 0x030EB, 0x030D5, 0x030A1, 0x00000 }; +static unsigned int de03302[] = { 0x030A2, 0x030F3, 0x030DA, 0x030A2, 0x00000 }; +static unsigned int de03303[] = { 0x030A2, 0x030FC, 0x030EB, 0x00000 }; +static unsigned int de03304[] = { 0x030A4, 0x030CB, 0x030F3, 0x030B0, 0x00000 }; +static unsigned int de03305[] = { 0x030A4, 0x030F3, 0x030C1, 0x00000 }; +static unsigned int de03306[] = { 0x030A6, 0x030A9, 0x030F3, 0x00000 }; +static unsigned int de03307[] = { 0x030A8, 0x030B9, 0x030AF, 0x030FC, 0x030C9, 0x00000 }; +static unsigned int de03308[] = { 0x030A8, 0x030FC, 0x030AB, 0x030FC, 0x00000 }; +static unsigned int de03309[] = { 0x030AA, 0x030F3, 0x030B9, 0x00000 }; +static unsigned int de0330A[] = { 0x030AA, 0x030FC, 0x030E0, 0x00000 }; +static unsigned int de0330B[] = { 0x030AB, 0x030A4, 0x030EA, 0x00000 }; +static unsigned int de0330C[] = { 0x030AB, 0x030E9, 0x030C3, 0x030C8, 0x00000 }; +static unsigned int de0330D[] = { 0x030AB, 0x030ED, 0x030EA, 0x030FC, 0x00000 }; +static unsigned int de0330E[] = { 0x030AC, 0x030ED, 0x030F3, 0x00000 }; +static unsigned int de0330F[] = { 0x030AC, 0x030F3, 0x030DE, 0x00000 }; +static unsigned int de03310[] = { 0x030AE, 0x030AC, 0x00000 }; +static unsigned int de03311[] = { 0x030AE, 0x030CB, 0x030FC, 0x00000 }; +static unsigned int de03312[] = { 0x030AD, 0x030E5, 0x030EA, 0x030FC, 0x00000 }; +static unsigned int de03313[] = { 0x030AE, 0x030EB, 0x030C0, 0x030FC, 0x00000 }; +static unsigned int de03314[] = { 0x030AD, 0x030ED, 0x00000 }; +static unsigned int de03315[] = { 0x030AD, 0x030ED, 0x030B0, 0x030E9, 0x030E0, 0x00000 }; +static unsigned int de03316[] = { 0x030AD, 0x030ED, 0x030E1, 0x030FC, 0x030C8, 0x030EB, 0x00000 }; +static unsigned int de03317[] = { 0x030AD, 0x030ED, 0x030EF, 0x030C3, 0x030C8, 0x00000 }; +static unsigned int de03318[] = { 0x030B0, 0x030E9, 0x030E0, 0x00000 }; +static unsigned int de03319[] = { 0x030B0, 0x030E9, 0x030E0, 0x030C8, 0x030F3, 0x00000 }; +static unsigned int de0331A[] = { 0x030AF, 0x030EB, 0x030BC, 0x030A4, 0x030ED, 0x00000 }; +static unsigned int de0331B[] = { 0x030AF, 0x030ED, 0x030FC, 0x030CD, 0x00000 }; +static unsigned int de0331C[] = { 0x030B1, 0x030FC, 0x030B9, 0x00000 }; +static unsigned int de0331D[] = { 0x030B3, 0x030EB, 0x030CA, 0x00000 }; +static unsigned int de0331E[] = { 0x030B3, 0x030FC, 0x030DD, 0x00000 }; +static unsigned int de0331F[] = { 0x030B5, 0x030A4, 0x030AF, 0x030EB, 0x00000 }; +static unsigned int de03320[] = { 0x030B5, 0x030F3, 0x030C1, 0x030FC, 0x030E0, 0x00000 }; +static unsigned int de03321[] = { 0x030B7, 0x030EA, 0x030F3, 0x030B0, 0x00000 }; +static unsigned int de03322[] = { 0x030BB, 0x030F3, 0x030C1, 0x00000 }; +static unsigned int de03323[] = { 0x030BB, 0x030F3, 0x030C8, 0x00000 }; +static unsigned int de03324[] = { 0x030C0, 0x030FC, 0x030B9, 0x00000 }; +static unsigned int de03325[] = { 0x030C7, 0x030B7, 0x00000 }; +static unsigned int de03326[] = { 0x030C9, 0x030EB, 0x00000 }; +static unsigned int de03327[] = { 0x030C8, 0x030F3, 0x00000 }; +static unsigned int de03328[] = { 0x030CA, 0x030CE, 0x00000 }; +static unsigned int de03329[] = { 0x030CE, 0x030C3, 0x030C8, 0x00000 }; +static unsigned int de0332A[] = { 0x030CF, 0x030A4, 0x030C4, 0x00000 }; +static unsigned int de0332B[] = { 0x030D1, 0x030FC, 0x030BB, 0x030F3, 0x030C8, 0x00000 }; +static unsigned int de0332C[] = { 0x030D1, 0x030FC, 0x030C4, 0x00000 }; +static unsigned int de0332D[] = { 0x030D0, 0x030FC, 0x030EC, 0x030EB, 0x00000 }; +static unsigned int de0332E[] = { 0x030D4, 0x030A2, 0x030B9, 0x030C8, 0x030EB, 0x00000 }; +static unsigned int de0332F[] = { 0x030D4, 0x030AF, 0x030EB, 0x00000 }; +static unsigned int de03330[] = { 0x030D4, 0x030B3, 0x00000 }; +static unsigned int de03331[] = { 0x030D3, 0x030EB, 0x00000 }; +static unsigned int de03332[] = { 0x030D5, 0x030A1, 0x030E9, 0x030C3, 0x030C9, 0x00000 }; +static unsigned int de03333[] = { 0x030D5, 0x030A3, 0x030FC, 0x030C8, 0x00000 }; +static unsigned int de03334[] = { 0x030D6, 0x030C3, 0x030B7, 0x030A7, 0x030EB, 0x00000 }; +static unsigned int de03335[] = { 0x030D5, 0x030E9, 0x030F3, 0x00000 }; +static unsigned int de03336[] = { 0x030D8, 0x030AF, 0x030BF, 0x030FC, 0x030EB, 0x00000 }; +static unsigned int de03337[] = { 0x030DA, 0x030BD, 0x00000 }; +static unsigned int de03338[] = { 0x030DA, 0x030CB, 0x030D2, 0x00000 }; +static unsigned int de03339[] = { 0x030D8, 0x030EB, 0x030C4, 0x00000 }; +static unsigned int de0333A[] = { 0x030DA, 0x030F3, 0x030B9, 0x00000 }; +static unsigned int de0333B[] = { 0x030DA, 0x030FC, 0x030B8, 0x00000 }; +static unsigned int de0333C[] = { 0x030D9, 0x030FC, 0x030BF, 0x00000 }; +static unsigned int de0333D[] = { 0x030DD, 0x030A4, 0x030F3, 0x030C8, 0x00000 }; +static unsigned int de0333E[] = { 0x030DC, 0x030EB, 0x030C8, 0x00000 }; +static unsigned int de0333F[] = { 0x030DB, 0x030F3, 0x00000 }; +static unsigned int de03340[] = { 0x030DD, 0x030F3, 0x030C9, 0x00000 }; +static unsigned int de03341[] = { 0x030DB, 0x030FC, 0x030EB, 0x00000 }; +static unsigned int de03342[] = { 0x030DB, 0x030FC, 0x030F3, 0x00000 }; +static unsigned int de03343[] = { 0x030DE, 0x030A4, 0x030AF, 0x030ED, 0x00000 }; +static unsigned int de03344[] = { 0x030DE, 0x030A4, 0x030EB, 0x00000 }; +static unsigned int de03345[] = { 0x030DE, 0x030C3, 0x030CF, 0x00000 }; +static unsigned int de03346[] = { 0x030DE, 0x030EB, 0x030AF, 0x00000 }; +static unsigned int de03347[] = { 0x030DE, 0x030F3, 0x030B7, 0x030E7, 0x030F3, 0x00000 }; +static unsigned int de03348[] = { 0x030DF, 0x030AF, 0x030ED, 0x030F3, 0x00000 }; +static unsigned int de03349[] = { 0x030DF, 0x030EA, 0x00000 }; +static unsigned int de0334A[] = { 0x030DF, 0x030EA, 0x030D0, 0x030FC, 0x030EB, 0x00000 }; +static unsigned int de0334B[] = { 0x030E1, 0x030AC, 0x00000 }; +static unsigned int de0334C[] = { 0x030E1, 0x030AC, 0x030C8, 0x030F3, 0x00000 }; +static unsigned int de0334D[] = { 0x030E1, 0x030FC, 0x030C8, 0x030EB, 0x00000 }; +static unsigned int de0334E[] = { 0x030E4, 0x030FC, 0x030C9, 0x00000 }; +static unsigned int de0334F[] = { 0x030E4, 0x030FC, 0x030EB, 0x00000 }; +static unsigned int de03350[] = { 0x030E6, 0x030A2, 0x030F3, 0x00000 }; +static unsigned int de03351[] = { 0x030EA, 0x030C3, 0x030C8, 0x030EB, 0x00000 }; +static unsigned int de03352[] = { 0x030EA, 0x030E9, 0x00000 }; +static unsigned int de03353[] = { 0x030EB, 0x030D4, 0x030FC, 0x00000 }; +static unsigned int de03354[] = { 0x030EB, 0x030FC, 0x030D6, 0x030EB, 0x00000 }; +static unsigned int de03355[] = { 0x030EC, 0x030E0, 0x00000 }; +static unsigned int de03356[] = { 0x030EC, 0x030F3, 0x030C8, 0x030B2, 0x030F3, 0x00000 }; +static unsigned int de03357[] = { 0x030EF, 0x030C3, 0x030C8, 0x00000 }; +static unsigned int de03358[] = { 0x00030, 0x070B9, 0x00000 }; +static unsigned int de03359[] = { 0x00031, 0x070B9, 0x00000 }; +static unsigned int de0335A[] = { 0x00032, 0x070B9, 0x00000 }; +static unsigned int de0335B[] = { 0x00033, 0x070B9, 0x00000 }; +static unsigned int de0335C[] = { 0x00034, 0x070B9, 0x00000 }; +static unsigned int de0335D[] = { 0x00035, 0x070B9, 0x00000 }; +static unsigned int de0335E[] = { 0x00036, 0x070B9, 0x00000 }; +static unsigned int de0335F[] = { 0x00037, 0x070B9, 0x00000 }; +static unsigned int de03360[] = { 0x00038, 0x070B9, 0x00000 }; +static unsigned int de03361[] = { 0x00039, 0x070B9, 0x00000 }; +static unsigned int de03362[] = { 0x00031, 0x00030, 0x070B9, 0x00000 }; +static unsigned int de03363[] = { 0x00031, 0x00031, 0x070B9, 0x00000 }; +static unsigned int de03364[] = { 0x00031, 0x00032, 0x070B9, 0x00000 }; +static unsigned int de03365[] = { 0x00031, 0x00033, 0x070B9, 0x00000 }; +static unsigned int de03366[] = { 0x00031, 0x00034, 0x070B9, 0x00000 }; +static unsigned int de03367[] = { 0x00031, 0x00035, 0x070B9, 0x00000 }; +static unsigned int de03368[] = { 0x00031, 0x00036, 0x070B9, 0x00000 }; +static unsigned int de03369[] = { 0x00031, 0x00037, 0x070B9, 0x00000 }; +static unsigned int de0336A[] = { 0x00031, 0x00038, 0x070B9, 0x00000 }; +static unsigned int de0336B[] = { 0x00031, 0x00039, 0x070B9, 0x00000 }; +static unsigned int de0336C[] = { 0x00032, 0x00030, 0x070B9, 0x00000 }; +static unsigned int de0336D[] = { 0x00032, 0x00031, 0x070B9, 0x00000 }; +static unsigned int de0336E[] = { 0x00032, 0x00032, 0x070B9, 0x00000 }; +static unsigned int de0336F[] = { 0x00032, 0x00033, 0x070B9, 0x00000 }; +static unsigned int de03370[] = { 0x00032, 0x00034, 0x070B9, 0x00000 }; +static unsigned int de03371[] = { 0x00068, 0x00050, 0x00061, 0x00000 }; +static unsigned int de03372[] = { 0x00064, 0x00061, 0x00000 }; +static unsigned int de03373[] = { 0x00041, 0x00055, 0x00000 }; +static unsigned int de03374[] = { 0x00062, 0x00061, 0x00072, 0x00000 }; +static unsigned int de03375[] = { 0x0006F, 0x00056, 0x00000 }; +static unsigned int de03376[] = { 0x00070, 0x00063, 0x00000 }; +static unsigned int de03377[] = { 0x00064, 0x0006D, 0x00000 }; +static unsigned int de03378[] = { 0x00064, 0x0006D, 0x000B2, 0x00000 }; +static unsigned int de03379[] = { 0x00064, 0x0006D, 0x000B3, 0x00000 }; +static unsigned int de0337A[] = { 0x00049, 0x00055, 0x00000 }; +static unsigned int de0337B[] = { 0x05E73, 0x06210, 0x00000 }; +static unsigned int de0337C[] = { 0x0662D, 0x0548C, 0x00000 }; +static unsigned int de0337D[] = { 0x05927, 0x06B63, 0x00000 }; +static unsigned int de0337E[] = { 0x0660E, 0x06CBB, 0x00000 }; +static unsigned int de0337F[] = { 0x0682A, 0x05F0F, 0x04F1A, 0x0793E, 0x00000 }; +static unsigned int de03380[] = { 0x00070, 0x00041, 0x00000 }; +static unsigned int de03381[] = { 0x0006E, 0x00041, 0x00000 }; +static unsigned int de03382[] = { 0x003BC, 0x00041, 0x00000 }; +static unsigned int de03383[] = { 0x0006D, 0x00041, 0x00000 }; +static unsigned int de03384[] = { 0x0006B, 0x00041, 0x00000 }; +static unsigned int de03385[] = { 0x0004B, 0x00042, 0x00000 }; +static unsigned int de03386[] = { 0x0004D, 0x00042, 0x00000 }; +static unsigned int de03387[] = { 0x00047, 0x00042, 0x00000 }; +static unsigned int de03388[] = { 0x00063, 0x00061, 0x0006C, 0x00000 }; +static unsigned int de03389[] = { 0x0006B, 0x00063, 0x00061, 0x0006C, 0x00000 }; +static unsigned int de0338A[] = { 0x00070, 0x00046, 0x00000 }; +static unsigned int de0338B[] = { 0x0006E, 0x00046, 0x00000 }; +static unsigned int de0338C[] = { 0x003BC, 0x00046, 0x00000 }; +static unsigned int de0338D[] = { 0x003BC, 0x00067, 0x00000 }; +static unsigned int de0338E[] = { 0x0006D, 0x00067, 0x00000 }; +static unsigned int de0338F[] = { 0x0006B, 0x00067, 0x00000 }; +static unsigned int de03390[] = { 0x00048, 0x0007A, 0x00000 }; +static unsigned int de03391[] = { 0x0006B, 0x00048, 0x0007A, 0x00000 }; +static unsigned int de03392[] = { 0x0004D, 0x00048, 0x0007A, 0x00000 }; +static unsigned int de03393[] = { 0x00047, 0x00048, 0x0007A, 0x00000 }; +static unsigned int de03394[] = { 0x00054, 0x00048, 0x0007A, 0x00000 }; +static unsigned int de03395[] = { 0x003BC, 0x02113, 0x00000 }; +static unsigned int de03396[] = { 0x0006D, 0x02113, 0x00000 }; +static unsigned int de03397[] = { 0x00064, 0x02113, 0x00000 }; +static unsigned int de03398[] = { 0x0006B, 0x02113, 0x00000 }; +static unsigned int de03399[] = { 0x00066, 0x0006D, 0x00000 }; +static unsigned int de0339A[] = { 0x0006E, 0x0006D, 0x00000 }; +static unsigned int de0339B[] = { 0x003BC, 0x0006D, 0x00000 }; +static unsigned int de0339C[] = { 0x0006D, 0x0006D, 0x00000 }; +static unsigned int de0339D[] = { 0x00063, 0x0006D, 0x00000 }; +static unsigned int de0339E[] = { 0x0006B, 0x0006D, 0x00000 }; +static unsigned int de0339F[] = { 0x0006D, 0x0006D, 0x000B2, 0x00000 }; +static unsigned int de033A0[] = { 0x00063, 0x0006D, 0x000B2, 0x00000 }; +static unsigned int de033A1[] = { 0x0006D, 0x000B2, 0x00000 }; +static unsigned int de033A2[] = { 0x0006B, 0x0006D, 0x000B2, 0x00000 }; +static unsigned int de033A3[] = { 0x0006D, 0x0006D, 0x000B3, 0x00000 }; +static unsigned int de033A4[] = { 0x00063, 0x0006D, 0x000B3, 0x00000 }; +static unsigned int de033A5[] = { 0x0006D, 0x000B3, 0x00000 }; +static unsigned int de033A6[] = { 0x0006B, 0x0006D, 0x000B3, 0x00000 }; +static unsigned int de033A7[] = { 0x0006D, 0x02215, 0x00073, 0x00000 }; +static unsigned int de033A8[] = { 0x0006D, 0x02215, 0x00073, 0x000B2, 0x00000 }; +static unsigned int de033A9[] = { 0x00050, 0x00061, 0x00000 }; +static unsigned int de033AA[] = { 0x0006B, 0x00050, 0x00061, 0x00000 }; +static unsigned int de033AB[] = { 0x0004D, 0x00050, 0x00061, 0x00000 }; +static unsigned int de033AC[] = { 0x00047, 0x00050, 0x00061, 0x00000 }; +static unsigned int de033AD[] = { 0x00072, 0x00061, 0x00064, 0x00000 }; +static unsigned int de033AE[] = { 0x00072, 0x00061, 0x00064, 0x02215, 0x00073, 0x00000 }; +static unsigned int de033AF[] = { 0x00072, 0x00061, 0x00064, 0x02215, 0x00073, 0x000B2, 0x00000 }; +static unsigned int de033B0[] = { 0x00070, 0x00073, 0x00000 }; +static unsigned int de033B1[] = { 0x0006E, 0x00073, 0x00000 }; +static unsigned int de033B2[] = { 0x003BC, 0x00073, 0x00000 }; +static unsigned int de033B3[] = { 0x0006D, 0x00073, 0x00000 }; +static unsigned int de033B4[] = { 0x00070, 0x00056, 0x00000 }; +static unsigned int de033B5[] = { 0x0006E, 0x00056, 0x00000 }; +static unsigned int de033B6[] = { 0x003BC, 0x00056, 0x00000 }; +static unsigned int de033B7[] = { 0x0006D, 0x00056, 0x00000 }; +static unsigned int de033B8[] = { 0x0006B, 0x00056, 0x00000 }; +static unsigned int de033B9[] = { 0x0004D, 0x00056, 0x00000 }; +static unsigned int de033BA[] = { 0x00070, 0x00057, 0x00000 }; +static unsigned int de033BB[] = { 0x0006E, 0x00057, 0x00000 }; +static unsigned int de033BC[] = { 0x003BC, 0x00057, 0x00000 }; +static unsigned int de033BD[] = { 0x0006D, 0x00057, 0x00000 }; +static unsigned int de033BE[] = { 0x0006B, 0x00057, 0x00000 }; +static unsigned int de033BF[] = { 0x0004D, 0x00057, 0x00000 }; +static unsigned int de033C0[] = { 0x0006B, 0x003A9, 0x00000 }; +static unsigned int de033C1[] = { 0x0004D, 0x003A9, 0x00000 }; +static unsigned int de033C2[] = { 0x00061, 0x0002E, 0x0006D, 0x0002E, 0x00000 }; +static unsigned int de033C3[] = { 0x00042, 0x00071, 0x00000 }; +static unsigned int de033C4[] = { 0x00063, 0x00063, 0x00000 }; +static unsigned int de033C5[] = { 0x00063, 0x00064, 0x00000 }; +static unsigned int de033C6[] = { 0x00043, 0x02215, 0x0006B, 0x00067, 0x00000 }; +static unsigned int de033C7[] = { 0x00043, 0x0006F, 0x0002E, 0x00000 }; +static unsigned int de033C8[] = { 0x00064, 0x00042, 0x00000 }; +static unsigned int de033C9[] = { 0x00047, 0x00079, 0x00000 }; +static unsigned int de033CA[] = { 0x00068, 0x00061, 0x00000 }; +static unsigned int de033CB[] = { 0x00048, 0x00050, 0x00000 }; +static unsigned int de033CC[] = { 0x00069, 0x0006E, 0x00000 }; +static unsigned int de033CD[] = { 0x0004B, 0x0004B, 0x00000 }; +static unsigned int de033CE[] = { 0x0004B, 0x0004D, 0x00000 }; +static unsigned int de033CF[] = { 0x0006B, 0x00074, 0x00000 }; +static unsigned int de033D0[] = { 0x0006C, 0x0006D, 0x00000 }; +static unsigned int de033D1[] = { 0x0006C, 0x0006E, 0x00000 }; +static unsigned int de033D2[] = { 0x0006C, 0x0006F, 0x00067, 0x00000 }; +static unsigned int de033D3[] = { 0x0006C, 0x00078, 0x00000 }; +static unsigned int de033D4[] = { 0x0006D, 0x00062, 0x00000 }; +static unsigned int de033D5[] = { 0x0006D, 0x00069, 0x0006C, 0x00000 }; +static unsigned int de033D6[] = { 0x0006D, 0x0006F, 0x0006C, 0x00000 }; +static unsigned int de033D7[] = { 0x00050, 0x00048, 0x00000 }; +static unsigned int de033D8[] = { 0x00070, 0x0002E, 0x0006D, 0x0002E, 0x00000 }; +static unsigned int de033D9[] = { 0x00050, 0x00050, 0x0004D, 0x00000 }; +static unsigned int de033DA[] = { 0x00050, 0x00052, 0x00000 }; +static unsigned int de033DB[] = { 0x00073, 0x00072, 0x00000 }; +static unsigned int de033DC[] = { 0x00053, 0x00076, 0x00000 }; +static unsigned int de033DD[] = { 0x00057, 0x00062, 0x00000 }; +static unsigned int de033DE[] = { 0x00056, 0x02215, 0x0006D, 0x00000 }; +static unsigned int de033DF[] = { 0x00041, 0x02215, 0x0006D, 0x00000 }; +static unsigned int de033E0[] = { 0x00031, 0x065E5, 0x00000 }; +static unsigned int de033E1[] = { 0x00032, 0x065E5, 0x00000 }; +static unsigned int de033E2[] = { 0x00033, 0x065E5, 0x00000 }; +static unsigned int de033E3[] = { 0x00034, 0x065E5, 0x00000 }; +static unsigned int de033E4[] = { 0x00035, 0x065E5, 0x00000 }; +static unsigned int de033E5[] = { 0x00036, 0x065E5, 0x00000 }; +static unsigned int de033E6[] = { 0x00037, 0x065E5, 0x00000 }; +static unsigned int de033E7[] = { 0x00038, 0x065E5, 0x00000 }; +static unsigned int de033E8[] = { 0x00039, 0x065E5, 0x00000 }; +static unsigned int de033E9[] = { 0x00031, 0x00030, 0x065E5, 0x00000 }; +static unsigned int de033EA[] = { 0x00031, 0x00031, 0x065E5, 0x00000 }; +static unsigned int de033EB[] = { 0x00031, 0x00032, 0x065E5, 0x00000 }; +static unsigned int de033EC[] = { 0x00031, 0x00033, 0x065E5, 0x00000 }; +static unsigned int de033ED[] = { 0x00031, 0x00034, 0x065E5, 0x00000 }; +static unsigned int de033EE[] = { 0x00031, 0x00035, 0x065E5, 0x00000 }; +static unsigned int de033EF[] = { 0x00031, 0x00036, 0x065E5, 0x00000 }; +static unsigned int de033F0[] = { 0x00031, 0x00037, 0x065E5, 0x00000 }; +static unsigned int de033F1[] = { 0x00031, 0x00038, 0x065E5, 0x00000 }; +static unsigned int de033F2[] = { 0x00031, 0x00039, 0x065E5, 0x00000 }; +static unsigned int de033F3[] = { 0x00032, 0x00030, 0x065E5, 0x00000 }; +static unsigned int de033F4[] = { 0x00032, 0x00031, 0x065E5, 0x00000 }; +static unsigned int de033F5[] = { 0x00032, 0x00032, 0x065E5, 0x00000 }; +static unsigned int de033F6[] = { 0x00032, 0x00033, 0x065E5, 0x00000 }; +static unsigned int de033F7[] = { 0x00032, 0x00034, 0x065E5, 0x00000 }; +static unsigned int de033F8[] = { 0x00032, 0x00035, 0x065E5, 0x00000 }; +static unsigned int de033F9[] = { 0x00032, 0x00036, 0x065E5, 0x00000 }; +static unsigned int de033FA[] = { 0x00032, 0x00037, 0x065E5, 0x00000 }; +static unsigned int de033FB[] = { 0x00032, 0x00038, 0x065E5, 0x00000 }; +static unsigned int de033FC[] = { 0x00032, 0x00039, 0x065E5, 0x00000 }; +static unsigned int de033FD[] = { 0x00033, 0x00030, 0x065E5, 0x00000 }; +static unsigned int de033FE[] = { 0x00033, 0x00031, 0x065E5, 0x00000 }; +static unsigned int de033FF[] = { 0x00067, 0x00061, 0x0006C, 0x00000 }; +static unsigned int de0F900[] = { 0x08C48, 0x00000 }; +static unsigned int de0F901[] = { 0x066F4, 0x00000 }; +static unsigned int de0F902[] = { 0x08ECA, 0x00000 }; +static unsigned int de0F903[] = { 0x08CC8, 0x00000 }; +static unsigned int de0F904[] = { 0x06ED1, 0x00000 }; +static unsigned int de0F905[] = { 0x04E32, 0x00000 }; +static unsigned int de0F906[] = { 0x053E5, 0x00000 }; +static unsigned int de0F907[] = { 0x09F9C, 0x00000 }; +static unsigned int de0F908[] = { 0x09F9C, 0x00000 }; +static unsigned int de0F909[] = { 0x05951, 0x00000 }; +static unsigned int de0F90A[] = { 0x091D1, 0x00000 }; +static unsigned int de0F90B[] = { 0x05587, 0x00000 }; +static unsigned int de0F90C[] = { 0x05948, 0x00000 }; +static unsigned int de0F90D[] = { 0x061F6, 0x00000 }; +static unsigned int de0F90E[] = { 0x07669, 0x00000 }; +static unsigned int de0F90F[] = { 0x07F85, 0x00000 }; +static unsigned int de0F910[] = { 0x0863F, 0x00000 }; +static unsigned int de0F911[] = { 0x087BA, 0x00000 }; +static unsigned int de0F912[] = { 0x088F8, 0x00000 }; +static unsigned int de0F913[] = { 0x0908F, 0x00000 }; +static unsigned int de0F914[] = { 0x06A02, 0x00000 }; +static unsigned int de0F915[] = { 0x06D1B, 0x00000 }; +static unsigned int de0F916[] = { 0x070D9, 0x00000 }; +static unsigned int de0F917[] = { 0x073DE, 0x00000 }; +static unsigned int de0F918[] = { 0x0843D, 0x00000 }; +static unsigned int de0F919[] = { 0x0916A, 0x00000 }; +static unsigned int de0F91A[] = { 0x099F1, 0x00000 }; +static unsigned int de0F91B[] = { 0x04E82, 0x00000 }; +static unsigned int de0F91C[] = { 0x05375, 0x00000 }; +static unsigned int de0F91D[] = { 0x06B04, 0x00000 }; +static unsigned int de0F91E[] = { 0x0721B, 0x00000 }; +static unsigned int de0F91F[] = { 0x0862D, 0x00000 }; +static unsigned int de0F920[] = { 0x09E1E, 0x00000 }; +static unsigned int de0F921[] = { 0x05D50, 0x00000 }; +static unsigned int de0F922[] = { 0x06FEB, 0x00000 }; +static unsigned int de0F923[] = { 0x085CD, 0x00000 }; +static unsigned int de0F924[] = { 0x08964, 0x00000 }; +static unsigned int de0F925[] = { 0x062C9, 0x00000 }; +static unsigned int de0F926[] = { 0x081D8, 0x00000 }; +static unsigned int de0F927[] = { 0x0881F, 0x00000 }; +static unsigned int de0F928[] = { 0x05ECA, 0x00000 }; +static unsigned int de0F929[] = { 0x06717, 0x00000 }; +static unsigned int de0F92A[] = { 0x06D6A, 0x00000 }; +static unsigned int de0F92B[] = { 0x072FC, 0x00000 }; +static unsigned int de0F92C[] = { 0x090CE, 0x00000 }; +static unsigned int de0F92D[] = { 0x04F86, 0x00000 }; +static unsigned int de0F92E[] = { 0x051B7, 0x00000 }; +static unsigned int de0F92F[] = { 0x052DE, 0x00000 }; +static unsigned int de0F930[] = { 0x064C4, 0x00000 }; +static unsigned int de0F931[] = { 0x06AD3, 0x00000 }; +static unsigned int de0F932[] = { 0x07210, 0x00000 }; +static unsigned int de0F933[] = { 0x076E7, 0x00000 }; +static unsigned int de0F934[] = { 0x08001, 0x00000 }; +static unsigned int de0F935[] = { 0x08606, 0x00000 }; +static unsigned int de0F936[] = { 0x0865C, 0x00000 }; +static unsigned int de0F937[] = { 0x08DEF, 0x00000 }; +static unsigned int de0F938[] = { 0x09732, 0x00000 }; +static unsigned int de0F939[] = { 0x09B6F, 0x00000 }; +static unsigned int de0F93A[] = { 0x09DFA, 0x00000 }; +static unsigned int de0F93B[] = { 0x0788C, 0x00000 }; +static unsigned int de0F93C[] = { 0x0797F, 0x00000 }; +static unsigned int de0F93D[] = { 0x07DA0, 0x00000 }; +static unsigned int de0F93E[] = { 0x083C9, 0x00000 }; +static unsigned int de0F93F[] = { 0x09304, 0x00000 }; +static unsigned int de0F940[] = { 0x09E7F, 0x00000 }; +static unsigned int de0F941[] = { 0x08AD6, 0x00000 }; +static unsigned int de0F942[] = { 0x058DF, 0x00000 }; +static unsigned int de0F943[] = { 0x05F04, 0x00000 }; +static unsigned int de0F944[] = { 0x07C60, 0x00000 }; +static unsigned int de0F945[] = { 0x0807E, 0x00000 }; +static unsigned int de0F946[] = { 0x07262, 0x00000 }; +static unsigned int de0F947[] = { 0x078CA, 0x00000 }; +static unsigned int de0F948[] = { 0x08CC2, 0x00000 }; +static unsigned int de0F949[] = { 0x096F7, 0x00000 }; +static unsigned int de0F94A[] = { 0x058D8, 0x00000 }; +static unsigned int de0F94B[] = { 0x05C62, 0x00000 }; +static unsigned int de0F94C[] = { 0x06A13, 0x00000 }; +static unsigned int de0F94D[] = { 0x06DDA, 0x00000 }; +static unsigned int de0F94E[] = { 0x06F0F, 0x00000 }; +static unsigned int de0F94F[] = { 0x07D2F, 0x00000 }; +static unsigned int de0F950[] = { 0x07E37, 0x00000 }; +static unsigned int de0F951[] = { 0x0964B, 0x00000 }; +static unsigned int de0F952[] = { 0x052D2, 0x00000 }; +static unsigned int de0F953[] = { 0x0808B, 0x00000 }; +static unsigned int de0F954[] = { 0x051DC, 0x00000 }; +static unsigned int de0F955[] = { 0x051CC, 0x00000 }; +static unsigned int de0F956[] = { 0x07A1C, 0x00000 }; +static unsigned int de0F957[] = { 0x07DBE, 0x00000 }; +static unsigned int de0F958[] = { 0x083F1, 0x00000 }; +static unsigned int de0F959[] = { 0x09675, 0x00000 }; +static unsigned int de0F95A[] = { 0x08B80, 0x00000 }; +static unsigned int de0F95B[] = { 0x062CF, 0x00000 }; +static unsigned int de0F95C[] = { 0x06A02, 0x00000 }; +static unsigned int de0F95D[] = { 0x08AFE, 0x00000 }; +static unsigned int de0F95E[] = { 0x04E39, 0x00000 }; +static unsigned int de0F95F[] = { 0x05BE7, 0x00000 }; +static unsigned int de0F960[] = { 0x06012, 0x00000 }; +static unsigned int de0F961[] = { 0x07387, 0x00000 }; +static unsigned int de0F962[] = { 0x07570, 0x00000 }; +static unsigned int de0F963[] = { 0x05317, 0x00000 }; +static unsigned int de0F964[] = { 0x078FB, 0x00000 }; +static unsigned int de0F965[] = { 0x04FBF, 0x00000 }; +static unsigned int de0F966[] = { 0x05FA9, 0x00000 }; +static unsigned int de0F967[] = { 0x04E0D, 0x00000 }; +static unsigned int de0F968[] = { 0x06CCC, 0x00000 }; +static unsigned int de0F969[] = { 0x06578, 0x00000 }; +static unsigned int de0F96A[] = { 0x07D22, 0x00000 }; +static unsigned int de0F96B[] = { 0x053C3, 0x00000 }; +static unsigned int de0F96C[] = { 0x0585E, 0x00000 }; +static unsigned int de0F96D[] = { 0x07701, 0x00000 }; +static unsigned int de0F96E[] = { 0x08449, 0x00000 }; +static unsigned int de0F96F[] = { 0x08AAA, 0x00000 }; +static unsigned int de0F970[] = { 0x06BBA, 0x00000 }; +static unsigned int de0F971[] = { 0x08FB0, 0x00000 }; +static unsigned int de0F972[] = { 0x06C88, 0x00000 }; +static unsigned int de0F973[] = { 0x062FE, 0x00000 }; +static unsigned int de0F974[] = { 0x082E5, 0x00000 }; +static unsigned int de0F975[] = { 0x063A0, 0x00000 }; +static unsigned int de0F976[] = { 0x07565, 0x00000 }; +static unsigned int de0F977[] = { 0x04EAE, 0x00000 }; +static unsigned int de0F978[] = { 0x05169, 0x00000 }; +static unsigned int de0F979[] = { 0x051C9, 0x00000 }; +static unsigned int de0F97A[] = { 0x06881, 0x00000 }; +static unsigned int de0F97B[] = { 0x07CE7, 0x00000 }; +static unsigned int de0F97C[] = { 0x0826F, 0x00000 }; +static unsigned int de0F97D[] = { 0x08AD2, 0x00000 }; +static unsigned int de0F97E[] = { 0x091CF, 0x00000 }; +static unsigned int de0F97F[] = { 0x052F5, 0x00000 }; +static unsigned int de0F980[] = { 0x05442, 0x00000 }; +static unsigned int de0F981[] = { 0x05973, 0x00000 }; +static unsigned int de0F982[] = { 0x05EEC, 0x00000 }; +static unsigned int de0F983[] = { 0x065C5, 0x00000 }; +static unsigned int de0F984[] = { 0x06FFE, 0x00000 }; +static unsigned int de0F985[] = { 0x0792A, 0x00000 }; +static unsigned int de0F986[] = { 0x095AD, 0x00000 }; +static unsigned int de0F987[] = { 0x09A6A, 0x00000 }; +static unsigned int de0F988[] = { 0x09E97, 0x00000 }; +static unsigned int de0F989[] = { 0x09ECE, 0x00000 }; +static unsigned int de0F98A[] = { 0x0529B, 0x00000 }; +static unsigned int de0F98B[] = { 0x066C6, 0x00000 }; +static unsigned int de0F98C[] = { 0x06B77, 0x00000 }; +static unsigned int de0F98D[] = { 0x08F62, 0x00000 }; +static unsigned int de0F98E[] = { 0x05E74, 0x00000 }; +static unsigned int de0F98F[] = { 0x06190, 0x00000 }; +static unsigned int de0F990[] = { 0x06200, 0x00000 }; +static unsigned int de0F991[] = { 0x0649A, 0x00000 }; +static unsigned int de0F992[] = { 0x06F23, 0x00000 }; +static unsigned int de0F993[] = { 0x07149, 0x00000 }; +static unsigned int de0F994[] = { 0x07489, 0x00000 }; +static unsigned int de0F995[] = { 0x079CA, 0x00000 }; +static unsigned int de0F996[] = { 0x07DF4, 0x00000 }; +static unsigned int de0F997[] = { 0x0806F, 0x00000 }; +static unsigned int de0F998[] = { 0x08F26, 0x00000 }; +static unsigned int de0F999[] = { 0x084EE, 0x00000 }; +static unsigned int de0F99A[] = { 0x09023, 0x00000 }; +static unsigned int de0F99B[] = { 0x0934A, 0x00000 }; +static unsigned int de0F99C[] = { 0x05217, 0x00000 }; +static unsigned int de0F99D[] = { 0x052A3, 0x00000 }; +static unsigned int de0F99E[] = { 0x054BD, 0x00000 }; +static unsigned int de0F99F[] = { 0x070C8, 0x00000 }; +static unsigned int de0F9A0[] = { 0x088C2, 0x00000 }; +static unsigned int de0F9A1[] = { 0x08AAA, 0x00000 }; +static unsigned int de0F9A2[] = { 0x05EC9, 0x00000 }; +static unsigned int de0F9A3[] = { 0x05FF5, 0x00000 }; +static unsigned int de0F9A4[] = { 0x0637B, 0x00000 }; +static unsigned int de0F9A5[] = { 0x06BAE, 0x00000 }; +static unsigned int de0F9A6[] = { 0x07C3E, 0x00000 }; +static unsigned int de0F9A7[] = { 0x07375, 0x00000 }; +static unsigned int de0F9A8[] = { 0x04EE4, 0x00000 }; +static unsigned int de0F9A9[] = { 0x056F9, 0x00000 }; +static unsigned int de0F9AA[] = { 0x05BE7, 0x00000 }; +static unsigned int de0F9AB[] = { 0x05DBA, 0x00000 }; +static unsigned int de0F9AC[] = { 0x0601C, 0x00000 }; +static unsigned int de0F9AD[] = { 0x073B2, 0x00000 }; +static unsigned int de0F9AE[] = { 0x07469, 0x00000 }; +static unsigned int de0F9AF[] = { 0x07F9A, 0x00000 }; +static unsigned int de0F9B0[] = { 0x08046, 0x00000 }; +static unsigned int de0F9B1[] = { 0x09234, 0x00000 }; +static unsigned int de0F9B2[] = { 0x096F6, 0x00000 }; +static unsigned int de0F9B3[] = { 0x09748, 0x00000 }; +static unsigned int de0F9B4[] = { 0x09818, 0x00000 }; +static unsigned int de0F9B5[] = { 0x04F8B, 0x00000 }; +static unsigned int de0F9B6[] = { 0x079AE, 0x00000 }; +static unsigned int de0F9B7[] = { 0x091B4, 0x00000 }; +static unsigned int de0F9B8[] = { 0x096B8, 0x00000 }; +static unsigned int de0F9B9[] = { 0x060E1, 0x00000 }; +static unsigned int de0F9BA[] = { 0x04E86, 0x00000 }; +static unsigned int de0F9BB[] = { 0x050DA, 0x00000 }; +static unsigned int de0F9BC[] = { 0x05BEE, 0x00000 }; +static unsigned int de0F9BD[] = { 0x05C3F, 0x00000 }; +static unsigned int de0F9BE[] = { 0x06599, 0x00000 }; +static unsigned int de0F9BF[] = { 0x06A02, 0x00000 }; +static unsigned int de0F9C0[] = { 0x071CE, 0x00000 }; +static unsigned int de0F9C1[] = { 0x07642, 0x00000 }; +static unsigned int de0F9C2[] = { 0x084FC, 0x00000 }; +static unsigned int de0F9C3[] = { 0x0907C, 0x00000 }; +static unsigned int de0F9C4[] = { 0x09F8D, 0x00000 }; +static unsigned int de0F9C5[] = { 0x06688, 0x00000 }; +static unsigned int de0F9C6[] = { 0x0962E, 0x00000 }; +static unsigned int de0F9C7[] = { 0x05289, 0x00000 }; +static unsigned int de0F9C8[] = { 0x0677B, 0x00000 }; +static unsigned int de0F9C9[] = { 0x067F3, 0x00000 }; +static unsigned int de0F9CA[] = { 0x06D41, 0x00000 }; +static unsigned int de0F9CB[] = { 0x06E9C, 0x00000 }; +static unsigned int de0F9CC[] = { 0x07409, 0x00000 }; +static unsigned int de0F9CD[] = { 0x07559, 0x00000 }; +static unsigned int de0F9CE[] = { 0x0786B, 0x00000 }; +static unsigned int de0F9CF[] = { 0x07D10, 0x00000 }; +static unsigned int de0F9D0[] = { 0x0985E, 0x00000 }; +static unsigned int de0F9D1[] = { 0x0516D, 0x00000 }; +static unsigned int de0F9D2[] = { 0x0622E, 0x00000 }; +static unsigned int de0F9D3[] = { 0x09678, 0x00000 }; +static unsigned int de0F9D4[] = { 0x0502B, 0x00000 }; +static unsigned int de0F9D5[] = { 0x05D19, 0x00000 }; +static unsigned int de0F9D6[] = { 0x06DEA, 0x00000 }; +static unsigned int de0F9D7[] = { 0x08F2A, 0x00000 }; +static unsigned int de0F9D8[] = { 0x05F8B, 0x00000 }; +static unsigned int de0F9D9[] = { 0x06144, 0x00000 }; +static unsigned int de0F9DA[] = { 0x06817, 0x00000 }; +static unsigned int de0F9DB[] = { 0x07387, 0x00000 }; +static unsigned int de0F9DC[] = { 0x09686, 0x00000 }; +static unsigned int de0F9DD[] = { 0x05229, 0x00000 }; +static unsigned int de0F9DE[] = { 0x0540F, 0x00000 }; +static unsigned int de0F9DF[] = { 0x05C65, 0x00000 }; +static unsigned int de0F9E0[] = { 0x06613, 0x00000 }; +static unsigned int de0F9E1[] = { 0x0674E, 0x00000 }; +static unsigned int de0F9E2[] = { 0x068A8, 0x00000 }; +static unsigned int de0F9E3[] = { 0x06CE5, 0x00000 }; +static unsigned int de0F9E4[] = { 0x07406, 0x00000 }; +static unsigned int de0F9E5[] = { 0x075E2, 0x00000 }; +static unsigned int de0F9E6[] = { 0x07F79, 0x00000 }; +static unsigned int de0F9E7[] = { 0x088CF, 0x00000 }; +static unsigned int de0F9E8[] = { 0x088E1, 0x00000 }; +static unsigned int de0F9E9[] = { 0x091CC, 0x00000 }; +static unsigned int de0F9EA[] = { 0x096E2, 0x00000 }; +static unsigned int de0F9EB[] = { 0x0533F, 0x00000 }; +static unsigned int de0F9EC[] = { 0x06EBA, 0x00000 }; +static unsigned int de0F9ED[] = { 0x0541D, 0x00000 }; +static unsigned int de0F9EE[] = { 0x071D0, 0x00000 }; +static unsigned int de0F9EF[] = { 0x07498, 0x00000 }; +static unsigned int de0F9F0[] = { 0x085FA, 0x00000 }; +static unsigned int de0F9F1[] = { 0x096A3, 0x00000 }; +static unsigned int de0F9F2[] = { 0x09C57, 0x00000 }; +static unsigned int de0F9F3[] = { 0x09E9F, 0x00000 }; +static unsigned int de0F9F4[] = { 0x06797, 0x00000 }; +static unsigned int de0F9F5[] = { 0x06DCB, 0x00000 }; +static unsigned int de0F9F6[] = { 0x081E8, 0x00000 }; +static unsigned int de0F9F7[] = { 0x07ACB, 0x00000 }; +static unsigned int de0F9F8[] = { 0x07B20, 0x00000 }; +static unsigned int de0F9F9[] = { 0x07C92, 0x00000 }; +static unsigned int de0F9FA[] = { 0x072C0, 0x00000 }; +static unsigned int de0F9FB[] = { 0x07099, 0x00000 }; +static unsigned int de0F9FC[] = { 0x08B58, 0x00000 }; +static unsigned int de0F9FD[] = { 0x04EC0, 0x00000 }; +static unsigned int de0F9FE[] = { 0x08336, 0x00000 }; +static unsigned int de0F9FF[] = { 0x0523A, 0x00000 }; +static unsigned int de0FA00[] = { 0x05207, 0x00000 }; +static unsigned int de0FA01[] = { 0x05EA6, 0x00000 }; +static unsigned int de0FA02[] = { 0x062D3, 0x00000 }; +static unsigned int de0FA03[] = { 0x07CD6, 0x00000 }; +static unsigned int de0FA04[] = { 0x05B85, 0x00000 }; +static unsigned int de0FA05[] = { 0x06D1E, 0x00000 }; +static unsigned int de0FA06[] = { 0x066B4, 0x00000 }; +static unsigned int de0FA07[] = { 0x08F3B, 0x00000 }; +static unsigned int de0FA08[] = { 0x0884C, 0x00000 }; +static unsigned int de0FA09[] = { 0x0964D, 0x00000 }; +static unsigned int de0FA0A[] = { 0x0898B, 0x00000 }; +static unsigned int de0FA0B[] = { 0x05ED3, 0x00000 }; +static unsigned int de0FA0C[] = { 0x05140, 0x00000 }; +static unsigned int de0FA0D[] = { 0x055C0, 0x00000 }; +static unsigned int de0FA10[] = { 0x0585A, 0x00000 }; +static unsigned int de0FA12[] = { 0x06674, 0x00000 }; +static unsigned int de0FA15[] = { 0x051DE, 0x00000 }; +static unsigned int de0FA16[] = { 0x0732A, 0x00000 }; +static unsigned int de0FA17[] = { 0x076CA, 0x00000 }; +static unsigned int de0FA18[] = { 0x0793C, 0x00000 }; +static unsigned int de0FA19[] = { 0x0795E, 0x00000 }; +static unsigned int de0FA1A[] = { 0x07965, 0x00000 }; +static unsigned int de0FA1B[] = { 0x0798F, 0x00000 }; +static unsigned int de0FA1C[] = { 0x09756, 0x00000 }; +static unsigned int de0FA1D[] = { 0x07CBE, 0x00000 }; +static unsigned int de0FA1E[] = { 0x07FBD, 0x00000 }; +static unsigned int de0FA20[] = { 0x08612, 0x00000 }; +static unsigned int de0FA22[] = { 0x08AF8, 0x00000 }; +static unsigned int de0FA25[] = { 0x09038, 0x00000 }; +static unsigned int de0FA26[] = { 0x090FD, 0x00000 }; +static unsigned int de0FA2A[] = { 0x098EF, 0x00000 }; +static unsigned int de0FA2B[] = { 0x098FC, 0x00000 }; +static unsigned int de0FA2C[] = { 0x09928, 0x00000 }; +static unsigned int de0FA2D[] = { 0x09DB4, 0x00000 }; +static unsigned int de0FA30[] = { 0x04FAE, 0x00000 }; +static unsigned int de0FA31[] = { 0x050E7, 0x00000 }; +static unsigned int de0FA32[] = { 0x0514D, 0x00000 }; +static unsigned int de0FA33[] = { 0x052C9, 0x00000 }; +static unsigned int de0FA34[] = { 0x052E4, 0x00000 }; +static unsigned int de0FA35[] = { 0x05351, 0x00000 }; +static unsigned int de0FA36[] = { 0x0559D, 0x00000 }; +static unsigned int de0FA37[] = { 0x05606, 0x00000 }; +static unsigned int de0FA38[] = { 0x05668, 0x00000 }; +static unsigned int de0FA39[] = { 0x05840, 0x00000 }; +static unsigned int de0FA3A[] = { 0x058A8, 0x00000 }; +static unsigned int de0FA3B[] = { 0x05C64, 0x00000 }; +static unsigned int de0FA3C[] = { 0x05C6E, 0x00000 }; +static unsigned int de0FA3D[] = { 0x06094, 0x00000 }; +static unsigned int de0FA3E[] = { 0x06168, 0x00000 }; +static unsigned int de0FA3F[] = { 0x0618E, 0x00000 }; +static unsigned int de0FA40[] = { 0x061F2, 0x00000 }; +static unsigned int de0FA41[] = { 0x0654F, 0x00000 }; +static unsigned int de0FA42[] = { 0x065E2, 0x00000 }; +static unsigned int de0FA43[] = { 0x06691, 0x00000 }; +static unsigned int de0FA44[] = { 0x06885, 0x00000 }; +static unsigned int de0FA45[] = { 0x06D77, 0x00000 }; +static unsigned int de0FA46[] = { 0x06E1A, 0x00000 }; +static unsigned int de0FA47[] = { 0x06F22, 0x00000 }; +static unsigned int de0FA48[] = { 0x0716E, 0x00000 }; +static unsigned int de0FA49[] = { 0x0722B, 0x00000 }; +static unsigned int de0FA4A[] = { 0x07422, 0x00000 }; +static unsigned int de0FA4B[] = { 0x07891, 0x00000 }; +static unsigned int de0FA4C[] = { 0x0793E, 0x00000 }; +static unsigned int de0FA4D[] = { 0x07949, 0x00000 }; +static unsigned int de0FA4E[] = { 0x07948, 0x00000 }; +static unsigned int de0FA4F[] = { 0x07950, 0x00000 }; +static unsigned int de0FA50[] = { 0x07956, 0x00000 }; +static unsigned int de0FA51[] = { 0x0795D, 0x00000 }; +static unsigned int de0FA52[] = { 0x0798D, 0x00000 }; +static unsigned int de0FA53[] = { 0x0798E, 0x00000 }; +static unsigned int de0FA54[] = { 0x07A40, 0x00000 }; +static unsigned int de0FA55[] = { 0x07A81, 0x00000 }; +static unsigned int de0FA56[] = { 0x07BC0, 0x00000 }; +static unsigned int de0FA57[] = { 0x07DF4, 0x00000 }; +static unsigned int de0FA58[] = { 0x07E09, 0x00000 }; +static unsigned int de0FA59[] = { 0x07E41, 0x00000 }; +static unsigned int de0FA5A[] = { 0x07F72, 0x00000 }; +static unsigned int de0FA5B[] = { 0x08005, 0x00000 }; +static unsigned int de0FA5C[] = { 0x081ED, 0x00000 }; +static unsigned int de0FA5D[] = { 0x08279, 0x00000 }; +static unsigned int de0FA5E[] = { 0x08279, 0x00000 }; +static unsigned int de0FA5F[] = { 0x08457, 0x00000 }; +static unsigned int de0FA60[] = { 0x08910, 0x00000 }; +static unsigned int de0FA61[] = { 0x08996, 0x00000 }; +static unsigned int de0FA62[] = { 0x08B01, 0x00000 }; +static unsigned int de0FA63[] = { 0x08B39, 0x00000 }; +static unsigned int de0FA64[] = { 0x08CD3, 0x00000 }; +static unsigned int de0FA65[] = { 0x08D08, 0x00000 }; +static unsigned int de0FA66[] = { 0x08FB6, 0x00000 }; +static unsigned int de0FA67[] = { 0x09038, 0x00000 }; +static unsigned int de0FA68[] = { 0x096E3, 0x00000 }; +static unsigned int de0FA69[] = { 0x097FF, 0x00000 }; +static unsigned int de0FA6A[] = { 0x0983B, 0x00000 }; +static unsigned int de0FA70[] = { 0x04E26, 0x00000 }; +static unsigned int de0FA71[] = { 0x051B5, 0x00000 }; +static unsigned int de0FA72[] = { 0x05168, 0x00000 }; +static unsigned int de0FA73[] = { 0x04F80, 0x00000 }; +static unsigned int de0FA74[] = { 0x05145, 0x00000 }; +static unsigned int de0FA75[] = { 0x05180, 0x00000 }; +static unsigned int de0FA76[] = { 0x052C7, 0x00000 }; +static unsigned int de0FA77[] = { 0x052FA, 0x00000 }; +static unsigned int de0FA78[] = { 0x0559D, 0x00000 }; +static unsigned int de0FA79[] = { 0x05555, 0x00000 }; +static unsigned int de0FA7A[] = { 0x05599, 0x00000 }; +static unsigned int de0FA7B[] = { 0x055E2, 0x00000 }; +static unsigned int de0FA7C[] = { 0x0585A, 0x00000 }; +static unsigned int de0FA7D[] = { 0x058B3, 0x00000 }; +static unsigned int de0FA7E[] = { 0x05944, 0x00000 }; +static unsigned int de0FA7F[] = { 0x05954, 0x00000 }; +static unsigned int de0FA80[] = { 0x05A62, 0x00000 }; +static unsigned int de0FA81[] = { 0x05B28, 0x00000 }; +static unsigned int de0FA82[] = { 0x05ED2, 0x00000 }; +static unsigned int de0FA83[] = { 0x05ED9, 0x00000 }; +static unsigned int de0FA84[] = { 0x05F69, 0x00000 }; +static unsigned int de0FA85[] = { 0x05FAD, 0x00000 }; +static unsigned int de0FA86[] = { 0x060D8, 0x00000 }; +static unsigned int de0FA87[] = { 0x0614E, 0x00000 }; +static unsigned int de0FA88[] = { 0x06108, 0x00000 }; +static unsigned int de0FA89[] = { 0x0618E, 0x00000 }; +static unsigned int de0FA8A[] = { 0x06160, 0x00000 }; +static unsigned int de0FA8B[] = { 0x061F2, 0x00000 }; +static unsigned int de0FA8C[] = { 0x06234, 0x00000 }; +static unsigned int de0FA8D[] = { 0x063C4, 0x00000 }; +static unsigned int de0FA8E[] = { 0x0641C, 0x00000 }; +static unsigned int de0FA8F[] = { 0x06452, 0x00000 }; +static unsigned int de0FA90[] = { 0x06556, 0x00000 }; +static unsigned int de0FA91[] = { 0x06674, 0x00000 }; +static unsigned int de0FA92[] = { 0x06717, 0x00000 }; +static unsigned int de0FA93[] = { 0x0671B, 0x00000 }; +static unsigned int de0FA94[] = { 0x06756, 0x00000 }; +static unsigned int de0FA95[] = { 0x06B79, 0x00000 }; +static unsigned int de0FA96[] = { 0x06BBA, 0x00000 }; +static unsigned int de0FA97[] = { 0x06D41, 0x00000 }; +static unsigned int de0FA98[] = { 0x06EDB, 0x00000 }; +static unsigned int de0FA99[] = { 0x06ECB, 0x00000 }; +static unsigned int de0FA9A[] = { 0x06F22, 0x00000 }; +static unsigned int de0FA9B[] = { 0x0701E, 0x00000 }; +static unsigned int de0FA9C[] = { 0x0716E, 0x00000 }; +static unsigned int de0FA9D[] = { 0x077A7, 0x00000 }; +static unsigned int de0FA9E[] = { 0x07235, 0x00000 }; +static unsigned int de0FA9F[] = { 0x072AF, 0x00000 }; +static unsigned int de0FAA0[] = { 0x0732A, 0x00000 }; +static unsigned int de0FAA1[] = { 0x07471, 0x00000 }; +static unsigned int de0FAA2[] = { 0x07506, 0x00000 }; +static unsigned int de0FAA3[] = { 0x0753B, 0x00000 }; +static unsigned int de0FAA4[] = { 0x0761D, 0x00000 }; +static unsigned int de0FAA5[] = { 0x0761F, 0x00000 }; +static unsigned int de0FAA6[] = { 0x076CA, 0x00000 }; +static unsigned int de0FAA7[] = { 0x076DB, 0x00000 }; +static unsigned int de0FAA8[] = { 0x076F4, 0x00000 }; +static unsigned int de0FAA9[] = { 0x0774A, 0x00000 }; +static unsigned int de0FAAA[] = { 0x07740, 0x00000 }; +static unsigned int de0FAAB[] = { 0x078CC, 0x00000 }; +static unsigned int de0FAAC[] = { 0x07AB1, 0x00000 }; +static unsigned int de0FAAD[] = { 0x07BC0, 0x00000 }; +static unsigned int de0FAAE[] = { 0x07C7B, 0x00000 }; +static unsigned int de0FAAF[] = { 0x07D5B, 0x00000 }; +static unsigned int de0FAB0[] = { 0x07DF4, 0x00000 }; +static unsigned int de0FAB1[] = { 0x07F3E, 0x00000 }; +static unsigned int de0FAB2[] = { 0x08005, 0x00000 }; +static unsigned int de0FAB3[] = { 0x08352, 0x00000 }; +static unsigned int de0FAB4[] = { 0x083EF, 0x00000 }; +static unsigned int de0FAB5[] = { 0x08779, 0x00000 }; +static unsigned int de0FAB6[] = { 0x08941, 0x00000 }; +static unsigned int de0FAB7[] = { 0x08986, 0x00000 }; +static unsigned int de0FAB8[] = { 0x08996, 0x00000 }; +static unsigned int de0FAB9[] = { 0x08ABF, 0x00000 }; +static unsigned int de0FABA[] = { 0x08AF8, 0x00000 }; +static unsigned int de0FABB[] = { 0x08ACB, 0x00000 }; +static unsigned int de0FABC[] = { 0x08B01, 0x00000 }; +static unsigned int de0FABD[] = { 0x08AFE, 0x00000 }; +static unsigned int de0FABE[] = { 0x08AED, 0x00000 }; +static unsigned int de0FABF[] = { 0x08B39, 0x00000 }; +static unsigned int de0FAC0[] = { 0x08B8A, 0x00000 }; +static unsigned int de0FAC1[] = { 0x08D08, 0x00000 }; +static unsigned int de0FAC2[] = { 0x08F38, 0x00000 }; +static unsigned int de0FAC3[] = { 0x09072, 0x00000 }; +static unsigned int de0FAC4[] = { 0x09199, 0x00000 }; +static unsigned int de0FAC5[] = { 0x09276, 0x00000 }; +static unsigned int de0FAC6[] = { 0x0967C, 0x00000 }; +static unsigned int de0FAC7[] = { 0x096E3, 0x00000 }; +static unsigned int de0FAC8[] = { 0x09756, 0x00000 }; +static unsigned int de0FAC9[] = { 0x097DB, 0x00000 }; +static unsigned int de0FACA[] = { 0x097FF, 0x00000 }; +static unsigned int de0FACB[] = { 0x0980B, 0x00000 }; +static unsigned int de0FACC[] = { 0x0983B, 0x00000 }; +static unsigned int de0FACD[] = { 0x09B12, 0x00000 }; +static unsigned int de0FACE[] = { 0x09F9C, 0x00000 }; +static unsigned int de0FACF[] = { 0x2284A, 0x00000 }; +static unsigned int de0FAD0[] = { 0x22844, 0x00000 }; +static unsigned int de0FAD1[] = { 0x233D5, 0x00000 }; +static unsigned int de0FAD2[] = { 0x03B9D, 0x00000 }; +static unsigned int de0FAD3[] = { 0x04018, 0x00000 }; +static unsigned int de0FAD4[] = { 0x04039, 0x00000 }; +static unsigned int de0FAD5[] = { 0x25249, 0x00000 }; +static unsigned int de0FAD6[] = { 0x25CD0, 0x00000 }; +static unsigned int de0FAD7[] = { 0x27ED3, 0x00000 }; +static unsigned int de0FAD8[] = { 0x09F43, 0x00000 }; +static unsigned int de0FAD9[] = { 0x09F8E, 0x00000 }; +static unsigned int de0FB00[] = { 0x00066, 0x00066, 0x00000 }; +static unsigned int de0FB01[] = { 0x00066, 0x00069, 0x00000 }; +static unsigned int de0FB02[] = { 0x00066, 0x0006C, 0x00000 }; +static unsigned int de0FB03[] = { 0x00066, 0x00066, 0x00069, 0x00000 }; +static unsigned int de0FB04[] = { 0x00066, 0x00066, 0x0006C, 0x00000 }; +static unsigned int de0FB05[] = { 0x0017F, 0x00074, 0x00000 }; +static unsigned int de0FB06[] = { 0x00073, 0x00074, 0x00000 }; +static unsigned int de0FB13[] = { 0x00574, 0x00576, 0x00000 }; +static unsigned int de0FB14[] = { 0x00574, 0x00565, 0x00000 }; +static unsigned int de0FB15[] = { 0x00574, 0x0056B, 0x00000 }; +static unsigned int de0FB16[] = { 0x0057E, 0x00576, 0x00000 }; +static unsigned int de0FB17[] = { 0x00574, 0x0056D, 0x00000 }; +static unsigned int de0FB1D[] = { 0x005D9, 0x005B4, 0x00000 }; +static unsigned int de0FB1F[] = { 0x005F2, 0x005B7, 0x00000 }; +static unsigned int de0FB20[] = { 0x005E2, 0x00000 }; +static unsigned int de0FB21[] = { 0x005D0, 0x00000 }; +static unsigned int de0FB22[] = { 0x005D3, 0x00000 }; +static unsigned int de0FB23[] = { 0x005D4, 0x00000 }; +static unsigned int de0FB24[] = { 0x005DB, 0x00000 }; +static unsigned int de0FB25[] = { 0x005DC, 0x00000 }; +static unsigned int de0FB26[] = { 0x005DD, 0x00000 }; +static unsigned int de0FB27[] = { 0x005E8, 0x00000 }; +static unsigned int de0FB28[] = { 0x005EA, 0x00000 }; +static unsigned int de0FB29[] = { 0x0002B, 0x00000 }; +static unsigned int de0FB2A[] = { 0x005E9, 0x005C1, 0x00000 }; +static unsigned int de0FB2B[] = { 0x005E9, 0x005C2, 0x00000 }; +static unsigned int de0FB2C[] = { 0x0FB49, 0x005C1, 0x00000 }; +static unsigned int de0FB2D[] = { 0x0FB49, 0x005C2, 0x00000 }; +static unsigned int de0FB2E[] = { 0x005D0, 0x005B7, 0x00000 }; +static unsigned int de0FB2F[] = { 0x005D0, 0x005B8, 0x00000 }; +static unsigned int de0FB30[] = { 0x005D0, 0x005BC, 0x00000 }; +static unsigned int de0FB31[] = { 0x005D1, 0x005BC, 0x00000 }; +static unsigned int de0FB32[] = { 0x005D2, 0x005BC, 0x00000 }; +static unsigned int de0FB33[] = { 0x005D3, 0x005BC, 0x00000 }; +static unsigned int de0FB34[] = { 0x005D4, 0x005BC, 0x00000 }; +static unsigned int de0FB35[] = { 0x005D5, 0x005BC, 0x00000 }; +static unsigned int de0FB36[] = { 0x005D6, 0x005BC, 0x00000 }; +static unsigned int de0FB38[] = { 0x005D8, 0x005BC, 0x00000 }; +static unsigned int de0FB39[] = { 0x005D9, 0x005BC, 0x00000 }; +static unsigned int de0FB3A[] = { 0x005DA, 0x005BC, 0x00000 }; +static unsigned int de0FB3B[] = { 0x005DB, 0x005BC, 0x00000 }; +static unsigned int de0FB3C[] = { 0x005DC, 0x005BC, 0x00000 }; +static unsigned int de0FB3E[] = { 0x005DE, 0x005BC, 0x00000 }; +static unsigned int de0FB40[] = { 0x005E0, 0x005BC, 0x00000 }; +static unsigned int de0FB41[] = { 0x005E1, 0x005BC, 0x00000 }; +static unsigned int de0FB43[] = { 0x005E3, 0x005BC, 0x00000 }; +static unsigned int de0FB44[] = { 0x005E4, 0x005BC, 0x00000 }; +static unsigned int de0FB46[] = { 0x005E6, 0x005BC, 0x00000 }; +static unsigned int de0FB47[] = { 0x005E7, 0x005BC, 0x00000 }; +static unsigned int de0FB48[] = { 0x005E8, 0x005BC, 0x00000 }; +static unsigned int de0FB49[] = { 0x005E9, 0x005BC, 0x00000 }; +static unsigned int de0FB4A[] = { 0x005EA, 0x005BC, 0x00000 }; +static unsigned int de0FB4B[] = { 0x005D5, 0x005B9, 0x00000 }; +static unsigned int de0FB4C[] = { 0x005D1, 0x005BF, 0x00000 }; +static unsigned int de0FB4D[] = { 0x005DB, 0x005BF, 0x00000 }; +static unsigned int de0FB4E[] = { 0x005E4, 0x005BF, 0x00000 }; +static unsigned int de0FB4F[] = { 0x005D0, 0x005DC, 0x00000 }; +static unsigned int de0FB50[] = { 0x00671, 0x00000 }; +static unsigned int de0FB51[] = { 0x00671, 0x00000 }; +static unsigned int de0FB52[] = { 0x0067B, 0x00000 }; +static unsigned int de0FB53[] = { 0x0067B, 0x00000 }; +static unsigned int de0FB54[] = { 0x0067B, 0x00000 }; +static unsigned int de0FB55[] = { 0x0067B, 0x00000 }; +static unsigned int de0FB56[] = { 0x0067E, 0x00000 }; +static unsigned int de0FB57[] = { 0x0067E, 0x00000 }; +static unsigned int de0FB58[] = { 0x0067E, 0x00000 }; +static unsigned int de0FB59[] = { 0x0067E, 0x00000 }; +static unsigned int de0FB5A[] = { 0x00680, 0x00000 }; +static unsigned int de0FB5B[] = { 0x00680, 0x00000 }; +static unsigned int de0FB5C[] = { 0x00680, 0x00000 }; +static unsigned int de0FB5D[] = { 0x00680, 0x00000 }; +static unsigned int de0FB5E[] = { 0x0067A, 0x00000 }; +static unsigned int de0FB5F[] = { 0x0067A, 0x00000 }; +static unsigned int de0FB60[] = { 0x0067A, 0x00000 }; +static unsigned int de0FB61[] = { 0x0067A, 0x00000 }; +static unsigned int de0FB62[] = { 0x0067F, 0x00000 }; +static unsigned int de0FB63[] = { 0x0067F, 0x00000 }; +static unsigned int de0FB64[] = { 0x0067F, 0x00000 }; +static unsigned int de0FB65[] = { 0x0067F, 0x00000 }; +static unsigned int de0FB66[] = { 0x00679, 0x00000 }; +static unsigned int de0FB67[] = { 0x00679, 0x00000 }; +static unsigned int de0FB68[] = { 0x00679, 0x00000 }; +static unsigned int de0FB69[] = { 0x00679, 0x00000 }; +static unsigned int de0FB6A[] = { 0x006A4, 0x00000 }; +static unsigned int de0FB6B[] = { 0x006A4, 0x00000 }; +static unsigned int de0FB6C[] = { 0x006A4, 0x00000 }; +static unsigned int de0FB6D[] = { 0x006A4, 0x00000 }; +static unsigned int de0FB6E[] = { 0x006A6, 0x00000 }; +static unsigned int de0FB6F[] = { 0x006A6, 0x00000 }; +static unsigned int de0FB70[] = { 0x006A6, 0x00000 }; +static unsigned int de0FB71[] = { 0x006A6, 0x00000 }; +static unsigned int de0FB72[] = { 0x00684, 0x00000 }; +static unsigned int de0FB73[] = { 0x00684, 0x00000 }; +static unsigned int de0FB74[] = { 0x00684, 0x00000 }; +static unsigned int de0FB75[] = { 0x00684, 0x00000 }; +static unsigned int de0FB76[] = { 0x00683, 0x00000 }; +static unsigned int de0FB77[] = { 0x00683, 0x00000 }; +static unsigned int de0FB78[] = { 0x00683, 0x00000 }; +static unsigned int de0FB79[] = { 0x00683, 0x00000 }; +static unsigned int de0FB7A[] = { 0x00686, 0x00000 }; +static unsigned int de0FB7B[] = { 0x00686, 0x00000 }; +static unsigned int de0FB7C[] = { 0x00686, 0x00000 }; +static unsigned int de0FB7D[] = { 0x00686, 0x00000 }; +static unsigned int de0FB7E[] = { 0x00687, 0x00000 }; +static unsigned int de0FB7F[] = { 0x00687, 0x00000 }; +static unsigned int de0FB80[] = { 0x00687, 0x00000 }; +static unsigned int de0FB81[] = { 0x00687, 0x00000 }; +static unsigned int de0FB82[] = { 0x0068D, 0x00000 }; +static unsigned int de0FB83[] = { 0x0068D, 0x00000 }; +static unsigned int de0FB84[] = { 0x0068C, 0x00000 }; +static unsigned int de0FB85[] = { 0x0068C, 0x00000 }; +static unsigned int de0FB86[] = { 0x0068E, 0x00000 }; +static unsigned int de0FB87[] = { 0x0068E, 0x00000 }; +static unsigned int de0FB88[] = { 0x00688, 0x00000 }; +static unsigned int de0FB89[] = { 0x00688, 0x00000 }; +static unsigned int de0FB8A[] = { 0x00698, 0x00000 }; +static unsigned int de0FB8B[] = { 0x00698, 0x00000 }; +static unsigned int de0FB8C[] = { 0x00691, 0x00000 }; +static unsigned int de0FB8D[] = { 0x00691, 0x00000 }; +static unsigned int de0FB8E[] = { 0x006A9, 0x00000 }; +static unsigned int de0FB8F[] = { 0x006A9, 0x00000 }; +static unsigned int de0FB90[] = { 0x006A9, 0x00000 }; +static unsigned int de0FB91[] = { 0x006A9, 0x00000 }; +static unsigned int de0FB92[] = { 0x006AF, 0x00000 }; +static unsigned int de0FB93[] = { 0x006AF, 0x00000 }; +static unsigned int de0FB94[] = { 0x006AF, 0x00000 }; +static unsigned int de0FB95[] = { 0x006AF, 0x00000 }; +static unsigned int de0FB96[] = { 0x006B3, 0x00000 }; +static unsigned int de0FB97[] = { 0x006B3, 0x00000 }; +static unsigned int de0FB98[] = { 0x006B3, 0x00000 }; +static unsigned int de0FB99[] = { 0x006B3, 0x00000 }; +static unsigned int de0FB9A[] = { 0x006B1, 0x00000 }; +static unsigned int de0FB9B[] = { 0x006B1, 0x00000 }; +static unsigned int de0FB9C[] = { 0x006B1, 0x00000 }; +static unsigned int de0FB9D[] = { 0x006B1, 0x00000 }; +static unsigned int de0FB9E[] = { 0x006BA, 0x00000 }; +static unsigned int de0FB9F[] = { 0x006BA, 0x00000 }; +static unsigned int de0FBA0[] = { 0x006BB, 0x00000 }; +static unsigned int de0FBA1[] = { 0x006BB, 0x00000 }; +static unsigned int de0FBA2[] = { 0x006BB, 0x00000 }; +static unsigned int de0FBA3[] = { 0x006BB, 0x00000 }; +static unsigned int de0FBA4[] = { 0x006C0, 0x00000 }; +static unsigned int de0FBA5[] = { 0x006C0, 0x00000 }; +static unsigned int de0FBA6[] = { 0x006C1, 0x00000 }; +static unsigned int de0FBA7[] = { 0x006C1, 0x00000 }; +static unsigned int de0FBA8[] = { 0x006C1, 0x00000 }; +static unsigned int de0FBA9[] = { 0x006C1, 0x00000 }; +static unsigned int de0FBAA[] = { 0x006BE, 0x00000 }; +static unsigned int de0FBAB[] = { 0x006BE, 0x00000 }; +static unsigned int de0FBAC[] = { 0x006BE, 0x00000 }; +static unsigned int de0FBAD[] = { 0x006BE, 0x00000 }; +static unsigned int de0FBAE[] = { 0x006D2, 0x00000 }; +static unsigned int de0FBAF[] = { 0x006D2, 0x00000 }; +static unsigned int de0FBB0[] = { 0x006D3, 0x00000 }; +static unsigned int de0FBB1[] = { 0x006D3, 0x00000 }; +static unsigned int de0FBD3[] = { 0x006AD, 0x00000 }; +static unsigned int de0FBD4[] = { 0x006AD, 0x00000 }; +static unsigned int de0FBD5[] = { 0x006AD, 0x00000 }; +static unsigned int de0FBD6[] = { 0x006AD, 0x00000 }; +static unsigned int de0FBD7[] = { 0x006C7, 0x00000 }; +static unsigned int de0FBD8[] = { 0x006C7, 0x00000 }; +static unsigned int de0FBD9[] = { 0x006C6, 0x00000 }; +static unsigned int de0FBDA[] = { 0x006C6, 0x00000 }; +static unsigned int de0FBDB[] = { 0x006C8, 0x00000 }; +static unsigned int de0FBDC[] = { 0x006C8, 0x00000 }; +static unsigned int de0FBDD[] = { 0x00677, 0x00000 }; +static unsigned int de0FBDE[] = { 0x006CB, 0x00000 }; +static unsigned int de0FBDF[] = { 0x006CB, 0x00000 }; +static unsigned int de0FBE0[] = { 0x006C5, 0x00000 }; +static unsigned int de0FBE1[] = { 0x006C5, 0x00000 }; +static unsigned int de0FBE2[] = { 0x006C9, 0x00000 }; +static unsigned int de0FBE3[] = { 0x006C9, 0x00000 }; +static unsigned int de0FBE4[] = { 0x006D0, 0x00000 }; +static unsigned int de0FBE5[] = { 0x006D0, 0x00000 }; +static unsigned int de0FBE6[] = { 0x006D0, 0x00000 }; +static unsigned int de0FBE7[] = { 0x006D0, 0x00000 }; +static unsigned int de0FBE8[] = { 0x00649, 0x00000 }; +static unsigned int de0FBE9[] = { 0x00649, 0x00000 }; +static unsigned int de0FBEA[] = { 0x00626, 0x00627, 0x00000 }; +static unsigned int de0FBEB[] = { 0x00626, 0x00627, 0x00000 }; +static unsigned int de0FBEC[] = { 0x00626, 0x006D5, 0x00000 }; +static unsigned int de0FBED[] = { 0x00626, 0x006D5, 0x00000 }; +static unsigned int de0FBEE[] = { 0x00626, 0x00648, 0x00000 }; +static unsigned int de0FBEF[] = { 0x00626, 0x00648, 0x00000 }; +static unsigned int de0FBF0[] = { 0x00626, 0x006C7, 0x00000 }; +static unsigned int de0FBF1[] = { 0x00626, 0x006C7, 0x00000 }; +static unsigned int de0FBF2[] = { 0x00626, 0x006C6, 0x00000 }; +static unsigned int de0FBF3[] = { 0x00626, 0x006C6, 0x00000 }; +static unsigned int de0FBF4[] = { 0x00626, 0x006C8, 0x00000 }; +static unsigned int de0FBF5[] = { 0x00626, 0x006C8, 0x00000 }; +static unsigned int de0FBF6[] = { 0x00626, 0x006D0, 0x00000 }; +static unsigned int de0FBF7[] = { 0x00626, 0x006D0, 0x00000 }; +static unsigned int de0FBF8[] = { 0x00626, 0x006D0, 0x00000 }; +static unsigned int de0FBF9[] = { 0x00626, 0x00649, 0x00000 }; +static unsigned int de0FBFA[] = { 0x00626, 0x00649, 0x00000 }; +static unsigned int de0FBFB[] = { 0x00626, 0x00649, 0x00000 }; +static unsigned int de0FBFC[] = { 0x006CC, 0x00000 }; +static unsigned int de0FBFD[] = { 0x006CC, 0x00000 }; +static unsigned int de0FBFE[] = { 0x006CC, 0x00000 }; +static unsigned int de0FBFF[] = { 0x006CC, 0x00000 }; +static unsigned int de0FC00[] = { 0x00626, 0x0062C, 0x00000 }; +static unsigned int de0FC01[] = { 0x00626, 0x0062D, 0x00000 }; +static unsigned int de0FC02[] = { 0x00626, 0x00645, 0x00000 }; +static unsigned int de0FC03[] = { 0x00626, 0x00649, 0x00000 }; +static unsigned int de0FC04[] = { 0x00626, 0x0064A, 0x00000 }; +static unsigned int de0FC05[] = { 0x00628, 0x0062C, 0x00000 }; +static unsigned int de0FC06[] = { 0x00628, 0x0062D, 0x00000 }; +static unsigned int de0FC07[] = { 0x00628, 0x0062E, 0x00000 }; +static unsigned int de0FC08[] = { 0x00628, 0x00645, 0x00000 }; +static unsigned int de0FC09[] = { 0x00628, 0x00649, 0x00000 }; +static unsigned int de0FC0A[] = { 0x00628, 0x0064A, 0x00000 }; +static unsigned int de0FC0B[] = { 0x0062A, 0x0062C, 0x00000 }; +static unsigned int de0FC0C[] = { 0x0062A, 0x0062D, 0x00000 }; +static unsigned int de0FC0D[] = { 0x0062A, 0x0062E, 0x00000 }; +static unsigned int de0FC0E[] = { 0x0062A, 0x00645, 0x00000 }; +static unsigned int de0FC0F[] = { 0x0062A, 0x00649, 0x00000 }; +static unsigned int de0FC10[] = { 0x0062A, 0x0064A, 0x00000 }; +static unsigned int de0FC11[] = { 0x0062B, 0x0062C, 0x00000 }; +static unsigned int de0FC12[] = { 0x0062B, 0x00645, 0x00000 }; +static unsigned int de0FC13[] = { 0x0062B, 0x00649, 0x00000 }; +static unsigned int de0FC14[] = { 0x0062B, 0x0064A, 0x00000 }; +static unsigned int de0FC15[] = { 0x0062C, 0x0062D, 0x00000 }; +static unsigned int de0FC16[] = { 0x0062C, 0x00645, 0x00000 }; +static unsigned int de0FC17[] = { 0x0062D, 0x0062C, 0x00000 }; +static unsigned int de0FC18[] = { 0x0062D, 0x00645, 0x00000 }; +static unsigned int de0FC19[] = { 0x0062E, 0x0062C, 0x00000 }; +static unsigned int de0FC1A[] = { 0x0062E, 0x0062D, 0x00000 }; +static unsigned int de0FC1B[] = { 0x0062E, 0x00645, 0x00000 }; +static unsigned int de0FC1C[] = { 0x00633, 0x0062C, 0x00000 }; +static unsigned int de0FC1D[] = { 0x00633, 0x0062D, 0x00000 }; +static unsigned int de0FC1E[] = { 0x00633, 0x0062E, 0x00000 }; +static unsigned int de0FC1F[] = { 0x00633, 0x00645, 0x00000 }; +static unsigned int de0FC20[] = { 0x00635, 0x0062D, 0x00000 }; +static unsigned int de0FC21[] = { 0x00635, 0x00645, 0x00000 }; +static unsigned int de0FC22[] = { 0x00636, 0x0062C, 0x00000 }; +static unsigned int de0FC23[] = { 0x00636, 0x0062D, 0x00000 }; +static unsigned int de0FC24[] = { 0x00636, 0x0062E, 0x00000 }; +static unsigned int de0FC25[] = { 0x00636, 0x00645, 0x00000 }; +static unsigned int de0FC26[] = { 0x00637, 0x0062D, 0x00000 }; +static unsigned int de0FC27[] = { 0x00637, 0x00645, 0x00000 }; +static unsigned int de0FC28[] = { 0x00638, 0x00645, 0x00000 }; +static unsigned int de0FC29[] = { 0x00639, 0x0062C, 0x00000 }; +static unsigned int de0FC2A[] = { 0x00639, 0x00645, 0x00000 }; +static unsigned int de0FC2B[] = { 0x0063A, 0x0062C, 0x00000 }; +static unsigned int de0FC2C[] = { 0x0063A, 0x00645, 0x00000 }; +static unsigned int de0FC2D[] = { 0x00641, 0x0062C, 0x00000 }; +static unsigned int de0FC2E[] = { 0x00641, 0x0062D, 0x00000 }; +static unsigned int de0FC2F[] = { 0x00641, 0x0062E, 0x00000 }; +static unsigned int de0FC30[] = { 0x00641, 0x00645, 0x00000 }; +static unsigned int de0FC31[] = { 0x00641, 0x00649, 0x00000 }; +static unsigned int de0FC32[] = { 0x00641, 0x0064A, 0x00000 }; +static unsigned int de0FC33[] = { 0x00642, 0x0062D, 0x00000 }; +static unsigned int de0FC34[] = { 0x00642, 0x00645, 0x00000 }; +static unsigned int de0FC35[] = { 0x00642, 0x00649, 0x00000 }; +static unsigned int de0FC36[] = { 0x00642, 0x0064A, 0x00000 }; +static unsigned int de0FC37[] = { 0x00643, 0x00627, 0x00000 }; +static unsigned int de0FC38[] = { 0x00643, 0x0062C, 0x00000 }; +static unsigned int de0FC39[] = { 0x00643, 0x0062D, 0x00000 }; +static unsigned int de0FC3A[] = { 0x00643, 0x0062E, 0x00000 }; +static unsigned int de0FC3B[] = { 0x00643, 0x00644, 0x00000 }; +static unsigned int de0FC3C[] = { 0x00643, 0x00645, 0x00000 }; +static unsigned int de0FC3D[] = { 0x00643, 0x00649, 0x00000 }; +static unsigned int de0FC3E[] = { 0x00643, 0x0064A, 0x00000 }; +static unsigned int de0FC3F[] = { 0x00644, 0x0062C, 0x00000 }; +static unsigned int de0FC40[] = { 0x00644, 0x0062D, 0x00000 }; +static unsigned int de0FC41[] = { 0x00644, 0x0062E, 0x00000 }; +static unsigned int de0FC42[] = { 0x00644, 0x00645, 0x00000 }; +static unsigned int de0FC43[] = { 0x00644, 0x00649, 0x00000 }; +static unsigned int de0FC44[] = { 0x00644, 0x0064A, 0x00000 }; +static unsigned int de0FC45[] = { 0x00645, 0x0062C, 0x00000 }; +static unsigned int de0FC46[] = { 0x00645, 0x0062D, 0x00000 }; +static unsigned int de0FC47[] = { 0x00645, 0x0062E, 0x00000 }; +static unsigned int de0FC48[] = { 0x00645, 0x00645, 0x00000 }; +static unsigned int de0FC49[] = { 0x00645, 0x00649, 0x00000 }; +static unsigned int de0FC4A[] = { 0x00645, 0x0064A, 0x00000 }; +static unsigned int de0FC4B[] = { 0x00646, 0x0062C, 0x00000 }; +static unsigned int de0FC4C[] = { 0x00646, 0x0062D, 0x00000 }; +static unsigned int de0FC4D[] = { 0x00646, 0x0062E, 0x00000 }; +static unsigned int de0FC4E[] = { 0x00646, 0x00645, 0x00000 }; +static unsigned int de0FC4F[] = { 0x00646, 0x00649, 0x00000 }; +static unsigned int de0FC50[] = { 0x00646, 0x0064A, 0x00000 }; +static unsigned int de0FC51[] = { 0x00647, 0x0062C, 0x00000 }; +static unsigned int de0FC52[] = { 0x00647, 0x00645, 0x00000 }; +static unsigned int de0FC53[] = { 0x00647, 0x00649, 0x00000 }; +static unsigned int de0FC54[] = { 0x00647, 0x0064A, 0x00000 }; +static unsigned int de0FC55[] = { 0x0064A, 0x0062C, 0x00000 }; +static unsigned int de0FC56[] = { 0x0064A, 0x0062D, 0x00000 }; +static unsigned int de0FC57[] = { 0x0064A, 0x0062E, 0x00000 }; +static unsigned int de0FC58[] = { 0x0064A, 0x00645, 0x00000 }; +static unsigned int de0FC59[] = { 0x0064A, 0x00649, 0x00000 }; +static unsigned int de0FC5A[] = { 0x0064A, 0x0064A, 0x00000 }; +static unsigned int de0FC5B[] = { 0x00630, 0x00670, 0x00000 }; +static unsigned int de0FC5C[] = { 0x00631, 0x00670, 0x00000 }; +static unsigned int de0FC5D[] = { 0x00649, 0x00670, 0x00000 }; +static unsigned int de0FC5E[] = { 0x00020, 0x0064C, 0x00651, 0x00000 }; +static unsigned int de0FC5F[] = { 0x00020, 0x0064D, 0x00651, 0x00000 }; +static unsigned int de0FC60[] = { 0x00020, 0x0064E, 0x00651, 0x00000 }; +static unsigned int de0FC61[] = { 0x00020, 0x0064F, 0x00651, 0x00000 }; +static unsigned int de0FC62[] = { 0x00020, 0x00650, 0x00651, 0x00000 }; +static unsigned int de0FC63[] = { 0x00020, 0x00651, 0x00670, 0x00000 }; +static unsigned int de0FC64[] = { 0x00626, 0x00631, 0x00000 }; +static unsigned int de0FC65[] = { 0x00626, 0x00632, 0x00000 }; +static unsigned int de0FC66[] = { 0x00626, 0x00645, 0x00000 }; +static unsigned int de0FC67[] = { 0x00626, 0x00646, 0x00000 }; +static unsigned int de0FC68[] = { 0x00626, 0x00649, 0x00000 }; +static unsigned int de0FC69[] = { 0x00626, 0x0064A, 0x00000 }; +static unsigned int de0FC6A[] = { 0x00628, 0x00631, 0x00000 }; +static unsigned int de0FC6B[] = { 0x00628, 0x00632, 0x00000 }; +static unsigned int de0FC6C[] = { 0x00628, 0x00645, 0x00000 }; +static unsigned int de0FC6D[] = { 0x00628, 0x00646, 0x00000 }; +static unsigned int de0FC6E[] = { 0x00628, 0x00649, 0x00000 }; +static unsigned int de0FC6F[] = { 0x00628, 0x0064A, 0x00000 }; +static unsigned int de0FC70[] = { 0x0062A, 0x00631, 0x00000 }; +static unsigned int de0FC71[] = { 0x0062A, 0x00632, 0x00000 }; +static unsigned int de0FC72[] = { 0x0062A, 0x00645, 0x00000 }; +static unsigned int de0FC73[] = { 0x0062A, 0x00646, 0x00000 }; +static unsigned int de0FC74[] = { 0x0062A, 0x00649, 0x00000 }; +static unsigned int de0FC75[] = { 0x0062A, 0x0064A, 0x00000 }; +static unsigned int de0FC76[] = { 0x0062B, 0x00631, 0x00000 }; +static unsigned int de0FC77[] = { 0x0062B, 0x00632, 0x00000 }; +static unsigned int de0FC78[] = { 0x0062B, 0x00645, 0x00000 }; +static unsigned int de0FC79[] = { 0x0062B, 0x00646, 0x00000 }; +static unsigned int de0FC7A[] = { 0x0062B, 0x00649, 0x00000 }; +static unsigned int de0FC7B[] = { 0x0062B, 0x0064A, 0x00000 }; +static unsigned int de0FC7C[] = { 0x00641, 0x00649, 0x00000 }; +static unsigned int de0FC7D[] = { 0x00641, 0x0064A, 0x00000 }; +static unsigned int de0FC7E[] = { 0x00642, 0x00649, 0x00000 }; +static unsigned int de0FC7F[] = { 0x00642, 0x0064A, 0x00000 }; +static unsigned int de0FC80[] = { 0x00643, 0x00627, 0x00000 }; +static unsigned int de0FC81[] = { 0x00643, 0x00644, 0x00000 }; +static unsigned int de0FC82[] = { 0x00643, 0x00645, 0x00000 }; +static unsigned int de0FC83[] = { 0x00643, 0x00649, 0x00000 }; +static unsigned int de0FC84[] = { 0x00643, 0x0064A, 0x00000 }; +static unsigned int de0FC85[] = { 0x00644, 0x00645, 0x00000 }; +static unsigned int de0FC86[] = { 0x00644, 0x00649, 0x00000 }; +static unsigned int de0FC87[] = { 0x00644, 0x0064A, 0x00000 }; +static unsigned int de0FC88[] = { 0x00645, 0x00627, 0x00000 }; +static unsigned int de0FC89[] = { 0x00645, 0x00645, 0x00000 }; +static unsigned int de0FC8A[] = { 0x00646, 0x00631, 0x00000 }; +static unsigned int de0FC8B[] = { 0x00646, 0x00632, 0x00000 }; +static unsigned int de0FC8C[] = { 0x00646, 0x00645, 0x00000 }; +static unsigned int de0FC8D[] = { 0x00646, 0x00646, 0x00000 }; +static unsigned int de0FC8E[] = { 0x00646, 0x00649, 0x00000 }; +static unsigned int de0FC8F[] = { 0x00646, 0x0064A, 0x00000 }; +static unsigned int de0FC90[] = { 0x00649, 0x00670, 0x00000 }; +static unsigned int de0FC91[] = { 0x0064A, 0x00631, 0x00000 }; +static unsigned int de0FC92[] = { 0x0064A, 0x00632, 0x00000 }; +static unsigned int de0FC93[] = { 0x0064A, 0x00645, 0x00000 }; +static unsigned int de0FC94[] = { 0x0064A, 0x00646, 0x00000 }; +static unsigned int de0FC95[] = { 0x0064A, 0x00649, 0x00000 }; +static unsigned int de0FC96[] = { 0x0064A, 0x0064A, 0x00000 }; +static unsigned int de0FC97[] = { 0x00626, 0x0062C, 0x00000 }; +static unsigned int de0FC98[] = { 0x00626, 0x0062D, 0x00000 }; +static unsigned int de0FC99[] = { 0x00626, 0x0062E, 0x00000 }; +static unsigned int de0FC9A[] = { 0x00626, 0x00645, 0x00000 }; +static unsigned int de0FC9B[] = { 0x00626, 0x00647, 0x00000 }; +static unsigned int de0FC9C[] = { 0x00628, 0x0062C, 0x00000 }; +static unsigned int de0FC9D[] = { 0x00628, 0x0062D, 0x00000 }; +static unsigned int de0FC9E[] = { 0x00628, 0x0062E, 0x00000 }; +static unsigned int de0FC9F[] = { 0x00628, 0x00645, 0x00000 }; +static unsigned int de0FCA0[] = { 0x00628, 0x00647, 0x00000 }; +static unsigned int de0FCA1[] = { 0x0062A, 0x0062C, 0x00000 }; +static unsigned int de0FCA2[] = { 0x0062A, 0x0062D, 0x00000 }; +static unsigned int de0FCA3[] = { 0x0062A, 0x0062E, 0x00000 }; +static unsigned int de0FCA4[] = { 0x0062A, 0x00645, 0x00000 }; +static unsigned int de0FCA5[] = { 0x0062A, 0x00647, 0x00000 }; +static unsigned int de0FCA6[] = { 0x0062B, 0x00645, 0x00000 }; +static unsigned int de0FCA7[] = { 0x0062C, 0x0062D, 0x00000 }; +static unsigned int de0FCA8[] = { 0x0062C, 0x00645, 0x00000 }; +static unsigned int de0FCA9[] = { 0x0062D, 0x0062C, 0x00000 }; +static unsigned int de0FCAA[] = { 0x0062D, 0x00645, 0x00000 }; +static unsigned int de0FCAB[] = { 0x0062E, 0x0062C, 0x00000 }; +static unsigned int de0FCAC[] = { 0x0062E, 0x00645, 0x00000 }; +static unsigned int de0FCAD[] = { 0x00633, 0x0062C, 0x00000 }; +static unsigned int de0FCAE[] = { 0x00633, 0x0062D, 0x00000 }; +static unsigned int de0FCAF[] = { 0x00633, 0x0062E, 0x00000 }; +static unsigned int de0FCB0[] = { 0x00633, 0x00645, 0x00000 }; +static unsigned int de0FCB1[] = { 0x00635, 0x0062D, 0x00000 }; +static unsigned int de0FCB2[] = { 0x00635, 0x0062E, 0x00000 }; +static unsigned int de0FCB3[] = { 0x00635, 0x00645, 0x00000 }; +static unsigned int de0FCB4[] = { 0x00636, 0x0062C, 0x00000 }; +static unsigned int de0FCB5[] = { 0x00636, 0x0062D, 0x00000 }; +static unsigned int de0FCB6[] = { 0x00636, 0x0062E, 0x00000 }; +static unsigned int de0FCB7[] = { 0x00636, 0x00645, 0x00000 }; +static unsigned int de0FCB8[] = { 0x00637, 0x0062D, 0x00000 }; +static unsigned int de0FCB9[] = { 0x00638, 0x00645, 0x00000 }; +static unsigned int de0FCBA[] = { 0x00639, 0x0062C, 0x00000 }; +static unsigned int de0FCBB[] = { 0x00639, 0x00645, 0x00000 }; +static unsigned int de0FCBC[] = { 0x0063A, 0x0062C, 0x00000 }; +static unsigned int de0FCBD[] = { 0x0063A, 0x00645, 0x00000 }; +static unsigned int de0FCBE[] = { 0x00641, 0x0062C, 0x00000 }; +static unsigned int de0FCBF[] = { 0x00641, 0x0062D, 0x00000 }; +static unsigned int de0FCC0[] = { 0x00641, 0x0062E, 0x00000 }; +static unsigned int de0FCC1[] = { 0x00641, 0x00645, 0x00000 }; +static unsigned int de0FCC2[] = { 0x00642, 0x0062D, 0x00000 }; +static unsigned int de0FCC3[] = { 0x00642, 0x00645, 0x00000 }; +static unsigned int de0FCC4[] = { 0x00643, 0x0062C, 0x00000 }; +static unsigned int de0FCC5[] = { 0x00643, 0x0062D, 0x00000 }; +static unsigned int de0FCC6[] = { 0x00643, 0x0062E, 0x00000 }; +static unsigned int de0FCC7[] = { 0x00643, 0x00644, 0x00000 }; +static unsigned int de0FCC8[] = { 0x00643, 0x00645, 0x00000 }; +static unsigned int de0FCC9[] = { 0x00644, 0x0062C, 0x00000 }; +static unsigned int de0FCCA[] = { 0x00644, 0x0062D, 0x00000 }; +static unsigned int de0FCCB[] = { 0x00644, 0x0062E, 0x00000 }; +static unsigned int de0FCCC[] = { 0x00644, 0x00645, 0x00000 }; +static unsigned int de0FCCD[] = { 0x00644, 0x00647, 0x00000 }; +static unsigned int de0FCCE[] = { 0x00645, 0x0062C, 0x00000 }; +static unsigned int de0FCCF[] = { 0x00645, 0x0062D, 0x00000 }; +static unsigned int de0FCD0[] = { 0x00645, 0x0062E, 0x00000 }; +static unsigned int de0FCD1[] = { 0x00645, 0x00645, 0x00000 }; +static unsigned int de0FCD2[] = { 0x00646, 0x0062C, 0x00000 }; +static unsigned int de0FCD3[] = { 0x00646, 0x0062D, 0x00000 }; +static unsigned int de0FCD4[] = { 0x00646, 0x0062E, 0x00000 }; +static unsigned int de0FCD5[] = { 0x00646, 0x00645, 0x00000 }; +static unsigned int de0FCD6[] = { 0x00646, 0x00647, 0x00000 }; +static unsigned int de0FCD7[] = { 0x00647, 0x0062C, 0x00000 }; +static unsigned int de0FCD8[] = { 0x00647, 0x00645, 0x00000 }; +static unsigned int de0FCD9[] = { 0x00647, 0x00670, 0x00000 }; +static unsigned int de0FCDA[] = { 0x0064A, 0x0062C, 0x00000 }; +static unsigned int de0FCDB[] = { 0x0064A, 0x0062D, 0x00000 }; +static unsigned int de0FCDC[] = { 0x0064A, 0x0062E, 0x00000 }; +static unsigned int de0FCDD[] = { 0x0064A, 0x00645, 0x00000 }; +static unsigned int de0FCDE[] = { 0x0064A, 0x00647, 0x00000 }; +static unsigned int de0FCDF[] = { 0x00626, 0x00645, 0x00000 }; +static unsigned int de0FCE0[] = { 0x00626, 0x00647, 0x00000 }; +static unsigned int de0FCE1[] = { 0x00628, 0x00645, 0x00000 }; +static unsigned int de0FCE2[] = { 0x00628, 0x00647, 0x00000 }; +static unsigned int de0FCE3[] = { 0x0062A, 0x00645, 0x00000 }; +static unsigned int de0FCE4[] = { 0x0062A, 0x00647, 0x00000 }; +static unsigned int de0FCE5[] = { 0x0062B, 0x00645, 0x00000 }; +static unsigned int de0FCE6[] = { 0x0062B, 0x00647, 0x00000 }; +static unsigned int de0FCE7[] = { 0x00633, 0x00645, 0x00000 }; +static unsigned int de0FCE8[] = { 0x00633, 0x00647, 0x00000 }; +static unsigned int de0FCE9[] = { 0x00634, 0x00645, 0x00000 }; +static unsigned int de0FCEA[] = { 0x00634, 0x00647, 0x00000 }; +static unsigned int de0FCEB[] = { 0x00643, 0x00644, 0x00000 }; +static unsigned int de0FCEC[] = { 0x00643, 0x00645, 0x00000 }; +static unsigned int de0FCED[] = { 0x00644, 0x00645, 0x00000 }; +static unsigned int de0FCEE[] = { 0x00646, 0x00645, 0x00000 }; +static unsigned int de0FCEF[] = { 0x00646, 0x00647, 0x00000 }; +static unsigned int de0FCF0[] = { 0x0064A, 0x00645, 0x00000 }; +static unsigned int de0FCF1[] = { 0x0064A, 0x00647, 0x00000 }; +static unsigned int de0FCF2[] = { 0x00640, 0x0064E, 0x00651, 0x00000 }; +static unsigned int de0FCF3[] = { 0x00640, 0x0064F, 0x00651, 0x00000 }; +static unsigned int de0FCF4[] = { 0x00640, 0x00650, 0x00651, 0x00000 }; +static unsigned int de0FCF5[] = { 0x00637, 0x00649, 0x00000 }; +static unsigned int de0FCF6[] = { 0x00637, 0x0064A, 0x00000 }; +static unsigned int de0FCF7[] = { 0x00639, 0x00649, 0x00000 }; +static unsigned int de0FCF8[] = { 0x00639, 0x0064A, 0x00000 }; +static unsigned int de0FCF9[] = { 0x0063A, 0x00649, 0x00000 }; +static unsigned int de0FCFA[] = { 0x0063A, 0x0064A, 0x00000 }; +static unsigned int de0FCFB[] = { 0x00633, 0x00649, 0x00000 }; +static unsigned int de0FCFC[] = { 0x00633, 0x0064A, 0x00000 }; +static unsigned int de0FCFD[] = { 0x00634, 0x00649, 0x00000 }; +static unsigned int de0FCFE[] = { 0x00634, 0x0064A, 0x00000 }; +static unsigned int de0FCFF[] = { 0x0062D, 0x00649, 0x00000 }; +static unsigned int de0FD00[] = { 0x0062D, 0x0064A, 0x00000 }; +static unsigned int de0FD01[] = { 0x0062C, 0x00649, 0x00000 }; +static unsigned int de0FD02[] = { 0x0062C, 0x0064A, 0x00000 }; +static unsigned int de0FD03[] = { 0x0062E, 0x00649, 0x00000 }; +static unsigned int de0FD04[] = { 0x0062E, 0x0064A, 0x00000 }; +static unsigned int de0FD05[] = { 0x00635, 0x00649, 0x00000 }; +static unsigned int de0FD06[] = { 0x00635, 0x0064A, 0x00000 }; +static unsigned int de0FD07[] = { 0x00636, 0x00649, 0x00000 }; +static unsigned int de0FD08[] = { 0x00636, 0x0064A, 0x00000 }; +static unsigned int de0FD09[] = { 0x00634, 0x0062C, 0x00000 }; +static unsigned int de0FD0A[] = { 0x00634, 0x0062D, 0x00000 }; +static unsigned int de0FD0B[] = { 0x00634, 0x0062E, 0x00000 }; +static unsigned int de0FD0C[] = { 0x00634, 0x00645, 0x00000 }; +static unsigned int de0FD0D[] = { 0x00634, 0x00631, 0x00000 }; +static unsigned int de0FD0E[] = { 0x00633, 0x00631, 0x00000 }; +static unsigned int de0FD0F[] = { 0x00635, 0x00631, 0x00000 }; +static unsigned int de0FD10[] = { 0x00636, 0x00631, 0x00000 }; +static unsigned int de0FD11[] = { 0x00637, 0x00649, 0x00000 }; +static unsigned int de0FD12[] = { 0x00637, 0x0064A, 0x00000 }; +static unsigned int de0FD13[] = { 0x00639, 0x00649, 0x00000 }; +static unsigned int de0FD14[] = { 0x00639, 0x0064A, 0x00000 }; +static unsigned int de0FD15[] = { 0x0063A, 0x00649, 0x00000 }; +static unsigned int de0FD16[] = { 0x0063A, 0x0064A, 0x00000 }; +static unsigned int de0FD17[] = { 0x00633, 0x00649, 0x00000 }; +static unsigned int de0FD18[] = { 0x00633, 0x0064A, 0x00000 }; +static unsigned int de0FD19[] = { 0x00634, 0x00649, 0x00000 }; +static unsigned int de0FD1A[] = { 0x00634, 0x0064A, 0x00000 }; +static unsigned int de0FD1B[] = { 0x0062D, 0x00649, 0x00000 }; +static unsigned int de0FD1C[] = { 0x0062D, 0x0064A, 0x00000 }; +static unsigned int de0FD1D[] = { 0x0062C, 0x00649, 0x00000 }; +static unsigned int de0FD1E[] = { 0x0062C, 0x0064A, 0x00000 }; +static unsigned int de0FD1F[] = { 0x0062E, 0x00649, 0x00000 }; +static unsigned int de0FD20[] = { 0x0062E, 0x0064A, 0x00000 }; +static unsigned int de0FD21[] = { 0x00635, 0x00649, 0x00000 }; +static unsigned int de0FD22[] = { 0x00635, 0x0064A, 0x00000 }; +static unsigned int de0FD23[] = { 0x00636, 0x00649, 0x00000 }; +static unsigned int de0FD24[] = { 0x00636, 0x0064A, 0x00000 }; +static unsigned int de0FD25[] = { 0x00634, 0x0062C, 0x00000 }; +static unsigned int de0FD26[] = { 0x00634, 0x0062D, 0x00000 }; +static unsigned int de0FD27[] = { 0x00634, 0x0062E, 0x00000 }; +static unsigned int de0FD28[] = { 0x00634, 0x00645, 0x00000 }; +static unsigned int de0FD29[] = { 0x00634, 0x00631, 0x00000 }; +static unsigned int de0FD2A[] = { 0x00633, 0x00631, 0x00000 }; +static unsigned int de0FD2B[] = { 0x00635, 0x00631, 0x00000 }; +static unsigned int de0FD2C[] = { 0x00636, 0x00631, 0x00000 }; +static unsigned int de0FD2D[] = { 0x00634, 0x0062C, 0x00000 }; +static unsigned int de0FD2E[] = { 0x00634, 0x0062D, 0x00000 }; +static unsigned int de0FD2F[] = { 0x00634, 0x0062E, 0x00000 }; +static unsigned int de0FD30[] = { 0x00634, 0x00645, 0x00000 }; +static unsigned int de0FD31[] = { 0x00633, 0x00647, 0x00000 }; +static unsigned int de0FD32[] = { 0x00634, 0x00647, 0x00000 }; +static unsigned int de0FD33[] = { 0x00637, 0x00645, 0x00000 }; +static unsigned int de0FD34[] = { 0x00633, 0x0062C, 0x00000 }; +static unsigned int de0FD35[] = { 0x00633, 0x0062D, 0x00000 }; +static unsigned int de0FD36[] = { 0x00633, 0x0062E, 0x00000 }; +static unsigned int de0FD37[] = { 0x00634, 0x0062C, 0x00000 }; +static unsigned int de0FD38[] = { 0x00634, 0x0062D, 0x00000 }; +static unsigned int de0FD39[] = { 0x00634, 0x0062E, 0x00000 }; +static unsigned int de0FD3A[] = { 0x00637, 0x00645, 0x00000 }; +static unsigned int de0FD3B[] = { 0x00638, 0x00645, 0x00000 }; +static unsigned int de0FD3C[] = { 0x00627, 0x0064B, 0x00000 }; +static unsigned int de0FD3D[] = { 0x00627, 0x0064B, 0x00000 }; +static unsigned int de0FD50[] = { 0x0062A, 0x0062C, 0x00645, 0x00000 }; +static unsigned int de0FD51[] = { 0x0062A, 0x0062D, 0x0062C, 0x00000 }; +static unsigned int de0FD52[] = { 0x0062A, 0x0062D, 0x0062C, 0x00000 }; +static unsigned int de0FD53[] = { 0x0062A, 0x0062D, 0x00645, 0x00000 }; +static unsigned int de0FD54[] = { 0x0062A, 0x0062E, 0x00645, 0x00000 }; +static unsigned int de0FD55[] = { 0x0062A, 0x00645, 0x0062C, 0x00000 }; +static unsigned int de0FD56[] = { 0x0062A, 0x00645, 0x0062D, 0x00000 }; +static unsigned int de0FD57[] = { 0x0062A, 0x00645, 0x0062E, 0x00000 }; +static unsigned int de0FD58[] = { 0x0062C, 0x00645, 0x0062D, 0x00000 }; +static unsigned int de0FD59[] = { 0x0062C, 0x00645, 0x0062D, 0x00000 }; +static unsigned int de0FD5A[] = { 0x0062D, 0x00645, 0x0064A, 0x00000 }; +static unsigned int de0FD5B[] = { 0x0062D, 0x00645, 0x00649, 0x00000 }; +static unsigned int de0FD5C[] = { 0x00633, 0x0062D, 0x0062C, 0x00000 }; +static unsigned int de0FD5D[] = { 0x00633, 0x0062C, 0x0062D, 0x00000 }; +static unsigned int de0FD5E[] = { 0x00633, 0x0062C, 0x00649, 0x00000 }; +static unsigned int de0FD5F[] = { 0x00633, 0x00645, 0x0062D, 0x00000 }; +static unsigned int de0FD60[] = { 0x00633, 0x00645, 0x0062D, 0x00000 }; +static unsigned int de0FD61[] = { 0x00633, 0x00645, 0x0062C, 0x00000 }; +static unsigned int de0FD62[] = { 0x00633, 0x00645, 0x00645, 0x00000 }; +static unsigned int de0FD63[] = { 0x00633, 0x00645, 0x00645, 0x00000 }; +static unsigned int de0FD64[] = { 0x00635, 0x0062D, 0x0062D, 0x00000 }; +static unsigned int de0FD65[] = { 0x00635, 0x0062D, 0x0062D, 0x00000 }; +static unsigned int de0FD66[] = { 0x00635, 0x00645, 0x00645, 0x00000 }; +static unsigned int de0FD67[] = { 0x00634, 0x0062D, 0x00645, 0x00000 }; +static unsigned int de0FD68[] = { 0x00634, 0x0062D, 0x00645, 0x00000 }; +static unsigned int de0FD69[] = { 0x00634, 0x0062C, 0x0064A, 0x00000 }; +static unsigned int de0FD6A[] = { 0x00634, 0x00645, 0x0062E, 0x00000 }; +static unsigned int de0FD6B[] = { 0x00634, 0x00645, 0x0062E, 0x00000 }; +static unsigned int de0FD6C[] = { 0x00634, 0x00645, 0x00645, 0x00000 }; +static unsigned int de0FD6D[] = { 0x00634, 0x00645, 0x00645, 0x00000 }; +static unsigned int de0FD6E[] = { 0x00636, 0x0062D, 0x00649, 0x00000 }; +static unsigned int de0FD6F[] = { 0x00636, 0x0062E, 0x00645, 0x00000 }; +static unsigned int de0FD70[] = { 0x00636, 0x0062E, 0x00645, 0x00000 }; +static unsigned int de0FD71[] = { 0x00637, 0x00645, 0x0062D, 0x00000 }; +static unsigned int de0FD72[] = { 0x00637, 0x00645, 0x0062D, 0x00000 }; +static unsigned int de0FD73[] = { 0x00637, 0x00645, 0x00645, 0x00000 }; +static unsigned int de0FD74[] = { 0x00637, 0x00645, 0x0064A, 0x00000 }; +static unsigned int de0FD75[] = { 0x00639, 0x0062C, 0x00645, 0x00000 }; +static unsigned int de0FD76[] = { 0x00639, 0x00645, 0x00645, 0x00000 }; +static unsigned int de0FD77[] = { 0x00639, 0x00645, 0x00645, 0x00000 }; +static unsigned int de0FD78[] = { 0x00639, 0x00645, 0x00649, 0x00000 }; +static unsigned int de0FD79[] = { 0x0063A, 0x00645, 0x00645, 0x00000 }; +static unsigned int de0FD7A[] = { 0x0063A, 0x00645, 0x0064A, 0x00000 }; +static unsigned int de0FD7B[] = { 0x0063A, 0x00645, 0x00649, 0x00000 }; +static unsigned int de0FD7C[] = { 0x00641, 0x0062E, 0x00645, 0x00000 }; +static unsigned int de0FD7D[] = { 0x00641, 0x0062E, 0x00645, 0x00000 }; +static unsigned int de0FD7E[] = { 0x00642, 0x00645, 0x0062D, 0x00000 }; +static unsigned int de0FD7F[] = { 0x00642, 0x00645, 0x00645, 0x00000 }; +static unsigned int de0FD80[] = { 0x00644, 0x0062D, 0x00645, 0x00000 }; +static unsigned int de0FD81[] = { 0x00644, 0x0062D, 0x0064A, 0x00000 }; +static unsigned int de0FD82[] = { 0x00644, 0x0062D, 0x00649, 0x00000 }; +static unsigned int de0FD83[] = { 0x00644, 0x0062C, 0x0062C, 0x00000 }; +static unsigned int de0FD84[] = { 0x00644, 0x0062C, 0x0062C, 0x00000 }; +static unsigned int de0FD85[] = { 0x00644, 0x0062E, 0x00645, 0x00000 }; +static unsigned int de0FD86[] = { 0x00644, 0x0062E, 0x00645, 0x00000 }; +static unsigned int de0FD87[] = { 0x00644, 0x00645, 0x0062D, 0x00000 }; +static unsigned int de0FD88[] = { 0x00644, 0x00645, 0x0062D, 0x00000 }; +static unsigned int de0FD89[] = { 0x00645, 0x0062D, 0x0062C, 0x00000 }; +static unsigned int de0FD8A[] = { 0x00645, 0x0062D, 0x00645, 0x00000 }; +static unsigned int de0FD8B[] = { 0x00645, 0x0062D, 0x0064A, 0x00000 }; +static unsigned int de0FD8C[] = { 0x00645, 0x0062C, 0x0062D, 0x00000 }; +static unsigned int de0FD8D[] = { 0x00645, 0x0062C, 0x00645, 0x00000 }; +static unsigned int de0FD8E[] = { 0x00645, 0x0062E, 0x0062C, 0x00000 }; +static unsigned int de0FD8F[] = { 0x00645, 0x0062E, 0x00645, 0x00000 }; +static unsigned int de0FD92[] = { 0x00645, 0x0062C, 0x0062E, 0x00000 }; +static unsigned int de0FD93[] = { 0x00647, 0x00645, 0x0062C, 0x00000 }; +static unsigned int de0FD94[] = { 0x00647, 0x00645, 0x00645, 0x00000 }; +static unsigned int de0FD95[] = { 0x00646, 0x0062D, 0x00645, 0x00000 }; +static unsigned int de0FD96[] = { 0x00646, 0x0062D, 0x00649, 0x00000 }; +static unsigned int de0FD97[] = { 0x00646, 0x0062C, 0x00645, 0x00000 }; +static unsigned int de0FD98[] = { 0x00646, 0x0062C, 0x00645, 0x00000 }; +static unsigned int de0FD99[] = { 0x00646, 0x0062C, 0x00649, 0x00000 }; +static unsigned int de0FD9A[] = { 0x00646, 0x00645, 0x0064A, 0x00000 }; +static unsigned int de0FD9B[] = { 0x00646, 0x00645, 0x00649, 0x00000 }; +static unsigned int de0FD9C[] = { 0x0064A, 0x00645, 0x00645, 0x00000 }; +static unsigned int de0FD9D[] = { 0x0064A, 0x00645, 0x00645, 0x00000 }; +static unsigned int de0FD9E[] = { 0x00628, 0x0062E, 0x0064A, 0x00000 }; +static unsigned int de0FD9F[] = { 0x0062A, 0x0062C, 0x0064A, 0x00000 }; +static unsigned int de0FDA0[] = { 0x0062A, 0x0062C, 0x00649, 0x00000 }; +static unsigned int de0FDA1[] = { 0x0062A, 0x0062E, 0x0064A, 0x00000 }; +static unsigned int de0FDA2[] = { 0x0062A, 0x0062E, 0x00649, 0x00000 }; +static unsigned int de0FDA3[] = { 0x0062A, 0x00645, 0x0064A, 0x00000 }; +static unsigned int de0FDA4[] = { 0x0062A, 0x00645, 0x00649, 0x00000 }; +static unsigned int de0FDA5[] = { 0x0062C, 0x00645, 0x0064A, 0x00000 }; +static unsigned int de0FDA6[] = { 0x0062C, 0x0062D, 0x00649, 0x00000 }; +static unsigned int de0FDA7[] = { 0x0062C, 0x00645, 0x00649, 0x00000 }; +static unsigned int de0FDA8[] = { 0x00633, 0x0062E, 0x00649, 0x00000 }; +static unsigned int de0FDA9[] = { 0x00635, 0x0062D, 0x0064A, 0x00000 }; +static unsigned int de0FDAA[] = { 0x00634, 0x0062D, 0x0064A, 0x00000 }; +static unsigned int de0FDAB[] = { 0x00636, 0x0062D, 0x0064A, 0x00000 }; +static unsigned int de0FDAC[] = { 0x00644, 0x0062C, 0x0064A, 0x00000 }; +static unsigned int de0FDAD[] = { 0x00644, 0x00645, 0x0064A, 0x00000 }; +static unsigned int de0FDAE[] = { 0x0064A, 0x0062D, 0x0064A, 0x00000 }; +static unsigned int de0FDAF[] = { 0x0064A, 0x0062C, 0x0064A, 0x00000 }; +static unsigned int de0FDB0[] = { 0x0064A, 0x00645, 0x0064A, 0x00000 }; +static unsigned int de0FDB1[] = { 0x00645, 0x00645, 0x0064A, 0x00000 }; +static unsigned int de0FDB2[] = { 0x00642, 0x00645, 0x0064A, 0x00000 }; +static unsigned int de0FDB3[] = { 0x00646, 0x0062D, 0x0064A, 0x00000 }; +static unsigned int de0FDB4[] = { 0x00642, 0x00645, 0x0062D, 0x00000 }; +static unsigned int de0FDB5[] = { 0x00644, 0x0062D, 0x00645, 0x00000 }; +static unsigned int de0FDB6[] = { 0x00639, 0x00645, 0x0064A, 0x00000 }; +static unsigned int de0FDB7[] = { 0x00643, 0x00645, 0x0064A, 0x00000 }; +static unsigned int de0FDB8[] = { 0x00646, 0x0062C, 0x0062D, 0x00000 }; +static unsigned int de0FDB9[] = { 0x00645, 0x0062E, 0x0064A, 0x00000 }; +static unsigned int de0FDBA[] = { 0x00644, 0x0062C, 0x00645, 0x00000 }; +static unsigned int de0FDBB[] = { 0x00643, 0x00645, 0x00645, 0x00000 }; +static unsigned int de0FDBC[] = { 0x00644, 0x0062C, 0x00645, 0x00000 }; +static unsigned int de0FDBD[] = { 0x00646, 0x0062C, 0x0062D, 0x00000 }; +static unsigned int de0FDBE[] = { 0x0062C, 0x0062D, 0x0064A, 0x00000 }; +static unsigned int de0FDBF[] = { 0x0062D, 0x0062C, 0x0064A, 0x00000 }; +static unsigned int de0FDC0[] = { 0x00645, 0x0062C, 0x0064A, 0x00000 }; +static unsigned int de0FDC1[] = { 0x00641, 0x00645, 0x0064A, 0x00000 }; +static unsigned int de0FDC2[] = { 0x00628, 0x0062D, 0x0064A, 0x00000 }; +static unsigned int de0FDC3[] = { 0x00643, 0x00645, 0x00645, 0x00000 }; +static unsigned int de0FDC4[] = { 0x00639, 0x0062C, 0x00645, 0x00000 }; +static unsigned int de0FDC5[] = { 0x00635, 0x00645, 0x00645, 0x00000 }; +static unsigned int de0FDC6[] = { 0x00633, 0x0062E, 0x0064A, 0x00000 }; +static unsigned int de0FDC7[] = { 0x00646, 0x0062C, 0x0064A, 0x00000 }; +static unsigned int de0FDF0[] = { 0x00635, 0x00644, 0x006D2, 0x00000 }; +static unsigned int de0FDF1[] = { 0x00642, 0x00644, 0x006D2, 0x00000 }; +static unsigned int de0FDF2[] = { 0x00627, 0x00644, 0x00644, 0x00647, 0x00000 }; +static unsigned int de0FDF3[] = { 0x00627, 0x00643, 0x00628, 0x00631, 0x00000 }; +static unsigned int de0FDF4[] = { 0x00645, 0x0062D, 0x00645, 0x0062F, 0x00000 }; +static unsigned int de0FDF5[] = { 0x00635, 0x00644, 0x00639, 0x00645, 0x00000 }; +static unsigned int de0FDF6[] = { 0x00631, 0x00633, 0x00648, 0x00644, 0x00000 }; +static unsigned int de0FDF7[] = { 0x00639, 0x00644, 0x0064A, 0x00647, 0x00000 }; +static unsigned int de0FDF8[] = { 0x00648, 0x00633, 0x00644, 0x00645, 0x00000 }; +static unsigned int de0FDF9[] = { 0x00635, 0x00644, 0x00649, 0x00000 }; +static unsigned int de0FDFA[] = { 0x00635, 0x00644, 0x00649, 0x00020, 0x00627, 0x00644, 0x00644, 0x00647, 0x00020, 0x00639, 0x00644, 0x0064A, 0x00647, 0x00020, 0x00648, 0x00633, 0x00644, 0x00645, 0x00000 }; +static unsigned int de0FDFB[] = { 0x0062C, 0x00644, 0x00020, 0x0062C, 0x00644, 0x00627, 0x00644, 0x00647, 0x00000 }; +static unsigned int de0FDFC[] = { 0x00631, 0x006CC, 0x00627, 0x00644, 0x00000 }; +static unsigned int de0FE10[] = { 0x0002C, 0x00000 }; +static unsigned int de0FE11[] = { 0x03001, 0x00000 }; +static unsigned int de0FE12[] = { 0x03002, 0x00000 }; +static unsigned int de0FE13[] = { 0x0003A, 0x00000 }; +static unsigned int de0FE14[] = { 0x0003B, 0x00000 }; +static unsigned int de0FE15[] = { 0x00021, 0x00000 }; +static unsigned int de0FE16[] = { 0x0003F, 0x00000 }; +static unsigned int de0FE17[] = { 0x03016, 0x00000 }; +static unsigned int de0FE18[] = { 0x03017, 0x00000 }; +static unsigned int de0FE19[] = { 0x02026, 0x00000 }; +static unsigned int de0FE30[] = { 0x02025, 0x00000 }; +static unsigned int de0FE31[] = { 0x02014, 0x00000 }; +static unsigned int de0FE32[] = { 0x02013, 0x00000 }; +static unsigned int de0FE33[] = { 0x0005F, 0x00000 }; +static unsigned int de0FE34[] = { 0x0005F, 0x00000 }; +static unsigned int de0FE35[] = { 0x00028, 0x00000 }; +static unsigned int de0FE36[] = { 0x00029, 0x00000 }; +static unsigned int de0FE37[] = { 0x0007B, 0x00000 }; +static unsigned int de0FE38[] = { 0x0007D, 0x00000 }; +static unsigned int de0FE39[] = { 0x03014, 0x00000 }; +static unsigned int de0FE3A[] = { 0x03015, 0x00000 }; +static unsigned int de0FE3B[] = { 0x03010, 0x00000 }; +static unsigned int de0FE3C[] = { 0x03011, 0x00000 }; +static unsigned int de0FE3D[] = { 0x0300A, 0x00000 }; +static unsigned int de0FE3E[] = { 0x0300B, 0x00000 }; +static unsigned int de0FE3F[] = { 0x03008, 0x00000 }; +static unsigned int de0FE40[] = { 0x03009, 0x00000 }; +static unsigned int de0FE41[] = { 0x0300C, 0x00000 }; +static unsigned int de0FE42[] = { 0x0300D, 0x00000 }; +static unsigned int de0FE43[] = { 0x0300E, 0x00000 }; +static unsigned int de0FE44[] = { 0x0300F, 0x00000 }; +static unsigned int de0FE47[] = { 0x0005B, 0x00000 }; +static unsigned int de0FE48[] = { 0x0005D, 0x00000 }; +static unsigned int de0FE49[] = { 0x0203E, 0x00000 }; +static unsigned int de0FE4A[] = { 0x0203E, 0x00000 }; +static unsigned int de0FE4B[] = { 0x0203E, 0x00000 }; +static unsigned int de0FE4C[] = { 0x0203E, 0x00000 }; +static unsigned int de0FE4D[] = { 0x0005F, 0x00000 }; +static unsigned int de0FE4E[] = { 0x0005F, 0x00000 }; +static unsigned int de0FE4F[] = { 0x0005F, 0x00000 }; +static unsigned int de0FE50[] = { 0x0002C, 0x00000 }; +static unsigned int de0FE51[] = { 0x03001, 0x00000 }; +static unsigned int de0FE52[] = { 0x0002E, 0x00000 }; +static unsigned int de0FE54[] = { 0x0003B, 0x00000 }; +static unsigned int de0FE55[] = { 0x0003A, 0x00000 }; +static unsigned int de0FE56[] = { 0x0003F, 0x00000 }; +static unsigned int de0FE57[] = { 0x00021, 0x00000 }; +static unsigned int de0FE58[] = { 0x02014, 0x00000 }; +static unsigned int de0FE59[] = { 0x00028, 0x00000 }; +static unsigned int de0FE5A[] = { 0x00029, 0x00000 }; +static unsigned int de0FE5B[] = { 0x0007B, 0x00000 }; +static unsigned int de0FE5C[] = { 0x0007D, 0x00000 }; +static unsigned int de0FE5D[] = { 0x03014, 0x00000 }; +static unsigned int de0FE5E[] = { 0x03015, 0x00000 }; +static unsigned int de0FE5F[] = { 0x00023, 0x00000 }; +static unsigned int de0FE60[] = { 0x00026, 0x00000 }; +static unsigned int de0FE61[] = { 0x0002A, 0x00000 }; +static unsigned int de0FE62[] = { 0x0002B, 0x00000 }; +static unsigned int de0FE63[] = { 0x0002D, 0x00000 }; +static unsigned int de0FE64[] = { 0x0003C, 0x00000 }; +static unsigned int de0FE65[] = { 0x0003E, 0x00000 }; +static unsigned int de0FE66[] = { 0x0003D, 0x00000 }; +static unsigned int de0FE68[] = { 0x0005C, 0x00000 }; +static unsigned int de0FE69[] = { 0x00024, 0x00000 }; +static unsigned int de0FE6A[] = { 0x00025, 0x00000 }; +static unsigned int de0FE6B[] = { 0x00040, 0x00000 }; +static unsigned int de0FE70[] = { 0x00020, 0x0064B, 0x00000 }; +static unsigned int de0FE71[] = { 0x00640, 0x0064B, 0x00000 }; +static unsigned int de0FE72[] = { 0x00020, 0x0064C, 0x00000 }; +static unsigned int de0FE74[] = { 0x00020, 0x0064D, 0x00000 }; +static unsigned int de0FE76[] = { 0x00020, 0x0064E, 0x00000 }; +static unsigned int de0FE77[] = { 0x00640, 0x0064E, 0x00000 }; +static unsigned int de0FE78[] = { 0x00020, 0x0064F, 0x00000 }; +static unsigned int de0FE79[] = { 0x00640, 0x0064F, 0x00000 }; +static unsigned int de0FE7A[] = { 0x00020, 0x00650, 0x00000 }; +static unsigned int de0FE7B[] = { 0x00640, 0x00650, 0x00000 }; +static unsigned int de0FE7C[] = { 0x00020, 0x00651, 0x00000 }; +static unsigned int de0FE7D[] = { 0x00640, 0x00651, 0x00000 }; +static unsigned int de0FE7E[] = { 0x00020, 0x00652, 0x00000 }; +static unsigned int de0FE7F[] = { 0x00640, 0x00652, 0x00000 }; +static unsigned int de0FE80[] = { 0x00621, 0x00000 }; +static unsigned int de0FE81[] = { 0x00622, 0x00000 }; +static unsigned int de0FE82[] = { 0x00622, 0x00000 }; +static unsigned int de0FE83[] = { 0x00623, 0x00000 }; +static unsigned int de0FE84[] = { 0x00623, 0x00000 }; +static unsigned int de0FE85[] = { 0x00624, 0x00000 }; +static unsigned int de0FE86[] = { 0x00624, 0x00000 }; +static unsigned int de0FE87[] = { 0x00625, 0x00000 }; +static unsigned int de0FE88[] = { 0x00625, 0x00000 }; +static unsigned int de0FE89[] = { 0x00626, 0x00000 }; +static unsigned int de0FE8A[] = { 0x00626, 0x00000 }; +static unsigned int de0FE8B[] = { 0x00626, 0x00000 }; +static unsigned int de0FE8C[] = { 0x00626, 0x00000 }; +static unsigned int de0FE8D[] = { 0x00627, 0x00000 }; +static unsigned int de0FE8E[] = { 0x00627, 0x00000 }; +static unsigned int de0FE8F[] = { 0x00628, 0x00000 }; +static unsigned int de0FE90[] = { 0x00628, 0x00000 }; +static unsigned int de0FE91[] = { 0x00628, 0x00000 }; +static unsigned int de0FE92[] = { 0x00628, 0x00000 }; +static unsigned int de0FE93[] = { 0x00629, 0x00000 }; +static unsigned int de0FE94[] = { 0x00629, 0x00000 }; +static unsigned int de0FE95[] = { 0x0062A, 0x00000 }; +static unsigned int de0FE96[] = { 0x0062A, 0x00000 }; +static unsigned int de0FE97[] = { 0x0062A, 0x00000 }; +static unsigned int de0FE98[] = { 0x0062A, 0x00000 }; +static unsigned int de0FE99[] = { 0x0062B, 0x00000 }; +static unsigned int de0FE9A[] = { 0x0062B, 0x00000 }; +static unsigned int de0FE9B[] = { 0x0062B, 0x00000 }; +static unsigned int de0FE9C[] = { 0x0062B, 0x00000 }; +static unsigned int de0FE9D[] = { 0x0062C, 0x00000 }; +static unsigned int de0FE9E[] = { 0x0062C, 0x00000 }; +static unsigned int de0FE9F[] = { 0x0062C, 0x00000 }; +static unsigned int de0FEA0[] = { 0x0062C, 0x00000 }; +static unsigned int de0FEA1[] = { 0x0062D, 0x00000 }; +static unsigned int de0FEA2[] = { 0x0062D, 0x00000 }; +static unsigned int de0FEA3[] = { 0x0062D, 0x00000 }; +static unsigned int de0FEA4[] = { 0x0062D, 0x00000 }; +static unsigned int de0FEA5[] = { 0x0062E, 0x00000 }; +static unsigned int de0FEA6[] = { 0x0062E, 0x00000 }; +static unsigned int de0FEA7[] = { 0x0062E, 0x00000 }; +static unsigned int de0FEA8[] = { 0x0062E, 0x00000 }; +static unsigned int de0FEA9[] = { 0x0062F, 0x00000 }; +static unsigned int de0FEAA[] = { 0x0062F, 0x00000 }; +static unsigned int de0FEAB[] = { 0x00630, 0x00000 }; +static unsigned int de0FEAC[] = { 0x00630, 0x00000 }; +static unsigned int de0FEAD[] = { 0x00631, 0x00000 }; +static unsigned int de0FEAE[] = { 0x00631, 0x00000 }; +static unsigned int de0FEAF[] = { 0x00632, 0x00000 }; +static unsigned int de0FEB0[] = { 0x00632, 0x00000 }; +static unsigned int de0FEB1[] = { 0x00633, 0x00000 }; +static unsigned int de0FEB2[] = { 0x00633, 0x00000 }; +static unsigned int de0FEB3[] = { 0x00633, 0x00000 }; +static unsigned int de0FEB4[] = { 0x00633, 0x00000 }; +static unsigned int de0FEB5[] = { 0x00634, 0x00000 }; +static unsigned int de0FEB6[] = { 0x00634, 0x00000 }; +static unsigned int de0FEB7[] = { 0x00634, 0x00000 }; +static unsigned int de0FEB8[] = { 0x00634, 0x00000 }; +static unsigned int de0FEB9[] = { 0x00635, 0x00000 }; +static unsigned int de0FEBA[] = { 0x00635, 0x00000 }; +static unsigned int de0FEBB[] = { 0x00635, 0x00000 }; +static unsigned int de0FEBC[] = { 0x00635, 0x00000 }; +static unsigned int de0FEBD[] = { 0x00636, 0x00000 }; +static unsigned int de0FEBE[] = { 0x00636, 0x00000 }; +static unsigned int de0FEBF[] = { 0x00636, 0x00000 }; +static unsigned int de0FEC0[] = { 0x00636, 0x00000 }; +static unsigned int de0FEC1[] = { 0x00637, 0x00000 }; +static unsigned int de0FEC2[] = { 0x00637, 0x00000 }; +static unsigned int de0FEC3[] = { 0x00637, 0x00000 }; +static unsigned int de0FEC4[] = { 0x00637, 0x00000 }; +static unsigned int de0FEC5[] = { 0x00638, 0x00000 }; +static unsigned int de0FEC6[] = { 0x00638, 0x00000 }; +static unsigned int de0FEC7[] = { 0x00638, 0x00000 }; +static unsigned int de0FEC8[] = { 0x00638, 0x00000 }; +static unsigned int de0FEC9[] = { 0x00639, 0x00000 }; +static unsigned int de0FECA[] = { 0x00639, 0x00000 }; +static unsigned int de0FECB[] = { 0x00639, 0x00000 }; +static unsigned int de0FECC[] = { 0x00639, 0x00000 }; +static unsigned int de0FECD[] = { 0x0063A, 0x00000 }; +static unsigned int de0FECE[] = { 0x0063A, 0x00000 }; +static unsigned int de0FECF[] = { 0x0063A, 0x00000 }; +static unsigned int de0FED0[] = { 0x0063A, 0x00000 }; +static unsigned int de0FED1[] = { 0x00641, 0x00000 }; +static unsigned int de0FED2[] = { 0x00641, 0x00000 }; +static unsigned int de0FED3[] = { 0x00641, 0x00000 }; +static unsigned int de0FED4[] = { 0x00641, 0x00000 }; +static unsigned int de0FED5[] = { 0x00642, 0x00000 }; +static unsigned int de0FED6[] = { 0x00642, 0x00000 }; +static unsigned int de0FED7[] = { 0x00642, 0x00000 }; +static unsigned int de0FED8[] = { 0x00642, 0x00000 }; +static unsigned int de0FED9[] = { 0x00643, 0x00000 }; +static unsigned int de0FEDA[] = { 0x00643, 0x00000 }; +static unsigned int de0FEDB[] = { 0x00643, 0x00000 }; +static unsigned int de0FEDC[] = { 0x00643, 0x00000 }; +static unsigned int de0FEDD[] = { 0x00644, 0x00000 }; +static unsigned int de0FEDE[] = { 0x00644, 0x00000 }; +static unsigned int de0FEDF[] = { 0x00644, 0x00000 }; +static unsigned int de0FEE0[] = { 0x00644, 0x00000 }; +static unsigned int de0FEE1[] = { 0x00645, 0x00000 }; +static unsigned int de0FEE2[] = { 0x00645, 0x00000 }; +static unsigned int de0FEE3[] = { 0x00645, 0x00000 }; +static unsigned int de0FEE4[] = { 0x00645, 0x00000 }; +static unsigned int de0FEE5[] = { 0x00646, 0x00000 }; +static unsigned int de0FEE6[] = { 0x00646, 0x00000 }; +static unsigned int de0FEE7[] = { 0x00646, 0x00000 }; +static unsigned int de0FEE8[] = { 0x00646, 0x00000 }; +static unsigned int de0FEE9[] = { 0x00647, 0x00000 }; +static unsigned int de0FEEA[] = { 0x00647, 0x00000 }; +static unsigned int de0FEEB[] = { 0x00647, 0x00000 }; +static unsigned int de0FEEC[] = { 0x00647, 0x00000 }; +static unsigned int de0FEED[] = { 0x00648, 0x00000 }; +static unsigned int de0FEEE[] = { 0x00648, 0x00000 }; +static unsigned int de0FEEF[] = { 0x00649, 0x00000 }; +static unsigned int de0FEF0[] = { 0x00649, 0x00000 }; +static unsigned int de0FEF1[] = { 0x0064A, 0x00000 }; +static unsigned int de0FEF2[] = { 0x0064A, 0x00000 }; +static unsigned int de0FEF3[] = { 0x0064A, 0x00000 }; +static unsigned int de0FEF4[] = { 0x0064A, 0x00000 }; +static unsigned int de0FEF5[] = { 0x00644, 0x00622, 0x00000 }; +static unsigned int de0FEF6[] = { 0x00644, 0x00622, 0x00000 }; +static unsigned int de0FEF7[] = { 0x00644, 0x00623, 0x00000 }; +static unsigned int de0FEF8[] = { 0x00644, 0x00623, 0x00000 }; +static unsigned int de0FEF9[] = { 0x00644, 0x00625, 0x00000 }; +static unsigned int de0FEFA[] = { 0x00644, 0x00625, 0x00000 }; +static unsigned int de0FEFB[] = { 0x00644, 0x00627, 0x00000 }; +static unsigned int de0FEFC[] = { 0x00644, 0x00627, 0x00000 }; +static unsigned int de0FF01[] = { 0x00021, 0x00000 }; +static unsigned int de0FF02[] = { 0x00022, 0x00000 }; +static unsigned int de0FF03[] = { 0x00023, 0x00000 }; +static unsigned int de0FF04[] = { 0x00024, 0x00000 }; +static unsigned int de0FF05[] = { 0x00025, 0x00000 }; +static unsigned int de0FF06[] = { 0x00026, 0x00000 }; +static unsigned int de0FF07[] = { 0x00027, 0x00000 }; +static unsigned int de0FF08[] = { 0x00028, 0x00000 }; +static unsigned int de0FF09[] = { 0x00029, 0x00000 }; +static unsigned int de0FF0A[] = { 0x0002A, 0x00000 }; +static unsigned int de0FF0B[] = { 0x0002B, 0x00000 }; +static unsigned int de0FF0C[] = { 0x0002C, 0x00000 }; +static unsigned int de0FF0D[] = { 0x0002D, 0x00000 }; +static unsigned int de0FF0E[] = { 0x0002E, 0x00000 }; +static unsigned int de0FF0F[] = { 0x0002F, 0x00000 }; +static unsigned int de0FF10[] = { 0x00030, 0x00000 }; +static unsigned int de0FF11[] = { 0x00031, 0x00000 }; +static unsigned int de0FF12[] = { 0x00032, 0x00000 }; +static unsigned int de0FF13[] = { 0x00033, 0x00000 }; +static unsigned int de0FF14[] = { 0x00034, 0x00000 }; +static unsigned int de0FF15[] = { 0x00035, 0x00000 }; +static unsigned int de0FF16[] = { 0x00036, 0x00000 }; +static unsigned int de0FF17[] = { 0x00037, 0x00000 }; +static unsigned int de0FF18[] = { 0x00038, 0x00000 }; +static unsigned int de0FF19[] = { 0x00039, 0x00000 }; +static unsigned int de0FF1A[] = { 0x0003A, 0x00000 }; +static unsigned int de0FF1B[] = { 0x0003B, 0x00000 }; +static unsigned int de0FF1C[] = { 0x0003C, 0x00000 }; +static unsigned int de0FF1D[] = { 0x0003D, 0x00000 }; +static unsigned int de0FF1E[] = { 0x0003E, 0x00000 }; +static unsigned int de0FF1F[] = { 0x0003F, 0x00000 }; +static unsigned int de0FF20[] = { 0x00040, 0x00000 }; +static unsigned int de0FF21[] = { 0x00041, 0x00000 }; +static unsigned int de0FF22[] = { 0x00042, 0x00000 }; +static unsigned int de0FF23[] = { 0x00043, 0x00000 }; +static unsigned int de0FF24[] = { 0x00044, 0x00000 }; +static unsigned int de0FF25[] = { 0x00045, 0x00000 }; +static unsigned int de0FF26[] = { 0x00046, 0x00000 }; +static unsigned int de0FF27[] = { 0x00047, 0x00000 }; +static unsigned int de0FF28[] = { 0x00048, 0x00000 }; +static unsigned int de0FF29[] = { 0x00049, 0x00000 }; +static unsigned int de0FF2A[] = { 0x0004A, 0x00000 }; +static unsigned int de0FF2B[] = { 0x0004B, 0x00000 }; +static unsigned int de0FF2C[] = { 0x0004C, 0x00000 }; +static unsigned int de0FF2D[] = { 0x0004D, 0x00000 }; +static unsigned int de0FF2E[] = { 0x0004E, 0x00000 }; +static unsigned int de0FF2F[] = { 0x0004F, 0x00000 }; +static unsigned int de0FF30[] = { 0x00050, 0x00000 }; +static unsigned int de0FF31[] = { 0x00051, 0x00000 }; +static unsigned int de0FF32[] = { 0x00052, 0x00000 }; +static unsigned int de0FF33[] = { 0x00053, 0x00000 }; +static unsigned int de0FF34[] = { 0x00054, 0x00000 }; +static unsigned int de0FF35[] = { 0x00055, 0x00000 }; +static unsigned int de0FF36[] = { 0x00056, 0x00000 }; +static unsigned int de0FF37[] = { 0x00057, 0x00000 }; +static unsigned int de0FF38[] = { 0x00058, 0x00000 }; +static unsigned int de0FF39[] = { 0x00059, 0x00000 }; +static unsigned int de0FF3A[] = { 0x0005A, 0x00000 }; +static unsigned int de0FF3B[] = { 0x0005B, 0x00000 }; +static unsigned int de0FF3C[] = { 0x0005C, 0x00000 }; +static unsigned int de0FF3D[] = { 0x0005D, 0x00000 }; +static unsigned int de0FF3E[] = { 0x0005E, 0x00000 }; +static unsigned int de0FF3F[] = { 0x0005F, 0x00000 }; +static unsigned int de0FF40[] = { 0x00060, 0x00000 }; +static unsigned int de0FF41[] = { 0x00061, 0x00000 }; +static unsigned int de0FF42[] = { 0x00062, 0x00000 }; +static unsigned int de0FF43[] = { 0x00063, 0x00000 }; +static unsigned int de0FF44[] = { 0x00064, 0x00000 }; +static unsigned int de0FF45[] = { 0x00065, 0x00000 }; +static unsigned int de0FF46[] = { 0x00066, 0x00000 }; +static unsigned int de0FF47[] = { 0x00067, 0x00000 }; +static unsigned int de0FF48[] = { 0x00068, 0x00000 }; +static unsigned int de0FF49[] = { 0x00069, 0x00000 }; +static unsigned int de0FF4A[] = { 0x0006A, 0x00000 }; +static unsigned int de0FF4B[] = { 0x0006B, 0x00000 }; +static unsigned int de0FF4C[] = { 0x0006C, 0x00000 }; +static unsigned int de0FF4D[] = { 0x0006D, 0x00000 }; +static unsigned int de0FF4E[] = { 0x0006E, 0x00000 }; +static unsigned int de0FF4F[] = { 0x0006F, 0x00000 }; +static unsigned int de0FF50[] = { 0x00070, 0x00000 }; +static unsigned int de0FF51[] = { 0x00071, 0x00000 }; +static unsigned int de0FF52[] = { 0x00072, 0x00000 }; +static unsigned int de0FF53[] = { 0x00073, 0x00000 }; +static unsigned int de0FF54[] = { 0x00074, 0x00000 }; +static unsigned int de0FF55[] = { 0x00075, 0x00000 }; +static unsigned int de0FF56[] = { 0x00076, 0x00000 }; +static unsigned int de0FF57[] = { 0x00077, 0x00000 }; +static unsigned int de0FF58[] = { 0x00078, 0x00000 }; +static unsigned int de0FF59[] = { 0x00079, 0x00000 }; +static unsigned int de0FF5A[] = { 0x0007A, 0x00000 }; +static unsigned int de0FF5B[] = { 0x0007B, 0x00000 }; +static unsigned int de0FF5C[] = { 0x0007C, 0x00000 }; +static unsigned int de0FF5D[] = { 0x0007D, 0x00000 }; +static unsigned int de0FF5E[] = { 0x0007E, 0x00000 }; +static unsigned int de0FF5F[] = { 0x02985, 0x00000 }; +static unsigned int de0FF60[] = { 0x02986, 0x00000 }; +static unsigned int de0FF61[] = { 0x03002, 0x00000 }; +static unsigned int de0FF62[] = { 0x0300C, 0x00000 }; +static unsigned int de0FF63[] = { 0x0300D, 0x00000 }; +static unsigned int de0FF64[] = { 0x03001, 0x00000 }; +static unsigned int de0FF65[] = { 0x030FB, 0x00000 }; +static unsigned int de0FF66[] = { 0x030F2, 0x00000 }; +static unsigned int de0FF67[] = { 0x030A1, 0x00000 }; +static unsigned int de0FF68[] = { 0x030A3, 0x00000 }; +static unsigned int de0FF69[] = { 0x030A5, 0x00000 }; +static unsigned int de0FF6A[] = { 0x030A7, 0x00000 }; +static unsigned int de0FF6B[] = { 0x030A9, 0x00000 }; +static unsigned int de0FF6C[] = { 0x030E3, 0x00000 }; +static unsigned int de0FF6D[] = { 0x030E5, 0x00000 }; +static unsigned int de0FF6E[] = { 0x030E7, 0x00000 }; +static unsigned int de0FF6F[] = { 0x030C3, 0x00000 }; +static unsigned int de0FF70[] = { 0x030FC, 0x00000 }; +static unsigned int de0FF71[] = { 0x030A2, 0x00000 }; +static unsigned int de0FF72[] = { 0x030A4, 0x00000 }; +static unsigned int de0FF73[] = { 0x030A6, 0x00000 }; +static unsigned int de0FF74[] = { 0x030A8, 0x00000 }; +static unsigned int de0FF75[] = { 0x030AA, 0x00000 }; +static unsigned int de0FF76[] = { 0x030AB, 0x00000 }; +static unsigned int de0FF77[] = { 0x030AD, 0x00000 }; +static unsigned int de0FF78[] = { 0x030AF, 0x00000 }; +static unsigned int de0FF79[] = { 0x030B1, 0x00000 }; +static unsigned int de0FF7A[] = { 0x030B3, 0x00000 }; +static unsigned int de0FF7B[] = { 0x030B5, 0x00000 }; +static unsigned int de0FF7C[] = { 0x030B7, 0x00000 }; +static unsigned int de0FF7D[] = { 0x030B9, 0x00000 }; +static unsigned int de0FF7E[] = { 0x030BB, 0x00000 }; +static unsigned int de0FF7F[] = { 0x030BD, 0x00000 }; +static unsigned int de0FF80[] = { 0x030BF, 0x00000 }; +static unsigned int de0FF81[] = { 0x030C1, 0x00000 }; +static unsigned int de0FF82[] = { 0x030C4, 0x00000 }; +static unsigned int de0FF83[] = { 0x030C6, 0x00000 }; +static unsigned int de0FF84[] = { 0x030C8, 0x00000 }; +static unsigned int de0FF85[] = { 0x030CA, 0x00000 }; +static unsigned int de0FF86[] = { 0x030CB, 0x00000 }; +static unsigned int de0FF87[] = { 0x030CC, 0x00000 }; +static unsigned int de0FF88[] = { 0x030CD, 0x00000 }; +static unsigned int de0FF89[] = { 0x030CE, 0x00000 }; +static unsigned int de0FF8A[] = { 0x030CF, 0x00000 }; +static unsigned int de0FF8B[] = { 0x030D2, 0x00000 }; +static unsigned int de0FF8C[] = { 0x030D5, 0x00000 }; +static unsigned int de0FF8D[] = { 0x030D8, 0x00000 }; +static unsigned int de0FF8E[] = { 0x030DB, 0x00000 }; +static unsigned int de0FF8F[] = { 0x030DE, 0x00000 }; +static unsigned int de0FF90[] = { 0x030DF, 0x00000 }; +static unsigned int de0FF91[] = { 0x030E0, 0x00000 }; +static unsigned int de0FF92[] = { 0x030E1, 0x00000 }; +static unsigned int de0FF93[] = { 0x030E2, 0x00000 }; +static unsigned int de0FF94[] = { 0x030E4, 0x00000 }; +static unsigned int de0FF95[] = { 0x030E6, 0x00000 }; +static unsigned int de0FF96[] = { 0x030E8, 0x00000 }; +static unsigned int de0FF97[] = { 0x030E9, 0x00000 }; +static unsigned int de0FF98[] = { 0x030EA, 0x00000 }; +static unsigned int de0FF99[] = { 0x030EB, 0x00000 }; +static unsigned int de0FF9A[] = { 0x030EC, 0x00000 }; +static unsigned int de0FF9B[] = { 0x030ED, 0x00000 }; +static unsigned int de0FF9C[] = { 0x030EF, 0x00000 }; +static unsigned int de0FF9D[] = { 0x030F3, 0x00000 }; +static unsigned int de0FF9E[] = { 0x03099, 0x00000 }; +static unsigned int de0FF9F[] = { 0x0309A, 0x00000 }; +static unsigned int de0FFA0[] = { 0x03164, 0x00000 }; +static unsigned int de0FFA1[] = { 0x03131, 0x00000 }; +static unsigned int de0FFA2[] = { 0x03132, 0x00000 }; +static unsigned int de0FFA3[] = { 0x03133, 0x00000 }; +static unsigned int de0FFA4[] = { 0x03134, 0x00000 }; +static unsigned int de0FFA5[] = { 0x03135, 0x00000 }; +static unsigned int de0FFA6[] = { 0x03136, 0x00000 }; +static unsigned int de0FFA7[] = { 0x03137, 0x00000 }; +static unsigned int de0FFA8[] = { 0x03138, 0x00000 }; +static unsigned int de0FFA9[] = { 0x03139, 0x00000 }; +static unsigned int de0FFAA[] = { 0x0313A, 0x00000 }; +static unsigned int de0FFAB[] = { 0x0313B, 0x00000 }; +static unsigned int de0FFAC[] = { 0x0313C, 0x00000 }; +static unsigned int de0FFAD[] = { 0x0313D, 0x00000 }; +static unsigned int de0FFAE[] = { 0x0313E, 0x00000 }; +static unsigned int de0FFAF[] = { 0x0313F, 0x00000 }; +static unsigned int de0FFB0[] = { 0x03140, 0x00000 }; +static unsigned int de0FFB1[] = { 0x03141, 0x00000 }; +static unsigned int de0FFB2[] = { 0x03142, 0x00000 }; +static unsigned int de0FFB3[] = { 0x03143, 0x00000 }; +static unsigned int de0FFB4[] = { 0x03144, 0x00000 }; +static unsigned int de0FFB5[] = { 0x03145, 0x00000 }; +static unsigned int de0FFB6[] = { 0x03146, 0x00000 }; +static unsigned int de0FFB7[] = { 0x03147, 0x00000 }; +static unsigned int de0FFB8[] = { 0x03148, 0x00000 }; +static unsigned int de0FFB9[] = { 0x03149, 0x00000 }; +static unsigned int de0FFBA[] = { 0x0314A, 0x00000 }; +static unsigned int de0FFBB[] = { 0x0314B, 0x00000 }; +static unsigned int de0FFBC[] = { 0x0314C, 0x00000 }; +static unsigned int de0FFBD[] = { 0x0314D, 0x00000 }; +static unsigned int de0FFBE[] = { 0x0314E, 0x00000 }; +static unsigned int de0FFC2[] = { 0x0314F, 0x00000 }; +static unsigned int de0FFC3[] = { 0x03150, 0x00000 }; +static unsigned int de0FFC4[] = { 0x03151, 0x00000 }; +static unsigned int de0FFC5[] = { 0x03152, 0x00000 }; +static unsigned int de0FFC6[] = { 0x03153, 0x00000 }; +static unsigned int de0FFC7[] = { 0x03154, 0x00000 }; +static unsigned int de0FFCA[] = { 0x03155, 0x00000 }; +static unsigned int de0FFCB[] = { 0x03156, 0x00000 }; +static unsigned int de0FFCC[] = { 0x03157, 0x00000 }; +static unsigned int de0FFCD[] = { 0x03158, 0x00000 }; +static unsigned int de0FFCE[] = { 0x03159, 0x00000 }; +static unsigned int de0FFCF[] = { 0x0315A, 0x00000 }; +static unsigned int de0FFD2[] = { 0x0315B, 0x00000 }; +static unsigned int de0FFD3[] = { 0x0315C, 0x00000 }; +static unsigned int de0FFD4[] = { 0x0315D, 0x00000 }; +static unsigned int de0FFD5[] = { 0x0315E, 0x00000 }; +static unsigned int de0FFD6[] = { 0x0315F, 0x00000 }; +static unsigned int de0FFD7[] = { 0x03160, 0x00000 }; +static unsigned int de0FFDA[] = { 0x03161, 0x00000 }; +static unsigned int de0FFDB[] = { 0x03162, 0x00000 }; +static unsigned int de0FFDC[] = { 0x03163, 0x00000 }; +static unsigned int de0FFE0[] = { 0x000A2, 0x00000 }; +static unsigned int de0FFE1[] = { 0x000A3, 0x00000 }; +static unsigned int de0FFE2[] = { 0x000AC, 0x00000 }; +static unsigned int de0FFE3[] = { 0x000AF, 0x00000 }; +static unsigned int de0FFE4[] = { 0x000A6, 0x00000 }; +static unsigned int de0FFE5[] = { 0x000A5, 0x00000 }; +static unsigned int de0FFE6[] = { 0x020A9, 0x00000 }; +static unsigned int de0FFE8[] = { 0x02502, 0x00000 }; +static unsigned int de0FFE9[] = { 0x02190, 0x00000 }; +static unsigned int de0FFEA[] = { 0x02191, 0x00000 }; +static unsigned int de0FFEB[] = { 0x02192, 0x00000 }; +static unsigned int de0FFEC[] = { 0x02193, 0x00000 }; +static unsigned int de0FFED[] = { 0x025A0, 0x00000 }; +static unsigned int de0FFEE[] = { 0x025CB, 0x00000 }; +static unsigned int de1D15E[] = { 0x1D157, 0x1D165, 0x00000 }; +static unsigned int de1D15F[] = { 0x1D158, 0x1D165, 0x00000 }; +static unsigned int de1D160[] = { 0x1D15F, 0x1D16E, 0x00000 }; +static unsigned int de1D161[] = { 0x1D15F, 0x1D16F, 0x00000 }; +static unsigned int de1D162[] = { 0x1D15F, 0x1D170, 0x00000 }; +static unsigned int de1D163[] = { 0x1D15F, 0x1D171, 0x00000 }; +static unsigned int de1D164[] = { 0x1D15F, 0x1D172, 0x00000 }; +static unsigned int de1D1BB[] = { 0x1D1B9, 0x1D165, 0x00000 }; +static unsigned int de1D1BC[] = { 0x1D1BA, 0x1D165, 0x00000 }; +static unsigned int de1D1BD[] = { 0x1D1BB, 0x1D16E, 0x00000 }; +static unsigned int de1D1BE[] = { 0x1D1BC, 0x1D16E, 0x00000 }; +static unsigned int de1D1BF[] = { 0x1D1BB, 0x1D16F, 0x00000 }; +static unsigned int de1D1C0[] = { 0x1D1BC, 0x1D16F, 0x00000 }; +static unsigned int de1D400[] = { 0x00041, 0x00000 }; +static unsigned int de1D401[] = { 0x00042, 0x00000 }; +static unsigned int de1D402[] = { 0x00043, 0x00000 }; +static unsigned int de1D403[] = { 0x00044, 0x00000 }; +static unsigned int de1D404[] = { 0x00045, 0x00000 }; +static unsigned int de1D405[] = { 0x00046, 0x00000 }; +static unsigned int de1D406[] = { 0x00047, 0x00000 }; +static unsigned int de1D407[] = { 0x00048, 0x00000 }; +static unsigned int de1D408[] = { 0x00049, 0x00000 }; +static unsigned int de1D409[] = { 0x0004A, 0x00000 }; +static unsigned int de1D40A[] = { 0x0004B, 0x00000 }; +static unsigned int de1D40B[] = { 0x0004C, 0x00000 }; +static unsigned int de1D40C[] = { 0x0004D, 0x00000 }; +static unsigned int de1D40D[] = { 0x0004E, 0x00000 }; +static unsigned int de1D40E[] = { 0x0004F, 0x00000 }; +static unsigned int de1D40F[] = { 0x00050, 0x00000 }; +static unsigned int de1D410[] = { 0x00051, 0x00000 }; +static unsigned int de1D411[] = { 0x00052, 0x00000 }; +static unsigned int de1D412[] = { 0x00053, 0x00000 }; +static unsigned int de1D413[] = { 0x00054, 0x00000 }; +static unsigned int de1D414[] = { 0x00055, 0x00000 }; +static unsigned int de1D415[] = { 0x00056, 0x00000 }; +static unsigned int de1D416[] = { 0x00057, 0x00000 }; +static unsigned int de1D417[] = { 0x00058, 0x00000 }; +static unsigned int de1D418[] = { 0x00059, 0x00000 }; +static unsigned int de1D419[] = { 0x0005A, 0x00000 }; +static unsigned int de1D41A[] = { 0x00061, 0x00000 }; +static unsigned int de1D41B[] = { 0x00062, 0x00000 }; +static unsigned int de1D41C[] = { 0x00063, 0x00000 }; +static unsigned int de1D41D[] = { 0x00064, 0x00000 }; +static unsigned int de1D41E[] = { 0x00065, 0x00000 }; +static unsigned int de1D41F[] = { 0x00066, 0x00000 }; +static unsigned int de1D420[] = { 0x00067, 0x00000 }; +static unsigned int de1D421[] = { 0x00068, 0x00000 }; +static unsigned int de1D422[] = { 0x00069, 0x00000 }; +static unsigned int de1D423[] = { 0x0006A, 0x00000 }; +static unsigned int de1D424[] = { 0x0006B, 0x00000 }; +static unsigned int de1D425[] = { 0x0006C, 0x00000 }; +static unsigned int de1D426[] = { 0x0006D, 0x00000 }; +static unsigned int de1D427[] = { 0x0006E, 0x00000 }; +static unsigned int de1D428[] = { 0x0006F, 0x00000 }; +static unsigned int de1D429[] = { 0x00070, 0x00000 }; +static unsigned int de1D42A[] = { 0x00071, 0x00000 }; +static unsigned int de1D42B[] = { 0x00072, 0x00000 }; +static unsigned int de1D42C[] = { 0x00073, 0x00000 }; +static unsigned int de1D42D[] = { 0x00074, 0x00000 }; +static unsigned int de1D42E[] = { 0x00075, 0x00000 }; +static unsigned int de1D42F[] = { 0x00076, 0x00000 }; +static unsigned int de1D430[] = { 0x00077, 0x00000 }; +static unsigned int de1D431[] = { 0x00078, 0x00000 }; +static unsigned int de1D432[] = { 0x00079, 0x00000 }; +static unsigned int de1D433[] = { 0x0007A, 0x00000 }; +static unsigned int de1D434[] = { 0x00041, 0x00000 }; +static unsigned int de1D435[] = { 0x00042, 0x00000 }; +static unsigned int de1D436[] = { 0x00043, 0x00000 }; +static unsigned int de1D437[] = { 0x00044, 0x00000 }; +static unsigned int de1D438[] = { 0x00045, 0x00000 }; +static unsigned int de1D439[] = { 0x00046, 0x00000 }; +static unsigned int de1D43A[] = { 0x00047, 0x00000 }; +static unsigned int de1D43B[] = { 0x00048, 0x00000 }; +static unsigned int de1D43C[] = { 0x00049, 0x00000 }; +static unsigned int de1D43D[] = { 0x0004A, 0x00000 }; +static unsigned int de1D43E[] = { 0x0004B, 0x00000 }; +static unsigned int de1D43F[] = { 0x0004C, 0x00000 }; +static unsigned int de1D440[] = { 0x0004D, 0x00000 }; +static unsigned int de1D441[] = { 0x0004E, 0x00000 }; +static unsigned int de1D442[] = { 0x0004F, 0x00000 }; +static unsigned int de1D443[] = { 0x00050, 0x00000 }; +static unsigned int de1D444[] = { 0x00051, 0x00000 }; +static unsigned int de1D445[] = { 0x00052, 0x00000 }; +static unsigned int de1D446[] = { 0x00053, 0x00000 }; +static unsigned int de1D447[] = { 0x00054, 0x00000 }; +static unsigned int de1D448[] = { 0x00055, 0x00000 }; +static unsigned int de1D449[] = { 0x00056, 0x00000 }; +static unsigned int de1D44A[] = { 0x00057, 0x00000 }; +static unsigned int de1D44B[] = { 0x00058, 0x00000 }; +static unsigned int de1D44C[] = { 0x00059, 0x00000 }; +static unsigned int de1D44D[] = { 0x0005A, 0x00000 }; +static unsigned int de1D44E[] = { 0x00061, 0x00000 }; +static unsigned int de1D44F[] = { 0x00062, 0x00000 }; +static unsigned int de1D450[] = { 0x00063, 0x00000 }; +static unsigned int de1D451[] = { 0x00064, 0x00000 }; +static unsigned int de1D452[] = { 0x00065, 0x00000 }; +static unsigned int de1D453[] = { 0x00066, 0x00000 }; +static unsigned int de1D454[] = { 0x00067, 0x00000 }; +static unsigned int de1D456[] = { 0x00069, 0x00000 }; +static unsigned int de1D457[] = { 0x0006A, 0x00000 }; +static unsigned int de1D458[] = { 0x0006B, 0x00000 }; +static unsigned int de1D459[] = { 0x0006C, 0x00000 }; +static unsigned int de1D45A[] = { 0x0006D, 0x00000 }; +static unsigned int de1D45B[] = { 0x0006E, 0x00000 }; +static unsigned int de1D45C[] = { 0x0006F, 0x00000 }; +static unsigned int de1D45D[] = { 0x00070, 0x00000 }; +static unsigned int de1D45E[] = { 0x00071, 0x00000 }; +static unsigned int de1D45F[] = { 0x00072, 0x00000 }; +static unsigned int de1D460[] = { 0x00073, 0x00000 }; +static unsigned int de1D461[] = { 0x00074, 0x00000 }; +static unsigned int de1D462[] = { 0x00075, 0x00000 }; +static unsigned int de1D463[] = { 0x00076, 0x00000 }; +static unsigned int de1D464[] = { 0x00077, 0x00000 }; +static unsigned int de1D465[] = { 0x00078, 0x00000 }; +static unsigned int de1D466[] = { 0x00079, 0x00000 }; +static unsigned int de1D467[] = { 0x0007A, 0x00000 }; +static unsigned int de1D468[] = { 0x00041, 0x00000 }; +static unsigned int de1D469[] = { 0x00042, 0x00000 }; +static unsigned int de1D46A[] = { 0x00043, 0x00000 }; +static unsigned int de1D46B[] = { 0x00044, 0x00000 }; +static unsigned int de1D46C[] = { 0x00045, 0x00000 }; +static unsigned int de1D46D[] = { 0x00046, 0x00000 }; +static unsigned int de1D46E[] = { 0x00047, 0x00000 }; +static unsigned int de1D46F[] = { 0x00048, 0x00000 }; +static unsigned int de1D470[] = { 0x00049, 0x00000 }; +static unsigned int de1D471[] = { 0x0004A, 0x00000 }; +static unsigned int de1D472[] = { 0x0004B, 0x00000 }; +static unsigned int de1D473[] = { 0x0004C, 0x00000 }; +static unsigned int de1D474[] = { 0x0004D, 0x00000 }; +static unsigned int de1D475[] = { 0x0004E, 0x00000 }; +static unsigned int de1D476[] = { 0x0004F, 0x00000 }; +static unsigned int de1D477[] = { 0x00050, 0x00000 }; +static unsigned int de1D478[] = { 0x00051, 0x00000 }; +static unsigned int de1D479[] = { 0x00052, 0x00000 }; +static unsigned int de1D47A[] = { 0x00053, 0x00000 }; +static unsigned int de1D47B[] = { 0x00054, 0x00000 }; +static unsigned int de1D47C[] = { 0x00055, 0x00000 }; +static unsigned int de1D47D[] = { 0x00056, 0x00000 }; +static unsigned int de1D47E[] = { 0x00057, 0x00000 }; +static unsigned int de1D47F[] = { 0x00058, 0x00000 }; +static unsigned int de1D480[] = { 0x00059, 0x00000 }; +static unsigned int de1D481[] = { 0x0005A, 0x00000 }; +static unsigned int de1D482[] = { 0x00061, 0x00000 }; +static unsigned int de1D483[] = { 0x00062, 0x00000 }; +static unsigned int de1D484[] = { 0x00063, 0x00000 }; +static unsigned int de1D485[] = { 0x00064, 0x00000 }; +static unsigned int de1D486[] = { 0x00065, 0x00000 }; +static unsigned int de1D487[] = { 0x00066, 0x00000 }; +static unsigned int de1D488[] = { 0x00067, 0x00000 }; +static unsigned int de1D489[] = { 0x00068, 0x00000 }; +static unsigned int de1D48A[] = { 0x00069, 0x00000 }; +static unsigned int de1D48B[] = { 0x0006A, 0x00000 }; +static unsigned int de1D48C[] = { 0x0006B, 0x00000 }; +static unsigned int de1D48D[] = { 0x0006C, 0x00000 }; +static unsigned int de1D48E[] = { 0x0006D, 0x00000 }; +static unsigned int de1D48F[] = { 0x0006E, 0x00000 }; +static unsigned int de1D490[] = { 0x0006F, 0x00000 }; +static unsigned int de1D491[] = { 0x00070, 0x00000 }; +static unsigned int de1D492[] = { 0x00071, 0x00000 }; +static unsigned int de1D493[] = { 0x00072, 0x00000 }; +static unsigned int de1D494[] = { 0x00073, 0x00000 }; +static unsigned int de1D495[] = { 0x00074, 0x00000 }; +static unsigned int de1D496[] = { 0x00075, 0x00000 }; +static unsigned int de1D497[] = { 0x00076, 0x00000 }; +static unsigned int de1D498[] = { 0x00077, 0x00000 }; +static unsigned int de1D499[] = { 0x00078, 0x00000 }; +static unsigned int de1D49A[] = { 0x00079, 0x00000 }; +static unsigned int de1D49B[] = { 0x0007A, 0x00000 }; +static unsigned int de1D49C[] = { 0x00041, 0x00000 }; +static unsigned int de1D49E[] = { 0x00043, 0x00000 }; +static unsigned int de1D49F[] = { 0x00044, 0x00000 }; +static unsigned int de1D4A2[] = { 0x00047, 0x00000 }; +static unsigned int de1D4A5[] = { 0x0004A, 0x00000 }; +static unsigned int de1D4A6[] = { 0x0004B, 0x00000 }; +static unsigned int de1D4A9[] = { 0x0004E, 0x00000 }; +static unsigned int de1D4AA[] = { 0x0004F, 0x00000 }; +static unsigned int de1D4AB[] = { 0x00050, 0x00000 }; +static unsigned int de1D4AC[] = { 0x00051, 0x00000 }; +static unsigned int de1D4AE[] = { 0x00053, 0x00000 }; +static unsigned int de1D4AF[] = { 0x00054, 0x00000 }; +static unsigned int de1D4B0[] = { 0x00055, 0x00000 }; +static unsigned int de1D4B1[] = { 0x00056, 0x00000 }; +static unsigned int de1D4B2[] = { 0x00057, 0x00000 }; +static unsigned int de1D4B3[] = { 0x00058, 0x00000 }; +static unsigned int de1D4B4[] = { 0x00059, 0x00000 }; +static unsigned int de1D4B5[] = { 0x0005A, 0x00000 }; +static unsigned int de1D4B6[] = { 0x00061, 0x00000 }; +static unsigned int de1D4B7[] = { 0x00062, 0x00000 }; +static unsigned int de1D4B8[] = { 0x00063, 0x00000 }; +static unsigned int de1D4B9[] = { 0x00064, 0x00000 }; +static unsigned int de1D4BB[] = { 0x00066, 0x00000 }; +static unsigned int de1D4BD[] = { 0x00068, 0x00000 }; +static unsigned int de1D4BE[] = { 0x00069, 0x00000 }; +static unsigned int de1D4BF[] = { 0x0006A, 0x00000 }; +static unsigned int de1D4C0[] = { 0x0006B, 0x00000 }; +static unsigned int de1D4C1[] = { 0x0006C, 0x00000 }; +static unsigned int de1D4C2[] = { 0x0006D, 0x00000 }; +static unsigned int de1D4C3[] = { 0x0006E, 0x00000 }; +static unsigned int de1D4C5[] = { 0x00070, 0x00000 }; +static unsigned int de1D4C6[] = { 0x00071, 0x00000 }; +static unsigned int de1D4C7[] = { 0x00072, 0x00000 }; +static unsigned int de1D4C8[] = { 0x00073, 0x00000 }; +static unsigned int de1D4C9[] = { 0x00074, 0x00000 }; +static unsigned int de1D4CA[] = { 0x00075, 0x00000 }; +static unsigned int de1D4CB[] = { 0x00076, 0x00000 }; +static unsigned int de1D4CC[] = { 0x00077, 0x00000 }; +static unsigned int de1D4CD[] = { 0x00078, 0x00000 }; +static unsigned int de1D4CE[] = { 0x00079, 0x00000 }; +static unsigned int de1D4CF[] = { 0x0007A, 0x00000 }; +static unsigned int de1D4D0[] = { 0x00041, 0x00000 }; +static unsigned int de1D4D1[] = { 0x00042, 0x00000 }; +static unsigned int de1D4D2[] = { 0x00043, 0x00000 }; +static unsigned int de1D4D3[] = { 0x00044, 0x00000 }; +static unsigned int de1D4D4[] = { 0x00045, 0x00000 }; +static unsigned int de1D4D5[] = { 0x00046, 0x00000 }; +static unsigned int de1D4D6[] = { 0x00047, 0x00000 }; +static unsigned int de1D4D7[] = { 0x00048, 0x00000 }; +static unsigned int de1D4D8[] = { 0x00049, 0x00000 }; +static unsigned int de1D4D9[] = { 0x0004A, 0x00000 }; +static unsigned int de1D4DA[] = { 0x0004B, 0x00000 }; +static unsigned int de1D4DB[] = { 0x0004C, 0x00000 }; +static unsigned int de1D4DC[] = { 0x0004D, 0x00000 }; +static unsigned int de1D4DD[] = { 0x0004E, 0x00000 }; +static unsigned int de1D4DE[] = { 0x0004F, 0x00000 }; +static unsigned int de1D4DF[] = { 0x00050, 0x00000 }; +static unsigned int de1D4E0[] = { 0x00051, 0x00000 }; +static unsigned int de1D4E1[] = { 0x00052, 0x00000 }; +static unsigned int de1D4E2[] = { 0x00053, 0x00000 }; +static unsigned int de1D4E3[] = { 0x00054, 0x00000 }; +static unsigned int de1D4E4[] = { 0x00055, 0x00000 }; +static unsigned int de1D4E5[] = { 0x00056, 0x00000 }; +static unsigned int de1D4E6[] = { 0x00057, 0x00000 }; +static unsigned int de1D4E7[] = { 0x00058, 0x00000 }; +static unsigned int de1D4E8[] = { 0x00059, 0x00000 }; +static unsigned int de1D4E9[] = { 0x0005A, 0x00000 }; +static unsigned int de1D4EA[] = { 0x00061, 0x00000 }; +static unsigned int de1D4EB[] = { 0x00062, 0x00000 }; +static unsigned int de1D4EC[] = { 0x00063, 0x00000 }; +static unsigned int de1D4ED[] = { 0x00064, 0x00000 }; +static unsigned int de1D4EE[] = { 0x00065, 0x00000 }; +static unsigned int de1D4EF[] = { 0x00066, 0x00000 }; +static unsigned int de1D4F0[] = { 0x00067, 0x00000 }; +static unsigned int de1D4F1[] = { 0x00068, 0x00000 }; +static unsigned int de1D4F2[] = { 0x00069, 0x00000 }; +static unsigned int de1D4F3[] = { 0x0006A, 0x00000 }; +static unsigned int de1D4F4[] = { 0x0006B, 0x00000 }; +static unsigned int de1D4F5[] = { 0x0006C, 0x00000 }; +static unsigned int de1D4F6[] = { 0x0006D, 0x00000 }; +static unsigned int de1D4F7[] = { 0x0006E, 0x00000 }; +static unsigned int de1D4F8[] = { 0x0006F, 0x00000 }; +static unsigned int de1D4F9[] = { 0x00070, 0x00000 }; +static unsigned int de1D4FA[] = { 0x00071, 0x00000 }; +static unsigned int de1D4FB[] = { 0x00072, 0x00000 }; +static unsigned int de1D4FC[] = { 0x00073, 0x00000 }; +static unsigned int de1D4FD[] = { 0x00074, 0x00000 }; +static unsigned int de1D4FE[] = { 0x00075, 0x00000 }; +static unsigned int de1D4FF[] = { 0x00076, 0x00000 }; +static unsigned int de1D500[] = { 0x00077, 0x00000 }; +static unsigned int de1D501[] = { 0x00078, 0x00000 }; +static unsigned int de1D502[] = { 0x00079, 0x00000 }; +static unsigned int de1D503[] = { 0x0007A, 0x00000 }; +static unsigned int de1D504[] = { 0x00041, 0x00000 }; +static unsigned int de1D505[] = { 0x00042, 0x00000 }; +static unsigned int de1D507[] = { 0x00044, 0x00000 }; +static unsigned int de1D508[] = { 0x00045, 0x00000 }; +static unsigned int de1D509[] = { 0x00046, 0x00000 }; +static unsigned int de1D50A[] = { 0x00047, 0x00000 }; +static unsigned int de1D50D[] = { 0x0004A, 0x00000 }; +static unsigned int de1D50E[] = { 0x0004B, 0x00000 }; +static unsigned int de1D50F[] = { 0x0004C, 0x00000 }; +static unsigned int de1D510[] = { 0x0004D, 0x00000 }; +static unsigned int de1D511[] = { 0x0004E, 0x00000 }; +static unsigned int de1D512[] = { 0x0004F, 0x00000 }; +static unsigned int de1D513[] = { 0x00050, 0x00000 }; +static unsigned int de1D514[] = { 0x00051, 0x00000 }; +static unsigned int de1D516[] = { 0x00053, 0x00000 }; +static unsigned int de1D517[] = { 0x00054, 0x00000 }; +static unsigned int de1D518[] = { 0x00055, 0x00000 }; +static unsigned int de1D519[] = { 0x00056, 0x00000 }; +static unsigned int de1D51A[] = { 0x00057, 0x00000 }; +static unsigned int de1D51B[] = { 0x00058, 0x00000 }; +static unsigned int de1D51C[] = { 0x00059, 0x00000 }; +static unsigned int de1D51E[] = { 0x00061, 0x00000 }; +static unsigned int de1D51F[] = { 0x00062, 0x00000 }; +static unsigned int de1D520[] = { 0x00063, 0x00000 }; +static unsigned int de1D521[] = { 0x00064, 0x00000 }; +static unsigned int de1D522[] = { 0x00065, 0x00000 }; +static unsigned int de1D523[] = { 0x00066, 0x00000 }; +static unsigned int de1D524[] = { 0x00067, 0x00000 }; +static unsigned int de1D525[] = { 0x00068, 0x00000 }; +static unsigned int de1D526[] = { 0x00069, 0x00000 }; +static unsigned int de1D527[] = { 0x0006A, 0x00000 }; +static unsigned int de1D528[] = { 0x0006B, 0x00000 }; +static unsigned int de1D529[] = { 0x0006C, 0x00000 }; +static unsigned int de1D52A[] = { 0x0006D, 0x00000 }; +static unsigned int de1D52B[] = { 0x0006E, 0x00000 }; +static unsigned int de1D52C[] = { 0x0006F, 0x00000 }; +static unsigned int de1D52D[] = { 0x00070, 0x00000 }; +static unsigned int de1D52E[] = { 0x00071, 0x00000 }; +static unsigned int de1D52F[] = { 0x00072, 0x00000 }; +static unsigned int de1D530[] = { 0x00073, 0x00000 }; +static unsigned int de1D531[] = { 0x00074, 0x00000 }; +static unsigned int de1D532[] = { 0x00075, 0x00000 }; +static unsigned int de1D533[] = { 0x00076, 0x00000 }; +static unsigned int de1D534[] = { 0x00077, 0x00000 }; +static unsigned int de1D535[] = { 0x00078, 0x00000 }; +static unsigned int de1D536[] = { 0x00079, 0x00000 }; +static unsigned int de1D537[] = { 0x0007A, 0x00000 }; +static unsigned int de1D538[] = { 0x00041, 0x00000 }; +static unsigned int de1D539[] = { 0x00042, 0x00000 }; +static unsigned int de1D53B[] = { 0x00044, 0x00000 }; +static unsigned int de1D53C[] = { 0x00045, 0x00000 }; +static unsigned int de1D53D[] = { 0x00046, 0x00000 }; +static unsigned int de1D53E[] = { 0x00047, 0x00000 }; +static unsigned int de1D540[] = { 0x00049, 0x00000 }; +static unsigned int de1D541[] = { 0x0004A, 0x00000 }; +static unsigned int de1D542[] = { 0x0004B, 0x00000 }; +static unsigned int de1D543[] = { 0x0004C, 0x00000 }; +static unsigned int de1D544[] = { 0x0004D, 0x00000 }; +static unsigned int de1D546[] = { 0x0004F, 0x00000 }; +static unsigned int de1D54A[] = { 0x00053, 0x00000 }; +static unsigned int de1D54B[] = { 0x00054, 0x00000 }; +static unsigned int de1D54C[] = { 0x00055, 0x00000 }; +static unsigned int de1D54D[] = { 0x00056, 0x00000 }; +static unsigned int de1D54E[] = { 0x00057, 0x00000 }; +static unsigned int de1D54F[] = { 0x00058, 0x00000 }; +static unsigned int de1D550[] = { 0x00059, 0x00000 }; +static unsigned int de1D552[] = { 0x00061, 0x00000 }; +static unsigned int de1D553[] = { 0x00062, 0x00000 }; +static unsigned int de1D554[] = { 0x00063, 0x00000 }; +static unsigned int de1D555[] = { 0x00064, 0x00000 }; +static unsigned int de1D556[] = { 0x00065, 0x00000 }; +static unsigned int de1D557[] = { 0x00066, 0x00000 }; +static unsigned int de1D558[] = { 0x00067, 0x00000 }; +static unsigned int de1D559[] = { 0x00068, 0x00000 }; +static unsigned int de1D55A[] = { 0x00069, 0x00000 }; +static unsigned int de1D55B[] = { 0x0006A, 0x00000 }; +static unsigned int de1D55C[] = { 0x0006B, 0x00000 }; +static unsigned int de1D55D[] = { 0x0006C, 0x00000 }; +static unsigned int de1D55E[] = { 0x0006D, 0x00000 }; +static unsigned int de1D55F[] = { 0x0006E, 0x00000 }; +static unsigned int de1D560[] = { 0x0006F, 0x00000 }; +static unsigned int de1D561[] = { 0x00070, 0x00000 }; +static unsigned int de1D562[] = { 0x00071, 0x00000 }; +static unsigned int de1D563[] = { 0x00072, 0x00000 }; +static unsigned int de1D564[] = { 0x00073, 0x00000 }; +static unsigned int de1D565[] = { 0x00074, 0x00000 }; +static unsigned int de1D566[] = { 0x00075, 0x00000 }; +static unsigned int de1D567[] = { 0x00076, 0x00000 }; +static unsigned int de1D568[] = { 0x00077, 0x00000 }; +static unsigned int de1D569[] = { 0x00078, 0x00000 }; +static unsigned int de1D56A[] = { 0x00079, 0x00000 }; +static unsigned int de1D56B[] = { 0x0007A, 0x00000 }; +static unsigned int de1D56C[] = { 0x00041, 0x00000 }; +static unsigned int de1D56D[] = { 0x00042, 0x00000 }; +static unsigned int de1D56E[] = { 0x00043, 0x00000 }; +static unsigned int de1D56F[] = { 0x00044, 0x00000 }; +static unsigned int de1D570[] = { 0x00045, 0x00000 }; +static unsigned int de1D571[] = { 0x00046, 0x00000 }; +static unsigned int de1D572[] = { 0x00047, 0x00000 }; +static unsigned int de1D573[] = { 0x00048, 0x00000 }; +static unsigned int de1D574[] = { 0x00049, 0x00000 }; +static unsigned int de1D575[] = { 0x0004A, 0x00000 }; +static unsigned int de1D576[] = { 0x0004B, 0x00000 }; +static unsigned int de1D577[] = { 0x0004C, 0x00000 }; +static unsigned int de1D578[] = { 0x0004D, 0x00000 }; +static unsigned int de1D579[] = { 0x0004E, 0x00000 }; +static unsigned int de1D57A[] = { 0x0004F, 0x00000 }; +static unsigned int de1D57B[] = { 0x00050, 0x00000 }; +static unsigned int de1D57C[] = { 0x00051, 0x00000 }; +static unsigned int de1D57D[] = { 0x00052, 0x00000 }; +static unsigned int de1D57E[] = { 0x00053, 0x00000 }; +static unsigned int de1D57F[] = { 0x00054, 0x00000 }; +static unsigned int de1D580[] = { 0x00055, 0x00000 }; +static unsigned int de1D581[] = { 0x00056, 0x00000 }; +static unsigned int de1D582[] = { 0x00057, 0x00000 }; +static unsigned int de1D583[] = { 0x00058, 0x00000 }; +static unsigned int de1D584[] = { 0x00059, 0x00000 }; +static unsigned int de1D585[] = { 0x0005A, 0x00000 }; +static unsigned int de1D586[] = { 0x00061, 0x00000 }; +static unsigned int de1D587[] = { 0x00062, 0x00000 }; +static unsigned int de1D588[] = { 0x00063, 0x00000 }; +static unsigned int de1D589[] = { 0x00064, 0x00000 }; +static unsigned int de1D58A[] = { 0x00065, 0x00000 }; +static unsigned int de1D58B[] = { 0x00066, 0x00000 }; +static unsigned int de1D58C[] = { 0x00067, 0x00000 }; +static unsigned int de1D58D[] = { 0x00068, 0x00000 }; +static unsigned int de1D58E[] = { 0x00069, 0x00000 }; +static unsigned int de1D58F[] = { 0x0006A, 0x00000 }; +static unsigned int de1D590[] = { 0x0006B, 0x00000 }; +static unsigned int de1D591[] = { 0x0006C, 0x00000 }; +static unsigned int de1D592[] = { 0x0006D, 0x00000 }; +static unsigned int de1D593[] = { 0x0006E, 0x00000 }; +static unsigned int de1D594[] = { 0x0006F, 0x00000 }; +static unsigned int de1D595[] = { 0x00070, 0x00000 }; +static unsigned int de1D596[] = { 0x00071, 0x00000 }; +static unsigned int de1D597[] = { 0x00072, 0x00000 }; +static unsigned int de1D598[] = { 0x00073, 0x00000 }; +static unsigned int de1D599[] = { 0x00074, 0x00000 }; +static unsigned int de1D59A[] = { 0x00075, 0x00000 }; +static unsigned int de1D59B[] = { 0x00076, 0x00000 }; +static unsigned int de1D59C[] = { 0x00077, 0x00000 }; +static unsigned int de1D59D[] = { 0x00078, 0x00000 }; +static unsigned int de1D59E[] = { 0x00079, 0x00000 }; +static unsigned int de1D59F[] = { 0x0007A, 0x00000 }; +static unsigned int de1D5A0[] = { 0x00041, 0x00000 }; +static unsigned int de1D5A1[] = { 0x00042, 0x00000 }; +static unsigned int de1D5A2[] = { 0x00043, 0x00000 }; +static unsigned int de1D5A3[] = { 0x00044, 0x00000 }; +static unsigned int de1D5A4[] = { 0x00045, 0x00000 }; +static unsigned int de1D5A5[] = { 0x00046, 0x00000 }; +static unsigned int de1D5A6[] = { 0x00047, 0x00000 }; +static unsigned int de1D5A7[] = { 0x00048, 0x00000 }; +static unsigned int de1D5A8[] = { 0x00049, 0x00000 }; +static unsigned int de1D5A9[] = { 0x0004A, 0x00000 }; +static unsigned int de1D5AA[] = { 0x0004B, 0x00000 }; +static unsigned int de1D5AB[] = { 0x0004C, 0x00000 }; +static unsigned int de1D5AC[] = { 0x0004D, 0x00000 }; +static unsigned int de1D5AD[] = { 0x0004E, 0x00000 }; +static unsigned int de1D5AE[] = { 0x0004F, 0x00000 }; +static unsigned int de1D5AF[] = { 0x00050, 0x00000 }; +static unsigned int de1D5B0[] = { 0x00051, 0x00000 }; +static unsigned int de1D5B1[] = { 0x00052, 0x00000 }; +static unsigned int de1D5B2[] = { 0x00053, 0x00000 }; +static unsigned int de1D5B3[] = { 0x00054, 0x00000 }; +static unsigned int de1D5B4[] = { 0x00055, 0x00000 }; +static unsigned int de1D5B5[] = { 0x00056, 0x00000 }; +static unsigned int de1D5B6[] = { 0x00057, 0x00000 }; +static unsigned int de1D5B7[] = { 0x00058, 0x00000 }; +static unsigned int de1D5B8[] = { 0x00059, 0x00000 }; +static unsigned int de1D5B9[] = { 0x0005A, 0x00000 }; +static unsigned int de1D5BA[] = { 0x00061, 0x00000 }; +static unsigned int de1D5BB[] = { 0x00062, 0x00000 }; +static unsigned int de1D5BC[] = { 0x00063, 0x00000 }; +static unsigned int de1D5BD[] = { 0x00064, 0x00000 }; +static unsigned int de1D5BE[] = { 0x00065, 0x00000 }; +static unsigned int de1D5BF[] = { 0x00066, 0x00000 }; +static unsigned int de1D5C0[] = { 0x00067, 0x00000 }; +static unsigned int de1D5C1[] = { 0x00068, 0x00000 }; +static unsigned int de1D5C2[] = { 0x00069, 0x00000 }; +static unsigned int de1D5C3[] = { 0x0006A, 0x00000 }; +static unsigned int de1D5C4[] = { 0x0006B, 0x00000 }; +static unsigned int de1D5C5[] = { 0x0006C, 0x00000 }; +static unsigned int de1D5C6[] = { 0x0006D, 0x00000 }; +static unsigned int de1D5C7[] = { 0x0006E, 0x00000 }; +static unsigned int de1D5C8[] = { 0x0006F, 0x00000 }; +static unsigned int de1D5C9[] = { 0x00070, 0x00000 }; +static unsigned int de1D5CA[] = { 0x00071, 0x00000 }; +static unsigned int de1D5CB[] = { 0x00072, 0x00000 }; +static unsigned int de1D5CC[] = { 0x00073, 0x00000 }; +static unsigned int de1D5CD[] = { 0x00074, 0x00000 }; +static unsigned int de1D5CE[] = { 0x00075, 0x00000 }; +static unsigned int de1D5CF[] = { 0x00076, 0x00000 }; +static unsigned int de1D5D0[] = { 0x00077, 0x00000 }; +static unsigned int de1D5D1[] = { 0x00078, 0x00000 }; +static unsigned int de1D5D2[] = { 0x00079, 0x00000 }; +static unsigned int de1D5D3[] = { 0x0007A, 0x00000 }; +static unsigned int de1D5D4[] = { 0x00041, 0x00000 }; +static unsigned int de1D5D5[] = { 0x00042, 0x00000 }; +static unsigned int de1D5D6[] = { 0x00043, 0x00000 }; +static unsigned int de1D5D7[] = { 0x00044, 0x00000 }; +static unsigned int de1D5D8[] = { 0x00045, 0x00000 }; +static unsigned int de1D5D9[] = { 0x00046, 0x00000 }; +static unsigned int de1D5DA[] = { 0x00047, 0x00000 }; +static unsigned int de1D5DB[] = { 0x00048, 0x00000 }; +static unsigned int de1D5DC[] = { 0x00049, 0x00000 }; +static unsigned int de1D5DD[] = { 0x0004A, 0x00000 }; +static unsigned int de1D5DE[] = { 0x0004B, 0x00000 }; +static unsigned int de1D5DF[] = { 0x0004C, 0x00000 }; +static unsigned int de1D5E0[] = { 0x0004D, 0x00000 }; +static unsigned int de1D5E1[] = { 0x0004E, 0x00000 }; +static unsigned int de1D5E2[] = { 0x0004F, 0x00000 }; +static unsigned int de1D5E3[] = { 0x00050, 0x00000 }; +static unsigned int de1D5E4[] = { 0x00051, 0x00000 }; +static unsigned int de1D5E5[] = { 0x00052, 0x00000 }; +static unsigned int de1D5E6[] = { 0x00053, 0x00000 }; +static unsigned int de1D5E7[] = { 0x00054, 0x00000 }; +static unsigned int de1D5E8[] = { 0x00055, 0x00000 }; +static unsigned int de1D5E9[] = { 0x00056, 0x00000 }; +static unsigned int de1D5EA[] = { 0x00057, 0x00000 }; +static unsigned int de1D5EB[] = { 0x00058, 0x00000 }; +static unsigned int de1D5EC[] = { 0x00059, 0x00000 }; +static unsigned int de1D5ED[] = { 0x0005A, 0x00000 }; +static unsigned int de1D5EE[] = { 0x00061, 0x00000 }; +static unsigned int de1D5EF[] = { 0x00062, 0x00000 }; +static unsigned int de1D5F0[] = { 0x00063, 0x00000 }; +static unsigned int de1D5F1[] = { 0x00064, 0x00000 }; +static unsigned int de1D5F2[] = { 0x00065, 0x00000 }; +static unsigned int de1D5F3[] = { 0x00066, 0x00000 }; +static unsigned int de1D5F4[] = { 0x00067, 0x00000 }; +static unsigned int de1D5F5[] = { 0x00068, 0x00000 }; +static unsigned int de1D5F6[] = { 0x00069, 0x00000 }; +static unsigned int de1D5F7[] = { 0x0006A, 0x00000 }; +static unsigned int de1D5F8[] = { 0x0006B, 0x00000 }; +static unsigned int de1D5F9[] = { 0x0006C, 0x00000 }; +static unsigned int de1D5FA[] = { 0x0006D, 0x00000 }; +static unsigned int de1D5FB[] = { 0x0006E, 0x00000 }; +static unsigned int de1D5FC[] = { 0x0006F, 0x00000 }; +static unsigned int de1D5FD[] = { 0x00070, 0x00000 }; +static unsigned int de1D5FE[] = { 0x00071, 0x00000 }; +static unsigned int de1D5FF[] = { 0x00072, 0x00000 }; +static unsigned int de1D600[] = { 0x00073, 0x00000 }; +static unsigned int de1D601[] = { 0x00074, 0x00000 }; +static unsigned int de1D602[] = { 0x00075, 0x00000 }; +static unsigned int de1D603[] = { 0x00076, 0x00000 }; +static unsigned int de1D604[] = { 0x00077, 0x00000 }; +static unsigned int de1D605[] = { 0x00078, 0x00000 }; +static unsigned int de1D606[] = { 0x00079, 0x00000 }; +static unsigned int de1D607[] = { 0x0007A, 0x00000 }; +static unsigned int de1D608[] = { 0x00041, 0x00000 }; +static unsigned int de1D609[] = { 0x00042, 0x00000 }; +static unsigned int de1D60A[] = { 0x00043, 0x00000 }; +static unsigned int de1D60B[] = { 0x00044, 0x00000 }; +static unsigned int de1D60C[] = { 0x00045, 0x00000 }; +static unsigned int de1D60D[] = { 0x00046, 0x00000 }; +static unsigned int de1D60E[] = { 0x00047, 0x00000 }; +static unsigned int de1D60F[] = { 0x00048, 0x00000 }; +static unsigned int de1D610[] = { 0x00049, 0x00000 }; +static unsigned int de1D611[] = { 0x0004A, 0x00000 }; +static unsigned int de1D612[] = { 0x0004B, 0x00000 }; +static unsigned int de1D613[] = { 0x0004C, 0x00000 }; +static unsigned int de1D614[] = { 0x0004D, 0x00000 }; +static unsigned int de1D615[] = { 0x0004E, 0x00000 }; +static unsigned int de1D616[] = { 0x0004F, 0x00000 }; +static unsigned int de1D617[] = { 0x00050, 0x00000 }; +static unsigned int de1D618[] = { 0x00051, 0x00000 }; +static unsigned int de1D619[] = { 0x00052, 0x00000 }; +static unsigned int de1D61A[] = { 0x00053, 0x00000 }; +static unsigned int de1D61B[] = { 0x00054, 0x00000 }; +static unsigned int de1D61C[] = { 0x00055, 0x00000 }; +static unsigned int de1D61D[] = { 0x00056, 0x00000 }; +static unsigned int de1D61E[] = { 0x00057, 0x00000 }; +static unsigned int de1D61F[] = { 0x00058, 0x00000 }; +static unsigned int de1D620[] = { 0x00059, 0x00000 }; +static unsigned int de1D621[] = { 0x0005A, 0x00000 }; +static unsigned int de1D622[] = { 0x00061, 0x00000 }; +static unsigned int de1D623[] = { 0x00062, 0x00000 }; +static unsigned int de1D624[] = { 0x00063, 0x00000 }; +static unsigned int de1D625[] = { 0x00064, 0x00000 }; +static unsigned int de1D626[] = { 0x00065, 0x00000 }; +static unsigned int de1D627[] = { 0x00066, 0x00000 }; +static unsigned int de1D628[] = { 0x00067, 0x00000 }; +static unsigned int de1D629[] = { 0x00068, 0x00000 }; +static unsigned int de1D62A[] = { 0x00069, 0x00000 }; +static unsigned int de1D62B[] = { 0x0006A, 0x00000 }; +static unsigned int de1D62C[] = { 0x0006B, 0x00000 }; +static unsigned int de1D62D[] = { 0x0006C, 0x00000 }; +static unsigned int de1D62E[] = { 0x0006D, 0x00000 }; +static unsigned int de1D62F[] = { 0x0006E, 0x00000 }; +static unsigned int de1D630[] = { 0x0006F, 0x00000 }; +static unsigned int de1D631[] = { 0x00070, 0x00000 }; +static unsigned int de1D632[] = { 0x00071, 0x00000 }; +static unsigned int de1D633[] = { 0x00072, 0x00000 }; +static unsigned int de1D634[] = { 0x00073, 0x00000 }; +static unsigned int de1D635[] = { 0x00074, 0x00000 }; +static unsigned int de1D636[] = { 0x00075, 0x00000 }; +static unsigned int de1D637[] = { 0x00076, 0x00000 }; +static unsigned int de1D638[] = { 0x00077, 0x00000 }; +static unsigned int de1D639[] = { 0x00078, 0x00000 }; +static unsigned int de1D63A[] = { 0x00079, 0x00000 }; +static unsigned int de1D63B[] = { 0x0007A, 0x00000 }; +static unsigned int de1D63C[] = { 0x00041, 0x00000 }; +static unsigned int de1D63D[] = { 0x00042, 0x00000 }; +static unsigned int de1D63E[] = { 0x00043, 0x00000 }; +static unsigned int de1D63F[] = { 0x00044, 0x00000 }; +static unsigned int de1D640[] = { 0x00045, 0x00000 }; +static unsigned int de1D641[] = { 0x00046, 0x00000 }; +static unsigned int de1D642[] = { 0x00047, 0x00000 }; +static unsigned int de1D643[] = { 0x00048, 0x00000 }; +static unsigned int de1D644[] = { 0x00049, 0x00000 }; +static unsigned int de1D645[] = { 0x0004A, 0x00000 }; +static unsigned int de1D646[] = { 0x0004B, 0x00000 }; +static unsigned int de1D647[] = { 0x0004C, 0x00000 }; +static unsigned int de1D648[] = { 0x0004D, 0x00000 }; +static unsigned int de1D649[] = { 0x0004E, 0x00000 }; +static unsigned int de1D64A[] = { 0x0004F, 0x00000 }; +static unsigned int de1D64B[] = { 0x00050, 0x00000 }; +static unsigned int de1D64C[] = { 0x00051, 0x00000 }; +static unsigned int de1D64D[] = { 0x00052, 0x00000 }; +static unsigned int de1D64E[] = { 0x00053, 0x00000 }; +static unsigned int de1D64F[] = { 0x00054, 0x00000 }; +static unsigned int de1D650[] = { 0x00055, 0x00000 }; +static unsigned int de1D651[] = { 0x00056, 0x00000 }; +static unsigned int de1D652[] = { 0x00057, 0x00000 }; +static unsigned int de1D653[] = { 0x00058, 0x00000 }; +static unsigned int de1D654[] = { 0x00059, 0x00000 }; +static unsigned int de1D655[] = { 0x0005A, 0x00000 }; +static unsigned int de1D656[] = { 0x00061, 0x00000 }; +static unsigned int de1D657[] = { 0x00062, 0x00000 }; +static unsigned int de1D658[] = { 0x00063, 0x00000 }; +static unsigned int de1D659[] = { 0x00064, 0x00000 }; +static unsigned int de1D65A[] = { 0x00065, 0x00000 }; +static unsigned int de1D65B[] = { 0x00066, 0x00000 }; +static unsigned int de1D65C[] = { 0x00067, 0x00000 }; +static unsigned int de1D65D[] = { 0x00068, 0x00000 }; +static unsigned int de1D65E[] = { 0x00069, 0x00000 }; +static unsigned int de1D65F[] = { 0x0006A, 0x00000 }; +static unsigned int de1D660[] = { 0x0006B, 0x00000 }; +static unsigned int de1D661[] = { 0x0006C, 0x00000 }; +static unsigned int de1D662[] = { 0x0006D, 0x00000 }; +static unsigned int de1D663[] = { 0x0006E, 0x00000 }; +static unsigned int de1D664[] = { 0x0006F, 0x00000 }; +static unsigned int de1D665[] = { 0x00070, 0x00000 }; +static unsigned int de1D666[] = { 0x00071, 0x00000 }; +static unsigned int de1D667[] = { 0x00072, 0x00000 }; +static unsigned int de1D668[] = { 0x00073, 0x00000 }; +static unsigned int de1D669[] = { 0x00074, 0x00000 }; +static unsigned int de1D66A[] = { 0x00075, 0x00000 }; +static unsigned int de1D66B[] = { 0x00076, 0x00000 }; +static unsigned int de1D66C[] = { 0x00077, 0x00000 }; +static unsigned int de1D66D[] = { 0x00078, 0x00000 }; +static unsigned int de1D66E[] = { 0x00079, 0x00000 }; +static unsigned int de1D66F[] = { 0x0007A, 0x00000 }; +static unsigned int de1D670[] = { 0x00041, 0x00000 }; +static unsigned int de1D671[] = { 0x00042, 0x00000 }; +static unsigned int de1D672[] = { 0x00043, 0x00000 }; +static unsigned int de1D673[] = { 0x00044, 0x00000 }; +static unsigned int de1D674[] = { 0x00045, 0x00000 }; +static unsigned int de1D675[] = { 0x00046, 0x00000 }; +static unsigned int de1D676[] = { 0x00047, 0x00000 }; +static unsigned int de1D677[] = { 0x00048, 0x00000 }; +static unsigned int de1D678[] = { 0x00049, 0x00000 }; +static unsigned int de1D679[] = { 0x0004A, 0x00000 }; +static unsigned int de1D67A[] = { 0x0004B, 0x00000 }; +static unsigned int de1D67B[] = { 0x0004C, 0x00000 }; +static unsigned int de1D67C[] = { 0x0004D, 0x00000 }; +static unsigned int de1D67D[] = { 0x0004E, 0x00000 }; +static unsigned int de1D67E[] = { 0x0004F, 0x00000 }; +static unsigned int de1D67F[] = { 0x00050, 0x00000 }; +static unsigned int de1D680[] = { 0x00051, 0x00000 }; +static unsigned int de1D681[] = { 0x00052, 0x00000 }; +static unsigned int de1D682[] = { 0x00053, 0x00000 }; +static unsigned int de1D683[] = { 0x00054, 0x00000 }; +static unsigned int de1D684[] = { 0x00055, 0x00000 }; +static unsigned int de1D685[] = { 0x00056, 0x00000 }; +static unsigned int de1D686[] = { 0x00057, 0x00000 }; +static unsigned int de1D687[] = { 0x00058, 0x00000 }; +static unsigned int de1D688[] = { 0x00059, 0x00000 }; +static unsigned int de1D689[] = { 0x0005A, 0x00000 }; +static unsigned int de1D68A[] = { 0x00061, 0x00000 }; +static unsigned int de1D68B[] = { 0x00062, 0x00000 }; +static unsigned int de1D68C[] = { 0x00063, 0x00000 }; +static unsigned int de1D68D[] = { 0x00064, 0x00000 }; +static unsigned int de1D68E[] = { 0x00065, 0x00000 }; +static unsigned int de1D68F[] = { 0x00066, 0x00000 }; +static unsigned int de1D690[] = { 0x00067, 0x00000 }; +static unsigned int de1D691[] = { 0x00068, 0x00000 }; +static unsigned int de1D692[] = { 0x00069, 0x00000 }; +static unsigned int de1D693[] = { 0x0006A, 0x00000 }; +static unsigned int de1D694[] = { 0x0006B, 0x00000 }; +static unsigned int de1D695[] = { 0x0006C, 0x00000 }; +static unsigned int de1D696[] = { 0x0006D, 0x00000 }; +static unsigned int de1D697[] = { 0x0006E, 0x00000 }; +static unsigned int de1D698[] = { 0x0006F, 0x00000 }; +static unsigned int de1D699[] = { 0x00070, 0x00000 }; +static unsigned int de1D69A[] = { 0x00071, 0x00000 }; +static unsigned int de1D69B[] = { 0x00072, 0x00000 }; +static unsigned int de1D69C[] = { 0x00073, 0x00000 }; +static unsigned int de1D69D[] = { 0x00074, 0x00000 }; +static unsigned int de1D69E[] = { 0x00075, 0x00000 }; +static unsigned int de1D69F[] = { 0x00076, 0x00000 }; +static unsigned int de1D6A0[] = { 0x00077, 0x00000 }; +static unsigned int de1D6A1[] = { 0x00078, 0x00000 }; +static unsigned int de1D6A2[] = { 0x00079, 0x00000 }; +static unsigned int de1D6A3[] = { 0x0007A, 0x00000 }; +static unsigned int de1D6A4[] = { 0x00131, 0x00000 }; +static unsigned int de1D6A5[] = { 0x00237, 0x00000 }; +static unsigned int de1D6A8[] = { 0x00391, 0x00000 }; +static unsigned int de1D6A9[] = { 0x00392, 0x00000 }; +static unsigned int de1D6AA[] = { 0x00393, 0x00000 }; +static unsigned int de1D6AB[] = { 0x00394, 0x00000 }; +static unsigned int de1D6AC[] = { 0x00395, 0x00000 }; +static unsigned int de1D6AD[] = { 0x00396, 0x00000 }; +static unsigned int de1D6AE[] = { 0x00397, 0x00000 }; +static unsigned int de1D6AF[] = { 0x00398, 0x00000 }; +static unsigned int de1D6B0[] = { 0x00399, 0x00000 }; +static unsigned int de1D6B1[] = { 0x0039A, 0x00000 }; +static unsigned int de1D6B2[] = { 0x0039B, 0x00000 }; +static unsigned int de1D6B3[] = { 0x0039C, 0x00000 }; +static unsigned int de1D6B4[] = { 0x0039D, 0x00000 }; +static unsigned int de1D6B5[] = { 0x0039E, 0x00000 }; +static unsigned int de1D6B6[] = { 0x0039F, 0x00000 }; +static unsigned int de1D6B7[] = { 0x003A0, 0x00000 }; +static unsigned int de1D6B8[] = { 0x003A1, 0x00000 }; +static unsigned int de1D6B9[] = { 0x003F4, 0x00000 }; +static unsigned int de1D6BA[] = { 0x003A3, 0x00000 }; +static unsigned int de1D6BB[] = { 0x003A4, 0x00000 }; +static unsigned int de1D6BC[] = { 0x003A5, 0x00000 }; +static unsigned int de1D6BD[] = { 0x003A6, 0x00000 }; +static unsigned int de1D6BE[] = { 0x003A7, 0x00000 }; +static unsigned int de1D6BF[] = { 0x003A8, 0x00000 }; +static unsigned int de1D6C0[] = { 0x003A9, 0x00000 }; +static unsigned int de1D6C1[] = { 0x02207, 0x00000 }; +static unsigned int de1D6C2[] = { 0x003B1, 0x00000 }; +static unsigned int de1D6C3[] = { 0x003B2, 0x00000 }; +static unsigned int de1D6C4[] = { 0x003B3, 0x00000 }; +static unsigned int de1D6C5[] = { 0x003B4, 0x00000 }; +static unsigned int de1D6C6[] = { 0x003B5, 0x00000 }; +static unsigned int de1D6C7[] = { 0x003B6, 0x00000 }; +static unsigned int de1D6C8[] = { 0x003B7, 0x00000 }; +static unsigned int de1D6C9[] = { 0x003B8, 0x00000 }; +static unsigned int de1D6CA[] = { 0x003B9, 0x00000 }; +static unsigned int de1D6CB[] = { 0x003BA, 0x00000 }; +static unsigned int de1D6CC[] = { 0x003BB, 0x00000 }; +static unsigned int de1D6CD[] = { 0x003BC, 0x00000 }; +static unsigned int de1D6CE[] = { 0x003BD, 0x00000 }; +static unsigned int de1D6CF[] = { 0x003BE, 0x00000 }; +static unsigned int de1D6D0[] = { 0x003BF, 0x00000 }; +static unsigned int de1D6D1[] = { 0x003C0, 0x00000 }; +static unsigned int de1D6D2[] = { 0x003C1, 0x00000 }; +static unsigned int de1D6D3[] = { 0x003C2, 0x00000 }; +static unsigned int de1D6D4[] = { 0x003C3, 0x00000 }; +static unsigned int de1D6D5[] = { 0x003C4, 0x00000 }; +static unsigned int de1D6D6[] = { 0x003C5, 0x00000 }; +static unsigned int de1D6D7[] = { 0x003C6, 0x00000 }; +static unsigned int de1D6D8[] = { 0x003C7, 0x00000 }; +static unsigned int de1D6D9[] = { 0x003C8, 0x00000 }; +static unsigned int de1D6DA[] = { 0x003C9, 0x00000 }; +static unsigned int de1D6DB[] = { 0x02202, 0x00000 }; +static unsigned int de1D6DC[] = { 0x003F5, 0x00000 }; +static unsigned int de1D6DD[] = { 0x003D1, 0x00000 }; +static unsigned int de1D6DE[] = { 0x003F0, 0x00000 }; +static unsigned int de1D6DF[] = { 0x003D5, 0x00000 }; +static unsigned int de1D6E0[] = { 0x003F1, 0x00000 }; +static unsigned int de1D6E1[] = { 0x003D6, 0x00000 }; +static unsigned int de1D6E2[] = { 0x00391, 0x00000 }; +static unsigned int de1D6E3[] = { 0x00392, 0x00000 }; +static unsigned int de1D6E4[] = { 0x00393, 0x00000 }; +static unsigned int de1D6E5[] = { 0x00394, 0x00000 }; +static unsigned int de1D6E6[] = { 0x00395, 0x00000 }; +static unsigned int de1D6E7[] = { 0x00396, 0x00000 }; +static unsigned int de1D6E8[] = { 0x00397, 0x00000 }; +static unsigned int de1D6E9[] = { 0x00398, 0x00000 }; +static unsigned int de1D6EA[] = { 0x00399, 0x00000 }; +static unsigned int de1D6EB[] = { 0x0039A, 0x00000 }; +static unsigned int de1D6EC[] = { 0x0039B, 0x00000 }; +static unsigned int de1D6ED[] = { 0x0039C, 0x00000 }; +static unsigned int de1D6EE[] = { 0x0039D, 0x00000 }; +static unsigned int de1D6EF[] = { 0x0039E, 0x00000 }; +static unsigned int de1D6F0[] = { 0x0039F, 0x00000 }; +static unsigned int de1D6F1[] = { 0x003A0, 0x00000 }; +static unsigned int de1D6F2[] = { 0x003A1, 0x00000 }; +static unsigned int de1D6F3[] = { 0x003F4, 0x00000 }; +static unsigned int de1D6F4[] = { 0x003A3, 0x00000 }; +static unsigned int de1D6F5[] = { 0x003A4, 0x00000 }; +static unsigned int de1D6F6[] = { 0x003A5, 0x00000 }; +static unsigned int de1D6F7[] = { 0x003A6, 0x00000 }; +static unsigned int de1D6F8[] = { 0x003A7, 0x00000 }; +static unsigned int de1D6F9[] = { 0x003A8, 0x00000 }; +static unsigned int de1D6FA[] = { 0x003A9, 0x00000 }; +static unsigned int de1D6FB[] = { 0x02207, 0x00000 }; +static unsigned int de1D6FC[] = { 0x003B1, 0x00000 }; +static unsigned int de1D6FD[] = { 0x003B2, 0x00000 }; +static unsigned int de1D6FE[] = { 0x003B3, 0x00000 }; +static unsigned int de1D6FF[] = { 0x003B4, 0x00000 }; +static unsigned int de1D700[] = { 0x003B5, 0x00000 }; +static unsigned int de1D701[] = { 0x003B6, 0x00000 }; +static unsigned int de1D702[] = { 0x003B7, 0x00000 }; +static unsigned int de1D703[] = { 0x003B8, 0x00000 }; +static unsigned int de1D704[] = { 0x003B9, 0x00000 }; +static unsigned int de1D705[] = { 0x003BA, 0x00000 }; +static unsigned int de1D706[] = { 0x003BB, 0x00000 }; +static unsigned int de1D707[] = { 0x003BC, 0x00000 }; +static unsigned int de1D708[] = { 0x003BD, 0x00000 }; +static unsigned int de1D709[] = { 0x003BE, 0x00000 }; +static unsigned int de1D70A[] = { 0x003BF, 0x00000 }; +static unsigned int de1D70B[] = { 0x003C0, 0x00000 }; +static unsigned int de1D70C[] = { 0x003C1, 0x00000 }; +static unsigned int de1D70D[] = { 0x003C2, 0x00000 }; +static unsigned int de1D70E[] = { 0x003C3, 0x00000 }; +static unsigned int de1D70F[] = { 0x003C4, 0x00000 }; +static unsigned int de1D710[] = { 0x003C5, 0x00000 }; +static unsigned int de1D711[] = { 0x003C6, 0x00000 }; +static unsigned int de1D712[] = { 0x003C7, 0x00000 }; +static unsigned int de1D713[] = { 0x003C8, 0x00000 }; +static unsigned int de1D714[] = { 0x003C9, 0x00000 }; +static unsigned int de1D715[] = { 0x02202, 0x00000 }; +static unsigned int de1D716[] = { 0x003F5, 0x00000 }; +static unsigned int de1D717[] = { 0x003D1, 0x00000 }; +static unsigned int de1D718[] = { 0x003F0, 0x00000 }; +static unsigned int de1D719[] = { 0x003D5, 0x00000 }; +static unsigned int de1D71A[] = { 0x003F1, 0x00000 }; +static unsigned int de1D71B[] = { 0x003D6, 0x00000 }; +static unsigned int de1D71C[] = { 0x00391, 0x00000 }; +static unsigned int de1D71D[] = { 0x00392, 0x00000 }; +static unsigned int de1D71E[] = { 0x00393, 0x00000 }; +static unsigned int de1D71F[] = { 0x00394, 0x00000 }; +static unsigned int de1D720[] = { 0x00395, 0x00000 }; +static unsigned int de1D721[] = { 0x00396, 0x00000 }; +static unsigned int de1D722[] = { 0x00397, 0x00000 }; +static unsigned int de1D723[] = { 0x00398, 0x00000 }; +static unsigned int de1D724[] = { 0x00399, 0x00000 }; +static unsigned int de1D725[] = { 0x0039A, 0x00000 }; +static unsigned int de1D726[] = { 0x0039B, 0x00000 }; +static unsigned int de1D727[] = { 0x0039C, 0x00000 }; +static unsigned int de1D728[] = { 0x0039D, 0x00000 }; +static unsigned int de1D729[] = { 0x0039E, 0x00000 }; +static unsigned int de1D72A[] = { 0x0039F, 0x00000 }; +static unsigned int de1D72B[] = { 0x003A0, 0x00000 }; +static unsigned int de1D72C[] = { 0x003A1, 0x00000 }; +static unsigned int de1D72D[] = { 0x003F4, 0x00000 }; +static unsigned int de1D72E[] = { 0x003A3, 0x00000 }; +static unsigned int de1D72F[] = { 0x003A4, 0x00000 }; +static unsigned int de1D730[] = { 0x003A5, 0x00000 }; +static unsigned int de1D731[] = { 0x003A6, 0x00000 }; +static unsigned int de1D732[] = { 0x003A7, 0x00000 }; +static unsigned int de1D733[] = { 0x003A8, 0x00000 }; +static unsigned int de1D734[] = { 0x003A9, 0x00000 }; +static unsigned int de1D735[] = { 0x02207, 0x00000 }; +static unsigned int de1D736[] = { 0x003B1, 0x00000 }; +static unsigned int de1D737[] = { 0x003B2, 0x00000 }; +static unsigned int de1D738[] = { 0x003B3, 0x00000 }; +static unsigned int de1D739[] = { 0x003B4, 0x00000 }; +static unsigned int de1D73A[] = { 0x003B5, 0x00000 }; +static unsigned int de1D73B[] = { 0x003B6, 0x00000 }; +static unsigned int de1D73C[] = { 0x003B7, 0x00000 }; +static unsigned int de1D73D[] = { 0x003B8, 0x00000 }; +static unsigned int de1D73E[] = { 0x003B9, 0x00000 }; +static unsigned int de1D73F[] = { 0x003BA, 0x00000 }; +static unsigned int de1D740[] = { 0x003BB, 0x00000 }; +static unsigned int de1D741[] = { 0x003BC, 0x00000 }; +static unsigned int de1D742[] = { 0x003BD, 0x00000 }; +static unsigned int de1D743[] = { 0x003BE, 0x00000 }; +static unsigned int de1D744[] = { 0x003BF, 0x00000 }; +static unsigned int de1D745[] = { 0x003C0, 0x00000 }; +static unsigned int de1D746[] = { 0x003C1, 0x00000 }; +static unsigned int de1D747[] = { 0x003C2, 0x00000 }; +static unsigned int de1D748[] = { 0x003C3, 0x00000 }; +static unsigned int de1D749[] = { 0x003C4, 0x00000 }; +static unsigned int de1D74A[] = { 0x003C5, 0x00000 }; +static unsigned int de1D74B[] = { 0x003C6, 0x00000 }; +static unsigned int de1D74C[] = { 0x003C7, 0x00000 }; +static unsigned int de1D74D[] = { 0x003C8, 0x00000 }; +static unsigned int de1D74E[] = { 0x003C9, 0x00000 }; +static unsigned int de1D74F[] = { 0x02202, 0x00000 }; +static unsigned int de1D750[] = { 0x003F5, 0x00000 }; +static unsigned int de1D751[] = { 0x003D1, 0x00000 }; +static unsigned int de1D752[] = { 0x003F0, 0x00000 }; +static unsigned int de1D753[] = { 0x003D5, 0x00000 }; +static unsigned int de1D754[] = { 0x003F1, 0x00000 }; +static unsigned int de1D755[] = { 0x003D6, 0x00000 }; +static unsigned int de1D756[] = { 0x00391, 0x00000 }; +static unsigned int de1D757[] = { 0x00392, 0x00000 }; +static unsigned int de1D758[] = { 0x00393, 0x00000 }; +static unsigned int de1D759[] = { 0x00394, 0x00000 }; +static unsigned int de1D75A[] = { 0x00395, 0x00000 }; +static unsigned int de1D75B[] = { 0x00396, 0x00000 }; +static unsigned int de1D75C[] = { 0x00397, 0x00000 }; +static unsigned int de1D75D[] = { 0x00398, 0x00000 }; +static unsigned int de1D75E[] = { 0x00399, 0x00000 }; +static unsigned int de1D75F[] = { 0x0039A, 0x00000 }; +static unsigned int de1D760[] = { 0x0039B, 0x00000 }; +static unsigned int de1D761[] = { 0x0039C, 0x00000 }; +static unsigned int de1D762[] = { 0x0039D, 0x00000 }; +static unsigned int de1D763[] = { 0x0039E, 0x00000 }; +static unsigned int de1D764[] = { 0x0039F, 0x00000 }; +static unsigned int de1D765[] = { 0x003A0, 0x00000 }; +static unsigned int de1D766[] = { 0x003A1, 0x00000 }; +static unsigned int de1D767[] = { 0x003F4, 0x00000 }; +static unsigned int de1D768[] = { 0x003A3, 0x00000 }; +static unsigned int de1D769[] = { 0x003A4, 0x00000 }; +static unsigned int de1D76A[] = { 0x003A5, 0x00000 }; +static unsigned int de1D76B[] = { 0x003A6, 0x00000 }; +static unsigned int de1D76C[] = { 0x003A7, 0x00000 }; +static unsigned int de1D76D[] = { 0x003A8, 0x00000 }; +static unsigned int de1D76E[] = { 0x003A9, 0x00000 }; +static unsigned int de1D76F[] = { 0x02207, 0x00000 }; +static unsigned int de1D770[] = { 0x003B1, 0x00000 }; +static unsigned int de1D771[] = { 0x003B2, 0x00000 }; +static unsigned int de1D772[] = { 0x003B3, 0x00000 }; +static unsigned int de1D773[] = { 0x003B4, 0x00000 }; +static unsigned int de1D774[] = { 0x003B5, 0x00000 }; +static unsigned int de1D775[] = { 0x003B6, 0x00000 }; +static unsigned int de1D776[] = { 0x003B7, 0x00000 }; +static unsigned int de1D777[] = { 0x003B8, 0x00000 }; +static unsigned int de1D778[] = { 0x003B9, 0x00000 }; +static unsigned int de1D779[] = { 0x003BA, 0x00000 }; +static unsigned int de1D77A[] = { 0x003BB, 0x00000 }; +static unsigned int de1D77B[] = { 0x003BC, 0x00000 }; +static unsigned int de1D77C[] = { 0x003BD, 0x00000 }; +static unsigned int de1D77D[] = { 0x003BE, 0x00000 }; +static unsigned int de1D77E[] = { 0x003BF, 0x00000 }; +static unsigned int de1D77F[] = { 0x003C0, 0x00000 }; +static unsigned int de1D780[] = { 0x003C1, 0x00000 }; +static unsigned int de1D781[] = { 0x003C2, 0x00000 }; +static unsigned int de1D782[] = { 0x003C3, 0x00000 }; +static unsigned int de1D783[] = { 0x003C4, 0x00000 }; +static unsigned int de1D784[] = { 0x003C5, 0x00000 }; +static unsigned int de1D785[] = { 0x003C6, 0x00000 }; +static unsigned int de1D786[] = { 0x003C7, 0x00000 }; +static unsigned int de1D787[] = { 0x003C8, 0x00000 }; +static unsigned int de1D788[] = { 0x003C9, 0x00000 }; +static unsigned int de1D789[] = { 0x02202, 0x00000 }; +static unsigned int de1D78A[] = { 0x003F5, 0x00000 }; +static unsigned int de1D78B[] = { 0x003D1, 0x00000 }; +static unsigned int de1D78C[] = { 0x003F0, 0x00000 }; +static unsigned int de1D78D[] = { 0x003D5, 0x00000 }; +static unsigned int de1D78E[] = { 0x003F1, 0x00000 }; +static unsigned int de1D78F[] = { 0x003D6, 0x00000 }; +static unsigned int de1D790[] = { 0x00391, 0x00000 }; +static unsigned int de1D791[] = { 0x00392, 0x00000 }; +static unsigned int de1D792[] = { 0x00393, 0x00000 }; +static unsigned int de1D793[] = { 0x00394, 0x00000 }; +static unsigned int de1D794[] = { 0x00395, 0x00000 }; +static unsigned int de1D795[] = { 0x00396, 0x00000 }; +static unsigned int de1D796[] = { 0x00397, 0x00000 }; +static unsigned int de1D797[] = { 0x00398, 0x00000 }; +static unsigned int de1D798[] = { 0x00399, 0x00000 }; +static unsigned int de1D799[] = { 0x0039A, 0x00000 }; +static unsigned int de1D79A[] = { 0x0039B, 0x00000 }; +static unsigned int de1D79B[] = { 0x0039C, 0x00000 }; +static unsigned int de1D79C[] = { 0x0039D, 0x00000 }; +static unsigned int de1D79D[] = { 0x0039E, 0x00000 }; +static unsigned int de1D79E[] = { 0x0039F, 0x00000 }; +static unsigned int de1D79F[] = { 0x003A0, 0x00000 }; +static unsigned int de1D7A0[] = { 0x003A1, 0x00000 }; +static unsigned int de1D7A1[] = { 0x003F4, 0x00000 }; +static unsigned int de1D7A2[] = { 0x003A3, 0x00000 }; +static unsigned int de1D7A3[] = { 0x003A4, 0x00000 }; +static unsigned int de1D7A4[] = { 0x003A5, 0x00000 }; +static unsigned int de1D7A5[] = { 0x003A6, 0x00000 }; +static unsigned int de1D7A6[] = { 0x003A7, 0x00000 }; +static unsigned int de1D7A7[] = { 0x003A8, 0x00000 }; +static unsigned int de1D7A8[] = { 0x003A9, 0x00000 }; +static unsigned int de1D7A9[] = { 0x02207, 0x00000 }; +static unsigned int de1D7AA[] = { 0x003B1, 0x00000 }; +static unsigned int de1D7AB[] = { 0x003B2, 0x00000 }; +static unsigned int de1D7AC[] = { 0x003B3, 0x00000 }; +static unsigned int de1D7AD[] = { 0x003B4, 0x00000 }; +static unsigned int de1D7AE[] = { 0x003B5, 0x00000 }; +static unsigned int de1D7AF[] = { 0x003B6, 0x00000 }; +static unsigned int de1D7B0[] = { 0x003B7, 0x00000 }; +static unsigned int de1D7B1[] = { 0x003B8, 0x00000 }; +static unsigned int de1D7B2[] = { 0x003B9, 0x00000 }; +static unsigned int de1D7B3[] = { 0x003BA, 0x00000 }; +static unsigned int de1D7B4[] = { 0x003BB, 0x00000 }; +static unsigned int de1D7B5[] = { 0x003BC, 0x00000 }; +static unsigned int de1D7B6[] = { 0x003BD, 0x00000 }; +static unsigned int de1D7B7[] = { 0x003BE, 0x00000 }; +static unsigned int de1D7B8[] = { 0x003BF, 0x00000 }; +static unsigned int de1D7B9[] = { 0x003C0, 0x00000 }; +static unsigned int de1D7BA[] = { 0x003C1, 0x00000 }; +static unsigned int de1D7BB[] = { 0x003C2, 0x00000 }; +static unsigned int de1D7BC[] = { 0x003C3, 0x00000 }; +static unsigned int de1D7BD[] = { 0x003C4, 0x00000 }; +static unsigned int de1D7BE[] = { 0x003C5, 0x00000 }; +static unsigned int de1D7BF[] = { 0x003C6, 0x00000 }; +static unsigned int de1D7C0[] = { 0x003C7, 0x00000 }; +static unsigned int de1D7C1[] = { 0x003C8, 0x00000 }; +static unsigned int de1D7C2[] = { 0x003C9, 0x00000 }; +static unsigned int de1D7C3[] = { 0x02202, 0x00000 }; +static unsigned int de1D7C4[] = { 0x003F5, 0x00000 }; +static unsigned int de1D7C5[] = { 0x003D1, 0x00000 }; +static unsigned int de1D7C6[] = { 0x003F0, 0x00000 }; +static unsigned int de1D7C7[] = { 0x003D5, 0x00000 }; +static unsigned int de1D7C8[] = { 0x003F1, 0x00000 }; +static unsigned int de1D7C9[] = { 0x003D6, 0x00000 }; +static unsigned int de1D7CE[] = { 0x00030, 0x00000 }; +static unsigned int de1D7CF[] = { 0x00031, 0x00000 }; +static unsigned int de1D7D0[] = { 0x00032, 0x00000 }; +static unsigned int de1D7D1[] = { 0x00033, 0x00000 }; +static unsigned int de1D7D2[] = { 0x00034, 0x00000 }; +static unsigned int de1D7D3[] = { 0x00035, 0x00000 }; +static unsigned int de1D7D4[] = { 0x00036, 0x00000 }; +static unsigned int de1D7D5[] = { 0x00037, 0x00000 }; +static unsigned int de1D7D6[] = { 0x00038, 0x00000 }; +static unsigned int de1D7D7[] = { 0x00039, 0x00000 }; +static unsigned int de1D7D8[] = { 0x00030, 0x00000 }; +static unsigned int de1D7D9[] = { 0x00031, 0x00000 }; +static unsigned int de1D7DA[] = { 0x00032, 0x00000 }; +static unsigned int de1D7DB[] = { 0x00033, 0x00000 }; +static unsigned int de1D7DC[] = { 0x00034, 0x00000 }; +static unsigned int de1D7DD[] = { 0x00035, 0x00000 }; +static unsigned int de1D7DE[] = { 0x00036, 0x00000 }; +static unsigned int de1D7DF[] = { 0x00037, 0x00000 }; +static unsigned int de1D7E0[] = { 0x00038, 0x00000 }; +static unsigned int de1D7E1[] = { 0x00039, 0x00000 }; +static unsigned int de1D7E2[] = { 0x00030, 0x00000 }; +static unsigned int de1D7E3[] = { 0x00031, 0x00000 }; +static unsigned int de1D7E4[] = { 0x00032, 0x00000 }; +static unsigned int de1D7E5[] = { 0x00033, 0x00000 }; +static unsigned int de1D7E6[] = { 0x00034, 0x00000 }; +static unsigned int de1D7E7[] = { 0x00035, 0x00000 }; +static unsigned int de1D7E8[] = { 0x00036, 0x00000 }; +static unsigned int de1D7E9[] = { 0x00037, 0x00000 }; +static unsigned int de1D7EA[] = { 0x00038, 0x00000 }; +static unsigned int de1D7EB[] = { 0x00039, 0x00000 }; +static unsigned int de1D7EC[] = { 0x00030, 0x00000 }; +static unsigned int de1D7ED[] = { 0x00031, 0x00000 }; +static unsigned int de1D7EE[] = { 0x00032, 0x00000 }; +static unsigned int de1D7EF[] = { 0x00033, 0x00000 }; +static unsigned int de1D7F0[] = { 0x00034, 0x00000 }; +static unsigned int de1D7F1[] = { 0x00035, 0x00000 }; +static unsigned int de1D7F2[] = { 0x00036, 0x00000 }; +static unsigned int de1D7F3[] = { 0x00037, 0x00000 }; +static unsigned int de1D7F4[] = { 0x00038, 0x00000 }; +static unsigned int de1D7F5[] = { 0x00039, 0x00000 }; +static unsigned int de1D7F6[] = { 0x00030, 0x00000 }; +static unsigned int de1D7F7[] = { 0x00031, 0x00000 }; +static unsigned int de1D7F8[] = { 0x00032, 0x00000 }; +static unsigned int de1D7F9[] = { 0x00033, 0x00000 }; +static unsigned int de1D7FA[] = { 0x00034, 0x00000 }; +static unsigned int de1D7FB[] = { 0x00035, 0x00000 }; +static unsigned int de1D7FC[] = { 0x00036, 0x00000 }; +static unsigned int de1D7FD[] = { 0x00037, 0x00000 }; +static unsigned int de1D7FE[] = { 0x00038, 0x00000 }; +static unsigned int de1D7FF[] = { 0x00039, 0x00000 }; +static unsigned int de2F800[] = { 0x04E3D, 0x00000 }; +static unsigned int de2F801[] = { 0x04E38, 0x00000 }; +static unsigned int de2F802[] = { 0x04E41, 0x00000 }; +static unsigned int de2F803[] = { 0x20122, 0x00000 }; +static unsigned int de2F804[] = { 0x04F60, 0x00000 }; +static unsigned int de2F805[] = { 0x04FAE, 0x00000 }; +static unsigned int de2F806[] = { 0x04FBB, 0x00000 }; +static unsigned int de2F807[] = { 0x05002, 0x00000 }; +static unsigned int de2F808[] = { 0x0507A, 0x00000 }; +static unsigned int de2F809[] = { 0x05099, 0x00000 }; +static unsigned int de2F80A[] = { 0x050E7, 0x00000 }; +static unsigned int de2F80B[] = { 0x050CF, 0x00000 }; +static unsigned int de2F80C[] = { 0x0349E, 0x00000 }; +static unsigned int de2F80D[] = { 0x2063A, 0x00000 }; +static unsigned int de2F80E[] = { 0x0514D, 0x00000 }; +static unsigned int de2F80F[] = { 0x05154, 0x00000 }; +static unsigned int de2F810[] = { 0x05164, 0x00000 }; +static unsigned int de2F811[] = { 0x05177, 0x00000 }; +static unsigned int de2F812[] = { 0x2051C, 0x00000 }; +static unsigned int de2F813[] = { 0x034B9, 0x00000 }; +static unsigned int de2F814[] = { 0x05167, 0x00000 }; +static unsigned int de2F815[] = { 0x0518D, 0x00000 }; +static unsigned int de2F816[] = { 0x2054B, 0x00000 }; +static unsigned int de2F817[] = { 0x05197, 0x00000 }; +static unsigned int de2F818[] = { 0x051A4, 0x00000 }; +static unsigned int de2F819[] = { 0x04ECC, 0x00000 }; +static unsigned int de2F81A[] = { 0x051AC, 0x00000 }; +static unsigned int de2F81B[] = { 0x051B5, 0x00000 }; +static unsigned int de2F81C[] = { 0x291DF, 0x00000 }; +static unsigned int de2F81D[] = { 0x051F5, 0x00000 }; +static unsigned int de2F81E[] = { 0x05203, 0x00000 }; +static unsigned int de2F81F[] = { 0x034DF, 0x00000 }; +static unsigned int de2F820[] = { 0x0523B, 0x00000 }; +static unsigned int de2F821[] = { 0x05246, 0x00000 }; +static unsigned int de2F822[] = { 0x05272, 0x00000 }; +static unsigned int de2F823[] = { 0x05277, 0x00000 }; +static unsigned int de2F824[] = { 0x03515, 0x00000 }; +static unsigned int de2F825[] = { 0x052C7, 0x00000 }; +static unsigned int de2F826[] = { 0x052C9, 0x00000 }; +static unsigned int de2F827[] = { 0x052E4, 0x00000 }; +static unsigned int de2F828[] = { 0x052FA, 0x00000 }; +static unsigned int de2F829[] = { 0x05305, 0x00000 }; +static unsigned int de2F82A[] = { 0x05306, 0x00000 }; +static unsigned int de2F82B[] = { 0x05317, 0x00000 }; +static unsigned int de2F82C[] = { 0x05349, 0x00000 }; +static unsigned int de2F82D[] = { 0x05351, 0x00000 }; +static unsigned int de2F82E[] = { 0x0535A, 0x00000 }; +static unsigned int de2F82F[] = { 0x05373, 0x00000 }; +static unsigned int de2F830[] = { 0x0537D, 0x00000 }; +static unsigned int de2F831[] = { 0x0537F, 0x00000 }; +static unsigned int de2F832[] = { 0x0537F, 0x00000 }; +static unsigned int de2F833[] = { 0x0537F, 0x00000 }; +static unsigned int de2F834[] = { 0x20A2C, 0x00000 }; +static unsigned int de2F835[] = { 0x07070, 0x00000 }; +static unsigned int de2F836[] = { 0x053CA, 0x00000 }; +static unsigned int de2F837[] = { 0x053DF, 0x00000 }; +static unsigned int de2F838[] = { 0x20B63, 0x00000 }; +static unsigned int de2F839[] = { 0x053EB, 0x00000 }; +static unsigned int de2F83A[] = { 0x053F1, 0x00000 }; +static unsigned int de2F83B[] = { 0x05406, 0x00000 }; +static unsigned int de2F83C[] = { 0x0549E, 0x00000 }; +static unsigned int de2F83D[] = { 0x05438, 0x00000 }; +static unsigned int de2F83E[] = { 0x05448, 0x00000 }; +static unsigned int de2F83F[] = { 0x05468, 0x00000 }; +static unsigned int de2F840[] = { 0x054A2, 0x00000 }; +static unsigned int de2F841[] = { 0x054F6, 0x00000 }; +static unsigned int de2F842[] = { 0x05510, 0x00000 }; +static unsigned int de2F843[] = { 0x05553, 0x00000 }; +static unsigned int de2F844[] = { 0x05563, 0x00000 }; +static unsigned int de2F845[] = { 0x05584, 0x00000 }; +static unsigned int de2F846[] = { 0x05584, 0x00000 }; +static unsigned int de2F847[] = { 0x05599, 0x00000 }; +static unsigned int de2F848[] = { 0x055AB, 0x00000 }; +static unsigned int de2F849[] = { 0x055B3, 0x00000 }; +static unsigned int de2F84A[] = { 0x055C2, 0x00000 }; +static unsigned int de2F84B[] = { 0x05716, 0x00000 }; +static unsigned int de2F84C[] = { 0x05606, 0x00000 }; +static unsigned int de2F84D[] = { 0x05717, 0x00000 }; +static unsigned int de2F84E[] = { 0x05651, 0x00000 }; +static unsigned int de2F84F[] = { 0x05674, 0x00000 }; +static unsigned int de2F850[] = { 0x05207, 0x00000 }; +static unsigned int de2F851[] = { 0x058EE, 0x00000 }; +static unsigned int de2F852[] = { 0x057CE, 0x00000 }; +static unsigned int de2F853[] = { 0x057F4, 0x00000 }; +static unsigned int de2F854[] = { 0x0580D, 0x00000 }; +static unsigned int de2F855[] = { 0x0578B, 0x00000 }; +static unsigned int de2F856[] = { 0x05832, 0x00000 }; +static unsigned int de2F857[] = { 0x05831, 0x00000 }; +static unsigned int de2F858[] = { 0x058AC, 0x00000 }; +static unsigned int de2F859[] = { 0x214E4, 0x00000 }; +static unsigned int de2F85A[] = { 0x058F2, 0x00000 }; +static unsigned int de2F85B[] = { 0x058F7, 0x00000 }; +static unsigned int de2F85C[] = { 0x05906, 0x00000 }; +static unsigned int de2F85D[] = { 0x0591A, 0x00000 }; +static unsigned int de2F85E[] = { 0x05922, 0x00000 }; +static unsigned int de2F85F[] = { 0x05962, 0x00000 }; +static unsigned int de2F860[] = { 0x216A8, 0x00000 }; +static unsigned int de2F861[] = { 0x216EA, 0x00000 }; +static unsigned int de2F862[] = { 0x059EC, 0x00000 }; +static unsigned int de2F863[] = { 0x05A1B, 0x00000 }; +static unsigned int de2F864[] = { 0x05A27, 0x00000 }; +static unsigned int de2F865[] = { 0x059D8, 0x00000 }; +static unsigned int de2F866[] = { 0x05A66, 0x00000 }; +static unsigned int de2F867[] = { 0x036EE, 0x00000 }; +static unsigned int de2F868[] = { 0x036FC, 0x00000 }; +static unsigned int de2F869[] = { 0x05B08, 0x00000 }; +static unsigned int de2F86A[] = { 0x05B3E, 0x00000 }; +static unsigned int de2F86B[] = { 0x05B3E, 0x00000 }; +static unsigned int de2F86C[] = { 0x219C8, 0x00000 }; +static unsigned int de2F86D[] = { 0x05BC3, 0x00000 }; +static unsigned int de2F86E[] = { 0x05BD8, 0x00000 }; +static unsigned int de2F86F[] = { 0x05BE7, 0x00000 }; +static unsigned int de2F870[] = { 0x05BF3, 0x00000 }; +static unsigned int de2F871[] = { 0x21B18, 0x00000 }; +static unsigned int de2F872[] = { 0x05BFF, 0x00000 }; +static unsigned int de2F873[] = { 0x05C06, 0x00000 }; +static unsigned int de2F874[] = { 0x05F53, 0x00000 }; +static unsigned int de2F875[] = { 0x05C22, 0x00000 }; +static unsigned int de2F876[] = { 0x03781, 0x00000 }; +static unsigned int de2F877[] = { 0x05C60, 0x00000 }; +static unsigned int de2F878[] = { 0x05C6E, 0x00000 }; +static unsigned int de2F879[] = { 0x05CC0, 0x00000 }; +static unsigned int de2F87A[] = { 0x05C8D, 0x00000 }; +static unsigned int de2F87B[] = { 0x21DE4, 0x00000 }; +static unsigned int de2F87C[] = { 0x05D43, 0x00000 }; +static unsigned int de2F87D[] = { 0x21DE6, 0x00000 }; +static unsigned int de2F87E[] = { 0x05D6E, 0x00000 }; +static unsigned int de2F87F[] = { 0x05D6B, 0x00000 }; +static unsigned int de2F880[] = { 0x05D7C, 0x00000 }; +static unsigned int de2F881[] = { 0x05DE1, 0x00000 }; +static unsigned int de2F882[] = { 0x05DE2, 0x00000 }; +static unsigned int de2F883[] = { 0x0382F, 0x00000 }; +static unsigned int de2F884[] = { 0x05DFD, 0x00000 }; +static unsigned int de2F885[] = { 0x05E28, 0x00000 }; +static unsigned int de2F886[] = { 0x05E3D, 0x00000 }; +static unsigned int de2F887[] = { 0x05E69, 0x00000 }; +static unsigned int de2F888[] = { 0x03862, 0x00000 }; +static unsigned int de2F889[] = { 0x22183, 0x00000 }; +static unsigned int de2F88A[] = { 0x0387C, 0x00000 }; +static unsigned int de2F88B[] = { 0x05EB0, 0x00000 }; +static unsigned int de2F88C[] = { 0x05EB3, 0x00000 }; +static unsigned int de2F88D[] = { 0x05EB6, 0x00000 }; +static unsigned int de2F88E[] = { 0x05ECA, 0x00000 }; +static unsigned int de2F88F[] = { 0x2A392, 0x00000 }; +static unsigned int de2F890[] = { 0x05EFE, 0x00000 }; +static unsigned int de2F891[] = { 0x22331, 0x00000 }; +static unsigned int de2F892[] = { 0x22331, 0x00000 }; +static unsigned int de2F893[] = { 0x08201, 0x00000 }; +static unsigned int de2F894[] = { 0x05F22, 0x00000 }; +static unsigned int de2F895[] = { 0x05F22, 0x00000 }; +static unsigned int de2F896[] = { 0x038C7, 0x00000 }; +static unsigned int de2F897[] = { 0x232B8, 0x00000 }; +static unsigned int de2F898[] = { 0x261DA, 0x00000 }; +static unsigned int de2F899[] = { 0x05F62, 0x00000 }; +static unsigned int de2F89A[] = { 0x05F6B, 0x00000 }; +static unsigned int de2F89B[] = { 0x038E3, 0x00000 }; +static unsigned int de2F89C[] = { 0x05F9A, 0x00000 }; +static unsigned int de2F89D[] = { 0x05FCD, 0x00000 }; +static unsigned int de2F89E[] = { 0x05FD7, 0x00000 }; +static unsigned int de2F89F[] = { 0x05FF9, 0x00000 }; +static unsigned int de2F8A0[] = { 0x06081, 0x00000 }; +static unsigned int de2F8A1[] = { 0x0393A, 0x00000 }; +static unsigned int de2F8A2[] = { 0x0391C, 0x00000 }; +static unsigned int de2F8A3[] = { 0x06094, 0x00000 }; +static unsigned int de2F8A4[] = { 0x226D4, 0x00000 }; +static unsigned int de2F8A5[] = { 0x060C7, 0x00000 }; +static unsigned int de2F8A6[] = { 0x06148, 0x00000 }; +static unsigned int de2F8A7[] = { 0x0614C, 0x00000 }; +static unsigned int de2F8A8[] = { 0x0614E, 0x00000 }; +static unsigned int de2F8A9[] = { 0x0614C, 0x00000 }; +static unsigned int de2F8AA[] = { 0x0617A, 0x00000 }; +static unsigned int de2F8AB[] = { 0x0618E, 0x00000 }; +static unsigned int de2F8AC[] = { 0x061B2, 0x00000 }; +static unsigned int de2F8AD[] = { 0x061A4, 0x00000 }; +static unsigned int de2F8AE[] = { 0x061AF, 0x00000 }; +static unsigned int de2F8AF[] = { 0x061DE, 0x00000 }; +static unsigned int de2F8B0[] = { 0x061F2, 0x00000 }; +static unsigned int de2F8B1[] = { 0x061F6, 0x00000 }; +static unsigned int de2F8B2[] = { 0x06210, 0x00000 }; +static unsigned int de2F8B3[] = { 0x0621B, 0x00000 }; +static unsigned int de2F8B4[] = { 0x0625D, 0x00000 }; +static unsigned int de2F8B5[] = { 0x062B1, 0x00000 }; +static unsigned int de2F8B6[] = { 0x062D4, 0x00000 }; +static unsigned int de2F8B7[] = { 0x06350, 0x00000 }; +static unsigned int de2F8B8[] = { 0x22B0C, 0x00000 }; +static unsigned int de2F8B9[] = { 0x0633D, 0x00000 }; +static unsigned int de2F8BA[] = { 0x062FC, 0x00000 }; +static unsigned int de2F8BB[] = { 0x06368, 0x00000 }; +static unsigned int de2F8BC[] = { 0x06383, 0x00000 }; +static unsigned int de2F8BD[] = { 0x063E4, 0x00000 }; +static unsigned int de2F8BE[] = { 0x22BF1, 0x00000 }; +static unsigned int de2F8BF[] = { 0x06422, 0x00000 }; +static unsigned int de2F8C0[] = { 0x063C5, 0x00000 }; +static unsigned int de2F8C1[] = { 0x063A9, 0x00000 }; +static unsigned int de2F8C2[] = { 0x03A2E, 0x00000 }; +static unsigned int de2F8C3[] = { 0x06469, 0x00000 }; +static unsigned int de2F8C4[] = { 0x0647E, 0x00000 }; +static unsigned int de2F8C5[] = { 0x0649D, 0x00000 }; +static unsigned int de2F8C6[] = { 0x06477, 0x00000 }; +static unsigned int de2F8C7[] = { 0x03A6C, 0x00000 }; +static unsigned int de2F8C8[] = { 0x0654F, 0x00000 }; +static unsigned int de2F8C9[] = { 0x0656C, 0x00000 }; +static unsigned int de2F8CA[] = { 0x2300A, 0x00000 }; +static unsigned int de2F8CB[] = { 0x065E3, 0x00000 }; +static unsigned int de2F8CC[] = { 0x066F8, 0x00000 }; +static unsigned int de2F8CD[] = { 0x06649, 0x00000 }; +static unsigned int de2F8CE[] = { 0x03B19, 0x00000 }; +static unsigned int de2F8CF[] = { 0x06691, 0x00000 }; +static unsigned int de2F8D0[] = { 0x03B08, 0x00000 }; +static unsigned int de2F8D1[] = { 0x03AE4, 0x00000 }; +static unsigned int de2F8D2[] = { 0x05192, 0x00000 }; +static unsigned int de2F8D3[] = { 0x05195, 0x00000 }; +static unsigned int de2F8D4[] = { 0x06700, 0x00000 }; +static unsigned int de2F8D5[] = { 0x0669C, 0x00000 }; +static unsigned int de2F8D6[] = { 0x080AD, 0x00000 }; +static unsigned int de2F8D7[] = { 0x043D9, 0x00000 }; +static unsigned int de2F8D8[] = { 0x06717, 0x00000 }; +static unsigned int de2F8D9[] = { 0x0671B, 0x00000 }; +static unsigned int de2F8DA[] = { 0x06721, 0x00000 }; +static unsigned int de2F8DB[] = { 0x0675E, 0x00000 }; +static unsigned int de2F8DC[] = { 0x06753, 0x00000 }; +static unsigned int de2F8DD[] = { 0x233C3, 0x00000 }; +static unsigned int de2F8DE[] = { 0x03B49, 0x00000 }; +static unsigned int de2F8DF[] = { 0x067FA, 0x00000 }; +static unsigned int de2F8E0[] = { 0x06785, 0x00000 }; +static unsigned int de2F8E1[] = { 0x06852, 0x00000 }; +static unsigned int de2F8E2[] = { 0x06885, 0x00000 }; +static unsigned int de2F8E3[] = { 0x2346D, 0x00000 }; +static unsigned int de2F8E4[] = { 0x0688E, 0x00000 }; +static unsigned int de2F8E5[] = { 0x0681F, 0x00000 }; +static unsigned int de2F8E6[] = { 0x06914, 0x00000 }; +static unsigned int de2F8E7[] = { 0x03B9D, 0x00000 }; +static unsigned int de2F8E8[] = { 0x06942, 0x00000 }; +static unsigned int de2F8E9[] = { 0x069A3, 0x00000 }; +static unsigned int de2F8EA[] = { 0x069EA, 0x00000 }; +static unsigned int de2F8EB[] = { 0x06AA8, 0x00000 }; +static unsigned int de2F8EC[] = { 0x236A3, 0x00000 }; +static unsigned int de2F8ED[] = { 0x06ADB, 0x00000 }; +static unsigned int de2F8EE[] = { 0x03C18, 0x00000 }; +static unsigned int de2F8EF[] = { 0x06B21, 0x00000 }; +static unsigned int de2F8F0[] = { 0x238A7, 0x00000 }; +static unsigned int de2F8F1[] = { 0x06B54, 0x00000 }; +static unsigned int de2F8F2[] = { 0x03C4E, 0x00000 }; +static unsigned int de2F8F3[] = { 0x06B72, 0x00000 }; +static unsigned int de2F8F4[] = { 0x06B9F, 0x00000 }; +static unsigned int de2F8F5[] = { 0x06BBA, 0x00000 }; +static unsigned int de2F8F6[] = { 0x06BBB, 0x00000 }; +static unsigned int de2F8F7[] = { 0x23A8D, 0x00000 }; +static unsigned int de2F8F8[] = { 0x21D0B, 0x00000 }; +static unsigned int de2F8F9[] = { 0x23AFA, 0x00000 }; +static unsigned int de2F8FA[] = { 0x06C4E, 0x00000 }; +static unsigned int de2F8FB[] = { 0x23CBC, 0x00000 }; +static unsigned int de2F8FC[] = { 0x06CBF, 0x00000 }; +static unsigned int de2F8FD[] = { 0x06CCD, 0x00000 }; +static unsigned int de2F8FE[] = { 0x06C67, 0x00000 }; +static unsigned int de2F8FF[] = { 0x06D16, 0x00000 }; +static unsigned int de2F900[] = { 0x06D3E, 0x00000 }; +static unsigned int de2F901[] = { 0x06D77, 0x00000 }; +static unsigned int de2F902[] = { 0x06D41, 0x00000 }; +static unsigned int de2F903[] = { 0x06D69, 0x00000 }; +static unsigned int de2F904[] = { 0x06D78, 0x00000 }; +static unsigned int de2F905[] = { 0x06D85, 0x00000 }; +static unsigned int de2F906[] = { 0x23D1E, 0x00000 }; +static unsigned int de2F907[] = { 0x06D34, 0x00000 }; +static unsigned int de2F908[] = { 0x06E2F, 0x00000 }; +static unsigned int de2F909[] = { 0x06E6E, 0x00000 }; +static unsigned int de2F90A[] = { 0x03D33, 0x00000 }; +static unsigned int de2F90B[] = { 0x06ECB, 0x00000 }; +static unsigned int de2F90C[] = { 0x06EC7, 0x00000 }; +static unsigned int de2F90D[] = { 0x23ED1, 0x00000 }; +static unsigned int de2F90E[] = { 0x06DF9, 0x00000 }; +static unsigned int de2F90F[] = { 0x06F6E, 0x00000 }; +static unsigned int de2F910[] = { 0x23F5E, 0x00000 }; +static unsigned int de2F911[] = { 0x23F8E, 0x00000 }; +static unsigned int de2F912[] = { 0x06FC6, 0x00000 }; +static unsigned int de2F913[] = { 0x07039, 0x00000 }; +static unsigned int de2F914[] = { 0x0701E, 0x00000 }; +static unsigned int de2F915[] = { 0x0701B, 0x00000 }; +static unsigned int de2F916[] = { 0x03D96, 0x00000 }; +static unsigned int de2F917[] = { 0x0704A, 0x00000 }; +static unsigned int de2F918[] = { 0x0707D, 0x00000 }; +static unsigned int de2F919[] = { 0x07077, 0x00000 }; +static unsigned int de2F91A[] = { 0x070AD, 0x00000 }; +static unsigned int de2F91B[] = { 0x20525, 0x00000 }; +static unsigned int de2F91C[] = { 0x07145, 0x00000 }; +static unsigned int de2F91D[] = { 0x24263, 0x00000 }; +static unsigned int de2F91E[] = { 0x0719C, 0x00000 }; +static unsigned int de2F91F[] = { 0x243AB, 0x00000 }; +static unsigned int de2F920[] = { 0x07228, 0x00000 }; +static unsigned int de2F921[] = { 0x07235, 0x00000 }; +static unsigned int de2F922[] = { 0x07250, 0x00000 }; +static unsigned int de2F923[] = { 0x24608, 0x00000 }; +static unsigned int de2F924[] = { 0x07280, 0x00000 }; +static unsigned int de2F925[] = { 0x07295, 0x00000 }; +static unsigned int de2F926[] = { 0x24735, 0x00000 }; +static unsigned int de2F927[] = { 0x24814, 0x00000 }; +static unsigned int de2F928[] = { 0x0737A, 0x00000 }; +static unsigned int de2F929[] = { 0x0738B, 0x00000 }; +static unsigned int de2F92A[] = { 0x03EAC, 0x00000 }; +static unsigned int de2F92B[] = { 0x073A5, 0x00000 }; +static unsigned int de2F92C[] = { 0x03EB8, 0x00000 }; +static unsigned int de2F92D[] = { 0x03EB8, 0x00000 }; +static unsigned int de2F92E[] = { 0x07447, 0x00000 }; +static unsigned int de2F92F[] = { 0x0745C, 0x00000 }; +static unsigned int de2F930[] = { 0x07471, 0x00000 }; +static unsigned int de2F931[] = { 0x07485, 0x00000 }; +static unsigned int de2F932[] = { 0x074CA, 0x00000 }; +static unsigned int de2F933[] = { 0x03F1B, 0x00000 }; +static unsigned int de2F934[] = { 0x07524, 0x00000 }; +static unsigned int de2F935[] = { 0x24C36, 0x00000 }; +static unsigned int de2F936[] = { 0x0753E, 0x00000 }; +static unsigned int de2F937[] = { 0x24C92, 0x00000 }; +static unsigned int de2F938[] = { 0x07570, 0x00000 }; +static unsigned int de2F939[] = { 0x2219F, 0x00000 }; +static unsigned int de2F93A[] = { 0x07610, 0x00000 }; +static unsigned int de2F93B[] = { 0x24FA1, 0x00000 }; +static unsigned int de2F93C[] = { 0x24FB8, 0x00000 }; +static unsigned int de2F93D[] = { 0x25044, 0x00000 }; +static unsigned int de2F93E[] = { 0x03FFC, 0x00000 }; +static unsigned int de2F93F[] = { 0x04008, 0x00000 }; +static unsigned int de2F940[] = { 0x076F4, 0x00000 }; +static unsigned int de2F941[] = { 0x250F3, 0x00000 }; +static unsigned int de2F942[] = { 0x250F2, 0x00000 }; +static unsigned int de2F943[] = { 0x25119, 0x00000 }; +static unsigned int de2F944[] = { 0x25133, 0x00000 }; +static unsigned int de2F945[] = { 0x0771E, 0x00000 }; +static unsigned int de2F946[] = { 0x0771F, 0x00000 }; +static unsigned int de2F947[] = { 0x0771F, 0x00000 }; +static unsigned int de2F948[] = { 0x0774A, 0x00000 }; +static unsigned int de2F949[] = { 0x04039, 0x00000 }; +static unsigned int de2F94A[] = { 0x0778B, 0x00000 }; +static unsigned int de2F94B[] = { 0x04046, 0x00000 }; +static unsigned int de2F94C[] = { 0x04096, 0x00000 }; +static unsigned int de2F94D[] = { 0x2541D, 0x00000 }; +static unsigned int de2F94E[] = { 0x0784E, 0x00000 }; +static unsigned int de2F94F[] = { 0x0788C, 0x00000 }; +static unsigned int de2F950[] = { 0x078CC, 0x00000 }; +static unsigned int de2F951[] = { 0x040E3, 0x00000 }; +static unsigned int de2F952[] = { 0x25626, 0x00000 }; +static unsigned int de2F953[] = { 0x07956, 0x00000 }; +static unsigned int de2F954[] = { 0x2569A, 0x00000 }; +static unsigned int de2F955[] = { 0x256C5, 0x00000 }; +static unsigned int de2F956[] = { 0x0798F, 0x00000 }; +static unsigned int de2F957[] = { 0x079EB, 0x00000 }; +static unsigned int de2F958[] = { 0x0412F, 0x00000 }; +static unsigned int de2F959[] = { 0x07A40, 0x00000 }; +static unsigned int de2F95A[] = { 0x07A4A, 0x00000 }; +static unsigned int de2F95B[] = { 0x07A4F, 0x00000 }; +static unsigned int de2F95C[] = { 0x2597C, 0x00000 }; +static unsigned int de2F95D[] = { 0x25AA7, 0x00000 }; +static unsigned int de2F95E[] = { 0x25AA7, 0x00000 }; +static unsigned int de2F95F[] = { 0x07AEE, 0x00000 }; +static unsigned int de2F960[] = { 0x04202, 0x00000 }; +static unsigned int de2F961[] = { 0x25BAB, 0x00000 }; +static unsigned int de2F962[] = { 0x07BC6, 0x00000 }; +static unsigned int de2F963[] = { 0x07BC9, 0x00000 }; +static unsigned int de2F964[] = { 0x04227, 0x00000 }; +static unsigned int de2F965[] = { 0x25C80, 0x00000 }; +static unsigned int de2F966[] = { 0x07CD2, 0x00000 }; +static unsigned int de2F967[] = { 0x042A0, 0x00000 }; +static unsigned int de2F968[] = { 0x07CE8, 0x00000 }; +static unsigned int de2F969[] = { 0x07CE3, 0x00000 }; +static unsigned int de2F96A[] = { 0x07D00, 0x00000 }; +static unsigned int de2F96B[] = { 0x25F86, 0x00000 }; +static unsigned int de2F96C[] = { 0x07D63, 0x00000 }; +static unsigned int de2F96D[] = { 0x04301, 0x00000 }; +static unsigned int de2F96E[] = { 0x07DC7, 0x00000 }; +static unsigned int de2F96F[] = { 0x07E02, 0x00000 }; +static unsigned int de2F970[] = { 0x07E45, 0x00000 }; +static unsigned int de2F971[] = { 0x04334, 0x00000 }; +static unsigned int de2F972[] = { 0x26228, 0x00000 }; +static unsigned int de2F973[] = { 0x26247, 0x00000 }; +static unsigned int de2F974[] = { 0x04359, 0x00000 }; +static unsigned int de2F975[] = { 0x262D9, 0x00000 }; +static unsigned int de2F976[] = { 0x07F7A, 0x00000 }; +static unsigned int de2F977[] = { 0x2633E, 0x00000 }; +static unsigned int de2F978[] = { 0x07F95, 0x00000 }; +static unsigned int de2F979[] = { 0x07FFA, 0x00000 }; +static unsigned int de2F97A[] = { 0x08005, 0x00000 }; +static unsigned int de2F97B[] = { 0x264DA, 0x00000 }; +static unsigned int de2F97C[] = { 0x26523, 0x00000 }; +static unsigned int de2F97D[] = { 0x08060, 0x00000 }; +static unsigned int de2F97E[] = { 0x265A8, 0x00000 }; +static unsigned int de2F97F[] = { 0x08070, 0x00000 }; +static unsigned int de2F980[] = { 0x2335F, 0x00000 }; +static unsigned int de2F981[] = { 0x043D5, 0x00000 }; +static unsigned int de2F982[] = { 0x080B2, 0x00000 }; +static unsigned int de2F983[] = { 0x08103, 0x00000 }; +static unsigned int de2F984[] = { 0x0440B, 0x00000 }; +static unsigned int de2F985[] = { 0x0813E, 0x00000 }; +static unsigned int de2F986[] = { 0x05AB5, 0x00000 }; +static unsigned int de2F987[] = { 0x267A7, 0x00000 }; +static unsigned int de2F988[] = { 0x267B5, 0x00000 }; +static unsigned int de2F989[] = { 0x23393, 0x00000 }; +static unsigned int de2F98A[] = { 0x2339C, 0x00000 }; +static unsigned int de2F98B[] = { 0x08201, 0x00000 }; +static unsigned int de2F98C[] = { 0x08204, 0x00000 }; +static unsigned int de2F98D[] = { 0x08F9E, 0x00000 }; +static unsigned int de2F98E[] = { 0x0446B, 0x00000 }; +static unsigned int de2F98F[] = { 0x08291, 0x00000 }; +static unsigned int de2F990[] = { 0x0828B, 0x00000 }; +static unsigned int de2F991[] = { 0x0829D, 0x00000 }; +static unsigned int de2F992[] = { 0x052B3, 0x00000 }; +static unsigned int de2F993[] = { 0x082B1, 0x00000 }; +static unsigned int de2F994[] = { 0x082B3, 0x00000 }; +static unsigned int de2F995[] = { 0x082BD, 0x00000 }; +static unsigned int de2F996[] = { 0x082E6, 0x00000 }; +static unsigned int de2F997[] = { 0x26B3C, 0x00000 }; +static unsigned int de2F998[] = { 0x082E5, 0x00000 }; +static unsigned int de2F999[] = { 0x0831D, 0x00000 }; +static unsigned int de2F99A[] = { 0x08363, 0x00000 }; +static unsigned int de2F99B[] = { 0x083AD, 0x00000 }; +static unsigned int de2F99C[] = { 0x08323, 0x00000 }; +static unsigned int de2F99D[] = { 0x083BD, 0x00000 }; +static unsigned int de2F99E[] = { 0x083E7, 0x00000 }; +static unsigned int de2F99F[] = { 0x08457, 0x00000 }; +static unsigned int de2F9A0[] = { 0x08353, 0x00000 }; +static unsigned int de2F9A1[] = { 0x083CA, 0x00000 }; +static unsigned int de2F9A2[] = { 0x083CC, 0x00000 }; +static unsigned int de2F9A3[] = { 0x083DC, 0x00000 }; +static unsigned int de2F9A4[] = { 0x26C36, 0x00000 }; +static unsigned int de2F9A5[] = { 0x26D6B, 0x00000 }; +static unsigned int de2F9A6[] = { 0x26CD5, 0x00000 }; +static unsigned int de2F9A7[] = { 0x0452B, 0x00000 }; +static unsigned int de2F9A8[] = { 0x084F1, 0x00000 }; +static unsigned int de2F9A9[] = { 0x084F3, 0x00000 }; +static unsigned int de2F9AA[] = { 0x08516, 0x00000 }; +static unsigned int de2F9AB[] = { 0x273CA, 0x00000 }; +static unsigned int de2F9AC[] = { 0x08564, 0x00000 }; +static unsigned int de2F9AD[] = { 0x26F2C, 0x00000 }; +static unsigned int de2F9AE[] = { 0x0455D, 0x00000 }; +static unsigned int de2F9AF[] = { 0x04561, 0x00000 }; +static unsigned int de2F9B0[] = { 0x26FB1, 0x00000 }; +static unsigned int de2F9B1[] = { 0x270D2, 0x00000 }; +static unsigned int de2F9B2[] = { 0x0456B, 0x00000 }; +static unsigned int de2F9B3[] = { 0x08650, 0x00000 }; +static unsigned int de2F9B4[] = { 0x0865C, 0x00000 }; +static unsigned int de2F9B5[] = { 0x08667, 0x00000 }; +static unsigned int de2F9B6[] = { 0x08669, 0x00000 }; +static unsigned int de2F9B7[] = { 0x086A9, 0x00000 }; +static unsigned int de2F9B8[] = { 0x08688, 0x00000 }; +static unsigned int de2F9B9[] = { 0x0870E, 0x00000 }; +static unsigned int de2F9BA[] = { 0x086E2, 0x00000 }; +static unsigned int de2F9BB[] = { 0x08779, 0x00000 }; +static unsigned int de2F9BC[] = { 0x08728, 0x00000 }; +static unsigned int de2F9BD[] = { 0x0876B, 0x00000 }; +static unsigned int de2F9BE[] = { 0x08786, 0x00000 }; +static unsigned int de2F9BF[] = { 0x045D7, 0x00000 }; +static unsigned int de2F9C0[] = { 0x087E1, 0x00000 }; +static unsigned int de2F9C1[] = { 0x08801, 0x00000 }; +static unsigned int de2F9C2[] = { 0x045F9, 0x00000 }; +static unsigned int de2F9C3[] = { 0x08860, 0x00000 }; +static unsigned int de2F9C4[] = { 0x08863, 0x00000 }; +static unsigned int de2F9C5[] = { 0x27667, 0x00000 }; +static unsigned int de2F9C6[] = { 0x088D7, 0x00000 }; +static unsigned int de2F9C7[] = { 0x088DE, 0x00000 }; +static unsigned int de2F9C8[] = { 0x04635, 0x00000 }; +static unsigned int de2F9C9[] = { 0x088FA, 0x00000 }; +static unsigned int de2F9CA[] = { 0x034BB, 0x00000 }; +static unsigned int de2F9CB[] = { 0x278AE, 0x00000 }; +static unsigned int de2F9CC[] = { 0x27966, 0x00000 }; +static unsigned int de2F9CD[] = { 0x046BE, 0x00000 }; +static unsigned int de2F9CE[] = { 0x046C7, 0x00000 }; +static unsigned int de2F9CF[] = { 0x08AA0, 0x00000 }; +static unsigned int de2F9D0[] = { 0x08AED, 0x00000 }; +static unsigned int de2F9D1[] = { 0x08B8A, 0x00000 }; +static unsigned int de2F9D2[] = { 0x08C55, 0x00000 }; +static unsigned int de2F9D3[] = { 0x27CA8, 0x00000 }; +static unsigned int de2F9D4[] = { 0x08CAB, 0x00000 }; +static unsigned int de2F9D5[] = { 0x08CC1, 0x00000 }; +static unsigned int de2F9D6[] = { 0x08D1B, 0x00000 }; +static unsigned int de2F9D7[] = { 0x08D77, 0x00000 }; +static unsigned int de2F9D8[] = { 0x27F2F, 0x00000 }; +static unsigned int de2F9D9[] = { 0x20804, 0x00000 }; +static unsigned int de2F9DA[] = { 0x08DCB, 0x00000 }; +static unsigned int de2F9DB[] = { 0x08DBC, 0x00000 }; +static unsigned int de2F9DC[] = { 0x08DF0, 0x00000 }; +static unsigned int de2F9DD[] = { 0x208DE, 0x00000 }; +static unsigned int de2F9DE[] = { 0x08ED4, 0x00000 }; +static unsigned int de2F9DF[] = { 0x08F38, 0x00000 }; +static unsigned int de2F9E0[] = { 0x285D2, 0x00000 }; +static unsigned int de2F9E1[] = { 0x285ED, 0x00000 }; +static unsigned int de2F9E2[] = { 0x09094, 0x00000 }; +static unsigned int de2F9E3[] = { 0x090F1, 0x00000 }; +static unsigned int de2F9E4[] = { 0x09111, 0x00000 }; +static unsigned int de2F9E5[] = { 0x2872E, 0x00000 }; +static unsigned int de2F9E6[] = { 0x0911B, 0x00000 }; +static unsigned int de2F9E7[] = { 0x09238, 0x00000 }; +static unsigned int de2F9E8[] = { 0x092D7, 0x00000 }; +static unsigned int de2F9E9[] = { 0x092D8, 0x00000 }; +static unsigned int de2F9EA[] = { 0x0927C, 0x00000 }; +static unsigned int de2F9EB[] = { 0x093F9, 0x00000 }; +static unsigned int de2F9EC[] = { 0x09415, 0x00000 }; +static unsigned int de2F9ED[] = { 0x28BFA, 0x00000 }; +static unsigned int de2F9EE[] = { 0x0958B, 0x00000 }; +static unsigned int de2F9EF[] = { 0x04995, 0x00000 }; +static unsigned int de2F9F0[] = { 0x095B7, 0x00000 }; +static unsigned int de2F9F1[] = { 0x28D77, 0x00000 }; +static unsigned int de2F9F2[] = { 0x049E6, 0x00000 }; +static unsigned int de2F9F3[] = { 0x096C3, 0x00000 }; +static unsigned int de2F9F4[] = { 0x05DB2, 0x00000 }; +static unsigned int de2F9F5[] = { 0x09723, 0x00000 }; +static unsigned int de2F9F6[] = { 0x29145, 0x00000 }; +static unsigned int de2F9F7[] = { 0x2921A, 0x00000 }; +static unsigned int de2F9F8[] = { 0x04A6E, 0x00000 }; +static unsigned int de2F9F9[] = { 0x04A76, 0x00000 }; +static unsigned int de2F9FA[] = { 0x097E0, 0x00000 }; +static unsigned int de2F9FB[] = { 0x2940A, 0x00000 }; +static unsigned int de2F9FC[] = { 0x04AB2, 0x00000 }; +static unsigned int de2F9FD[] = { 0x29496, 0x00000 }; +static unsigned int de2F9FE[] = { 0x0980B, 0x00000 }; +static unsigned int de2F9FF[] = { 0x0980B, 0x00000 }; +static unsigned int de2FA00[] = { 0x09829, 0x00000 }; +static unsigned int de2FA01[] = { 0x295B6, 0x00000 }; +static unsigned int de2FA02[] = { 0x098E2, 0x00000 }; +static unsigned int de2FA03[] = { 0x04B33, 0x00000 }; +static unsigned int de2FA04[] = { 0x09929, 0x00000 }; +static unsigned int de2FA05[] = { 0x099A7, 0x00000 }; +static unsigned int de2FA06[] = { 0x099C2, 0x00000 }; +static unsigned int de2FA07[] = { 0x099FE, 0x00000 }; +static unsigned int de2FA08[] = { 0x04BCE, 0x00000 }; +static unsigned int de2FA09[] = { 0x29B30, 0x00000 }; +static unsigned int de2FA0A[] = { 0x09B12, 0x00000 }; +static unsigned int de2FA0B[] = { 0x09C40, 0x00000 }; +static unsigned int de2FA0C[] = { 0x09CFD, 0x00000 }; +static unsigned int de2FA0D[] = { 0x04CCE, 0x00000 }; +static unsigned int de2FA0E[] = { 0x04CED, 0x00000 }; +static unsigned int de2FA0F[] = { 0x09D67, 0x00000 }; +static unsigned int de2FA10[] = { 0x2A0CE, 0x00000 }; +static unsigned int de2FA11[] = { 0x04CF8, 0x00000 }; +static unsigned int de2FA12[] = { 0x2A105, 0x00000 }; +static unsigned int de2FA13[] = { 0x2A20E, 0x00000 }; +static unsigned int de2FA14[] = { 0x2A291, 0x00000 }; +static unsigned int de2FA15[] = { 0x09EBB, 0x00000 }; +static unsigned int de2FA16[] = { 0x04D56, 0x00000 }; +static unsigned int de2FA17[] = { 0x09EF9, 0x00000 }; +static unsigned int de2FA18[] = { 0x09EFE, 0x00000 }; +static unsigned int de2FA19[] = { 0x09F05, 0x00000 }; +static unsigned int de2FA1A[] = { 0x09F0F, 0x00000 }; +static unsigned int de2FA1B[] = { 0x09F16, 0x00000 }; +static unsigned int de2FA1C[] = { 0x09F3B, 0x00000 }; +static unsigned int de2FA1D[] = { 0x2A600, 0x00000 }; + +struct DecomposeDirectValue +{ + bool canonical; + unsigned int *dest; +}; +static unsigned int decomposeDirectTableSize = 2048; +static DecomposeDirectValue decomposeDirectTable[2048] = { + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, de000A0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, de000A8 }, { false, 0 }, { false, de000AA }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, de000AF }, { false, 0 }, { false, 0 }, { false, de000B2 }, { false, de000B3 }, { false, de000B4 }, { false, de000B5 }, + { false, 0 }, { false, 0 }, { false, de000B8 }, { false, de000B9 }, { false, de000BA }, { false, 0 }, { false, de000BC }, + { false, de000BD }, { false, de000BE }, { false, 0 }, { true, de000C0 }, { true, de000C1 }, { true, de000C2 }, { true, de000C3 }, + { true, de000C4 }, { true, de000C5 }, { false, 0 }, { true, de000C7 }, { true, de000C8 }, { true, de000C9 }, { true, de000CA }, + { true, de000CB }, { true, de000CC }, { true, de000CD }, { true, de000CE }, { true, de000CF }, { false, 0 }, { true, de000D1 }, + { true, de000D2 }, { true, de000D3 }, { true, de000D4 }, { true, de000D5 }, { true, de000D6 }, { false, 0 }, { false, 0 }, + { true, de000D9 }, { true, de000DA }, { true, de000DB }, { true, de000DC }, { true, de000DD }, { false, 0 }, { false, 0 }, + { true, de000E0 }, { true, de000E1 }, { true, de000E2 }, { true, de000E3 }, { true, de000E4 }, { true, de000E5 }, { false, 0 }, + { true, de000E7 }, { true, de000E8 }, { true, de000E9 }, { true, de000EA }, { true, de000EB }, { true, de000EC }, { true, de000ED }, + { true, de000EE }, { true, de000EF }, { false, 0 }, { true, de000F1 }, { true, de000F2 }, { true, de000F3 }, { true, de000F4 }, + { true, de000F5 }, { true, de000F6 }, { false, 0 }, { false, 0 }, { true, de000F9 }, { true, de000FA }, { true, de000FB }, + { true, de000FC }, { true, de000FD }, { false, 0 }, { true, de000FF }, { true, de00100 }, { true, de00101 }, { true, de00102 }, + { true, de00103 }, { true, de00104 }, { true, de00105 }, { true, de00106 }, { true, de00107 }, { true, de00108 }, { true, de00109 }, + { true, de0010A }, { true, de0010B }, { true, de0010C }, { true, de0010D }, { true, de0010E }, { true, de0010F }, { false, 0 }, + { false, 0 }, { true, de00112 }, { true, de00113 }, { true, de00114 }, { true, de00115 }, { true, de00116 }, { true, de00117 }, + { true, de00118 }, { true, de00119 }, { true, de0011A }, { true, de0011B }, { true, de0011C }, { true, de0011D }, { true, de0011E }, + { true, de0011F }, { true, de00120 }, { true, de00121 }, { true, de00122 }, { true, de00123 }, { true, de00124 }, { true, de00125 }, + { false, 0 }, { false, 0 }, { true, de00128 }, { true, de00129 }, { true, de0012A }, { true, de0012B }, { true, de0012C }, + { true, de0012D }, { true, de0012E }, { true, de0012F }, { true, de00130 }, { false, 0 }, { false, de00132 }, { false, de00133 }, + { true, de00134 }, { true, de00135 }, { true, de00136 }, { true, de00137 }, { false, 0 }, { true, de00139 }, { true, de0013A }, + { true, de0013B }, { true, de0013C }, { true, de0013D }, { true, de0013E }, { false, de0013F }, { false, de00140 }, { false, 0 }, + { false, 0 }, { true, de00143 }, { true, de00144 }, { true, de00145 }, { true, de00146 }, { true, de00147 }, { true, de00148 }, + { false, de00149 }, { false, 0 }, { false, 0 }, { true, de0014C }, { true, de0014D }, { true, de0014E }, { true, de0014F }, + { true, de00150 }, { true, de00151 }, { false, 0 }, { false, 0 }, { true, de00154 }, { true, de00155 }, { true, de00156 }, + { true, de00157 }, { true, de00158 }, { true, de00159 }, { true, de0015A }, { true, de0015B }, { true, de0015C }, { true, de0015D }, + { true, de0015E }, { true, de0015F }, { true, de00160 }, { true, de00161 }, { true, de00162 }, { true, de00163 }, { true, de00164 }, + { true, de00165 }, { false, 0 }, { false, 0 }, { true, de00168 }, { true, de00169 }, { true, de0016A }, { true, de0016B }, + { true, de0016C }, { true, de0016D }, { true, de0016E }, { true, de0016F }, { true, de00170 }, { true, de00171 }, { true, de00172 }, + { true, de00173 }, { true, de00174 }, { true, de00175 }, { true, de00176 }, { true, de00177 }, { true, de00178 }, { true, de00179 }, + { true, de0017A }, { true, de0017B }, { true, de0017C }, { true, de0017D }, { true, de0017E }, { false, de0017F }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { true, de001A0 }, { true, de001A1 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { true, de001AF }, { true, de001B0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, de001C4 }, { false, de001C5 }, { false, de001C6 }, + { false, de001C7 }, { false, de001C8 }, { false, de001C9 }, { false, de001CA }, { false, de001CB }, { false, de001CC }, { true, de001CD }, + { true, de001CE }, { true, de001CF }, { true, de001D0 }, { true, de001D1 }, { true, de001D2 }, { true, de001D3 }, { true, de001D4 }, + { true, de001D5 }, { true, de001D6 }, { true, de001D7 }, { true, de001D8 }, { true, de001D9 }, { true, de001DA }, { true, de001DB }, + { true, de001DC }, { false, 0 }, { true, de001DE }, { true, de001DF }, { true, de001E0 }, { true, de001E1 }, { true, de001E2 }, + { true, de001E3 }, { false, 0 }, { false, 0 }, { true, de001E6 }, { true, de001E7 }, { true, de001E8 }, { true, de001E9 }, + { true, de001EA }, { true, de001EB }, { true, de001EC }, { true, de001ED }, { true, de001EE }, { true, de001EF }, { true, de001F0 }, + { false, de001F1 }, { false, de001F2 }, { false, de001F3 }, { true, de001F4 }, { true, de001F5 }, { false, 0 }, { false, 0 }, + { true, de001F8 }, { true, de001F9 }, { true, de001FA }, { true, de001FB }, { true, de001FC }, { true, de001FD }, { true, de001FE }, + { true, de001FF }, { true, de00200 }, { true, de00201 }, { true, de00202 }, { true, de00203 }, { true, de00204 }, { true, de00205 }, + { true, de00206 }, { true, de00207 }, { true, de00208 }, { true, de00209 }, { true, de0020A }, { true, de0020B }, { true, de0020C }, + { true, de0020D }, { true, de0020E }, { true, de0020F }, { true, de00210 }, { true, de00211 }, { true, de00212 }, { true, de00213 }, + { true, de00214 }, { true, de00215 }, { true, de00216 }, { true, de00217 }, { true, de00218 }, { true, de00219 }, { true, de0021A }, + { true, de0021B }, { false, 0 }, { false, 0 }, { true, de0021E }, { true, de0021F }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { true, de00226 }, { true, de00227 }, { true, de00228 }, + { true, de00229 }, { true, de0022A }, { true, de0022B }, { true, de0022C }, { true, de0022D }, { true, de0022E }, { true, de0022F }, + { true, de00230 }, { true, de00231 }, { true, de00232 }, { true, de00233 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, de002B0 }, { false, de002B1 }, { false, de002B2 }, { false, de002B3 }, { false, de002B4 }, + { false, de002B5 }, { false, de002B6 }, { false, de002B7 }, { false, de002B8 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, de002D8 }, { false, de002D9 }, { false, de002DA }, { false, de002DB }, { false, de002DC }, { false, de002DD }, { false, 0 }, + { false, 0 }, { false, de002E0 }, { false, de002E1 }, { false, de002E2 }, { false, de002E3 }, { false, de002E4 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { true, de00340 }, + { true, de00341 }, { false, 0 }, { true, de00343 }, { true, de00344 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { true, de00374 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, de0037A }, { false, 0 }, { false, 0 }, { false, 0 }, { true, de0037E }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, de00384 }, { true, de00385 }, { true, de00386 }, + { true, de00387 }, { true, de00388 }, { true, de00389 }, { true, de0038A }, { false, 0 }, { true, de0038C }, { false, 0 }, + { true, de0038E }, { true, de0038F }, { true, de00390 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { true, de003AA }, { true, de003AB }, { true, de003AC }, { true, de003AD }, { true, de003AE }, { true, de003AF }, { true, de003B0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { true, de003CA }, { true, de003CB }, { true, de003CC }, + { true, de003CD }, { true, de003CE }, { false, 0 }, { false, de003D0 }, { false, de003D1 }, { false, de003D2 }, { true, de003D3 }, + { true, de003D4 }, { false, de003D5 }, { false, de003D6 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, de003F0 }, { false, de003F1 }, { false, de003F2 }, { false, 0 }, { false, de003F4 }, { false, de003F5 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, de003F9 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { true, de00400 }, { true, de00401 }, { false, 0 }, { true, de00403 }, { false, 0 }, + { false, 0 }, { false, 0 }, { true, de00407 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { true, de0040C }, { true, de0040D }, { true, de0040E }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { true, de00419 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { true, de00439 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { true, de00450 }, { true, de00451 }, + { false, 0 }, { true, de00453 }, { false, 0 }, { false, 0 }, { false, 0 }, { true, de00457 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { true, de0045C }, { true, de0045D }, { true, de0045E }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { true, de00476 }, { true, de00477 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { true, de004C1 }, + { true, de004C2 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { true, de004D0 }, { true, de004D1 }, { true, de004D2 }, { true, de004D3 }, { false, 0 }, { false, 0 }, { true, de004D6 }, + { true, de004D7 }, { false, 0 }, { false, 0 }, { true, de004DA }, { true, de004DB }, { true, de004DC }, { true, de004DD }, + { true, de004DE }, { true, de004DF }, { false, 0 }, { false, 0 }, { true, de004E2 }, { true, de004E3 }, { true, de004E4 }, + { true, de004E5 }, { true, de004E6 }, { true, de004E7 }, { false, 0 }, { false, 0 }, { true, de004EA }, { true, de004EB }, + { true, de004EC }, { true, de004ED }, { true, de004EE }, { true, de004EF }, { true, de004F0 }, { true, de004F1 }, { true, de004F2 }, + { true, de004F3 }, { true, de004F4 }, { true, de004F5 }, { false, 0 }, { false, 0 }, { true, de004F8 }, { true, de004F9 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, de00587 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { true, de00622 }, { true, de00623 }, { true, de00624 }, { true, de00625 }, { true, de00626 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, de00675 }, { false, de00676 }, { false, de00677 }, { false, de00678 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { true, de006C0 }, + { false, 0 }, { true, de006C2 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { true, de006D3 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, + { false, 0 }, { false, 0 }, { false, 0 }, { false, 0 }, +}; + +struct DecomposeValue +{ + unsigned int ch; + bool canonical; + unsigned int *dest; +}; +// static unsigned int decomposeTableSize = 5390; +// static DecomposeValue decomposeTable[5390] = { +static unsigned int decomposeTableSize = 4978; +static DecomposeValue decomposeTable[4978] = { +// { 0x000A0, false, de000A0 }, { 0x000A8, false, de000A8 }, { 0x000AA, false, de000AA }, { 0x000AF, false, de000AF }, +// { 0x000B2, false, de000B2 }, { 0x000B3, false, de000B3 }, { 0x000B4, false, de000B4 }, { 0x000B5, false, de000B5 }, +// { 0x000B8, false, de000B8 }, { 0x000B9, false, de000B9 }, { 0x000BA, false, de000BA }, { 0x000BC, false, de000BC }, +// { 0x000BD, false, de000BD }, { 0x000BE, false, de000BE }, { 0x000C0, true, de000C0 }, { 0x000C1, true, de000C1 }, +// { 0x000C2, true, de000C2 }, { 0x000C3, true, de000C3 }, { 0x000C4, true, de000C4 }, { 0x000C5, true, de000C5 }, +// { 0x000C7, true, de000C7 }, { 0x000C8, true, de000C8 }, { 0x000C9, true, de000C9 }, { 0x000CA, true, de000CA }, +// { 0x000CB, true, de000CB }, { 0x000CC, true, de000CC }, { 0x000CD, true, de000CD }, { 0x000CE, true, de000CE }, +// { 0x000CF, true, de000CF }, { 0x000D1, true, de000D1 }, { 0x000D2, true, de000D2 }, { 0x000D3, true, de000D3 }, +// { 0x000D4, true, de000D4 }, { 0x000D5, true, de000D5 }, { 0x000D6, true, de000D6 }, { 0x000D9, true, de000D9 }, +// { 0x000DA, true, de000DA }, { 0x000DB, true, de000DB }, { 0x000DC, true, de000DC }, { 0x000DD, true, de000DD }, +// { 0x000E0, true, de000E0 }, { 0x000E1, true, de000E1 }, { 0x000E2, true, de000E2 }, { 0x000E3, true, de000E3 }, +// { 0x000E4, true, de000E4 }, { 0x000E5, true, de000E5 }, { 0x000E7, true, de000E7 }, { 0x000E8, true, de000E8 }, +// { 0x000E9, true, de000E9 }, { 0x000EA, true, de000EA }, { 0x000EB, true, de000EB }, { 0x000EC, true, de000EC }, +// { 0x000ED, true, de000ED }, { 0x000EE, true, de000EE }, { 0x000EF, true, de000EF }, { 0x000F1, true, de000F1 }, +// { 0x000F2, true, de000F2 }, { 0x000F3, true, de000F3 }, { 0x000F4, true, de000F4 }, { 0x000F5, true, de000F5 }, +// { 0x000F6, true, de000F6 }, { 0x000F9, true, de000F9 }, { 0x000FA, true, de000FA }, { 0x000FB, true, de000FB }, +// { 0x000FC, true, de000FC }, { 0x000FD, true, de000FD }, { 0x000FF, true, de000FF }, { 0x00100, true, de00100 }, +// { 0x00101, true, de00101 }, { 0x00102, true, de00102 }, { 0x00103, true, de00103 }, { 0x00104, true, de00104 }, +// { 0x00105, true, de00105 }, { 0x00106, true, de00106 }, { 0x00107, true, de00107 }, { 0x00108, true, de00108 }, +// { 0x00109, true, de00109 }, { 0x0010A, true, de0010A }, { 0x0010B, true, de0010B }, { 0x0010C, true, de0010C }, +// { 0x0010D, true, de0010D }, { 0x0010E, true, de0010E }, { 0x0010F, true, de0010F }, { 0x00112, true, de00112 }, +// { 0x00113, true, de00113 }, { 0x00114, true, de00114 }, { 0x00115, true, de00115 }, { 0x00116, true, de00116 }, +// { 0x00117, true, de00117 }, { 0x00118, true, de00118 }, { 0x00119, true, de00119 }, { 0x0011A, true, de0011A }, +// { 0x0011B, true, de0011B }, { 0x0011C, true, de0011C }, { 0x0011D, true, de0011D }, { 0x0011E, true, de0011E }, +// { 0x0011F, true, de0011F }, { 0x00120, true, de00120 }, { 0x00121, true, de00121 }, { 0x00122, true, de00122 }, +// { 0x00123, true, de00123 }, { 0x00124, true, de00124 }, { 0x00125, true, de00125 }, { 0x00128, true, de00128 }, +// { 0x00129, true, de00129 }, { 0x0012A, true, de0012A }, { 0x0012B, true, de0012B }, { 0x0012C, true, de0012C }, +// { 0x0012D, true, de0012D }, { 0x0012E, true, de0012E }, { 0x0012F, true, de0012F }, { 0x00130, true, de00130 }, +// { 0x00132, false, de00132 }, { 0x00133, false, de00133 }, { 0x00134, true, de00134 }, { 0x00135, true, de00135 }, +// { 0x00136, true, de00136 }, { 0x00137, true, de00137 }, { 0x00139, true, de00139 }, { 0x0013A, true, de0013A }, +// { 0x0013B, true, de0013B }, { 0x0013C, true, de0013C }, { 0x0013D, true, de0013D }, { 0x0013E, true, de0013E }, +// { 0x0013F, false, de0013F }, { 0x00140, false, de00140 }, { 0x00143, true, de00143 }, { 0x00144, true, de00144 }, +// { 0x00145, true, de00145 }, { 0x00146, true, de00146 }, { 0x00147, true, de00147 }, { 0x00148, true, de00148 }, +// { 0x00149, false, de00149 }, { 0x0014C, true, de0014C }, { 0x0014D, true, de0014D }, { 0x0014E, true, de0014E }, +// { 0x0014F, true, de0014F }, { 0x00150, true, de00150 }, { 0x00151, true, de00151 }, { 0x00154, true, de00154 }, +// { 0x00155, true, de00155 }, { 0x00156, true, de00156 }, { 0x00157, true, de00157 }, { 0x00158, true, de00158 }, +// { 0x00159, true, de00159 }, { 0x0015A, true, de0015A }, { 0x0015B, true, de0015B }, { 0x0015C, true, de0015C }, +// { 0x0015D, true, de0015D }, { 0x0015E, true, de0015E }, { 0x0015F, true, de0015F }, { 0x00160, true, de00160 }, +// { 0x00161, true, de00161 }, { 0x00162, true, de00162 }, { 0x00163, true, de00163 }, { 0x00164, true, de00164 }, +// { 0x00165, true, de00165 }, { 0x00168, true, de00168 }, { 0x00169, true, de00169 }, { 0x0016A, true, de0016A }, +// { 0x0016B, true, de0016B }, { 0x0016C, true, de0016C }, { 0x0016D, true, de0016D }, { 0x0016E, true, de0016E }, +// { 0x0016F, true, de0016F }, { 0x00170, true, de00170 }, { 0x00171, true, de00171 }, { 0x00172, true, de00172 }, +// { 0x00173, true, de00173 }, { 0x00174, true, de00174 }, { 0x00175, true, de00175 }, { 0x00176, true, de00176 }, +// { 0x00177, true, de00177 }, { 0x00178, true, de00178 }, { 0x00179, true, de00179 }, { 0x0017A, true, de0017A }, +// { 0x0017B, true, de0017B }, { 0x0017C, true, de0017C }, { 0x0017D, true, de0017D }, { 0x0017E, true, de0017E }, +// { 0x0017F, false, de0017F }, { 0x001A0, true, de001A0 }, { 0x001A1, true, de001A1 }, { 0x001AF, true, de001AF }, +// { 0x001B0, true, de001B0 }, { 0x001C4, false, de001C4 }, { 0x001C5, false, de001C5 }, { 0x001C6, false, de001C6 }, +// { 0x001C7, false, de001C7 }, { 0x001C8, false, de001C8 }, { 0x001C9, false, de001C9 }, { 0x001CA, false, de001CA }, +// { 0x001CB, false, de001CB }, { 0x001CC, false, de001CC }, { 0x001CD, true, de001CD }, { 0x001CE, true, de001CE }, +// { 0x001CF, true, de001CF }, { 0x001D0, true, de001D0 }, { 0x001D1, true, de001D1 }, { 0x001D2, true, de001D2 }, +// { 0x001D3, true, de001D3 }, { 0x001D4, true, de001D4 }, { 0x001D5, true, de001D5 }, { 0x001D6, true, de001D6 }, +// { 0x001D7, true, de001D7 }, { 0x001D8, true, de001D8 }, { 0x001D9, true, de001D9 }, { 0x001DA, true, de001DA }, +// { 0x001DB, true, de001DB }, { 0x001DC, true, de001DC }, { 0x001DE, true, de001DE }, { 0x001DF, true, de001DF }, +// { 0x001E0, true, de001E0 }, { 0x001E1, true, de001E1 }, { 0x001E2, true, de001E2 }, { 0x001E3, true, de001E3 }, +// { 0x001E6, true, de001E6 }, { 0x001E7, true, de001E7 }, { 0x001E8, true, de001E8 }, { 0x001E9, true, de001E9 }, +// { 0x001EA, true, de001EA }, { 0x001EB, true, de001EB }, { 0x001EC, true, de001EC }, { 0x001ED, true, de001ED }, +// { 0x001EE, true, de001EE }, { 0x001EF, true, de001EF }, { 0x001F0, true, de001F0 }, { 0x001F1, false, de001F1 }, +// { 0x001F2, false, de001F2 }, { 0x001F3, false, de001F3 }, { 0x001F4, true, de001F4 }, { 0x001F5, true, de001F5 }, +// { 0x001F8, true, de001F8 }, { 0x001F9, true, de001F9 }, { 0x001FA, true, de001FA }, { 0x001FB, true, de001FB }, +// { 0x001FC, true, de001FC }, { 0x001FD, true, de001FD }, { 0x001FE, true, de001FE }, { 0x001FF, true, de001FF }, +// { 0x00200, true, de00200 }, { 0x00201, true, de00201 }, { 0x00202, true, de00202 }, { 0x00203, true, de00203 }, +// { 0x00204, true, de00204 }, { 0x00205, true, de00205 }, { 0x00206, true, de00206 }, { 0x00207, true, de00207 }, +// { 0x00208, true, de00208 }, { 0x00209, true, de00209 }, { 0x0020A, true, de0020A }, { 0x0020B, true, de0020B }, +// { 0x0020C, true, de0020C }, { 0x0020D, true, de0020D }, { 0x0020E, true, de0020E }, { 0x0020F, true, de0020F }, +// { 0x00210, true, de00210 }, { 0x00211, true, de00211 }, { 0x00212, true, de00212 }, { 0x00213, true, de00213 }, +// { 0x00214, true, de00214 }, { 0x00215, true, de00215 }, { 0x00216, true, de00216 }, { 0x00217, true, de00217 }, +// { 0x00218, true, de00218 }, { 0x00219, true, de00219 }, { 0x0021A, true, de0021A }, { 0x0021B, true, de0021B }, +// { 0x0021E, true, de0021E }, { 0x0021F, true, de0021F }, { 0x00226, true, de00226 }, { 0x00227, true, de00227 }, +// { 0x00228, true, de00228 }, { 0x00229, true, de00229 }, { 0x0022A, true, de0022A }, { 0x0022B, true, de0022B }, +// { 0x0022C, true, de0022C }, { 0x0022D, true, de0022D }, { 0x0022E, true, de0022E }, { 0x0022F, true, de0022F }, +// { 0x00230, true, de00230 }, { 0x00231, true, de00231 }, { 0x00232, true, de00232 }, { 0x00233, true, de00233 }, +// { 0x002B0, false, de002B0 }, { 0x002B1, false, de002B1 }, { 0x002B2, false, de002B2 }, { 0x002B3, false, de002B3 }, +// { 0x002B4, false, de002B4 }, { 0x002B5, false, de002B5 }, { 0x002B6, false, de002B6 }, { 0x002B7, false, de002B7 }, +// { 0x002B8, false, de002B8 }, { 0x002D8, false, de002D8 }, { 0x002D9, false, de002D9 }, { 0x002DA, false, de002DA }, +// { 0x002DB, false, de002DB }, { 0x002DC, false, de002DC }, { 0x002DD, false, de002DD }, { 0x002E0, false, de002E0 }, +// { 0x002E1, false, de002E1 }, { 0x002E2, false, de002E2 }, { 0x002E3, false, de002E3 }, { 0x002E4, false, de002E4 }, +// { 0x00340, true, de00340 }, { 0x00341, true, de00341 }, { 0x00343, true, de00343 }, { 0x00344, true, de00344 }, +// { 0x00374, true, de00374 }, { 0x0037A, false, de0037A }, { 0x0037E, true, de0037E }, { 0x00384, false, de00384 }, +// { 0x00385, true, de00385 }, { 0x00386, true, de00386 }, { 0x00387, true, de00387 }, { 0x00388, true, de00388 }, +// { 0x00389, true, de00389 }, { 0x0038A, true, de0038A }, { 0x0038C, true, de0038C }, { 0x0038E, true, de0038E }, +// { 0x0038F, true, de0038F }, { 0x00390, true, de00390 }, { 0x003AA, true, de003AA }, { 0x003AB, true, de003AB }, +// { 0x003AC, true, de003AC }, { 0x003AD, true, de003AD }, { 0x003AE, true, de003AE }, { 0x003AF, true, de003AF }, +// { 0x003B0, true, de003B0 }, { 0x003CA, true, de003CA }, { 0x003CB, true, de003CB }, { 0x003CC, true, de003CC }, +// { 0x003CD, true, de003CD }, { 0x003CE, true, de003CE }, { 0x003D0, false, de003D0 }, { 0x003D1, false, de003D1 }, +// { 0x003D2, false, de003D2 }, { 0x003D3, true, de003D3 }, { 0x003D4, true, de003D4 }, { 0x003D5, false, de003D5 }, +// { 0x003D6, false, de003D6 }, { 0x003F0, false, de003F0 }, { 0x003F1, false, de003F1 }, { 0x003F2, false, de003F2 }, +// { 0x003F4, false, de003F4 }, { 0x003F5, false, de003F5 }, { 0x003F9, false, de003F9 }, { 0x00400, true, de00400 }, +// { 0x00401, true, de00401 }, { 0x00403, true, de00403 }, { 0x00407, true, de00407 }, { 0x0040C, true, de0040C }, +// { 0x0040D, true, de0040D }, { 0x0040E, true, de0040E }, { 0x00419, true, de00419 }, { 0x00439, true, de00439 }, +// { 0x00450, true, de00450 }, { 0x00451, true, de00451 }, { 0x00453, true, de00453 }, { 0x00457, true, de00457 }, +// { 0x0045C, true, de0045C }, { 0x0045D, true, de0045D }, { 0x0045E, true, de0045E }, { 0x00476, true, de00476 }, +// { 0x00477, true, de00477 }, { 0x004C1, true, de004C1 }, { 0x004C2, true, de004C2 }, { 0x004D0, true, de004D0 }, +// { 0x004D1, true, de004D1 }, { 0x004D2, true, de004D2 }, { 0x004D3, true, de004D3 }, { 0x004D6, true, de004D6 }, +// { 0x004D7, true, de004D7 }, { 0x004DA, true, de004DA }, { 0x004DB, true, de004DB }, { 0x004DC, true, de004DC }, +// { 0x004DD, true, de004DD }, { 0x004DE, true, de004DE }, { 0x004DF, true, de004DF }, { 0x004E2, true, de004E2 }, +// { 0x004E3, true, de004E3 }, { 0x004E4, true, de004E4 }, { 0x004E5, true, de004E5 }, { 0x004E6, true, de004E6 }, +// { 0x004E7, true, de004E7 }, { 0x004EA, true, de004EA }, { 0x004EB, true, de004EB }, { 0x004EC, true, de004EC }, +// { 0x004ED, true, de004ED }, { 0x004EE, true, de004EE }, { 0x004EF, true, de004EF }, { 0x004F0, true, de004F0 }, +// { 0x004F1, true, de004F1 }, { 0x004F2, true, de004F2 }, { 0x004F3, true, de004F3 }, { 0x004F4, true, de004F4 }, +// { 0x004F5, true, de004F5 }, { 0x004F8, true, de004F8 }, { 0x004F9, true, de004F9 }, { 0x00587, false, de00587 }, +// { 0x00622, true, de00622 }, { 0x00623, true, de00623 }, { 0x00624, true, de00624 }, { 0x00625, true, de00625 }, +// { 0x00626, true, de00626 }, { 0x00675, false, de00675 }, { 0x00676, false, de00676 }, { 0x00677, false, de00677 }, +// { 0x00678, false, de00678 }, { 0x006C0, true, de006C0 }, { 0x006C2, true, de006C2 }, { 0x006D3, true, de006D3 }, + +{ 0x00929, true, de00929 }, { 0x00931, true, de00931 }, { 0x00934, true, de00934 }, { 0x00958, true, de00958 }, +{ 0x00959, true, de00959 }, { 0x0095A, true, de0095A }, { 0x0095B, true, de0095B }, { 0x0095C, true, de0095C }, +{ 0x0095D, true, de0095D }, { 0x0095E, true, de0095E }, { 0x0095F, true, de0095F }, { 0x009CB, true, de009CB }, +{ 0x009CC, true, de009CC }, { 0x009DC, true, de009DC }, { 0x009DD, true, de009DD }, { 0x009DF, true, de009DF }, +{ 0x00A33, true, de00A33 }, { 0x00A36, true, de00A36 }, { 0x00A59, true, de00A59 }, { 0x00A5A, true, de00A5A }, +{ 0x00A5B, true, de00A5B }, { 0x00A5E, true, de00A5E }, { 0x00B48, true, de00B48 }, { 0x00B4B, true, de00B4B }, +{ 0x00B4C, true, de00B4C }, { 0x00B5C, true, de00B5C }, { 0x00B5D, true, de00B5D }, { 0x00B94, true, de00B94 }, +{ 0x00BCA, true, de00BCA }, { 0x00BCB, true, de00BCB }, { 0x00BCC, true, de00BCC }, { 0x00C48, true, de00C48 }, +{ 0x00CC0, true, de00CC0 }, { 0x00CC7, true, de00CC7 }, { 0x00CC8, true, de00CC8 }, { 0x00CCA, true, de00CCA }, +{ 0x00CCB, true, de00CCB }, { 0x00D4A, true, de00D4A }, { 0x00D4B, true, de00D4B }, { 0x00D4C, true, de00D4C }, +{ 0x00DDA, true, de00DDA }, { 0x00DDC, true, de00DDC }, { 0x00DDD, true, de00DDD }, { 0x00DDE, true, de00DDE }, +{ 0x00E33, false, de00E33 }, { 0x00EB3, false, de00EB3 }, { 0x00EDC, false, de00EDC }, { 0x00EDD, false, de00EDD }, +{ 0x00F0C, false, de00F0C }, { 0x00F43, true, de00F43 }, { 0x00F4D, true, de00F4D }, { 0x00F52, true, de00F52 }, +{ 0x00F57, true, de00F57 }, { 0x00F5C, true, de00F5C }, { 0x00F69, true, de00F69 }, { 0x00F73, true, de00F73 }, +{ 0x00F75, true, de00F75 }, { 0x00F76, true, de00F76 }, { 0x00F77, false, de00F77 }, { 0x00F78, true, de00F78 }, +{ 0x00F79, false, de00F79 }, { 0x00F81, true, de00F81 }, { 0x00F93, true, de00F93 }, { 0x00F9D, true, de00F9D }, +{ 0x00FA2, true, de00FA2 }, { 0x00FA7, true, de00FA7 }, { 0x00FAC, true, de00FAC }, { 0x00FB9, true, de00FB9 }, +{ 0x01026, true, de01026 }, { 0x010FC, false, de010FC }, { 0x01D2C, false, de01D2C }, { 0x01D2D, false, de01D2D }, +{ 0x01D2E, false, de01D2E }, { 0x01D30, false, de01D30 }, { 0x01D31, false, de01D31 }, { 0x01D32, false, de01D32 }, +{ 0x01D33, false, de01D33 }, { 0x01D34, false, de01D34 }, { 0x01D35, false, de01D35 }, { 0x01D36, false, de01D36 }, +{ 0x01D37, false, de01D37 }, { 0x01D38, false, de01D38 }, { 0x01D39, false, de01D39 }, { 0x01D3A, false, de01D3A }, +{ 0x01D3C, false, de01D3C }, { 0x01D3D, false, de01D3D }, { 0x01D3E, false, de01D3E }, { 0x01D3F, false, de01D3F }, +{ 0x01D40, false, de01D40 }, { 0x01D41, false, de01D41 }, { 0x01D42, false, de01D42 }, { 0x01D43, false, de01D43 }, +{ 0x01D44, false, de01D44 }, { 0x01D45, false, de01D45 }, { 0x01D46, false, de01D46 }, { 0x01D47, false, de01D47 }, +{ 0x01D48, false, de01D48 }, { 0x01D49, false, de01D49 }, { 0x01D4A, false, de01D4A }, { 0x01D4B, false, de01D4B }, +{ 0x01D4C, false, de01D4C }, { 0x01D4D, false, de01D4D }, { 0x01D4F, false, de01D4F }, { 0x01D50, false, de01D50 }, +{ 0x01D51, false, de01D51 }, { 0x01D52, false, de01D52 }, { 0x01D53, false, de01D53 }, { 0x01D54, false, de01D54 }, +{ 0x01D55, false, de01D55 }, { 0x01D56, false, de01D56 }, { 0x01D57, false, de01D57 }, { 0x01D58, false, de01D58 }, +{ 0x01D59, false, de01D59 }, { 0x01D5A, false, de01D5A }, { 0x01D5B, false, de01D5B }, { 0x01D5C, false, de01D5C }, +{ 0x01D5D, false, de01D5D }, { 0x01D5E, false, de01D5E }, { 0x01D5F, false, de01D5F }, { 0x01D60, false, de01D60 }, +{ 0x01D61, false, de01D61 }, { 0x01D62, false, de01D62 }, { 0x01D63, false, de01D63 }, { 0x01D64, false, de01D64 }, +{ 0x01D65, false, de01D65 }, { 0x01D66, false, de01D66 }, { 0x01D67, false, de01D67 }, { 0x01D68, false, de01D68 }, +{ 0x01D69, false, de01D69 }, { 0x01D6A, false, de01D6A }, { 0x01D78, false, de01D78 }, { 0x01D9B, false, de01D9B }, +{ 0x01D9C, false, de01D9C }, { 0x01D9D, false, de01D9D }, { 0x01D9E, false, de01D9E }, { 0x01D9F, false, de01D9F }, +{ 0x01DA0, false, de01DA0 }, { 0x01DA1, false, de01DA1 }, { 0x01DA2, false, de01DA2 }, { 0x01DA3, false, de01DA3 }, +{ 0x01DA4, false, de01DA4 }, { 0x01DA5, false, de01DA5 }, { 0x01DA6, false, de01DA6 }, { 0x01DA7, false, de01DA7 }, +{ 0x01DA8, false, de01DA8 }, { 0x01DA9, false, de01DA9 }, { 0x01DAA, false, de01DAA }, { 0x01DAB, false, de01DAB }, +{ 0x01DAC, false, de01DAC }, { 0x01DAD, false, de01DAD }, { 0x01DAE, false, de01DAE }, { 0x01DAF, false, de01DAF }, +{ 0x01DB0, false, de01DB0 }, { 0x01DB1, false, de01DB1 }, { 0x01DB2, false, de01DB2 }, { 0x01DB3, false, de01DB3 }, +{ 0x01DB4, false, de01DB4 }, { 0x01DB5, false, de01DB5 }, { 0x01DB6, false, de01DB6 }, { 0x01DB7, false, de01DB7 }, +{ 0x01DB8, false, de01DB8 }, { 0x01DB9, false, de01DB9 }, { 0x01DBA, false, de01DBA }, { 0x01DBB, false, de01DBB }, +{ 0x01DBC, false, de01DBC }, { 0x01DBD, false, de01DBD }, { 0x01DBE, false, de01DBE }, { 0x01DBF, false, de01DBF }, +{ 0x01E00, true, de01E00 }, { 0x01E01, true, de01E01 }, { 0x01E02, true, de01E02 }, { 0x01E03, true, de01E03 }, +{ 0x01E04, true, de01E04 }, { 0x01E05, true, de01E05 }, { 0x01E06, true, de01E06 }, { 0x01E07, true, de01E07 }, +{ 0x01E08, true, de01E08 }, { 0x01E09, true, de01E09 }, { 0x01E0A, true, de01E0A }, { 0x01E0B, true, de01E0B }, +{ 0x01E0C, true, de01E0C }, { 0x01E0D, true, de01E0D }, { 0x01E0E, true, de01E0E }, { 0x01E0F, true, de01E0F }, +{ 0x01E10, true, de01E10 }, { 0x01E11, true, de01E11 }, { 0x01E12, true, de01E12 }, { 0x01E13, true, de01E13 }, +{ 0x01E14, true, de01E14 }, { 0x01E15, true, de01E15 }, { 0x01E16, true, de01E16 }, { 0x01E17, true, de01E17 }, +{ 0x01E18, true, de01E18 }, { 0x01E19, true, de01E19 }, { 0x01E1A, true, de01E1A }, { 0x01E1B, true, de01E1B }, +{ 0x01E1C, true, de01E1C }, { 0x01E1D, true, de01E1D }, { 0x01E1E, true, de01E1E }, { 0x01E1F, true, de01E1F }, +{ 0x01E20, true, de01E20 }, { 0x01E21, true, de01E21 }, { 0x01E22, true, de01E22 }, { 0x01E23, true, de01E23 }, +{ 0x01E24, true, de01E24 }, { 0x01E25, true, de01E25 }, { 0x01E26, true, de01E26 }, { 0x01E27, true, de01E27 }, +{ 0x01E28, true, de01E28 }, { 0x01E29, true, de01E29 }, { 0x01E2A, true, de01E2A }, { 0x01E2B, true, de01E2B }, +{ 0x01E2C, true, de01E2C }, { 0x01E2D, true, de01E2D }, { 0x01E2E, true, de01E2E }, { 0x01E2F, true, de01E2F }, +{ 0x01E30, true, de01E30 }, { 0x01E31, true, de01E31 }, { 0x01E32, true, de01E32 }, { 0x01E33, true, de01E33 }, +{ 0x01E34, true, de01E34 }, { 0x01E35, true, de01E35 }, { 0x01E36, true, de01E36 }, { 0x01E37, true, de01E37 }, +{ 0x01E38, true, de01E38 }, { 0x01E39, true, de01E39 }, { 0x01E3A, true, de01E3A }, { 0x01E3B, true, de01E3B }, +{ 0x01E3C, true, de01E3C }, { 0x01E3D, true, de01E3D }, { 0x01E3E, true, de01E3E }, { 0x01E3F, true, de01E3F }, +{ 0x01E40, true, de01E40 }, { 0x01E41, true, de01E41 }, { 0x01E42, true, de01E42 }, { 0x01E43, true, de01E43 }, +{ 0x01E44, true, de01E44 }, { 0x01E45, true, de01E45 }, { 0x01E46, true, de01E46 }, { 0x01E47, true, de01E47 }, +{ 0x01E48, true, de01E48 }, { 0x01E49, true, de01E49 }, { 0x01E4A, true, de01E4A }, { 0x01E4B, true, de01E4B }, +{ 0x01E4C, true, de01E4C }, { 0x01E4D, true, de01E4D }, { 0x01E4E, true, de01E4E }, { 0x01E4F, true, de01E4F }, +{ 0x01E50, true, de01E50 }, { 0x01E51, true, de01E51 }, { 0x01E52, true, de01E52 }, { 0x01E53, true, de01E53 }, +{ 0x01E54, true, de01E54 }, { 0x01E55, true, de01E55 }, { 0x01E56, true, de01E56 }, { 0x01E57, true, de01E57 }, +{ 0x01E58, true, de01E58 }, { 0x01E59, true, de01E59 }, { 0x01E5A, true, de01E5A }, { 0x01E5B, true, de01E5B }, +{ 0x01E5C, true, de01E5C }, { 0x01E5D, true, de01E5D }, { 0x01E5E, true, de01E5E }, { 0x01E5F, true, de01E5F }, +{ 0x01E60, true, de01E60 }, { 0x01E61, true, de01E61 }, { 0x01E62, true, de01E62 }, { 0x01E63, true, de01E63 }, +{ 0x01E64, true, de01E64 }, { 0x01E65, true, de01E65 }, { 0x01E66, true, de01E66 }, { 0x01E67, true, de01E67 }, +{ 0x01E68, true, de01E68 }, { 0x01E69, true, de01E69 }, { 0x01E6A, true, de01E6A }, { 0x01E6B, true, de01E6B }, +{ 0x01E6C, true, de01E6C }, { 0x01E6D, true, de01E6D }, { 0x01E6E, true, de01E6E }, { 0x01E6F, true, de01E6F }, +{ 0x01E70, true, de01E70 }, { 0x01E71, true, de01E71 }, { 0x01E72, true, de01E72 }, { 0x01E73, true, de01E73 }, +{ 0x01E74, true, de01E74 }, { 0x01E75, true, de01E75 }, { 0x01E76, true, de01E76 }, { 0x01E77, true, de01E77 }, +{ 0x01E78, true, de01E78 }, { 0x01E79, true, de01E79 }, { 0x01E7A, true, de01E7A }, { 0x01E7B, true, de01E7B }, +{ 0x01E7C, true, de01E7C }, { 0x01E7D, true, de01E7D }, { 0x01E7E, true, de01E7E }, { 0x01E7F, true, de01E7F }, +{ 0x01E80, true, de01E80 }, { 0x01E81, true, de01E81 }, { 0x01E82, true, de01E82 }, { 0x01E83, true, de01E83 }, +{ 0x01E84, true, de01E84 }, { 0x01E85, true, de01E85 }, { 0x01E86, true, de01E86 }, { 0x01E87, true, de01E87 }, +{ 0x01E88, true, de01E88 }, { 0x01E89, true, de01E89 }, { 0x01E8A, true, de01E8A }, { 0x01E8B, true, de01E8B }, +{ 0x01E8C, true, de01E8C }, { 0x01E8D, true, de01E8D }, { 0x01E8E, true, de01E8E }, { 0x01E8F, true, de01E8F }, +{ 0x01E90, true, de01E90 }, { 0x01E91, true, de01E91 }, { 0x01E92, true, de01E92 }, { 0x01E93, true, de01E93 }, +{ 0x01E94, true, de01E94 }, { 0x01E95, true, de01E95 }, { 0x01E96, true, de01E96 }, { 0x01E97, true, de01E97 }, +{ 0x01E98, true, de01E98 }, { 0x01E99, true, de01E99 }, { 0x01E9A, false, de01E9A }, { 0x01E9B, true, de01E9B }, +{ 0x01EA0, true, de01EA0 }, { 0x01EA1, true, de01EA1 }, { 0x01EA2, true, de01EA2 }, { 0x01EA3, true, de01EA3 }, +{ 0x01EA4, true, de01EA4 }, { 0x01EA5, true, de01EA5 }, { 0x01EA6, true, de01EA6 }, { 0x01EA7, true, de01EA7 }, +{ 0x01EA8, true, de01EA8 }, { 0x01EA9, true, de01EA9 }, { 0x01EAA, true, de01EAA }, { 0x01EAB, true, de01EAB }, +{ 0x01EAC, true, de01EAC }, { 0x01EAD, true, de01EAD }, { 0x01EAE, true, de01EAE }, { 0x01EAF, true, de01EAF }, +{ 0x01EB0, true, de01EB0 }, { 0x01EB1, true, de01EB1 }, { 0x01EB2, true, de01EB2 }, { 0x01EB3, true, de01EB3 }, +{ 0x01EB4, true, de01EB4 }, { 0x01EB5, true, de01EB5 }, { 0x01EB6, true, de01EB6 }, { 0x01EB7, true, de01EB7 }, +{ 0x01EB8, true, de01EB8 }, { 0x01EB9, true, de01EB9 }, { 0x01EBA, true, de01EBA }, { 0x01EBB, true, de01EBB }, +{ 0x01EBC, true, de01EBC }, { 0x01EBD, true, de01EBD }, { 0x01EBE, true, de01EBE }, { 0x01EBF, true, de01EBF }, +{ 0x01EC0, true, de01EC0 }, { 0x01EC1, true, de01EC1 }, { 0x01EC2, true, de01EC2 }, { 0x01EC3, true, de01EC3 }, +{ 0x01EC4, true, de01EC4 }, { 0x01EC5, true, de01EC5 }, { 0x01EC6, true, de01EC6 }, { 0x01EC7, true, de01EC7 }, +{ 0x01EC8, true, de01EC8 }, { 0x01EC9, true, de01EC9 }, { 0x01ECA, true, de01ECA }, { 0x01ECB, true, de01ECB }, +{ 0x01ECC, true, de01ECC }, { 0x01ECD, true, de01ECD }, { 0x01ECE, true, de01ECE }, { 0x01ECF, true, de01ECF }, +{ 0x01ED0, true, de01ED0 }, { 0x01ED1, true, de01ED1 }, { 0x01ED2, true, de01ED2 }, { 0x01ED3, true, de01ED3 }, +{ 0x01ED4, true, de01ED4 }, { 0x01ED5, true, de01ED5 }, { 0x01ED6, true, de01ED6 }, { 0x01ED7, true, de01ED7 }, +{ 0x01ED8, true, de01ED8 }, { 0x01ED9, true, de01ED9 }, { 0x01EDA, true, de01EDA }, { 0x01EDB, true, de01EDB }, +{ 0x01EDC, true, de01EDC }, { 0x01EDD, true, de01EDD }, { 0x01EDE, true, de01EDE }, { 0x01EDF, true, de01EDF }, +{ 0x01EE0, true, de01EE0 }, { 0x01EE1, true, de01EE1 }, { 0x01EE2, true, de01EE2 }, { 0x01EE3, true, de01EE3 }, +{ 0x01EE4, true, de01EE4 }, { 0x01EE5, true, de01EE5 }, { 0x01EE6, true, de01EE6 }, { 0x01EE7, true, de01EE7 }, +{ 0x01EE8, true, de01EE8 }, { 0x01EE9, true, de01EE9 }, { 0x01EEA, true, de01EEA }, { 0x01EEB, true, de01EEB }, +{ 0x01EEC, true, de01EEC }, { 0x01EED, true, de01EED }, { 0x01EEE, true, de01EEE }, { 0x01EEF, true, de01EEF }, +{ 0x01EF0, true, de01EF0 }, { 0x01EF1, true, de01EF1 }, { 0x01EF2, true, de01EF2 }, { 0x01EF3, true, de01EF3 }, +{ 0x01EF4, true, de01EF4 }, { 0x01EF5, true, de01EF5 }, { 0x01EF6, true, de01EF6 }, { 0x01EF7, true, de01EF7 }, +{ 0x01EF8, true, de01EF8 }, { 0x01EF9, true, de01EF9 }, { 0x01F00, true, de01F00 }, { 0x01F01, true, de01F01 }, +{ 0x01F02, true, de01F02 }, { 0x01F03, true, de01F03 }, { 0x01F04, true, de01F04 }, { 0x01F05, true, de01F05 }, +{ 0x01F06, true, de01F06 }, { 0x01F07, true, de01F07 }, { 0x01F08, true, de01F08 }, { 0x01F09, true, de01F09 }, +{ 0x01F0A, true, de01F0A }, { 0x01F0B, true, de01F0B }, { 0x01F0C, true, de01F0C }, { 0x01F0D, true, de01F0D }, +{ 0x01F0E, true, de01F0E }, { 0x01F0F, true, de01F0F }, { 0x01F10, true, de01F10 }, { 0x01F11, true, de01F11 }, +{ 0x01F12, true, de01F12 }, { 0x01F13, true, de01F13 }, { 0x01F14, true, de01F14 }, { 0x01F15, true, de01F15 }, +{ 0x01F18, true, de01F18 }, { 0x01F19, true, de01F19 }, { 0x01F1A, true, de01F1A }, { 0x01F1B, true, de01F1B }, +{ 0x01F1C, true, de01F1C }, { 0x01F1D, true, de01F1D }, { 0x01F20, true, de01F20 }, { 0x01F21, true, de01F21 }, +{ 0x01F22, true, de01F22 }, { 0x01F23, true, de01F23 }, { 0x01F24, true, de01F24 }, { 0x01F25, true, de01F25 }, +{ 0x01F26, true, de01F26 }, { 0x01F27, true, de01F27 }, { 0x01F28, true, de01F28 }, { 0x01F29, true, de01F29 }, +{ 0x01F2A, true, de01F2A }, { 0x01F2B, true, de01F2B }, { 0x01F2C, true, de01F2C }, { 0x01F2D, true, de01F2D }, +{ 0x01F2E, true, de01F2E }, { 0x01F2F, true, de01F2F }, { 0x01F30, true, de01F30 }, { 0x01F31, true, de01F31 }, +{ 0x01F32, true, de01F32 }, { 0x01F33, true, de01F33 }, { 0x01F34, true, de01F34 }, { 0x01F35, true, de01F35 }, +{ 0x01F36, true, de01F36 }, { 0x01F37, true, de01F37 }, { 0x01F38, true, de01F38 }, { 0x01F39, true, de01F39 }, +{ 0x01F3A, true, de01F3A }, { 0x01F3B, true, de01F3B }, { 0x01F3C, true, de01F3C }, { 0x01F3D, true, de01F3D }, +{ 0x01F3E, true, de01F3E }, { 0x01F3F, true, de01F3F }, { 0x01F40, true, de01F40 }, { 0x01F41, true, de01F41 }, +{ 0x01F42, true, de01F42 }, { 0x01F43, true, de01F43 }, { 0x01F44, true, de01F44 }, { 0x01F45, true, de01F45 }, +{ 0x01F48, true, de01F48 }, { 0x01F49, true, de01F49 }, { 0x01F4A, true, de01F4A }, { 0x01F4B, true, de01F4B }, +{ 0x01F4C, true, de01F4C }, { 0x01F4D, true, de01F4D }, { 0x01F50, true, de01F50 }, { 0x01F51, true, de01F51 }, +{ 0x01F52, true, de01F52 }, { 0x01F53, true, de01F53 }, { 0x01F54, true, de01F54 }, { 0x01F55, true, de01F55 }, +{ 0x01F56, true, de01F56 }, { 0x01F57, true, de01F57 }, { 0x01F59, true, de01F59 }, { 0x01F5B, true, de01F5B }, +{ 0x01F5D, true, de01F5D }, { 0x01F5F, true, de01F5F }, { 0x01F60, true, de01F60 }, { 0x01F61, true, de01F61 }, +{ 0x01F62, true, de01F62 }, { 0x01F63, true, de01F63 }, { 0x01F64, true, de01F64 }, { 0x01F65, true, de01F65 }, +{ 0x01F66, true, de01F66 }, { 0x01F67, true, de01F67 }, { 0x01F68, true, de01F68 }, { 0x01F69, true, de01F69 }, +{ 0x01F6A, true, de01F6A }, { 0x01F6B, true, de01F6B }, { 0x01F6C, true, de01F6C }, { 0x01F6D, true, de01F6D }, +{ 0x01F6E, true, de01F6E }, { 0x01F6F, true, de01F6F }, { 0x01F70, true, de01F70 }, { 0x01F71, true, de01F71 }, +{ 0x01F72, true, de01F72 }, { 0x01F73, true, de01F73 }, { 0x01F74, true, de01F74 }, { 0x01F75, true, de01F75 }, +{ 0x01F76, true, de01F76 }, { 0x01F77, true, de01F77 }, { 0x01F78, true, de01F78 }, { 0x01F79, true, de01F79 }, +{ 0x01F7A, true, de01F7A }, { 0x01F7B, true, de01F7B }, { 0x01F7C, true, de01F7C }, { 0x01F7D, true, de01F7D }, +{ 0x01F80, true, de01F80 }, { 0x01F81, true, de01F81 }, { 0x01F82, true, de01F82 }, { 0x01F83, true, de01F83 }, +{ 0x01F84, true, de01F84 }, { 0x01F85, true, de01F85 }, { 0x01F86, true, de01F86 }, { 0x01F87, true, de01F87 }, +{ 0x01F88, true, de01F88 }, { 0x01F89, true, de01F89 }, { 0x01F8A, true, de01F8A }, { 0x01F8B, true, de01F8B }, +{ 0x01F8C, true, de01F8C }, { 0x01F8D, true, de01F8D }, { 0x01F8E, true, de01F8E }, { 0x01F8F, true, de01F8F }, +{ 0x01F90, true, de01F90 }, { 0x01F91, true, de01F91 }, { 0x01F92, true, de01F92 }, { 0x01F93, true, de01F93 }, +{ 0x01F94, true, de01F94 }, { 0x01F95, true, de01F95 }, { 0x01F96, true, de01F96 }, { 0x01F97, true, de01F97 }, +{ 0x01F98, true, de01F98 }, { 0x01F99, true, de01F99 }, { 0x01F9A, true, de01F9A }, { 0x01F9B, true, de01F9B }, +{ 0x01F9C, true, de01F9C }, { 0x01F9D, true, de01F9D }, { 0x01F9E, true, de01F9E }, { 0x01F9F, true, de01F9F }, +{ 0x01FA0, true, de01FA0 }, { 0x01FA1, true, de01FA1 }, { 0x01FA2, true, de01FA2 }, { 0x01FA3, true, de01FA3 }, +{ 0x01FA4, true, de01FA4 }, { 0x01FA5, true, de01FA5 }, { 0x01FA6, true, de01FA6 }, { 0x01FA7, true, de01FA7 }, +{ 0x01FA8, true, de01FA8 }, { 0x01FA9, true, de01FA9 }, { 0x01FAA, true, de01FAA }, { 0x01FAB, true, de01FAB }, +{ 0x01FAC, true, de01FAC }, { 0x01FAD, true, de01FAD }, { 0x01FAE, true, de01FAE }, { 0x01FAF, true, de01FAF }, +{ 0x01FB0, true, de01FB0 }, { 0x01FB1, true, de01FB1 }, { 0x01FB2, true, de01FB2 }, { 0x01FB3, true, de01FB3 }, +{ 0x01FB4, true, de01FB4 }, { 0x01FB6, true, de01FB6 }, { 0x01FB7, true, de01FB7 }, { 0x01FB8, true, de01FB8 }, +{ 0x01FB9, true, de01FB9 }, { 0x01FBA, true, de01FBA }, { 0x01FBB, true, de01FBB }, { 0x01FBC, true, de01FBC }, +{ 0x01FBD, false, de01FBD }, { 0x01FBE, true, de01FBE }, { 0x01FBF, false, de01FBF }, { 0x01FC0, false, de01FC0 }, +{ 0x01FC1, true, de01FC1 }, { 0x01FC2, true, de01FC2 }, { 0x01FC3, true, de01FC3 }, { 0x01FC4, true, de01FC4 }, +{ 0x01FC6, true, de01FC6 }, { 0x01FC7, true, de01FC7 }, { 0x01FC8, true, de01FC8 }, { 0x01FC9, true, de01FC9 }, +{ 0x01FCA, true, de01FCA }, { 0x01FCB, true, de01FCB }, { 0x01FCC, true, de01FCC }, { 0x01FCD, true, de01FCD }, +{ 0x01FCE, true, de01FCE }, { 0x01FCF, true, de01FCF }, { 0x01FD0, true, de01FD0 }, { 0x01FD1, true, de01FD1 }, +{ 0x01FD2, true, de01FD2 }, { 0x01FD3, true, de01FD3 }, { 0x01FD6, true, de01FD6 }, { 0x01FD7, true, de01FD7 }, +{ 0x01FD8, true, de01FD8 }, { 0x01FD9, true, de01FD9 }, { 0x01FDA, true, de01FDA }, { 0x01FDB, true, de01FDB }, +{ 0x01FDD, true, de01FDD }, { 0x01FDE, true, de01FDE }, { 0x01FDF, true, de01FDF }, { 0x01FE0, true, de01FE0 }, +{ 0x01FE1, true, de01FE1 }, { 0x01FE2, true, de01FE2 }, { 0x01FE3, true, de01FE3 }, { 0x01FE4, true, de01FE4 }, +{ 0x01FE5, true, de01FE5 }, { 0x01FE6, true, de01FE6 }, { 0x01FE7, true, de01FE7 }, { 0x01FE8, true, de01FE8 }, +{ 0x01FE9, true, de01FE9 }, { 0x01FEA, true, de01FEA }, { 0x01FEB, true, de01FEB }, { 0x01FEC, true, de01FEC }, +{ 0x01FED, true, de01FED }, { 0x01FEE, true, de01FEE }, { 0x01FEF, true, de01FEF }, { 0x01FF2, true, de01FF2 }, +{ 0x01FF3, true, de01FF3 }, { 0x01FF4, true, de01FF4 }, { 0x01FF6, true, de01FF6 }, { 0x01FF7, true, de01FF7 }, +{ 0x01FF8, true, de01FF8 }, { 0x01FF9, true, de01FF9 }, { 0x01FFA, true, de01FFA }, { 0x01FFB, true, de01FFB }, +{ 0x01FFC, true, de01FFC }, { 0x01FFD, true, de01FFD }, { 0x01FFE, false, de01FFE }, { 0x02000, true, de02000 }, +{ 0x02001, true, de02001 }, { 0x02002, false, de02002 }, { 0x02003, false, de02003 }, { 0x02004, false, de02004 }, +{ 0x02005, false, de02005 }, { 0x02006, false, de02006 }, { 0x02007, false, de02007 }, { 0x02008, false, de02008 }, +{ 0x02009, false, de02009 }, { 0x0200A, false, de0200A }, { 0x02011, false, de02011 }, { 0x02017, false, de02017 }, +{ 0x02024, false, de02024 }, { 0x02025, false, de02025 }, { 0x02026, false, de02026 }, { 0x0202F, false, de0202F }, +{ 0x02033, false, de02033 }, { 0x02034, false, de02034 }, { 0x02036, false, de02036 }, { 0x02037, false, de02037 }, +{ 0x0203C, false, de0203C }, { 0x0203E, false, de0203E }, { 0x02047, false, de02047 }, { 0x02048, false, de02048 }, +{ 0x02049, false, de02049 }, { 0x02057, false, de02057 }, { 0x0205F, false, de0205F }, { 0x02070, false, de02070 }, +{ 0x02071, false, de02071 }, { 0x02074, false, de02074 }, { 0x02075, false, de02075 }, { 0x02076, false, de02076 }, +{ 0x02077, false, de02077 }, { 0x02078, false, de02078 }, { 0x02079, false, de02079 }, { 0x0207A, false, de0207A }, +{ 0x0207B, false, de0207B }, { 0x0207C, false, de0207C }, { 0x0207D, false, de0207D }, { 0x0207E, false, de0207E }, +{ 0x0207F, false, de0207F }, { 0x02080, false, de02080 }, { 0x02081, false, de02081 }, { 0x02082, false, de02082 }, +{ 0x02083, false, de02083 }, { 0x02084, false, de02084 }, { 0x02085, false, de02085 }, { 0x02086, false, de02086 }, +{ 0x02087, false, de02087 }, { 0x02088, false, de02088 }, { 0x02089, false, de02089 }, { 0x0208A, false, de0208A }, +{ 0x0208B, false, de0208B }, { 0x0208C, false, de0208C }, { 0x0208D, false, de0208D }, { 0x0208E, false, de0208E }, +{ 0x02090, false, de02090 }, { 0x02091, false, de02091 }, { 0x02092, false, de02092 }, { 0x02093, false, de02093 }, +{ 0x02094, false, de02094 }, { 0x020A8, false, de020A8 }, { 0x02100, false, de02100 }, { 0x02101, false, de02101 }, +{ 0x02102, false, de02102 }, { 0x02103, false, de02103 }, { 0x02105, false, de02105 }, { 0x02106, false, de02106 }, +{ 0x02107, false, de02107 }, { 0x02109, false, de02109 }, { 0x0210A, false, de0210A }, { 0x0210B, false, de0210B }, +{ 0x0210C, false, de0210C }, { 0x0210D, false, de0210D }, { 0x0210E, false, de0210E }, { 0x0210F, false, de0210F }, +{ 0x02110, false, de02110 }, { 0x02111, false, de02111 }, { 0x02112, false, de02112 }, { 0x02113, false, de02113 }, +{ 0x02115, false, de02115 }, { 0x02116, false, de02116 }, { 0x02119, false, de02119 }, { 0x0211A, false, de0211A }, +{ 0x0211B, false, de0211B }, { 0x0211C, false, de0211C }, { 0x0211D, false, de0211D }, { 0x02120, false, de02120 }, +{ 0x02121, false, de02121 }, { 0x02122, false, de02122 }, { 0x02124, false, de02124 }, { 0x02126, true, de02126 }, +{ 0x02128, false, de02128 }, { 0x0212A, true, de0212A }, { 0x0212B, true, de0212B }, { 0x0212C, false, de0212C }, +{ 0x0212D, false, de0212D }, { 0x0212F, false, de0212F }, { 0x02130, false, de02130 }, { 0x02131, false, de02131 }, +{ 0x02133, false, de02133 }, { 0x02134, false, de02134 }, { 0x02135, false, de02135 }, { 0x02136, false, de02136 }, +{ 0x02137, false, de02137 }, { 0x02138, false, de02138 }, { 0x02139, false, de02139 }, { 0x0213B, false, de0213B }, +{ 0x0213C, false, de0213C }, { 0x0213D, false, de0213D }, { 0x0213E, false, de0213E }, { 0x0213F, false, de0213F }, +{ 0x02140, false, de02140 }, { 0x02145, false, de02145 }, { 0x02146, false, de02146 }, { 0x02147, false, de02147 }, +{ 0x02148, false, de02148 }, { 0x02149, false, de02149 }, { 0x02153, false, de02153 }, { 0x02154, false, de02154 }, +{ 0x02155, false, de02155 }, { 0x02156, false, de02156 }, { 0x02157, false, de02157 }, { 0x02158, false, de02158 }, +{ 0x02159, false, de02159 }, { 0x0215A, false, de0215A }, { 0x0215B, false, de0215B }, { 0x0215C, false, de0215C }, +{ 0x0215D, false, de0215D }, { 0x0215E, false, de0215E }, { 0x0215F, false, de0215F }, { 0x02160, false, de02160 }, +{ 0x02161, false, de02161 }, { 0x02162, false, de02162 }, { 0x02163, false, de02163 }, { 0x02164, false, de02164 }, +{ 0x02165, false, de02165 }, { 0x02166, false, de02166 }, { 0x02167, false, de02167 }, { 0x02168, false, de02168 }, +{ 0x02169, false, de02169 }, { 0x0216A, false, de0216A }, { 0x0216B, false, de0216B }, { 0x0216C, false, de0216C }, +{ 0x0216D, false, de0216D }, { 0x0216E, false, de0216E }, { 0x0216F, false, de0216F }, { 0x02170, false, de02170 }, +{ 0x02171, false, de02171 }, { 0x02172, false, de02172 }, { 0x02173, false, de02173 }, { 0x02174, false, de02174 }, +{ 0x02175, false, de02175 }, { 0x02176, false, de02176 }, { 0x02177, false, de02177 }, { 0x02178, false, de02178 }, +{ 0x02179, false, de02179 }, { 0x0217A, false, de0217A }, { 0x0217B, false, de0217B }, { 0x0217C, false, de0217C }, +{ 0x0217D, false, de0217D }, { 0x0217E, false, de0217E }, { 0x0217F, false, de0217F }, { 0x0219A, true, de0219A }, +{ 0x0219B, true, de0219B }, { 0x021AE, true, de021AE }, { 0x021CD, true, de021CD }, { 0x021CE, true, de021CE }, +{ 0x021CF, true, de021CF }, { 0x02204, true, de02204 }, { 0x02209, true, de02209 }, { 0x0220C, true, de0220C }, +{ 0x02224, true, de02224 }, { 0x02226, true, de02226 }, { 0x0222C, false, de0222C }, { 0x0222D, false, de0222D }, +{ 0x0222F, false, de0222F }, { 0x02230, false, de02230 }, { 0x02241, true, de02241 }, { 0x02244, true, de02244 }, +{ 0x02247, true, de02247 }, { 0x02249, true, de02249 }, { 0x02260, true, de02260 }, { 0x02262, true, de02262 }, +{ 0x0226D, true, de0226D }, { 0x0226E, true, de0226E }, { 0x0226F, true, de0226F }, { 0x02270, true, de02270 }, +{ 0x02271, true, de02271 }, { 0x02274, true, de02274 }, { 0x02275, true, de02275 }, { 0x02278, true, de02278 }, +{ 0x02279, true, de02279 }, { 0x02280, true, de02280 }, { 0x02281, true, de02281 }, { 0x02284, true, de02284 }, +{ 0x02285, true, de02285 }, { 0x02288, true, de02288 }, { 0x02289, true, de02289 }, { 0x022AC, true, de022AC }, +{ 0x022AD, true, de022AD }, { 0x022AE, true, de022AE }, { 0x022AF, true, de022AF }, { 0x022E0, true, de022E0 }, +{ 0x022E1, true, de022E1 }, { 0x022E2, true, de022E2 }, { 0x022E3, true, de022E3 }, { 0x022EA, true, de022EA }, +{ 0x022EB, true, de022EB }, { 0x022EC, true, de022EC }, { 0x022ED, true, de022ED }, { 0x02329, true, de02329 }, +{ 0x0232A, true, de0232A }, { 0x02460, false, de02460 }, { 0x02461, false, de02461 }, { 0x02462, false, de02462 }, +{ 0x02463, false, de02463 }, { 0x02464, false, de02464 }, { 0x02465, false, de02465 }, { 0x02466, false, de02466 }, +{ 0x02467, false, de02467 }, { 0x02468, false, de02468 }, { 0x02469, false, de02469 }, { 0x0246A, false, de0246A }, +{ 0x0246B, false, de0246B }, { 0x0246C, false, de0246C }, { 0x0246D, false, de0246D }, { 0x0246E, false, de0246E }, +{ 0x0246F, false, de0246F }, { 0x02470, false, de02470 }, { 0x02471, false, de02471 }, { 0x02472, false, de02472 }, +{ 0x02473, false, de02473 }, { 0x02474, false, de02474 }, { 0x02475, false, de02475 }, { 0x02476, false, de02476 }, +{ 0x02477, false, de02477 }, { 0x02478, false, de02478 }, { 0x02479, false, de02479 }, { 0x0247A, false, de0247A }, +{ 0x0247B, false, de0247B }, { 0x0247C, false, de0247C }, { 0x0247D, false, de0247D }, { 0x0247E, false, de0247E }, +{ 0x0247F, false, de0247F }, { 0x02480, false, de02480 }, { 0x02481, false, de02481 }, { 0x02482, false, de02482 }, +{ 0x02483, false, de02483 }, { 0x02484, false, de02484 }, { 0x02485, false, de02485 }, { 0x02486, false, de02486 }, +{ 0x02487, false, de02487 }, { 0x02488, false, de02488 }, { 0x02489, false, de02489 }, { 0x0248A, false, de0248A }, +{ 0x0248B, false, de0248B }, { 0x0248C, false, de0248C }, { 0x0248D, false, de0248D }, { 0x0248E, false, de0248E }, +{ 0x0248F, false, de0248F }, { 0x02490, false, de02490 }, { 0x02491, false, de02491 }, { 0x02492, false, de02492 }, +{ 0x02493, false, de02493 }, { 0x02494, false, de02494 }, { 0x02495, false, de02495 }, { 0x02496, false, de02496 }, +{ 0x02497, false, de02497 }, { 0x02498, false, de02498 }, { 0x02499, false, de02499 }, { 0x0249A, false, de0249A }, +{ 0x0249B, false, de0249B }, { 0x0249C, false, de0249C }, { 0x0249D, false, de0249D }, { 0x0249E, false, de0249E }, +{ 0x0249F, false, de0249F }, { 0x024A0, false, de024A0 }, { 0x024A1, false, de024A1 }, { 0x024A2, false, de024A2 }, +{ 0x024A3, false, de024A3 }, { 0x024A4, false, de024A4 }, { 0x024A5, false, de024A5 }, { 0x024A6, false, de024A6 }, +{ 0x024A7, false, de024A7 }, { 0x024A8, false, de024A8 }, { 0x024A9, false, de024A9 }, { 0x024AA, false, de024AA }, +{ 0x024AB, false, de024AB }, { 0x024AC, false, de024AC }, { 0x024AD, false, de024AD }, { 0x024AE, false, de024AE }, +{ 0x024AF, false, de024AF }, { 0x024B0, false, de024B0 }, { 0x024B1, false, de024B1 }, { 0x024B2, false, de024B2 }, +{ 0x024B3, false, de024B3 }, { 0x024B4, false, de024B4 }, { 0x024B5, false, de024B5 }, { 0x024B6, false, de024B6 }, +{ 0x024B7, false, de024B7 }, { 0x024B8, false, de024B8 }, { 0x024B9, false, de024B9 }, { 0x024BA, false, de024BA }, +{ 0x024BB, false, de024BB }, { 0x024BC, false, de024BC }, { 0x024BD, false, de024BD }, { 0x024BE, false, de024BE }, +{ 0x024BF, false, de024BF }, { 0x024C0, false, de024C0 }, { 0x024C1, false, de024C1 }, { 0x024C2, false, de024C2 }, +{ 0x024C3, false, de024C3 }, { 0x024C4, false, de024C4 }, { 0x024C5, false, de024C5 }, { 0x024C6, false, de024C6 }, +{ 0x024C7, false, de024C7 }, { 0x024C8, false, de024C8 }, { 0x024C9, false, de024C9 }, { 0x024CA, false, de024CA }, +{ 0x024CB, false, de024CB }, { 0x024CC, false, de024CC }, { 0x024CD, false, de024CD }, { 0x024CE, false, de024CE }, +{ 0x024CF, false, de024CF }, { 0x024D0, false, de024D0 }, { 0x024D1, false, de024D1 }, { 0x024D2, false, de024D2 }, +{ 0x024D3, false, de024D3 }, { 0x024D4, false, de024D4 }, { 0x024D5, false, de024D5 }, { 0x024D6, false, de024D6 }, +{ 0x024D7, false, de024D7 }, { 0x024D8, false, de024D8 }, { 0x024D9, false, de024D9 }, { 0x024DA, false, de024DA }, +{ 0x024DB, false, de024DB }, { 0x024DC, false, de024DC }, { 0x024DD, false, de024DD }, { 0x024DE, false, de024DE }, +{ 0x024DF, false, de024DF }, { 0x024E0, false, de024E0 }, { 0x024E1, false, de024E1 }, { 0x024E2, false, de024E2 }, +{ 0x024E3, false, de024E3 }, { 0x024E4, false, de024E4 }, { 0x024E5, false, de024E5 }, { 0x024E6, false, de024E6 }, +{ 0x024E7, false, de024E7 }, { 0x024E8, false, de024E8 }, { 0x024E9, false, de024E9 }, { 0x024EA, false, de024EA }, +{ 0x02A0C, false, de02A0C }, { 0x02A74, false, de02A74 }, { 0x02A75, false, de02A75 }, { 0x02A76, false, de02A76 }, +{ 0x02ADC, true, de02ADC }, { 0x02D6F, false, de02D6F }, { 0x02E9F, false, de02E9F }, { 0x02EF3, false, de02EF3 }, +{ 0x02F00, false, de02F00 }, { 0x02F01, false, de02F01 }, { 0x02F02, false, de02F02 }, { 0x02F03, false, de02F03 }, +{ 0x02F04, false, de02F04 }, { 0x02F05, false, de02F05 }, { 0x02F06, false, de02F06 }, { 0x02F07, false, de02F07 }, +{ 0x02F08, false, de02F08 }, { 0x02F09, false, de02F09 }, { 0x02F0A, false, de02F0A }, { 0x02F0B, false, de02F0B }, +{ 0x02F0C, false, de02F0C }, { 0x02F0D, false, de02F0D }, { 0x02F0E, false, de02F0E }, { 0x02F0F, false, de02F0F }, +{ 0x02F10, false, de02F10 }, { 0x02F11, false, de02F11 }, { 0x02F12, false, de02F12 }, { 0x02F13, false, de02F13 }, +{ 0x02F14, false, de02F14 }, { 0x02F15, false, de02F15 }, { 0x02F16, false, de02F16 }, { 0x02F17, false, de02F17 }, +{ 0x02F18, false, de02F18 }, { 0x02F19, false, de02F19 }, { 0x02F1A, false, de02F1A }, { 0x02F1B, false, de02F1B }, +{ 0x02F1C, false, de02F1C }, { 0x02F1D, false, de02F1D }, { 0x02F1E, false, de02F1E }, { 0x02F1F, false, de02F1F }, +{ 0x02F20, false, de02F20 }, { 0x02F21, false, de02F21 }, { 0x02F22, false, de02F22 }, { 0x02F23, false, de02F23 }, +{ 0x02F24, false, de02F24 }, { 0x02F25, false, de02F25 }, { 0x02F26, false, de02F26 }, { 0x02F27, false, de02F27 }, +{ 0x02F28, false, de02F28 }, { 0x02F29, false, de02F29 }, { 0x02F2A, false, de02F2A }, { 0x02F2B, false, de02F2B }, +{ 0x02F2C, false, de02F2C }, { 0x02F2D, false, de02F2D }, { 0x02F2E, false, de02F2E }, { 0x02F2F, false, de02F2F }, +{ 0x02F30, false, de02F30 }, { 0x02F31, false, de02F31 }, { 0x02F32, false, de02F32 }, { 0x02F33, false, de02F33 }, +{ 0x02F34, false, de02F34 }, { 0x02F35, false, de02F35 }, { 0x02F36, false, de02F36 }, { 0x02F37, false, de02F37 }, +{ 0x02F38, false, de02F38 }, { 0x02F39, false, de02F39 }, { 0x02F3A, false, de02F3A }, { 0x02F3B, false, de02F3B }, +{ 0x02F3C, false, de02F3C }, { 0x02F3D, false, de02F3D }, { 0x02F3E, false, de02F3E }, { 0x02F3F, false, de02F3F }, +{ 0x02F40, false, de02F40 }, { 0x02F41, false, de02F41 }, { 0x02F42, false, de02F42 }, { 0x02F43, false, de02F43 }, +{ 0x02F44, false, de02F44 }, { 0x02F45, false, de02F45 }, { 0x02F46, false, de02F46 }, { 0x02F47, false, de02F47 }, +{ 0x02F48, false, de02F48 }, { 0x02F49, false, de02F49 }, { 0x02F4A, false, de02F4A }, { 0x02F4B, false, de02F4B }, +{ 0x02F4C, false, de02F4C }, { 0x02F4D, false, de02F4D }, { 0x02F4E, false, de02F4E }, { 0x02F4F, false, de02F4F }, +{ 0x02F50, false, de02F50 }, { 0x02F51, false, de02F51 }, { 0x02F52, false, de02F52 }, { 0x02F53, false, de02F53 }, +{ 0x02F54, false, de02F54 }, { 0x02F55, false, de02F55 }, { 0x02F56, false, de02F56 }, { 0x02F57, false, de02F57 }, +{ 0x02F58, false, de02F58 }, { 0x02F59, false, de02F59 }, { 0x02F5A, false, de02F5A }, { 0x02F5B, false, de02F5B }, +{ 0x02F5C, false, de02F5C }, { 0x02F5D, false, de02F5D }, { 0x02F5E, false, de02F5E }, { 0x02F5F, false, de02F5F }, +{ 0x02F60, false, de02F60 }, { 0x02F61, false, de02F61 }, { 0x02F62, false, de02F62 }, { 0x02F63, false, de02F63 }, +{ 0x02F64, false, de02F64 }, { 0x02F65, false, de02F65 }, { 0x02F66, false, de02F66 }, { 0x02F67, false, de02F67 }, +{ 0x02F68, false, de02F68 }, { 0x02F69, false, de02F69 }, { 0x02F6A, false, de02F6A }, { 0x02F6B, false, de02F6B }, +{ 0x02F6C, false, de02F6C }, { 0x02F6D, false, de02F6D }, { 0x02F6E, false, de02F6E }, { 0x02F6F, false, de02F6F }, +{ 0x02F70, false, de02F70 }, { 0x02F71, false, de02F71 }, { 0x02F72, false, de02F72 }, { 0x02F73, false, de02F73 }, +{ 0x02F74, false, de02F74 }, { 0x02F75, false, de02F75 }, { 0x02F76, false, de02F76 }, { 0x02F77, false, de02F77 }, +{ 0x02F78, false, de02F78 }, { 0x02F79, false, de02F79 }, { 0x02F7A, false, de02F7A }, { 0x02F7B, false, de02F7B }, +{ 0x02F7C, false, de02F7C }, { 0x02F7D, false, de02F7D }, { 0x02F7E, false, de02F7E }, { 0x02F7F, false, de02F7F }, +{ 0x02F80, false, de02F80 }, { 0x02F81, false, de02F81 }, { 0x02F82, false, de02F82 }, { 0x02F83, false, de02F83 }, +{ 0x02F84, false, de02F84 }, { 0x02F85, false, de02F85 }, { 0x02F86, false, de02F86 }, { 0x02F87, false, de02F87 }, +{ 0x02F88, false, de02F88 }, { 0x02F89, false, de02F89 }, { 0x02F8A, false, de02F8A }, { 0x02F8B, false, de02F8B }, +{ 0x02F8C, false, de02F8C }, { 0x02F8D, false, de02F8D }, { 0x02F8E, false, de02F8E }, { 0x02F8F, false, de02F8F }, +{ 0x02F90, false, de02F90 }, { 0x02F91, false, de02F91 }, { 0x02F92, false, de02F92 }, { 0x02F93, false, de02F93 }, +{ 0x02F94, false, de02F94 }, { 0x02F95, false, de02F95 }, { 0x02F96, false, de02F96 }, { 0x02F97, false, de02F97 }, +{ 0x02F98, false, de02F98 }, { 0x02F99, false, de02F99 }, { 0x02F9A, false, de02F9A }, { 0x02F9B, false, de02F9B }, +{ 0x02F9C, false, de02F9C }, { 0x02F9D, false, de02F9D }, { 0x02F9E, false, de02F9E }, { 0x02F9F, false, de02F9F }, +{ 0x02FA0, false, de02FA0 }, { 0x02FA1, false, de02FA1 }, { 0x02FA2, false, de02FA2 }, { 0x02FA3, false, de02FA3 }, +{ 0x02FA4, false, de02FA4 }, { 0x02FA5, false, de02FA5 }, { 0x02FA6, false, de02FA6 }, { 0x02FA7, false, de02FA7 }, +{ 0x02FA8, false, de02FA8 }, { 0x02FA9, false, de02FA9 }, { 0x02FAA, false, de02FAA }, { 0x02FAB, false, de02FAB }, +{ 0x02FAC, false, de02FAC }, { 0x02FAD, false, de02FAD }, { 0x02FAE, false, de02FAE }, { 0x02FAF, false, de02FAF }, +{ 0x02FB0, false, de02FB0 }, { 0x02FB1, false, de02FB1 }, { 0x02FB2, false, de02FB2 }, { 0x02FB3, false, de02FB3 }, +{ 0x02FB4, false, de02FB4 }, { 0x02FB5, false, de02FB5 }, { 0x02FB6, false, de02FB6 }, { 0x02FB7, false, de02FB7 }, +{ 0x02FB8, false, de02FB8 }, { 0x02FB9, false, de02FB9 }, { 0x02FBA, false, de02FBA }, { 0x02FBB, false, de02FBB }, +{ 0x02FBC, false, de02FBC }, { 0x02FBD, false, de02FBD }, { 0x02FBE, false, de02FBE }, { 0x02FBF, false, de02FBF }, +{ 0x02FC0, false, de02FC0 }, { 0x02FC1, false, de02FC1 }, { 0x02FC2, false, de02FC2 }, { 0x02FC3, false, de02FC3 }, +{ 0x02FC4, false, de02FC4 }, { 0x02FC5, false, de02FC5 }, { 0x02FC6, false, de02FC6 }, { 0x02FC7, false, de02FC7 }, +{ 0x02FC8, false, de02FC8 }, { 0x02FC9, false, de02FC9 }, { 0x02FCA, false, de02FCA }, { 0x02FCB, false, de02FCB }, +{ 0x02FCC, false, de02FCC }, { 0x02FCD, false, de02FCD }, { 0x02FCE, false, de02FCE }, { 0x02FCF, false, de02FCF }, +{ 0x02FD0, false, de02FD0 }, { 0x02FD1, false, de02FD1 }, { 0x02FD2, false, de02FD2 }, { 0x02FD3, false, de02FD3 }, +{ 0x02FD4, false, de02FD4 }, { 0x02FD5, false, de02FD5 }, { 0x03000, false, de03000 }, { 0x03036, false, de03036 }, +{ 0x03038, false, de03038 }, { 0x03039, false, de03039 }, { 0x0303A, false, de0303A }, { 0x0304C, true, de0304C }, +{ 0x0304E, true, de0304E }, { 0x03050, true, de03050 }, { 0x03052, true, de03052 }, { 0x03054, true, de03054 }, +{ 0x03056, true, de03056 }, { 0x03058, true, de03058 }, { 0x0305A, true, de0305A }, { 0x0305C, true, de0305C }, +{ 0x0305E, true, de0305E }, { 0x03060, true, de03060 }, { 0x03062, true, de03062 }, { 0x03065, true, de03065 }, +{ 0x03067, true, de03067 }, { 0x03069, true, de03069 }, { 0x03070, true, de03070 }, { 0x03071, true, de03071 }, +{ 0x03073, true, de03073 }, { 0x03074, true, de03074 }, { 0x03076, true, de03076 }, { 0x03077, true, de03077 }, +{ 0x03079, true, de03079 }, { 0x0307A, true, de0307A }, { 0x0307C, true, de0307C }, { 0x0307D, true, de0307D }, +{ 0x03094, true, de03094 }, { 0x0309B, false, de0309B }, { 0x0309C, false, de0309C }, { 0x0309E, true, de0309E }, +{ 0x0309F, false, de0309F }, { 0x030AC, true, de030AC }, { 0x030AE, true, de030AE }, { 0x030B0, true, de030B0 }, +{ 0x030B2, true, de030B2 }, { 0x030B4, true, de030B4 }, { 0x030B6, true, de030B6 }, { 0x030B8, true, de030B8 }, +{ 0x030BA, true, de030BA }, { 0x030BC, true, de030BC }, { 0x030BE, true, de030BE }, { 0x030C0, true, de030C0 }, +{ 0x030C2, true, de030C2 }, { 0x030C5, true, de030C5 }, { 0x030C7, true, de030C7 }, { 0x030C9, true, de030C9 }, +{ 0x030D0, true, de030D0 }, { 0x030D1, true, de030D1 }, { 0x030D3, true, de030D3 }, { 0x030D4, true, de030D4 }, +{ 0x030D6, true, de030D6 }, { 0x030D7, true, de030D7 }, { 0x030D9, true, de030D9 }, { 0x030DA, true, de030DA }, +{ 0x030DC, true, de030DC }, { 0x030DD, true, de030DD }, { 0x030F4, true, de030F4 }, { 0x030F7, true, de030F7 }, +{ 0x030F8, true, de030F8 }, { 0x030F9, true, de030F9 }, { 0x030FA, true, de030FA }, { 0x030FE, true, de030FE }, +{ 0x030FF, false, de030FF }, { 0x03131, false, de03131 }, { 0x03132, false, de03132 }, { 0x03133, false, de03133 }, +{ 0x03134, false, de03134 }, { 0x03135, false, de03135 }, { 0x03136, false, de03136 }, { 0x03137, false, de03137 }, +{ 0x03138, false, de03138 }, { 0x03139, false, de03139 }, { 0x0313A, false, de0313A }, { 0x0313B, false, de0313B }, +{ 0x0313C, false, de0313C }, { 0x0313D, false, de0313D }, { 0x0313E, false, de0313E }, { 0x0313F, false, de0313F }, +{ 0x03140, false, de03140 }, { 0x03141, false, de03141 }, { 0x03142, false, de03142 }, { 0x03143, false, de03143 }, +{ 0x03144, false, de03144 }, { 0x03145, false, de03145 }, { 0x03146, false, de03146 }, { 0x03147, false, de03147 }, +{ 0x03148, false, de03148 }, { 0x03149, false, de03149 }, { 0x0314A, false, de0314A }, { 0x0314B, false, de0314B }, +{ 0x0314C, false, de0314C }, { 0x0314D, false, de0314D }, { 0x0314E, false, de0314E }, { 0x0314F, false, de0314F }, +{ 0x03150, false, de03150 }, { 0x03151, false, de03151 }, { 0x03152, false, de03152 }, { 0x03153, false, de03153 }, +{ 0x03154, false, de03154 }, { 0x03155, false, de03155 }, { 0x03156, false, de03156 }, { 0x03157, false, de03157 }, +{ 0x03158, false, de03158 }, { 0x03159, false, de03159 }, { 0x0315A, false, de0315A }, { 0x0315B, false, de0315B }, +{ 0x0315C, false, de0315C }, { 0x0315D, false, de0315D }, { 0x0315E, false, de0315E }, { 0x0315F, false, de0315F }, +{ 0x03160, false, de03160 }, { 0x03161, false, de03161 }, { 0x03162, false, de03162 }, { 0x03163, false, de03163 }, +{ 0x03164, false, de03164 }, { 0x03165, false, de03165 }, { 0x03166, false, de03166 }, { 0x03167, false, de03167 }, +{ 0x03168, false, de03168 }, { 0x03169, false, de03169 }, { 0x0316A, false, de0316A }, { 0x0316B, false, de0316B }, +{ 0x0316C, false, de0316C }, { 0x0316D, false, de0316D }, { 0x0316E, false, de0316E }, { 0x0316F, false, de0316F }, +{ 0x03170, false, de03170 }, { 0x03171, false, de03171 }, { 0x03172, false, de03172 }, { 0x03173, false, de03173 }, +{ 0x03174, false, de03174 }, { 0x03175, false, de03175 }, { 0x03176, false, de03176 }, { 0x03177, false, de03177 }, +{ 0x03178, false, de03178 }, { 0x03179, false, de03179 }, { 0x0317A, false, de0317A }, { 0x0317B, false, de0317B }, +{ 0x0317C, false, de0317C }, { 0x0317D, false, de0317D }, { 0x0317E, false, de0317E }, { 0x0317F, false, de0317F }, +{ 0x03180, false, de03180 }, { 0x03181, false, de03181 }, { 0x03182, false, de03182 }, { 0x03183, false, de03183 }, +{ 0x03184, false, de03184 }, { 0x03185, false, de03185 }, { 0x03186, false, de03186 }, { 0x03187, false, de03187 }, +{ 0x03188, false, de03188 }, { 0x03189, false, de03189 }, { 0x0318A, false, de0318A }, { 0x0318B, false, de0318B }, +{ 0x0318C, false, de0318C }, { 0x0318D, false, de0318D }, { 0x0318E, false, de0318E }, { 0x03192, false, de03192 }, +{ 0x03193, false, de03193 }, { 0x03194, false, de03194 }, { 0x03195, false, de03195 }, { 0x03196, false, de03196 }, +{ 0x03197, false, de03197 }, { 0x03198, false, de03198 }, { 0x03199, false, de03199 }, { 0x0319A, false, de0319A }, +{ 0x0319B, false, de0319B }, { 0x0319C, false, de0319C }, { 0x0319D, false, de0319D }, { 0x0319E, false, de0319E }, +{ 0x0319F, false, de0319F }, { 0x03200, false, de03200 }, { 0x03201, false, de03201 }, { 0x03202, false, de03202 }, +{ 0x03203, false, de03203 }, { 0x03204, false, de03204 }, { 0x03205, false, de03205 }, { 0x03206, false, de03206 }, +{ 0x03207, false, de03207 }, { 0x03208, false, de03208 }, { 0x03209, false, de03209 }, { 0x0320A, false, de0320A }, +{ 0x0320B, false, de0320B }, { 0x0320C, false, de0320C }, { 0x0320D, false, de0320D }, { 0x0320E, false, de0320E }, +{ 0x0320F, false, de0320F }, { 0x03210, false, de03210 }, { 0x03211, false, de03211 }, { 0x03212, false, de03212 }, +{ 0x03213, false, de03213 }, { 0x03214, false, de03214 }, { 0x03215, false, de03215 }, { 0x03216, false, de03216 }, +{ 0x03217, false, de03217 }, { 0x03218, false, de03218 }, { 0x03219, false, de03219 }, { 0x0321A, false, de0321A }, +{ 0x0321B, false, de0321B }, { 0x0321C, false, de0321C }, { 0x0321D, false, de0321D }, { 0x0321E, false, de0321E }, +{ 0x03220, false, de03220 }, { 0x03221, false, de03221 }, { 0x03222, false, de03222 }, { 0x03223, false, de03223 }, +{ 0x03224, false, de03224 }, { 0x03225, false, de03225 }, { 0x03226, false, de03226 }, { 0x03227, false, de03227 }, +{ 0x03228, false, de03228 }, { 0x03229, false, de03229 }, { 0x0322A, false, de0322A }, { 0x0322B, false, de0322B }, +{ 0x0322C, false, de0322C }, { 0x0322D, false, de0322D }, { 0x0322E, false, de0322E }, { 0x0322F, false, de0322F }, +{ 0x03230, false, de03230 }, { 0x03231, false, de03231 }, { 0x03232, false, de03232 }, { 0x03233, false, de03233 }, +{ 0x03234, false, de03234 }, { 0x03235, false, de03235 }, { 0x03236, false, de03236 }, { 0x03237, false, de03237 }, +{ 0x03238, false, de03238 }, { 0x03239, false, de03239 }, { 0x0323A, false, de0323A }, { 0x0323B, false, de0323B }, +{ 0x0323C, false, de0323C }, { 0x0323D, false, de0323D }, { 0x0323E, false, de0323E }, { 0x0323F, false, de0323F }, +{ 0x03240, false, de03240 }, { 0x03241, false, de03241 }, { 0x03242, false, de03242 }, { 0x03243, false, de03243 }, +{ 0x03250, false, de03250 }, { 0x03251, false, de03251 }, { 0x03252, false, de03252 }, { 0x03253, false, de03253 }, +{ 0x03254, false, de03254 }, { 0x03255, false, de03255 }, { 0x03256, false, de03256 }, { 0x03257, false, de03257 }, +{ 0x03258, false, de03258 }, { 0x03259, false, de03259 }, { 0x0325A, false, de0325A }, { 0x0325B, false, de0325B }, +{ 0x0325C, false, de0325C }, { 0x0325D, false, de0325D }, { 0x0325E, false, de0325E }, { 0x0325F, false, de0325F }, +{ 0x03260, false, de03260 }, { 0x03261, false, de03261 }, { 0x03262, false, de03262 }, { 0x03263, false, de03263 }, +{ 0x03264, false, de03264 }, { 0x03265, false, de03265 }, { 0x03266, false, de03266 }, { 0x03267, false, de03267 }, +{ 0x03268, false, de03268 }, { 0x03269, false, de03269 }, { 0x0326A, false, de0326A }, { 0x0326B, false, de0326B }, +{ 0x0326C, false, de0326C }, { 0x0326D, false, de0326D }, { 0x0326E, false, de0326E }, { 0x0326F, false, de0326F }, +{ 0x03270, false, de03270 }, { 0x03271, false, de03271 }, { 0x03272, false, de03272 }, { 0x03273, false, de03273 }, +{ 0x03274, false, de03274 }, { 0x03275, false, de03275 }, { 0x03276, false, de03276 }, { 0x03277, false, de03277 }, +{ 0x03278, false, de03278 }, { 0x03279, false, de03279 }, { 0x0327A, false, de0327A }, { 0x0327B, false, de0327B }, +{ 0x0327C, false, de0327C }, { 0x0327D, false, de0327D }, { 0x0327E, false, de0327E }, { 0x03280, false, de03280 }, +{ 0x03281, false, de03281 }, { 0x03282, false, de03282 }, { 0x03283, false, de03283 }, { 0x03284, false, de03284 }, +{ 0x03285, false, de03285 }, { 0x03286, false, de03286 }, { 0x03287, false, de03287 }, { 0x03288, false, de03288 }, +{ 0x03289, false, de03289 }, { 0x0328A, false, de0328A }, { 0x0328B, false, de0328B }, { 0x0328C, false, de0328C }, +{ 0x0328D, false, de0328D }, { 0x0328E, false, de0328E }, { 0x0328F, false, de0328F }, { 0x03290, false, de03290 }, +{ 0x03291, false, de03291 }, { 0x03292, false, de03292 }, { 0x03293, false, de03293 }, { 0x03294, false, de03294 }, +{ 0x03295, false, de03295 }, { 0x03296, false, de03296 }, { 0x03297, false, de03297 }, { 0x03298, false, de03298 }, +{ 0x03299, false, de03299 }, { 0x0329A, false, de0329A }, { 0x0329B, false, de0329B }, { 0x0329C, false, de0329C }, +{ 0x0329D, false, de0329D }, { 0x0329E, false, de0329E }, { 0x0329F, false, de0329F }, { 0x032A0, false, de032A0 }, +{ 0x032A1, false, de032A1 }, { 0x032A2, false, de032A2 }, { 0x032A3, false, de032A3 }, { 0x032A4, false, de032A4 }, +{ 0x032A5, false, de032A5 }, { 0x032A6, false, de032A6 }, { 0x032A7, false, de032A7 }, { 0x032A8, false, de032A8 }, +{ 0x032A9, false, de032A9 }, { 0x032AA, false, de032AA }, { 0x032AB, false, de032AB }, { 0x032AC, false, de032AC }, +{ 0x032AD, false, de032AD }, { 0x032AE, false, de032AE }, { 0x032AF, false, de032AF }, { 0x032B0, false, de032B0 }, +{ 0x032B1, false, de032B1 }, { 0x032B2, false, de032B2 }, { 0x032B3, false, de032B3 }, { 0x032B4, false, de032B4 }, +{ 0x032B5, false, de032B5 }, { 0x032B6, false, de032B6 }, { 0x032B7, false, de032B7 }, { 0x032B8, false, de032B8 }, +{ 0x032B9, false, de032B9 }, { 0x032BA, false, de032BA }, { 0x032BB, false, de032BB }, { 0x032BC, false, de032BC }, +{ 0x032BD, false, de032BD }, { 0x032BE, false, de032BE }, { 0x032BF, false, de032BF }, { 0x032C0, false, de032C0 }, +{ 0x032C1, false, de032C1 }, { 0x032C2, false, de032C2 }, { 0x032C3, false, de032C3 }, { 0x032C4, false, de032C4 }, +{ 0x032C5, false, de032C5 }, { 0x032C6, false, de032C6 }, { 0x032C7, false, de032C7 }, { 0x032C8, false, de032C8 }, +{ 0x032C9, false, de032C9 }, { 0x032CA, false, de032CA }, { 0x032CB, false, de032CB }, { 0x032CC, false, de032CC }, +{ 0x032CD, false, de032CD }, { 0x032CE, false, de032CE }, { 0x032CF, false, de032CF }, { 0x032D0, false, de032D0 }, +{ 0x032D1, false, de032D1 }, { 0x032D2, false, de032D2 }, { 0x032D3, false, de032D3 }, { 0x032D4, false, de032D4 }, +{ 0x032D5, false, de032D5 }, { 0x032D6, false, de032D6 }, { 0x032D7, false, de032D7 }, { 0x032D8, false, de032D8 }, +{ 0x032D9, false, de032D9 }, { 0x032DA, false, de032DA }, { 0x032DB, false, de032DB }, { 0x032DC, false, de032DC }, +{ 0x032DD, false, de032DD }, { 0x032DE, false, de032DE }, { 0x032DF, false, de032DF }, { 0x032E0, false, de032E0 }, +{ 0x032E1, false, de032E1 }, { 0x032E2, false, de032E2 }, { 0x032E3, false, de032E3 }, { 0x032E4, false, de032E4 }, +{ 0x032E5, false, de032E5 }, { 0x032E6, false, de032E6 }, { 0x032E7, false, de032E7 }, { 0x032E8, false, de032E8 }, +{ 0x032E9, false, de032E9 }, { 0x032EA, false, de032EA }, { 0x032EB, false, de032EB }, { 0x032EC, false, de032EC }, +{ 0x032ED, false, de032ED }, { 0x032EE, false, de032EE }, { 0x032EF, false, de032EF }, { 0x032F0, false, de032F0 }, +{ 0x032F1, false, de032F1 }, { 0x032F2, false, de032F2 }, { 0x032F3, false, de032F3 }, { 0x032F4, false, de032F4 }, +{ 0x032F5, false, de032F5 }, { 0x032F6, false, de032F6 }, { 0x032F7, false, de032F7 }, { 0x032F8, false, de032F8 }, +{ 0x032F9, false, de032F9 }, { 0x032FA, false, de032FA }, { 0x032FB, false, de032FB }, { 0x032FC, false, de032FC }, +{ 0x032FD, false, de032FD }, { 0x032FE, false, de032FE }, { 0x03300, false, de03300 }, { 0x03301, false, de03301 }, +{ 0x03302, false, de03302 }, { 0x03303, false, de03303 }, { 0x03304, false, de03304 }, { 0x03305, false, de03305 }, +{ 0x03306, false, de03306 }, { 0x03307, false, de03307 }, { 0x03308, false, de03308 }, { 0x03309, false, de03309 }, +{ 0x0330A, false, de0330A }, { 0x0330B, false, de0330B }, { 0x0330C, false, de0330C }, { 0x0330D, false, de0330D }, +{ 0x0330E, false, de0330E }, { 0x0330F, false, de0330F }, { 0x03310, false, de03310 }, { 0x03311, false, de03311 }, +{ 0x03312, false, de03312 }, { 0x03313, false, de03313 }, { 0x03314, false, de03314 }, { 0x03315, false, de03315 }, +{ 0x03316, false, de03316 }, { 0x03317, false, de03317 }, { 0x03318, false, de03318 }, { 0x03319, false, de03319 }, +{ 0x0331A, false, de0331A }, { 0x0331B, false, de0331B }, { 0x0331C, false, de0331C }, { 0x0331D, false, de0331D }, +{ 0x0331E, false, de0331E }, { 0x0331F, false, de0331F }, { 0x03320, false, de03320 }, { 0x03321, false, de03321 }, +{ 0x03322, false, de03322 }, { 0x03323, false, de03323 }, { 0x03324, false, de03324 }, { 0x03325, false, de03325 }, +{ 0x03326, false, de03326 }, { 0x03327, false, de03327 }, { 0x03328, false, de03328 }, { 0x03329, false, de03329 }, +{ 0x0332A, false, de0332A }, { 0x0332B, false, de0332B }, { 0x0332C, false, de0332C }, { 0x0332D, false, de0332D }, +{ 0x0332E, false, de0332E }, { 0x0332F, false, de0332F }, { 0x03330, false, de03330 }, { 0x03331, false, de03331 }, +{ 0x03332, false, de03332 }, { 0x03333, false, de03333 }, { 0x03334, false, de03334 }, { 0x03335, false, de03335 }, +{ 0x03336, false, de03336 }, { 0x03337, false, de03337 }, { 0x03338, false, de03338 }, { 0x03339, false, de03339 }, +{ 0x0333A, false, de0333A }, { 0x0333B, false, de0333B }, { 0x0333C, false, de0333C }, { 0x0333D, false, de0333D }, +{ 0x0333E, false, de0333E }, { 0x0333F, false, de0333F }, { 0x03340, false, de03340 }, { 0x03341, false, de03341 }, +{ 0x03342, false, de03342 }, { 0x03343, false, de03343 }, { 0x03344, false, de03344 }, { 0x03345, false, de03345 }, +{ 0x03346, false, de03346 }, { 0x03347, false, de03347 }, { 0x03348, false, de03348 }, { 0x03349, false, de03349 }, +{ 0x0334A, false, de0334A }, { 0x0334B, false, de0334B }, { 0x0334C, false, de0334C }, { 0x0334D, false, de0334D }, +{ 0x0334E, false, de0334E }, { 0x0334F, false, de0334F }, { 0x03350, false, de03350 }, { 0x03351, false, de03351 }, +{ 0x03352, false, de03352 }, { 0x03353, false, de03353 }, { 0x03354, false, de03354 }, { 0x03355, false, de03355 }, +{ 0x03356, false, de03356 }, { 0x03357, false, de03357 }, { 0x03358, false, de03358 }, { 0x03359, false, de03359 }, +{ 0x0335A, false, de0335A }, { 0x0335B, false, de0335B }, { 0x0335C, false, de0335C }, { 0x0335D, false, de0335D }, +{ 0x0335E, false, de0335E }, { 0x0335F, false, de0335F }, { 0x03360, false, de03360 }, { 0x03361, false, de03361 }, +{ 0x03362, false, de03362 }, { 0x03363, false, de03363 }, { 0x03364, false, de03364 }, { 0x03365, false, de03365 }, +{ 0x03366, false, de03366 }, { 0x03367, false, de03367 }, { 0x03368, false, de03368 }, { 0x03369, false, de03369 }, +{ 0x0336A, false, de0336A }, { 0x0336B, false, de0336B }, { 0x0336C, false, de0336C }, { 0x0336D, false, de0336D }, +{ 0x0336E, false, de0336E }, { 0x0336F, false, de0336F }, { 0x03370, false, de03370 }, { 0x03371, false, de03371 }, +{ 0x03372, false, de03372 }, { 0x03373, false, de03373 }, { 0x03374, false, de03374 }, { 0x03375, false, de03375 }, +{ 0x03376, false, de03376 }, { 0x03377, false, de03377 }, { 0x03378, false, de03378 }, { 0x03379, false, de03379 }, +{ 0x0337A, false, de0337A }, { 0x0337B, false, de0337B }, { 0x0337C, false, de0337C }, { 0x0337D, false, de0337D }, +{ 0x0337E, false, de0337E }, { 0x0337F, false, de0337F }, { 0x03380, false, de03380 }, { 0x03381, false, de03381 }, +{ 0x03382, false, de03382 }, { 0x03383, false, de03383 }, { 0x03384, false, de03384 }, { 0x03385, false, de03385 }, +{ 0x03386, false, de03386 }, { 0x03387, false, de03387 }, { 0x03388, false, de03388 }, { 0x03389, false, de03389 }, +{ 0x0338A, false, de0338A }, { 0x0338B, false, de0338B }, { 0x0338C, false, de0338C }, { 0x0338D, false, de0338D }, +{ 0x0338E, false, de0338E }, { 0x0338F, false, de0338F }, { 0x03390, false, de03390 }, { 0x03391, false, de03391 }, +{ 0x03392, false, de03392 }, { 0x03393, false, de03393 }, { 0x03394, false, de03394 }, { 0x03395, false, de03395 }, +{ 0x03396, false, de03396 }, { 0x03397, false, de03397 }, { 0x03398, false, de03398 }, { 0x03399, false, de03399 }, +{ 0x0339A, false, de0339A }, { 0x0339B, false, de0339B }, { 0x0339C, false, de0339C }, { 0x0339D, false, de0339D }, +{ 0x0339E, false, de0339E }, { 0x0339F, false, de0339F }, { 0x033A0, false, de033A0 }, { 0x033A1, false, de033A1 }, +{ 0x033A2, false, de033A2 }, { 0x033A3, false, de033A3 }, { 0x033A4, false, de033A4 }, { 0x033A5, false, de033A5 }, +{ 0x033A6, false, de033A6 }, { 0x033A7, false, de033A7 }, { 0x033A8, false, de033A8 }, { 0x033A9, false, de033A9 }, +{ 0x033AA, false, de033AA }, { 0x033AB, false, de033AB }, { 0x033AC, false, de033AC }, { 0x033AD, false, de033AD }, +{ 0x033AE, false, de033AE }, { 0x033AF, false, de033AF }, { 0x033B0, false, de033B0 }, { 0x033B1, false, de033B1 }, +{ 0x033B2, false, de033B2 }, { 0x033B3, false, de033B3 }, { 0x033B4, false, de033B4 }, { 0x033B5, false, de033B5 }, +{ 0x033B6, false, de033B6 }, { 0x033B7, false, de033B7 }, { 0x033B8, false, de033B8 }, { 0x033B9, false, de033B9 }, +{ 0x033BA, false, de033BA }, { 0x033BB, false, de033BB }, { 0x033BC, false, de033BC }, { 0x033BD, false, de033BD }, +{ 0x033BE, false, de033BE }, { 0x033BF, false, de033BF }, { 0x033C0, false, de033C0 }, { 0x033C1, false, de033C1 }, +{ 0x033C2, false, de033C2 }, { 0x033C3, false, de033C3 }, { 0x033C4, false, de033C4 }, { 0x033C5, false, de033C5 }, +{ 0x033C6, false, de033C6 }, { 0x033C7, false, de033C7 }, { 0x033C8, false, de033C8 }, { 0x033C9, false, de033C9 }, +{ 0x033CA, false, de033CA }, { 0x033CB, false, de033CB }, { 0x033CC, false, de033CC }, { 0x033CD, false, de033CD }, +{ 0x033CE, false, de033CE }, { 0x033CF, false, de033CF }, { 0x033D0, false, de033D0 }, { 0x033D1, false, de033D1 }, +{ 0x033D2, false, de033D2 }, { 0x033D3, false, de033D3 }, { 0x033D4, false, de033D4 }, { 0x033D5, false, de033D5 }, +{ 0x033D6, false, de033D6 }, { 0x033D7, false, de033D7 }, { 0x033D8, false, de033D8 }, { 0x033D9, false, de033D9 }, +{ 0x033DA, false, de033DA }, { 0x033DB, false, de033DB }, { 0x033DC, false, de033DC }, { 0x033DD, false, de033DD }, +{ 0x033DE, false, de033DE }, { 0x033DF, false, de033DF }, { 0x033E0, false, de033E0 }, { 0x033E1, false, de033E1 }, +{ 0x033E2, false, de033E2 }, { 0x033E3, false, de033E3 }, { 0x033E4, false, de033E4 }, { 0x033E5, false, de033E5 }, +{ 0x033E6, false, de033E6 }, { 0x033E7, false, de033E7 }, { 0x033E8, false, de033E8 }, { 0x033E9, false, de033E9 }, +{ 0x033EA, false, de033EA }, { 0x033EB, false, de033EB }, { 0x033EC, false, de033EC }, { 0x033ED, false, de033ED }, +{ 0x033EE, false, de033EE }, { 0x033EF, false, de033EF }, { 0x033F0, false, de033F0 }, { 0x033F1, false, de033F1 }, +{ 0x033F2, false, de033F2 }, { 0x033F3, false, de033F3 }, { 0x033F4, false, de033F4 }, { 0x033F5, false, de033F5 }, +{ 0x033F6, false, de033F6 }, { 0x033F7, false, de033F7 }, { 0x033F8, false, de033F8 }, { 0x033F9, false, de033F9 }, +{ 0x033FA, false, de033FA }, { 0x033FB, false, de033FB }, { 0x033FC, false, de033FC }, { 0x033FD, false, de033FD }, +{ 0x033FE, false, de033FE }, { 0x033FF, false, de033FF }, { 0x0F900, true, de0F900 }, { 0x0F901, true, de0F901 }, +{ 0x0F902, true, de0F902 }, { 0x0F903, true, de0F903 }, { 0x0F904, true, de0F904 }, { 0x0F905, true, de0F905 }, +{ 0x0F906, true, de0F906 }, { 0x0F907, true, de0F907 }, { 0x0F908, true, de0F908 }, { 0x0F909, true, de0F909 }, +{ 0x0F90A, true, de0F90A }, { 0x0F90B, true, de0F90B }, { 0x0F90C, true, de0F90C }, { 0x0F90D, true, de0F90D }, +{ 0x0F90E, true, de0F90E }, { 0x0F90F, true, de0F90F }, { 0x0F910, true, de0F910 }, { 0x0F911, true, de0F911 }, +{ 0x0F912, true, de0F912 }, { 0x0F913, true, de0F913 }, { 0x0F914, true, de0F914 }, { 0x0F915, true, de0F915 }, +{ 0x0F916, true, de0F916 }, { 0x0F917, true, de0F917 }, { 0x0F918, true, de0F918 }, { 0x0F919, true, de0F919 }, +{ 0x0F91A, true, de0F91A }, { 0x0F91B, true, de0F91B }, { 0x0F91C, true, de0F91C }, { 0x0F91D, true, de0F91D }, +{ 0x0F91E, true, de0F91E }, { 0x0F91F, true, de0F91F }, { 0x0F920, true, de0F920 }, { 0x0F921, true, de0F921 }, +{ 0x0F922, true, de0F922 }, { 0x0F923, true, de0F923 }, { 0x0F924, true, de0F924 }, { 0x0F925, true, de0F925 }, +{ 0x0F926, true, de0F926 }, { 0x0F927, true, de0F927 }, { 0x0F928, true, de0F928 }, { 0x0F929, true, de0F929 }, +{ 0x0F92A, true, de0F92A }, { 0x0F92B, true, de0F92B }, { 0x0F92C, true, de0F92C }, { 0x0F92D, true, de0F92D }, +{ 0x0F92E, true, de0F92E }, { 0x0F92F, true, de0F92F }, { 0x0F930, true, de0F930 }, { 0x0F931, true, de0F931 }, +{ 0x0F932, true, de0F932 }, { 0x0F933, true, de0F933 }, { 0x0F934, true, de0F934 }, { 0x0F935, true, de0F935 }, +{ 0x0F936, true, de0F936 }, { 0x0F937, true, de0F937 }, { 0x0F938, true, de0F938 }, { 0x0F939, true, de0F939 }, +{ 0x0F93A, true, de0F93A }, { 0x0F93B, true, de0F93B }, { 0x0F93C, true, de0F93C }, { 0x0F93D, true, de0F93D }, +{ 0x0F93E, true, de0F93E }, { 0x0F93F, true, de0F93F }, { 0x0F940, true, de0F940 }, { 0x0F941, true, de0F941 }, +{ 0x0F942, true, de0F942 }, { 0x0F943, true, de0F943 }, { 0x0F944, true, de0F944 }, { 0x0F945, true, de0F945 }, +{ 0x0F946, true, de0F946 }, { 0x0F947, true, de0F947 }, { 0x0F948, true, de0F948 }, { 0x0F949, true, de0F949 }, +{ 0x0F94A, true, de0F94A }, { 0x0F94B, true, de0F94B }, { 0x0F94C, true, de0F94C }, { 0x0F94D, true, de0F94D }, +{ 0x0F94E, true, de0F94E }, { 0x0F94F, true, de0F94F }, { 0x0F950, true, de0F950 }, { 0x0F951, true, de0F951 }, +{ 0x0F952, true, de0F952 }, { 0x0F953, true, de0F953 }, { 0x0F954, true, de0F954 }, { 0x0F955, true, de0F955 }, +{ 0x0F956, true, de0F956 }, { 0x0F957, true, de0F957 }, { 0x0F958, true, de0F958 }, { 0x0F959, true, de0F959 }, +{ 0x0F95A, true, de0F95A }, { 0x0F95B, true, de0F95B }, { 0x0F95C, true, de0F95C }, { 0x0F95D, true, de0F95D }, +{ 0x0F95E, true, de0F95E }, { 0x0F95F, true, de0F95F }, { 0x0F960, true, de0F960 }, { 0x0F961, true, de0F961 }, +{ 0x0F962, true, de0F962 }, { 0x0F963, true, de0F963 }, { 0x0F964, true, de0F964 }, { 0x0F965, true, de0F965 }, +{ 0x0F966, true, de0F966 }, { 0x0F967, true, de0F967 }, { 0x0F968, true, de0F968 }, { 0x0F969, true, de0F969 }, +{ 0x0F96A, true, de0F96A }, { 0x0F96B, true, de0F96B }, { 0x0F96C, true, de0F96C }, { 0x0F96D, true, de0F96D }, +{ 0x0F96E, true, de0F96E }, { 0x0F96F, true, de0F96F }, { 0x0F970, true, de0F970 }, { 0x0F971, true, de0F971 }, +{ 0x0F972, true, de0F972 }, { 0x0F973, true, de0F973 }, { 0x0F974, true, de0F974 }, { 0x0F975, true, de0F975 }, +{ 0x0F976, true, de0F976 }, { 0x0F977, true, de0F977 }, { 0x0F978, true, de0F978 }, { 0x0F979, true, de0F979 }, +{ 0x0F97A, true, de0F97A }, { 0x0F97B, true, de0F97B }, { 0x0F97C, true, de0F97C }, { 0x0F97D, true, de0F97D }, +{ 0x0F97E, true, de0F97E }, { 0x0F97F, true, de0F97F }, { 0x0F980, true, de0F980 }, { 0x0F981, true, de0F981 }, +{ 0x0F982, true, de0F982 }, { 0x0F983, true, de0F983 }, { 0x0F984, true, de0F984 }, { 0x0F985, true, de0F985 }, +{ 0x0F986, true, de0F986 }, { 0x0F987, true, de0F987 }, { 0x0F988, true, de0F988 }, { 0x0F989, true, de0F989 }, +{ 0x0F98A, true, de0F98A }, { 0x0F98B, true, de0F98B }, { 0x0F98C, true, de0F98C }, { 0x0F98D, true, de0F98D }, +{ 0x0F98E, true, de0F98E }, { 0x0F98F, true, de0F98F }, { 0x0F990, true, de0F990 }, { 0x0F991, true, de0F991 }, +{ 0x0F992, true, de0F992 }, { 0x0F993, true, de0F993 }, { 0x0F994, true, de0F994 }, { 0x0F995, true, de0F995 }, +{ 0x0F996, true, de0F996 }, { 0x0F997, true, de0F997 }, { 0x0F998, true, de0F998 }, { 0x0F999, true, de0F999 }, +{ 0x0F99A, true, de0F99A }, { 0x0F99B, true, de0F99B }, { 0x0F99C, true, de0F99C }, { 0x0F99D, true, de0F99D }, +{ 0x0F99E, true, de0F99E }, { 0x0F99F, true, de0F99F }, { 0x0F9A0, true, de0F9A0 }, { 0x0F9A1, true, de0F9A1 }, +{ 0x0F9A2, true, de0F9A2 }, { 0x0F9A3, true, de0F9A3 }, { 0x0F9A4, true, de0F9A4 }, { 0x0F9A5, true, de0F9A5 }, +{ 0x0F9A6, true, de0F9A6 }, { 0x0F9A7, true, de0F9A7 }, { 0x0F9A8, true, de0F9A8 }, { 0x0F9A9, true, de0F9A9 }, +{ 0x0F9AA, true, de0F9AA }, { 0x0F9AB, true, de0F9AB }, { 0x0F9AC, true, de0F9AC }, { 0x0F9AD, true, de0F9AD }, +{ 0x0F9AE, true, de0F9AE }, { 0x0F9AF, true, de0F9AF }, { 0x0F9B0, true, de0F9B0 }, { 0x0F9B1, true, de0F9B1 }, +{ 0x0F9B2, true, de0F9B2 }, { 0x0F9B3, true, de0F9B3 }, { 0x0F9B4, true, de0F9B4 }, { 0x0F9B5, true, de0F9B5 }, +{ 0x0F9B6, true, de0F9B6 }, { 0x0F9B7, true, de0F9B7 }, { 0x0F9B8, true, de0F9B8 }, { 0x0F9B9, true, de0F9B9 }, +{ 0x0F9BA, true, de0F9BA }, { 0x0F9BB, true, de0F9BB }, { 0x0F9BC, true, de0F9BC }, { 0x0F9BD, true, de0F9BD }, +{ 0x0F9BE, true, de0F9BE }, { 0x0F9BF, true, de0F9BF }, { 0x0F9C0, true, de0F9C0 }, { 0x0F9C1, true, de0F9C1 }, +{ 0x0F9C2, true, de0F9C2 }, { 0x0F9C3, true, de0F9C3 }, { 0x0F9C4, true, de0F9C4 }, { 0x0F9C5, true, de0F9C5 }, +{ 0x0F9C6, true, de0F9C6 }, { 0x0F9C7, true, de0F9C7 }, { 0x0F9C8, true, de0F9C8 }, { 0x0F9C9, true, de0F9C9 }, +{ 0x0F9CA, true, de0F9CA }, { 0x0F9CB, true, de0F9CB }, { 0x0F9CC, true, de0F9CC }, { 0x0F9CD, true, de0F9CD }, +{ 0x0F9CE, true, de0F9CE }, { 0x0F9CF, true, de0F9CF }, { 0x0F9D0, true, de0F9D0 }, { 0x0F9D1, true, de0F9D1 }, +{ 0x0F9D2, true, de0F9D2 }, { 0x0F9D3, true, de0F9D3 }, { 0x0F9D4, true, de0F9D4 }, { 0x0F9D5, true, de0F9D5 }, +{ 0x0F9D6, true, de0F9D6 }, { 0x0F9D7, true, de0F9D7 }, { 0x0F9D8, true, de0F9D8 }, { 0x0F9D9, true, de0F9D9 }, +{ 0x0F9DA, true, de0F9DA }, { 0x0F9DB, true, de0F9DB }, { 0x0F9DC, true, de0F9DC }, { 0x0F9DD, true, de0F9DD }, +{ 0x0F9DE, true, de0F9DE }, { 0x0F9DF, true, de0F9DF }, { 0x0F9E0, true, de0F9E0 }, { 0x0F9E1, true, de0F9E1 }, +{ 0x0F9E2, true, de0F9E2 }, { 0x0F9E3, true, de0F9E3 }, { 0x0F9E4, true, de0F9E4 }, { 0x0F9E5, true, de0F9E5 }, +{ 0x0F9E6, true, de0F9E6 }, { 0x0F9E7, true, de0F9E7 }, { 0x0F9E8, true, de0F9E8 }, { 0x0F9E9, true, de0F9E9 }, +{ 0x0F9EA, true, de0F9EA }, { 0x0F9EB, true, de0F9EB }, { 0x0F9EC, true, de0F9EC }, { 0x0F9ED, true, de0F9ED }, +{ 0x0F9EE, true, de0F9EE }, { 0x0F9EF, true, de0F9EF }, { 0x0F9F0, true, de0F9F0 }, { 0x0F9F1, true, de0F9F1 }, +{ 0x0F9F2, true, de0F9F2 }, { 0x0F9F3, true, de0F9F3 }, { 0x0F9F4, true, de0F9F4 }, { 0x0F9F5, true, de0F9F5 }, +{ 0x0F9F6, true, de0F9F6 }, { 0x0F9F7, true, de0F9F7 }, { 0x0F9F8, true, de0F9F8 }, { 0x0F9F9, true, de0F9F9 }, +{ 0x0F9FA, true, de0F9FA }, { 0x0F9FB, true, de0F9FB }, { 0x0F9FC, true, de0F9FC }, { 0x0F9FD, true, de0F9FD }, +{ 0x0F9FE, true, de0F9FE }, { 0x0F9FF, true, de0F9FF }, { 0x0FA00, true, de0FA00 }, { 0x0FA01, true, de0FA01 }, +{ 0x0FA02, true, de0FA02 }, { 0x0FA03, true, de0FA03 }, { 0x0FA04, true, de0FA04 }, { 0x0FA05, true, de0FA05 }, +{ 0x0FA06, true, de0FA06 }, { 0x0FA07, true, de0FA07 }, { 0x0FA08, true, de0FA08 }, { 0x0FA09, true, de0FA09 }, +{ 0x0FA0A, true, de0FA0A }, { 0x0FA0B, true, de0FA0B }, { 0x0FA0C, true, de0FA0C }, { 0x0FA0D, true, de0FA0D }, +{ 0x0FA10, true, de0FA10 }, { 0x0FA12, true, de0FA12 }, { 0x0FA15, true, de0FA15 }, { 0x0FA16, true, de0FA16 }, +{ 0x0FA17, true, de0FA17 }, { 0x0FA18, true, de0FA18 }, { 0x0FA19, true, de0FA19 }, { 0x0FA1A, true, de0FA1A }, +{ 0x0FA1B, true, de0FA1B }, { 0x0FA1C, true, de0FA1C }, { 0x0FA1D, true, de0FA1D }, { 0x0FA1E, true, de0FA1E }, +{ 0x0FA20, true, de0FA20 }, { 0x0FA22, true, de0FA22 }, { 0x0FA25, true, de0FA25 }, { 0x0FA26, true, de0FA26 }, +{ 0x0FA2A, true, de0FA2A }, { 0x0FA2B, true, de0FA2B }, { 0x0FA2C, true, de0FA2C }, { 0x0FA2D, true, de0FA2D }, +{ 0x0FA30, true, de0FA30 }, { 0x0FA31, true, de0FA31 }, { 0x0FA32, true, de0FA32 }, { 0x0FA33, true, de0FA33 }, +{ 0x0FA34, true, de0FA34 }, { 0x0FA35, true, de0FA35 }, { 0x0FA36, true, de0FA36 }, { 0x0FA37, true, de0FA37 }, +{ 0x0FA38, true, de0FA38 }, { 0x0FA39, true, de0FA39 }, { 0x0FA3A, true, de0FA3A }, { 0x0FA3B, true, de0FA3B }, +{ 0x0FA3C, true, de0FA3C }, { 0x0FA3D, true, de0FA3D }, { 0x0FA3E, true, de0FA3E }, { 0x0FA3F, true, de0FA3F }, +{ 0x0FA40, true, de0FA40 }, { 0x0FA41, true, de0FA41 }, { 0x0FA42, true, de0FA42 }, { 0x0FA43, true, de0FA43 }, +{ 0x0FA44, true, de0FA44 }, { 0x0FA45, true, de0FA45 }, { 0x0FA46, true, de0FA46 }, { 0x0FA47, true, de0FA47 }, +{ 0x0FA48, true, de0FA48 }, { 0x0FA49, true, de0FA49 }, { 0x0FA4A, true, de0FA4A }, { 0x0FA4B, true, de0FA4B }, +{ 0x0FA4C, true, de0FA4C }, { 0x0FA4D, true, de0FA4D }, { 0x0FA4E, true, de0FA4E }, { 0x0FA4F, true, de0FA4F }, +{ 0x0FA50, true, de0FA50 }, { 0x0FA51, true, de0FA51 }, { 0x0FA52, true, de0FA52 }, { 0x0FA53, true, de0FA53 }, +{ 0x0FA54, true, de0FA54 }, { 0x0FA55, true, de0FA55 }, { 0x0FA56, true, de0FA56 }, { 0x0FA57, true, de0FA57 }, +{ 0x0FA58, true, de0FA58 }, { 0x0FA59, true, de0FA59 }, { 0x0FA5A, true, de0FA5A }, { 0x0FA5B, true, de0FA5B }, +{ 0x0FA5C, true, de0FA5C }, { 0x0FA5D, true, de0FA5D }, { 0x0FA5E, true, de0FA5E }, { 0x0FA5F, true, de0FA5F }, +{ 0x0FA60, true, de0FA60 }, { 0x0FA61, true, de0FA61 }, { 0x0FA62, true, de0FA62 }, { 0x0FA63, true, de0FA63 }, +{ 0x0FA64, true, de0FA64 }, { 0x0FA65, true, de0FA65 }, { 0x0FA66, true, de0FA66 }, { 0x0FA67, true, de0FA67 }, +{ 0x0FA68, true, de0FA68 }, { 0x0FA69, true, de0FA69 }, { 0x0FA6A, true, de0FA6A }, { 0x0FA70, true, de0FA70 }, +{ 0x0FA71, true, de0FA71 }, { 0x0FA72, true, de0FA72 }, { 0x0FA73, true, de0FA73 }, { 0x0FA74, true, de0FA74 }, +{ 0x0FA75, true, de0FA75 }, { 0x0FA76, true, de0FA76 }, { 0x0FA77, true, de0FA77 }, { 0x0FA78, true, de0FA78 }, +{ 0x0FA79, true, de0FA79 }, { 0x0FA7A, true, de0FA7A }, { 0x0FA7B, true, de0FA7B }, { 0x0FA7C, true, de0FA7C }, +{ 0x0FA7D, true, de0FA7D }, { 0x0FA7E, true, de0FA7E }, { 0x0FA7F, true, de0FA7F }, { 0x0FA80, true, de0FA80 }, +{ 0x0FA81, true, de0FA81 }, { 0x0FA82, true, de0FA82 }, { 0x0FA83, true, de0FA83 }, { 0x0FA84, true, de0FA84 }, +{ 0x0FA85, true, de0FA85 }, { 0x0FA86, true, de0FA86 }, { 0x0FA87, true, de0FA87 }, { 0x0FA88, true, de0FA88 }, +{ 0x0FA89, true, de0FA89 }, { 0x0FA8A, true, de0FA8A }, { 0x0FA8B, true, de0FA8B }, { 0x0FA8C, true, de0FA8C }, +{ 0x0FA8D, true, de0FA8D }, { 0x0FA8E, true, de0FA8E }, { 0x0FA8F, true, de0FA8F }, { 0x0FA90, true, de0FA90 }, +{ 0x0FA91, true, de0FA91 }, { 0x0FA92, true, de0FA92 }, { 0x0FA93, true, de0FA93 }, { 0x0FA94, true, de0FA94 }, +{ 0x0FA95, true, de0FA95 }, { 0x0FA96, true, de0FA96 }, { 0x0FA97, true, de0FA97 }, { 0x0FA98, true, de0FA98 }, +{ 0x0FA99, true, de0FA99 }, { 0x0FA9A, true, de0FA9A }, { 0x0FA9B, true, de0FA9B }, { 0x0FA9C, true, de0FA9C }, +{ 0x0FA9D, true, de0FA9D }, { 0x0FA9E, true, de0FA9E }, { 0x0FA9F, true, de0FA9F }, { 0x0FAA0, true, de0FAA0 }, +{ 0x0FAA1, true, de0FAA1 }, { 0x0FAA2, true, de0FAA2 }, { 0x0FAA3, true, de0FAA3 }, { 0x0FAA4, true, de0FAA4 }, +{ 0x0FAA5, true, de0FAA5 }, { 0x0FAA6, true, de0FAA6 }, { 0x0FAA7, true, de0FAA7 }, { 0x0FAA8, true, de0FAA8 }, +{ 0x0FAA9, true, de0FAA9 }, { 0x0FAAA, true, de0FAAA }, { 0x0FAAB, true, de0FAAB }, { 0x0FAAC, true, de0FAAC }, +{ 0x0FAAD, true, de0FAAD }, { 0x0FAAE, true, de0FAAE }, { 0x0FAAF, true, de0FAAF }, { 0x0FAB0, true, de0FAB0 }, +{ 0x0FAB1, true, de0FAB1 }, { 0x0FAB2, true, de0FAB2 }, { 0x0FAB3, true, de0FAB3 }, { 0x0FAB4, true, de0FAB4 }, +{ 0x0FAB5, true, de0FAB5 }, { 0x0FAB6, true, de0FAB6 }, { 0x0FAB7, true, de0FAB7 }, { 0x0FAB8, true, de0FAB8 }, +{ 0x0FAB9, true, de0FAB9 }, { 0x0FABA, true, de0FABA }, { 0x0FABB, true, de0FABB }, { 0x0FABC, true, de0FABC }, +{ 0x0FABD, true, de0FABD }, { 0x0FABE, true, de0FABE }, { 0x0FABF, true, de0FABF }, { 0x0FAC0, true, de0FAC0 }, +{ 0x0FAC1, true, de0FAC1 }, { 0x0FAC2, true, de0FAC2 }, { 0x0FAC3, true, de0FAC3 }, { 0x0FAC4, true, de0FAC4 }, +{ 0x0FAC5, true, de0FAC5 }, { 0x0FAC6, true, de0FAC6 }, { 0x0FAC7, true, de0FAC7 }, { 0x0FAC8, true, de0FAC8 }, +{ 0x0FAC9, true, de0FAC9 }, { 0x0FACA, true, de0FACA }, { 0x0FACB, true, de0FACB }, { 0x0FACC, true, de0FACC }, +{ 0x0FACD, true, de0FACD }, { 0x0FACE, true, de0FACE }, { 0x0FACF, true, de0FACF }, { 0x0FAD0, true, de0FAD0 }, +{ 0x0FAD1, true, de0FAD1 }, { 0x0FAD2, true, de0FAD2 }, { 0x0FAD3, true, de0FAD3 }, { 0x0FAD4, true, de0FAD4 }, +{ 0x0FAD5, true, de0FAD5 }, { 0x0FAD6, true, de0FAD6 }, { 0x0FAD7, true, de0FAD7 }, { 0x0FAD8, true, de0FAD8 }, +{ 0x0FAD9, true, de0FAD9 }, { 0x0FB00, false, de0FB00 }, { 0x0FB01, false, de0FB01 }, { 0x0FB02, false, de0FB02 }, +{ 0x0FB03, false, de0FB03 }, { 0x0FB04, false, de0FB04 }, { 0x0FB05, false, de0FB05 }, { 0x0FB06, false, de0FB06 }, +{ 0x0FB13, false, de0FB13 }, { 0x0FB14, false, de0FB14 }, { 0x0FB15, false, de0FB15 }, { 0x0FB16, false, de0FB16 }, +{ 0x0FB17, false, de0FB17 }, { 0x0FB1D, true, de0FB1D }, { 0x0FB1F, true, de0FB1F }, { 0x0FB20, false, de0FB20 }, +{ 0x0FB21, false, de0FB21 }, { 0x0FB22, false, de0FB22 }, { 0x0FB23, false, de0FB23 }, { 0x0FB24, false, de0FB24 }, +{ 0x0FB25, false, de0FB25 }, { 0x0FB26, false, de0FB26 }, { 0x0FB27, false, de0FB27 }, { 0x0FB28, false, de0FB28 }, +{ 0x0FB29, false, de0FB29 }, { 0x0FB2A, true, de0FB2A }, { 0x0FB2B, true, de0FB2B }, { 0x0FB2C, true, de0FB2C }, +{ 0x0FB2D, true, de0FB2D }, { 0x0FB2E, true, de0FB2E }, { 0x0FB2F, true, de0FB2F }, { 0x0FB30, true, de0FB30 }, +{ 0x0FB31, true, de0FB31 }, { 0x0FB32, true, de0FB32 }, { 0x0FB33, true, de0FB33 }, { 0x0FB34, true, de0FB34 }, +{ 0x0FB35, true, de0FB35 }, { 0x0FB36, true, de0FB36 }, { 0x0FB38, true, de0FB38 }, { 0x0FB39, true, de0FB39 }, +{ 0x0FB3A, true, de0FB3A }, { 0x0FB3B, true, de0FB3B }, { 0x0FB3C, true, de0FB3C }, { 0x0FB3E, true, de0FB3E }, +{ 0x0FB40, true, de0FB40 }, { 0x0FB41, true, de0FB41 }, { 0x0FB43, true, de0FB43 }, { 0x0FB44, true, de0FB44 }, +{ 0x0FB46, true, de0FB46 }, { 0x0FB47, true, de0FB47 }, { 0x0FB48, true, de0FB48 }, { 0x0FB49, true, de0FB49 }, +{ 0x0FB4A, true, de0FB4A }, { 0x0FB4B, true, de0FB4B }, { 0x0FB4C, true, de0FB4C }, { 0x0FB4D, true, de0FB4D }, +{ 0x0FB4E, true, de0FB4E }, { 0x0FB4F, false, de0FB4F }, { 0x0FB50, false, de0FB50 }, { 0x0FB51, false, de0FB51 }, +{ 0x0FB52, false, de0FB52 }, { 0x0FB53, false, de0FB53 }, { 0x0FB54, false, de0FB54 }, { 0x0FB55, false, de0FB55 }, +{ 0x0FB56, false, de0FB56 }, { 0x0FB57, false, de0FB57 }, { 0x0FB58, false, de0FB58 }, { 0x0FB59, false, de0FB59 }, +{ 0x0FB5A, false, de0FB5A }, { 0x0FB5B, false, de0FB5B }, { 0x0FB5C, false, de0FB5C }, { 0x0FB5D, false, de0FB5D }, +{ 0x0FB5E, false, de0FB5E }, { 0x0FB5F, false, de0FB5F }, { 0x0FB60, false, de0FB60 }, { 0x0FB61, false, de0FB61 }, +{ 0x0FB62, false, de0FB62 }, { 0x0FB63, false, de0FB63 }, { 0x0FB64, false, de0FB64 }, { 0x0FB65, false, de0FB65 }, +{ 0x0FB66, false, de0FB66 }, { 0x0FB67, false, de0FB67 }, { 0x0FB68, false, de0FB68 }, { 0x0FB69, false, de0FB69 }, +{ 0x0FB6A, false, de0FB6A }, { 0x0FB6B, false, de0FB6B }, { 0x0FB6C, false, de0FB6C }, { 0x0FB6D, false, de0FB6D }, +{ 0x0FB6E, false, de0FB6E }, { 0x0FB6F, false, de0FB6F }, { 0x0FB70, false, de0FB70 }, { 0x0FB71, false, de0FB71 }, +{ 0x0FB72, false, de0FB72 }, { 0x0FB73, false, de0FB73 }, { 0x0FB74, false, de0FB74 }, { 0x0FB75, false, de0FB75 }, +{ 0x0FB76, false, de0FB76 }, { 0x0FB77, false, de0FB77 }, { 0x0FB78, false, de0FB78 }, { 0x0FB79, false, de0FB79 }, +{ 0x0FB7A, false, de0FB7A }, { 0x0FB7B, false, de0FB7B }, { 0x0FB7C, false, de0FB7C }, { 0x0FB7D, false, de0FB7D }, +{ 0x0FB7E, false, de0FB7E }, { 0x0FB7F, false, de0FB7F }, { 0x0FB80, false, de0FB80 }, { 0x0FB81, false, de0FB81 }, +{ 0x0FB82, false, de0FB82 }, { 0x0FB83, false, de0FB83 }, { 0x0FB84, false, de0FB84 }, { 0x0FB85, false, de0FB85 }, +{ 0x0FB86, false, de0FB86 }, { 0x0FB87, false, de0FB87 }, { 0x0FB88, false, de0FB88 }, { 0x0FB89, false, de0FB89 }, +{ 0x0FB8A, false, de0FB8A }, { 0x0FB8B, false, de0FB8B }, { 0x0FB8C, false, de0FB8C }, { 0x0FB8D, false, de0FB8D }, +{ 0x0FB8E, false, de0FB8E }, { 0x0FB8F, false, de0FB8F }, { 0x0FB90, false, de0FB90 }, { 0x0FB91, false, de0FB91 }, +{ 0x0FB92, false, de0FB92 }, { 0x0FB93, false, de0FB93 }, { 0x0FB94, false, de0FB94 }, { 0x0FB95, false, de0FB95 }, +{ 0x0FB96, false, de0FB96 }, { 0x0FB97, false, de0FB97 }, { 0x0FB98, false, de0FB98 }, { 0x0FB99, false, de0FB99 }, +{ 0x0FB9A, false, de0FB9A }, { 0x0FB9B, false, de0FB9B }, { 0x0FB9C, false, de0FB9C }, { 0x0FB9D, false, de0FB9D }, +{ 0x0FB9E, false, de0FB9E }, { 0x0FB9F, false, de0FB9F }, { 0x0FBA0, false, de0FBA0 }, { 0x0FBA1, false, de0FBA1 }, +{ 0x0FBA2, false, de0FBA2 }, { 0x0FBA3, false, de0FBA3 }, { 0x0FBA4, false, de0FBA4 }, { 0x0FBA5, false, de0FBA5 }, +{ 0x0FBA6, false, de0FBA6 }, { 0x0FBA7, false, de0FBA7 }, { 0x0FBA8, false, de0FBA8 }, { 0x0FBA9, false, de0FBA9 }, +{ 0x0FBAA, false, de0FBAA }, { 0x0FBAB, false, de0FBAB }, { 0x0FBAC, false, de0FBAC }, { 0x0FBAD, false, de0FBAD }, +{ 0x0FBAE, false, de0FBAE }, { 0x0FBAF, false, de0FBAF }, { 0x0FBB0, false, de0FBB0 }, { 0x0FBB1, false, de0FBB1 }, +{ 0x0FBD3, false, de0FBD3 }, { 0x0FBD4, false, de0FBD4 }, { 0x0FBD5, false, de0FBD5 }, { 0x0FBD6, false, de0FBD6 }, +{ 0x0FBD7, false, de0FBD7 }, { 0x0FBD8, false, de0FBD8 }, { 0x0FBD9, false, de0FBD9 }, { 0x0FBDA, false, de0FBDA }, +{ 0x0FBDB, false, de0FBDB }, { 0x0FBDC, false, de0FBDC }, { 0x0FBDD, false, de0FBDD }, { 0x0FBDE, false, de0FBDE }, +{ 0x0FBDF, false, de0FBDF }, { 0x0FBE0, false, de0FBE0 }, { 0x0FBE1, false, de0FBE1 }, { 0x0FBE2, false, de0FBE2 }, +{ 0x0FBE3, false, de0FBE3 }, { 0x0FBE4, false, de0FBE4 }, { 0x0FBE5, false, de0FBE5 }, { 0x0FBE6, false, de0FBE6 }, +{ 0x0FBE7, false, de0FBE7 }, { 0x0FBE8, false, de0FBE8 }, { 0x0FBE9, false, de0FBE9 }, { 0x0FBEA, false, de0FBEA }, +{ 0x0FBEB, false, de0FBEB }, { 0x0FBEC, false, de0FBEC }, { 0x0FBED, false, de0FBED }, { 0x0FBEE, false, de0FBEE }, +{ 0x0FBEF, false, de0FBEF }, { 0x0FBF0, false, de0FBF0 }, { 0x0FBF1, false, de0FBF1 }, { 0x0FBF2, false, de0FBF2 }, +{ 0x0FBF3, false, de0FBF3 }, { 0x0FBF4, false, de0FBF4 }, { 0x0FBF5, false, de0FBF5 }, { 0x0FBF6, false, de0FBF6 }, +{ 0x0FBF7, false, de0FBF7 }, { 0x0FBF8, false, de0FBF8 }, { 0x0FBF9, false, de0FBF9 }, { 0x0FBFA, false, de0FBFA }, +{ 0x0FBFB, false, de0FBFB }, { 0x0FBFC, false, de0FBFC }, { 0x0FBFD, false, de0FBFD }, { 0x0FBFE, false, de0FBFE }, +{ 0x0FBFF, false, de0FBFF }, { 0x0FC00, false, de0FC00 }, { 0x0FC01, false, de0FC01 }, { 0x0FC02, false, de0FC02 }, +{ 0x0FC03, false, de0FC03 }, { 0x0FC04, false, de0FC04 }, { 0x0FC05, false, de0FC05 }, { 0x0FC06, false, de0FC06 }, +{ 0x0FC07, false, de0FC07 }, { 0x0FC08, false, de0FC08 }, { 0x0FC09, false, de0FC09 }, { 0x0FC0A, false, de0FC0A }, +{ 0x0FC0B, false, de0FC0B }, { 0x0FC0C, false, de0FC0C }, { 0x0FC0D, false, de0FC0D }, { 0x0FC0E, false, de0FC0E }, +{ 0x0FC0F, false, de0FC0F }, { 0x0FC10, false, de0FC10 }, { 0x0FC11, false, de0FC11 }, { 0x0FC12, false, de0FC12 }, +{ 0x0FC13, false, de0FC13 }, { 0x0FC14, false, de0FC14 }, { 0x0FC15, false, de0FC15 }, { 0x0FC16, false, de0FC16 }, +{ 0x0FC17, false, de0FC17 }, { 0x0FC18, false, de0FC18 }, { 0x0FC19, false, de0FC19 }, { 0x0FC1A, false, de0FC1A }, +{ 0x0FC1B, false, de0FC1B }, { 0x0FC1C, false, de0FC1C }, { 0x0FC1D, false, de0FC1D }, { 0x0FC1E, false, de0FC1E }, +{ 0x0FC1F, false, de0FC1F }, { 0x0FC20, false, de0FC20 }, { 0x0FC21, false, de0FC21 }, { 0x0FC22, false, de0FC22 }, +{ 0x0FC23, false, de0FC23 }, { 0x0FC24, false, de0FC24 }, { 0x0FC25, false, de0FC25 }, { 0x0FC26, false, de0FC26 }, +{ 0x0FC27, false, de0FC27 }, { 0x0FC28, false, de0FC28 }, { 0x0FC29, false, de0FC29 }, { 0x0FC2A, false, de0FC2A }, +{ 0x0FC2B, false, de0FC2B }, { 0x0FC2C, false, de0FC2C }, { 0x0FC2D, false, de0FC2D }, { 0x0FC2E, false, de0FC2E }, +{ 0x0FC2F, false, de0FC2F }, { 0x0FC30, false, de0FC30 }, { 0x0FC31, false, de0FC31 }, { 0x0FC32, false, de0FC32 }, +{ 0x0FC33, false, de0FC33 }, { 0x0FC34, false, de0FC34 }, { 0x0FC35, false, de0FC35 }, { 0x0FC36, false, de0FC36 }, +{ 0x0FC37, false, de0FC37 }, { 0x0FC38, false, de0FC38 }, { 0x0FC39, false, de0FC39 }, { 0x0FC3A, false, de0FC3A }, +{ 0x0FC3B, false, de0FC3B }, { 0x0FC3C, false, de0FC3C }, { 0x0FC3D, false, de0FC3D }, { 0x0FC3E, false, de0FC3E }, +{ 0x0FC3F, false, de0FC3F }, { 0x0FC40, false, de0FC40 }, { 0x0FC41, false, de0FC41 }, { 0x0FC42, false, de0FC42 }, +{ 0x0FC43, false, de0FC43 }, { 0x0FC44, false, de0FC44 }, { 0x0FC45, false, de0FC45 }, { 0x0FC46, false, de0FC46 }, +{ 0x0FC47, false, de0FC47 }, { 0x0FC48, false, de0FC48 }, { 0x0FC49, false, de0FC49 }, { 0x0FC4A, false, de0FC4A }, +{ 0x0FC4B, false, de0FC4B }, { 0x0FC4C, false, de0FC4C }, { 0x0FC4D, false, de0FC4D }, { 0x0FC4E, false, de0FC4E }, +{ 0x0FC4F, false, de0FC4F }, { 0x0FC50, false, de0FC50 }, { 0x0FC51, false, de0FC51 }, { 0x0FC52, false, de0FC52 }, +{ 0x0FC53, false, de0FC53 }, { 0x0FC54, false, de0FC54 }, { 0x0FC55, false, de0FC55 }, { 0x0FC56, false, de0FC56 }, +{ 0x0FC57, false, de0FC57 }, { 0x0FC58, false, de0FC58 }, { 0x0FC59, false, de0FC59 }, { 0x0FC5A, false, de0FC5A }, +{ 0x0FC5B, false, de0FC5B }, { 0x0FC5C, false, de0FC5C }, { 0x0FC5D, false, de0FC5D }, { 0x0FC5E, false, de0FC5E }, +{ 0x0FC5F, false, de0FC5F }, { 0x0FC60, false, de0FC60 }, { 0x0FC61, false, de0FC61 }, { 0x0FC62, false, de0FC62 }, +{ 0x0FC63, false, de0FC63 }, { 0x0FC64, false, de0FC64 }, { 0x0FC65, false, de0FC65 }, { 0x0FC66, false, de0FC66 }, +{ 0x0FC67, false, de0FC67 }, { 0x0FC68, false, de0FC68 }, { 0x0FC69, false, de0FC69 }, { 0x0FC6A, false, de0FC6A }, +{ 0x0FC6B, false, de0FC6B }, { 0x0FC6C, false, de0FC6C }, { 0x0FC6D, false, de0FC6D }, { 0x0FC6E, false, de0FC6E }, +{ 0x0FC6F, false, de0FC6F }, { 0x0FC70, false, de0FC70 }, { 0x0FC71, false, de0FC71 }, { 0x0FC72, false, de0FC72 }, +{ 0x0FC73, false, de0FC73 }, { 0x0FC74, false, de0FC74 }, { 0x0FC75, false, de0FC75 }, { 0x0FC76, false, de0FC76 }, +{ 0x0FC77, false, de0FC77 }, { 0x0FC78, false, de0FC78 }, { 0x0FC79, false, de0FC79 }, { 0x0FC7A, false, de0FC7A }, +{ 0x0FC7B, false, de0FC7B }, { 0x0FC7C, false, de0FC7C }, { 0x0FC7D, false, de0FC7D }, { 0x0FC7E, false, de0FC7E }, +{ 0x0FC7F, false, de0FC7F }, { 0x0FC80, false, de0FC80 }, { 0x0FC81, false, de0FC81 }, { 0x0FC82, false, de0FC82 }, +{ 0x0FC83, false, de0FC83 }, { 0x0FC84, false, de0FC84 }, { 0x0FC85, false, de0FC85 }, { 0x0FC86, false, de0FC86 }, +{ 0x0FC87, false, de0FC87 }, { 0x0FC88, false, de0FC88 }, { 0x0FC89, false, de0FC89 }, { 0x0FC8A, false, de0FC8A }, +{ 0x0FC8B, false, de0FC8B }, { 0x0FC8C, false, de0FC8C }, { 0x0FC8D, false, de0FC8D }, { 0x0FC8E, false, de0FC8E }, +{ 0x0FC8F, false, de0FC8F }, { 0x0FC90, false, de0FC90 }, { 0x0FC91, false, de0FC91 }, { 0x0FC92, false, de0FC92 }, +{ 0x0FC93, false, de0FC93 }, { 0x0FC94, false, de0FC94 }, { 0x0FC95, false, de0FC95 }, { 0x0FC96, false, de0FC96 }, +{ 0x0FC97, false, de0FC97 }, { 0x0FC98, false, de0FC98 }, { 0x0FC99, false, de0FC99 }, { 0x0FC9A, false, de0FC9A }, +{ 0x0FC9B, false, de0FC9B }, { 0x0FC9C, false, de0FC9C }, { 0x0FC9D, false, de0FC9D }, { 0x0FC9E, false, de0FC9E }, +{ 0x0FC9F, false, de0FC9F }, { 0x0FCA0, false, de0FCA0 }, { 0x0FCA1, false, de0FCA1 }, { 0x0FCA2, false, de0FCA2 }, +{ 0x0FCA3, false, de0FCA3 }, { 0x0FCA4, false, de0FCA4 }, { 0x0FCA5, false, de0FCA5 }, { 0x0FCA6, false, de0FCA6 }, +{ 0x0FCA7, false, de0FCA7 }, { 0x0FCA8, false, de0FCA8 }, { 0x0FCA9, false, de0FCA9 }, { 0x0FCAA, false, de0FCAA }, +{ 0x0FCAB, false, de0FCAB }, { 0x0FCAC, false, de0FCAC }, { 0x0FCAD, false, de0FCAD }, { 0x0FCAE, false, de0FCAE }, +{ 0x0FCAF, false, de0FCAF }, { 0x0FCB0, false, de0FCB0 }, { 0x0FCB1, false, de0FCB1 }, { 0x0FCB2, false, de0FCB2 }, +{ 0x0FCB3, false, de0FCB3 }, { 0x0FCB4, false, de0FCB4 }, { 0x0FCB5, false, de0FCB5 }, { 0x0FCB6, false, de0FCB6 }, +{ 0x0FCB7, false, de0FCB7 }, { 0x0FCB8, false, de0FCB8 }, { 0x0FCB9, false, de0FCB9 }, { 0x0FCBA, false, de0FCBA }, +{ 0x0FCBB, false, de0FCBB }, { 0x0FCBC, false, de0FCBC }, { 0x0FCBD, false, de0FCBD }, { 0x0FCBE, false, de0FCBE }, +{ 0x0FCBF, false, de0FCBF }, { 0x0FCC0, false, de0FCC0 }, { 0x0FCC1, false, de0FCC1 }, { 0x0FCC2, false, de0FCC2 }, +{ 0x0FCC3, false, de0FCC3 }, { 0x0FCC4, false, de0FCC4 }, { 0x0FCC5, false, de0FCC5 }, { 0x0FCC6, false, de0FCC6 }, +{ 0x0FCC7, false, de0FCC7 }, { 0x0FCC8, false, de0FCC8 }, { 0x0FCC9, false, de0FCC9 }, { 0x0FCCA, false, de0FCCA }, +{ 0x0FCCB, false, de0FCCB }, { 0x0FCCC, false, de0FCCC }, { 0x0FCCD, false, de0FCCD }, { 0x0FCCE, false, de0FCCE }, +{ 0x0FCCF, false, de0FCCF }, { 0x0FCD0, false, de0FCD0 }, { 0x0FCD1, false, de0FCD1 }, { 0x0FCD2, false, de0FCD2 }, +{ 0x0FCD3, false, de0FCD3 }, { 0x0FCD4, false, de0FCD4 }, { 0x0FCD5, false, de0FCD5 }, { 0x0FCD6, false, de0FCD6 }, +{ 0x0FCD7, false, de0FCD7 }, { 0x0FCD8, false, de0FCD8 }, { 0x0FCD9, false, de0FCD9 }, { 0x0FCDA, false, de0FCDA }, +{ 0x0FCDB, false, de0FCDB }, { 0x0FCDC, false, de0FCDC }, { 0x0FCDD, false, de0FCDD }, { 0x0FCDE, false, de0FCDE }, +{ 0x0FCDF, false, de0FCDF }, { 0x0FCE0, false, de0FCE0 }, { 0x0FCE1, false, de0FCE1 }, { 0x0FCE2, false, de0FCE2 }, +{ 0x0FCE3, false, de0FCE3 }, { 0x0FCE4, false, de0FCE4 }, { 0x0FCE5, false, de0FCE5 }, { 0x0FCE6, false, de0FCE6 }, +{ 0x0FCE7, false, de0FCE7 }, { 0x0FCE8, false, de0FCE8 }, { 0x0FCE9, false, de0FCE9 }, { 0x0FCEA, false, de0FCEA }, +{ 0x0FCEB, false, de0FCEB }, { 0x0FCEC, false, de0FCEC }, { 0x0FCED, false, de0FCED }, { 0x0FCEE, false, de0FCEE }, +{ 0x0FCEF, false, de0FCEF }, { 0x0FCF0, false, de0FCF0 }, { 0x0FCF1, false, de0FCF1 }, { 0x0FCF2, false, de0FCF2 }, +{ 0x0FCF3, false, de0FCF3 }, { 0x0FCF4, false, de0FCF4 }, { 0x0FCF5, false, de0FCF5 }, { 0x0FCF6, false, de0FCF6 }, +{ 0x0FCF7, false, de0FCF7 }, { 0x0FCF8, false, de0FCF8 }, { 0x0FCF9, false, de0FCF9 }, { 0x0FCFA, false, de0FCFA }, +{ 0x0FCFB, false, de0FCFB }, { 0x0FCFC, false, de0FCFC }, { 0x0FCFD, false, de0FCFD }, { 0x0FCFE, false, de0FCFE }, +{ 0x0FCFF, false, de0FCFF }, { 0x0FD00, false, de0FD00 }, { 0x0FD01, false, de0FD01 }, { 0x0FD02, false, de0FD02 }, +{ 0x0FD03, false, de0FD03 }, { 0x0FD04, false, de0FD04 }, { 0x0FD05, false, de0FD05 }, { 0x0FD06, false, de0FD06 }, +{ 0x0FD07, false, de0FD07 }, { 0x0FD08, false, de0FD08 }, { 0x0FD09, false, de0FD09 }, { 0x0FD0A, false, de0FD0A }, +{ 0x0FD0B, false, de0FD0B }, { 0x0FD0C, false, de0FD0C }, { 0x0FD0D, false, de0FD0D }, { 0x0FD0E, false, de0FD0E }, +{ 0x0FD0F, false, de0FD0F }, { 0x0FD10, false, de0FD10 }, { 0x0FD11, false, de0FD11 }, { 0x0FD12, false, de0FD12 }, +{ 0x0FD13, false, de0FD13 }, { 0x0FD14, false, de0FD14 }, { 0x0FD15, false, de0FD15 }, { 0x0FD16, false, de0FD16 }, +{ 0x0FD17, false, de0FD17 }, { 0x0FD18, false, de0FD18 }, { 0x0FD19, false, de0FD19 }, { 0x0FD1A, false, de0FD1A }, +{ 0x0FD1B, false, de0FD1B }, { 0x0FD1C, false, de0FD1C }, { 0x0FD1D, false, de0FD1D }, { 0x0FD1E, false, de0FD1E }, +{ 0x0FD1F, false, de0FD1F }, { 0x0FD20, false, de0FD20 }, { 0x0FD21, false, de0FD21 }, { 0x0FD22, false, de0FD22 }, +{ 0x0FD23, false, de0FD23 }, { 0x0FD24, false, de0FD24 }, { 0x0FD25, false, de0FD25 }, { 0x0FD26, false, de0FD26 }, +{ 0x0FD27, false, de0FD27 }, { 0x0FD28, false, de0FD28 }, { 0x0FD29, false, de0FD29 }, { 0x0FD2A, false, de0FD2A }, +{ 0x0FD2B, false, de0FD2B }, { 0x0FD2C, false, de0FD2C }, { 0x0FD2D, false, de0FD2D }, { 0x0FD2E, false, de0FD2E }, +{ 0x0FD2F, false, de0FD2F }, { 0x0FD30, false, de0FD30 }, { 0x0FD31, false, de0FD31 }, { 0x0FD32, false, de0FD32 }, +{ 0x0FD33, false, de0FD33 }, { 0x0FD34, false, de0FD34 }, { 0x0FD35, false, de0FD35 }, { 0x0FD36, false, de0FD36 }, +{ 0x0FD37, false, de0FD37 }, { 0x0FD38, false, de0FD38 }, { 0x0FD39, false, de0FD39 }, { 0x0FD3A, false, de0FD3A }, +{ 0x0FD3B, false, de0FD3B }, { 0x0FD3C, false, de0FD3C }, { 0x0FD3D, false, de0FD3D }, { 0x0FD50, false, de0FD50 }, +{ 0x0FD51, false, de0FD51 }, { 0x0FD52, false, de0FD52 }, { 0x0FD53, false, de0FD53 }, { 0x0FD54, false, de0FD54 }, +{ 0x0FD55, false, de0FD55 }, { 0x0FD56, false, de0FD56 }, { 0x0FD57, false, de0FD57 }, { 0x0FD58, false, de0FD58 }, +{ 0x0FD59, false, de0FD59 }, { 0x0FD5A, false, de0FD5A }, { 0x0FD5B, false, de0FD5B }, { 0x0FD5C, false, de0FD5C }, +{ 0x0FD5D, false, de0FD5D }, { 0x0FD5E, false, de0FD5E }, { 0x0FD5F, false, de0FD5F }, { 0x0FD60, false, de0FD60 }, +{ 0x0FD61, false, de0FD61 }, { 0x0FD62, false, de0FD62 }, { 0x0FD63, false, de0FD63 }, { 0x0FD64, false, de0FD64 }, +{ 0x0FD65, false, de0FD65 }, { 0x0FD66, false, de0FD66 }, { 0x0FD67, false, de0FD67 }, { 0x0FD68, false, de0FD68 }, +{ 0x0FD69, false, de0FD69 }, { 0x0FD6A, false, de0FD6A }, { 0x0FD6B, false, de0FD6B }, { 0x0FD6C, false, de0FD6C }, +{ 0x0FD6D, false, de0FD6D }, { 0x0FD6E, false, de0FD6E }, { 0x0FD6F, false, de0FD6F }, { 0x0FD70, false, de0FD70 }, +{ 0x0FD71, false, de0FD71 }, { 0x0FD72, false, de0FD72 }, { 0x0FD73, false, de0FD73 }, { 0x0FD74, false, de0FD74 }, +{ 0x0FD75, false, de0FD75 }, { 0x0FD76, false, de0FD76 }, { 0x0FD77, false, de0FD77 }, { 0x0FD78, false, de0FD78 }, +{ 0x0FD79, false, de0FD79 }, { 0x0FD7A, false, de0FD7A }, { 0x0FD7B, false, de0FD7B }, { 0x0FD7C, false, de0FD7C }, +{ 0x0FD7D, false, de0FD7D }, { 0x0FD7E, false, de0FD7E }, { 0x0FD7F, false, de0FD7F }, { 0x0FD80, false, de0FD80 }, +{ 0x0FD81, false, de0FD81 }, { 0x0FD82, false, de0FD82 }, { 0x0FD83, false, de0FD83 }, { 0x0FD84, false, de0FD84 }, +{ 0x0FD85, false, de0FD85 }, { 0x0FD86, false, de0FD86 }, { 0x0FD87, false, de0FD87 }, { 0x0FD88, false, de0FD88 }, +{ 0x0FD89, false, de0FD89 }, { 0x0FD8A, false, de0FD8A }, { 0x0FD8B, false, de0FD8B }, { 0x0FD8C, false, de0FD8C }, +{ 0x0FD8D, false, de0FD8D }, { 0x0FD8E, false, de0FD8E }, { 0x0FD8F, false, de0FD8F }, { 0x0FD92, false, de0FD92 }, +{ 0x0FD93, false, de0FD93 }, { 0x0FD94, false, de0FD94 }, { 0x0FD95, false, de0FD95 }, { 0x0FD96, false, de0FD96 }, +{ 0x0FD97, false, de0FD97 }, { 0x0FD98, false, de0FD98 }, { 0x0FD99, false, de0FD99 }, { 0x0FD9A, false, de0FD9A }, +{ 0x0FD9B, false, de0FD9B }, { 0x0FD9C, false, de0FD9C }, { 0x0FD9D, false, de0FD9D }, { 0x0FD9E, false, de0FD9E }, +{ 0x0FD9F, false, de0FD9F }, { 0x0FDA0, false, de0FDA0 }, { 0x0FDA1, false, de0FDA1 }, { 0x0FDA2, false, de0FDA2 }, +{ 0x0FDA3, false, de0FDA3 }, { 0x0FDA4, false, de0FDA4 }, { 0x0FDA5, false, de0FDA5 }, { 0x0FDA6, false, de0FDA6 }, +{ 0x0FDA7, false, de0FDA7 }, { 0x0FDA8, false, de0FDA8 }, { 0x0FDA9, false, de0FDA9 }, { 0x0FDAA, false, de0FDAA }, +{ 0x0FDAB, false, de0FDAB }, { 0x0FDAC, false, de0FDAC }, { 0x0FDAD, false, de0FDAD }, { 0x0FDAE, false, de0FDAE }, +{ 0x0FDAF, false, de0FDAF }, { 0x0FDB0, false, de0FDB0 }, { 0x0FDB1, false, de0FDB1 }, { 0x0FDB2, false, de0FDB2 }, +{ 0x0FDB3, false, de0FDB3 }, { 0x0FDB4, false, de0FDB4 }, { 0x0FDB5, false, de0FDB5 }, { 0x0FDB6, false, de0FDB6 }, +{ 0x0FDB7, false, de0FDB7 }, { 0x0FDB8, false, de0FDB8 }, { 0x0FDB9, false, de0FDB9 }, { 0x0FDBA, false, de0FDBA }, +{ 0x0FDBB, false, de0FDBB }, { 0x0FDBC, false, de0FDBC }, { 0x0FDBD, false, de0FDBD }, { 0x0FDBE, false, de0FDBE }, +{ 0x0FDBF, false, de0FDBF }, { 0x0FDC0, false, de0FDC0 }, { 0x0FDC1, false, de0FDC1 }, { 0x0FDC2, false, de0FDC2 }, +{ 0x0FDC3, false, de0FDC3 }, { 0x0FDC4, false, de0FDC4 }, { 0x0FDC5, false, de0FDC5 }, { 0x0FDC6, false, de0FDC6 }, +{ 0x0FDC7, false, de0FDC7 }, { 0x0FDF0, false, de0FDF0 }, { 0x0FDF1, false, de0FDF1 }, { 0x0FDF2, false, de0FDF2 }, +{ 0x0FDF3, false, de0FDF3 }, { 0x0FDF4, false, de0FDF4 }, { 0x0FDF5, false, de0FDF5 }, { 0x0FDF6, false, de0FDF6 }, +{ 0x0FDF7, false, de0FDF7 }, { 0x0FDF8, false, de0FDF8 }, { 0x0FDF9, false, de0FDF9 }, { 0x0FDFA, false, de0FDFA }, +{ 0x0FDFB, false, de0FDFB }, { 0x0FDFC, false, de0FDFC }, { 0x0FE10, false, de0FE10 }, { 0x0FE11, false, de0FE11 }, +{ 0x0FE12, false, de0FE12 }, { 0x0FE13, false, de0FE13 }, { 0x0FE14, false, de0FE14 }, { 0x0FE15, false, de0FE15 }, +{ 0x0FE16, false, de0FE16 }, { 0x0FE17, false, de0FE17 }, { 0x0FE18, false, de0FE18 }, { 0x0FE19, false, de0FE19 }, +{ 0x0FE30, false, de0FE30 }, { 0x0FE31, false, de0FE31 }, { 0x0FE32, false, de0FE32 }, { 0x0FE33, false, de0FE33 }, +{ 0x0FE34, false, de0FE34 }, { 0x0FE35, false, de0FE35 }, { 0x0FE36, false, de0FE36 }, { 0x0FE37, false, de0FE37 }, +{ 0x0FE38, false, de0FE38 }, { 0x0FE39, false, de0FE39 }, { 0x0FE3A, false, de0FE3A }, { 0x0FE3B, false, de0FE3B }, +{ 0x0FE3C, false, de0FE3C }, { 0x0FE3D, false, de0FE3D }, { 0x0FE3E, false, de0FE3E }, { 0x0FE3F, false, de0FE3F }, +{ 0x0FE40, false, de0FE40 }, { 0x0FE41, false, de0FE41 }, { 0x0FE42, false, de0FE42 }, { 0x0FE43, false, de0FE43 }, +{ 0x0FE44, false, de0FE44 }, { 0x0FE47, false, de0FE47 }, { 0x0FE48, false, de0FE48 }, { 0x0FE49, false, de0FE49 }, +{ 0x0FE4A, false, de0FE4A }, { 0x0FE4B, false, de0FE4B }, { 0x0FE4C, false, de0FE4C }, { 0x0FE4D, false, de0FE4D }, +{ 0x0FE4E, false, de0FE4E }, { 0x0FE4F, false, de0FE4F }, { 0x0FE50, false, de0FE50 }, { 0x0FE51, false, de0FE51 }, +{ 0x0FE52, false, de0FE52 }, { 0x0FE54, false, de0FE54 }, { 0x0FE55, false, de0FE55 }, { 0x0FE56, false, de0FE56 }, +{ 0x0FE57, false, de0FE57 }, { 0x0FE58, false, de0FE58 }, { 0x0FE59, false, de0FE59 }, { 0x0FE5A, false, de0FE5A }, +{ 0x0FE5B, false, de0FE5B }, { 0x0FE5C, false, de0FE5C }, { 0x0FE5D, false, de0FE5D }, { 0x0FE5E, false, de0FE5E }, +{ 0x0FE5F, false, de0FE5F }, { 0x0FE60, false, de0FE60 }, { 0x0FE61, false, de0FE61 }, { 0x0FE62, false, de0FE62 }, +{ 0x0FE63, false, de0FE63 }, { 0x0FE64, false, de0FE64 }, { 0x0FE65, false, de0FE65 }, { 0x0FE66, false, de0FE66 }, +{ 0x0FE68, false, de0FE68 }, { 0x0FE69, false, de0FE69 }, { 0x0FE6A, false, de0FE6A }, { 0x0FE6B, false, de0FE6B }, +{ 0x0FE70, false, de0FE70 }, { 0x0FE71, false, de0FE71 }, { 0x0FE72, false, de0FE72 }, { 0x0FE74, false, de0FE74 }, +{ 0x0FE76, false, de0FE76 }, { 0x0FE77, false, de0FE77 }, { 0x0FE78, false, de0FE78 }, { 0x0FE79, false, de0FE79 }, +{ 0x0FE7A, false, de0FE7A }, { 0x0FE7B, false, de0FE7B }, { 0x0FE7C, false, de0FE7C }, { 0x0FE7D, false, de0FE7D }, +{ 0x0FE7E, false, de0FE7E }, { 0x0FE7F, false, de0FE7F }, { 0x0FE80, false, de0FE80 }, { 0x0FE81, false, de0FE81 }, +{ 0x0FE82, false, de0FE82 }, { 0x0FE83, false, de0FE83 }, { 0x0FE84, false, de0FE84 }, { 0x0FE85, false, de0FE85 }, +{ 0x0FE86, false, de0FE86 }, { 0x0FE87, false, de0FE87 }, { 0x0FE88, false, de0FE88 }, { 0x0FE89, false, de0FE89 }, +{ 0x0FE8A, false, de0FE8A }, { 0x0FE8B, false, de0FE8B }, { 0x0FE8C, false, de0FE8C }, { 0x0FE8D, false, de0FE8D }, +{ 0x0FE8E, false, de0FE8E }, { 0x0FE8F, false, de0FE8F }, { 0x0FE90, false, de0FE90 }, { 0x0FE91, false, de0FE91 }, +{ 0x0FE92, false, de0FE92 }, { 0x0FE93, false, de0FE93 }, { 0x0FE94, false, de0FE94 }, { 0x0FE95, false, de0FE95 }, +{ 0x0FE96, false, de0FE96 }, { 0x0FE97, false, de0FE97 }, { 0x0FE98, false, de0FE98 }, { 0x0FE99, false, de0FE99 }, +{ 0x0FE9A, false, de0FE9A }, { 0x0FE9B, false, de0FE9B }, { 0x0FE9C, false, de0FE9C }, { 0x0FE9D, false, de0FE9D }, +{ 0x0FE9E, false, de0FE9E }, { 0x0FE9F, false, de0FE9F }, { 0x0FEA0, false, de0FEA0 }, { 0x0FEA1, false, de0FEA1 }, +{ 0x0FEA2, false, de0FEA2 }, { 0x0FEA3, false, de0FEA3 }, { 0x0FEA4, false, de0FEA4 }, { 0x0FEA5, false, de0FEA5 }, +{ 0x0FEA6, false, de0FEA6 }, { 0x0FEA7, false, de0FEA7 }, { 0x0FEA8, false, de0FEA8 }, { 0x0FEA9, false, de0FEA9 }, +{ 0x0FEAA, false, de0FEAA }, { 0x0FEAB, false, de0FEAB }, { 0x0FEAC, false, de0FEAC }, { 0x0FEAD, false, de0FEAD }, +{ 0x0FEAE, false, de0FEAE }, { 0x0FEAF, false, de0FEAF }, { 0x0FEB0, false, de0FEB0 }, { 0x0FEB1, false, de0FEB1 }, +{ 0x0FEB2, false, de0FEB2 }, { 0x0FEB3, false, de0FEB3 }, { 0x0FEB4, false, de0FEB4 }, { 0x0FEB5, false, de0FEB5 }, +{ 0x0FEB6, false, de0FEB6 }, { 0x0FEB7, false, de0FEB7 }, { 0x0FEB8, false, de0FEB8 }, { 0x0FEB9, false, de0FEB9 }, +{ 0x0FEBA, false, de0FEBA }, { 0x0FEBB, false, de0FEBB }, { 0x0FEBC, false, de0FEBC }, { 0x0FEBD, false, de0FEBD }, +{ 0x0FEBE, false, de0FEBE }, { 0x0FEBF, false, de0FEBF }, { 0x0FEC0, false, de0FEC0 }, { 0x0FEC1, false, de0FEC1 }, +{ 0x0FEC2, false, de0FEC2 }, { 0x0FEC3, false, de0FEC3 }, { 0x0FEC4, false, de0FEC4 }, { 0x0FEC5, false, de0FEC5 }, +{ 0x0FEC6, false, de0FEC6 }, { 0x0FEC7, false, de0FEC7 }, { 0x0FEC8, false, de0FEC8 }, { 0x0FEC9, false, de0FEC9 }, +{ 0x0FECA, false, de0FECA }, { 0x0FECB, false, de0FECB }, { 0x0FECC, false, de0FECC }, { 0x0FECD, false, de0FECD }, +{ 0x0FECE, false, de0FECE }, { 0x0FECF, false, de0FECF }, { 0x0FED0, false, de0FED0 }, { 0x0FED1, false, de0FED1 }, +{ 0x0FED2, false, de0FED2 }, { 0x0FED3, false, de0FED3 }, { 0x0FED4, false, de0FED4 }, { 0x0FED5, false, de0FED5 }, +{ 0x0FED6, false, de0FED6 }, { 0x0FED7, false, de0FED7 }, { 0x0FED8, false, de0FED8 }, { 0x0FED9, false, de0FED9 }, +{ 0x0FEDA, false, de0FEDA }, { 0x0FEDB, false, de0FEDB }, { 0x0FEDC, false, de0FEDC }, { 0x0FEDD, false, de0FEDD }, +{ 0x0FEDE, false, de0FEDE }, { 0x0FEDF, false, de0FEDF }, { 0x0FEE0, false, de0FEE0 }, { 0x0FEE1, false, de0FEE1 }, +{ 0x0FEE2, false, de0FEE2 }, { 0x0FEE3, false, de0FEE3 }, { 0x0FEE4, false, de0FEE4 }, { 0x0FEE5, false, de0FEE5 }, +{ 0x0FEE6, false, de0FEE6 }, { 0x0FEE7, false, de0FEE7 }, { 0x0FEE8, false, de0FEE8 }, { 0x0FEE9, false, de0FEE9 }, +{ 0x0FEEA, false, de0FEEA }, { 0x0FEEB, false, de0FEEB }, { 0x0FEEC, false, de0FEEC }, { 0x0FEED, false, de0FEED }, +{ 0x0FEEE, false, de0FEEE }, { 0x0FEEF, false, de0FEEF }, { 0x0FEF0, false, de0FEF0 }, { 0x0FEF1, false, de0FEF1 }, +{ 0x0FEF2, false, de0FEF2 }, { 0x0FEF3, false, de0FEF3 }, { 0x0FEF4, false, de0FEF4 }, { 0x0FEF5, false, de0FEF5 }, +{ 0x0FEF6, false, de0FEF6 }, { 0x0FEF7, false, de0FEF7 }, { 0x0FEF8, false, de0FEF8 }, { 0x0FEF9, false, de0FEF9 }, +{ 0x0FEFA, false, de0FEFA }, { 0x0FEFB, false, de0FEFB }, { 0x0FEFC, false, de0FEFC }, { 0x0FF01, false, de0FF01 }, +{ 0x0FF02, false, de0FF02 }, { 0x0FF03, false, de0FF03 }, { 0x0FF04, false, de0FF04 }, { 0x0FF05, false, de0FF05 }, +{ 0x0FF06, false, de0FF06 }, { 0x0FF07, false, de0FF07 }, { 0x0FF08, false, de0FF08 }, { 0x0FF09, false, de0FF09 }, +{ 0x0FF0A, false, de0FF0A }, { 0x0FF0B, false, de0FF0B }, { 0x0FF0C, false, de0FF0C }, { 0x0FF0D, false, de0FF0D }, +{ 0x0FF0E, false, de0FF0E }, { 0x0FF0F, false, de0FF0F }, { 0x0FF10, false, de0FF10 }, { 0x0FF11, false, de0FF11 }, +{ 0x0FF12, false, de0FF12 }, { 0x0FF13, false, de0FF13 }, { 0x0FF14, false, de0FF14 }, { 0x0FF15, false, de0FF15 }, +{ 0x0FF16, false, de0FF16 }, { 0x0FF17, false, de0FF17 }, { 0x0FF18, false, de0FF18 }, { 0x0FF19, false, de0FF19 }, +{ 0x0FF1A, false, de0FF1A }, { 0x0FF1B, false, de0FF1B }, { 0x0FF1C, false, de0FF1C }, { 0x0FF1D, false, de0FF1D }, +{ 0x0FF1E, false, de0FF1E }, { 0x0FF1F, false, de0FF1F }, { 0x0FF20, false, de0FF20 }, { 0x0FF21, false, de0FF21 }, +{ 0x0FF22, false, de0FF22 }, { 0x0FF23, false, de0FF23 }, { 0x0FF24, false, de0FF24 }, { 0x0FF25, false, de0FF25 }, +{ 0x0FF26, false, de0FF26 }, { 0x0FF27, false, de0FF27 }, { 0x0FF28, false, de0FF28 }, { 0x0FF29, false, de0FF29 }, +{ 0x0FF2A, false, de0FF2A }, { 0x0FF2B, false, de0FF2B }, { 0x0FF2C, false, de0FF2C }, { 0x0FF2D, false, de0FF2D }, +{ 0x0FF2E, false, de0FF2E }, { 0x0FF2F, false, de0FF2F }, { 0x0FF30, false, de0FF30 }, { 0x0FF31, false, de0FF31 }, +{ 0x0FF32, false, de0FF32 }, { 0x0FF33, false, de0FF33 }, { 0x0FF34, false, de0FF34 }, { 0x0FF35, false, de0FF35 }, +{ 0x0FF36, false, de0FF36 }, { 0x0FF37, false, de0FF37 }, { 0x0FF38, false, de0FF38 }, { 0x0FF39, false, de0FF39 }, +{ 0x0FF3A, false, de0FF3A }, { 0x0FF3B, false, de0FF3B }, { 0x0FF3C, false, de0FF3C }, { 0x0FF3D, false, de0FF3D }, +{ 0x0FF3E, false, de0FF3E }, { 0x0FF3F, false, de0FF3F }, { 0x0FF40, false, de0FF40 }, { 0x0FF41, false, de0FF41 }, +{ 0x0FF42, false, de0FF42 }, { 0x0FF43, false, de0FF43 }, { 0x0FF44, false, de0FF44 }, { 0x0FF45, false, de0FF45 }, +{ 0x0FF46, false, de0FF46 }, { 0x0FF47, false, de0FF47 }, { 0x0FF48, false, de0FF48 }, { 0x0FF49, false, de0FF49 }, +{ 0x0FF4A, false, de0FF4A }, { 0x0FF4B, false, de0FF4B }, { 0x0FF4C, false, de0FF4C }, { 0x0FF4D, false, de0FF4D }, +{ 0x0FF4E, false, de0FF4E }, { 0x0FF4F, false, de0FF4F }, { 0x0FF50, false, de0FF50 }, { 0x0FF51, false, de0FF51 }, +{ 0x0FF52, false, de0FF52 }, { 0x0FF53, false, de0FF53 }, { 0x0FF54, false, de0FF54 }, { 0x0FF55, false, de0FF55 }, +{ 0x0FF56, false, de0FF56 }, { 0x0FF57, false, de0FF57 }, { 0x0FF58, false, de0FF58 }, { 0x0FF59, false, de0FF59 }, +{ 0x0FF5A, false, de0FF5A }, { 0x0FF5B, false, de0FF5B }, { 0x0FF5C, false, de0FF5C }, { 0x0FF5D, false, de0FF5D }, +{ 0x0FF5E, false, de0FF5E }, { 0x0FF5F, false, de0FF5F }, { 0x0FF60, false, de0FF60 }, { 0x0FF61, false, de0FF61 }, +{ 0x0FF62, false, de0FF62 }, { 0x0FF63, false, de0FF63 }, { 0x0FF64, false, de0FF64 }, { 0x0FF65, false, de0FF65 }, +{ 0x0FF66, false, de0FF66 }, { 0x0FF67, false, de0FF67 }, { 0x0FF68, false, de0FF68 }, { 0x0FF69, false, de0FF69 }, +{ 0x0FF6A, false, de0FF6A }, { 0x0FF6B, false, de0FF6B }, { 0x0FF6C, false, de0FF6C }, { 0x0FF6D, false, de0FF6D }, +{ 0x0FF6E, false, de0FF6E }, { 0x0FF6F, false, de0FF6F }, { 0x0FF70, false, de0FF70 }, { 0x0FF71, false, de0FF71 }, +{ 0x0FF72, false, de0FF72 }, { 0x0FF73, false, de0FF73 }, { 0x0FF74, false, de0FF74 }, { 0x0FF75, false, de0FF75 }, +{ 0x0FF76, false, de0FF76 }, { 0x0FF77, false, de0FF77 }, { 0x0FF78, false, de0FF78 }, { 0x0FF79, false, de0FF79 }, +{ 0x0FF7A, false, de0FF7A }, { 0x0FF7B, false, de0FF7B }, { 0x0FF7C, false, de0FF7C }, { 0x0FF7D, false, de0FF7D }, +{ 0x0FF7E, false, de0FF7E }, { 0x0FF7F, false, de0FF7F }, { 0x0FF80, false, de0FF80 }, { 0x0FF81, false, de0FF81 }, +{ 0x0FF82, false, de0FF82 }, { 0x0FF83, false, de0FF83 }, { 0x0FF84, false, de0FF84 }, { 0x0FF85, false, de0FF85 }, +{ 0x0FF86, false, de0FF86 }, { 0x0FF87, false, de0FF87 }, { 0x0FF88, false, de0FF88 }, { 0x0FF89, false, de0FF89 }, +{ 0x0FF8A, false, de0FF8A }, { 0x0FF8B, false, de0FF8B }, { 0x0FF8C, false, de0FF8C }, { 0x0FF8D, false, de0FF8D }, +{ 0x0FF8E, false, de0FF8E }, { 0x0FF8F, false, de0FF8F }, { 0x0FF90, false, de0FF90 }, { 0x0FF91, false, de0FF91 }, +{ 0x0FF92, false, de0FF92 }, { 0x0FF93, false, de0FF93 }, { 0x0FF94, false, de0FF94 }, { 0x0FF95, false, de0FF95 }, +{ 0x0FF96, false, de0FF96 }, { 0x0FF97, false, de0FF97 }, { 0x0FF98, false, de0FF98 }, { 0x0FF99, false, de0FF99 }, +{ 0x0FF9A, false, de0FF9A }, { 0x0FF9B, false, de0FF9B }, { 0x0FF9C, false, de0FF9C }, { 0x0FF9D, false, de0FF9D }, +{ 0x0FF9E, false, de0FF9E }, { 0x0FF9F, false, de0FF9F }, { 0x0FFA0, false, de0FFA0 }, { 0x0FFA1, false, de0FFA1 }, +{ 0x0FFA2, false, de0FFA2 }, { 0x0FFA3, false, de0FFA3 }, { 0x0FFA4, false, de0FFA4 }, { 0x0FFA5, false, de0FFA5 }, +{ 0x0FFA6, false, de0FFA6 }, { 0x0FFA7, false, de0FFA7 }, { 0x0FFA8, false, de0FFA8 }, { 0x0FFA9, false, de0FFA9 }, +{ 0x0FFAA, false, de0FFAA }, { 0x0FFAB, false, de0FFAB }, { 0x0FFAC, false, de0FFAC }, { 0x0FFAD, false, de0FFAD }, +{ 0x0FFAE, false, de0FFAE }, { 0x0FFAF, false, de0FFAF }, { 0x0FFB0, false, de0FFB0 }, { 0x0FFB1, false, de0FFB1 }, +{ 0x0FFB2, false, de0FFB2 }, { 0x0FFB3, false, de0FFB3 }, { 0x0FFB4, false, de0FFB4 }, { 0x0FFB5, false, de0FFB5 }, +{ 0x0FFB6, false, de0FFB6 }, { 0x0FFB7, false, de0FFB7 }, { 0x0FFB8, false, de0FFB8 }, { 0x0FFB9, false, de0FFB9 }, +{ 0x0FFBA, false, de0FFBA }, { 0x0FFBB, false, de0FFBB }, { 0x0FFBC, false, de0FFBC }, { 0x0FFBD, false, de0FFBD }, +{ 0x0FFBE, false, de0FFBE }, { 0x0FFC2, false, de0FFC2 }, { 0x0FFC3, false, de0FFC3 }, { 0x0FFC4, false, de0FFC4 }, +{ 0x0FFC5, false, de0FFC5 }, { 0x0FFC6, false, de0FFC6 }, { 0x0FFC7, false, de0FFC7 }, { 0x0FFCA, false, de0FFCA }, +{ 0x0FFCB, false, de0FFCB }, { 0x0FFCC, false, de0FFCC }, { 0x0FFCD, false, de0FFCD }, { 0x0FFCE, false, de0FFCE }, +{ 0x0FFCF, false, de0FFCF }, { 0x0FFD2, false, de0FFD2 }, { 0x0FFD3, false, de0FFD3 }, { 0x0FFD4, false, de0FFD4 }, +{ 0x0FFD5, false, de0FFD5 }, { 0x0FFD6, false, de0FFD6 }, { 0x0FFD7, false, de0FFD7 }, { 0x0FFDA, false, de0FFDA }, +{ 0x0FFDB, false, de0FFDB }, { 0x0FFDC, false, de0FFDC }, { 0x0FFE0, false, de0FFE0 }, { 0x0FFE1, false, de0FFE1 }, +{ 0x0FFE2, false, de0FFE2 }, { 0x0FFE3, false, de0FFE3 }, { 0x0FFE4, false, de0FFE4 }, { 0x0FFE5, false, de0FFE5 }, +{ 0x0FFE6, false, de0FFE6 }, { 0x0FFE8, false, de0FFE8 }, { 0x0FFE9, false, de0FFE9 }, { 0x0FFEA, false, de0FFEA }, +{ 0x0FFEB, false, de0FFEB }, { 0x0FFEC, false, de0FFEC }, { 0x0FFED, false, de0FFED }, { 0x0FFEE, false, de0FFEE }, +{ 0x1D15E, true, de1D15E }, { 0x1D15F, true, de1D15F }, { 0x1D160, true, de1D160 }, { 0x1D161, true, de1D161 }, +{ 0x1D162, true, de1D162 }, { 0x1D163, true, de1D163 }, { 0x1D164, true, de1D164 }, { 0x1D1BB, true, de1D1BB }, +{ 0x1D1BC, true, de1D1BC }, { 0x1D1BD, true, de1D1BD }, { 0x1D1BE, true, de1D1BE }, { 0x1D1BF, true, de1D1BF }, +{ 0x1D1C0, true, de1D1C0 }, { 0x1D400, false, de1D400 }, { 0x1D401, false, de1D401 }, { 0x1D402, false, de1D402 }, +{ 0x1D403, false, de1D403 }, { 0x1D404, false, de1D404 }, { 0x1D405, false, de1D405 }, { 0x1D406, false, de1D406 }, +{ 0x1D407, false, de1D407 }, { 0x1D408, false, de1D408 }, { 0x1D409, false, de1D409 }, { 0x1D40A, false, de1D40A }, +{ 0x1D40B, false, de1D40B }, { 0x1D40C, false, de1D40C }, { 0x1D40D, false, de1D40D }, { 0x1D40E, false, de1D40E }, +{ 0x1D40F, false, de1D40F }, { 0x1D410, false, de1D410 }, { 0x1D411, false, de1D411 }, { 0x1D412, false, de1D412 }, +{ 0x1D413, false, de1D413 }, { 0x1D414, false, de1D414 }, { 0x1D415, false, de1D415 }, { 0x1D416, false, de1D416 }, +{ 0x1D417, false, de1D417 }, { 0x1D418, false, de1D418 }, { 0x1D419, false, de1D419 }, { 0x1D41A, false, de1D41A }, +{ 0x1D41B, false, de1D41B }, { 0x1D41C, false, de1D41C }, { 0x1D41D, false, de1D41D }, { 0x1D41E, false, de1D41E }, +{ 0x1D41F, false, de1D41F }, { 0x1D420, false, de1D420 }, { 0x1D421, false, de1D421 }, { 0x1D422, false, de1D422 }, +{ 0x1D423, false, de1D423 }, { 0x1D424, false, de1D424 }, { 0x1D425, false, de1D425 }, { 0x1D426, false, de1D426 }, +{ 0x1D427, false, de1D427 }, { 0x1D428, false, de1D428 }, { 0x1D429, false, de1D429 }, { 0x1D42A, false, de1D42A }, +{ 0x1D42B, false, de1D42B }, { 0x1D42C, false, de1D42C }, { 0x1D42D, false, de1D42D }, { 0x1D42E, false, de1D42E }, +{ 0x1D42F, false, de1D42F }, { 0x1D430, false, de1D430 }, { 0x1D431, false, de1D431 }, { 0x1D432, false, de1D432 }, +{ 0x1D433, false, de1D433 }, { 0x1D434, false, de1D434 }, { 0x1D435, false, de1D435 }, { 0x1D436, false, de1D436 }, +{ 0x1D437, false, de1D437 }, { 0x1D438, false, de1D438 }, { 0x1D439, false, de1D439 }, { 0x1D43A, false, de1D43A }, +{ 0x1D43B, false, de1D43B }, { 0x1D43C, false, de1D43C }, { 0x1D43D, false, de1D43D }, { 0x1D43E, false, de1D43E }, +{ 0x1D43F, false, de1D43F }, { 0x1D440, false, de1D440 }, { 0x1D441, false, de1D441 }, { 0x1D442, false, de1D442 }, +{ 0x1D443, false, de1D443 }, { 0x1D444, false, de1D444 }, { 0x1D445, false, de1D445 }, { 0x1D446, false, de1D446 }, +{ 0x1D447, false, de1D447 }, { 0x1D448, false, de1D448 }, { 0x1D449, false, de1D449 }, { 0x1D44A, false, de1D44A }, +{ 0x1D44B, false, de1D44B }, { 0x1D44C, false, de1D44C }, { 0x1D44D, false, de1D44D }, { 0x1D44E, false, de1D44E }, +{ 0x1D44F, false, de1D44F }, { 0x1D450, false, de1D450 }, { 0x1D451, false, de1D451 }, { 0x1D452, false, de1D452 }, +{ 0x1D453, false, de1D453 }, { 0x1D454, false, de1D454 }, { 0x1D456, false, de1D456 }, { 0x1D457, false, de1D457 }, +{ 0x1D458, false, de1D458 }, { 0x1D459, false, de1D459 }, { 0x1D45A, false, de1D45A }, { 0x1D45B, false, de1D45B }, +{ 0x1D45C, false, de1D45C }, { 0x1D45D, false, de1D45D }, { 0x1D45E, false, de1D45E }, { 0x1D45F, false, de1D45F }, +{ 0x1D460, false, de1D460 }, { 0x1D461, false, de1D461 }, { 0x1D462, false, de1D462 }, { 0x1D463, false, de1D463 }, +{ 0x1D464, false, de1D464 }, { 0x1D465, false, de1D465 }, { 0x1D466, false, de1D466 }, { 0x1D467, false, de1D467 }, +{ 0x1D468, false, de1D468 }, { 0x1D469, false, de1D469 }, { 0x1D46A, false, de1D46A }, { 0x1D46B, false, de1D46B }, +{ 0x1D46C, false, de1D46C }, { 0x1D46D, false, de1D46D }, { 0x1D46E, false, de1D46E }, { 0x1D46F, false, de1D46F }, +{ 0x1D470, false, de1D470 }, { 0x1D471, false, de1D471 }, { 0x1D472, false, de1D472 }, { 0x1D473, false, de1D473 }, +{ 0x1D474, false, de1D474 }, { 0x1D475, false, de1D475 }, { 0x1D476, false, de1D476 }, { 0x1D477, false, de1D477 }, +{ 0x1D478, false, de1D478 }, { 0x1D479, false, de1D479 }, { 0x1D47A, false, de1D47A }, { 0x1D47B, false, de1D47B }, +{ 0x1D47C, false, de1D47C }, { 0x1D47D, false, de1D47D }, { 0x1D47E, false, de1D47E }, { 0x1D47F, false, de1D47F }, +{ 0x1D480, false, de1D480 }, { 0x1D481, false, de1D481 }, { 0x1D482, false, de1D482 }, { 0x1D483, false, de1D483 }, +{ 0x1D484, false, de1D484 }, { 0x1D485, false, de1D485 }, { 0x1D486, false, de1D486 }, { 0x1D487, false, de1D487 }, +{ 0x1D488, false, de1D488 }, { 0x1D489, false, de1D489 }, { 0x1D48A, false, de1D48A }, { 0x1D48B, false, de1D48B }, +{ 0x1D48C, false, de1D48C }, { 0x1D48D, false, de1D48D }, { 0x1D48E, false, de1D48E }, { 0x1D48F, false, de1D48F }, +{ 0x1D490, false, de1D490 }, { 0x1D491, false, de1D491 }, { 0x1D492, false, de1D492 }, { 0x1D493, false, de1D493 }, +{ 0x1D494, false, de1D494 }, { 0x1D495, false, de1D495 }, { 0x1D496, false, de1D496 }, { 0x1D497, false, de1D497 }, +{ 0x1D498, false, de1D498 }, { 0x1D499, false, de1D499 }, { 0x1D49A, false, de1D49A }, { 0x1D49B, false, de1D49B }, +{ 0x1D49C, false, de1D49C }, { 0x1D49E, false, de1D49E }, { 0x1D49F, false, de1D49F }, { 0x1D4A2, false, de1D4A2 }, +{ 0x1D4A5, false, de1D4A5 }, { 0x1D4A6, false, de1D4A6 }, { 0x1D4A9, false, de1D4A9 }, { 0x1D4AA, false, de1D4AA }, +{ 0x1D4AB, false, de1D4AB }, { 0x1D4AC, false, de1D4AC }, { 0x1D4AE, false, de1D4AE }, { 0x1D4AF, false, de1D4AF }, +{ 0x1D4B0, false, de1D4B0 }, { 0x1D4B1, false, de1D4B1 }, { 0x1D4B2, false, de1D4B2 }, { 0x1D4B3, false, de1D4B3 }, +{ 0x1D4B4, false, de1D4B4 }, { 0x1D4B5, false, de1D4B5 }, { 0x1D4B6, false, de1D4B6 }, { 0x1D4B7, false, de1D4B7 }, +{ 0x1D4B8, false, de1D4B8 }, { 0x1D4B9, false, de1D4B9 }, { 0x1D4BB, false, de1D4BB }, { 0x1D4BD, false, de1D4BD }, +{ 0x1D4BE, false, de1D4BE }, { 0x1D4BF, false, de1D4BF }, { 0x1D4C0, false, de1D4C0 }, { 0x1D4C1, false, de1D4C1 }, +{ 0x1D4C2, false, de1D4C2 }, { 0x1D4C3, false, de1D4C3 }, { 0x1D4C5, false, de1D4C5 }, { 0x1D4C6, false, de1D4C6 }, +{ 0x1D4C7, false, de1D4C7 }, { 0x1D4C8, false, de1D4C8 }, { 0x1D4C9, false, de1D4C9 }, { 0x1D4CA, false, de1D4CA }, +{ 0x1D4CB, false, de1D4CB }, { 0x1D4CC, false, de1D4CC }, { 0x1D4CD, false, de1D4CD }, { 0x1D4CE, false, de1D4CE }, +{ 0x1D4CF, false, de1D4CF }, { 0x1D4D0, false, de1D4D0 }, { 0x1D4D1, false, de1D4D1 }, { 0x1D4D2, false, de1D4D2 }, +{ 0x1D4D3, false, de1D4D3 }, { 0x1D4D4, false, de1D4D4 }, { 0x1D4D5, false, de1D4D5 }, { 0x1D4D6, false, de1D4D6 }, +{ 0x1D4D7, false, de1D4D7 }, { 0x1D4D8, false, de1D4D8 }, { 0x1D4D9, false, de1D4D9 }, { 0x1D4DA, false, de1D4DA }, +{ 0x1D4DB, false, de1D4DB }, { 0x1D4DC, false, de1D4DC }, { 0x1D4DD, false, de1D4DD }, { 0x1D4DE, false, de1D4DE }, +{ 0x1D4DF, false, de1D4DF }, { 0x1D4E0, false, de1D4E0 }, { 0x1D4E1, false, de1D4E1 }, { 0x1D4E2, false, de1D4E2 }, +{ 0x1D4E3, false, de1D4E3 }, { 0x1D4E4, false, de1D4E4 }, { 0x1D4E5, false, de1D4E5 }, { 0x1D4E6, false, de1D4E6 }, +{ 0x1D4E7, false, de1D4E7 }, { 0x1D4E8, false, de1D4E8 }, { 0x1D4E9, false, de1D4E9 }, { 0x1D4EA, false, de1D4EA }, +{ 0x1D4EB, false, de1D4EB }, { 0x1D4EC, false, de1D4EC }, { 0x1D4ED, false, de1D4ED }, { 0x1D4EE, false, de1D4EE }, +{ 0x1D4EF, false, de1D4EF }, { 0x1D4F0, false, de1D4F0 }, { 0x1D4F1, false, de1D4F1 }, { 0x1D4F2, false, de1D4F2 }, +{ 0x1D4F3, false, de1D4F3 }, { 0x1D4F4, false, de1D4F4 }, { 0x1D4F5, false, de1D4F5 }, { 0x1D4F6, false, de1D4F6 }, +{ 0x1D4F7, false, de1D4F7 }, { 0x1D4F8, false, de1D4F8 }, { 0x1D4F9, false, de1D4F9 }, { 0x1D4FA, false, de1D4FA }, +{ 0x1D4FB, false, de1D4FB }, { 0x1D4FC, false, de1D4FC }, { 0x1D4FD, false, de1D4FD }, { 0x1D4FE, false, de1D4FE }, +{ 0x1D4FF, false, de1D4FF }, { 0x1D500, false, de1D500 }, { 0x1D501, false, de1D501 }, { 0x1D502, false, de1D502 }, +{ 0x1D503, false, de1D503 }, { 0x1D504, false, de1D504 }, { 0x1D505, false, de1D505 }, { 0x1D507, false, de1D507 }, +{ 0x1D508, false, de1D508 }, { 0x1D509, false, de1D509 }, { 0x1D50A, false, de1D50A }, { 0x1D50D, false, de1D50D }, +{ 0x1D50E, false, de1D50E }, { 0x1D50F, false, de1D50F }, { 0x1D510, false, de1D510 }, { 0x1D511, false, de1D511 }, +{ 0x1D512, false, de1D512 }, { 0x1D513, false, de1D513 }, { 0x1D514, false, de1D514 }, { 0x1D516, false, de1D516 }, +{ 0x1D517, false, de1D517 }, { 0x1D518, false, de1D518 }, { 0x1D519, false, de1D519 }, { 0x1D51A, false, de1D51A }, +{ 0x1D51B, false, de1D51B }, { 0x1D51C, false, de1D51C }, { 0x1D51E, false, de1D51E }, { 0x1D51F, false, de1D51F }, +{ 0x1D520, false, de1D520 }, { 0x1D521, false, de1D521 }, { 0x1D522, false, de1D522 }, { 0x1D523, false, de1D523 }, +{ 0x1D524, false, de1D524 }, { 0x1D525, false, de1D525 }, { 0x1D526, false, de1D526 }, { 0x1D527, false, de1D527 }, +{ 0x1D528, false, de1D528 }, { 0x1D529, false, de1D529 }, { 0x1D52A, false, de1D52A }, { 0x1D52B, false, de1D52B }, +{ 0x1D52C, false, de1D52C }, { 0x1D52D, false, de1D52D }, { 0x1D52E, false, de1D52E }, { 0x1D52F, false, de1D52F }, +{ 0x1D530, false, de1D530 }, { 0x1D531, false, de1D531 }, { 0x1D532, false, de1D532 }, { 0x1D533, false, de1D533 }, +{ 0x1D534, false, de1D534 }, { 0x1D535, false, de1D535 }, { 0x1D536, false, de1D536 }, { 0x1D537, false, de1D537 }, +{ 0x1D538, false, de1D538 }, { 0x1D539, false, de1D539 }, { 0x1D53B, false, de1D53B }, { 0x1D53C, false, de1D53C }, +{ 0x1D53D, false, de1D53D }, { 0x1D53E, false, de1D53E }, { 0x1D540, false, de1D540 }, { 0x1D541, false, de1D541 }, +{ 0x1D542, false, de1D542 }, { 0x1D543, false, de1D543 }, { 0x1D544, false, de1D544 }, { 0x1D546, false, de1D546 }, +{ 0x1D54A, false, de1D54A }, { 0x1D54B, false, de1D54B }, { 0x1D54C, false, de1D54C }, { 0x1D54D, false, de1D54D }, +{ 0x1D54E, false, de1D54E }, { 0x1D54F, false, de1D54F }, { 0x1D550, false, de1D550 }, { 0x1D552, false, de1D552 }, +{ 0x1D553, false, de1D553 }, { 0x1D554, false, de1D554 }, { 0x1D555, false, de1D555 }, { 0x1D556, false, de1D556 }, +{ 0x1D557, false, de1D557 }, { 0x1D558, false, de1D558 }, { 0x1D559, false, de1D559 }, { 0x1D55A, false, de1D55A }, +{ 0x1D55B, false, de1D55B }, { 0x1D55C, false, de1D55C }, { 0x1D55D, false, de1D55D }, { 0x1D55E, false, de1D55E }, +{ 0x1D55F, false, de1D55F }, { 0x1D560, false, de1D560 }, { 0x1D561, false, de1D561 }, { 0x1D562, false, de1D562 }, +{ 0x1D563, false, de1D563 }, { 0x1D564, false, de1D564 }, { 0x1D565, false, de1D565 }, { 0x1D566, false, de1D566 }, +{ 0x1D567, false, de1D567 }, { 0x1D568, false, de1D568 }, { 0x1D569, false, de1D569 }, { 0x1D56A, false, de1D56A }, +{ 0x1D56B, false, de1D56B }, { 0x1D56C, false, de1D56C }, { 0x1D56D, false, de1D56D }, { 0x1D56E, false, de1D56E }, +{ 0x1D56F, false, de1D56F }, { 0x1D570, false, de1D570 }, { 0x1D571, false, de1D571 }, { 0x1D572, false, de1D572 }, +{ 0x1D573, false, de1D573 }, { 0x1D574, false, de1D574 }, { 0x1D575, false, de1D575 }, { 0x1D576, false, de1D576 }, +{ 0x1D577, false, de1D577 }, { 0x1D578, false, de1D578 }, { 0x1D579, false, de1D579 }, { 0x1D57A, false, de1D57A }, +{ 0x1D57B, false, de1D57B }, { 0x1D57C, false, de1D57C }, { 0x1D57D, false, de1D57D }, { 0x1D57E, false, de1D57E }, +{ 0x1D57F, false, de1D57F }, { 0x1D580, false, de1D580 }, { 0x1D581, false, de1D581 }, { 0x1D582, false, de1D582 }, +{ 0x1D583, false, de1D583 }, { 0x1D584, false, de1D584 }, { 0x1D585, false, de1D585 }, { 0x1D586, false, de1D586 }, +{ 0x1D587, false, de1D587 }, { 0x1D588, false, de1D588 }, { 0x1D589, false, de1D589 }, { 0x1D58A, false, de1D58A }, +{ 0x1D58B, false, de1D58B }, { 0x1D58C, false, de1D58C }, { 0x1D58D, false, de1D58D }, { 0x1D58E, false, de1D58E }, +{ 0x1D58F, false, de1D58F }, { 0x1D590, false, de1D590 }, { 0x1D591, false, de1D591 }, { 0x1D592, false, de1D592 }, +{ 0x1D593, false, de1D593 }, { 0x1D594, false, de1D594 }, { 0x1D595, false, de1D595 }, { 0x1D596, false, de1D596 }, +{ 0x1D597, false, de1D597 }, { 0x1D598, false, de1D598 }, { 0x1D599, false, de1D599 }, { 0x1D59A, false, de1D59A }, +{ 0x1D59B, false, de1D59B }, { 0x1D59C, false, de1D59C }, { 0x1D59D, false, de1D59D }, { 0x1D59E, false, de1D59E }, +{ 0x1D59F, false, de1D59F }, { 0x1D5A0, false, de1D5A0 }, { 0x1D5A1, false, de1D5A1 }, { 0x1D5A2, false, de1D5A2 }, +{ 0x1D5A3, false, de1D5A3 }, { 0x1D5A4, false, de1D5A4 }, { 0x1D5A5, false, de1D5A5 }, { 0x1D5A6, false, de1D5A6 }, +{ 0x1D5A7, false, de1D5A7 }, { 0x1D5A8, false, de1D5A8 }, { 0x1D5A9, false, de1D5A9 }, { 0x1D5AA, false, de1D5AA }, +{ 0x1D5AB, false, de1D5AB }, { 0x1D5AC, false, de1D5AC }, { 0x1D5AD, false, de1D5AD }, { 0x1D5AE, false, de1D5AE }, +{ 0x1D5AF, false, de1D5AF }, { 0x1D5B0, false, de1D5B0 }, { 0x1D5B1, false, de1D5B1 }, { 0x1D5B2, false, de1D5B2 }, +{ 0x1D5B3, false, de1D5B3 }, { 0x1D5B4, false, de1D5B4 }, { 0x1D5B5, false, de1D5B5 }, { 0x1D5B6, false, de1D5B6 }, +{ 0x1D5B7, false, de1D5B7 }, { 0x1D5B8, false, de1D5B8 }, { 0x1D5B9, false, de1D5B9 }, { 0x1D5BA, false, de1D5BA }, +{ 0x1D5BB, false, de1D5BB }, { 0x1D5BC, false, de1D5BC }, { 0x1D5BD, false, de1D5BD }, { 0x1D5BE, false, de1D5BE }, +{ 0x1D5BF, false, de1D5BF }, { 0x1D5C0, false, de1D5C0 }, { 0x1D5C1, false, de1D5C1 }, { 0x1D5C2, false, de1D5C2 }, +{ 0x1D5C3, false, de1D5C3 }, { 0x1D5C4, false, de1D5C4 }, { 0x1D5C5, false, de1D5C5 }, { 0x1D5C6, false, de1D5C6 }, +{ 0x1D5C7, false, de1D5C7 }, { 0x1D5C8, false, de1D5C8 }, { 0x1D5C9, false, de1D5C9 }, { 0x1D5CA, false, de1D5CA }, +{ 0x1D5CB, false, de1D5CB }, { 0x1D5CC, false, de1D5CC }, { 0x1D5CD, false, de1D5CD }, { 0x1D5CE, false, de1D5CE }, +{ 0x1D5CF, false, de1D5CF }, { 0x1D5D0, false, de1D5D0 }, { 0x1D5D1, false, de1D5D1 }, { 0x1D5D2, false, de1D5D2 }, +{ 0x1D5D3, false, de1D5D3 }, { 0x1D5D4, false, de1D5D4 }, { 0x1D5D5, false, de1D5D5 }, { 0x1D5D6, false, de1D5D6 }, +{ 0x1D5D7, false, de1D5D7 }, { 0x1D5D8, false, de1D5D8 }, { 0x1D5D9, false, de1D5D9 }, { 0x1D5DA, false, de1D5DA }, +{ 0x1D5DB, false, de1D5DB }, { 0x1D5DC, false, de1D5DC }, { 0x1D5DD, false, de1D5DD }, { 0x1D5DE, false, de1D5DE }, +{ 0x1D5DF, false, de1D5DF }, { 0x1D5E0, false, de1D5E0 }, { 0x1D5E1, false, de1D5E1 }, { 0x1D5E2, false, de1D5E2 }, +{ 0x1D5E3, false, de1D5E3 }, { 0x1D5E4, false, de1D5E4 }, { 0x1D5E5, false, de1D5E5 }, { 0x1D5E6, false, de1D5E6 }, +{ 0x1D5E7, false, de1D5E7 }, { 0x1D5E8, false, de1D5E8 }, { 0x1D5E9, false, de1D5E9 }, { 0x1D5EA, false, de1D5EA }, +{ 0x1D5EB, false, de1D5EB }, { 0x1D5EC, false, de1D5EC }, { 0x1D5ED, false, de1D5ED }, { 0x1D5EE, false, de1D5EE }, +{ 0x1D5EF, false, de1D5EF }, { 0x1D5F0, false, de1D5F0 }, { 0x1D5F1, false, de1D5F1 }, { 0x1D5F2, false, de1D5F2 }, +{ 0x1D5F3, false, de1D5F3 }, { 0x1D5F4, false, de1D5F4 }, { 0x1D5F5, false, de1D5F5 }, { 0x1D5F6, false, de1D5F6 }, +{ 0x1D5F7, false, de1D5F7 }, { 0x1D5F8, false, de1D5F8 }, { 0x1D5F9, false, de1D5F9 }, { 0x1D5FA, false, de1D5FA }, +{ 0x1D5FB, false, de1D5FB }, { 0x1D5FC, false, de1D5FC }, { 0x1D5FD, false, de1D5FD }, { 0x1D5FE, false, de1D5FE }, +{ 0x1D5FF, false, de1D5FF }, { 0x1D600, false, de1D600 }, { 0x1D601, false, de1D601 }, { 0x1D602, false, de1D602 }, +{ 0x1D603, false, de1D603 }, { 0x1D604, false, de1D604 }, { 0x1D605, false, de1D605 }, { 0x1D606, false, de1D606 }, +{ 0x1D607, false, de1D607 }, { 0x1D608, false, de1D608 }, { 0x1D609, false, de1D609 }, { 0x1D60A, false, de1D60A }, +{ 0x1D60B, false, de1D60B }, { 0x1D60C, false, de1D60C }, { 0x1D60D, false, de1D60D }, { 0x1D60E, false, de1D60E }, +{ 0x1D60F, false, de1D60F }, { 0x1D610, false, de1D610 }, { 0x1D611, false, de1D611 }, { 0x1D612, false, de1D612 }, +{ 0x1D613, false, de1D613 }, { 0x1D614, false, de1D614 }, { 0x1D615, false, de1D615 }, { 0x1D616, false, de1D616 }, +{ 0x1D617, false, de1D617 }, { 0x1D618, false, de1D618 }, { 0x1D619, false, de1D619 }, { 0x1D61A, false, de1D61A }, +{ 0x1D61B, false, de1D61B }, { 0x1D61C, false, de1D61C }, { 0x1D61D, false, de1D61D }, { 0x1D61E, false, de1D61E }, +{ 0x1D61F, false, de1D61F }, { 0x1D620, false, de1D620 }, { 0x1D621, false, de1D621 }, { 0x1D622, false, de1D622 }, +{ 0x1D623, false, de1D623 }, { 0x1D624, false, de1D624 }, { 0x1D625, false, de1D625 }, { 0x1D626, false, de1D626 }, +{ 0x1D627, false, de1D627 }, { 0x1D628, false, de1D628 }, { 0x1D629, false, de1D629 }, { 0x1D62A, false, de1D62A }, +{ 0x1D62B, false, de1D62B }, { 0x1D62C, false, de1D62C }, { 0x1D62D, false, de1D62D }, { 0x1D62E, false, de1D62E }, +{ 0x1D62F, false, de1D62F }, { 0x1D630, false, de1D630 }, { 0x1D631, false, de1D631 }, { 0x1D632, false, de1D632 }, +{ 0x1D633, false, de1D633 }, { 0x1D634, false, de1D634 }, { 0x1D635, false, de1D635 }, { 0x1D636, false, de1D636 }, +{ 0x1D637, false, de1D637 }, { 0x1D638, false, de1D638 }, { 0x1D639, false, de1D639 }, { 0x1D63A, false, de1D63A }, +{ 0x1D63B, false, de1D63B }, { 0x1D63C, false, de1D63C }, { 0x1D63D, false, de1D63D }, { 0x1D63E, false, de1D63E }, +{ 0x1D63F, false, de1D63F }, { 0x1D640, false, de1D640 }, { 0x1D641, false, de1D641 }, { 0x1D642, false, de1D642 }, +{ 0x1D643, false, de1D643 }, { 0x1D644, false, de1D644 }, { 0x1D645, false, de1D645 }, { 0x1D646, false, de1D646 }, +{ 0x1D647, false, de1D647 }, { 0x1D648, false, de1D648 }, { 0x1D649, false, de1D649 }, { 0x1D64A, false, de1D64A }, +{ 0x1D64B, false, de1D64B }, { 0x1D64C, false, de1D64C }, { 0x1D64D, false, de1D64D }, { 0x1D64E, false, de1D64E }, +{ 0x1D64F, false, de1D64F }, { 0x1D650, false, de1D650 }, { 0x1D651, false, de1D651 }, { 0x1D652, false, de1D652 }, +{ 0x1D653, false, de1D653 }, { 0x1D654, false, de1D654 }, { 0x1D655, false, de1D655 }, { 0x1D656, false, de1D656 }, +{ 0x1D657, false, de1D657 }, { 0x1D658, false, de1D658 }, { 0x1D659, false, de1D659 }, { 0x1D65A, false, de1D65A }, +{ 0x1D65B, false, de1D65B }, { 0x1D65C, false, de1D65C }, { 0x1D65D, false, de1D65D }, { 0x1D65E, false, de1D65E }, +{ 0x1D65F, false, de1D65F }, { 0x1D660, false, de1D660 }, { 0x1D661, false, de1D661 }, { 0x1D662, false, de1D662 }, +{ 0x1D663, false, de1D663 }, { 0x1D664, false, de1D664 }, { 0x1D665, false, de1D665 }, { 0x1D666, false, de1D666 }, +{ 0x1D667, false, de1D667 }, { 0x1D668, false, de1D668 }, { 0x1D669, false, de1D669 }, { 0x1D66A, false, de1D66A }, +{ 0x1D66B, false, de1D66B }, { 0x1D66C, false, de1D66C }, { 0x1D66D, false, de1D66D }, { 0x1D66E, false, de1D66E }, +{ 0x1D66F, false, de1D66F }, { 0x1D670, false, de1D670 }, { 0x1D671, false, de1D671 }, { 0x1D672, false, de1D672 }, +{ 0x1D673, false, de1D673 }, { 0x1D674, false, de1D674 }, { 0x1D675, false, de1D675 }, { 0x1D676, false, de1D676 }, +{ 0x1D677, false, de1D677 }, { 0x1D678, false, de1D678 }, { 0x1D679, false, de1D679 }, { 0x1D67A, false, de1D67A }, +{ 0x1D67B, false, de1D67B }, { 0x1D67C, false, de1D67C }, { 0x1D67D, false, de1D67D }, { 0x1D67E, false, de1D67E }, +{ 0x1D67F, false, de1D67F }, { 0x1D680, false, de1D680 }, { 0x1D681, false, de1D681 }, { 0x1D682, false, de1D682 }, +{ 0x1D683, false, de1D683 }, { 0x1D684, false, de1D684 }, { 0x1D685, false, de1D685 }, { 0x1D686, false, de1D686 }, +{ 0x1D687, false, de1D687 }, { 0x1D688, false, de1D688 }, { 0x1D689, false, de1D689 }, { 0x1D68A, false, de1D68A }, +{ 0x1D68B, false, de1D68B }, { 0x1D68C, false, de1D68C }, { 0x1D68D, false, de1D68D }, { 0x1D68E, false, de1D68E }, +{ 0x1D68F, false, de1D68F }, { 0x1D690, false, de1D690 }, { 0x1D691, false, de1D691 }, { 0x1D692, false, de1D692 }, +{ 0x1D693, false, de1D693 }, { 0x1D694, false, de1D694 }, { 0x1D695, false, de1D695 }, { 0x1D696, false, de1D696 }, +{ 0x1D697, false, de1D697 }, { 0x1D698, false, de1D698 }, { 0x1D699, false, de1D699 }, { 0x1D69A, false, de1D69A }, +{ 0x1D69B, false, de1D69B }, { 0x1D69C, false, de1D69C }, { 0x1D69D, false, de1D69D }, { 0x1D69E, false, de1D69E }, +{ 0x1D69F, false, de1D69F }, { 0x1D6A0, false, de1D6A0 }, { 0x1D6A1, false, de1D6A1 }, { 0x1D6A2, false, de1D6A2 }, +{ 0x1D6A3, false, de1D6A3 }, { 0x1D6A4, false, de1D6A4 }, { 0x1D6A5, false, de1D6A5 }, { 0x1D6A8, false, de1D6A8 }, +{ 0x1D6A9, false, de1D6A9 }, { 0x1D6AA, false, de1D6AA }, { 0x1D6AB, false, de1D6AB }, { 0x1D6AC, false, de1D6AC }, +{ 0x1D6AD, false, de1D6AD }, { 0x1D6AE, false, de1D6AE }, { 0x1D6AF, false, de1D6AF }, { 0x1D6B0, false, de1D6B0 }, +{ 0x1D6B1, false, de1D6B1 }, { 0x1D6B2, false, de1D6B2 }, { 0x1D6B3, false, de1D6B3 }, { 0x1D6B4, false, de1D6B4 }, +{ 0x1D6B5, false, de1D6B5 }, { 0x1D6B6, false, de1D6B6 }, { 0x1D6B7, false, de1D6B7 }, { 0x1D6B8, false, de1D6B8 }, +{ 0x1D6B9, false, de1D6B9 }, { 0x1D6BA, false, de1D6BA }, { 0x1D6BB, false, de1D6BB }, { 0x1D6BC, false, de1D6BC }, +{ 0x1D6BD, false, de1D6BD }, { 0x1D6BE, false, de1D6BE }, { 0x1D6BF, false, de1D6BF }, { 0x1D6C0, false, de1D6C0 }, +{ 0x1D6C1, false, de1D6C1 }, { 0x1D6C2, false, de1D6C2 }, { 0x1D6C3, false, de1D6C3 }, { 0x1D6C4, false, de1D6C4 }, +{ 0x1D6C5, false, de1D6C5 }, { 0x1D6C6, false, de1D6C6 }, { 0x1D6C7, false, de1D6C7 }, { 0x1D6C8, false, de1D6C8 }, +{ 0x1D6C9, false, de1D6C9 }, { 0x1D6CA, false, de1D6CA }, { 0x1D6CB, false, de1D6CB }, { 0x1D6CC, false, de1D6CC }, +{ 0x1D6CD, false, de1D6CD }, { 0x1D6CE, false, de1D6CE }, { 0x1D6CF, false, de1D6CF }, { 0x1D6D0, false, de1D6D0 }, +{ 0x1D6D1, false, de1D6D1 }, { 0x1D6D2, false, de1D6D2 }, { 0x1D6D3, false, de1D6D3 }, { 0x1D6D4, false, de1D6D4 }, +{ 0x1D6D5, false, de1D6D5 }, { 0x1D6D6, false, de1D6D6 }, { 0x1D6D7, false, de1D6D7 }, { 0x1D6D8, false, de1D6D8 }, +{ 0x1D6D9, false, de1D6D9 }, { 0x1D6DA, false, de1D6DA }, { 0x1D6DB, false, de1D6DB }, { 0x1D6DC, false, de1D6DC }, +{ 0x1D6DD, false, de1D6DD }, { 0x1D6DE, false, de1D6DE }, { 0x1D6DF, false, de1D6DF }, { 0x1D6E0, false, de1D6E0 }, +{ 0x1D6E1, false, de1D6E1 }, { 0x1D6E2, false, de1D6E2 }, { 0x1D6E3, false, de1D6E3 }, { 0x1D6E4, false, de1D6E4 }, +{ 0x1D6E5, false, de1D6E5 }, { 0x1D6E6, false, de1D6E6 }, { 0x1D6E7, false, de1D6E7 }, { 0x1D6E8, false, de1D6E8 }, +{ 0x1D6E9, false, de1D6E9 }, { 0x1D6EA, false, de1D6EA }, { 0x1D6EB, false, de1D6EB }, { 0x1D6EC, false, de1D6EC }, +{ 0x1D6ED, false, de1D6ED }, { 0x1D6EE, false, de1D6EE }, { 0x1D6EF, false, de1D6EF }, { 0x1D6F0, false, de1D6F0 }, +{ 0x1D6F1, false, de1D6F1 }, { 0x1D6F2, false, de1D6F2 }, { 0x1D6F3, false, de1D6F3 }, { 0x1D6F4, false, de1D6F4 }, +{ 0x1D6F5, false, de1D6F5 }, { 0x1D6F6, false, de1D6F6 }, { 0x1D6F7, false, de1D6F7 }, { 0x1D6F8, false, de1D6F8 }, +{ 0x1D6F9, false, de1D6F9 }, { 0x1D6FA, false, de1D6FA }, { 0x1D6FB, false, de1D6FB }, { 0x1D6FC, false, de1D6FC }, +{ 0x1D6FD, false, de1D6FD }, { 0x1D6FE, false, de1D6FE }, { 0x1D6FF, false, de1D6FF }, { 0x1D700, false, de1D700 }, +{ 0x1D701, false, de1D701 }, { 0x1D702, false, de1D702 }, { 0x1D703, false, de1D703 }, { 0x1D704, false, de1D704 }, +{ 0x1D705, false, de1D705 }, { 0x1D706, false, de1D706 }, { 0x1D707, false, de1D707 }, { 0x1D708, false, de1D708 }, +{ 0x1D709, false, de1D709 }, { 0x1D70A, false, de1D70A }, { 0x1D70B, false, de1D70B }, { 0x1D70C, false, de1D70C }, +{ 0x1D70D, false, de1D70D }, { 0x1D70E, false, de1D70E }, { 0x1D70F, false, de1D70F }, { 0x1D710, false, de1D710 }, +{ 0x1D711, false, de1D711 }, { 0x1D712, false, de1D712 }, { 0x1D713, false, de1D713 }, { 0x1D714, false, de1D714 }, +{ 0x1D715, false, de1D715 }, { 0x1D716, false, de1D716 }, { 0x1D717, false, de1D717 }, { 0x1D718, false, de1D718 }, +{ 0x1D719, false, de1D719 }, { 0x1D71A, false, de1D71A }, { 0x1D71B, false, de1D71B }, { 0x1D71C, false, de1D71C }, +{ 0x1D71D, false, de1D71D }, { 0x1D71E, false, de1D71E }, { 0x1D71F, false, de1D71F }, { 0x1D720, false, de1D720 }, +{ 0x1D721, false, de1D721 }, { 0x1D722, false, de1D722 }, { 0x1D723, false, de1D723 }, { 0x1D724, false, de1D724 }, +{ 0x1D725, false, de1D725 }, { 0x1D726, false, de1D726 }, { 0x1D727, false, de1D727 }, { 0x1D728, false, de1D728 }, +{ 0x1D729, false, de1D729 }, { 0x1D72A, false, de1D72A }, { 0x1D72B, false, de1D72B }, { 0x1D72C, false, de1D72C }, +{ 0x1D72D, false, de1D72D }, { 0x1D72E, false, de1D72E }, { 0x1D72F, false, de1D72F }, { 0x1D730, false, de1D730 }, +{ 0x1D731, false, de1D731 }, { 0x1D732, false, de1D732 }, { 0x1D733, false, de1D733 }, { 0x1D734, false, de1D734 }, +{ 0x1D735, false, de1D735 }, { 0x1D736, false, de1D736 }, { 0x1D737, false, de1D737 }, { 0x1D738, false, de1D738 }, +{ 0x1D739, false, de1D739 }, { 0x1D73A, false, de1D73A }, { 0x1D73B, false, de1D73B }, { 0x1D73C, false, de1D73C }, +{ 0x1D73D, false, de1D73D }, { 0x1D73E, false, de1D73E }, { 0x1D73F, false, de1D73F }, { 0x1D740, false, de1D740 }, +{ 0x1D741, false, de1D741 }, { 0x1D742, false, de1D742 }, { 0x1D743, false, de1D743 }, { 0x1D744, false, de1D744 }, +{ 0x1D745, false, de1D745 }, { 0x1D746, false, de1D746 }, { 0x1D747, false, de1D747 }, { 0x1D748, false, de1D748 }, +{ 0x1D749, false, de1D749 }, { 0x1D74A, false, de1D74A }, { 0x1D74B, false, de1D74B }, { 0x1D74C, false, de1D74C }, +{ 0x1D74D, false, de1D74D }, { 0x1D74E, false, de1D74E }, { 0x1D74F, false, de1D74F }, { 0x1D750, false, de1D750 }, +{ 0x1D751, false, de1D751 }, { 0x1D752, false, de1D752 }, { 0x1D753, false, de1D753 }, { 0x1D754, false, de1D754 }, +{ 0x1D755, false, de1D755 }, { 0x1D756, false, de1D756 }, { 0x1D757, false, de1D757 }, { 0x1D758, false, de1D758 }, +{ 0x1D759, false, de1D759 }, { 0x1D75A, false, de1D75A }, { 0x1D75B, false, de1D75B }, { 0x1D75C, false, de1D75C }, +{ 0x1D75D, false, de1D75D }, { 0x1D75E, false, de1D75E }, { 0x1D75F, false, de1D75F }, { 0x1D760, false, de1D760 }, +{ 0x1D761, false, de1D761 }, { 0x1D762, false, de1D762 }, { 0x1D763, false, de1D763 }, { 0x1D764, false, de1D764 }, +{ 0x1D765, false, de1D765 }, { 0x1D766, false, de1D766 }, { 0x1D767, false, de1D767 }, { 0x1D768, false, de1D768 }, +{ 0x1D769, false, de1D769 }, { 0x1D76A, false, de1D76A }, { 0x1D76B, false, de1D76B }, { 0x1D76C, false, de1D76C }, +{ 0x1D76D, false, de1D76D }, { 0x1D76E, false, de1D76E }, { 0x1D76F, false, de1D76F }, { 0x1D770, false, de1D770 }, +{ 0x1D771, false, de1D771 }, { 0x1D772, false, de1D772 }, { 0x1D773, false, de1D773 }, { 0x1D774, false, de1D774 }, +{ 0x1D775, false, de1D775 }, { 0x1D776, false, de1D776 }, { 0x1D777, false, de1D777 }, { 0x1D778, false, de1D778 }, +{ 0x1D779, false, de1D779 }, { 0x1D77A, false, de1D77A }, { 0x1D77B, false, de1D77B }, { 0x1D77C, false, de1D77C }, +{ 0x1D77D, false, de1D77D }, { 0x1D77E, false, de1D77E }, { 0x1D77F, false, de1D77F }, { 0x1D780, false, de1D780 }, +{ 0x1D781, false, de1D781 }, { 0x1D782, false, de1D782 }, { 0x1D783, false, de1D783 }, { 0x1D784, false, de1D784 }, +{ 0x1D785, false, de1D785 }, { 0x1D786, false, de1D786 }, { 0x1D787, false, de1D787 }, { 0x1D788, false, de1D788 }, +{ 0x1D789, false, de1D789 }, { 0x1D78A, false, de1D78A }, { 0x1D78B, false, de1D78B }, { 0x1D78C, false, de1D78C }, +{ 0x1D78D, false, de1D78D }, { 0x1D78E, false, de1D78E }, { 0x1D78F, false, de1D78F }, { 0x1D790, false, de1D790 }, +{ 0x1D791, false, de1D791 }, { 0x1D792, false, de1D792 }, { 0x1D793, false, de1D793 }, { 0x1D794, false, de1D794 }, +{ 0x1D795, false, de1D795 }, { 0x1D796, false, de1D796 }, { 0x1D797, false, de1D797 }, { 0x1D798, false, de1D798 }, +{ 0x1D799, false, de1D799 }, { 0x1D79A, false, de1D79A }, { 0x1D79B, false, de1D79B }, { 0x1D79C, false, de1D79C }, +{ 0x1D79D, false, de1D79D }, { 0x1D79E, false, de1D79E }, { 0x1D79F, false, de1D79F }, { 0x1D7A0, false, de1D7A0 }, +{ 0x1D7A1, false, de1D7A1 }, { 0x1D7A2, false, de1D7A2 }, { 0x1D7A3, false, de1D7A3 }, { 0x1D7A4, false, de1D7A4 }, +{ 0x1D7A5, false, de1D7A5 }, { 0x1D7A6, false, de1D7A6 }, { 0x1D7A7, false, de1D7A7 }, { 0x1D7A8, false, de1D7A8 }, +{ 0x1D7A9, false, de1D7A9 }, { 0x1D7AA, false, de1D7AA }, { 0x1D7AB, false, de1D7AB }, { 0x1D7AC, false, de1D7AC }, +{ 0x1D7AD, false, de1D7AD }, { 0x1D7AE, false, de1D7AE }, { 0x1D7AF, false, de1D7AF }, { 0x1D7B0, false, de1D7B0 }, +{ 0x1D7B1, false, de1D7B1 }, { 0x1D7B2, false, de1D7B2 }, { 0x1D7B3, false, de1D7B3 }, { 0x1D7B4, false, de1D7B4 }, +{ 0x1D7B5, false, de1D7B5 }, { 0x1D7B6, false, de1D7B6 }, { 0x1D7B7, false, de1D7B7 }, { 0x1D7B8, false, de1D7B8 }, +{ 0x1D7B9, false, de1D7B9 }, { 0x1D7BA, false, de1D7BA }, { 0x1D7BB, false, de1D7BB }, { 0x1D7BC, false, de1D7BC }, +{ 0x1D7BD, false, de1D7BD }, { 0x1D7BE, false, de1D7BE }, { 0x1D7BF, false, de1D7BF }, { 0x1D7C0, false, de1D7C0 }, +{ 0x1D7C1, false, de1D7C1 }, { 0x1D7C2, false, de1D7C2 }, { 0x1D7C3, false, de1D7C3 }, { 0x1D7C4, false, de1D7C4 }, +{ 0x1D7C5, false, de1D7C5 }, { 0x1D7C6, false, de1D7C6 }, { 0x1D7C7, false, de1D7C7 }, { 0x1D7C8, false, de1D7C8 }, +{ 0x1D7C9, false, de1D7C9 }, { 0x1D7CE, false, de1D7CE }, { 0x1D7CF, false, de1D7CF }, { 0x1D7D0, false, de1D7D0 }, +{ 0x1D7D1, false, de1D7D1 }, { 0x1D7D2, false, de1D7D2 }, { 0x1D7D3, false, de1D7D3 }, { 0x1D7D4, false, de1D7D4 }, +{ 0x1D7D5, false, de1D7D5 }, { 0x1D7D6, false, de1D7D6 }, { 0x1D7D7, false, de1D7D7 }, { 0x1D7D8, false, de1D7D8 }, +{ 0x1D7D9, false, de1D7D9 }, { 0x1D7DA, false, de1D7DA }, { 0x1D7DB, false, de1D7DB }, { 0x1D7DC, false, de1D7DC }, +{ 0x1D7DD, false, de1D7DD }, { 0x1D7DE, false, de1D7DE }, { 0x1D7DF, false, de1D7DF }, { 0x1D7E0, false, de1D7E0 }, +{ 0x1D7E1, false, de1D7E1 }, { 0x1D7E2, false, de1D7E2 }, { 0x1D7E3, false, de1D7E3 }, { 0x1D7E4, false, de1D7E4 }, +{ 0x1D7E5, false, de1D7E5 }, { 0x1D7E6, false, de1D7E6 }, { 0x1D7E7, false, de1D7E7 }, { 0x1D7E8, false, de1D7E8 }, +{ 0x1D7E9, false, de1D7E9 }, { 0x1D7EA, false, de1D7EA }, { 0x1D7EB, false, de1D7EB }, { 0x1D7EC, false, de1D7EC }, +{ 0x1D7ED, false, de1D7ED }, { 0x1D7EE, false, de1D7EE }, { 0x1D7EF, false, de1D7EF }, { 0x1D7F0, false, de1D7F0 }, +{ 0x1D7F1, false, de1D7F1 }, { 0x1D7F2, false, de1D7F2 }, { 0x1D7F3, false, de1D7F3 }, { 0x1D7F4, false, de1D7F4 }, +{ 0x1D7F5, false, de1D7F5 }, { 0x1D7F6, false, de1D7F6 }, { 0x1D7F7, false, de1D7F7 }, { 0x1D7F8, false, de1D7F8 }, +{ 0x1D7F9, false, de1D7F9 }, { 0x1D7FA, false, de1D7FA }, { 0x1D7FB, false, de1D7FB }, { 0x1D7FC, false, de1D7FC }, +{ 0x1D7FD, false, de1D7FD }, { 0x1D7FE, false, de1D7FE }, { 0x1D7FF, false, de1D7FF }, { 0x2F800, true, de2F800 }, +{ 0x2F801, true, de2F801 }, { 0x2F802, true, de2F802 }, { 0x2F803, true, de2F803 }, { 0x2F804, true, de2F804 }, +{ 0x2F805, true, de2F805 }, { 0x2F806, true, de2F806 }, { 0x2F807, true, de2F807 }, { 0x2F808, true, de2F808 }, +{ 0x2F809, true, de2F809 }, { 0x2F80A, true, de2F80A }, { 0x2F80B, true, de2F80B }, { 0x2F80C, true, de2F80C }, +{ 0x2F80D, true, de2F80D }, { 0x2F80E, true, de2F80E }, { 0x2F80F, true, de2F80F }, { 0x2F810, true, de2F810 }, +{ 0x2F811, true, de2F811 }, { 0x2F812, true, de2F812 }, { 0x2F813, true, de2F813 }, { 0x2F814, true, de2F814 }, +{ 0x2F815, true, de2F815 }, { 0x2F816, true, de2F816 }, { 0x2F817, true, de2F817 }, { 0x2F818, true, de2F818 }, +{ 0x2F819, true, de2F819 }, { 0x2F81A, true, de2F81A }, { 0x2F81B, true, de2F81B }, { 0x2F81C, true, de2F81C }, +{ 0x2F81D, true, de2F81D }, { 0x2F81E, true, de2F81E }, { 0x2F81F, true, de2F81F }, { 0x2F820, true, de2F820 }, +{ 0x2F821, true, de2F821 }, { 0x2F822, true, de2F822 }, { 0x2F823, true, de2F823 }, { 0x2F824, true, de2F824 }, +{ 0x2F825, true, de2F825 }, { 0x2F826, true, de2F826 }, { 0x2F827, true, de2F827 }, { 0x2F828, true, de2F828 }, +{ 0x2F829, true, de2F829 }, { 0x2F82A, true, de2F82A }, { 0x2F82B, true, de2F82B }, { 0x2F82C, true, de2F82C }, +{ 0x2F82D, true, de2F82D }, { 0x2F82E, true, de2F82E }, { 0x2F82F, true, de2F82F }, { 0x2F830, true, de2F830 }, +{ 0x2F831, true, de2F831 }, { 0x2F832, true, de2F832 }, { 0x2F833, true, de2F833 }, { 0x2F834, true, de2F834 }, +{ 0x2F835, true, de2F835 }, { 0x2F836, true, de2F836 }, { 0x2F837, true, de2F837 }, { 0x2F838, true, de2F838 }, +{ 0x2F839, true, de2F839 }, { 0x2F83A, true, de2F83A }, { 0x2F83B, true, de2F83B }, { 0x2F83C, true, de2F83C }, +{ 0x2F83D, true, de2F83D }, { 0x2F83E, true, de2F83E }, { 0x2F83F, true, de2F83F }, { 0x2F840, true, de2F840 }, +{ 0x2F841, true, de2F841 }, { 0x2F842, true, de2F842 }, { 0x2F843, true, de2F843 }, { 0x2F844, true, de2F844 }, +{ 0x2F845, true, de2F845 }, { 0x2F846, true, de2F846 }, { 0x2F847, true, de2F847 }, { 0x2F848, true, de2F848 }, +{ 0x2F849, true, de2F849 }, { 0x2F84A, true, de2F84A }, { 0x2F84B, true, de2F84B }, { 0x2F84C, true, de2F84C }, +{ 0x2F84D, true, de2F84D }, { 0x2F84E, true, de2F84E }, { 0x2F84F, true, de2F84F }, { 0x2F850, true, de2F850 }, +{ 0x2F851, true, de2F851 }, { 0x2F852, true, de2F852 }, { 0x2F853, true, de2F853 }, { 0x2F854, true, de2F854 }, +{ 0x2F855, true, de2F855 }, { 0x2F856, true, de2F856 }, { 0x2F857, true, de2F857 }, { 0x2F858, true, de2F858 }, +{ 0x2F859, true, de2F859 }, { 0x2F85A, true, de2F85A }, { 0x2F85B, true, de2F85B }, { 0x2F85C, true, de2F85C }, +{ 0x2F85D, true, de2F85D }, { 0x2F85E, true, de2F85E }, { 0x2F85F, true, de2F85F }, { 0x2F860, true, de2F860 }, +{ 0x2F861, true, de2F861 }, { 0x2F862, true, de2F862 }, { 0x2F863, true, de2F863 }, { 0x2F864, true, de2F864 }, +{ 0x2F865, true, de2F865 }, { 0x2F866, true, de2F866 }, { 0x2F867, true, de2F867 }, { 0x2F868, true, de2F868 }, +{ 0x2F869, true, de2F869 }, { 0x2F86A, true, de2F86A }, { 0x2F86B, true, de2F86B }, { 0x2F86C, true, de2F86C }, +{ 0x2F86D, true, de2F86D }, { 0x2F86E, true, de2F86E }, { 0x2F86F, true, de2F86F }, { 0x2F870, true, de2F870 }, +{ 0x2F871, true, de2F871 }, { 0x2F872, true, de2F872 }, { 0x2F873, true, de2F873 }, { 0x2F874, true, de2F874 }, +{ 0x2F875, true, de2F875 }, { 0x2F876, true, de2F876 }, { 0x2F877, true, de2F877 }, { 0x2F878, true, de2F878 }, +{ 0x2F879, true, de2F879 }, { 0x2F87A, true, de2F87A }, { 0x2F87B, true, de2F87B }, { 0x2F87C, true, de2F87C }, +{ 0x2F87D, true, de2F87D }, { 0x2F87E, true, de2F87E }, { 0x2F87F, true, de2F87F }, { 0x2F880, true, de2F880 }, +{ 0x2F881, true, de2F881 }, { 0x2F882, true, de2F882 }, { 0x2F883, true, de2F883 }, { 0x2F884, true, de2F884 }, +{ 0x2F885, true, de2F885 }, { 0x2F886, true, de2F886 }, { 0x2F887, true, de2F887 }, { 0x2F888, true, de2F888 }, +{ 0x2F889, true, de2F889 }, { 0x2F88A, true, de2F88A }, { 0x2F88B, true, de2F88B }, { 0x2F88C, true, de2F88C }, +{ 0x2F88D, true, de2F88D }, { 0x2F88E, true, de2F88E }, { 0x2F88F, true, de2F88F }, { 0x2F890, true, de2F890 }, +{ 0x2F891, true, de2F891 }, { 0x2F892, true, de2F892 }, { 0x2F893, true, de2F893 }, { 0x2F894, true, de2F894 }, +{ 0x2F895, true, de2F895 }, { 0x2F896, true, de2F896 }, { 0x2F897, true, de2F897 }, { 0x2F898, true, de2F898 }, +{ 0x2F899, true, de2F899 }, { 0x2F89A, true, de2F89A }, { 0x2F89B, true, de2F89B }, { 0x2F89C, true, de2F89C }, +{ 0x2F89D, true, de2F89D }, { 0x2F89E, true, de2F89E }, { 0x2F89F, true, de2F89F }, { 0x2F8A0, true, de2F8A0 }, +{ 0x2F8A1, true, de2F8A1 }, { 0x2F8A2, true, de2F8A2 }, { 0x2F8A3, true, de2F8A3 }, { 0x2F8A4, true, de2F8A4 }, +{ 0x2F8A5, true, de2F8A5 }, { 0x2F8A6, true, de2F8A6 }, { 0x2F8A7, true, de2F8A7 }, { 0x2F8A8, true, de2F8A8 }, +{ 0x2F8A9, true, de2F8A9 }, { 0x2F8AA, true, de2F8AA }, { 0x2F8AB, true, de2F8AB }, { 0x2F8AC, true, de2F8AC }, +{ 0x2F8AD, true, de2F8AD }, { 0x2F8AE, true, de2F8AE }, { 0x2F8AF, true, de2F8AF }, { 0x2F8B0, true, de2F8B0 }, +{ 0x2F8B1, true, de2F8B1 }, { 0x2F8B2, true, de2F8B2 }, { 0x2F8B3, true, de2F8B3 }, { 0x2F8B4, true, de2F8B4 }, +{ 0x2F8B5, true, de2F8B5 }, { 0x2F8B6, true, de2F8B6 }, { 0x2F8B7, true, de2F8B7 }, { 0x2F8B8, true, de2F8B8 }, +{ 0x2F8B9, true, de2F8B9 }, { 0x2F8BA, true, de2F8BA }, { 0x2F8BB, true, de2F8BB }, { 0x2F8BC, true, de2F8BC }, +{ 0x2F8BD, true, de2F8BD }, { 0x2F8BE, true, de2F8BE }, { 0x2F8BF, true, de2F8BF }, { 0x2F8C0, true, de2F8C0 }, +{ 0x2F8C1, true, de2F8C1 }, { 0x2F8C2, true, de2F8C2 }, { 0x2F8C3, true, de2F8C3 }, { 0x2F8C4, true, de2F8C4 }, +{ 0x2F8C5, true, de2F8C5 }, { 0x2F8C6, true, de2F8C6 }, { 0x2F8C7, true, de2F8C7 }, { 0x2F8C8, true, de2F8C8 }, +{ 0x2F8C9, true, de2F8C9 }, { 0x2F8CA, true, de2F8CA }, { 0x2F8CB, true, de2F8CB }, { 0x2F8CC, true, de2F8CC }, +{ 0x2F8CD, true, de2F8CD }, { 0x2F8CE, true, de2F8CE }, { 0x2F8CF, true, de2F8CF }, { 0x2F8D0, true, de2F8D0 }, +{ 0x2F8D1, true, de2F8D1 }, { 0x2F8D2, true, de2F8D2 }, { 0x2F8D3, true, de2F8D3 }, { 0x2F8D4, true, de2F8D4 }, +{ 0x2F8D5, true, de2F8D5 }, { 0x2F8D6, true, de2F8D6 }, { 0x2F8D7, true, de2F8D7 }, { 0x2F8D8, true, de2F8D8 }, +{ 0x2F8D9, true, de2F8D9 }, { 0x2F8DA, true, de2F8DA }, { 0x2F8DB, true, de2F8DB }, { 0x2F8DC, true, de2F8DC }, +{ 0x2F8DD, true, de2F8DD }, { 0x2F8DE, true, de2F8DE }, { 0x2F8DF, true, de2F8DF }, { 0x2F8E0, true, de2F8E0 }, +{ 0x2F8E1, true, de2F8E1 }, { 0x2F8E2, true, de2F8E2 }, { 0x2F8E3, true, de2F8E3 }, { 0x2F8E4, true, de2F8E4 }, +{ 0x2F8E5, true, de2F8E5 }, { 0x2F8E6, true, de2F8E6 }, { 0x2F8E7, true, de2F8E7 }, { 0x2F8E8, true, de2F8E8 }, +{ 0x2F8E9, true, de2F8E9 }, { 0x2F8EA, true, de2F8EA }, { 0x2F8EB, true, de2F8EB }, { 0x2F8EC, true, de2F8EC }, +{ 0x2F8ED, true, de2F8ED }, { 0x2F8EE, true, de2F8EE }, { 0x2F8EF, true, de2F8EF }, { 0x2F8F0, true, de2F8F0 }, +{ 0x2F8F1, true, de2F8F1 }, { 0x2F8F2, true, de2F8F2 }, { 0x2F8F3, true, de2F8F3 }, { 0x2F8F4, true, de2F8F4 }, +{ 0x2F8F5, true, de2F8F5 }, { 0x2F8F6, true, de2F8F6 }, { 0x2F8F7, true, de2F8F7 }, { 0x2F8F8, true, de2F8F8 }, +{ 0x2F8F9, true, de2F8F9 }, { 0x2F8FA, true, de2F8FA }, { 0x2F8FB, true, de2F8FB }, { 0x2F8FC, true, de2F8FC }, +{ 0x2F8FD, true, de2F8FD }, { 0x2F8FE, true, de2F8FE }, { 0x2F8FF, true, de2F8FF }, { 0x2F900, true, de2F900 }, +{ 0x2F901, true, de2F901 }, { 0x2F902, true, de2F902 }, { 0x2F903, true, de2F903 }, { 0x2F904, true, de2F904 }, +{ 0x2F905, true, de2F905 }, { 0x2F906, true, de2F906 }, { 0x2F907, true, de2F907 }, { 0x2F908, true, de2F908 }, +{ 0x2F909, true, de2F909 }, { 0x2F90A, true, de2F90A }, { 0x2F90B, true, de2F90B }, { 0x2F90C, true, de2F90C }, +{ 0x2F90D, true, de2F90D }, { 0x2F90E, true, de2F90E }, { 0x2F90F, true, de2F90F }, { 0x2F910, true, de2F910 }, +{ 0x2F911, true, de2F911 }, { 0x2F912, true, de2F912 }, { 0x2F913, true, de2F913 }, { 0x2F914, true, de2F914 }, +{ 0x2F915, true, de2F915 }, { 0x2F916, true, de2F916 }, { 0x2F917, true, de2F917 }, { 0x2F918, true, de2F918 }, +{ 0x2F919, true, de2F919 }, { 0x2F91A, true, de2F91A }, { 0x2F91B, true, de2F91B }, { 0x2F91C, true, de2F91C }, +{ 0x2F91D, true, de2F91D }, { 0x2F91E, true, de2F91E }, { 0x2F91F, true, de2F91F }, { 0x2F920, true, de2F920 }, +{ 0x2F921, true, de2F921 }, { 0x2F922, true, de2F922 }, { 0x2F923, true, de2F923 }, { 0x2F924, true, de2F924 }, +{ 0x2F925, true, de2F925 }, { 0x2F926, true, de2F926 }, { 0x2F927, true, de2F927 }, { 0x2F928, true, de2F928 }, +{ 0x2F929, true, de2F929 }, { 0x2F92A, true, de2F92A }, { 0x2F92B, true, de2F92B }, { 0x2F92C, true, de2F92C }, +{ 0x2F92D, true, de2F92D }, { 0x2F92E, true, de2F92E }, { 0x2F92F, true, de2F92F }, { 0x2F930, true, de2F930 }, +{ 0x2F931, true, de2F931 }, { 0x2F932, true, de2F932 }, { 0x2F933, true, de2F933 }, { 0x2F934, true, de2F934 }, +{ 0x2F935, true, de2F935 }, { 0x2F936, true, de2F936 }, { 0x2F937, true, de2F937 }, { 0x2F938, true, de2F938 }, +{ 0x2F939, true, de2F939 }, { 0x2F93A, true, de2F93A }, { 0x2F93B, true, de2F93B }, { 0x2F93C, true, de2F93C }, +{ 0x2F93D, true, de2F93D }, { 0x2F93E, true, de2F93E }, { 0x2F93F, true, de2F93F }, { 0x2F940, true, de2F940 }, +{ 0x2F941, true, de2F941 }, { 0x2F942, true, de2F942 }, { 0x2F943, true, de2F943 }, { 0x2F944, true, de2F944 }, +{ 0x2F945, true, de2F945 }, { 0x2F946, true, de2F946 }, { 0x2F947, true, de2F947 }, { 0x2F948, true, de2F948 }, +{ 0x2F949, true, de2F949 }, { 0x2F94A, true, de2F94A }, { 0x2F94B, true, de2F94B }, { 0x2F94C, true, de2F94C }, +{ 0x2F94D, true, de2F94D }, { 0x2F94E, true, de2F94E }, { 0x2F94F, true, de2F94F }, { 0x2F950, true, de2F950 }, +{ 0x2F951, true, de2F951 }, { 0x2F952, true, de2F952 }, { 0x2F953, true, de2F953 }, { 0x2F954, true, de2F954 }, +{ 0x2F955, true, de2F955 }, { 0x2F956, true, de2F956 }, { 0x2F957, true, de2F957 }, { 0x2F958, true, de2F958 }, +{ 0x2F959, true, de2F959 }, { 0x2F95A, true, de2F95A }, { 0x2F95B, true, de2F95B }, { 0x2F95C, true, de2F95C }, +{ 0x2F95D, true, de2F95D }, { 0x2F95E, true, de2F95E }, { 0x2F95F, true, de2F95F }, { 0x2F960, true, de2F960 }, +{ 0x2F961, true, de2F961 }, { 0x2F962, true, de2F962 }, { 0x2F963, true, de2F963 }, { 0x2F964, true, de2F964 }, +{ 0x2F965, true, de2F965 }, { 0x2F966, true, de2F966 }, { 0x2F967, true, de2F967 }, { 0x2F968, true, de2F968 }, +{ 0x2F969, true, de2F969 }, { 0x2F96A, true, de2F96A }, { 0x2F96B, true, de2F96B }, { 0x2F96C, true, de2F96C }, +{ 0x2F96D, true, de2F96D }, { 0x2F96E, true, de2F96E }, { 0x2F96F, true, de2F96F }, { 0x2F970, true, de2F970 }, +{ 0x2F971, true, de2F971 }, { 0x2F972, true, de2F972 }, { 0x2F973, true, de2F973 }, { 0x2F974, true, de2F974 }, +{ 0x2F975, true, de2F975 }, { 0x2F976, true, de2F976 }, { 0x2F977, true, de2F977 }, { 0x2F978, true, de2F978 }, +{ 0x2F979, true, de2F979 }, { 0x2F97A, true, de2F97A }, { 0x2F97B, true, de2F97B }, { 0x2F97C, true, de2F97C }, +{ 0x2F97D, true, de2F97D }, { 0x2F97E, true, de2F97E }, { 0x2F97F, true, de2F97F }, { 0x2F980, true, de2F980 }, +{ 0x2F981, true, de2F981 }, { 0x2F982, true, de2F982 }, { 0x2F983, true, de2F983 }, { 0x2F984, true, de2F984 }, +{ 0x2F985, true, de2F985 }, { 0x2F986, true, de2F986 }, { 0x2F987, true, de2F987 }, { 0x2F988, true, de2F988 }, +{ 0x2F989, true, de2F989 }, { 0x2F98A, true, de2F98A }, { 0x2F98B, true, de2F98B }, { 0x2F98C, true, de2F98C }, +{ 0x2F98D, true, de2F98D }, { 0x2F98E, true, de2F98E }, { 0x2F98F, true, de2F98F }, { 0x2F990, true, de2F990 }, +{ 0x2F991, true, de2F991 }, { 0x2F992, true, de2F992 }, { 0x2F993, true, de2F993 }, { 0x2F994, true, de2F994 }, +{ 0x2F995, true, de2F995 }, { 0x2F996, true, de2F996 }, { 0x2F997, true, de2F997 }, { 0x2F998, true, de2F998 }, +{ 0x2F999, true, de2F999 }, { 0x2F99A, true, de2F99A }, { 0x2F99B, true, de2F99B }, { 0x2F99C, true, de2F99C }, +{ 0x2F99D, true, de2F99D }, { 0x2F99E, true, de2F99E }, { 0x2F99F, true, de2F99F }, { 0x2F9A0, true, de2F9A0 }, +{ 0x2F9A1, true, de2F9A1 }, { 0x2F9A2, true, de2F9A2 }, { 0x2F9A3, true, de2F9A3 }, { 0x2F9A4, true, de2F9A4 }, +{ 0x2F9A5, true, de2F9A5 }, { 0x2F9A6, true, de2F9A6 }, { 0x2F9A7, true, de2F9A7 }, { 0x2F9A8, true, de2F9A8 }, +{ 0x2F9A9, true, de2F9A9 }, { 0x2F9AA, true, de2F9AA }, { 0x2F9AB, true, de2F9AB }, { 0x2F9AC, true, de2F9AC }, +{ 0x2F9AD, true, de2F9AD }, { 0x2F9AE, true, de2F9AE }, { 0x2F9AF, true, de2F9AF }, { 0x2F9B0, true, de2F9B0 }, +{ 0x2F9B1, true, de2F9B1 }, { 0x2F9B2, true, de2F9B2 }, { 0x2F9B3, true, de2F9B3 }, { 0x2F9B4, true, de2F9B4 }, +{ 0x2F9B5, true, de2F9B5 }, { 0x2F9B6, true, de2F9B6 }, { 0x2F9B7, true, de2F9B7 }, { 0x2F9B8, true, de2F9B8 }, +{ 0x2F9B9, true, de2F9B9 }, { 0x2F9BA, true, de2F9BA }, { 0x2F9BB, true, de2F9BB }, { 0x2F9BC, true, de2F9BC }, +{ 0x2F9BD, true, de2F9BD }, { 0x2F9BE, true, de2F9BE }, { 0x2F9BF, true, de2F9BF }, { 0x2F9C0, true, de2F9C0 }, +{ 0x2F9C1, true, de2F9C1 }, { 0x2F9C2, true, de2F9C2 }, { 0x2F9C3, true, de2F9C3 }, { 0x2F9C4, true, de2F9C4 }, +{ 0x2F9C5, true, de2F9C5 }, { 0x2F9C6, true, de2F9C6 }, { 0x2F9C7, true, de2F9C7 }, { 0x2F9C8, true, de2F9C8 }, +{ 0x2F9C9, true, de2F9C9 }, { 0x2F9CA, true, de2F9CA }, { 0x2F9CB, true, de2F9CB }, { 0x2F9CC, true, de2F9CC }, +{ 0x2F9CD, true, de2F9CD }, { 0x2F9CE, true, de2F9CE }, { 0x2F9CF, true, de2F9CF }, { 0x2F9D0, true, de2F9D0 }, +{ 0x2F9D1, true, de2F9D1 }, { 0x2F9D2, true, de2F9D2 }, { 0x2F9D3, true, de2F9D3 }, { 0x2F9D4, true, de2F9D4 }, +{ 0x2F9D5, true, de2F9D5 }, { 0x2F9D6, true, de2F9D6 }, { 0x2F9D7, true, de2F9D7 }, { 0x2F9D8, true, de2F9D8 }, +{ 0x2F9D9, true, de2F9D9 }, { 0x2F9DA, true, de2F9DA }, { 0x2F9DB, true, de2F9DB }, { 0x2F9DC, true, de2F9DC }, +{ 0x2F9DD, true, de2F9DD }, { 0x2F9DE, true, de2F9DE }, { 0x2F9DF, true, de2F9DF }, { 0x2F9E0, true, de2F9E0 }, +{ 0x2F9E1, true, de2F9E1 }, { 0x2F9E2, true, de2F9E2 }, { 0x2F9E3, true, de2F9E3 }, { 0x2F9E4, true, de2F9E4 }, +{ 0x2F9E5, true, de2F9E5 }, { 0x2F9E6, true, de2F9E6 }, { 0x2F9E7, true, de2F9E7 }, { 0x2F9E8, true, de2F9E8 }, +{ 0x2F9E9, true, de2F9E9 }, { 0x2F9EA, true, de2F9EA }, { 0x2F9EB, true, de2F9EB }, { 0x2F9EC, true, de2F9EC }, +{ 0x2F9ED, true, de2F9ED }, { 0x2F9EE, true, de2F9EE }, { 0x2F9EF, true, de2F9EF }, { 0x2F9F0, true, de2F9F0 }, +{ 0x2F9F1, true, de2F9F1 }, { 0x2F9F2, true, de2F9F2 }, { 0x2F9F3, true, de2F9F3 }, { 0x2F9F4, true, de2F9F4 }, +{ 0x2F9F5, true, de2F9F5 }, { 0x2F9F6, true, de2F9F6 }, { 0x2F9F7, true, de2F9F7 }, { 0x2F9F8, true, de2F9F8 }, +{ 0x2F9F9, true, de2F9F9 }, { 0x2F9FA, true, de2F9FA }, { 0x2F9FB, true, de2F9FB }, { 0x2F9FC, true, de2F9FC }, +{ 0x2F9FD, true, de2F9FD }, { 0x2F9FE, true, de2F9FE }, { 0x2F9FF, true, de2F9FF }, { 0x2FA00, true, de2FA00 }, +{ 0x2FA01, true, de2FA01 }, { 0x2FA02, true, de2FA02 }, { 0x2FA03, true, de2FA03 }, { 0x2FA04, true, de2FA04 }, +{ 0x2FA05, true, de2FA05 }, { 0x2FA06, true, de2FA06 }, { 0x2FA07, true, de2FA07 }, { 0x2FA08, true, de2FA08 }, +{ 0x2FA09, true, de2FA09 }, { 0x2FA0A, true, de2FA0A }, { 0x2FA0B, true, de2FA0B }, { 0x2FA0C, true, de2FA0C }, +{ 0x2FA0D, true, de2FA0D }, { 0x2FA0E, true, de2FA0E }, { 0x2FA0F, true, de2FA0F }, { 0x2FA10, true, de2FA10 }, +{ 0x2FA11, true, de2FA11 }, { 0x2FA12, true, de2FA12 }, { 0x2FA13, true, de2FA13 }, { 0x2FA14, true, de2FA14 }, +{ 0x2FA15, true, de2FA15 }, { 0x2FA16, true, de2FA16 }, { 0x2FA17, true, de2FA17 }, { 0x2FA18, true, de2FA18 }, +{ 0x2FA19, true, de2FA19 }, { 0x2FA1A, true, de2FA1A }, { 0x2FA1B, true, de2FA1B }, { 0x2FA1C, true, de2FA1C }, +{ 0x2FA1D, true, de2FA1D } +}; + +unsigned int *NormalizeTransform::getDecomposition(unsigned int ch) +{ + if(ch < decomposeDirectTableSize) { + // Use the direct lookup table + if(!canonical_ || decomposeDirectTable[ch].canonical) { + return decomposeDirectTable[ch].dest; + } + return 0; + } + + // Binary search in the decomposeTable table + unsigned int min = 0; + unsigned int max = decomposeTableSize; + unsigned int middle; + int cmp; + + while(min < max) { + middle = (max + min) >> 1; + + cmp = decomposeTable[middle].ch - ch; + if(cmp > 0) max = middle; + else if(cmp < 0) { + min = middle + 1; + } + else { + if(!canonical_ || decomposeTable[middle].canonical) { + return decomposeTable[middle].dest; + } + return 0; + } + } + + return 0; +} diff --git a/src/utils/UCANormalizer2.cpp b/src/utils/UCANormalizer2.cpp new file mode 100644 index 00000000..6f987e32 --- /dev/null +++ b/src/utils/UCANormalizer2.cpp @@ -0,0 +1,323 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: UCANormalizer2.cpp,v 1.2 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +#define NO_COMPOSITION 0xFFFFFFFF + +struct ComposeValue +{ + unsigned int ch1; + unsigned int ch2; + unsigned int dest; +}; +static unsigned int composeTableSize = 917; +static ComposeValue composeTable[] = { +{ 0x0003C, 0x00338, 0x0226E }, { 0x0003D, 0x00338, 0x02260 }, { 0x0003E, 0x00338, 0x0226F }, { 0x00041, 0x00300, 0x000C0 }, { 0x00041, 0x00301, 0x000C1 }, +{ 0x00041, 0x00302, 0x000C2 }, { 0x00041, 0x00303, 0x000C3 }, { 0x00041, 0x00304, 0x00100 }, { 0x00041, 0x00306, 0x00102 }, { 0x00041, 0x00307, 0x00226 }, +{ 0x00041, 0x00308, 0x000C4 }, { 0x00041, 0x00309, 0x01EA2 }, { 0x00041, 0x0030A, 0x000C5 }, { 0x00041, 0x0030C, 0x001CD }, { 0x00041, 0x0030F, 0x00200 }, +{ 0x00041, 0x00311, 0x00202 }, { 0x00041, 0x00323, 0x01EA0 }, { 0x00041, 0x00325, 0x01E00 }, { 0x00041, 0x00328, 0x00104 }, { 0x00042, 0x00307, 0x01E02 }, +{ 0x00042, 0x00323, 0x01E04 }, { 0x00042, 0x00331, 0x01E06 }, { 0x00043, 0x00301, 0x00106 }, { 0x00043, 0x00302, 0x00108 }, { 0x00043, 0x00307, 0x0010A }, +{ 0x00043, 0x0030C, 0x0010C }, { 0x00043, 0x00327, 0x000C7 }, { 0x00044, 0x00307, 0x01E0A }, { 0x00044, 0x0030C, 0x0010E }, { 0x00044, 0x00323, 0x01E0C }, +{ 0x00044, 0x00327, 0x01E10 }, { 0x00044, 0x0032D, 0x01E12 }, { 0x00044, 0x00331, 0x01E0E }, { 0x00045, 0x00300, 0x000C8 }, { 0x00045, 0x00301, 0x000C9 }, +{ 0x00045, 0x00302, 0x000CA }, { 0x00045, 0x00303, 0x01EBC }, { 0x00045, 0x00304, 0x00112 }, { 0x00045, 0x00306, 0x00114 }, { 0x00045, 0x00307, 0x00116 }, +{ 0x00045, 0x00308, 0x000CB }, { 0x00045, 0x00309, 0x01EBA }, { 0x00045, 0x0030C, 0x0011A }, { 0x00045, 0x0030F, 0x00204 }, { 0x00045, 0x00311, 0x00206 }, +{ 0x00045, 0x00323, 0x01EB8 }, { 0x00045, 0x00327, 0x00228 }, { 0x00045, 0x00328, 0x00118 }, { 0x00045, 0x0032D, 0x01E18 }, { 0x00045, 0x00330, 0x01E1A }, +{ 0x00046, 0x00307, 0x01E1E }, { 0x00047, 0x00301, 0x001F4 }, { 0x00047, 0x00302, 0x0011C }, { 0x00047, 0x00304, 0x01E20 }, { 0x00047, 0x00306, 0x0011E }, +{ 0x00047, 0x00307, 0x00120 }, { 0x00047, 0x0030C, 0x001E6 }, { 0x00047, 0x00327, 0x00122 }, { 0x00048, 0x00302, 0x00124 }, { 0x00048, 0x00307, 0x01E22 }, +{ 0x00048, 0x00308, 0x01E26 }, { 0x00048, 0x0030C, 0x0021E }, { 0x00048, 0x00323, 0x01E24 }, { 0x00048, 0x00327, 0x01E28 }, { 0x00048, 0x0032E, 0x01E2A }, +{ 0x00049, 0x00300, 0x000CC }, { 0x00049, 0x00301, 0x000CD }, { 0x00049, 0x00302, 0x000CE }, { 0x00049, 0x00303, 0x00128 }, { 0x00049, 0x00304, 0x0012A }, +{ 0x00049, 0x00306, 0x0012C }, { 0x00049, 0x00307, 0x00130 }, { 0x00049, 0x00308, 0x000CF }, { 0x00049, 0x00309, 0x01EC8 }, { 0x00049, 0x0030C, 0x001CF }, +{ 0x00049, 0x0030F, 0x00208 }, { 0x00049, 0x00311, 0x0020A }, { 0x00049, 0x00323, 0x01ECA }, { 0x00049, 0x00328, 0x0012E }, { 0x00049, 0x00330, 0x01E2C }, +{ 0x0004A, 0x00302, 0x00134 }, { 0x0004B, 0x00301, 0x01E30 }, { 0x0004B, 0x0030C, 0x001E8 }, { 0x0004B, 0x00323, 0x01E32 }, { 0x0004B, 0x00327, 0x00136 }, +{ 0x0004B, 0x00331, 0x01E34 }, { 0x0004C, 0x00301, 0x00139 }, { 0x0004C, 0x0030C, 0x0013D }, { 0x0004C, 0x00323, 0x01E36 }, { 0x0004C, 0x00327, 0x0013B }, +{ 0x0004C, 0x0032D, 0x01E3C }, { 0x0004C, 0x00331, 0x01E3A }, { 0x0004D, 0x00301, 0x01E3E }, { 0x0004D, 0x00307, 0x01E40 }, { 0x0004D, 0x00323, 0x01E42 }, +{ 0x0004E, 0x00300, 0x001F8 }, { 0x0004E, 0x00301, 0x00143 }, { 0x0004E, 0x00303, 0x000D1 }, { 0x0004E, 0x00307, 0x01E44 }, { 0x0004E, 0x0030C, 0x00147 }, +{ 0x0004E, 0x00323, 0x01E46 }, { 0x0004E, 0x00327, 0x00145 }, { 0x0004E, 0x0032D, 0x01E4A }, { 0x0004E, 0x00331, 0x01E48 }, { 0x0004F, 0x00300, 0x000D2 }, +{ 0x0004F, 0x00301, 0x000D3 }, { 0x0004F, 0x00302, 0x000D4 }, { 0x0004F, 0x00303, 0x000D5 }, { 0x0004F, 0x00304, 0x0014C }, { 0x0004F, 0x00306, 0x0014E }, +{ 0x0004F, 0x00307, 0x0022E }, { 0x0004F, 0x00308, 0x000D6 }, { 0x0004F, 0x00309, 0x01ECE }, { 0x0004F, 0x0030B, 0x00150 }, { 0x0004F, 0x0030C, 0x001D1 }, +{ 0x0004F, 0x0030F, 0x0020C }, { 0x0004F, 0x00311, 0x0020E }, { 0x0004F, 0x0031B, 0x001A0 }, { 0x0004F, 0x00323, 0x01ECC }, { 0x0004F, 0x00328, 0x001EA }, +{ 0x00050, 0x00301, 0x01E54 }, { 0x00050, 0x00307, 0x01E56 }, { 0x00052, 0x00301, 0x00154 }, { 0x00052, 0x00307, 0x01E58 }, { 0x00052, 0x0030C, 0x00158 }, +{ 0x00052, 0x0030F, 0x00210 }, { 0x00052, 0x00311, 0x00212 }, { 0x00052, 0x00323, 0x01E5A }, { 0x00052, 0x00327, 0x00156 }, { 0x00052, 0x00331, 0x01E5E }, +{ 0x00053, 0x00301, 0x0015A }, { 0x00053, 0x00302, 0x0015C }, { 0x00053, 0x00307, 0x01E60 }, { 0x00053, 0x0030C, 0x00160 }, { 0x00053, 0x00323, 0x01E62 }, +{ 0x00053, 0x00326, 0x00218 }, { 0x00053, 0x00327, 0x0015E }, { 0x00054, 0x00307, 0x01E6A }, { 0x00054, 0x0030C, 0x00164 }, { 0x00054, 0x00323, 0x01E6C }, +{ 0x00054, 0x00326, 0x0021A }, { 0x00054, 0x00327, 0x00162 }, { 0x00054, 0x0032D, 0x01E70 }, { 0x00054, 0x00331, 0x01E6E }, { 0x00055, 0x00300, 0x000D9 }, +{ 0x00055, 0x00301, 0x000DA }, { 0x00055, 0x00302, 0x000DB }, { 0x00055, 0x00303, 0x00168 }, { 0x00055, 0x00304, 0x0016A }, { 0x00055, 0x00306, 0x0016C }, +{ 0x00055, 0x00308, 0x000DC }, { 0x00055, 0x00309, 0x01EE6 }, { 0x00055, 0x0030A, 0x0016E }, { 0x00055, 0x0030B, 0x00170 }, { 0x00055, 0x0030C, 0x001D3 }, +{ 0x00055, 0x0030F, 0x00214 }, { 0x00055, 0x00311, 0x00216 }, { 0x00055, 0x0031B, 0x001AF }, { 0x00055, 0x00323, 0x01EE4 }, { 0x00055, 0x00324, 0x01E72 }, +{ 0x00055, 0x00328, 0x00172 }, { 0x00055, 0x0032D, 0x01E76 }, { 0x00055, 0x00330, 0x01E74 }, { 0x00056, 0x00303, 0x01E7C }, { 0x00056, 0x00323, 0x01E7E }, +{ 0x00057, 0x00300, 0x01E80 }, { 0x00057, 0x00301, 0x01E82 }, { 0x00057, 0x00302, 0x00174 }, { 0x00057, 0x00307, 0x01E86 }, { 0x00057, 0x00308, 0x01E84 }, +{ 0x00057, 0x00323, 0x01E88 }, { 0x00058, 0x00307, 0x01E8A }, { 0x00058, 0x00308, 0x01E8C }, { 0x00059, 0x00300, 0x01EF2 }, { 0x00059, 0x00301, 0x000DD }, +{ 0x00059, 0x00302, 0x00176 }, { 0x00059, 0x00303, 0x01EF8 }, { 0x00059, 0x00304, 0x00232 }, { 0x00059, 0x00307, 0x01E8E }, { 0x00059, 0x00308, 0x00178 }, +{ 0x00059, 0x00309, 0x01EF6 }, { 0x00059, 0x00323, 0x01EF4 }, { 0x0005A, 0x00301, 0x00179 }, { 0x0005A, 0x00302, 0x01E90 }, { 0x0005A, 0x00307, 0x0017B }, +{ 0x0005A, 0x0030C, 0x0017D }, { 0x0005A, 0x00323, 0x01E92 }, { 0x0005A, 0x00331, 0x01E94 }, { 0x00061, 0x00300, 0x000E0 }, { 0x00061, 0x00301, 0x000E1 }, +{ 0x00061, 0x00302, 0x000E2 }, { 0x00061, 0x00303, 0x000E3 }, { 0x00061, 0x00304, 0x00101 }, { 0x00061, 0x00306, 0x00103 }, { 0x00061, 0x00307, 0x00227 }, +{ 0x00061, 0x00308, 0x000E4 }, { 0x00061, 0x00309, 0x01EA3 }, { 0x00061, 0x0030A, 0x000E5 }, { 0x00061, 0x0030C, 0x001CE }, { 0x00061, 0x0030F, 0x00201 }, +{ 0x00061, 0x00311, 0x00203 }, { 0x00061, 0x00323, 0x01EA1 }, { 0x00061, 0x00325, 0x01E01 }, { 0x00061, 0x00328, 0x00105 }, { 0x00062, 0x00307, 0x01E03 }, +{ 0x00062, 0x00323, 0x01E05 }, { 0x00062, 0x00331, 0x01E07 }, { 0x00063, 0x00301, 0x00107 }, { 0x00063, 0x00302, 0x00109 }, { 0x00063, 0x00307, 0x0010B }, +{ 0x00063, 0x0030C, 0x0010D }, { 0x00063, 0x00327, 0x000E7 }, { 0x00064, 0x00307, 0x01E0B }, { 0x00064, 0x0030C, 0x0010F }, { 0x00064, 0x00323, 0x01E0D }, +{ 0x00064, 0x00327, 0x01E11 }, { 0x00064, 0x0032D, 0x01E13 }, { 0x00064, 0x00331, 0x01E0F }, { 0x00065, 0x00300, 0x000E8 }, { 0x00065, 0x00301, 0x000E9 }, +{ 0x00065, 0x00302, 0x000EA }, { 0x00065, 0x00303, 0x01EBD }, { 0x00065, 0x00304, 0x00113 }, { 0x00065, 0x00306, 0x00115 }, { 0x00065, 0x00307, 0x00117 }, +{ 0x00065, 0x00308, 0x000EB }, { 0x00065, 0x00309, 0x01EBB }, { 0x00065, 0x0030C, 0x0011B }, { 0x00065, 0x0030F, 0x00205 }, { 0x00065, 0x00311, 0x00207 }, +{ 0x00065, 0x00323, 0x01EB9 }, { 0x00065, 0x00327, 0x00229 }, { 0x00065, 0x00328, 0x00119 }, { 0x00065, 0x0032D, 0x01E19 }, { 0x00065, 0x00330, 0x01E1B }, +{ 0x00066, 0x00307, 0x01E1F }, { 0x00067, 0x00301, 0x001F5 }, { 0x00067, 0x00302, 0x0011D }, { 0x00067, 0x00304, 0x01E21 }, { 0x00067, 0x00306, 0x0011F }, +{ 0x00067, 0x00307, 0x00121 }, { 0x00067, 0x0030C, 0x001E7 }, { 0x00067, 0x00327, 0x00123 }, { 0x00068, 0x00302, 0x00125 }, { 0x00068, 0x00307, 0x01E23 }, +{ 0x00068, 0x00308, 0x01E27 }, { 0x00068, 0x0030C, 0x0021F }, { 0x00068, 0x00323, 0x01E25 }, { 0x00068, 0x00327, 0x01E29 }, { 0x00068, 0x0032E, 0x01E2B }, +{ 0x00068, 0x00331, 0x01E96 }, { 0x00069, 0x00300, 0x000EC }, { 0x00069, 0x00301, 0x000ED }, { 0x00069, 0x00302, 0x000EE }, { 0x00069, 0x00303, 0x00129 }, +{ 0x00069, 0x00304, 0x0012B }, { 0x00069, 0x00306, 0x0012D }, { 0x00069, 0x00308, 0x000EF }, { 0x00069, 0x00309, 0x01EC9 }, { 0x00069, 0x0030C, 0x001D0 }, +{ 0x00069, 0x0030F, 0x00209 }, { 0x00069, 0x00311, 0x0020B }, { 0x00069, 0x00323, 0x01ECB }, { 0x00069, 0x00328, 0x0012F }, { 0x00069, 0x00330, 0x01E2D }, +{ 0x0006A, 0x00302, 0x00135 }, { 0x0006A, 0x0030C, 0x001F0 }, { 0x0006B, 0x00301, 0x01E31 }, { 0x0006B, 0x0030C, 0x001E9 }, { 0x0006B, 0x00323, 0x01E33 }, +{ 0x0006B, 0x00327, 0x00137 }, { 0x0006B, 0x00331, 0x01E35 }, { 0x0006C, 0x00301, 0x0013A }, { 0x0006C, 0x0030C, 0x0013E }, { 0x0006C, 0x00323, 0x01E37 }, +{ 0x0006C, 0x00327, 0x0013C }, { 0x0006C, 0x0032D, 0x01E3D }, { 0x0006C, 0x00331, 0x01E3B }, { 0x0006D, 0x00301, 0x01E3F }, { 0x0006D, 0x00307, 0x01E41 }, +{ 0x0006D, 0x00323, 0x01E43 }, { 0x0006E, 0x00300, 0x001F9 }, { 0x0006E, 0x00301, 0x00144 }, { 0x0006E, 0x00303, 0x000F1 }, { 0x0006E, 0x00307, 0x01E45 }, +{ 0x0006E, 0x0030C, 0x00148 }, { 0x0006E, 0x00323, 0x01E47 }, { 0x0006E, 0x00327, 0x00146 }, { 0x0006E, 0x0032D, 0x01E4B }, { 0x0006E, 0x00331, 0x01E49 }, +{ 0x0006F, 0x00300, 0x000F2 }, { 0x0006F, 0x00301, 0x000F3 }, { 0x0006F, 0x00302, 0x000F4 }, { 0x0006F, 0x00303, 0x000F5 }, { 0x0006F, 0x00304, 0x0014D }, +{ 0x0006F, 0x00306, 0x0014F }, { 0x0006F, 0x00307, 0x0022F }, { 0x0006F, 0x00308, 0x000F6 }, { 0x0006F, 0x00309, 0x01ECF }, { 0x0006F, 0x0030B, 0x00151 }, +{ 0x0006F, 0x0030C, 0x001D2 }, { 0x0006F, 0x0030F, 0x0020D }, { 0x0006F, 0x00311, 0x0020F }, { 0x0006F, 0x0031B, 0x001A1 }, { 0x0006F, 0x00323, 0x01ECD }, +{ 0x0006F, 0x00328, 0x001EB }, { 0x00070, 0x00301, 0x01E55 }, { 0x00070, 0x00307, 0x01E57 }, { 0x00072, 0x00301, 0x00155 }, { 0x00072, 0x00307, 0x01E59 }, +{ 0x00072, 0x0030C, 0x00159 }, { 0x00072, 0x0030F, 0x00211 }, { 0x00072, 0x00311, 0x00213 }, { 0x00072, 0x00323, 0x01E5B }, { 0x00072, 0x00327, 0x00157 }, +{ 0x00072, 0x00331, 0x01E5F }, { 0x00073, 0x00301, 0x0015B }, { 0x00073, 0x00302, 0x0015D }, { 0x00073, 0x00307, 0x01E61 }, { 0x00073, 0x0030C, 0x00161 }, +{ 0x00073, 0x00323, 0x01E63 }, { 0x00073, 0x00326, 0x00219 }, { 0x00073, 0x00327, 0x0015F }, { 0x00074, 0x00307, 0x01E6B }, { 0x00074, 0x00308, 0x01E97 }, +{ 0x00074, 0x0030C, 0x00165 }, { 0x00074, 0x00323, 0x01E6D }, { 0x00074, 0x00326, 0x0021B }, { 0x00074, 0x00327, 0x00163 }, { 0x00074, 0x0032D, 0x01E71 }, +{ 0x00074, 0x00331, 0x01E6F }, { 0x00075, 0x00300, 0x000F9 }, { 0x00075, 0x00301, 0x000FA }, { 0x00075, 0x00302, 0x000FB }, { 0x00075, 0x00303, 0x00169 }, +{ 0x00075, 0x00304, 0x0016B }, { 0x00075, 0x00306, 0x0016D }, { 0x00075, 0x00308, 0x000FC }, { 0x00075, 0x00309, 0x01EE7 }, { 0x00075, 0x0030A, 0x0016F }, +{ 0x00075, 0x0030B, 0x00171 }, { 0x00075, 0x0030C, 0x001D4 }, { 0x00075, 0x0030F, 0x00215 }, { 0x00075, 0x00311, 0x00217 }, { 0x00075, 0x0031B, 0x001B0 }, +{ 0x00075, 0x00323, 0x01EE5 }, { 0x00075, 0x00324, 0x01E73 }, { 0x00075, 0x00328, 0x00173 }, { 0x00075, 0x0032D, 0x01E77 }, { 0x00075, 0x00330, 0x01E75 }, +{ 0x00076, 0x00303, 0x01E7D }, { 0x00076, 0x00323, 0x01E7F }, { 0x00077, 0x00300, 0x01E81 }, { 0x00077, 0x00301, 0x01E83 }, { 0x00077, 0x00302, 0x00175 }, +{ 0x00077, 0x00307, 0x01E87 }, { 0x00077, 0x00308, 0x01E85 }, { 0x00077, 0x0030A, 0x01E98 }, { 0x00077, 0x00323, 0x01E89 }, { 0x00078, 0x00307, 0x01E8B }, +{ 0x00078, 0x00308, 0x01E8D }, { 0x00079, 0x00300, 0x01EF3 }, { 0x00079, 0x00301, 0x000FD }, { 0x00079, 0x00302, 0x00177 }, { 0x00079, 0x00303, 0x01EF9 }, +{ 0x00079, 0x00304, 0x00233 }, { 0x00079, 0x00307, 0x01E8F }, { 0x00079, 0x00308, 0x000FF }, { 0x00079, 0x00309, 0x01EF7 }, { 0x00079, 0x0030A, 0x01E99 }, +{ 0x00079, 0x00323, 0x01EF5 }, { 0x0007A, 0x00301, 0x0017A }, { 0x0007A, 0x00302, 0x01E91 }, { 0x0007A, 0x00307, 0x0017C }, { 0x0007A, 0x0030C, 0x0017E }, +{ 0x0007A, 0x00323, 0x01E93 }, { 0x0007A, 0x00331, 0x01E95 }, { 0x000A8, 0x00300, 0x01FED }, { 0x000A8, 0x00301, 0x00385 }, { 0x000A8, 0x00342, 0x01FC1 }, +{ 0x000C2, 0x00300, 0x01EA6 }, { 0x000C2, 0x00301, 0x01EA4 }, { 0x000C2, 0x00303, 0x01EAA }, { 0x000C2, 0x00309, 0x01EA8 }, { 0x000C4, 0x00304, 0x001DE }, +{ 0x000C5, 0x00301, 0x001FA }, { 0x000C6, 0x00301, 0x001FC }, { 0x000C6, 0x00304, 0x001E2 }, { 0x000C7, 0x00301, 0x01E08 }, { 0x000CA, 0x00300, 0x01EC0 }, +{ 0x000CA, 0x00301, 0x01EBE }, { 0x000CA, 0x00303, 0x01EC4 }, { 0x000CA, 0x00309, 0x01EC2 }, { 0x000CF, 0x00301, 0x01E2E }, { 0x000D4, 0x00300, 0x01ED2 }, +{ 0x000D4, 0x00301, 0x01ED0 }, { 0x000D4, 0x00303, 0x01ED6 }, { 0x000D4, 0x00309, 0x01ED4 }, { 0x000D5, 0x00301, 0x01E4C }, { 0x000D5, 0x00304, 0x0022C }, +{ 0x000D5, 0x00308, 0x01E4E }, { 0x000D6, 0x00304, 0x0022A }, { 0x000D8, 0x00301, 0x001FE }, { 0x000DC, 0x00300, 0x001DB }, { 0x000DC, 0x00301, 0x001D7 }, +{ 0x000DC, 0x00304, 0x001D5 }, { 0x000DC, 0x0030C, 0x001D9 }, { 0x000E2, 0x00300, 0x01EA7 }, { 0x000E2, 0x00301, 0x01EA5 }, { 0x000E2, 0x00303, 0x01EAB }, +{ 0x000E2, 0x00309, 0x01EA9 }, { 0x000E4, 0x00304, 0x001DF }, { 0x000E5, 0x00301, 0x001FB }, { 0x000E6, 0x00301, 0x001FD }, { 0x000E6, 0x00304, 0x001E3 }, +{ 0x000E7, 0x00301, 0x01E09 }, { 0x000EA, 0x00300, 0x01EC1 }, { 0x000EA, 0x00301, 0x01EBF }, { 0x000EA, 0x00303, 0x01EC5 }, { 0x000EA, 0x00309, 0x01EC3 }, +{ 0x000EF, 0x00301, 0x01E2F }, { 0x000F4, 0x00300, 0x01ED3 }, { 0x000F4, 0x00301, 0x01ED1 }, { 0x000F4, 0x00303, 0x01ED7 }, { 0x000F4, 0x00309, 0x01ED5 }, +{ 0x000F5, 0x00301, 0x01E4D }, { 0x000F5, 0x00304, 0x0022D }, { 0x000F5, 0x00308, 0x01E4F }, { 0x000F6, 0x00304, 0x0022B }, { 0x000F8, 0x00301, 0x001FF }, +{ 0x000FC, 0x00300, 0x001DC }, { 0x000FC, 0x00301, 0x001D8 }, { 0x000FC, 0x00304, 0x001D6 }, { 0x000FC, 0x0030C, 0x001DA }, { 0x00102, 0x00300, 0x01EB0 }, +{ 0x00102, 0x00301, 0x01EAE }, { 0x00102, 0x00303, 0x01EB4 }, { 0x00102, 0x00309, 0x01EB2 }, { 0x00103, 0x00300, 0x01EB1 }, { 0x00103, 0x00301, 0x01EAF }, +{ 0x00103, 0x00303, 0x01EB5 }, { 0x00103, 0x00309, 0x01EB3 }, { 0x00112, 0x00300, 0x01E14 }, { 0x00112, 0x00301, 0x01E16 }, { 0x00113, 0x00300, 0x01E15 }, +{ 0x00113, 0x00301, 0x01E17 }, { 0x0014C, 0x00300, 0x01E50 }, { 0x0014C, 0x00301, 0x01E52 }, { 0x0014D, 0x00300, 0x01E51 }, { 0x0014D, 0x00301, 0x01E53 }, +{ 0x0015A, 0x00307, 0x01E64 }, { 0x0015B, 0x00307, 0x01E65 }, { 0x00160, 0x00307, 0x01E66 }, { 0x00161, 0x00307, 0x01E67 }, { 0x00168, 0x00301, 0x01E78 }, +{ 0x00169, 0x00301, 0x01E79 }, { 0x0016A, 0x00308, 0x01E7A }, { 0x0016B, 0x00308, 0x01E7B }, { 0x0017F, 0x00307, 0x01E9B }, { 0x001A0, 0x00300, 0x01EDC }, +{ 0x001A0, 0x00301, 0x01EDA }, { 0x001A0, 0x00303, 0x01EE0 }, { 0x001A0, 0x00309, 0x01EDE }, { 0x001A0, 0x00323, 0x01EE2 }, { 0x001A1, 0x00300, 0x01EDD }, +{ 0x001A1, 0x00301, 0x01EDB }, { 0x001A1, 0x00303, 0x01EE1 }, { 0x001A1, 0x00309, 0x01EDF }, { 0x001A1, 0x00323, 0x01EE3 }, { 0x001AF, 0x00300, 0x01EEA }, +{ 0x001AF, 0x00301, 0x01EE8 }, { 0x001AF, 0x00303, 0x01EEE }, { 0x001AF, 0x00309, 0x01EEC }, { 0x001AF, 0x00323, 0x01EF0 }, { 0x001B0, 0x00300, 0x01EEB }, +{ 0x001B0, 0x00301, 0x01EE9 }, { 0x001B0, 0x00303, 0x01EEF }, { 0x001B0, 0x00309, 0x01EED }, { 0x001B0, 0x00323, 0x01EF1 }, { 0x001B7, 0x0030C, 0x001EE }, +{ 0x001EA, 0x00304, 0x001EC }, { 0x001EB, 0x00304, 0x001ED }, { 0x00226, 0x00304, 0x001E0 }, { 0x00227, 0x00304, 0x001E1 }, { 0x00228, 0x00306, 0x01E1C }, +{ 0x00229, 0x00306, 0x01E1D }, { 0x0022E, 0x00304, 0x00230 }, { 0x0022F, 0x00304, 0x00231 }, { 0x00292, 0x0030C, 0x001EF }, { 0x00391, 0x00300, 0x01FBA }, +{ 0x00391, 0x00301, 0x00386 }, { 0x00391, 0x00304, 0x01FB9 }, { 0x00391, 0x00306, 0x01FB8 }, { 0x00391, 0x00313, 0x01F08 }, { 0x00391, 0x00314, 0x01F09 }, +{ 0x00391, 0x00345, 0x01FBC }, { 0x00395, 0x00300, 0x01FC8 }, { 0x00395, 0x00301, 0x00388 }, { 0x00395, 0x00313, 0x01F18 }, { 0x00395, 0x00314, 0x01F19 }, +{ 0x00397, 0x00300, 0x01FCA }, { 0x00397, 0x00301, 0x00389 }, { 0x00397, 0x00313, 0x01F28 }, { 0x00397, 0x00314, 0x01F29 }, { 0x00397, 0x00345, 0x01FCC }, +{ 0x00399, 0x00300, 0x01FDA }, { 0x00399, 0x00301, 0x0038A }, { 0x00399, 0x00304, 0x01FD9 }, { 0x00399, 0x00306, 0x01FD8 }, { 0x00399, 0x00308, 0x003AA }, +{ 0x00399, 0x00313, 0x01F38 }, { 0x00399, 0x00314, 0x01F39 }, { 0x0039F, 0x00300, 0x01FF8 }, { 0x0039F, 0x00301, 0x0038C }, { 0x0039F, 0x00313, 0x01F48 }, +{ 0x0039F, 0x00314, 0x01F49 }, { 0x003A1, 0x00314, 0x01FEC }, { 0x003A5, 0x00300, 0x01FEA }, { 0x003A5, 0x00301, 0x0038E }, { 0x003A5, 0x00304, 0x01FE9 }, +{ 0x003A5, 0x00306, 0x01FE8 }, { 0x003A5, 0x00308, 0x003AB }, { 0x003A5, 0x00314, 0x01F59 }, { 0x003A9, 0x00300, 0x01FFA }, { 0x003A9, 0x00301, 0x0038F }, +{ 0x003A9, 0x00313, 0x01F68 }, { 0x003A9, 0x00314, 0x01F69 }, { 0x003A9, 0x00345, 0x01FFC }, { 0x003AC, 0x00345, 0x01FB4 }, { 0x003AE, 0x00345, 0x01FC4 }, +{ 0x003B1, 0x00300, 0x01F70 }, { 0x003B1, 0x00301, 0x003AC }, { 0x003B1, 0x00304, 0x01FB1 }, { 0x003B1, 0x00306, 0x01FB0 }, { 0x003B1, 0x00313, 0x01F00 }, +{ 0x003B1, 0x00314, 0x01F01 }, { 0x003B1, 0x00342, 0x01FB6 }, { 0x003B1, 0x00345, 0x01FB3 }, { 0x003B5, 0x00300, 0x01F72 }, { 0x003B5, 0x00301, 0x003AD }, +{ 0x003B5, 0x00313, 0x01F10 }, { 0x003B5, 0x00314, 0x01F11 }, { 0x003B7, 0x00300, 0x01F74 }, { 0x003B7, 0x00301, 0x003AE }, { 0x003B7, 0x00313, 0x01F20 }, +{ 0x003B7, 0x00314, 0x01F21 }, { 0x003B7, 0x00342, 0x01FC6 }, { 0x003B7, 0x00345, 0x01FC3 }, { 0x003B9, 0x00300, 0x01F76 }, { 0x003B9, 0x00301, 0x003AF }, +{ 0x003B9, 0x00304, 0x01FD1 }, { 0x003B9, 0x00306, 0x01FD0 }, { 0x003B9, 0x00308, 0x003CA }, { 0x003B9, 0x00313, 0x01F30 }, { 0x003B9, 0x00314, 0x01F31 }, +{ 0x003B9, 0x00342, 0x01FD6 }, { 0x003BF, 0x00300, 0x01F78 }, { 0x003BF, 0x00301, 0x003CC }, { 0x003BF, 0x00313, 0x01F40 }, { 0x003BF, 0x00314, 0x01F41 }, +{ 0x003C1, 0x00313, 0x01FE4 }, { 0x003C1, 0x00314, 0x01FE5 }, { 0x003C5, 0x00300, 0x01F7A }, { 0x003C5, 0x00301, 0x003CD }, { 0x003C5, 0x00304, 0x01FE1 }, +{ 0x003C5, 0x00306, 0x01FE0 }, { 0x003C5, 0x00308, 0x003CB }, { 0x003C5, 0x00313, 0x01F50 }, { 0x003C5, 0x00314, 0x01F51 }, { 0x003C5, 0x00342, 0x01FE6 }, +{ 0x003C9, 0x00300, 0x01F7C }, { 0x003C9, 0x00301, 0x003CE }, { 0x003C9, 0x00313, 0x01F60 }, { 0x003C9, 0x00314, 0x01F61 }, { 0x003C9, 0x00342, 0x01FF6 }, +{ 0x003C9, 0x00345, 0x01FF3 }, { 0x003CA, 0x00300, 0x01FD2 }, { 0x003CA, 0x00301, 0x00390 }, { 0x003CA, 0x00342, 0x01FD7 }, { 0x003CB, 0x00300, 0x01FE2 }, +{ 0x003CB, 0x00301, 0x003B0 }, { 0x003CB, 0x00342, 0x01FE7 }, { 0x003CE, 0x00345, 0x01FF4 }, { 0x003D2, 0x00301, 0x003D3 }, { 0x003D2, 0x00308, 0x003D4 }, +{ 0x00406, 0x00308, 0x00407 }, { 0x00410, 0x00306, 0x004D0 }, { 0x00410, 0x00308, 0x004D2 }, { 0x00413, 0x00301, 0x00403 }, { 0x00415, 0x00300, 0x00400 }, +{ 0x00415, 0x00306, 0x004D6 }, { 0x00415, 0x00308, 0x00401 }, { 0x00416, 0x00306, 0x004C1 }, { 0x00416, 0x00308, 0x004DC }, { 0x00417, 0x00308, 0x004DE }, +{ 0x00418, 0x00300, 0x0040D }, { 0x00418, 0x00304, 0x004E2 }, { 0x00418, 0x00306, 0x00419 }, { 0x00418, 0x00308, 0x004E4 }, { 0x0041A, 0x00301, 0x0040C }, +{ 0x0041E, 0x00308, 0x004E6 }, { 0x00423, 0x00304, 0x004EE }, { 0x00423, 0x00306, 0x0040E }, { 0x00423, 0x00308, 0x004F0 }, { 0x00423, 0x0030B, 0x004F2 }, +{ 0x00427, 0x00308, 0x004F4 }, { 0x0042B, 0x00308, 0x004F8 }, { 0x0042D, 0x00308, 0x004EC }, { 0x00430, 0x00306, 0x004D1 }, { 0x00430, 0x00308, 0x004D3 }, +{ 0x00433, 0x00301, 0x00453 }, { 0x00435, 0x00300, 0x00450 }, { 0x00435, 0x00306, 0x004D7 }, { 0x00435, 0x00308, 0x00451 }, { 0x00436, 0x00306, 0x004C2 }, +{ 0x00436, 0x00308, 0x004DD }, { 0x00437, 0x00308, 0x004DF }, { 0x00438, 0x00300, 0x0045D }, { 0x00438, 0x00304, 0x004E3 }, { 0x00438, 0x00306, 0x00439 }, +{ 0x00438, 0x00308, 0x004E5 }, { 0x0043A, 0x00301, 0x0045C }, { 0x0043E, 0x00308, 0x004E7 }, { 0x00443, 0x00304, 0x004EF }, { 0x00443, 0x00306, 0x0045E }, +{ 0x00443, 0x00308, 0x004F1 }, { 0x00443, 0x0030B, 0x004F3 }, { 0x00447, 0x00308, 0x004F5 }, { 0x0044B, 0x00308, 0x004F9 }, { 0x0044D, 0x00308, 0x004ED }, +{ 0x00456, 0x00308, 0x00457 }, { 0x00474, 0x0030F, 0x00476 }, { 0x00475, 0x0030F, 0x00477 }, { 0x004D8, 0x00308, 0x004DA }, { 0x004D9, 0x00308, 0x004DB }, +{ 0x004E8, 0x00308, 0x004EA }, { 0x004E9, 0x00308, 0x004EB }, { 0x00627, 0x00653, 0x00622 }, { 0x00627, 0x00654, 0x00623 }, { 0x00627, 0x00655, 0x00625 }, +{ 0x00648, 0x00654, 0x00624 }, { 0x0064A, 0x00654, 0x00626 }, { 0x006C1, 0x00654, 0x006C2 }, { 0x006D2, 0x00654, 0x006D3 }, { 0x006D5, 0x00654, 0x006C0 }, +{ 0x00928, 0x0093C, 0x00929 }, { 0x00930, 0x0093C, 0x00931 }, { 0x00933, 0x0093C, 0x00934 }, { 0x009C7, 0x009BE, 0x009CB }, { 0x009C7, 0x009D7, 0x009CC }, +{ 0x00B47, 0x00B3E, 0x00B4B }, { 0x00B47, 0x00B56, 0x00B48 }, { 0x00B47, 0x00B57, 0x00B4C }, { 0x00B92, 0x00BD7, 0x00B94 }, { 0x00BC6, 0x00BBE, 0x00BCA }, +{ 0x00BC6, 0x00BD7, 0x00BCC }, { 0x00BC7, 0x00BBE, 0x00BCB }, { 0x00C46, 0x00C56, 0x00C48 }, { 0x00CBF, 0x00CD5, 0x00CC0 }, { 0x00CC6, 0x00CC2, 0x00CCA }, +{ 0x00CC6, 0x00CD5, 0x00CC7 }, { 0x00CC6, 0x00CD6, 0x00CC8 }, { 0x00CCA, 0x00CD5, 0x00CCB }, { 0x00D46, 0x00D3E, 0x00D4A }, { 0x00D46, 0x00D57, 0x00D4C }, +{ 0x00D47, 0x00D3E, 0x00D4B }, { 0x00DD9, 0x00DCA, 0x00DDA }, { 0x00DD9, 0x00DCF, 0x00DDC }, { 0x00DD9, 0x00DDF, 0x00DDE }, { 0x00DDC, 0x00DCA, 0x00DDD }, +{ 0x01025, 0x0102E, 0x01026 }, { 0x01E36, 0x00304, 0x01E38 }, { 0x01E37, 0x00304, 0x01E39 }, { 0x01E5A, 0x00304, 0x01E5C }, { 0x01E5B, 0x00304, 0x01E5D }, +{ 0x01E62, 0x00307, 0x01E68 }, { 0x01E63, 0x00307, 0x01E69 }, { 0x01EA0, 0x00302, 0x01EAC }, { 0x01EA0, 0x00306, 0x01EB6 }, { 0x01EA1, 0x00302, 0x01EAD }, +{ 0x01EA1, 0x00306, 0x01EB7 }, { 0x01EB8, 0x00302, 0x01EC6 }, { 0x01EB9, 0x00302, 0x01EC7 }, { 0x01ECC, 0x00302, 0x01ED8 }, { 0x01ECD, 0x00302, 0x01ED9 }, +{ 0x01F00, 0x00300, 0x01F02 }, { 0x01F00, 0x00301, 0x01F04 }, { 0x01F00, 0x00342, 0x01F06 }, { 0x01F00, 0x00345, 0x01F80 }, { 0x01F01, 0x00300, 0x01F03 }, +{ 0x01F01, 0x00301, 0x01F05 }, { 0x01F01, 0x00342, 0x01F07 }, { 0x01F01, 0x00345, 0x01F81 }, { 0x01F02, 0x00345, 0x01F82 }, { 0x01F03, 0x00345, 0x01F83 }, +{ 0x01F04, 0x00345, 0x01F84 }, { 0x01F05, 0x00345, 0x01F85 }, { 0x01F06, 0x00345, 0x01F86 }, { 0x01F07, 0x00345, 0x01F87 }, { 0x01F08, 0x00300, 0x01F0A }, +{ 0x01F08, 0x00301, 0x01F0C }, { 0x01F08, 0x00342, 0x01F0E }, { 0x01F08, 0x00345, 0x01F88 }, { 0x01F09, 0x00300, 0x01F0B }, { 0x01F09, 0x00301, 0x01F0D }, +{ 0x01F09, 0x00342, 0x01F0F }, { 0x01F09, 0x00345, 0x01F89 }, { 0x01F0A, 0x00345, 0x01F8A }, { 0x01F0B, 0x00345, 0x01F8B }, { 0x01F0C, 0x00345, 0x01F8C }, +{ 0x01F0D, 0x00345, 0x01F8D }, { 0x01F0E, 0x00345, 0x01F8E }, { 0x01F0F, 0x00345, 0x01F8F }, { 0x01F10, 0x00300, 0x01F12 }, { 0x01F10, 0x00301, 0x01F14 }, +{ 0x01F11, 0x00300, 0x01F13 }, { 0x01F11, 0x00301, 0x01F15 }, { 0x01F18, 0x00300, 0x01F1A }, { 0x01F18, 0x00301, 0x01F1C }, { 0x01F19, 0x00300, 0x01F1B }, +{ 0x01F19, 0x00301, 0x01F1D }, { 0x01F20, 0x00300, 0x01F22 }, { 0x01F20, 0x00301, 0x01F24 }, { 0x01F20, 0x00342, 0x01F26 }, { 0x01F20, 0x00345, 0x01F90 }, +{ 0x01F21, 0x00300, 0x01F23 }, { 0x01F21, 0x00301, 0x01F25 }, { 0x01F21, 0x00342, 0x01F27 }, { 0x01F21, 0x00345, 0x01F91 }, { 0x01F22, 0x00345, 0x01F92 }, +{ 0x01F23, 0x00345, 0x01F93 }, { 0x01F24, 0x00345, 0x01F94 }, { 0x01F25, 0x00345, 0x01F95 }, { 0x01F26, 0x00345, 0x01F96 }, { 0x01F27, 0x00345, 0x01F97 }, +{ 0x01F28, 0x00300, 0x01F2A }, { 0x01F28, 0x00301, 0x01F2C }, { 0x01F28, 0x00342, 0x01F2E }, { 0x01F28, 0x00345, 0x01F98 }, { 0x01F29, 0x00300, 0x01F2B }, +{ 0x01F29, 0x00301, 0x01F2D }, { 0x01F29, 0x00342, 0x01F2F }, { 0x01F29, 0x00345, 0x01F99 }, { 0x01F2A, 0x00345, 0x01F9A }, { 0x01F2B, 0x00345, 0x01F9B }, +{ 0x01F2C, 0x00345, 0x01F9C }, { 0x01F2D, 0x00345, 0x01F9D }, { 0x01F2E, 0x00345, 0x01F9E }, { 0x01F2F, 0x00345, 0x01F9F }, { 0x01F30, 0x00300, 0x01F32 }, +{ 0x01F30, 0x00301, 0x01F34 }, { 0x01F30, 0x00342, 0x01F36 }, { 0x01F31, 0x00300, 0x01F33 }, { 0x01F31, 0x00301, 0x01F35 }, { 0x01F31, 0x00342, 0x01F37 }, +{ 0x01F38, 0x00300, 0x01F3A }, { 0x01F38, 0x00301, 0x01F3C }, { 0x01F38, 0x00342, 0x01F3E }, { 0x01F39, 0x00300, 0x01F3B }, { 0x01F39, 0x00301, 0x01F3D }, +{ 0x01F39, 0x00342, 0x01F3F }, { 0x01F40, 0x00300, 0x01F42 }, { 0x01F40, 0x00301, 0x01F44 }, { 0x01F41, 0x00300, 0x01F43 }, { 0x01F41, 0x00301, 0x01F45 }, +{ 0x01F48, 0x00300, 0x01F4A }, { 0x01F48, 0x00301, 0x01F4C }, { 0x01F49, 0x00300, 0x01F4B }, { 0x01F49, 0x00301, 0x01F4D }, { 0x01F50, 0x00300, 0x01F52 }, +{ 0x01F50, 0x00301, 0x01F54 }, { 0x01F50, 0x00342, 0x01F56 }, { 0x01F51, 0x00300, 0x01F53 }, { 0x01F51, 0x00301, 0x01F55 }, { 0x01F51, 0x00342, 0x01F57 }, +{ 0x01F59, 0x00300, 0x01F5B }, { 0x01F59, 0x00301, 0x01F5D }, { 0x01F59, 0x00342, 0x01F5F }, { 0x01F60, 0x00300, 0x01F62 }, { 0x01F60, 0x00301, 0x01F64 }, +{ 0x01F60, 0x00342, 0x01F66 }, { 0x01F60, 0x00345, 0x01FA0 }, { 0x01F61, 0x00300, 0x01F63 }, { 0x01F61, 0x00301, 0x01F65 }, { 0x01F61, 0x00342, 0x01F67 }, +{ 0x01F61, 0x00345, 0x01FA1 }, { 0x01F62, 0x00345, 0x01FA2 }, { 0x01F63, 0x00345, 0x01FA3 }, { 0x01F64, 0x00345, 0x01FA4 }, { 0x01F65, 0x00345, 0x01FA5 }, +{ 0x01F66, 0x00345, 0x01FA6 }, { 0x01F67, 0x00345, 0x01FA7 }, { 0x01F68, 0x00300, 0x01F6A }, { 0x01F68, 0x00301, 0x01F6C }, { 0x01F68, 0x00342, 0x01F6E }, +{ 0x01F68, 0x00345, 0x01FA8 }, { 0x01F69, 0x00300, 0x01F6B }, { 0x01F69, 0x00301, 0x01F6D }, { 0x01F69, 0x00342, 0x01F6F }, { 0x01F69, 0x00345, 0x01FA9 }, +{ 0x01F6A, 0x00345, 0x01FAA }, { 0x01F6B, 0x00345, 0x01FAB }, { 0x01F6C, 0x00345, 0x01FAC }, { 0x01F6D, 0x00345, 0x01FAD }, { 0x01F6E, 0x00345, 0x01FAE }, +{ 0x01F6F, 0x00345, 0x01FAF }, { 0x01F70, 0x00345, 0x01FB2 }, { 0x01F74, 0x00345, 0x01FC2 }, { 0x01F7C, 0x00345, 0x01FF2 }, { 0x01FB6, 0x00345, 0x01FB7 }, +{ 0x01FBF, 0x00300, 0x01FCD }, { 0x01FBF, 0x00301, 0x01FCE }, { 0x01FBF, 0x00342, 0x01FCF }, { 0x01FC6, 0x00345, 0x01FC7 }, { 0x01FF6, 0x00345, 0x01FF7 }, +{ 0x01FFE, 0x00300, 0x01FDD }, { 0x01FFE, 0x00301, 0x01FDE }, { 0x01FFE, 0x00342, 0x01FDF }, { 0x02190, 0x00338, 0x0219A }, { 0x02192, 0x00338, 0x0219B }, +{ 0x02194, 0x00338, 0x021AE }, { 0x021D0, 0x00338, 0x021CD }, { 0x021D2, 0x00338, 0x021CF }, { 0x021D4, 0x00338, 0x021CE }, { 0x02203, 0x00338, 0x02204 }, +{ 0x02208, 0x00338, 0x02209 }, { 0x0220B, 0x00338, 0x0220C }, { 0x02223, 0x00338, 0x02224 }, { 0x02225, 0x00338, 0x02226 }, { 0x0223C, 0x00338, 0x02241 }, +{ 0x02243, 0x00338, 0x02244 }, { 0x02245, 0x00338, 0x02247 }, { 0x02248, 0x00338, 0x02249 }, { 0x0224D, 0x00338, 0x0226D }, { 0x02261, 0x00338, 0x02262 }, +{ 0x02264, 0x00338, 0x02270 }, { 0x02265, 0x00338, 0x02271 }, { 0x02272, 0x00338, 0x02274 }, { 0x02273, 0x00338, 0x02275 }, { 0x02276, 0x00338, 0x02278 }, +{ 0x02277, 0x00338, 0x02279 }, { 0x0227A, 0x00338, 0x02280 }, { 0x0227B, 0x00338, 0x02281 }, { 0x0227C, 0x00338, 0x022E0 }, { 0x0227D, 0x00338, 0x022E1 }, +{ 0x02282, 0x00338, 0x02284 }, { 0x02283, 0x00338, 0x02285 }, { 0x02286, 0x00338, 0x02288 }, { 0x02287, 0x00338, 0x02289 }, { 0x02291, 0x00338, 0x022E2 }, +{ 0x02292, 0x00338, 0x022E3 }, { 0x022A2, 0x00338, 0x022AC }, { 0x022A8, 0x00338, 0x022AD }, { 0x022A9, 0x00338, 0x022AE }, { 0x022AB, 0x00338, 0x022AF }, +{ 0x022B2, 0x00338, 0x022EA }, { 0x022B3, 0x00338, 0x022EB }, { 0x022B4, 0x00338, 0x022EC }, { 0x022B5, 0x00338, 0x022ED }, { 0x03046, 0x03099, 0x03094 }, +{ 0x0304B, 0x03099, 0x0304C }, { 0x0304D, 0x03099, 0x0304E }, { 0x0304F, 0x03099, 0x03050 }, { 0x03051, 0x03099, 0x03052 }, { 0x03053, 0x03099, 0x03054 }, +{ 0x03055, 0x03099, 0x03056 }, { 0x03057, 0x03099, 0x03058 }, { 0x03059, 0x03099, 0x0305A }, { 0x0305B, 0x03099, 0x0305C }, { 0x0305D, 0x03099, 0x0305E }, +{ 0x0305F, 0x03099, 0x03060 }, { 0x03061, 0x03099, 0x03062 }, { 0x03064, 0x03099, 0x03065 }, { 0x03066, 0x03099, 0x03067 }, { 0x03068, 0x03099, 0x03069 }, +{ 0x0306F, 0x03099, 0x03070 }, { 0x0306F, 0x0309A, 0x03071 }, { 0x03072, 0x03099, 0x03073 }, { 0x03072, 0x0309A, 0x03074 }, { 0x03075, 0x03099, 0x03076 }, +{ 0x03075, 0x0309A, 0x03077 }, { 0x03078, 0x03099, 0x03079 }, { 0x03078, 0x0309A, 0x0307A }, { 0x0307B, 0x03099, 0x0307C }, { 0x0307B, 0x0309A, 0x0307D }, +{ 0x0309D, 0x03099, 0x0309E }, { 0x030A6, 0x03099, 0x030F4 }, { 0x030AB, 0x03099, 0x030AC }, { 0x030AD, 0x03099, 0x030AE }, { 0x030AF, 0x03099, 0x030B0 }, +{ 0x030B1, 0x03099, 0x030B2 }, { 0x030B3, 0x03099, 0x030B4 }, { 0x030B5, 0x03099, 0x030B6 }, { 0x030B7, 0x03099, 0x030B8 }, { 0x030B9, 0x03099, 0x030BA }, +{ 0x030BB, 0x03099, 0x030BC }, { 0x030BD, 0x03099, 0x030BE }, { 0x030BF, 0x03099, 0x030C0 }, { 0x030C1, 0x03099, 0x030C2 }, { 0x030C4, 0x03099, 0x030C5 }, +{ 0x030C6, 0x03099, 0x030C7 }, { 0x030C8, 0x03099, 0x030C9 }, { 0x030CF, 0x03099, 0x030D0 }, { 0x030CF, 0x0309A, 0x030D1 }, { 0x030D2, 0x03099, 0x030D3 }, +{ 0x030D2, 0x0309A, 0x030D4 }, { 0x030D5, 0x03099, 0x030D6 }, { 0x030D5, 0x0309A, 0x030D7 }, { 0x030D8, 0x03099, 0x030D9 }, { 0x030D8, 0x0309A, 0x030DA }, +{ 0x030DB, 0x03099, 0x030DC }, { 0x030DB, 0x0309A, 0x030DD }, { 0x030EF, 0x03099, 0x030F7 }, { 0x030F0, 0x03099, 0x030F8 }, { 0x030F1, 0x03099, 0x030F9 }, +{ 0x030F2, 0x03099, 0x030FA }, { 0x030FD, 0x03099, 0x030FE } +}; + +unsigned int NormalizeTransform::getComposition(unsigned int first, unsigned int second) +{ + // Binary search in the g_composeTable table + unsigned int min = 0; + unsigned int max = composeTableSize; + unsigned int middle; + int cmp; + + while(min < max) { + middle = (max + min) >> 1; + + cmp = composeTable[middle].ch1 - first; + if(cmp == 0) + cmp = composeTable[middle].ch2 - second; + + if(cmp > 0) max = middle; + else if(cmp < 0) { + min = middle + 1; + } + else { + return composeTable[middle].dest; + } + } + + return NO_COMPOSITION; +} + +struct CanonicalCombiningClassValue +{ + unsigned int ch; + unsigned int clas; +}; +unsigned int canonicalCombiningClassTableSize = 384; +CanonicalCombiningClassValue canonicalCombiningClassTable[384] = { +{ 0x00300, 0xE6 }, { 0x00301, 0xE6 }, { 0x00302, 0xE6 }, { 0x00303, 0xE6 }, { 0x00304, 0xE6 }, { 0x00305, 0xE6 }, { 0x00306, 0xE6 }, { 0x00307, 0xE6 }, +{ 0x00308, 0xE6 }, { 0x00309, 0xE6 }, { 0x0030A, 0xE6 }, { 0x0030B, 0xE6 }, { 0x0030C, 0xE6 }, { 0x0030D, 0xE6 }, { 0x0030E, 0xE6 }, { 0x0030F, 0xE6 }, +{ 0x00310, 0xE6 }, { 0x00311, 0xE6 }, { 0x00312, 0xE6 }, { 0x00313, 0xE6 }, { 0x00314, 0xE6 }, { 0x00315, 0xE8 }, { 0x00316, 0xDC }, { 0x00317, 0xDC }, +{ 0x00318, 0xDC }, { 0x00319, 0xDC }, { 0x0031A, 0xE8 }, { 0x0031B, 0xD8 }, { 0x0031C, 0xDC }, { 0x0031D, 0xDC }, { 0x0031E, 0xDC }, { 0x0031F, 0xDC }, +{ 0x00320, 0xDC }, { 0x00321, 0xCA }, { 0x00322, 0xCA }, { 0x00323, 0xDC }, { 0x00324, 0xDC }, { 0x00325, 0xDC }, { 0x00326, 0xDC }, { 0x00327, 0xCA }, +{ 0x00328, 0xCA }, { 0x00329, 0xDC }, { 0x0032A, 0xDC }, { 0x0032B, 0xDC }, { 0x0032C, 0xDC }, { 0x0032D, 0xDC }, { 0x0032E, 0xDC }, { 0x0032F, 0xDC }, +{ 0x00330, 0xDC }, { 0x00331, 0xDC }, { 0x00332, 0xDC }, { 0x00333, 0xDC }, { 0x00334, 0x01 }, { 0x00335, 0x01 }, { 0x00336, 0x01 }, { 0x00337, 0x01 }, +{ 0x00338, 0x01 }, { 0x00339, 0xDC }, { 0x0033A, 0xDC }, { 0x0033B, 0xDC }, { 0x0033C, 0xDC }, { 0x0033D, 0xE6 }, { 0x0033E, 0xE6 }, { 0x0033F, 0xE6 }, +{ 0x00340, 0xE6 }, { 0x00341, 0xE6 }, { 0x00342, 0xE6 }, { 0x00343, 0xE6 }, { 0x00344, 0xE6 }, { 0x00345, 0xF0 }, { 0x00346, 0xE6 }, { 0x00347, 0xDC }, +{ 0x00348, 0xDC }, { 0x00349, 0xDC }, { 0x0034A, 0xE6 }, { 0x0034B, 0xE6 }, { 0x0034C, 0xE6 }, { 0x0034D, 0xDC }, { 0x0034E, 0xDC }, { 0x00350, 0xE6 }, +{ 0x00351, 0xE6 }, { 0x00352, 0xE6 }, { 0x00353, 0xDC }, { 0x00354, 0xDC }, { 0x00355, 0xDC }, { 0x00356, 0xDC }, { 0x00357, 0xE6 }, { 0x00358, 0xE8 }, +{ 0x00359, 0xDC }, { 0x0035A, 0xDC }, { 0x0035B, 0xE6 }, { 0x0035C, 0xE9 }, { 0x0035D, 0xEA }, { 0x0035E, 0xEA }, { 0x0035F, 0xE9 }, { 0x00360, 0xEA }, +{ 0x00361, 0xEA }, { 0x00362, 0xE9 }, { 0x00363, 0xE6 }, { 0x00364, 0xE6 }, { 0x00365, 0xE6 }, { 0x00366, 0xE6 }, { 0x00367, 0xE6 }, { 0x00368, 0xE6 }, +{ 0x00369, 0xE6 }, { 0x0036A, 0xE6 }, { 0x0036B, 0xE6 }, { 0x0036C, 0xE6 }, { 0x0036D, 0xE6 }, { 0x0036E, 0xE6 }, { 0x0036F, 0xE6 }, { 0x00483, 0xE6 }, +{ 0x00484, 0xE6 }, { 0x00485, 0xE6 }, { 0x00486, 0xE6 }, { 0x00591, 0xDC }, { 0x00592, 0xE6 }, { 0x00593, 0xE6 }, { 0x00594, 0xE6 }, { 0x00595, 0xE6 }, +{ 0x00596, 0xDC }, { 0x00597, 0xE6 }, { 0x00598, 0xE6 }, { 0x00599, 0xE6 }, { 0x0059A, 0xDE }, { 0x0059B, 0xDC }, { 0x0059C, 0xE6 }, { 0x0059D, 0xE6 }, +{ 0x0059E, 0xE6 }, { 0x0059F, 0xE6 }, { 0x005A0, 0xE6 }, { 0x005A1, 0xE6 }, { 0x005A2, 0xDC }, { 0x005A3, 0xDC }, { 0x005A4, 0xDC }, { 0x005A5, 0xDC }, +{ 0x005A6, 0xDC }, { 0x005A7, 0xDC }, { 0x005A8, 0xE6 }, { 0x005A9, 0xE6 }, { 0x005AA, 0xDC }, { 0x005AB, 0xE6 }, { 0x005AC, 0xE6 }, { 0x005AD, 0xDE }, +{ 0x005AE, 0xE4 }, { 0x005AF, 0xE6 }, { 0x005B0, 0x0A }, { 0x005B1, 0x0B }, { 0x005B2, 0x0C }, { 0x005B3, 0x0D }, { 0x005B4, 0x0E }, { 0x005B5, 0x0F }, +{ 0x005B6, 0x10 }, { 0x005B7, 0x11 }, { 0x005B8, 0x12 }, { 0x005B9, 0x13 }, { 0x005BB, 0x14 }, { 0x005BC, 0x15 }, { 0x005BD, 0x16 }, { 0x005BF, 0x17 }, +{ 0x005C1, 0x18 }, { 0x005C2, 0x19 }, { 0x005C4, 0xE6 }, { 0x005C5, 0xDC }, { 0x005C7, 0x12 }, { 0x00610, 0xE6 }, { 0x00611, 0xE6 }, { 0x00612, 0xE6 }, +{ 0x00613, 0xE6 }, { 0x00614, 0xE6 }, { 0x00615, 0xE6 }, { 0x0064B, 0x1B }, { 0x0064C, 0x1C }, { 0x0064D, 0x1D }, { 0x0064E, 0x1E }, { 0x0064F, 0x1F }, +{ 0x00650, 0x20 }, { 0x00651, 0x21 }, { 0x00652, 0x22 }, { 0x00653, 0xE6 }, { 0x00654, 0xE6 }, { 0x00655, 0xDC }, { 0x00656, 0xDC }, { 0x00657, 0xE6 }, +{ 0x00658, 0xE6 }, { 0x00659, 0xE6 }, { 0x0065A, 0xE6 }, { 0x0065B, 0xE6 }, { 0x0065C, 0xDC }, { 0x0065D, 0xE6 }, { 0x0065E, 0xE6 }, { 0x00670, 0x23 }, +{ 0x006D6, 0xE6 }, { 0x006D7, 0xE6 }, { 0x006D8, 0xE6 }, { 0x006D9, 0xE6 }, { 0x006DA, 0xE6 }, { 0x006DB, 0xE6 }, { 0x006DC, 0xE6 }, { 0x006DF, 0xE6 }, +{ 0x006E0, 0xE6 }, { 0x006E1, 0xE6 }, { 0x006E2, 0xE6 }, { 0x006E3, 0xDC }, { 0x006E4, 0xE6 }, { 0x006E7, 0xE6 }, { 0x006E8, 0xE6 }, { 0x006EA, 0xDC }, +{ 0x006EB, 0xE6 }, { 0x006EC, 0xE6 }, { 0x006ED, 0xDC }, { 0x00711, 0x24 }, { 0x00730, 0xE6 }, { 0x00731, 0xDC }, { 0x00732, 0xE6 }, { 0x00733, 0xE6 }, +{ 0x00734, 0xDC }, { 0x00735, 0xE6 }, { 0x00736, 0xE6 }, { 0x00737, 0xDC }, { 0x00738, 0xDC }, { 0x00739, 0xDC }, { 0x0073A, 0xE6 }, { 0x0073B, 0xDC }, +{ 0x0073C, 0xDC }, { 0x0073D, 0xE6 }, { 0x0073E, 0xDC }, { 0x0073F, 0xE6 }, { 0x00740, 0xE6 }, { 0x00741, 0xE6 }, { 0x00742, 0xDC }, { 0x00743, 0xE6 }, +{ 0x00744, 0xDC }, { 0x00745, 0xE6 }, { 0x00746, 0xDC }, { 0x00747, 0xE6 }, { 0x00748, 0xDC }, { 0x00749, 0xE6 }, { 0x0074A, 0xE6 }, { 0x0093C, 0x07 }, +{ 0x0094D, 0x09 }, { 0x00951, 0xE6 }, { 0x00952, 0xDC }, { 0x00953, 0xE6 }, { 0x00954, 0xE6 }, { 0x009BC, 0x07 }, { 0x009CD, 0x09 }, { 0x00A3C, 0x07 }, +{ 0x00A4D, 0x09 }, { 0x00ABC, 0x07 }, { 0x00ACD, 0x09 }, { 0x00B3C, 0x07 }, { 0x00B4D, 0x09 }, { 0x00BCD, 0x09 }, { 0x00C4D, 0x09 }, { 0x00C55, 0x54 }, +{ 0x00C56, 0x5B }, { 0x00CBC, 0x07 }, { 0x00CCD, 0x09 }, { 0x00D4D, 0x09 }, { 0x00DCA, 0x09 }, { 0x00E38, 0x67 }, { 0x00E39, 0x67 }, { 0x00E3A, 0x09 }, +{ 0x00E48, 0x6B }, { 0x00E49, 0x6B }, { 0x00E4A, 0x6B }, { 0x00E4B, 0x6B }, { 0x00EB8, 0x76 }, { 0x00EB9, 0x76 }, { 0x00EC8, 0x7A }, { 0x00EC9, 0x7A }, +{ 0x00ECA, 0x7A }, { 0x00ECB, 0x7A }, { 0x00F18, 0xDC }, { 0x00F19, 0xDC }, { 0x00F35, 0xDC }, { 0x00F37, 0xDC }, { 0x00F39, 0xD8 }, { 0x00F71, 0x81 }, +{ 0x00F72, 0x82 }, { 0x00F74, 0x84 }, { 0x00F7A, 0x82 }, { 0x00F7B, 0x82 }, { 0x00F7C, 0x82 }, { 0x00F7D, 0x82 }, { 0x00F80, 0x82 }, { 0x00F82, 0xE6 }, +{ 0x00F83, 0xE6 }, { 0x00F84, 0x09 }, { 0x00F86, 0xE6 }, { 0x00F87, 0xE6 }, { 0x00FC6, 0xDC }, { 0x01037, 0x07 }, { 0x01039, 0x09 }, { 0x0135F, 0xE6 }, +{ 0x01714, 0x09 }, { 0x01734, 0x09 }, { 0x017D2, 0x09 }, { 0x017DD, 0xE6 }, { 0x018A9, 0xE4 }, { 0x01939, 0xDE }, { 0x0193A, 0xE6 }, { 0x0193B, 0xDC }, +{ 0x01A17, 0xE6 }, { 0x01A18, 0xDC }, { 0x01DC0, 0xE6 }, { 0x01DC1, 0xE6 }, { 0x01DC2, 0xDC }, { 0x01DC3, 0xE6 }, { 0x020D0, 0xE6 }, { 0x020D1, 0xE6 }, +{ 0x020D2, 0x01 }, { 0x020D3, 0x01 }, { 0x020D4, 0xE6 }, { 0x020D5, 0xE6 }, { 0x020D6, 0xE6 }, { 0x020D7, 0xE6 }, { 0x020D8, 0x01 }, { 0x020D9, 0x01 }, +{ 0x020DA, 0x01 }, { 0x020DB, 0xE6 }, { 0x020DC, 0xE6 }, { 0x020E1, 0xE6 }, { 0x020E5, 0x01 }, { 0x020E6, 0x01 }, { 0x020E7, 0xE6 }, { 0x020E8, 0xDC }, +{ 0x020E9, 0xE6 }, { 0x020EA, 0x01 }, { 0x020EB, 0x01 }, { 0x0302A, 0xDA }, { 0x0302B, 0xE4 }, { 0x0302C, 0xE8 }, { 0x0302D, 0xDE }, { 0x0302E, 0xE0 }, +{ 0x0302F, 0xE0 }, { 0x03099, 0x08 }, { 0x0309A, 0x08 }, { 0x0A806, 0x09 }, { 0x0FB1E, 0x1A }, { 0x0FE20, 0xE6 }, { 0x0FE21, 0xE6 }, { 0x0FE22, 0xE6 }, +{ 0x0FE23, 0xE6 }, { 0x10A0D, 0xDC }, { 0x10A0F, 0xE6 }, { 0x10A38, 0xE6 }, { 0x10A39, 0x01 }, { 0x10A3A, 0xDC }, { 0x10A3F, 0x09 }, { 0x1D165, 0xD8 }, +{ 0x1D166, 0xD8 }, { 0x1D167, 0x01 }, { 0x1D168, 0x01 }, { 0x1D169, 0x01 }, { 0x1D16D, 0xE2 }, { 0x1D16E, 0xD8 }, { 0x1D16F, 0xD8 }, { 0x1D170, 0xD8 }, +{ 0x1D171, 0xD8 }, { 0x1D172, 0xD8 }, { 0x1D17B, 0xDC }, { 0x1D17C, 0xDC }, { 0x1D17D, 0xDC }, { 0x1D17E, 0xDC }, { 0x1D17F, 0xDC }, { 0x1D180, 0xDC }, +{ 0x1D181, 0xDC }, { 0x1D182, 0xDC }, { 0x1D185, 0xE6 }, { 0x1D186, 0xE6 }, { 0x1D187, 0xE6 }, { 0x1D188, 0xE6 }, { 0x1D189, 0xE6 }, { 0x1D18A, 0xDC }, +{ 0x1D18B, 0xDC }, { 0x1D1AA, 0xE6 }, { 0x1D1AB, 0xE6 }, { 0x1D1AC, 0xE6 }, { 0x1D1AD, 0xE6 }, { 0x1D242, 0xE6 }, { 0x1D243, 0xE6 }, { 0x1D244, 0xE6 } +}; + +unsigned int NormalizeTransform::getCanonicalCombiningClass(unsigned int ch) +{ + if(ch < 0x300) { + return 0; + } + + // Binary search in the canonicalCombiningClassTable table + unsigned int min = 0; + unsigned int max = canonicalCombiningClassTableSize; + unsigned int middle; + int cmp; + + while(min < max) { + middle = (max + min) >> 1; + + cmp = canonicalCombiningClassTable[middle].ch - ch; + if(cmp > 0) max = middle; + else if(cmp < 0) { + min = middle + 1; + } + else { + return canonicalCombiningClassTable[middle].clas; + } + } + + return 0; +} diff --git a/src/utils/UCANormalizer3.cpp b/src/utils/UCANormalizer3.cpp new file mode 100644 index 00000000..87f536b8 --- /dev/null +++ b/src/utils/UCANormalizer3.cpp @@ -0,0 +1,1496 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: UCANormalizer3.cpp,v 1.2 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +static const unsigned int diacriticDirectTableSize = 64; +static const unsigned long diacriticDirectTable[64] = { + 0x00000000, 0x00000000, 0x40000000, 0x00000001, 0x00000000, 0x01908100, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xFFFF0000, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xE0FF7FFF, 0x04300007, 0x00000030, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000078, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x02000000, 0x00000000, 0xFFFE0000, 0xBBFFFFFB, 0x00000016, 0x00000000, + 0x00000000, 0x00000000, 0x0187F800, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0x00001C61, + 0x00000000, 0xFFFF0000, 0x000007FF, 0x00000000, 0x00000000, 0x0001FFC0, 0x00000000, 0x00000000 +}; + +// static const unsigned int diacriticTableSize = 482; +// static const unsigned int diacriticTable[482] = { +static const unsigned int diacriticTableSize = 190; +static const unsigned int diacriticTable[190] = { +// 0x0005E, 0x00060, 0x000A8, 0x000AF, 0x000B4, 0x000B7, 0x000B8, 0x002B0, 0x002B1, 0x002B2, 0x002B3, 0x002B4, 0x002B5, 0x002B6, 0x002B7, +// 0x002B8, 0x002B9, 0x002BA, 0x002BB, 0x002BC, 0x002BD, 0x002BE, 0x002BF, 0x002C0, 0x002C1, 0x002C2, 0x002C3, 0x002C4, 0x002C5, 0x002C6, +// 0x002C7, 0x002C8, 0x002C9, 0x002CA, 0x002CB, 0x002CC, 0x002CD, 0x002CE, 0x002CF, 0x002D0, 0x002D1, 0x002D2, 0x002D3, 0x002D4, 0x002D5, +// 0x002D6, 0x002D7, 0x002D8, 0x002D9, 0x002DA, 0x002DB, 0x002DC, 0x002DD, 0x002DE, 0x002DF, 0x002E0, 0x002E1, 0x002E2, 0x002E3, 0x002E4, +// 0x002E5, 0x002E6, 0x002E7, 0x002E8, 0x002E9, 0x002EA, 0x002EB, 0x002EC, 0x002ED, 0x002EE, 0x002EF, 0x002F0, 0x002F1, 0x002F2, 0x002F3, +// 0x002F4, 0x002F5, 0x002F6, 0x002F7, 0x002F8, 0x002F9, 0x002FA, 0x002FB, 0x002FC, 0x002FD, 0x002FE, 0x002FF, 0x00300, 0x00301, 0x00302, +// 0x00303, 0x00304, 0x00305, 0x00306, 0x00307, 0x00308, 0x00309, 0x0030A, 0x0030B, 0x0030C, 0x0030D, 0x0030E, 0x0030F, 0x00310, 0x00311, +// 0x00312, 0x00313, 0x00314, 0x00315, 0x00316, 0x00317, 0x00318, 0x00319, 0x0031A, 0x0031B, 0x0031C, 0x0031D, 0x0031E, 0x0031F, 0x00320, +// 0x00321, 0x00322, 0x00323, 0x00324, 0x00325, 0x00326, 0x00327, 0x00328, 0x00329, 0x0032A, 0x0032B, 0x0032C, 0x0032D, 0x0032E, 0x0032F, +// 0x00330, 0x00331, 0x00332, 0x00333, 0x00334, 0x00335, 0x00336, 0x00337, 0x00338, 0x00339, 0x0033A, 0x0033B, 0x0033C, 0x0033D, 0x0033E, +// 0x0033F, 0x00340, 0x00341, 0x00342, 0x00343, 0x00344, 0x00345, 0x00346, 0x00347, 0x00348, 0x00349, 0x0034A, 0x0034B, 0x0034C, 0x0034D, +// 0x0034E, 0x00350, 0x00351, 0x00352, 0x00353, 0x00354, 0x00355, 0x00356, 0x00357, 0x0035D, 0x0035E, 0x0035F, 0x00360, 0x00361, 0x00362, +// 0x00374, 0x00375, 0x0037A, 0x00384, 0x00385, 0x00483, 0x00484, 0x00485, 0x00486, 0x00559, 0x00591, 0x00592, 0x00593, 0x00594, 0x00595, +// 0x00596, 0x00597, 0x00598, 0x00599, 0x0059A, 0x0059B, 0x0059C, 0x0059D, 0x0059E, 0x0059F, 0x005A0, 0x005A1, 0x005A3, 0x005A4, 0x005A5, +// 0x005A6, 0x005A7, 0x005A8, 0x005A9, 0x005AA, 0x005AB, 0x005AC, 0x005AD, 0x005AE, 0x005AF, 0x005B0, 0x005B1, 0x005B2, 0x005B3, 0x005B4, +// 0x005B5, 0x005B6, 0x005B7, 0x005B8, 0x005B9, 0x005BB, 0x005BC, 0x005BD, 0x005BF, 0x005C1, 0x005C2, 0x005C4, 0x0064B, 0x0064C, 0x0064D, +// 0x0064E, 0x0064F, 0x00650, 0x00651, 0x00652, 0x00657, 0x00658, 0x006DF, 0x006E0, 0x006E5, 0x006E6, 0x006EA, 0x006EB, 0x006EC, 0x00730, +// 0x00731, 0x00732, 0x00733, 0x00734, 0x00735, 0x00736, 0x00737, 0x00738, 0x00739, 0x0073A, 0x0073B, 0x0073C, 0x0073D, 0x0073E, 0x0073F, +// 0x00740, 0x00741, 0x00742, 0x00743, 0x00744, 0x00745, 0x00746, 0x00747, 0x00748, 0x00749, 0x0074A, 0x007A6, 0x007A7, 0x007A8, 0x007A9, +// 0x007AA, 0x007AB, 0x007AC, 0x007AD, 0x007AE, 0x007AF, 0x007B0, + + 0x0093C, 0x0094D, 0x00951, 0x00952, 0x00953, 0x00954, 0x009BC, 0x009CD, + 0x00A3C, 0x00A4D, 0x00ABC, 0x00ACD, 0x00B3C, 0x00B4D, 0x00BCD, 0x00C4D, 0x00CBC, 0x00CCD, 0x00D4D, 0x00DCA, 0x00E47, 0x00E48, 0x00E49, + 0x00E4A, 0x00E4B, 0x00E4C, 0x00E4E, 0x00EC8, 0x00EC9, 0x00ECA, 0x00ECB, 0x00ECC, 0x00F18, 0x00F19, 0x00F35, 0x00F37, 0x00F39, 0x00F3E, + 0x00F3F, 0x00F82, 0x00F83, 0x00F84, 0x00F86, 0x00F87, 0x00FC6, 0x01037, 0x01039, 0x017C9, 0x017CA, 0x017CB, 0x017CC, 0x017CD, 0x017CE, + 0x017CF, 0x017D0, 0x017D1, 0x017D2, 0x017D3, 0x017DD, 0x01939, 0x0193A, 0x0193B, 0x01D2C, 0x01D2D, 0x01D2E, 0x01D2F, 0x01D30, 0x01D31, + 0x01D32, 0x01D33, 0x01D34, 0x01D35, 0x01D36, 0x01D37, 0x01D38, 0x01D39, 0x01D3A, 0x01D3B, 0x01D3C, 0x01D3D, 0x01D3E, 0x01D3F, 0x01D40, + 0x01D41, 0x01D42, 0x01D43, 0x01D44, 0x01D45, 0x01D46, 0x01D47, 0x01D48, 0x01D49, 0x01D4A, 0x01D4B, 0x01D4C, 0x01D4D, 0x01D4E, 0x01D4F, + 0x01D50, 0x01D51, 0x01D52, 0x01D53, 0x01D54, 0x01D55, 0x01D56, 0x01D57, 0x01D58, 0x01D59, 0x01D5A, 0x01D5B, 0x01D5C, 0x01D5D, 0x01D5E, + 0x01D5F, 0x01D60, 0x01D61, 0x01D62, 0x01D63, 0x01D64, 0x01D65, 0x01D66, 0x01D67, 0x01D68, 0x01D69, 0x01D6A, 0x01FBD, 0x01FBF, 0x01FC0, + 0x01FC1, 0x01FCD, 0x01FCE, 0x01FCF, 0x01FDD, 0x01FDE, 0x01FDF, 0x01FED, 0x01FEE, 0x01FEF, 0x01FFD, 0x01FFE, 0x0302A, 0x0302B, 0x0302C, + 0x0302D, 0x0302E, 0x0302F, 0x03099, 0x0309A, 0x0309B, 0x0309C, 0x030FC, 0x0FB1E, 0x0FE20, 0x0FE21, 0x0FE22, 0x0FE23, 0x0FF3E, 0x0FF40, + 0x0FF70, 0x0FF9E, 0x0FF9F, 0x0FFE3, 0x1D167, 0x1D168, 0x1D169, 0x1D16D, 0x1D16E, 0x1D16F, 0x1D170, 0x1D171, 0x1D172, 0x1D17B, 0x1D17C, + 0x1D17D, 0x1D17E, 0x1D17F, 0x1D180, 0x1D181, 0x1D182, 0x1D185, 0x1D186, 0x1D187, 0x1D188, 0x1D189, 0x1D18A, 0x1D18B, 0x1D1AA, 0x1D1AB, + 0x1D1AC, 0x1D1AD +}; + +bool RemoveDiacriticsTransform::isDiacritic(unsigned int ch) +{ + if(ch < (diacriticDirectTableSize * 32)) { + return (diacriticDirectTable[ch / 32] & (1 << (ch % 32))) != 0; + } + + // Binary search in the g_diacriticTable table + unsigned int min = 0; + unsigned int max = diacriticTableSize; + unsigned int middle; + int cmp; + + while(min < max) { + middle = (max + min) >> 1; + + cmp = diacriticTable[middle] - ch; + if(cmp > 0) max = middle; + else if(cmp < 0) { + min = middle + 1; + } + else { + return true; + } + } + + return false; +} + +static unsigned int cf00041[] = { 0x00061, 0x00000 }; +static unsigned int cf00042[] = { 0x00062, 0x00000 }; +static unsigned int cf00043[] = { 0x00063, 0x00000 }; +static unsigned int cf00044[] = { 0x00064, 0x00000 }; +static unsigned int cf00045[] = { 0x00065, 0x00000 }; +static unsigned int cf00046[] = { 0x00066, 0x00000 }; +static unsigned int cf00047[] = { 0x00067, 0x00000 }; +static unsigned int cf00048[] = { 0x00068, 0x00000 }; +static unsigned int cf00049[] = { 0x00069, 0x00000 }; +static unsigned int cf0004A[] = { 0x0006A, 0x00000 }; +static unsigned int cf0004B[] = { 0x0006B, 0x00000 }; +static unsigned int cf0004C[] = { 0x0006C, 0x00000 }; +static unsigned int cf0004D[] = { 0x0006D, 0x00000 }; +static unsigned int cf0004E[] = { 0x0006E, 0x00000 }; +static unsigned int cf0004F[] = { 0x0006F, 0x00000 }; +static unsigned int cf00050[] = { 0x00070, 0x00000 }; +static unsigned int cf00051[] = { 0x00071, 0x00000 }; +static unsigned int cf00052[] = { 0x00072, 0x00000 }; +static unsigned int cf00053[] = { 0x00073, 0x00000 }; +static unsigned int cf00054[] = { 0x00074, 0x00000 }; +static unsigned int cf00055[] = { 0x00075, 0x00000 }; +static unsigned int cf00056[] = { 0x00076, 0x00000 }; +static unsigned int cf00057[] = { 0x00077, 0x00000 }; +static unsigned int cf00058[] = { 0x00078, 0x00000 }; +static unsigned int cf00059[] = { 0x00079, 0x00000 }; +static unsigned int cf0005A[] = { 0x0007A, 0x00000 }; +static unsigned int cf000B5[] = { 0x003BC, 0x00000 }; +static unsigned int cf000C0[] = { 0x000E0, 0x00000 }; +static unsigned int cf000C1[] = { 0x000E1, 0x00000 }; +static unsigned int cf000C2[] = { 0x000E2, 0x00000 }; +static unsigned int cf000C3[] = { 0x000E3, 0x00000 }; +static unsigned int cf000C4[] = { 0x000E4, 0x00000 }; +static unsigned int cf000C5[] = { 0x000E5, 0x00000 }; +static unsigned int cf000C6[] = { 0x000E6, 0x00000 }; +static unsigned int cf000C7[] = { 0x000E7, 0x00000 }; +static unsigned int cf000C8[] = { 0x000E8, 0x00000 }; +static unsigned int cf000C9[] = { 0x000E9, 0x00000 }; +static unsigned int cf000CA[] = { 0x000EA, 0x00000 }; +static unsigned int cf000CB[] = { 0x000EB, 0x00000 }; +static unsigned int cf000CC[] = { 0x000EC, 0x00000 }; +static unsigned int cf000CD[] = { 0x000ED, 0x00000 }; +static unsigned int cf000CE[] = { 0x000EE, 0x00000 }; +static unsigned int cf000CF[] = { 0x000EF, 0x00000 }; +static unsigned int cf000D0[] = { 0x000F0, 0x00000 }; +static unsigned int cf000D1[] = { 0x000F1, 0x00000 }; +static unsigned int cf000D2[] = { 0x000F2, 0x00000 }; +static unsigned int cf000D3[] = { 0x000F3, 0x00000 }; +static unsigned int cf000D4[] = { 0x000F4, 0x00000 }; +static unsigned int cf000D5[] = { 0x000F5, 0x00000 }; +static unsigned int cf000D6[] = { 0x000F6, 0x00000 }; +static unsigned int cf000D8[] = { 0x000F8, 0x00000 }; +static unsigned int cf000D9[] = { 0x000F9, 0x00000 }; +static unsigned int cf000DA[] = { 0x000FA, 0x00000 }; +static unsigned int cf000DB[] = { 0x000FB, 0x00000 }; +static unsigned int cf000DC[] = { 0x000FC, 0x00000 }; +static unsigned int cf000DD[] = { 0x000FD, 0x00000 }; +static unsigned int cf000DE[] = { 0x000FE, 0x00000 }; +static unsigned int cf000DF[] = { 0x00073, 0x00073, 0x00000 }; +static unsigned int cf00100[] = { 0x00101, 0x00000 }; +static unsigned int cf00102[] = { 0x00103, 0x00000 }; +static unsigned int cf00104[] = { 0x00105, 0x00000 }; +static unsigned int cf00106[] = { 0x00107, 0x00000 }; +static unsigned int cf00108[] = { 0x00109, 0x00000 }; +static unsigned int cf0010A[] = { 0x0010B, 0x00000 }; +static unsigned int cf0010C[] = { 0x0010D, 0x00000 }; +static unsigned int cf0010E[] = { 0x0010F, 0x00000 }; +static unsigned int cf00110[] = { 0x00111, 0x00000 }; +static unsigned int cf00112[] = { 0x00113, 0x00000 }; +static unsigned int cf00114[] = { 0x00115, 0x00000 }; +static unsigned int cf00116[] = { 0x00117, 0x00000 }; +static unsigned int cf00118[] = { 0x00119, 0x00000 }; +static unsigned int cf0011A[] = { 0x0011B, 0x00000 }; +static unsigned int cf0011C[] = { 0x0011D, 0x00000 }; +static unsigned int cf0011E[] = { 0x0011F, 0x00000 }; +static unsigned int cf00120[] = { 0x00121, 0x00000 }; +static unsigned int cf00122[] = { 0x00123, 0x00000 }; +static unsigned int cf00124[] = { 0x00125, 0x00000 }; +static unsigned int cf00126[] = { 0x00127, 0x00000 }; +static unsigned int cf00128[] = { 0x00129, 0x00000 }; +static unsigned int cf0012A[] = { 0x0012B, 0x00000 }; +static unsigned int cf0012C[] = { 0x0012D, 0x00000 }; +static unsigned int cf0012E[] = { 0x0012F, 0x00000 }; +static unsigned int cf00130[] = { 0x00069, 0x00307, 0x00000 }; +static unsigned int cf00132[] = { 0x00133, 0x00000 }; +static unsigned int cf00134[] = { 0x00135, 0x00000 }; +static unsigned int cf00136[] = { 0x00137, 0x00000 }; +static unsigned int cf00139[] = { 0x0013A, 0x00000 }; +static unsigned int cf0013B[] = { 0x0013C, 0x00000 }; +static unsigned int cf0013D[] = { 0x0013E, 0x00000 }; +static unsigned int cf0013F[] = { 0x00140, 0x00000 }; +static unsigned int cf00141[] = { 0x00142, 0x00000 }; +static unsigned int cf00143[] = { 0x00144, 0x00000 }; +static unsigned int cf00145[] = { 0x00146, 0x00000 }; +static unsigned int cf00147[] = { 0x00148, 0x00000 }; +static unsigned int cf00149[] = { 0x002BC, 0x0006E, 0x00000 }; +static unsigned int cf0014A[] = { 0x0014B, 0x00000 }; +static unsigned int cf0014C[] = { 0x0014D, 0x00000 }; +static unsigned int cf0014E[] = { 0x0014F, 0x00000 }; +static unsigned int cf00150[] = { 0x00151, 0x00000 }; +static unsigned int cf00152[] = { 0x00153, 0x00000 }; +static unsigned int cf00154[] = { 0x00155, 0x00000 }; +static unsigned int cf00156[] = { 0x00157, 0x00000 }; +static unsigned int cf00158[] = { 0x00159, 0x00000 }; +static unsigned int cf0015A[] = { 0x0015B, 0x00000 }; +static unsigned int cf0015C[] = { 0x0015D, 0x00000 }; +static unsigned int cf0015E[] = { 0x0015F, 0x00000 }; +static unsigned int cf00160[] = { 0x00161, 0x00000 }; +static unsigned int cf00162[] = { 0x00163, 0x00000 }; +static unsigned int cf00164[] = { 0x00165, 0x00000 }; +static unsigned int cf00166[] = { 0x00167, 0x00000 }; +static unsigned int cf00168[] = { 0x00169, 0x00000 }; +static unsigned int cf0016A[] = { 0x0016B, 0x00000 }; +static unsigned int cf0016C[] = { 0x0016D, 0x00000 }; +static unsigned int cf0016E[] = { 0x0016F, 0x00000 }; +static unsigned int cf00170[] = { 0x00171, 0x00000 }; +static unsigned int cf00172[] = { 0x00173, 0x00000 }; +static unsigned int cf00174[] = { 0x00175, 0x00000 }; +static unsigned int cf00176[] = { 0x00177, 0x00000 }; +static unsigned int cf00178[] = { 0x000FF, 0x00000 }; +static unsigned int cf00179[] = { 0x0017A, 0x00000 }; +static unsigned int cf0017B[] = { 0x0017C, 0x00000 }; +static unsigned int cf0017D[] = { 0x0017E, 0x00000 }; +static unsigned int cf0017F[] = { 0x00073, 0x00000 }; +static unsigned int cf00181[] = { 0x00253, 0x00000 }; +static unsigned int cf00182[] = { 0x00183, 0x00000 }; +static unsigned int cf00184[] = { 0x00185, 0x00000 }; +static unsigned int cf00186[] = { 0x00254, 0x00000 }; +static unsigned int cf00187[] = { 0x00188, 0x00000 }; +static unsigned int cf00189[] = { 0x00256, 0x00000 }; +static unsigned int cf0018A[] = { 0x00257, 0x00000 }; +static unsigned int cf0018B[] = { 0x0018C, 0x00000 }; +static unsigned int cf0018E[] = { 0x001DD, 0x00000 }; +static unsigned int cf0018F[] = { 0x00259, 0x00000 }; +static unsigned int cf00190[] = { 0x0025B, 0x00000 }; +static unsigned int cf00191[] = { 0x00192, 0x00000 }; +static unsigned int cf00193[] = { 0x00260, 0x00000 }; +static unsigned int cf00194[] = { 0x00263, 0x00000 }; +static unsigned int cf00196[] = { 0x00269, 0x00000 }; +static unsigned int cf00197[] = { 0x00268, 0x00000 }; +static unsigned int cf00198[] = { 0x00199, 0x00000 }; +static unsigned int cf0019C[] = { 0x0026F, 0x00000 }; +static unsigned int cf0019D[] = { 0x00272, 0x00000 }; +static unsigned int cf0019F[] = { 0x00275, 0x00000 }; +static unsigned int cf001A0[] = { 0x001A1, 0x00000 }; +static unsigned int cf001A2[] = { 0x001A3, 0x00000 }; +static unsigned int cf001A4[] = { 0x001A5, 0x00000 }; +static unsigned int cf001A6[] = { 0x00280, 0x00000 }; +static unsigned int cf001A7[] = { 0x001A8, 0x00000 }; +static unsigned int cf001A9[] = { 0x00283, 0x00000 }; +static unsigned int cf001AC[] = { 0x001AD, 0x00000 }; +static unsigned int cf001AE[] = { 0x00288, 0x00000 }; +static unsigned int cf001AF[] = { 0x001B0, 0x00000 }; +static unsigned int cf001B1[] = { 0x0028A, 0x00000 }; +static unsigned int cf001B2[] = { 0x0028B, 0x00000 }; +static unsigned int cf001B3[] = { 0x001B4, 0x00000 }; +static unsigned int cf001B5[] = { 0x001B6, 0x00000 }; +static unsigned int cf001B7[] = { 0x00292, 0x00000 }; +static unsigned int cf001B8[] = { 0x001B9, 0x00000 }; +static unsigned int cf001BC[] = { 0x001BD, 0x00000 }; +static unsigned int cf001C4[] = { 0x001C6, 0x00000 }; +static unsigned int cf001C5[] = { 0x001C6, 0x00000 }; +static unsigned int cf001C7[] = { 0x001C9, 0x00000 }; +static unsigned int cf001C8[] = { 0x001C9, 0x00000 }; +static unsigned int cf001CA[] = { 0x001CC, 0x00000 }; +static unsigned int cf001CB[] = { 0x001CC, 0x00000 }; +static unsigned int cf001CD[] = { 0x001CE, 0x00000 }; +static unsigned int cf001CF[] = { 0x001D0, 0x00000 }; +static unsigned int cf001D1[] = { 0x001D2, 0x00000 }; +static unsigned int cf001D3[] = { 0x001D4, 0x00000 }; +static unsigned int cf001D5[] = { 0x001D6, 0x00000 }; +static unsigned int cf001D7[] = { 0x001D8, 0x00000 }; +static unsigned int cf001D9[] = { 0x001DA, 0x00000 }; +static unsigned int cf001DB[] = { 0x001DC, 0x00000 }; +static unsigned int cf001DE[] = { 0x001DF, 0x00000 }; +static unsigned int cf001E0[] = { 0x001E1, 0x00000 }; +static unsigned int cf001E2[] = { 0x001E3, 0x00000 }; +static unsigned int cf001E4[] = { 0x001E5, 0x00000 }; +static unsigned int cf001E6[] = { 0x001E7, 0x00000 }; +static unsigned int cf001E8[] = { 0x001E9, 0x00000 }; +static unsigned int cf001EA[] = { 0x001EB, 0x00000 }; +static unsigned int cf001EC[] = { 0x001ED, 0x00000 }; +static unsigned int cf001EE[] = { 0x001EF, 0x00000 }; +static unsigned int cf001F0[] = { 0x0006A, 0x0030C, 0x00000 }; +static unsigned int cf001F1[] = { 0x001F3, 0x00000 }; +static unsigned int cf001F2[] = { 0x001F3, 0x00000 }; +static unsigned int cf001F4[] = { 0x001F5, 0x00000 }; +static unsigned int cf001F6[] = { 0x00195, 0x00000 }; +static unsigned int cf001F7[] = { 0x001BF, 0x00000 }; +static unsigned int cf001F8[] = { 0x001F9, 0x00000 }; +static unsigned int cf001FA[] = { 0x001FB, 0x00000 }; +static unsigned int cf001FC[] = { 0x001FD, 0x00000 }; +static unsigned int cf001FE[] = { 0x001FF, 0x00000 }; +static unsigned int cf00200[] = { 0x00201, 0x00000 }; +static unsigned int cf00202[] = { 0x00203, 0x00000 }; +static unsigned int cf00204[] = { 0x00205, 0x00000 }; +static unsigned int cf00206[] = { 0x00207, 0x00000 }; +static unsigned int cf00208[] = { 0x00209, 0x00000 }; +static unsigned int cf0020A[] = { 0x0020B, 0x00000 }; +static unsigned int cf0020C[] = { 0x0020D, 0x00000 }; +static unsigned int cf0020E[] = { 0x0020F, 0x00000 }; +static unsigned int cf00210[] = { 0x00211, 0x00000 }; +static unsigned int cf00212[] = { 0x00213, 0x00000 }; +static unsigned int cf00214[] = { 0x00215, 0x00000 }; +static unsigned int cf00216[] = { 0x00217, 0x00000 }; +static unsigned int cf00218[] = { 0x00219, 0x00000 }; +static unsigned int cf0021A[] = { 0x0021B, 0x00000 }; +static unsigned int cf0021C[] = { 0x0021D, 0x00000 }; +static unsigned int cf0021E[] = { 0x0021F, 0x00000 }; +static unsigned int cf00220[] = { 0x0019E, 0x00000 }; +static unsigned int cf00222[] = { 0x00223, 0x00000 }; +static unsigned int cf00224[] = { 0x00225, 0x00000 }; +static unsigned int cf00226[] = { 0x00227, 0x00000 }; +static unsigned int cf00228[] = { 0x00229, 0x00000 }; +static unsigned int cf0022A[] = { 0x0022B, 0x00000 }; +static unsigned int cf0022C[] = { 0x0022D, 0x00000 }; +static unsigned int cf0022E[] = { 0x0022F, 0x00000 }; +static unsigned int cf00230[] = { 0x00231, 0x00000 }; +static unsigned int cf00232[] = { 0x00233, 0x00000 }; +static unsigned int cf0023B[] = { 0x0023C, 0x00000 }; +static unsigned int cf0023D[] = { 0x0019A, 0x00000 }; +static unsigned int cf00241[] = { 0x00294, 0x00000 }; +static unsigned int cf00345[] = { 0x003B9, 0x00000 }; +static unsigned int cf00386[] = { 0x003AC, 0x00000 }; +static unsigned int cf00388[] = { 0x003AD, 0x00000 }; +static unsigned int cf00389[] = { 0x003AE, 0x00000 }; +static unsigned int cf0038A[] = { 0x003AF, 0x00000 }; +static unsigned int cf0038C[] = { 0x003CC, 0x00000 }; +static unsigned int cf0038E[] = { 0x003CD, 0x00000 }; +static unsigned int cf0038F[] = { 0x003CE, 0x00000 }; +static unsigned int cf00390[] = { 0x003B9, 0x00308, 0x00301, 0x00000 }; +static unsigned int cf00391[] = { 0x003B1, 0x00000 }; +static unsigned int cf00392[] = { 0x003B2, 0x00000 }; +static unsigned int cf00393[] = { 0x003B3, 0x00000 }; +static unsigned int cf00394[] = { 0x003B4, 0x00000 }; +static unsigned int cf00395[] = { 0x003B5, 0x00000 }; +static unsigned int cf00396[] = { 0x003B6, 0x00000 }; +static unsigned int cf00397[] = { 0x003B7, 0x00000 }; +static unsigned int cf00398[] = { 0x003B8, 0x00000 }; +static unsigned int cf00399[] = { 0x003B9, 0x00000 }; +static unsigned int cf0039A[] = { 0x003BA, 0x00000 }; +static unsigned int cf0039B[] = { 0x003BB, 0x00000 }; +static unsigned int cf0039C[] = { 0x003BC, 0x00000 }; +static unsigned int cf0039D[] = { 0x003BD, 0x00000 }; +static unsigned int cf0039E[] = { 0x003BE, 0x00000 }; +static unsigned int cf0039F[] = { 0x003BF, 0x00000 }; +static unsigned int cf003A0[] = { 0x003C0, 0x00000 }; +static unsigned int cf003A1[] = { 0x003C1, 0x00000 }; +static unsigned int cf003A3[] = { 0x003C3, 0x00000 }; +static unsigned int cf003A4[] = { 0x003C4, 0x00000 }; +static unsigned int cf003A5[] = { 0x003C5, 0x00000 }; +static unsigned int cf003A6[] = { 0x003C6, 0x00000 }; +static unsigned int cf003A7[] = { 0x003C7, 0x00000 }; +static unsigned int cf003A8[] = { 0x003C8, 0x00000 }; +static unsigned int cf003A9[] = { 0x003C9, 0x00000 }; +static unsigned int cf003AA[] = { 0x003CA, 0x00000 }; +static unsigned int cf003AB[] = { 0x003CB, 0x00000 }; +static unsigned int cf003B0[] = { 0x003C5, 0x00308, 0x00301, 0x00000 }; +static unsigned int cf003C2[] = { 0x003C3, 0x00000 }; +static unsigned int cf003D0[] = { 0x003B2, 0x00000 }; +static unsigned int cf003D1[] = { 0x003B8, 0x00000 }; +static unsigned int cf003D5[] = { 0x003C6, 0x00000 }; +static unsigned int cf003D6[] = { 0x003C0, 0x00000 }; +static unsigned int cf003D8[] = { 0x003D9, 0x00000 }; +static unsigned int cf003DA[] = { 0x003DB, 0x00000 }; +static unsigned int cf003DC[] = { 0x003DD, 0x00000 }; +static unsigned int cf003DE[] = { 0x003DF, 0x00000 }; +static unsigned int cf003E0[] = { 0x003E1, 0x00000 }; +static unsigned int cf003E2[] = { 0x003E3, 0x00000 }; +static unsigned int cf003E4[] = { 0x003E5, 0x00000 }; +static unsigned int cf003E6[] = { 0x003E7, 0x00000 }; +static unsigned int cf003E8[] = { 0x003E9, 0x00000 }; +static unsigned int cf003EA[] = { 0x003EB, 0x00000 }; +static unsigned int cf003EC[] = { 0x003ED, 0x00000 }; +static unsigned int cf003EE[] = { 0x003EF, 0x00000 }; +static unsigned int cf003F0[] = { 0x003BA, 0x00000 }; +static unsigned int cf003F1[] = { 0x003C1, 0x00000 }; +static unsigned int cf003F4[] = { 0x003B8, 0x00000 }; +static unsigned int cf003F5[] = { 0x003B5, 0x00000 }; +static unsigned int cf003F7[] = { 0x003F8, 0x00000 }; +static unsigned int cf003F9[] = { 0x003F2, 0x00000 }; +static unsigned int cf003FA[] = { 0x003FB, 0x00000 }; +static unsigned int cf00400[] = { 0x00450, 0x00000 }; +static unsigned int cf00401[] = { 0x00451, 0x00000 }; +static unsigned int cf00402[] = { 0x00452, 0x00000 }; +static unsigned int cf00403[] = { 0x00453, 0x00000 }; +static unsigned int cf00404[] = { 0x00454, 0x00000 }; +static unsigned int cf00405[] = { 0x00455, 0x00000 }; +static unsigned int cf00406[] = { 0x00456, 0x00000 }; +static unsigned int cf00407[] = { 0x00457, 0x00000 }; +static unsigned int cf00408[] = { 0x00458, 0x00000 }; +static unsigned int cf00409[] = { 0x00459, 0x00000 }; +static unsigned int cf0040A[] = { 0x0045A, 0x00000 }; +static unsigned int cf0040B[] = { 0x0045B, 0x00000 }; +static unsigned int cf0040C[] = { 0x0045C, 0x00000 }; +static unsigned int cf0040D[] = { 0x0045D, 0x00000 }; +static unsigned int cf0040E[] = { 0x0045E, 0x00000 }; +static unsigned int cf0040F[] = { 0x0045F, 0x00000 }; +static unsigned int cf00410[] = { 0x00430, 0x00000 }; +static unsigned int cf00411[] = { 0x00431, 0x00000 }; +static unsigned int cf00412[] = { 0x00432, 0x00000 }; +static unsigned int cf00413[] = { 0x00433, 0x00000 }; +static unsigned int cf00414[] = { 0x00434, 0x00000 }; +static unsigned int cf00415[] = { 0x00435, 0x00000 }; +static unsigned int cf00416[] = { 0x00436, 0x00000 }; +static unsigned int cf00417[] = { 0x00437, 0x00000 }; +static unsigned int cf00418[] = { 0x00438, 0x00000 }; +static unsigned int cf00419[] = { 0x00439, 0x00000 }; +static unsigned int cf0041A[] = { 0x0043A, 0x00000 }; +static unsigned int cf0041B[] = { 0x0043B, 0x00000 }; +static unsigned int cf0041C[] = { 0x0043C, 0x00000 }; +static unsigned int cf0041D[] = { 0x0043D, 0x00000 }; +static unsigned int cf0041E[] = { 0x0043E, 0x00000 }; +static unsigned int cf0041F[] = { 0x0043F, 0x00000 }; +static unsigned int cf00420[] = { 0x00440, 0x00000 }; +static unsigned int cf00421[] = { 0x00441, 0x00000 }; +static unsigned int cf00422[] = { 0x00442, 0x00000 }; +static unsigned int cf00423[] = { 0x00443, 0x00000 }; +static unsigned int cf00424[] = { 0x00444, 0x00000 }; +static unsigned int cf00425[] = { 0x00445, 0x00000 }; +static unsigned int cf00426[] = { 0x00446, 0x00000 }; +static unsigned int cf00427[] = { 0x00447, 0x00000 }; +static unsigned int cf00428[] = { 0x00448, 0x00000 }; +static unsigned int cf00429[] = { 0x00449, 0x00000 }; +static unsigned int cf0042A[] = { 0x0044A, 0x00000 }; +static unsigned int cf0042B[] = { 0x0044B, 0x00000 }; +static unsigned int cf0042C[] = { 0x0044C, 0x00000 }; +static unsigned int cf0042D[] = { 0x0044D, 0x00000 }; +static unsigned int cf0042E[] = { 0x0044E, 0x00000 }; +static unsigned int cf0042F[] = { 0x0044F, 0x00000 }; +static unsigned int cf00460[] = { 0x00461, 0x00000 }; +static unsigned int cf00462[] = { 0x00463, 0x00000 }; +static unsigned int cf00464[] = { 0x00465, 0x00000 }; +static unsigned int cf00466[] = { 0x00467, 0x00000 }; +static unsigned int cf00468[] = { 0x00469, 0x00000 }; +static unsigned int cf0046A[] = { 0x0046B, 0x00000 }; +static unsigned int cf0046C[] = { 0x0046D, 0x00000 }; +static unsigned int cf0046E[] = { 0x0046F, 0x00000 }; +static unsigned int cf00470[] = { 0x00471, 0x00000 }; +static unsigned int cf00472[] = { 0x00473, 0x00000 }; +static unsigned int cf00474[] = { 0x00475, 0x00000 }; +static unsigned int cf00476[] = { 0x00477, 0x00000 }; +static unsigned int cf00478[] = { 0x00479, 0x00000 }; +static unsigned int cf0047A[] = { 0x0047B, 0x00000 }; +static unsigned int cf0047C[] = { 0x0047D, 0x00000 }; +static unsigned int cf0047E[] = { 0x0047F, 0x00000 }; +static unsigned int cf00480[] = { 0x00481, 0x00000 }; +static unsigned int cf0048A[] = { 0x0048B, 0x00000 }; +static unsigned int cf0048C[] = { 0x0048D, 0x00000 }; +static unsigned int cf0048E[] = { 0x0048F, 0x00000 }; +static unsigned int cf00490[] = { 0x00491, 0x00000 }; +static unsigned int cf00492[] = { 0x00493, 0x00000 }; +static unsigned int cf00494[] = { 0x00495, 0x00000 }; +static unsigned int cf00496[] = { 0x00497, 0x00000 }; +static unsigned int cf00498[] = { 0x00499, 0x00000 }; +static unsigned int cf0049A[] = { 0x0049B, 0x00000 }; +static unsigned int cf0049C[] = { 0x0049D, 0x00000 }; +static unsigned int cf0049E[] = { 0x0049F, 0x00000 }; +static unsigned int cf004A0[] = { 0x004A1, 0x00000 }; +static unsigned int cf004A2[] = { 0x004A3, 0x00000 }; +static unsigned int cf004A4[] = { 0x004A5, 0x00000 }; +static unsigned int cf004A6[] = { 0x004A7, 0x00000 }; +static unsigned int cf004A8[] = { 0x004A9, 0x00000 }; +static unsigned int cf004AA[] = { 0x004AB, 0x00000 }; +static unsigned int cf004AC[] = { 0x004AD, 0x00000 }; +static unsigned int cf004AE[] = { 0x004AF, 0x00000 }; +static unsigned int cf004B0[] = { 0x004B1, 0x00000 }; +static unsigned int cf004B2[] = { 0x004B3, 0x00000 }; +static unsigned int cf004B4[] = { 0x004B5, 0x00000 }; +static unsigned int cf004B6[] = { 0x004B7, 0x00000 }; +static unsigned int cf004B8[] = { 0x004B9, 0x00000 }; +static unsigned int cf004BA[] = { 0x004BB, 0x00000 }; +static unsigned int cf004BC[] = { 0x004BD, 0x00000 }; +static unsigned int cf004BE[] = { 0x004BF, 0x00000 }; +static unsigned int cf004C1[] = { 0x004C2, 0x00000 }; +static unsigned int cf004C3[] = { 0x004C4, 0x00000 }; +static unsigned int cf004C5[] = { 0x004C6, 0x00000 }; +static unsigned int cf004C7[] = { 0x004C8, 0x00000 }; +static unsigned int cf004C9[] = { 0x004CA, 0x00000 }; +static unsigned int cf004CB[] = { 0x004CC, 0x00000 }; +static unsigned int cf004CD[] = { 0x004CE, 0x00000 }; +static unsigned int cf004D0[] = { 0x004D1, 0x00000 }; +static unsigned int cf004D2[] = { 0x004D3, 0x00000 }; +static unsigned int cf004D4[] = { 0x004D5, 0x00000 }; +static unsigned int cf004D6[] = { 0x004D7, 0x00000 }; +static unsigned int cf004D8[] = { 0x004D9, 0x00000 }; +static unsigned int cf004DA[] = { 0x004DB, 0x00000 }; +static unsigned int cf004DC[] = { 0x004DD, 0x00000 }; +static unsigned int cf004DE[] = { 0x004DF, 0x00000 }; +static unsigned int cf004E0[] = { 0x004E1, 0x00000 }; +static unsigned int cf004E2[] = { 0x004E3, 0x00000 }; +static unsigned int cf004E4[] = { 0x004E5, 0x00000 }; +static unsigned int cf004E6[] = { 0x004E7, 0x00000 }; +static unsigned int cf004E8[] = { 0x004E9, 0x00000 }; +static unsigned int cf004EA[] = { 0x004EB, 0x00000 }; +static unsigned int cf004EC[] = { 0x004ED, 0x00000 }; +static unsigned int cf004EE[] = { 0x004EF, 0x00000 }; +static unsigned int cf004F0[] = { 0x004F1, 0x00000 }; +static unsigned int cf004F2[] = { 0x004F3, 0x00000 }; +static unsigned int cf004F4[] = { 0x004F5, 0x00000 }; +static unsigned int cf004F6[] = { 0x004F7, 0x00000 }; +static unsigned int cf004F8[] = { 0x004F9, 0x00000 }; +static unsigned int cf00500[] = { 0x00501, 0x00000 }; +static unsigned int cf00502[] = { 0x00503, 0x00000 }; +static unsigned int cf00504[] = { 0x00505, 0x00000 }; +static unsigned int cf00506[] = { 0x00507, 0x00000 }; +static unsigned int cf00508[] = { 0x00509, 0x00000 }; +static unsigned int cf0050A[] = { 0x0050B, 0x00000 }; +static unsigned int cf0050C[] = { 0x0050D, 0x00000 }; +static unsigned int cf0050E[] = { 0x0050F, 0x00000 }; +static unsigned int cf00531[] = { 0x00561, 0x00000 }; +static unsigned int cf00532[] = { 0x00562, 0x00000 }; +static unsigned int cf00533[] = { 0x00563, 0x00000 }; +static unsigned int cf00534[] = { 0x00564, 0x00000 }; +static unsigned int cf00535[] = { 0x00565, 0x00000 }; +static unsigned int cf00536[] = { 0x00566, 0x00000 }; +static unsigned int cf00537[] = { 0x00567, 0x00000 }; +static unsigned int cf00538[] = { 0x00568, 0x00000 }; +static unsigned int cf00539[] = { 0x00569, 0x00000 }; +static unsigned int cf0053A[] = { 0x0056A, 0x00000 }; +static unsigned int cf0053B[] = { 0x0056B, 0x00000 }; +static unsigned int cf0053C[] = { 0x0056C, 0x00000 }; +static unsigned int cf0053D[] = { 0x0056D, 0x00000 }; +static unsigned int cf0053E[] = { 0x0056E, 0x00000 }; +static unsigned int cf0053F[] = { 0x0056F, 0x00000 }; +static unsigned int cf00540[] = { 0x00570, 0x00000 }; +static unsigned int cf00541[] = { 0x00571, 0x00000 }; +static unsigned int cf00542[] = { 0x00572, 0x00000 }; +static unsigned int cf00543[] = { 0x00573, 0x00000 }; +static unsigned int cf00544[] = { 0x00574, 0x00000 }; +static unsigned int cf00545[] = { 0x00575, 0x00000 }; +static unsigned int cf00546[] = { 0x00576, 0x00000 }; +static unsigned int cf00547[] = { 0x00577, 0x00000 }; +static unsigned int cf00548[] = { 0x00578, 0x00000 }; +static unsigned int cf00549[] = { 0x00579, 0x00000 }; +static unsigned int cf0054A[] = { 0x0057A, 0x00000 }; +static unsigned int cf0054B[] = { 0x0057B, 0x00000 }; +static unsigned int cf0054C[] = { 0x0057C, 0x00000 }; +static unsigned int cf0054D[] = { 0x0057D, 0x00000 }; +static unsigned int cf0054E[] = { 0x0057E, 0x00000 }; +static unsigned int cf0054F[] = { 0x0057F, 0x00000 }; +static unsigned int cf00550[] = { 0x00580, 0x00000 }; +static unsigned int cf00551[] = { 0x00581, 0x00000 }; +static unsigned int cf00552[] = { 0x00582, 0x00000 }; +static unsigned int cf00553[] = { 0x00583, 0x00000 }; +static unsigned int cf00554[] = { 0x00584, 0x00000 }; +static unsigned int cf00555[] = { 0x00585, 0x00000 }; +static unsigned int cf00556[] = { 0x00586, 0x00000 }; +static unsigned int cf00587[] = { 0x00565, 0x00582, 0x00000 }; +static unsigned int cf010A0[] = { 0x02D00, 0x00000 }; +static unsigned int cf010A1[] = { 0x02D01, 0x00000 }; +static unsigned int cf010A2[] = { 0x02D02, 0x00000 }; +static unsigned int cf010A3[] = { 0x02D03, 0x00000 }; +static unsigned int cf010A4[] = { 0x02D04, 0x00000 }; +static unsigned int cf010A5[] = { 0x02D05, 0x00000 }; +static unsigned int cf010A6[] = { 0x02D06, 0x00000 }; +static unsigned int cf010A7[] = { 0x02D07, 0x00000 }; +static unsigned int cf010A8[] = { 0x02D08, 0x00000 }; +static unsigned int cf010A9[] = { 0x02D09, 0x00000 }; +static unsigned int cf010AA[] = { 0x02D0A, 0x00000 }; +static unsigned int cf010AB[] = { 0x02D0B, 0x00000 }; +static unsigned int cf010AC[] = { 0x02D0C, 0x00000 }; +static unsigned int cf010AD[] = { 0x02D0D, 0x00000 }; +static unsigned int cf010AE[] = { 0x02D0E, 0x00000 }; +static unsigned int cf010AF[] = { 0x02D0F, 0x00000 }; +static unsigned int cf010B0[] = { 0x02D10, 0x00000 }; +static unsigned int cf010B1[] = { 0x02D11, 0x00000 }; +static unsigned int cf010B2[] = { 0x02D12, 0x00000 }; +static unsigned int cf010B3[] = { 0x02D13, 0x00000 }; +static unsigned int cf010B4[] = { 0x02D14, 0x00000 }; +static unsigned int cf010B5[] = { 0x02D15, 0x00000 }; +static unsigned int cf010B6[] = { 0x02D16, 0x00000 }; +static unsigned int cf010B7[] = { 0x02D17, 0x00000 }; +static unsigned int cf010B8[] = { 0x02D18, 0x00000 }; +static unsigned int cf010B9[] = { 0x02D19, 0x00000 }; +static unsigned int cf010BA[] = { 0x02D1A, 0x00000 }; +static unsigned int cf010BB[] = { 0x02D1B, 0x00000 }; +static unsigned int cf010BC[] = { 0x02D1C, 0x00000 }; +static unsigned int cf010BD[] = { 0x02D1D, 0x00000 }; +static unsigned int cf010BE[] = { 0x02D1E, 0x00000 }; +static unsigned int cf010BF[] = { 0x02D1F, 0x00000 }; +static unsigned int cf010C0[] = { 0x02D20, 0x00000 }; +static unsigned int cf010C1[] = { 0x02D21, 0x00000 }; +static unsigned int cf010C2[] = { 0x02D22, 0x00000 }; +static unsigned int cf010C3[] = { 0x02D23, 0x00000 }; +static unsigned int cf010C4[] = { 0x02D24, 0x00000 }; +static unsigned int cf010C5[] = { 0x02D25, 0x00000 }; +static unsigned int cf01E00[] = { 0x01E01, 0x00000 }; +static unsigned int cf01E02[] = { 0x01E03, 0x00000 }; +static unsigned int cf01E04[] = { 0x01E05, 0x00000 }; +static unsigned int cf01E06[] = { 0x01E07, 0x00000 }; +static unsigned int cf01E08[] = { 0x01E09, 0x00000 }; +static unsigned int cf01E0A[] = { 0x01E0B, 0x00000 }; +static unsigned int cf01E0C[] = { 0x01E0D, 0x00000 }; +static unsigned int cf01E0E[] = { 0x01E0F, 0x00000 }; +static unsigned int cf01E10[] = { 0x01E11, 0x00000 }; +static unsigned int cf01E12[] = { 0x01E13, 0x00000 }; +static unsigned int cf01E14[] = { 0x01E15, 0x00000 }; +static unsigned int cf01E16[] = { 0x01E17, 0x00000 }; +static unsigned int cf01E18[] = { 0x01E19, 0x00000 }; +static unsigned int cf01E1A[] = { 0x01E1B, 0x00000 }; +static unsigned int cf01E1C[] = { 0x01E1D, 0x00000 }; +static unsigned int cf01E1E[] = { 0x01E1F, 0x00000 }; +static unsigned int cf01E20[] = { 0x01E21, 0x00000 }; +static unsigned int cf01E22[] = { 0x01E23, 0x00000 }; +static unsigned int cf01E24[] = { 0x01E25, 0x00000 }; +static unsigned int cf01E26[] = { 0x01E27, 0x00000 }; +static unsigned int cf01E28[] = { 0x01E29, 0x00000 }; +static unsigned int cf01E2A[] = { 0x01E2B, 0x00000 }; +static unsigned int cf01E2C[] = { 0x01E2D, 0x00000 }; +static unsigned int cf01E2E[] = { 0x01E2F, 0x00000 }; +static unsigned int cf01E30[] = { 0x01E31, 0x00000 }; +static unsigned int cf01E32[] = { 0x01E33, 0x00000 }; +static unsigned int cf01E34[] = { 0x01E35, 0x00000 }; +static unsigned int cf01E36[] = { 0x01E37, 0x00000 }; +static unsigned int cf01E38[] = { 0x01E39, 0x00000 }; +static unsigned int cf01E3A[] = { 0x01E3B, 0x00000 }; +static unsigned int cf01E3C[] = { 0x01E3D, 0x00000 }; +static unsigned int cf01E3E[] = { 0x01E3F, 0x00000 }; +static unsigned int cf01E40[] = { 0x01E41, 0x00000 }; +static unsigned int cf01E42[] = { 0x01E43, 0x00000 }; +static unsigned int cf01E44[] = { 0x01E45, 0x00000 }; +static unsigned int cf01E46[] = { 0x01E47, 0x00000 }; +static unsigned int cf01E48[] = { 0x01E49, 0x00000 }; +static unsigned int cf01E4A[] = { 0x01E4B, 0x00000 }; +static unsigned int cf01E4C[] = { 0x01E4D, 0x00000 }; +static unsigned int cf01E4E[] = { 0x01E4F, 0x00000 }; +static unsigned int cf01E50[] = { 0x01E51, 0x00000 }; +static unsigned int cf01E52[] = { 0x01E53, 0x00000 }; +static unsigned int cf01E54[] = { 0x01E55, 0x00000 }; +static unsigned int cf01E56[] = { 0x01E57, 0x00000 }; +static unsigned int cf01E58[] = { 0x01E59, 0x00000 }; +static unsigned int cf01E5A[] = { 0x01E5B, 0x00000 }; +static unsigned int cf01E5C[] = { 0x01E5D, 0x00000 }; +static unsigned int cf01E5E[] = { 0x01E5F, 0x00000 }; +static unsigned int cf01E60[] = { 0x01E61, 0x00000 }; +static unsigned int cf01E62[] = { 0x01E63, 0x00000 }; +static unsigned int cf01E64[] = { 0x01E65, 0x00000 }; +static unsigned int cf01E66[] = { 0x01E67, 0x00000 }; +static unsigned int cf01E68[] = { 0x01E69, 0x00000 }; +static unsigned int cf01E6A[] = { 0x01E6B, 0x00000 }; +static unsigned int cf01E6C[] = { 0x01E6D, 0x00000 }; +static unsigned int cf01E6E[] = { 0x01E6F, 0x00000 }; +static unsigned int cf01E70[] = { 0x01E71, 0x00000 }; +static unsigned int cf01E72[] = { 0x01E73, 0x00000 }; +static unsigned int cf01E74[] = { 0x01E75, 0x00000 }; +static unsigned int cf01E76[] = { 0x01E77, 0x00000 }; +static unsigned int cf01E78[] = { 0x01E79, 0x00000 }; +static unsigned int cf01E7A[] = { 0x01E7B, 0x00000 }; +static unsigned int cf01E7C[] = { 0x01E7D, 0x00000 }; +static unsigned int cf01E7E[] = { 0x01E7F, 0x00000 }; +static unsigned int cf01E80[] = { 0x01E81, 0x00000 }; +static unsigned int cf01E82[] = { 0x01E83, 0x00000 }; +static unsigned int cf01E84[] = { 0x01E85, 0x00000 }; +static unsigned int cf01E86[] = { 0x01E87, 0x00000 }; +static unsigned int cf01E88[] = { 0x01E89, 0x00000 }; +static unsigned int cf01E8A[] = { 0x01E8B, 0x00000 }; +static unsigned int cf01E8C[] = { 0x01E8D, 0x00000 }; +static unsigned int cf01E8E[] = { 0x01E8F, 0x00000 }; +static unsigned int cf01E90[] = { 0x01E91, 0x00000 }; +static unsigned int cf01E92[] = { 0x01E93, 0x00000 }; +static unsigned int cf01E94[] = { 0x01E95, 0x00000 }; +static unsigned int cf01E96[] = { 0x00068, 0x00331, 0x00000 }; +static unsigned int cf01E97[] = { 0x00074, 0x00308, 0x00000 }; +static unsigned int cf01E98[] = { 0x00077, 0x0030A, 0x00000 }; +static unsigned int cf01E99[] = { 0x00079, 0x0030A, 0x00000 }; +static unsigned int cf01E9A[] = { 0x00061, 0x002BE, 0x00000 }; +static unsigned int cf01E9B[] = { 0x01E61, 0x00000 }; +static unsigned int cf01EA0[] = { 0x01EA1, 0x00000 }; +static unsigned int cf01EA2[] = { 0x01EA3, 0x00000 }; +static unsigned int cf01EA4[] = { 0x01EA5, 0x00000 }; +static unsigned int cf01EA6[] = { 0x01EA7, 0x00000 }; +static unsigned int cf01EA8[] = { 0x01EA9, 0x00000 }; +static unsigned int cf01EAA[] = { 0x01EAB, 0x00000 }; +static unsigned int cf01EAC[] = { 0x01EAD, 0x00000 }; +static unsigned int cf01EAE[] = { 0x01EAF, 0x00000 }; +static unsigned int cf01EB0[] = { 0x01EB1, 0x00000 }; +static unsigned int cf01EB2[] = { 0x01EB3, 0x00000 }; +static unsigned int cf01EB4[] = { 0x01EB5, 0x00000 }; +static unsigned int cf01EB6[] = { 0x01EB7, 0x00000 }; +static unsigned int cf01EB8[] = { 0x01EB9, 0x00000 }; +static unsigned int cf01EBA[] = { 0x01EBB, 0x00000 }; +static unsigned int cf01EBC[] = { 0x01EBD, 0x00000 }; +static unsigned int cf01EBE[] = { 0x01EBF, 0x00000 }; +static unsigned int cf01EC0[] = { 0x01EC1, 0x00000 }; +static unsigned int cf01EC2[] = { 0x01EC3, 0x00000 }; +static unsigned int cf01EC4[] = { 0x01EC5, 0x00000 }; +static unsigned int cf01EC6[] = { 0x01EC7, 0x00000 }; +static unsigned int cf01EC8[] = { 0x01EC9, 0x00000 }; +static unsigned int cf01ECA[] = { 0x01ECB, 0x00000 }; +static unsigned int cf01ECC[] = { 0x01ECD, 0x00000 }; +static unsigned int cf01ECE[] = { 0x01ECF, 0x00000 }; +static unsigned int cf01ED0[] = { 0x01ED1, 0x00000 }; +static unsigned int cf01ED2[] = { 0x01ED3, 0x00000 }; +static unsigned int cf01ED4[] = { 0x01ED5, 0x00000 }; +static unsigned int cf01ED6[] = { 0x01ED7, 0x00000 }; +static unsigned int cf01ED8[] = { 0x01ED9, 0x00000 }; +static unsigned int cf01EDA[] = { 0x01EDB, 0x00000 }; +static unsigned int cf01EDC[] = { 0x01EDD, 0x00000 }; +static unsigned int cf01EDE[] = { 0x01EDF, 0x00000 }; +static unsigned int cf01EE0[] = { 0x01EE1, 0x00000 }; +static unsigned int cf01EE2[] = { 0x01EE3, 0x00000 }; +static unsigned int cf01EE4[] = { 0x01EE5, 0x00000 }; +static unsigned int cf01EE6[] = { 0x01EE7, 0x00000 }; +static unsigned int cf01EE8[] = { 0x01EE9, 0x00000 }; +static unsigned int cf01EEA[] = { 0x01EEB, 0x00000 }; +static unsigned int cf01EEC[] = { 0x01EED, 0x00000 }; +static unsigned int cf01EEE[] = { 0x01EEF, 0x00000 }; +static unsigned int cf01EF0[] = { 0x01EF1, 0x00000 }; +static unsigned int cf01EF2[] = { 0x01EF3, 0x00000 }; +static unsigned int cf01EF4[] = { 0x01EF5, 0x00000 }; +static unsigned int cf01EF6[] = { 0x01EF7, 0x00000 }; +static unsigned int cf01EF8[] = { 0x01EF9, 0x00000 }; +static unsigned int cf01F08[] = { 0x01F00, 0x00000 }; +static unsigned int cf01F09[] = { 0x01F01, 0x00000 }; +static unsigned int cf01F0A[] = { 0x01F02, 0x00000 }; +static unsigned int cf01F0B[] = { 0x01F03, 0x00000 }; +static unsigned int cf01F0C[] = { 0x01F04, 0x00000 }; +static unsigned int cf01F0D[] = { 0x01F05, 0x00000 }; +static unsigned int cf01F0E[] = { 0x01F06, 0x00000 }; +static unsigned int cf01F0F[] = { 0x01F07, 0x00000 }; +static unsigned int cf01F18[] = { 0x01F10, 0x00000 }; +static unsigned int cf01F19[] = { 0x01F11, 0x00000 }; +static unsigned int cf01F1A[] = { 0x01F12, 0x00000 }; +static unsigned int cf01F1B[] = { 0x01F13, 0x00000 }; +static unsigned int cf01F1C[] = { 0x01F14, 0x00000 }; +static unsigned int cf01F1D[] = { 0x01F15, 0x00000 }; +static unsigned int cf01F28[] = { 0x01F20, 0x00000 }; +static unsigned int cf01F29[] = { 0x01F21, 0x00000 }; +static unsigned int cf01F2A[] = { 0x01F22, 0x00000 }; +static unsigned int cf01F2B[] = { 0x01F23, 0x00000 }; +static unsigned int cf01F2C[] = { 0x01F24, 0x00000 }; +static unsigned int cf01F2D[] = { 0x01F25, 0x00000 }; +static unsigned int cf01F2E[] = { 0x01F26, 0x00000 }; +static unsigned int cf01F2F[] = { 0x01F27, 0x00000 }; +static unsigned int cf01F38[] = { 0x01F30, 0x00000 }; +static unsigned int cf01F39[] = { 0x01F31, 0x00000 }; +static unsigned int cf01F3A[] = { 0x01F32, 0x00000 }; +static unsigned int cf01F3B[] = { 0x01F33, 0x00000 }; +static unsigned int cf01F3C[] = { 0x01F34, 0x00000 }; +static unsigned int cf01F3D[] = { 0x01F35, 0x00000 }; +static unsigned int cf01F3E[] = { 0x01F36, 0x00000 }; +static unsigned int cf01F3F[] = { 0x01F37, 0x00000 }; +static unsigned int cf01F48[] = { 0x01F40, 0x00000 }; +static unsigned int cf01F49[] = { 0x01F41, 0x00000 }; +static unsigned int cf01F4A[] = { 0x01F42, 0x00000 }; +static unsigned int cf01F4B[] = { 0x01F43, 0x00000 }; +static unsigned int cf01F4C[] = { 0x01F44, 0x00000 }; +static unsigned int cf01F4D[] = { 0x01F45, 0x00000 }; +static unsigned int cf01F50[] = { 0x003C5, 0x00313, 0x00000 }; +static unsigned int cf01F52[] = { 0x003C5, 0x00313, 0x00300, 0x00000 }; +static unsigned int cf01F54[] = { 0x003C5, 0x00313, 0x00301, 0x00000 }; +static unsigned int cf01F56[] = { 0x003C5, 0x00313, 0x00342, 0x00000 }; +static unsigned int cf01F59[] = { 0x01F51, 0x00000 }; +static unsigned int cf01F5B[] = { 0x01F53, 0x00000 }; +static unsigned int cf01F5D[] = { 0x01F55, 0x00000 }; +static unsigned int cf01F5F[] = { 0x01F57, 0x00000 }; +static unsigned int cf01F68[] = { 0x01F60, 0x00000 }; +static unsigned int cf01F69[] = { 0x01F61, 0x00000 }; +static unsigned int cf01F6A[] = { 0x01F62, 0x00000 }; +static unsigned int cf01F6B[] = { 0x01F63, 0x00000 }; +static unsigned int cf01F6C[] = { 0x01F64, 0x00000 }; +static unsigned int cf01F6D[] = { 0x01F65, 0x00000 }; +static unsigned int cf01F6E[] = { 0x01F66, 0x00000 }; +static unsigned int cf01F6F[] = { 0x01F67, 0x00000 }; +static unsigned int cf01F80[] = { 0x01F00, 0x003B9, 0x00000 }; +static unsigned int cf01F81[] = { 0x01F01, 0x003B9, 0x00000 }; +static unsigned int cf01F82[] = { 0x01F02, 0x003B9, 0x00000 }; +static unsigned int cf01F83[] = { 0x01F03, 0x003B9, 0x00000 }; +static unsigned int cf01F84[] = { 0x01F04, 0x003B9, 0x00000 }; +static unsigned int cf01F85[] = { 0x01F05, 0x003B9, 0x00000 }; +static unsigned int cf01F86[] = { 0x01F06, 0x003B9, 0x00000 }; +static unsigned int cf01F87[] = { 0x01F07, 0x003B9, 0x00000 }; +static unsigned int cf01F88[] = { 0x01F00, 0x003B9, 0x00000 }; +static unsigned int cf01F89[] = { 0x01F01, 0x003B9, 0x00000 }; +static unsigned int cf01F8A[] = { 0x01F02, 0x003B9, 0x00000 }; +static unsigned int cf01F8B[] = { 0x01F03, 0x003B9, 0x00000 }; +static unsigned int cf01F8C[] = { 0x01F04, 0x003B9, 0x00000 }; +static unsigned int cf01F8D[] = { 0x01F05, 0x003B9, 0x00000 }; +static unsigned int cf01F8E[] = { 0x01F06, 0x003B9, 0x00000 }; +static unsigned int cf01F8F[] = { 0x01F07, 0x003B9, 0x00000 }; +static unsigned int cf01F90[] = { 0x01F20, 0x003B9, 0x00000 }; +static unsigned int cf01F91[] = { 0x01F21, 0x003B9, 0x00000 }; +static unsigned int cf01F92[] = { 0x01F22, 0x003B9, 0x00000 }; +static unsigned int cf01F93[] = { 0x01F23, 0x003B9, 0x00000 }; +static unsigned int cf01F94[] = { 0x01F24, 0x003B9, 0x00000 }; +static unsigned int cf01F95[] = { 0x01F25, 0x003B9, 0x00000 }; +static unsigned int cf01F96[] = { 0x01F26, 0x003B9, 0x00000 }; +static unsigned int cf01F97[] = { 0x01F27, 0x003B9, 0x00000 }; +static unsigned int cf01F98[] = { 0x01F20, 0x003B9, 0x00000 }; +static unsigned int cf01F99[] = { 0x01F21, 0x003B9, 0x00000 }; +static unsigned int cf01F9A[] = { 0x01F22, 0x003B9, 0x00000 }; +static unsigned int cf01F9B[] = { 0x01F23, 0x003B9, 0x00000 }; +static unsigned int cf01F9C[] = { 0x01F24, 0x003B9, 0x00000 }; +static unsigned int cf01F9D[] = { 0x01F25, 0x003B9, 0x00000 }; +static unsigned int cf01F9E[] = { 0x01F26, 0x003B9, 0x00000 }; +static unsigned int cf01F9F[] = { 0x01F27, 0x003B9, 0x00000 }; +static unsigned int cf01FA0[] = { 0x01F60, 0x003B9, 0x00000 }; +static unsigned int cf01FA1[] = { 0x01F61, 0x003B9, 0x00000 }; +static unsigned int cf01FA2[] = { 0x01F62, 0x003B9, 0x00000 }; +static unsigned int cf01FA3[] = { 0x01F63, 0x003B9, 0x00000 }; +static unsigned int cf01FA4[] = { 0x01F64, 0x003B9, 0x00000 }; +static unsigned int cf01FA5[] = { 0x01F65, 0x003B9, 0x00000 }; +static unsigned int cf01FA6[] = { 0x01F66, 0x003B9, 0x00000 }; +static unsigned int cf01FA7[] = { 0x01F67, 0x003B9, 0x00000 }; +static unsigned int cf01FA8[] = { 0x01F60, 0x003B9, 0x00000 }; +static unsigned int cf01FA9[] = { 0x01F61, 0x003B9, 0x00000 }; +static unsigned int cf01FAA[] = { 0x01F62, 0x003B9, 0x00000 }; +static unsigned int cf01FAB[] = { 0x01F63, 0x003B9, 0x00000 }; +static unsigned int cf01FAC[] = { 0x01F64, 0x003B9, 0x00000 }; +static unsigned int cf01FAD[] = { 0x01F65, 0x003B9, 0x00000 }; +static unsigned int cf01FAE[] = { 0x01F66, 0x003B9, 0x00000 }; +static unsigned int cf01FAF[] = { 0x01F67, 0x003B9, 0x00000 }; +static unsigned int cf01FB2[] = { 0x01F70, 0x003B9, 0x00000 }; +static unsigned int cf01FB3[] = { 0x003B1, 0x003B9, 0x00000 }; +static unsigned int cf01FB4[] = { 0x003AC, 0x003B9, 0x00000 }; +static unsigned int cf01FB6[] = { 0x003B1, 0x00342, 0x00000 }; +static unsigned int cf01FB7[] = { 0x003B1, 0x00342, 0x003B9, 0x00000 }; +static unsigned int cf01FB8[] = { 0x01FB0, 0x00000 }; +static unsigned int cf01FB9[] = { 0x01FB1, 0x00000 }; +static unsigned int cf01FBA[] = { 0x01F70, 0x00000 }; +static unsigned int cf01FBB[] = { 0x01F71, 0x00000 }; +static unsigned int cf01FBC[] = { 0x003B1, 0x003B9, 0x00000 }; +static unsigned int cf01FBE[] = { 0x003B9, 0x00000 }; +static unsigned int cf01FC2[] = { 0x01F74, 0x003B9, 0x00000 }; +static unsigned int cf01FC3[] = { 0x003B7, 0x003B9, 0x00000 }; +static unsigned int cf01FC4[] = { 0x003AE, 0x003B9, 0x00000 }; +static unsigned int cf01FC6[] = { 0x003B7, 0x00342, 0x00000 }; +static unsigned int cf01FC7[] = { 0x003B7, 0x00342, 0x003B9, 0x00000 }; +static unsigned int cf01FC8[] = { 0x01F72, 0x00000 }; +static unsigned int cf01FC9[] = { 0x01F73, 0x00000 }; +static unsigned int cf01FCA[] = { 0x01F74, 0x00000 }; +static unsigned int cf01FCB[] = { 0x01F75, 0x00000 }; +static unsigned int cf01FCC[] = { 0x003B7, 0x003B9, 0x00000 }; +static unsigned int cf01FD2[] = { 0x003B9, 0x00308, 0x00300, 0x00000 }; +static unsigned int cf01FD3[] = { 0x003B9, 0x00308, 0x00301, 0x00000 }; +static unsigned int cf01FD6[] = { 0x003B9, 0x00342, 0x00000 }; +static unsigned int cf01FD7[] = { 0x003B9, 0x00308, 0x00342, 0x00000 }; +static unsigned int cf01FD8[] = { 0x01FD0, 0x00000 }; +static unsigned int cf01FD9[] = { 0x01FD1, 0x00000 }; +static unsigned int cf01FDA[] = { 0x01F76, 0x00000 }; +static unsigned int cf01FDB[] = { 0x01F77, 0x00000 }; +static unsigned int cf01FE2[] = { 0x003C5, 0x00308, 0x00300, 0x00000 }; +static unsigned int cf01FE3[] = { 0x003C5, 0x00308, 0x00301, 0x00000 }; +static unsigned int cf01FE4[] = { 0x003C1, 0x00313, 0x00000 }; +static unsigned int cf01FE6[] = { 0x003C5, 0x00342, 0x00000 }; +static unsigned int cf01FE7[] = { 0x003C5, 0x00308, 0x00342, 0x00000 }; +static unsigned int cf01FE8[] = { 0x01FE0, 0x00000 }; +static unsigned int cf01FE9[] = { 0x01FE1, 0x00000 }; +static unsigned int cf01FEA[] = { 0x01F7A, 0x00000 }; +static unsigned int cf01FEB[] = { 0x01F7B, 0x00000 }; +static unsigned int cf01FEC[] = { 0x01FE5, 0x00000 }; +static unsigned int cf01FF2[] = { 0x01F7C, 0x003B9, 0x00000 }; +static unsigned int cf01FF3[] = { 0x003C9, 0x003B9, 0x00000 }; +static unsigned int cf01FF4[] = { 0x003CE, 0x003B9, 0x00000 }; +static unsigned int cf01FF6[] = { 0x003C9, 0x00342, 0x00000 }; +static unsigned int cf01FF7[] = { 0x003C9, 0x00342, 0x003B9, 0x00000 }; +static unsigned int cf01FF8[] = { 0x01F78, 0x00000 }; +static unsigned int cf01FF9[] = { 0x01F79, 0x00000 }; +static unsigned int cf01FFA[] = { 0x01F7C, 0x00000 }; +static unsigned int cf01FFB[] = { 0x01F7D, 0x00000 }; +static unsigned int cf01FFC[] = { 0x003C9, 0x003B9, 0x00000 }; +static unsigned int cf02126[] = { 0x003C9, 0x00000 }; +static unsigned int cf0212A[] = { 0x0006B, 0x00000 }; +static unsigned int cf0212B[] = { 0x000E5, 0x00000 }; +static unsigned int cf02160[] = { 0x02170, 0x00000 }; +static unsigned int cf02161[] = { 0x02171, 0x00000 }; +static unsigned int cf02162[] = { 0x02172, 0x00000 }; +static unsigned int cf02163[] = { 0x02173, 0x00000 }; +static unsigned int cf02164[] = { 0x02174, 0x00000 }; +static unsigned int cf02165[] = { 0x02175, 0x00000 }; +static unsigned int cf02166[] = { 0x02176, 0x00000 }; +static unsigned int cf02167[] = { 0x02177, 0x00000 }; +static unsigned int cf02168[] = { 0x02178, 0x00000 }; +static unsigned int cf02169[] = { 0x02179, 0x00000 }; +static unsigned int cf0216A[] = { 0x0217A, 0x00000 }; +static unsigned int cf0216B[] = { 0x0217B, 0x00000 }; +static unsigned int cf0216C[] = { 0x0217C, 0x00000 }; +static unsigned int cf0216D[] = { 0x0217D, 0x00000 }; +static unsigned int cf0216E[] = { 0x0217E, 0x00000 }; +static unsigned int cf0216F[] = { 0x0217F, 0x00000 }; +static unsigned int cf024B6[] = { 0x024D0, 0x00000 }; +static unsigned int cf024B7[] = { 0x024D1, 0x00000 }; +static unsigned int cf024B8[] = { 0x024D2, 0x00000 }; +static unsigned int cf024B9[] = { 0x024D3, 0x00000 }; +static unsigned int cf024BA[] = { 0x024D4, 0x00000 }; +static unsigned int cf024BB[] = { 0x024D5, 0x00000 }; +static unsigned int cf024BC[] = { 0x024D6, 0x00000 }; +static unsigned int cf024BD[] = { 0x024D7, 0x00000 }; +static unsigned int cf024BE[] = { 0x024D8, 0x00000 }; +static unsigned int cf024BF[] = { 0x024D9, 0x00000 }; +static unsigned int cf024C0[] = { 0x024DA, 0x00000 }; +static unsigned int cf024C1[] = { 0x024DB, 0x00000 }; +static unsigned int cf024C2[] = { 0x024DC, 0x00000 }; +static unsigned int cf024C3[] = { 0x024DD, 0x00000 }; +static unsigned int cf024C4[] = { 0x024DE, 0x00000 }; +static unsigned int cf024C5[] = { 0x024DF, 0x00000 }; +static unsigned int cf024C6[] = { 0x024E0, 0x00000 }; +static unsigned int cf024C7[] = { 0x024E1, 0x00000 }; +static unsigned int cf024C8[] = { 0x024E2, 0x00000 }; +static unsigned int cf024C9[] = { 0x024E3, 0x00000 }; +static unsigned int cf024CA[] = { 0x024E4, 0x00000 }; +static unsigned int cf024CB[] = { 0x024E5, 0x00000 }; +static unsigned int cf024CC[] = { 0x024E6, 0x00000 }; +static unsigned int cf024CD[] = { 0x024E7, 0x00000 }; +static unsigned int cf024CE[] = { 0x024E8, 0x00000 }; +static unsigned int cf024CF[] = { 0x024E9, 0x00000 }; +static unsigned int cf02C00[] = { 0x02C30, 0x00000 }; +static unsigned int cf02C01[] = { 0x02C31, 0x00000 }; +static unsigned int cf02C02[] = { 0x02C32, 0x00000 }; +static unsigned int cf02C03[] = { 0x02C33, 0x00000 }; +static unsigned int cf02C04[] = { 0x02C34, 0x00000 }; +static unsigned int cf02C05[] = { 0x02C35, 0x00000 }; +static unsigned int cf02C06[] = { 0x02C36, 0x00000 }; +static unsigned int cf02C07[] = { 0x02C37, 0x00000 }; +static unsigned int cf02C08[] = { 0x02C38, 0x00000 }; +static unsigned int cf02C09[] = { 0x02C39, 0x00000 }; +static unsigned int cf02C0A[] = { 0x02C3A, 0x00000 }; +static unsigned int cf02C0B[] = { 0x02C3B, 0x00000 }; +static unsigned int cf02C0C[] = { 0x02C3C, 0x00000 }; +static unsigned int cf02C0D[] = { 0x02C3D, 0x00000 }; +static unsigned int cf02C0E[] = { 0x02C3E, 0x00000 }; +static unsigned int cf02C0F[] = { 0x02C3F, 0x00000 }; +static unsigned int cf02C10[] = { 0x02C40, 0x00000 }; +static unsigned int cf02C11[] = { 0x02C41, 0x00000 }; +static unsigned int cf02C12[] = { 0x02C42, 0x00000 }; +static unsigned int cf02C13[] = { 0x02C43, 0x00000 }; +static unsigned int cf02C14[] = { 0x02C44, 0x00000 }; +static unsigned int cf02C15[] = { 0x02C45, 0x00000 }; +static unsigned int cf02C16[] = { 0x02C46, 0x00000 }; +static unsigned int cf02C17[] = { 0x02C47, 0x00000 }; +static unsigned int cf02C18[] = { 0x02C48, 0x00000 }; +static unsigned int cf02C19[] = { 0x02C49, 0x00000 }; +static unsigned int cf02C1A[] = { 0x02C4A, 0x00000 }; +static unsigned int cf02C1B[] = { 0x02C4B, 0x00000 }; +static unsigned int cf02C1C[] = { 0x02C4C, 0x00000 }; +static unsigned int cf02C1D[] = { 0x02C4D, 0x00000 }; +static unsigned int cf02C1E[] = { 0x02C4E, 0x00000 }; +static unsigned int cf02C1F[] = { 0x02C4F, 0x00000 }; +static unsigned int cf02C20[] = { 0x02C50, 0x00000 }; +static unsigned int cf02C21[] = { 0x02C51, 0x00000 }; +static unsigned int cf02C22[] = { 0x02C52, 0x00000 }; +static unsigned int cf02C23[] = { 0x02C53, 0x00000 }; +static unsigned int cf02C24[] = { 0x02C54, 0x00000 }; +static unsigned int cf02C25[] = { 0x02C55, 0x00000 }; +static unsigned int cf02C26[] = { 0x02C56, 0x00000 }; +static unsigned int cf02C27[] = { 0x02C57, 0x00000 }; +static unsigned int cf02C28[] = { 0x02C58, 0x00000 }; +static unsigned int cf02C29[] = { 0x02C59, 0x00000 }; +static unsigned int cf02C2A[] = { 0x02C5A, 0x00000 }; +static unsigned int cf02C2B[] = { 0x02C5B, 0x00000 }; +static unsigned int cf02C2C[] = { 0x02C5C, 0x00000 }; +static unsigned int cf02C2D[] = { 0x02C5D, 0x00000 }; +static unsigned int cf02C2E[] = { 0x02C5E, 0x00000 }; +static unsigned int cf02C80[] = { 0x02C81, 0x00000 }; +static unsigned int cf02C82[] = { 0x02C83, 0x00000 }; +static unsigned int cf02C84[] = { 0x02C85, 0x00000 }; +static unsigned int cf02C86[] = { 0x02C87, 0x00000 }; +static unsigned int cf02C88[] = { 0x02C89, 0x00000 }; +static unsigned int cf02C8A[] = { 0x02C8B, 0x00000 }; +static unsigned int cf02C8C[] = { 0x02C8D, 0x00000 }; +static unsigned int cf02C8E[] = { 0x02C8F, 0x00000 }; +static unsigned int cf02C90[] = { 0x02C91, 0x00000 }; +static unsigned int cf02C92[] = { 0x02C93, 0x00000 }; +static unsigned int cf02C94[] = { 0x02C95, 0x00000 }; +static unsigned int cf02C96[] = { 0x02C97, 0x00000 }; +static unsigned int cf02C98[] = { 0x02C99, 0x00000 }; +static unsigned int cf02C9A[] = { 0x02C9B, 0x00000 }; +static unsigned int cf02C9C[] = { 0x02C9D, 0x00000 }; +static unsigned int cf02C9E[] = { 0x02C9F, 0x00000 }; +static unsigned int cf02CA0[] = { 0x02CA1, 0x00000 }; +static unsigned int cf02CA2[] = { 0x02CA3, 0x00000 }; +static unsigned int cf02CA4[] = { 0x02CA5, 0x00000 }; +static unsigned int cf02CA6[] = { 0x02CA7, 0x00000 }; +static unsigned int cf02CA8[] = { 0x02CA9, 0x00000 }; +static unsigned int cf02CAA[] = { 0x02CAB, 0x00000 }; +static unsigned int cf02CAC[] = { 0x02CAD, 0x00000 }; +static unsigned int cf02CAE[] = { 0x02CAF, 0x00000 }; +static unsigned int cf02CB0[] = { 0x02CB1, 0x00000 }; +static unsigned int cf02CB2[] = { 0x02CB3, 0x00000 }; +static unsigned int cf02CB4[] = { 0x02CB5, 0x00000 }; +static unsigned int cf02CB6[] = { 0x02CB7, 0x00000 }; +static unsigned int cf02CB8[] = { 0x02CB9, 0x00000 }; +static unsigned int cf02CBA[] = { 0x02CBB, 0x00000 }; +static unsigned int cf02CBC[] = { 0x02CBD, 0x00000 }; +static unsigned int cf02CBE[] = { 0x02CBF, 0x00000 }; +static unsigned int cf02CC0[] = { 0x02CC1, 0x00000 }; +static unsigned int cf02CC2[] = { 0x02CC3, 0x00000 }; +static unsigned int cf02CC4[] = { 0x02CC5, 0x00000 }; +static unsigned int cf02CC6[] = { 0x02CC7, 0x00000 }; +static unsigned int cf02CC8[] = { 0x02CC9, 0x00000 }; +static unsigned int cf02CCA[] = { 0x02CCB, 0x00000 }; +static unsigned int cf02CCC[] = { 0x02CCD, 0x00000 }; +static unsigned int cf02CCE[] = { 0x02CCF, 0x00000 }; +static unsigned int cf02CD0[] = { 0x02CD1, 0x00000 }; +static unsigned int cf02CD2[] = { 0x02CD3, 0x00000 }; +static unsigned int cf02CD4[] = { 0x02CD5, 0x00000 }; +static unsigned int cf02CD6[] = { 0x02CD7, 0x00000 }; +static unsigned int cf02CD8[] = { 0x02CD9, 0x00000 }; +static unsigned int cf02CDA[] = { 0x02CDB, 0x00000 }; +static unsigned int cf02CDC[] = { 0x02CDD, 0x00000 }; +static unsigned int cf02CDE[] = { 0x02CDF, 0x00000 }; +static unsigned int cf02CE0[] = { 0x02CE1, 0x00000 }; +static unsigned int cf02CE2[] = { 0x02CE3, 0x00000 }; +static unsigned int cf0FB00[] = { 0x00066, 0x00066, 0x00000 }; +static unsigned int cf0FB01[] = { 0x00066, 0x00069, 0x00000 }; +static unsigned int cf0FB02[] = { 0x00066, 0x0006C, 0x00000 }; +static unsigned int cf0FB03[] = { 0x00066, 0x00066, 0x00069, 0x00000 }; +static unsigned int cf0FB04[] = { 0x00066, 0x00066, 0x0006C, 0x00000 }; +static unsigned int cf0FB05[] = { 0x00073, 0x00074, 0x00000 }; +static unsigned int cf0FB06[] = { 0x00073, 0x00074, 0x00000 }; +static unsigned int cf0FB13[] = { 0x00574, 0x00576, 0x00000 }; +static unsigned int cf0FB14[] = { 0x00574, 0x00565, 0x00000 }; +static unsigned int cf0FB15[] = { 0x00574, 0x0056B, 0x00000 }; +static unsigned int cf0FB16[] = { 0x0057E, 0x00576, 0x00000 }; +static unsigned int cf0FB17[] = { 0x00574, 0x0056D, 0x00000 }; +static unsigned int cf0FF21[] = { 0x0FF41, 0x00000 }; +static unsigned int cf0FF22[] = { 0x0FF42, 0x00000 }; +static unsigned int cf0FF23[] = { 0x0FF43, 0x00000 }; +static unsigned int cf0FF24[] = { 0x0FF44, 0x00000 }; +static unsigned int cf0FF25[] = { 0x0FF45, 0x00000 }; +static unsigned int cf0FF26[] = { 0x0FF46, 0x00000 }; +static unsigned int cf0FF27[] = { 0x0FF47, 0x00000 }; +static unsigned int cf0FF28[] = { 0x0FF48, 0x00000 }; +static unsigned int cf0FF29[] = { 0x0FF49, 0x00000 }; +static unsigned int cf0FF2A[] = { 0x0FF4A, 0x00000 }; +static unsigned int cf0FF2B[] = { 0x0FF4B, 0x00000 }; +static unsigned int cf0FF2C[] = { 0x0FF4C, 0x00000 }; +static unsigned int cf0FF2D[] = { 0x0FF4D, 0x00000 }; +static unsigned int cf0FF2E[] = { 0x0FF4E, 0x00000 }; +static unsigned int cf0FF2F[] = { 0x0FF4F, 0x00000 }; +static unsigned int cf0FF30[] = { 0x0FF50, 0x00000 }; +static unsigned int cf0FF31[] = { 0x0FF51, 0x00000 }; +static unsigned int cf0FF32[] = { 0x0FF52, 0x00000 }; +static unsigned int cf0FF33[] = { 0x0FF53, 0x00000 }; +static unsigned int cf0FF34[] = { 0x0FF54, 0x00000 }; +static unsigned int cf0FF35[] = { 0x0FF55, 0x00000 }; +static unsigned int cf0FF36[] = { 0x0FF56, 0x00000 }; +static unsigned int cf0FF37[] = { 0x0FF57, 0x00000 }; +static unsigned int cf0FF38[] = { 0x0FF58, 0x00000 }; +static unsigned int cf0FF39[] = { 0x0FF59, 0x00000 }; +static unsigned int cf0FF3A[] = { 0x0FF5A, 0x00000 }; +static unsigned int cf10400[] = { 0x10428, 0x00000 }; +static unsigned int cf10401[] = { 0x10429, 0x00000 }; +static unsigned int cf10402[] = { 0x1042A, 0x00000 }; +static unsigned int cf10403[] = { 0x1042B, 0x00000 }; +static unsigned int cf10404[] = { 0x1042C, 0x00000 }; +static unsigned int cf10405[] = { 0x1042D, 0x00000 }; +static unsigned int cf10406[] = { 0x1042E, 0x00000 }; +static unsigned int cf10407[] = { 0x1042F, 0x00000 }; +static unsigned int cf10408[] = { 0x10430, 0x00000 }; +static unsigned int cf10409[] = { 0x10431, 0x00000 }; +static unsigned int cf1040A[] = { 0x10432, 0x00000 }; +static unsigned int cf1040B[] = { 0x10433, 0x00000 }; +static unsigned int cf1040C[] = { 0x10434, 0x00000 }; +static unsigned int cf1040D[] = { 0x10435, 0x00000 }; +static unsigned int cf1040E[] = { 0x10436, 0x00000 }; +static unsigned int cf1040F[] = { 0x10437, 0x00000 }; +static unsigned int cf10410[] = { 0x10438, 0x00000 }; +static unsigned int cf10411[] = { 0x10439, 0x00000 }; +static unsigned int cf10412[] = { 0x1043A, 0x00000 }; +static unsigned int cf10413[] = { 0x1043B, 0x00000 }; +static unsigned int cf10414[] = { 0x1043C, 0x00000 }; +static unsigned int cf10415[] = { 0x1043D, 0x00000 }; +static unsigned int cf10416[] = { 0x1043E, 0x00000 }; +static unsigned int cf10417[] = { 0x1043F, 0x00000 }; +static unsigned int cf10418[] = { 0x10440, 0x00000 }; +static unsigned int cf10419[] = { 0x10441, 0x00000 }; +static unsigned int cf1041A[] = { 0x10442, 0x00000 }; +static unsigned int cf1041B[] = { 0x10443, 0x00000 }; +static unsigned int cf1041C[] = { 0x10444, 0x00000 }; +static unsigned int cf1041D[] = { 0x10445, 0x00000 }; +static unsigned int cf1041E[] = { 0x10446, 0x00000 }; +static unsigned int cf1041F[] = { 0x10447, 0x00000 }; +static unsigned int cf10420[] = { 0x10448, 0x00000 }; +static unsigned int cf10421[] = { 0x10449, 0x00000 }; +static unsigned int cf10422[] = { 0x1044A, 0x00000 }; +static unsigned int cf10423[] = { 0x1044B, 0x00000 }; +static unsigned int cf10424[] = { 0x1044C, 0x00000 }; +static unsigned int cf10425[] = { 0x1044D, 0x00000 }; +static unsigned int cf10426[] = { 0x1044E, 0x00000 }; +static unsigned int cf10427[] = { 0x1044F, 0x00000 }; + +static unsigned int caseFoldDirectTableSize = 2048; +static unsigned int *caseFoldDirectTable[2048] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, cf00041, cf00042, cf00043, cf00044, cf00045, cf00046, cf00047, cf00048, cf00049, cf0004A, cf0004B, cf0004C, cf0004D, cf0004E, cf0004F, + cf00050, cf00051, cf00052, cf00053, cf00054, cf00055, cf00056, cf00057, cf00058, cf00059, cf0005A, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, cf000B5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + cf000C0, cf000C1, cf000C2, cf000C3, cf000C4, cf000C5, cf000C6, cf000C7, cf000C8, cf000C9, cf000CA, cf000CB, cf000CC, cf000CD, cf000CE, cf000CF, + cf000D0, cf000D1, cf000D2, cf000D3, cf000D4, cf000D5, cf000D6, 0, cf000D8, cf000D9, cf000DA, cf000DB, cf000DC, cf000DD, cf000DE, cf000DF, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + cf00100, 0, cf00102, 0, cf00104, 0, cf00106, 0, cf00108, 0, cf0010A, 0, cf0010C, 0, cf0010E, 0, + cf00110, 0, cf00112, 0, cf00114, 0, cf00116, 0, cf00118, 0, cf0011A, 0, cf0011C, 0, cf0011E, 0, + cf00120, 0, cf00122, 0, cf00124, 0, cf00126, 0, cf00128, 0, cf0012A, 0, cf0012C, 0, cf0012E, 0, + cf00130, 0, cf00132, 0, cf00134, 0, cf00136, 0, 0, cf00139, 0, cf0013B, 0, cf0013D, 0, cf0013F, + 0, cf00141, 0, cf00143, 0, cf00145, 0, cf00147, 0, cf00149, cf0014A, 0, cf0014C, 0, cf0014E, 0, + cf00150, 0, cf00152, 0, cf00154, 0, cf00156, 0, cf00158, 0, cf0015A, 0, cf0015C, 0, cf0015E, 0, + cf00160, 0, cf00162, 0, cf00164, 0, cf00166, 0, cf00168, 0, cf0016A, 0, cf0016C, 0, cf0016E, 0, + cf00170, 0, cf00172, 0, cf00174, 0, cf00176, 0, cf00178, cf00179, 0, cf0017B, 0, cf0017D, 0, cf0017F, + 0, cf00181, cf00182, 0, cf00184, 0, cf00186, cf00187, 0, cf00189, cf0018A, cf0018B, 0, 0, cf0018E, cf0018F, + cf00190, cf00191, 0, cf00193, cf00194, 0, cf00196, cf00197, cf00198, 0, 0, 0, cf0019C, cf0019D, 0, cf0019F, + cf001A0, 0, cf001A2, 0, cf001A4, 0, cf001A6, cf001A7, 0, cf001A9, 0, 0, cf001AC, 0, cf001AE, cf001AF, + 0, cf001B1, cf001B2, cf001B3, 0, cf001B5, 0, cf001B7, cf001B8, 0, 0, 0, cf001BC, 0, 0, 0, + 0, 0, 0, 0, cf001C4, cf001C5, 0, cf001C7, cf001C8, 0, cf001CA, cf001CB, 0, cf001CD, 0, cf001CF, + 0, cf001D1, 0, cf001D3, 0, cf001D5, 0, cf001D7, 0, cf001D9, 0, cf001DB, 0, 0, cf001DE, 0, + cf001E0, 0, cf001E2, 0, cf001E4, 0, cf001E6, 0, cf001E8, 0, cf001EA, 0, cf001EC, 0, cf001EE, 0, + cf001F0, cf001F1, cf001F2, 0, cf001F4, 0, cf001F6, cf001F7, cf001F8, 0, cf001FA, 0, cf001FC, 0, cf001FE, 0, + cf00200, 0, cf00202, 0, cf00204, 0, cf00206, 0, cf00208, 0, cf0020A, 0, cf0020C, 0, cf0020E, 0, + cf00210, 0, cf00212, 0, cf00214, 0, cf00216, 0, cf00218, 0, cf0021A, 0, cf0021C, 0, cf0021E, 0, + cf00220, 0, cf00222, 0, cf00224, 0, cf00226, 0, cf00228, 0, cf0022A, 0, cf0022C, 0, cf0022E, 0, + cf00230, 0, cf00232, 0, 0, 0, 0, 0, 0, 0, 0, cf0023B, 0, cf0023D, 0, 0, + 0, cf00241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, cf00345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, cf00386, 0, cf00388, cf00389, cf0038A, 0, cf0038C, 0, cf0038E, cf0038F, + cf00390, cf00391, cf00392, cf00393, cf00394, cf00395, cf00396, cf00397, cf00398, cf00399, cf0039A, cf0039B, cf0039C, cf0039D, cf0039E, cf0039F, + cf003A0, cf003A1, 0, cf003A3, cf003A4, cf003A5, cf003A6, cf003A7, cf003A8, cf003A9, cf003AA, cf003AB, 0, 0, 0, 0, + cf003B0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, cf003C2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + cf003D0, cf003D1, 0, 0, 0, cf003D5, cf003D6, 0, cf003D8, 0, cf003DA, 0, cf003DC, 0, cf003DE, 0, + cf003E0, 0, cf003E2, 0, cf003E4, 0, cf003E6, 0, cf003E8, 0, cf003EA, 0, cf003EC, 0, cf003EE, 0, + cf003F0, cf003F1, 0, 0, cf003F4, cf003F5, 0, cf003F7, 0, cf003F9, cf003FA, 0, 0, 0, 0, 0, + cf00400, cf00401, cf00402, cf00403, cf00404, cf00405, cf00406, cf00407, cf00408, cf00409, cf0040A, cf0040B, cf0040C, cf0040D, cf0040E, cf0040F, + cf00410, cf00411, cf00412, cf00413, cf00414, cf00415, cf00416, cf00417, cf00418, cf00419, cf0041A, cf0041B, cf0041C, cf0041D, cf0041E, cf0041F, + cf00420, cf00421, cf00422, cf00423, cf00424, cf00425, cf00426, cf00427, cf00428, cf00429, cf0042A, cf0042B, cf0042C, cf0042D, cf0042E, cf0042F, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + cf00460, 0, cf00462, 0, cf00464, 0, cf00466, 0, cf00468, 0, cf0046A, 0, cf0046C, 0, cf0046E, 0, + cf00470, 0, cf00472, 0, cf00474, 0, cf00476, 0, cf00478, 0, cf0047A, 0, cf0047C, 0, cf0047E, 0, + cf00480, 0, 0, 0, 0, 0, 0, 0, 0, 0, cf0048A, 0, cf0048C, 0, cf0048E, 0, + cf00490, 0, cf00492, 0, cf00494, 0, cf00496, 0, cf00498, 0, cf0049A, 0, cf0049C, 0, cf0049E, 0, + cf004A0, 0, cf004A2, 0, cf004A4, 0, cf004A6, 0, cf004A8, 0, cf004AA, 0, cf004AC, 0, cf004AE, 0, + cf004B0, 0, cf004B2, 0, cf004B4, 0, cf004B6, 0, cf004B8, 0, cf004BA, 0, cf004BC, 0, cf004BE, 0, + 0, cf004C1, 0, cf004C3, 0, cf004C5, 0, cf004C7, 0, cf004C9, 0, cf004CB, 0, cf004CD, 0, 0, + cf004D0, 0, cf004D2, 0, cf004D4, 0, cf004D6, 0, cf004D8, 0, cf004DA, 0, cf004DC, 0, cf004DE, 0, + cf004E0, 0, cf004E2, 0, cf004E4, 0, cf004E6, 0, cf004E8, 0, cf004EA, 0, cf004EC, 0, cf004EE, 0, + cf004F0, 0, cf004F2, 0, cf004F4, 0, cf004F6, 0, cf004F8, 0, 0, 0, 0, 0, 0, 0, + cf00500, 0, cf00502, 0, cf00504, 0, cf00506, 0, cf00508, 0, cf0050A, 0, cf0050C, 0, cf0050E, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, cf00531, cf00532, cf00533, cf00534, cf00535, cf00536, cf00537, cf00538, cf00539, cf0053A, cf0053B, cf0053C, cf0053D, cf0053E, cf0053F, + cf00540, cf00541, cf00542, cf00543, cf00544, cf00545, cf00546, cf00547, cf00548, cf00549, cf0054A, cf0054B, cf0054C, cf0054D, cf0054E, cf0054F, + cf00550, cf00551, cf00552, cf00553, cf00554, cf00555, cf00556, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, cf00587, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +struct CaseFoldValue +{ + unsigned int ch; + unsigned int *dest; +}; +// static unsigned int caseFoldTableSize = 981; +// static CaseFoldValue caseFoldTable[981] = { +static unsigned int caseFoldTableSize = 533; +static CaseFoldValue caseFoldTable[533] = { +// { 0x00041, cf00041 }, { 0x00042, cf00042 }, { 0x00043, cf00043 }, { 0x00044, cf00044 }, +// { 0x00045, cf00045 }, { 0x00046, cf00046 }, { 0x00047, cf00047 }, { 0x00048, cf00048 }, +// { 0x00049, cf00049 }, { 0x0004A, cf0004A }, { 0x0004B, cf0004B }, { 0x0004C, cf0004C }, +// { 0x0004D, cf0004D }, { 0x0004E, cf0004E }, { 0x0004F, cf0004F }, { 0x00050, cf00050 }, +// { 0x00051, cf00051 }, { 0x00052, cf00052 }, { 0x00053, cf00053 }, { 0x00054, cf00054 }, +// { 0x00055, cf00055 }, { 0x00056, cf00056 }, { 0x00057, cf00057 }, { 0x00058, cf00058 }, +// { 0x00059, cf00059 }, { 0x0005A, cf0005A }, { 0x000B5, cf000B5 }, { 0x000C0, cf000C0 }, +// { 0x000C1, cf000C1 }, { 0x000C2, cf000C2 }, { 0x000C3, cf000C3 }, { 0x000C4, cf000C4 }, +// { 0x000C5, cf000C5 }, { 0x000C6, cf000C6 }, { 0x000C7, cf000C7 }, { 0x000C8, cf000C8 }, +// { 0x000C9, cf000C9 }, { 0x000CA, cf000CA }, { 0x000CB, cf000CB }, { 0x000CC, cf000CC }, +// { 0x000CD, cf000CD }, { 0x000CE, cf000CE }, { 0x000CF, cf000CF }, { 0x000D0, cf000D0 }, +// { 0x000D1, cf000D1 }, { 0x000D2, cf000D2 }, { 0x000D3, cf000D3 }, { 0x000D4, cf000D4 }, +// { 0x000D5, cf000D5 }, { 0x000D6, cf000D6 }, { 0x000D8, cf000D8 }, { 0x000D9, cf000D9 }, +// { 0x000DA, cf000DA }, { 0x000DB, cf000DB }, { 0x000DC, cf000DC }, { 0x000DD, cf000DD }, +// { 0x000DE, cf000DE }, { 0x000DF, cf000DF }, { 0x00100, cf00100 }, { 0x00102, cf00102 }, +// { 0x00104, cf00104 }, { 0x00106, cf00106 }, { 0x00108, cf00108 }, { 0x0010A, cf0010A }, +// { 0x0010C, cf0010C }, { 0x0010E, cf0010E }, { 0x00110, cf00110 }, { 0x00112, cf00112 }, +// { 0x00114, cf00114 }, { 0x00116, cf00116 }, { 0x00118, cf00118 }, { 0x0011A, cf0011A }, +// { 0x0011C, cf0011C }, { 0x0011E, cf0011E }, { 0x00120, cf00120 }, { 0x00122, cf00122 }, +// { 0x00124, cf00124 }, { 0x00126, cf00126 }, { 0x00128, cf00128 }, { 0x0012A, cf0012A }, +// { 0x0012C, cf0012C }, { 0x0012E, cf0012E }, { 0x00130, cf00130 }, { 0x00132, cf00132 }, +// { 0x00134, cf00134 }, { 0x00136, cf00136 }, { 0x00139, cf00139 }, { 0x0013B, cf0013B }, +// { 0x0013D, cf0013D }, { 0x0013F, cf0013F }, { 0x00141, cf00141 }, { 0x00143, cf00143 }, +// { 0x00145, cf00145 }, { 0x00147, cf00147 }, { 0x00149, cf00149 }, { 0x0014A, cf0014A }, +// { 0x0014C, cf0014C }, { 0x0014E, cf0014E }, { 0x00150, cf00150 }, { 0x00152, cf00152 }, +// { 0x00154, cf00154 }, { 0x00156, cf00156 }, { 0x00158, cf00158 }, { 0x0015A, cf0015A }, +// { 0x0015C, cf0015C }, { 0x0015E, cf0015E }, { 0x00160, cf00160 }, { 0x00162, cf00162 }, +// { 0x00164, cf00164 }, { 0x00166, cf00166 }, { 0x00168, cf00168 }, { 0x0016A, cf0016A }, +// { 0x0016C, cf0016C }, { 0x0016E, cf0016E }, { 0x00170, cf00170 }, { 0x00172, cf00172 }, +// { 0x00174, cf00174 }, { 0x00176, cf00176 }, { 0x00178, cf00178 }, { 0x00179, cf00179 }, +// { 0x0017B, cf0017B }, { 0x0017D, cf0017D }, { 0x0017F, cf0017F }, { 0x00181, cf00181 }, +// { 0x00182, cf00182 }, { 0x00184, cf00184 }, { 0x00186, cf00186 }, { 0x00187, cf00187 }, +// { 0x00189, cf00189 }, { 0x0018A, cf0018A }, { 0x0018B, cf0018B }, { 0x0018E, cf0018E }, +// { 0x0018F, cf0018F }, { 0x00190, cf00190 }, { 0x00191, cf00191 }, { 0x00193, cf00193 }, +// { 0x00194, cf00194 }, { 0x00196, cf00196 }, { 0x00197, cf00197 }, { 0x00198, cf00198 }, +// { 0x0019C, cf0019C }, { 0x0019D, cf0019D }, { 0x0019F, cf0019F }, { 0x001A0, cf001A0 }, +// { 0x001A2, cf001A2 }, { 0x001A4, cf001A4 }, { 0x001A6, cf001A6 }, { 0x001A7, cf001A7 }, +// { 0x001A9, cf001A9 }, { 0x001AC, cf001AC }, { 0x001AE, cf001AE }, { 0x001AF, cf001AF }, +// { 0x001B1, cf001B1 }, { 0x001B2, cf001B2 }, { 0x001B3, cf001B3 }, { 0x001B5, cf001B5 }, +// { 0x001B7, cf001B7 }, { 0x001B8, cf001B8 }, { 0x001BC, cf001BC }, { 0x001C4, cf001C4 }, +// { 0x001C5, cf001C5 }, { 0x001C7, cf001C7 }, { 0x001C8, cf001C8 }, { 0x001CA, cf001CA }, +// { 0x001CB, cf001CB }, { 0x001CD, cf001CD }, { 0x001CF, cf001CF }, { 0x001D1, cf001D1 }, +// { 0x001D3, cf001D3 }, { 0x001D5, cf001D5 }, { 0x001D7, cf001D7 }, { 0x001D9, cf001D9 }, +// { 0x001DB, cf001DB }, { 0x001DE, cf001DE }, { 0x001E0, cf001E0 }, { 0x001E2, cf001E2 }, +// { 0x001E4, cf001E4 }, { 0x001E6, cf001E6 }, { 0x001E8, cf001E8 }, { 0x001EA, cf001EA }, +// { 0x001EC, cf001EC }, { 0x001EE, cf001EE }, { 0x001F0, cf001F0 }, { 0x001F1, cf001F1 }, +// { 0x001F2, cf001F2 }, { 0x001F4, cf001F4 }, { 0x001F6, cf001F6 }, { 0x001F7, cf001F7 }, +// { 0x001F8, cf001F8 }, { 0x001FA, cf001FA }, { 0x001FC, cf001FC }, { 0x001FE, cf001FE }, +// { 0x00200, cf00200 }, { 0x00202, cf00202 }, { 0x00204, cf00204 }, { 0x00206, cf00206 }, +// { 0x00208, cf00208 }, { 0x0020A, cf0020A }, { 0x0020C, cf0020C }, { 0x0020E, cf0020E }, +// { 0x00210, cf00210 }, { 0x00212, cf00212 }, { 0x00214, cf00214 }, { 0x00216, cf00216 }, +// { 0x00218, cf00218 }, { 0x0021A, cf0021A }, { 0x0021C, cf0021C }, { 0x0021E, cf0021E }, +// { 0x00220, cf00220 }, { 0x00222, cf00222 }, { 0x00224, cf00224 }, { 0x00226, cf00226 }, +// { 0x00228, cf00228 }, { 0x0022A, cf0022A }, { 0x0022C, cf0022C }, { 0x0022E, cf0022E }, +// { 0x00230, cf00230 }, { 0x00232, cf00232 }, { 0x0023B, cf0023B }, { 0x0023D, cf0023D }, +// { 0x00241, cf00241 }, { 0x00345, cf00345 }, { 0x00386, cf00386 }, { 0x00388, cf00388 }, +// { 0x00389, cf00389 }, { 0x0038A, cf0038A }, { 0x0038C, cf0038C }, { 0x0038E, cf0038E }, +// { 0x0038F, cf0038F }, { 0x00390, cf00390 }, { 0x00391, cf00391 }, { 0x00392, cf00392 }, +// { 0x00393, cf00393 }, { 0x00394, cf00394 }, { 0x00395, cf00395 }, { 0x00396, cf00396 }, +// { 0x00397, cf00397 }, { 0x00398, cf00398 }, { 0x00399, cf00399 }, { 0x0039A, cf0039A }, +// { 0x0039B, cf0039B }, { 0x0039C, cf0039C }, { 0x0039D, cf0039D }, { 0x0039E, cf0039E }, +// { 0x0039F, cf0039F }, { 0x003A0, cf003A0 }, { 0x003A1, cf003A1 }, { 0x003A3, cf003A3 }, +// { 0x003A4, cf003A4 }, { 0x003A5, cf003A5 }, { 0x003A6, cf003A6 }, { 0x003A7, cf003A7 }, +// { 0x003A8, cf003A8 }, { 0x003A9, cf003A9 }, { 0x003AA, cf003AA }, { 0x003AB, cf003AB }, +// { 0x003B0, cf003B0 }, { 0x003C2, cf003C2 }, { 0x003D0, cf003D0 }, { 0x003D1, cf003D1 }, +// { 0x003D5, cf003D5 }, { 0x003D6, cf003D6 }, { 0x003D8, cf003D8 }, { 0x003DA, cf003DA }, +// { 0x003DC, cf003DC }, { 0x003DE, cf003DE }, { 0x003E0, cf003E0 }, { 0x003E2, cf003E2 }, +// { 0x003E4, cf003E4 }, { 0x003E6, cf003E6 }, { 0x003E8, cf003E8 }, { 0x003EA, cf003EA }, +// { 0x003EC, cf003EC }, { 0x003EE, cf003EE }, { 0x003F0, cf003F0 }, { 0x003F1, cf003F1 }, +// { 0x003F4, cf003F4 }, { 0x003F5, cf003F5 }, { 0x003F7, cf003F7 }, { 0x003F9, cf003F9 }, +// { 0x003FA, cf003FA }, { 0x00400, cf00400 }, { 0x00401, cf00401 }, { 0x00402, cf00402 }, +// { 0x00403, cf00403 }, { 0x00404, cf00404 }, { 0x00405, cf00405 }, { 0x00406, cf00406 }, +// { 0x00407, cf00407 }, { 0x00408, cf00408 }, { 0x00409, cf00409 }, { 0x0040A, cf0040A }, +// { 0x0040B, cf0040B }, { 0x0040C, cf0040C }, { 0x0040D, cf0040D }, { 0x0040E, cf0040E }, +// { 0x0040F, cf0040F }, { 0x00410, cf00410 }, { 0x00411, cf00411 }, { 0x00412, cf00412 }, +// { 0x00413, cf00413 }, { 0x00414, cf00414 }, { 0x00415, cf00415 }, { 0x00416, cf00416 }, +// { 0x00417, cf00417 }, { 0x00418, cf00418 }, { 0x00419, cf00419 }, { 0x0041A, cf0041A }, +// { 0x0041B, cf0041B }, { 0x0041C, cf0041C }, { 0x0041D, cf0041D }, { 0x0041E, cf0041E }, +// { 0x0041F, cf0041F }, { 0x00420, cf00420 }, { 0x00421, cf00421 }, { 0x00422, cf00422 }, +// { 0x00423, cf00423 }, { 0x00424, cf00424 }, { 0x00425, cf00425 }, { 0x00426, cf00426 }, +// { 0x00427, cf00427 }, { 0x00428, cf00428 }, { 0x00429, cf00429 }, { 0x0042A, cf0042A }, +// { 0x0042B, cf0042B }, { 0x0042C, cf0042C }, { 0x0042D, cf0042D }, { 0x0042E, cf0042E }, +// { 0x0042F, cf0042F }, { 0x00460, cf00460 }, { 0x00462, cf00462 }, { 0x00464, cf00464 }, +// { 0x00466, cf00466 }, { 0x00468, cf00468 }, { 0x0046A, cf0046A }, { 0x0046C, cf0046C }, +// { 0x0046E, cf0046E }, { 0x00470, cf00470 }, { 0x00472, cf00472 }, { 0x00474, cf00474 }, +// { 0x00476, cf00476 }, { 0x00478, cf00478 }, { 0x0047A, cf0047A }, { 0x0047C, cf0047C }, +// { 0x0047E, cf0047E }, { 0x00480, cf00480 }, { 0x0048A, cf0048A }, { 0x0048C, cf0048C }, +// { 0x0048E, cf0048E }, { 0x00490, cf00490 }, { 0x00492, cf00492 }, { 0x00494, cf00494 }, +// { 0x00496, cf00496 }, { 0x00498, cf00498 }, { 0x0049A, cf0049A }, { 0x0049C, cf0049C }, +// { 0x0049E, cf0049E }, { 0x004A0, cf004A0 }, { 0x004A2, cf004A2 }, { 0x004A4, cf004A4 }, +// { 0x004A6, cf004A6 }, { 0x004A8, cf004A8 }, { 0x004AA, cf004AA }, { 0x004AC, cf004AC }, +// { 0x004AE, cf004AE }, { 0x004B0, cf004B0 }, { 0x004B2, cf004B2 }, { 0x004B4, cf004B4 }, +// { 0x004B6, cf004B6 }, { 0x004B8, cf004B8 }, { 0x004BA, cf004BA }, { 0x004BC, cf004BC }, +// { 0x004BE, cf004BE }, { 0x004C1, cf004C1 }, { 0x004C3, cf004C3 }, { 0x004C5, cf004C5 }, +// { 0x004C7, cf004C7 }, { 0x004C9, cf004C9 }, { 0x004CB, cf004CB }, { 0x004CD, cf004CD }, +// { 0x004D0, cf004D0 }, { 0x004D2, cf004D2 }, { 0x004D4, cf004D4 }, { 0x004D6, cf004D6 }, +// { 0x004D8, cf004D8 }, { 0x004DA, cf004DA }, { 0x004DC, cf004DC }, { 0x004DE, cf004DE }, +// { 0x004E0, cf004E0 }, { 0x004E2, cf004E2 }, { 0x004E4, cf004E4 }, { 0x004E6, cf004E6 }, +// { 0x004E8, cf004E8 }, { 0x004EA, cf004EA }, { 0x004EC, cf004EC }, { 0x004EE, cf004EE }, +// { 0x004F0, cf004F0 }, { 0x004F2, cf004F2 }, { 0x004F4, cf004F4 }, { 0x004F6, cf004F6 }, +// { 0x004F8, cf004F8 }, { 0x00500, cf00500 }, { 0x00502, cf00502 }, { 0x00504, cf00504 }, +// { 0x00506, cf00506 }, { 0x00508, cf00508 }, { 0x0050A, cf0050A }, { 0x0050C, cf0050C }, +// { 0x0050E, cf0050E }, { 0x00531, cf00531 }, { 0x00532, cf00532 }, { 0x00533, cf00533 }, +// { 0x00534, cf00534 }, { 0x00535, cf00535 }, { 0x00536, cf00536 }, { 0x00537, cf00537 }, +// { 0x00538, cf00538 }, { 0x00539, cf00539 }, { 0x0053A, cf0053A }, { 0x0053B, cf0053B }, +// { 0x0053C, cf0053C }, { 0x0053D, cf0053D }, { 0x0053E, cf0053E }, { 0x0053F, cf0053F }, +// { 0x00540, cf00540 }, { 0x00541, cf00541 }, { 0x00542, cf00542 }, { 0x00543, cf00543 }, +// { 0x00544, cf00544 }, { 0x00545, cf00545 }, { 0x00546, cf00546 }, { 0x00547, cf00547 }, +// { 0x00548, cf00548 }, { 0x00549, cf00549 }, { 0x0054A, cf0054A }, { 0x0054B, cf0054B }, +// { 0x0054C, cf0054C }, { 0x0054D, cf0054D }, { 0x0054E, cf0054E }, { 0x0054F, cf0054F }, +// { 0x00550, cf00550 }, { 0x00551, cf00551 }, { 0x00552, cf00552 }, { 0x00553, cf00553 }, +// { 0x00554, cf00554 }, { 0x00555, cf00555 }, { 0x00556, cf00556 }, { 0x00587, cf00587 }, + +{ 0x010A0, cf010A0 }, { 0x010A1, cf010A1 }, { 0x010A2, cf010A2 }, { 0x010A3, cf010A3 }, +{ 0x010A4, cf010A4 }, { 0x010A5, cf010A5 }, { 0x010A6, cf010A6 }, { 0x010A7, cf010A7 }, +{ 0x010A8, cf010A8 }, { 0x010A9, cf010A9 }, { 0x010AA, cf010AA }, { 0x010AB, cf010AB }, +{ 0x010AC, cf010AC }, { 0x010AD, cf010AD }, { 0x010AE, cf010AE }, { 0x010AF, cf010AF }, +{ 0x010B0, cf010B0 }, { 0x010B1, cf010B1 }, { 0x010B2, cf010B2 }, { 0x010B3, cf010B3 }, +{ 0x010B4, cf010B4 }, { 0x010B5, cf010B5 }, { 0x010B6, cf010B6 }, { 0x010B7, cf010B7 }, +{ 0x010B8, cf010B8 }, { 0x010B9, cf010B9 }, { 0x010BA, cf010BA }, { 0x010BB, cf010BB }, +{ 0x010BC, cf010BC }, { 0x010BD, cf010BD }, { 0x010BE, cf010BE }, { 0x010BF, cf010BF }, +{ 0x010C0, cf010C0 }, { 0x010C1, cf010C1 }, { 0x010C2, cf010C2 }, { 0x010C3, cf010C3 }, +{ 0x010C4, cf010C4 }, { 0x010C5, cf010C5 }, { 0x01E00, cf01E00 }, { 0x01E02, cf01E02 }, +{ 0x01E04, cf01E04 }, { 0x01E06, cf01E06 }, { 0x01E08, cf01E08 }, { 0x01E0A, cf01E0A }, +{ 0x01E0C, cf01E0C }, { 0x01E0E, cf01E0E }, { 0x01E10, cf01E10 }, { 0x01E12, cf01E12 }, +{ 0x01E14, cf01E14 }, { 0x01E16, cf01E16 }, { 0x01E18, cf01E18 }, { 0x01E1A, cf01E1A }, +{ 0x01E1C, cf01E1C }, { 0x01E1E, cf01E1E }, { 0x01E20, cf01E20 }, { 0x01E22, cf01E22 }, +{ 0x01E24, cf01E24 }, { 0x01E26, cf01E26 }, { 0x01E28, cf01E28 }, { 0x01E2A, cf01E2A }, +{ 0x01E2C, cf01E2C }, { 0x01E2E, cf01E2E }, { 0x01E30, cf01E30 }, { 0x01E32, cf01E32 }, +{ 0x01E34, cf01E34 }, { 0x01E36, cf01E36 }, { 0x01E38, cf01E38 }, { 0x01E3A, cf01E3A }, +{ 0x01E3C, cf01E3C }, { 0x01E3E, cf01E3E }, { 0x01E40, cf01E40 }, { 0x01E42, cf01E42 }, +{ 0x01E44, cf01E44 }, { 0x01E46, cf01E46 }, { 0x01E48, cf01E48 }, { 0x01E4A, cf01E4A }, +{ 0x01E4C, cf01E4C }, { 0x01E4E, cf01E4E }, { 0x01E50, cf01E50 }, { 0x01E52, cf01E52 }, +{ 0x01E54, cf01E54 }, { 0x01E56, cf01E56 }, { 0x01E58, cf01E58 }, { 0x01E5A, cf01E5A }, +{ 0x01E5C, cf01E5C }, { 0x01E5E, cf01E5E }, { 0x01E60, cf01E60 }, { 0x01E62, cf01E62 }, +{ 0x01E64, cf01E64 }, { 0x01E66, cf01E66 }, { 0x01E68, cf01E68 }, { 0x01E6A, cf01E6A }, +{ 0x01E6C, cf01E6C }, { 0x01E6E, cf01E6E }, { 0x01E70, cf01E70 }, { 0x01E72, cf01E72 }, +{ 0x01E74, cf01E74 }, { 0x01E76, cf01E76 }, { 0x01E78, cf01E78 }, { 0x01E7A, cf01E7A }, +{ 0x01E7C, cf01E7C }, { 0x01E7E, cf01E7E }, { 0x01E80, cf01E80 }, { 0x01E82, cf01E82 }, +{ 0x01E84, cf01E84 }, { 0x01E86, cf01E86 }, { 0x01E88, cf01E88 }, { 0x01E8A, cf01E8A }, +{ 0x01E8C, cf01E8C }, { 0x01E8E, cf01E8E }, { 0x01E90, cf01E90 }, { 0x01E92, cf01E92 }, +{ 0x01E94, cf01E94 }, { 0x01E96, cf01E96 }, { 0x01E97, cf01E97 }, { 0x01E98, cf01E98 }, +{ 0x01E99, cf01E99 }, { 0x01E9A, cf01E9A }, { 0x01E9B, cf01E9B }, { 0x01EA0, cf01EA0 }, +{ 0x01EA2, cf01EA2 }, { 0x01EA4, cf01EA4 }, { 0x01EA6, cf01EA6 }, { 0x01EA8, cf01EA8 }, +{ 0x01EAA, cf01EAA }, { 0x01EAC, cf01EAC }, { 0x01EAE, cf01EAE }, { 0x01EB0, cf01EB0 }, +{ 0x01EB2, cf01EB2 }, { 0x01EB4, cf01EB4 }, { 0x01EB6, cf01EB6 }, { 0x01EB8, cf01EB8 }, +{ 0x01EBA, cf01EBA }, { 0x01EBC, cf01EBC }, { 0x01EBE, cf01EBE }, { 0x01EC0, cf01EC0 }, +{ 0x01EC2, cf01EC2 }, { 0x01EC4, cf01EC4 }, { 0x01EC6, cf01EC6 }, { 0x01EC8, cf01EC8 }, +{ 0x01ECA, cf01ECA }, { 0x01ECC, cf01ECC }, { 0x01ECE, cf01ECE }, { 0x01ED0, cf01ED0 }, +{ 0x01ED2, cf01ED2 }, { 0x01ED4, cf01ED4 }, { 0x01ED6, cf01ED6 }, { 0x01ED8, cf01ED8 }, +{ 0x01EDA, cf01EDA }, { 0x01EDC, cf01EDC }, { 0x01EDE, cf01EDE }, { 0x01EE0, cf01EE0 }, +{ 0x01EE2, cf01EE2 }, { 0x01EE4, cf01EE4 }, { 0x01EE6, cf01EE6 }, { 0x01EE8, cf01EE8 }, +{ 0x01EEA, cf01EEA }, { 0x01EEC, cf01EEC }, { 0x01EEE, cf01EEE }, { 0x01EF0, cf01EF0 }, +{ 0x01EF2, cf01EF2 }, { 0x01EF4, cf01EF4 }, { 0x01EF6, cf01EF6 }, { 0x01EF8, cf01EF8 }, +{ 0x01F08, cf01F08 }, { 0x01F09, cf01F09 }, { 0x01F0A, cf01F0A }, { 0x01F0B, cf01F0B }, +{ 0x01F0C, cf01F0C }, { 0x01F0D, cf01F0D }, { 0x01F0E, cf01F0E }, { 0x01F0F, cf01F0F }, +{ 0x01F18, cf01F18 }, { 0x01F19, cf01F19 }, { 0x01F1A, cf01F1A }, { 0x01F1B, cf01F1B }, +{ 0x01F1C, cf01F1C }, { 0x01F1D, cf01F1D }, { 0x01F28, cf01F28 }, { 0x01F29, cf01F29 }, +{ 0x01F2A, cf01F2A }, { 0x01F2B, cf01F2B }, { 0x01F2C, cf01F2C }, { 0x01F2D, cf01F2D }, +{ 0x01F2E, cf01F2E }, { 0x01F2F, cf01F2F }, { 0x01F38, cf01F38 }, { 0x01F39, cf01F39 }, +{ 0x01F3A, cf01F3A }, { 0x01F3B, cf01F3B }, { 0x01F3C, cf01F3C }, { 0x01F3D, cf01F3D }, +{ 0x01F3E, cf01F3E }, { 0x01F3F, cf01F3F }, { 0x01F48, cf01F48 }, { 0x01F49, cf01F49 }, +{ 0x01F4A, cf01F4A }, { 0x01F4B, cf01F4B }, { 0x01F4C, cf01F4C }, { 0x01F4D, cf01F4D }, +{ 0x01F50, cf01F50 }, { 0x01F52, cf01F52 }, { 0x01F54, cf01F54 }, { 0x01F56, cf01F56 }, +{ 0x01F59, cf01F59 }, { 0x01F5B, cf01F5B }, { 0x01F5D, cf01F5D }, { 0x01F5F, cf01F5F }, +{ 0x01F68, cf01F68 }, { 0x01F69, cf01F69 }, { 0x01F6A, cf01F6A }, { 0x01F6B, cf01F6B }, +{ 0x01F6C, cf01F6C }, { 0x01F6D, cf01F6D }, { 0x01F6E, cf01F6E }, { 0x01F6F, cf01F6F }, +{ 0x01F80, cf01F80 }, { 0x01F81, cf01F81 }, { 0x01F82, cf01F82 }, { 0x01F83, cf01F83 }, +{ 0x01F84, cf01F84 }, { 0x01F85, cf01F85 }, { 0x01F86, cf01F86 }, { 0x01F87, cf01F87 }, +{ 0x01F88, cf01F88 }, { 0x01F89, cf01F89 }, { 0x01F8A, cf01F8A }, { 0x01F8B, cf01F8B }, +{ 0x01F8C, cf01F8C }, { 0x01F8D, cf01F8D }, { 0x01F8E, cf01F8E }, { 0x01F8F, cf01F8F }, +{ 0x01F90, cf01F90 }, { 0x01F91, cf01F91 }, { 0x01F92, cf01F92 }, { 0x01F93, cf01F93 }, +{ 0x01F94, cf01F94 }, { 0x01F95, cf01F95 }, { 0x01F96, cf01F96 }, { 0x01F97, cf01F97 }, +{ 0x01F98, cf01F98 }, { 0x01F99, cf01F99 }, { 0x01F9A, cf01F9A }, { 0x01F9B, cf01F9B }, +{ 0x01F9C, cf01F9C }, { 0x01F9D, cf01F9D }, { 0x01F9E, cf01F9E }, { 0x01F9F, cf01F9F }, +{ 0x01FA0, cf01FA0 }, { 0x01FA1, cf01FA1 }, { 0x01FA2, cf01FA2 }, { 0x01FA3, cf01FA3 }, +{ 0x01FA4, cf01FA4 }, { 0x01FA5, cf01FA5 }, { 0x01FA6, cf01FA6 }, { 0x01FA7, cf01FA7 }, +{ 0x01FA8, cf01FA8 }, { 0x01FA9, cf01FA9 }, { 0x01FAA, cf01FAA }, { 0x01FAB, cf01FAB }, +{ 0x01FAC, cf01FAC }, { 0x01FAD, cf01FAD }, { 0x01FAE, cf01FAE }, { 0x01FAF, cf01FAF }, +{ 0x01FB2, cf01FB2 }, { 0x01FB3, cf01FB3 }, { 0x01FB4, cf01FB4 }, { 0x01FB6, cf01FB6 }, +{ 0x01FB7, cf01FB7 }, { 0x01FB8, cf01FB8 }, { 0x01FB9, cf01FB9 }, { 0x01FBA, cf01FBA }, +{ 0x01FBB, cf01FBB }, { 0x01FBC, cf01FBC }, { 0x01FBE, cf01FBE }, { 0x01FC2, cf01FC2 }, +{ 0x01FC3, cf01FC3 }, { 0x01FC4, cf01FC4 }, { 0x01FC6, cf01FC6 }, { 0x01FC7, cf01FC7 }, +{ 0x01FC8, cf01FC8 }, { 0x01FC9, cf01FC9 }, { 0x01FCA, cf01FCA }, { 0x01FCB, cf01FCB }, +{ 0x01FCC, cf01FCC }, { 0x01FD2, cf01FD2 }, { 0x01FD3, cf01FD3 }, { 0x01FD6, cf01FD6 }, +{ 0x01FD7, cf01FD7 }, { 0x01FD8, cf01FD8 }, { 0x01FD9, cf01FD9 }, { 0x01FDA, cf01FDA }, +{ 0x01FDB, cf01FDB }, { 0x01FE2, cf01FE2 }, { 0x01FE3, cf01FE3 }, { 0x01FE4, cf01FE4 }, +{ 0x01FE6, cf01FE6 }, { 0x01FE7, cf01FE7 }, { 0x01FE8, cf01FE8 }, { 0x01FE9, cf01FE9 }, +{ 0x01FEA, cf01FEA }, { 0x01FEB, cf01FEB }, { 0x01FEC, cf01FEC }, { 0x01FF2, cf01FF2 }, +{ 0x01FF3, cf01FF3 }, { 0x01FF4, cf01FF4 }, { 0x01FF6, cf01FF6 }, { 0x01FF7, cf01FF7 }, +{ 0x01FF8, cf01FF8 }, { 0x01FF9, cf01FF9 }, { 0x01FFA, cf01FFA }, { 0x01FFB, cf01FFB }, +{ 0x01FFC, cf01FFC }, { 0x02126, cf02126 }, { 0x0212A, cf0212A }, { 0x0212B, cf0212B }, +{ 0x02160, cf02160 }, { 0x02161, cf02161 }, { 0x02162, cf02162 }, { 0x02163, cf02163 }, +{ 0x02164, cf02164 }, { 0x02165, cf02165 }, { 0x02166, cf02166 }, { 0x02167, cf02167 }, +{ 0x02168, cf02168 }, { 0x02169, cf02169 }, { 0x0216A, cf0216A }, { 0x0216B, cf0216B }, +{ 0x0216C, cf0216C }, { 0x0216D, cf0216D }, { 0x0216E, cf0216E }, { 0x0216F, cf0216F }, +{ 0x024B6, cf024B6 }, { 0x024B7, cf024B7 }, { 0x024B8, cf024B8 }, { 0x024B9, cf024B9 }, +{ 0x024BA, cf024BA }, { 0x024BB, cf024BB }, { 0x024BC, cf024BC }, { 0x024BD, cf024BD }, +{ 0x024BE, cf024BE }, { 0x024BF, cf024BF }, { 0x024C0, cf024C0 }, { 0x024C1, cf024C1 }, +{ 0x024C2, cf024C2 }, { 0x024C3, cf024C3 }, { 0x024C4, cf024C4 }, { 0x024C5, cf024C5 }, +{ 0x024C6, cf024C6 }, { 0x024C7, cf024C7 }, { 0x024C8, cf024C8 }, { 0x024C9, cf024C9 }, +{ 0x024CA, cf024CA }, { 0x024CB, cf024CB }, { 0x024CC, cf024CC }, { 0x024CD, cf024CD }, +{ 0x024CE, cf024CE }, { 0x024CF, cf024CF }, { 0x02C00, cf02C00 }, { 0x02C01, cf02C01 }, +{ 0x02C02, cf02C02 }, { 0x02C03, cf02C03 }, { 0x02C04, cf02C04 }, { 0x02C05, cf02C05 }, +{ 0x02C06, cf02C06 }, { 0x02C07, cf02C07 }, { 0x02C08, cf02C08 }, { 0x02C09, cf02C09 }, +{ 0x02C0A, cf02C0A }, { 0x02C0B, cf02C0B }, { 0x02C0C, cf02C0C }, { 0x02C0D, cf02C0D }, +{ 0x02C0E, cf02C0E }, { 0x02C0F, cf02C0F }, { 0x02C10, cf02C10 }, { 0x02C11, cf02C11 }, +{ 0x02C12, cf02C12 }, { 0x02C13, cf02C13 }, { 0x02C14, cf02C14 }, { 0x02C15, cf02C15 }, +{ 0x02C16, cf02C16 }, { 0x02C17, cf02C17 }, { 0x02C18, cf02C18 }, { 0x02C19, cf02C19 }, +{ 0x02C1A, cf02C1A }, { 0x02C1B, cf02C1B }, { 0x02C1C, cf02C1C }, { 0x02C1D, cf02C1D }, +{ 0x02C1E, cf02C1E }, { 0x02C1F, cf02C1F }, { 0x02C20, cf02C20 }, { 0x02C21, cf02C21 }, +{ 0x02C22, cf02C22 }, { 0x02C23, cf02C23 }, { 0x02C24, cf02C24 }, { 0x02C25, cf02C25 }, +{ 0x02C26, cf02C26 }, { 0x02C27, cf02C27 }, { 0x02C28, cf02C28 }, { 0x02C29, cf02C29 }, +{ 0x02C2A, cf02C2A }, { 0x02C2B, cf02C2B }, { 0x02C2C, cf02C2C }, { 0x02C2D, cf02C2D }, +{ 0x02C2E, cf02C2E }, { 0x02C80, cf02C80 }, { 0x02C82, cf02C82 }, { 0x02C84, cf02C84 }, +{ 0x02C86, cf02C86 }, { 0x02C88, cf02C88 }, { 0x02C8A, cf02C8A }, { 0x02C8C, cf02C8C }, +{ 0x02C8E, cf02C8E }, { 0x02C90, cf02C90 }, { 0x02C92, cf02C92 }, { 0x02C94, cf02C94 }, +{ 0x02C96, cf02C96 }, { 0x02C98, cf02C98 }, { 0x02C9A, cf02C9A }, { 0x02C9C, cf02C9C }, +{ 0x02C9E, cf02C9E }, { 0x02CA0, cf02CA0 }, { 0x02CA2, cf02CA2 }, { 0x02CA4, cf02CA4 }, +{ 0x02CA6, cf02CA6 }, { 0x02CA8, cf02CA8 }, { 0x02CAA, cf02CAA }, { 0x02CAC, cf02CAC }, +{ 0x02CAE, cf02CAE }, { 0x02CB0, cf02CB0 }, { 0x02CB2, cf02CB2 }, { 0x02CB4, cf02CB4 }, +{ 0x02CB6, cf02CB6 }, { 0x02CB8, cf02CB8 }, { 0x02CBA, cf02CBA }, { 0x02CBC, cf02CBC }, +{ 0x02CBE, cf02CBE }, { 0x02CC0, cf02CC0 }, { 0x02CC2, cf02CC2 }, { 0x02CC4, cf02CC4 }, +{ 0x02CC6, cf02CC6 }, { 0x02CC8, cf02CC8 }, { 0x02CCA, cf02CCA }, { 0x02CCC, cf02CCC }, +{ 0x02CCE, cf02CCE }, { 0x02CD0, cf02CD0 }, { 0x02CD2, cf02CD2 }, { 0x02CD4, cf02CD4 }, +{ 0x02CD6, cf02CD6 }, { 0x02CD8, cf02CD8 }, { 0x02CDA, cf02CDA }, { 0x02CDC, cf02CDC }, +{ 0x02CDE, cf02CDE }, { 0x02CE0, cf02CE0 }, { 0x02CE2, cf02CE2 }, { 0x0FB00, cf0FB00 }, +{ 0x0FB01, cf0FB01 }, { 0x0FB02, cf0FB02 }, { 0x0FB03, cf0FB03 }, { 0x0FB04, cf0FB04 }, +{ 0x0FB05, cf0FB05 }, { 0x0FB06, cf0FB06 }, { 0x0FB13, cf0FB13 }, { 0x0FB14, cf0FB14 }, +{ 0x0FB15, cf0FB15 }, { 0x0FB16, cf0FB16 }, { 0x0FB17, cf0FB17 }, { 0x0FF21, cf0FF21 }, +{ 0x0FF22, cf0FF22 }, { 0x0FF23, cf0FF23 }, { 0x0FF24, cf0FF24 }, { 0x0FF25, cf0FF25 }, +{ 0x0FF26, cf0FF26 }, { 0x0FF27, cf0FF27 }, { 0x0FF28, cf0FF28 }, { 0x0FF29, cf0FF29 }, +{ 0x0FF2A, cf0FF2A }, { 0x0FF2B, cf0FF2B }, { 0x0FF2C, cf0FF2C }, { 0x0FF2D, cf0FF2D }, +{ 0x0FF2E, cf0FF2E }, { 0x0FF2F, cf0FF2F }, { 0x0FF30, cf0FF30 }, { 0x0FF31, cf0FF31 }, +{ 0x0FF32, cf0FF32 }, { 0x0FF33, cf0FF33 }, { 0x0FF34, cf0FF34 }, { 0x0FF35, cf0FF35 }, +{ 0x0FF36, cf0FF36 }, { 0x0FF37, cf0FF37 }, { 0x0FF38, cf0FF38 }, { 0x0FF39, cf0FF39 }, +{ 0x0FF3A, cf0FF3A }, { 0x10400, cf10400 }, { 0x10401, cf10401 }, { 0x10402, cf10402 }, +{ 0x10403, cf10403 }, { 0x10404, cf10404 }, { 0x10405, cf10405 }, { 0x10406, cf10406 }, +{ 0x10407, cf10407 }, { 0x10408, cf10408 }, { 0x10409, cf10409 }, { 0x1040A, cf1040A }, +{ 0x1040B, cf1040B }, { 0x1040C, cf1040C }, { 0x1040D, cf1040D }, { 0x1040E, cf1040E }, +{ 0x1040F, cf1040F }, { 0x10410, cf10410 }, { 0x10411, cf10411 }, { 0x10412, cf10412 }, +{ 0x10413, cf10413 }, { 0x10414, cf10414 }, { 0x10415, cf10415 }, { 0x10416, cf10416 }, +{ 0x10417, cf10417 }, { 0x10418, cf10418 }, { 0x10419, cf10419 }, { 0x1041A, cf1041A }, +{ 0x1041B, cf1041B }, { 0x1041C, cf1041C }, { 0x1041D, cf1041D }, { 0x1041E, cf1041E }, +{ 0x1041F, cf1041F }, { 0x10420, cf10420 }, { 0x10421, cf10421 }, { 0x10422, cf10422 }, +{ 0x10423, cf10423 }, { 0x10424, cf10424 }, { 0x10425, cf10425 }, { 0x10426, cf10426 }, +{ 0x10427, cf10427 } +}; + +unsigned int *CaseFoldTransform::getCaseFold(unsigned int ch) +{ + if(ch < caseFoldDirectTableSize) { + return caseFoldDirectTable[ch]; + } + + // Binary search in the g_caseFoldTable table + unsigned int min = 0; + unsigned int max = caseFoldTableSize; + unsigned int middle; + int cmp; + + while(min < max) { + middle = (max + min) >> 1; + + cmp = caseFoldTable[middle].ch - ch; + if(cmp > 0) max = middle; + else if(cmp < 0) { + min = middle + 1; + } + else { + return caseFoldTable[middle].dest; + } + } + + return 0; +} diff --git a/src/utils/UCANormalizer4.cpp b/src/utils/UCANormalizer4.cpp new file mode 100644 index 00000000..9c37a48b --- /dev/null +++ b/src/utils/UCANormalizer4.cpp @@ -0,0 +1,2610 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: UCANormalizer4.cpp,v 1.2 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include + +static unsigned int lc00041[] = { 0x00061, 0x00000 }; +static unsigned int lc00042[] = { 0x00062, 0x00000 }; +static unsigned int lc00043[] = { 0x00063, 0x00000 }; +static unsigned int lc00044[] = { 0x00064, 0x00000 }; +static unsigned int lc00045[] = { 0x00065, 0x00000 }; +static unsigned int lc00046[] = { 0x00066, 0x00000 }; +static unsigned int lc00047[] = { 0x00067, 0x00000 }; +static unsigned int lc00048[] = { 0x00068, 0x00000 }; +static unsigned int lc00049[] = { 0x00069, 0x00000 }; +static unsigned int lc0004A[] = { 0x0006A, 0x00000 }; +static unsigned int lc0004B[] = { 0x0006B, 0x00000 }; +static unsigned int lc0004C[] = { 0x0006C, 0x00000 }; +static unsigned int lc0004D[] = { 0x0006D, 0x00000 }; +static unsigned int lc0004E[] = { 0x0006E, 0x00000 }; +static unsigned int lc0004F[] = { 0x0006F, 0x00000 }; +static unsigned int lc00050[] = { 0x00070, 0x00000 }; +static unsigned int lc00051[] = { 0x00071, 0x00000 }; +static unsigned int lc00052[] = { 0x00072, 0x00000 }; +static unsigned int lc00053[] = { 0x00073, 0x00000 }; +static unsigned int lc00054[] = { 0x00074, 0x00000 }; +static unsigned int lc00055[] = { 0x00075, 0x00000 }; +static unsigned int lc00056[] = { 0x00076, 0x00000 }; +static unsigned int lc00057[] = { 0x00077, 0x00000 }; +static unsigned int lc00058[] = { 0x00078, 0x00000 }; +static unsigned int lc00059[] = { 0x00079, 0x00000 }; +static unsigned int lc0005A[] = { 0x0007A, 0x00000 }; +static unsigned int lc000C0[] = { 0x000E0, 0x00000 }; +static unsigned int lc000C1[] = { 0x000E1, 0x00000 }; +static unsigned int lc000C2[] = { 0x000E2, 0x00000 }; +static unsigned int lc000C3[] = { 0x000E3, 0x00000 }; +static unsigned int lc000C4[] = { 0x000E4, 0x00000 }; +static unsigned int lc000C5[] = { 0x000E5, 0x00000 }; +static unsigned int lc000C6[] = { 0x000E6, 0x00000 }; +static unsigned int lc000C7[] = { 0x000E7, 0x00000 }; +static unsigned int lc000C8[] = { 0x000E8, 0x00000 }; +static unsigned int lc000C9[] = { 0x000E9, 0x00000 }; +static unsigned int lc000CA[] = { 0x000EA, 0x00000 }; +static unsigned int lc000CB[] = { 0x000EB, 0x00000 }; +static unsigned int lc000CC[] = { 0x000EC, 0x00000 }; +static unsigned int lc000CD[] = { 0x000ED, 0x00000 }; +static unsigned int lc000CE[] = { 0x000EE, 0x00000 }; +static unsigned int lc000CF[] = { 0x000EF, 0x00000 }; +static unsigned int lc000D0[] = { 0x000F0, 0x00000 }; +static unsigned int lc000D1[] = { 0x000F1, 0x00000 }; +static unsigned int lc000D2[] = { 0x000F2, 0x00000 }; +static unsigned int lc000D3[] = { 0x000F3, 0x00000 }; +static unsigned int lc000D4[] = { 0x000F4, 0x00000 }; +static unsigned int lc000D5[] = { 0x000F5, 0x00000 }; +static unsigned int lc000D6[] = { 0x000F6, 0x00000 }; +static unsigned int lc000D8[] = { 0x000F8, 0x00000 }; +static unsigned int lc000D9[] = { 0x000F9, 0x00000 }; +static unsigned int lc000DA[] = { 0x000FA, 0x00000 }; +static unsigned int lc000DB[] = { 0x000FB, 0x00000 }; +static unsigned int lc000DC[] = { 0x000FC, 0x00000 }; +static unsigned int lc000DD[] = { 0x000FD, 0x00000 }; +static unsigned int lc000DE[] = { 0x000FE, 0x00000 }; +static unsigned int lc000DF[] = { 0x000DF, 0x00000 }; +static unsigned int lc00100[] = { 0x00101, 0x00000 }; +static unsigned int lc00102[] = { 0x00103, 0x00000 }; +static unsigned int lc00104[] = { 0x00105, 0x00000 }; +static unsigned int lc00106[] = { 0x00107, 0x00000 }; +static unsigned int lc00108[] = { 0x00109, 0x00000 }; +static unsigned int lc0010A[] = { 0x0010B, 0x00000 }; +static unsigned int lc0010C[] = { 0x0010D, 0x00000 }; +static unsigned int lc0010E[] = { 0x0010F, 0x00000 }; +static unsigned int lc00110[] = { 0x00111, 0x00000 }; +static unsigned int lc00112[] = { 0x00113, 0x00000 }; +static unsigned int lc00114[] = { 0x00115, 0x00000 }; +static unsigned int lc00116[] = { 0x00117, 0x00000 }; +static unsigned int lc00118[] = { 0x00119, 0x00000 }; +static unsigned int lc0011A[] = { 0x0011B, 0x00000 }; +static unsigned int lc0011C[] = { 0x0011D, 0x00000 }; +static unsigned int lc0011E[] = { 0x0011F, 0x00000 }; +static unsigned int lc00120[] = { 0x00121, 0x00000 }; +static unsigned int lc00122[] = { 0x00123, 0x00000 }; +static unsigned int lc00124[] = { 0x00125, 0x00000 }; +static unsigned int lc00126[] = { 0x00127, 0x00000 }; +static unsigned int lc00128[] = { 0x00129, 0x00000 }; +static unsigned int lc0012A[] = { 0x0012B, 0x00000 }; +static unsigned int lc0012C[] = { 0x0012D, 0x00000 }; +static unsigned int lc0012E[] = { 0x0012F, 0x00000 }; +static unsigned int lc00130[] = { 0x00069, 0x00307, 0x00000 }; +static unsigned int lc00132[] = { 0x00133, 0x00000 }; +static unsigned int lc00134[] = { 0x00135, 0x00000 }; +static unsigned int lc00136[] = { 0x00137, 0x00000 }; +static unsigned int lc00139[] = { 0x0013A, 0x00000 }; +static unsigned int lc0013B[] = { 0x0013C, 0x00000 }; +static unsigned int lc0013D[] = { 0x0013E, 0x00000 }; +static unsigned int lc0013F[] = { 0x00140, 0x00000 }; +static unsigned int lc00141[] = { 0x00142, 0x00000 }; +static unsigned int lc00143[] = { 0x00144, 0x00000 }; +static unsigned int lc00145[] = { 0x00146, 0x00000 }; +static unsigned int lc00147[] = { 0x00148, 0x00000 }; +static unsigned int lc00149[] = { 0x00149, 0x00000 }; +static unsigned int lc0014A[] = { 0x0014B, 0x00000 }; +static unsigned int lc0014C[] = { 0x0014D, 0x00000 }; +static unsigned int lc0014E[] = { 0x0014F, 0x00000 }; +static unsigned int lc00150[] = { 0x00151, 0x00000 }; +static unsigned int lc00152[] = { 0x00153, 0x00000 }; +static unsigned int lc00154[] = { 0x00155, 0x00000 }; +static unsigned int lc00156[] = { 0x00157, 0x00000 }; +static unsigned int lc00158[] = { 0x00159, 0x00000 }; +static unsigned int lc0015A[] = { 0x0015B, 0x00000 }; +static unsigned int lc0015C[] = { 0x0015D, 0x00000 }; +static unsigned int lc0015E[] = { 0x0015F, 0x00000 }; +static unsigned int lc00160[] = { 0x00161, 0x00000 }; +static unsigned int lc00162[] = { 0x00163, 0x00000 }; +static unsigned int lc00164[] = { 0x00165, 0x00000 }; +static unsigned int lc00166[] = { 0x00167, 0x00000 }; +static unsigned int lc00168[] = { 0x00169, 0x00000 }; +static unsigned int lc0016A[] = { 0x0016B, 0x00000 }; +static unsigned int lc0016C[] = { 0x0016D, 0x00000 }; +static unsigned int lc0016E[] = { 0x0016F, 0x00000 }; +static unsigned int lc00170[] = { 0x00171, 0x00000 }; +static unsigned int lc00172[] = { 0x00173, 0x00000 }; +static unsigned int lc00174[] = { 0x00175, 0x00000 }; +static unsigned int lc00176[] = { 0x00177, 0x00000 }; +static unsigned int lc00178[] = { 0x000FF, 0x00000 }; +static unsigned int lc00179[] = { 0x0017A, 0x00000 }; +static unsigned int lc0017B[] = { 0x0017C, 0x00000 }; +static unsigned int lc0017D[] = { 0x0017E, 0x00000 }; +static unsigned int lc00181[] = { 0x00253, 0x00000 }; +static unsigned int lc00182[] = { 0x00183, 0x00000 }; +static unsigned int lc00184[] = { 0x00185, 0x00000 }; +static unsigned int lc00186[] = { 0x00254, 0x00000 }; +static unsigned int lc00187[] = { 0x00188, 0x00000 }; +static unsigned int lc00189[] = { 0x00256, 0x00000 }; +static unsigned int lc0018A[] = { 0x00257, 0x00000 }; +static unsigned int lc0018B[] = { 0x0018C, 0x00000 }; +static unsigned int lc0018E[] = { 0x001DD, 0x00000 }; +static unsigned int lc0018F[] = { 0x00259, 0x00000 }; +static unsigned int lc00190[] = { 0x0025B, 0x00000 }; +static unsigned int lc00191[] = { 0x00192, 0x00000 }; +static unsigned int lc00193[] = { 0x00260, 0x00000 }; +static unsigned int lc00194[] = { 0x00263, 0x00000 }; +static unsigned int lc00196[] = { 0x00269, 0x00000 }; +static unsigned int lc00197[] = { 0x00268, 0x00000 }; +static unsigned int lc00198[] = { 0x00199, 0x00000 }; +static unsigned int lc0019C[] = { 0x0026F, 0x00000 }; +static unsigned int lc0019D[] = { 0x00272, 0x00000 }; +static unsigned int lc0019F[] = { 0x00275, 0x00000 }; +static unsigned int lc001A0[] = { 0x001A1, 0x00000 }; +static unsigned int lc001A2[] = { 0x001A3, 0x00000 }; +static unsigned int lc001A4[] = { 0x001A5, 0x00000 }; +static unsigned int lc001A6[] = { 0x00280, 0x00000 }; +static unsigned int lc001A7[] = { 0x001A8, 0x00000 }; +static unsigned int lc001A9[] = { 0x00283, 0x00000 }; +static unsigned int lc001AC[] = { 0x001AD, 0x00000 }; +static unsigned int lc001AE[] = { 0x00288, 0x00000 }; +static unsigned int lc001AF[] = { 0x001B0, 0x00000 }; +static unsigned int lc001B1[] = { 0x0028A, 0x00000 }; +static unsigned int lc001B2[] = { 0x0028B, 0x00000 }; +static unsigned int lc001B3[] = { 0x001B4, 0x00000 }; +static unsigned int lc001B5[] = { 0x001B6, 0x00000 }; +static unsigned int lc001B7[] = { 0x00292, 0x00000 }; +static unsigned int lc001B8[] = { 0x001B9, 0x00000 }; +static unsigned int lc001BC[] = { 0x001BD, 0x00000 }; +static unsigned int lc001C4[] = { 0x001C6, 0x00000 }; +static unsigned int lc001C5[] = { 0x001C6, 0x00000 }; +static unsigned int lc001C7[] = { 0x001C9, 0x00000 }; +static unsigned int lc001C8[] = { 0x001C9, 0x00000 }; +static unsigned int lc001CA[] = { 0x001CC, 0x00000 }; +static unsigned int lc001CB[] = { 0x001CC, 0x00000 }; +static unsigned int lc001CD[] = { 0x001CE, 0x00000 }; +static unsigned int lc001CF[] = { 0x001D0, 0x00000 }; +static unsigned int lc001D1[] = { 0x001D2, 0x00000 }; +static unsigned int lc001D3[] = { 0x001D4, 0x00000 }; +static unsigned int lc001D5[] = { 0x001D6, 0x00000 }; +static unsigned int lc001D7[] = { 0x001D8, 0x00000 }; +static unsigned int lc001D9[] = { 0x001DA, 0x00000 }; +static unsigned int lc001DB[] = { 0x001DC, 0x00000 }; +static unsigned int lc001DE[] = { 0x001DF, 0x00000 }; +static unsigned int lc001E0[] = { 0x001E1, 0x00000 }; +static unsigned int lc001E2[] = { 0x001E3, 0x00000 }; +static unsigned int lc001E4[] = { 0x001E5, 0x00000 }; +static unsigned int lc001E6[] = { 0x001E7, 0x00000 }; +static unsigned int lc001E8[] = { 0x001E9, 0x00000 }; +static unsigned int lc001EA[] = { 0x001EB, 0x00000 }; +static unsigned int lc001EC[] = { 0x001ED, 0x00000 }; +static unsigned int lc001EE[] = { 0x001EF, 0x00000 }; +static unsigned int lc001F0[] = { 0x001F0, 0x00000 }; +static unsigned int lc001F1[] = { 0x001F3, 0x00000 }; +static unsigned int lc001F2[] = { 0x001F3, 0x00000 }; +static unsigned int lc001F4[] = { 0x001F5, 0x00000 }; +static unsigned int lc001F6[] = { 0x00195, 0x00000 }; +static unsigned int lc001F7[] = { 0x001BF, 0x00000 }; +static unsigned int lc001F8[] = { 0x001F9, 0x00000 }; +static unsigned int lc001FA[] = { 0x001FB, 0x00000 }; +static unsigned int lc001FC[] = { 0x001FD, 0x00000 }; +static unsigned int lc001FE[] = { 0x001FF, 0x00000 }; +static unsigned int lc00200[] = { 0x00201, 0x00000 }; +static unsigned int lc00202[] = { 0x00203, 0x00000 }; +static unsigned int lc00204[] = { 0x00205, 0x00000 }; +static unsigned int lc00206[] = { 0x00207, 0x00000 }; +static unsigned int lc00208[] = { 0x00209, 0x00000 }; +static unsigned int lc0020A[] = { 0x0020B, 0x00000 }; +static unsigned int lc0020C[] = { 0x0020D, 0x00000 }; +static unsigned int lc0020E[] = { 0x0020F, 0x00000 }; +static unsigned int lc00210[] = { 0x00211, 0x00000 }; +static unsigned int lc00212[] = { 0x00213, 0x00000 }; +static unsigned int lc00214[] = { 0x00215, 0x00000 }; +static unsigned int lc00216[] = { 0x00217, 0x00000 }; +static unsigned int lc00218[] = { 0x00219, 0x00000 }; +static unsigned int lc0021A[] = { 0x0021B, 0x00000 }; +static unsigned int lc0021C[] = { 0x0021D, 0x00000 }; +static unsigned int lc0021E[] = { 0x0021F, 0x00000 }; +static unsigned int lc00220[] = { 0x0019E, 0x00000 }; +static unsigned int lc00222[] = { 0x00223, 0x00000 }; +static unsigned int lc00224[] = { 0x00225, 0x00000 }; +static unsigned int lc00226[] = { 0x00227, 0x00000 }; +static unsigned int lc00228[] = { 0x00229, 0x00000 }; +static unsigned int lc0022A[] = { 0x0022B, 0x00000 }; +static unsigned int lc0022C[] = { 0x0022D, 0x00000 }; +static unsigned int lc0022E[] = { 0x0022F, 0x00000 }; +static unsigned int lc00230[] = { 0x00231, 0x00000 }; +static unsigned int lc00232[] = { 0x00233, 0x00000 }; +static unsigned int lc0023A[] = { 0x02C65, 0x00000 }; +static unsigned int lc0023B[] = { 0x0023C, 0x00000 }; +static unsigned int lc0023D[] = { 0x0019A, 0x00000 }; +static unsigned int lc0023E[] = { 0x02C66, 0x00000 }; +static unsigned int lc00241[] = { 0x00242, 0x00000 }; +static unsigned int lc00243[] = { 0x00180, 0x00000 }; +static unsigned int lc00244[] = { 0x00289, 0x00000 }; +static unsigned int lc00245[] = { 0x0028C, 0x00000 }; +static unsigned int lc00246[] = { 0x00247, 0x00000 }; +static unsigned int lc00248[] = { 0x00249, 0x00000 }; +static unsigned int lc0024A[] = { 0x0024B, 0x00000 }; +static unsigned int lc0024C[] = { 0x0024D, 0x00000 }; +static unsigned int lc0024E[] = { 0x0024F, 0x00000 }; +static unsigned int lc00386[] = { 0x003AC, 0x00000 }; +static unsigned int lc00388[] = { 0x003AD, 0x00000 }; +static unsigned int lc00389[] = { 0x003AE, 0x00000 }; +static unsigned int lc0038A[] = { 0x003AF, 0x00000 }; +static unsigned int lc0038C[] = { 0x003CC, 0x00000 }; +static unsigned int lc0038E[] = { 0x003CD, 0x00000 }; +static unsigned int lc0038F[] = { 0x003CE, 0x00000 }; +static unsigned int lc00390[] = { 0x00390, 0x00000 }; +static unsigned int lc00391[] = { 0x003B1, 0x00000 }; +static unsigned int lc00392[] = { 0x003B2, 0x00000 }; +static unsigned int lc00393[] = { 0x003B3, 0x00000 }; +static unsigned int lc00394[] = { 0x003B4, 0x00000 }; +static unsigned int lc00395[] = { 0x003B5, 0x00000 }; +static unsigned int lc00396[] = { 0x003B6, 0x00000 }; +static unsigned int lc00397[] = { 0x003B7, 0x00000 }; +static unsigned int lc00398[] = { 0x003B8, 0x00000 }; +static unsigned int lc00399[] = { 0x003B9, 0x00000 }; +static unsigned int lc0039A[] = { 0x003BA, 0x00000 }; +static unsigned int lc0039B[] = { 0x003BB, 0x00000 }; +static unsigned int lc0039C[] = { 0x003BC, 0x00000 }; +static unsigned int lc0039D[] = { 0x003BD, 0x00000 }; +static unsigned int lc0039E[] = { 0x003BE, 0x00000 }; +static unsigned int lc0039F[] = { 0x003BF, 0x00000 }; +static unsigned int lc003A0[] = { 0x003C0, 0x00000 }; +static unsigned int lc003A1[] = { 0x003C1, 0x00000 }; +static unsigned int lc003A3[] = { 0x003C3, 0x00000 }; +static unsigned int lc003A4[] = { 0x003C4, 0x00000 }; +static unsigned int lc003A5[] = { 0x003C5, 0x00000 }; +static unsigned int lc003A6[] = { 0x003C6, 0x00000 }; +static unsigned int lc003A7[] = { 0x003C7, 0x00000 }; +static unsigned int lc003A8[] = { 0x003C8, 0x00000 }; +static unsigned int lc003A9[] = { 0x003C9, 0x00000 }; +static unsigned int lc003AA[] = { 0x003CA, 0x00000 }; +static unsigned int lc003AB[] = { 0x003CB, 0x00000 }; +static unsigned int lc003B0[] = { 0x003B0, 0x00000 }; +static unsigned int lc003D8[] = { 0x003D9, 0x00000 }; +static unsigned int lc003DA[] = { 0x003DB, 0x00000 }; +static unsigned int lc003DC[] = { 0x003DD, 0x00000 }; +static unsigned int lc003DE[] = { 0x003DF, 0x00000 }; +static unsigned int lc003E0[] = { 0x003E1, 0x00000 }; +static unsigned int lc003E2[] = { 0x003E3, 0x00000 }; +static unsigned int lc003E4[] = { 0x003E5, 0x00000 }; +static unsigned int lc003E6[] = { 0x003E7, 0x00000 }; +static unsigned int lc003E8[] = { 0x003E9, 0x00000 }; +static unsigned int lc003EA[] = { 0x003EB, 0x00000 }; +static unsigned int lc003EC[] = { 0x003ED, 0x00000 }; +static unsigned int lc003EE[] = { 0x003EF, 0x00000 }; +static unsigned int lc003F4[] = { 0x003B8, 0x00000 }; +static unsigned int lc003F7[] = { 0x003F8, 0x00000 }; +static unsigned int lc003F9[] = { 0x003F2, 0x00000 }; +static unsigned int lc003FA[] = { 0x003FB, 0x00000 }; +static unsigned int lc003FD[] = { 0x0037B, 0x00000 }; +static unsigned int lc003FE[] = { 0x0037C, 0x00000 }; +static unsigned int lc003FF[] = { 0x0037D, 0x00000 }; +static unsigned int lc00400[] = { 0x00450, 0x00000 }; +static unsigned int lc00401[] = { 0x00451, 0x00000 }; +static unsigned int lc00402[] = { 0x00452, 0x00000 }; +static unsigned int lc00403[] = { 0x00453, 0x00000 }; +static unsigned int lc00404[] = { 0x00454, 0x00000 }; +static unsigned int lc00405[] = { 0x00455, 0x00000 }; +static unsigned int lc00406[] = { 0x00456, 0x00000 }; +static unsigned int lc00407[] = { 0x00457, 0x00000 }; +static unsigned int lc00408[] = { 0x00458, 0x00000 }; +static unsigned int lc00409[] = { 0x00459, 0x00000 }; +static unsigned int lc0040A[] = { 0x0045A, 0x00000 }; +static unsigned int lc0040B[] = { 0x0045B, 0x00000 }; +static unsigned int lc0040C[] = { 0x0045C, 0x00000 }; +static unsigned int lc0040D[] = { 0x0045D, 0x00000 }; +static unsigned int lc0040E[] = { 0x0045E, 0x00000 }; +static unsigned int lc0040F[] = { 0x0045F, 0x00000 }; +static unsigned int lc00410[] = { 0x00430, 0x00000 }; +static unsigned int lc00411[] = { 0x00431, 0x00000 }; +static unsigned int lc00412[] = { 0x00432, 0x00000 }; +static unsigned int lc00413[] = { 0x00433, 0x00000 }; +static unsigned int lc00414[] = { 0x00434, 0x00000 }; +static unsigned int lc00415[] = { 0x00435, 0x00000 }; +static unsigned int lc00416[] = { 0x00436, 0x00000 }; +static unsigned int lc00417[] = { 0x00437, 0x00000 }; +static unsigned int lc00418[] = { 0x00438, 0x00000 }; +static unsigned int lc00419[] = { 0x00439, 0x00000 }; +static unsigned int lc0041A[] = { 0x0043A, 0x00000 }; +static unsigned int lc0041B[] = { 0x0043B, 0x00000 }; +static unsigned int lc0041C[] = { 0x0043C, 0x00000 }; +static unsigned int lc0041D[] = { 0x0043D, 0x00000 }; +static unsigned int lc0041E[] = { 0x0043E, 0x00000 }; +static unsigned int lc0041F[] = { 0x0043F, 0x00000 }; +static unsigned int lc00420[] = { 0x00440, 0x00000 }; +static unsigned int lc00421[] = { 0x00441, 0x00000 }; +static unsigned int lc00422[] = { 0x00442, 0x00000 }; +static unsigned int lc00423[] = { 0x00443, 0x00000 }; +static unsigned int lc00424[] = { 0x00444, 0x00000 }; +static unsigned int lc00425[] = { 0x00445, 0x00000 }; +static unsigned int lc00426[] = { 0x00446, 0x00000 }; +static unsigned int lc00427[] = { 0x00447, 0x00000 }; +static unsigned int lc00428[] = { 0x00448, 0x00000 }; +static unsigned int lc00429[] = { 0x00449, 0x00000 }; +static unsigned int lc0042A[] = { 0x0044A, 0x00000 }; +static unsigned int lc0042B[] = { 0x0044B, 0x00000 }; +static unsigned int lc0042C[] = { 0x0044C, 0x00000 }; +static unsigned int lc0042D[] = { 0x0044D, 0x00000 }; +static unsigned int lc0042E[] = { 0x0044E, 0x00000 }; +static unsigned int lc0042F[] = { 0x0044F, 0x00000 }; +static unsigned int lc00460[] = { 0x00461, 0x00000 }; +static unsigned int lc00462[] = { 0x00463, 0x00000 }; +static unsigned int lc00464[] = { 0x00465, 0x00000 }; +static unsigned int lc00466[] = { 0x00467, 0x00000 }; +static unsigned int lc00468[] = { 0x00469, 0x00000 }; +static unsigned int lc0046A[] = { 0x0046B, 0x00000 }; +static unsigned int lc0046C[] = { 0x0046D, 0x00000 }; +static unsigned int lc0046E[] = { 0x0046F, 0x00000 }; +static unsigned int lc00470[] = { 0x00471, 0x00000 }; +static unsigned int lc00472[] = { 0x00473, 0x00000 }; +static unsigned int lc00474[] = { 0x00475, 0x00000 }; +static unsigned int lc00476[] = { 0x00477, 0x00000 }; +static unsigned int lc00478[] = { 0x00479, 0x00000 }; +static unsigned int lc0047A[] = { 0x0047B, 0x00000 }; +static unsigned int lc0047C[] = { 0x0047D, 0x00000 }; +static unsigned int lc0047E[] = { 0x0047F, 0x00000 }; +static unsigned int lc00480[] = { 0x00481, 0x00000 }; +static unsigned int lc0048A[] = { 0x0048B, 0x00000 }; +static unsigned int lc0048C[] = { 0x0048D, 0x00000 }; +static unsigned int lc0048E[] = { 0x0048F, 0x00000 }; +static unsigned int lc00490[] = { 0x00491, 0x00000 }; +static unsigned int lc00492[] = { 0x00493, 0x00000 }; +static unsigned int lc00494[] = { 0x00495, 0x00000 }; +static unsigned int lc00496[] = { 0x00497, 0x00000 }; +static unsigned int lc00498[] = { 0x00499, 0x00000 }; +static unsigned int lc0049A[] = { 0x0049B, 0x00000 }; +static unsigned int lc0049C[] = { 0x0049D, 0x00000 }; +static unsigned int lc0049E[] = { 0x0049F, 0x00000 }; +static unsigned int lc004A0[] = { 0x004A1, 0x00000 }; +static unsigned int lc004A2[] = { 0x004A3, 0x00000 }; +static unsigned int lc004A4[] = { 0x004A5, 0x00000 }; +static unsigned int lc004A6[] = { 0x004A7, 0x00000 }; +static unsigned int lc004A8[] = { 0x004A9, 0x00000 }; +static unsigned int lc004AA[] = { 0x004AB, 0x00000 }; +static unsigned int lc004AC[] = { 0x004AD, 0x00000 }; +static unsigned int lc004AE[] = { 0x004AF, 0x00000 }; +static unsigned int lc004B0[] = { 0x004B1, 0x00000 }; +static unsigned int lc004B2[] = { 0x004B3, 0x00000 }; +static unsigned int lc004B4[] = { 0x004B5, 0x00000 }; +static unsigned int lc004B6[] = { 0x004B7, 0x00000 }; +static unsigned int lc004B8[] = { 0x004B9, 0x00000 }; +static unsigned int lc004BA[] = { 0x004BB, 0x00000 }; +static unsigned int lc004BC[] = { 0x004BD, 0x00000 }; +static unsigned int lc004BE[] = { 0x004BF, 0x00000 }; +static unsigned int lc004C0[] = { 0x004CF, 0x00000 }; +static unsigned int lc004C1[] = { 0x004C2, 0x00000 }; +static unsigned int lc004C3[] = { 0x004C4, 0x00000 }; +static unsigned int lc004C5[] = { 0x004C6, 0x00000 }; +static unsigned int lc004C7[] = { 0x004C8, 0x00000 }; +static unsigned int lc004C9[] = { 0x004CA, 0x00000 }; +static unsigned int lc004CB[] = { 0x004CC, 0x00000 }; +static unsigned int lc004CD[] = { 0x004CE, 0x00000 }; +static unsigned int lc004D0[] = { 0x004D1, 0x00000 }; +static unsigned int lc004D2[] = { 0x004D3, 0x00000 }; +static unsigned int lc004D4[] = { 0x004D5, 0x00000 }; +static unsigned int lc004D6[] = { 0x004D7, 0x00000 }; +static unsigned int lc004D8[] = { 0x004D9, 0x00000 }; +static unsigned int lc004DA[] = { 0x004DB, 0x00000 }; +static unsigned int lc004DC[] = { 0x004DD, 0x00000 }; +static unsigned int lc004DE[] = { 0x004DF, 0x00000 }; +static unsigned int lc004E0[] = { 0x004E1, 0x00000 }; +static unsigned int lc004E2[] = { 0x004E3, 0x00000 }; +static unsigned int lc004E4[] = { 0x004E5, 0x00000 }; +static unsigned int lc004E6[] = { 0x004E7, 0x00000 }; +static unsigned int lc004E8[] = { 0x004E9, 0x00000 }; +static unsigned int lc004EA[] = { 0x004EB, 0x00000 }; +static unsigned int lc004EC[] = { 0x004ED, 0x00000 }; +static unsigned int lc004EE[] = { 0x004EF, 0x00000 }; +static unsigned int lc004F0[] = { 0x004F1, 0x00000 }; +static unsigned int lc004F2[] = { 0x004F3, 0x00000 }; +static unsigned int lc004F4[] = { 0x004F5, 0x00000 }; +static unsigned int lc004F6[] = { 0x004F7, 0x00000 }; +static unsigned int lc004F8[] = { 0x004F9, 0x00000 }; +static unsigned int lc004FA[] = { 0x004FB, 0x00000 }; +static unsigned int lc004FC[] = { 0x004FD, 0x00000 }; +static unsigned int lc004FE[] = { 0x004FF, 0x00000 }; +static unsigned int lc00500[] = { 0x00501, 0x00000 }; +static unsigned int lc00502[] = { 0x00503, 0x00000 }; +static unsigned int lc00504[] = { 0x00505, 0x00000 }; +static unsigned int lc00506[] = { 0x00507, 0x00000 }; +static unsigned int lc00508[] = { 0x00509, 0x00000 }; +static unsigned int lc0050A[] = { 0x0050B, 0x00000 }; +static unsigned int lc0050C[] = { 0x0050D, 0x00000 }; +static unsigned int lc0050E[] = { 0x0050F, 0x00000 }; +static unsigned int lc00510[] = { 0x00511, 0x00000 }; +static unsigned int lc00512[] = { 0x00513, 0x00000 }; +static unsigned int lc00531[] = { 0x00561, 0x00000 }; +static unsigned int lc00532[] = { 0x00562, 0x00000 }; +static unsigned int lc00533[] = { 0x00563, 0x00000 }; +static unsigned int lc00534[] = { 0x00564, 0x00000 }; +static unsigned int lc00535[] = { 0x00565, 0x00000 }; +static unsigned int lc00536[] = { 0x00566, 0x00000 }; +static unsigned int lc00537[] = { 0x00567, 0x00000 }; +static unsigned int lc00538[] = { 0x00568, 0x00000 }; +static unsigned int lc00539[] = { 0x00569, 0x00000 }; +static unsigned int lc0053A[] = { 0x0056A, 0x00000 }; +static unsigned int lc0053B[] = { 0x0056B, 0x00000 }; +static unsigned int lc0053C[] = { 0x0056C, 0x00000 }; +static unsigned int lc0053D[] = { 0x0056D, 0x00000 }; +static unsigned int lc0053E[] = { 0x0056E, 0x00000 }; +static unsigned int lc0053F[] = { 0x0056F, 0x00000 }; +static unsigned int lc00540[] = { 0x00570, 0x00000 }; +static unsigned int lc00541[] = { 0x00571, 0x00000 }; +static unsigned int lc00542[] = { 0x00572, 0x00000 }; +static unsigned int lc00543[] = { 0x00573, 0x00000 }; +static unsigned int lc00544[] = { 0x00574, 0x00000 }; +static unsigned int lc00545[] = { 0x00575, 0x00000 }; +static unsigned int lc00546[] = { 0x00576, 0x00000 }; +static unsigned int lc00547[] = { 0x00577, 0x00000 }; +static unsigned int lc00548[] = { 0x00578, 0x00000 }; +static unsigned int lc00549[] = { 0x00579, 0x00000 }; +static unsigned int lc0054A[] = { 0x0057A, 0x00000 }; +static unsigned int lc0054B[] = { 0x0057B, 0x00000 }; +static unsigned int lc0054C[] = { 0x0057C, 0x00000 }; +static unsigned int lc0054D[] = { 0x0057D, 0x00000 }; +static unsigned int lc0054E[] = { 0x0057E, 0x00000 }; +static unsigned int lc0054F[] = { 0x0057F, 0x00000 }; +static unsigned int lc00550[] = { 0x00580, 0x00000 }; +static unsigned int lc00551[] = { 0x00581, 0x00000 }; +static unsigned int lc00552[] = { 0x00582, 0x00000 }; +static unsigned int lc00553[] = { 0x00583, 0x00000 }; +static unsigned int lc00554[] = { 0x00584, 0x00000 }; +static unsigned int lc00555[] = { 0x00585, 0x00000 }; +static unsigned int lc00556[] = { 0x00586, 0x00000 }; +static unsigned int lc00587[] = { 0x00587, 0x00000 }; +static unsigned int lc010A0[] = { 0x02D00, 0x00000 }; +static unsigned int lc010A1[] = { 0x02D01, 0x00000 }; +static unsigned int lc010A2[] = { 0x02D02, 0x00000 }; +static unsigned int lc010A3[] = { 0x02D03, 0x00000 }; +static unsigned int lc010A4[] = { 0x02D04, 0x00000 }; +static unsigned int lc010A5[] = { 0x02D05, 0x00000 }; +static unsigned int lc010A6[] = { 0x02D06, 0x00000 }; +static unsigned int lc010A7[] = { 0x02D07, 0x00000 }; +static unsigned int lc010A8[] = { 0x02D08, 0x00000 }; +static unsigned int lc010A9[] = { 0x02D09, 0x00000 }; +static unsigned int lc010AA[] = { 0x02D0A, 0x00000 }; +static unsigned int lc010AB[] = { 0x02D0B, 0x00000 }; +static unsigned int lc010AC[] = { 0x02D0C, 0x00000 }; +static unsigned int lc010AD[] = { 0x02D0D, 0x00000 }; +static unsigned int lc010AE[] = { 0x02D0E, 0x00000 }; +static unsigned int lc010AF[] = { 0x02D0F, 0x00000 }; +static unsigned int lc010B0[] = { 0x02D10, 0x00000 }; +static unsigned int lc010B1[] = { 0x02D11, 0x00000 }; +static unsigned int lc010B2[] = { 0x02D12, 0x00000 }; +static unsigned int lc010B3[] = { 0x02D13, 0x00000 }; +static unsigned int lc010B4[] = { 0x02D14, 0x00000 }; +static unsigned int lc010B5[] = { 0x02D15, 0x00000 }; +static unsigned int lc010B6[] = { 0x02D16, 0x00000 }; +static unsigned int lc010B7[] = { 0x02D17, 0x00000 }; +static unsigned int lc010B8[] = { 0x02D18, 0x00000 }; +static unsigned int lc010B9[] = { 0x02D19, 0x00000 }; +static unsigned int lc010BA[] = { 0x02D1A, 0x00000 }; +static unsigned int lc010BB[] = { 0x02D1B, 0x00000 }; +static unsigned int lc010BC[] = { 0x02D1C, 0x00000 }; +static unsigned int lc010BD[] = { 0x02D1D, 0x00000 }; +static unsigned int lc010BE[] = { 0x02D1E, 0x00000 }; +static unsigned int lc010BF[] = { 0x02D1F, 0x00000 }; +static unsigned int lc010C0[] = { 0x02D20, 0x00000 }; +static unsigned int lc010C1[] = { 0x02D21, 0x00000 }; +static unsigned int lc010C2[] = { 0x02D22, 0x00000 }; +static unsigned int lc010C3[] = { 0x02D23, 0x00000 }; +static unsigned int lc010C4[] = { 0x02D24, 0x00000 }; +static unsigned int lc010C5[] = { 0x02D25, 0x00000 }; +static unsigned int lc01E00[] = { 0x01E01, 0x00000 }; +static unsigned int lc01E02[] = { 0x01E03, 0x00000 }; +static unsigned int lc01E04[] = { 0x01E05, 0x00000 }; +static unsigned int lc01E06[] = { 0x01E07, 0x00000 }; +static unsigned int lc01E08[] = { 0x01E09, 0x00000 }; +static unsigned int lc01E0A[] = { 0x01E0B, 0x00000 }; +static unsigned int lc01E0C[] = { 0x01E0D, 0x00000 }; +static unsigned int lc01E0E[] = { 0x01E0F, 0x00000 }; +static unsigned int lc01E10[] = { 0x01E11, 0x00000 }; +static unsigned int lc01E12[] = { 0x01E13, 0x00000 }; +static unsigned int lc01E14[] = { 0x01E15, 0x00000 }; +static unsigned int lc01E16[] = { 0x01E17, 0x00000 }; +static unsigned int lc01E18[] = { 0x01E19, 0x00000 }; +static unsigned int lc01E1A[] = { 0x01E1B, 0x00000 }; +static unsigned int lc01E1C[] = { 0x01E1D, 0x00000 }; +static unsigned int lc01E1E[] = { 0x01E1F, 0x00000 }; +static unsigned int lc01E20[] = { 0x01E21, 0x00000 }; +static unsigned int lc01E22[] = { 0x01E23, 0x00000 }; +static unsigned int lc01E24[] = { 0x01E25, 0x00000 }; +static unsigned int lc01E26[] = { 0x01E27, 0x00000 }; +static unsigned int lc01E28[] = { 0x01E29, 0x00000 }; +static unsigned int lc01E2A[] = { 0x01E2B, 0x00000 }; +static unsigned int lc01E2C[] = { 0x01E2D, 0x00000 }; +static unsigned int lc01E2E[] = { 0x01E2F, 0x00000 }; +static unsigned int lc01E30[] = { 0x01E31, 0x00000 }; +static unsigned int lc01E32[] = { 0x01E33, 0x00000 }; +static unsigned int lc01E34[] = { 0x01E35, 0x00000 }; +static unsigned int lc01E36[] = { 0x01E37, 0x00000 }; +static unsigned int lc01E38[] = { 0x01E39, 0x00000 }; +static unsigned int lc01E3A[] = { 0x01E3B, 0x00000 }; +static unsigned int lc01E3C[] = { 0x01E3D, 0x00000 }; +static unsigned int lc01E3E[] = { 0x01E3F, 0x00000 }; +static unsigned int lc01E40[] = { 0x01E41, 0x00000 }; +static unsigned int lc01E42[] = { 0x01E43, 0x00000 }; +static unsigned int lc01E44[] = { 0x01E45, 0x00000 }; +static unsigned int lc01E46[] = { 0x01E47, 0x00000 }; +static unsigned int lc01E48[] = { 0x01E49, 0x00000 }; +static unsigned int lc01E4A[] = { 0x01E4B, 0x00000 }; +static unsigned int lc01E4C[] = { 0x01E4D, 0x00000 }; +static unsigned int lc01E4E[] = { 0x01E4F, 0x00000 }; +static unsigned int lc01E50[] = { 0x01E51, 0x00000 }; +static unsigned int lc01E52[] = { 0x01E53, 0x00000 }; +static unsigned int lc01E54[] = { 0x01E55, 0x00000 }; +static unsigned int lc01E56[] = { 0x01E57, 0x00000 }; +static unsigned int lc01E58[] = { 0x01E59, 0x00000 }; +static unsigned int lc01E5A[] = { 0x01E5B, 0x00000 }; +static unsigned int lc01E5C[] = { 0x01E5D, 0x00000 }; +static unsigned int lc01E5E[] = { 0x01E5F, 0x00000 }; +static unsigned int lc01E60[] = { 0x01E61, 0x00000 }; +static unsigned int lc01E62[] = { 0x01E63, 0x00000 }; +static unsigned int lc01E64[] = { 0x01E65, 0x00000 }; +static unsigned int lc01E66[] = { 0x01E67, 0x00000 }; +static unsigned int lc01E68[] = { 0x01E69, 0x00000 }; +static unsigned int lc01E6A[] = { 0x01E6B, 0x00000 }; +static unsigned int lc01E6C[] = { 0x01E6D, 0x00000 }; +static unsigned int lc01E6E[] = { 0x01E6F, 0x00000 }; +static unsigned int lc01E70[] = { 0x01E71, 0x00000 }; +static unsigned int lc01E72[] = { 0x01E73, 0x00000 }; +static unsigned int lc01E74[] = { 0x01E75, 0x00000 }; +static unsigned int lc01E76[] = { 0x01E77, 0x00000 }; +static unsigned int lc01E78[] = { 0x01E79, 0x00000 }; +static unsigned int lc01E7A[] = { 0x01E7B, 0x00000 }; +static unsigned int lc01E7C[] = { 0x01E7D, 0x00000 }; +static unsigned int lc01E7E[] = { 0x01E7F, 0x00000 }; +static unsigned int lc01E80[] = { 0x01E81, 0x00000 }; +static unsigned int lc01E82[] = { 0x01E83, 0x00000 }; +static unsigned int lc01E84[] = { 0x01E85, 0x00000 }; +static unsigned int lc01E86[] = { 0x01E87, 0x00000 }; +static unsigned int lc01E88[] = { 0x01E89, 0x00000 }; +static unsigned int lc01E8A[] = { 0x01E8B, 0x00000 }; +static unsigned int lc01E8C[] = { 0x01E8D, 0x00000 }; +static unsigned int lc01E8E[] = { 0x01E8F, 0x00000 }; +static unsigned int lc01E90[] = { 0x01E91, 0x00000 }; +static unsigned int lc01E92[] = { 0x01E93, 0x00000 }; +static unsigned int lc01E94[] = { 0x01E95, 0x00000 }; +static unsigned int lc01E96[] = { 0x01E96, 0x00000 }; +static unsigned int lc01E97[] = { 0x01E97, 0x00000 }; +static unsigned int lc01E98[] = { 0x01E98, 0x00000 }; +static unsigned int lc01E99[] = { 0x01E99, 0x00000 }; +static unsigned int lc01E9A[] = { 0x01E9A, 0x00000 }; +static unsigned int lc01EA0[] = { 0x01EA1, 0x00000 }; +static unsigned int lc01EA2[] = { 0x01EA3, 0x00000 }; +static unsigned int lc01EA4[] = { 0x01EA5, 0x00000 }; +static unsigned int lc01EA6[] = { 0x01EA7, 0x00000 }; +static unsigned int lc01EA8[] = { 0x01EA9, 0x00000 }; +static unsigned int lc01EAA[] = { 0x01EAB, 0x00000 }; +static unsigned int lc01EAC[] = { 0x01EAD, 0x00000 }; +static unsigned int lc01EAE[] = { 0x01EAF, 0x00000 }; +static unsigned int lc01EB0[] = { 0x01EB1, 0x00000 }; +static unsigned int lc01EB2[] = { 0x01EB3, 0x00000 }; +static unsigned int lc01EB4[] = { 0x01EB5, 0x00000 }; +static unsigned int lc01EB6[] = { 0x01EB7, 0x00000 }; +static unsigned int lc01EB8[] = { 0x01EB9, 0x00000 }; +static unsigned int lc01EBA[] = { 0x01EBB, 0x00000 }; +static unsigned int lc01EBC[] = { 0x01EBD, 0x00000 }; +static unsigned int lc01EBE[] = { 0x01EBF, 0x00000 }; +static unsigned int lc01EC0[] = { 0x01EC1, 0x00000 }; +static unsigned int lc01EC2[] = { 0x01EC3, 0x00000 }; +static unsigned int lc01EC4[] = { 0x01EC5, 0x00000 }; +static unsigned int lc01EC6[] = { 0x01EC7, 0x00000 }; +static unsigned int lc01EC8[] = { 0x01EC9, 0x00000 }; +static unsigned int lc01ECA[] = { 0x01ECB, 0x00000 }; +static unsigned int lc01ECC[] = { 0x01ECD, 0x00000 }; +static unsigned int lc01ECE[] = { 0x01ECF, 0x00000 }; +static unsigned int lc01ED0[] = { 0x01ED1, 0x00000 }; +static unsigned int lc01ED2[] = { 0x01ED3, 0x00000 }; +static unsigned int lc01ED4[] = { 0x01ED5, 0x00000 }; +static unsigned int lc01ED6[] = { 0x01ED7, 0x00000 }; +static unsigned int lc01ED8[] = { 0x01ED9, 0x00000 }; +static unsigned int lc01EDA[] = { 0x01EDB, 0x00000 }; +static unsigned int lc01EDC[] = { 0x01EDD, 0x00000 }; +static unsigned int lc01EDE[] = { 0x01EDF, 0x00000 }; +static unsigned int lc01EE0[] = { 0x01EE1, 0x00000 }; +static unsigned int lc01EE2[] = { 0x01EE3, 0x00000 }; +static unsigned int lc01EE4[] = { 0x01EE5, 0x00000 }; +static unsigned int lc01EE6[] = { 0x01EE7, 0x00000 }; +static unsigned int lc01EE8[] = { 0x01EE9, 0x00000 }; +static unsigned int lc01EEA[] = { 0x01EEB, 0x00000 }; +static unsigned int lc01EEC[] = { 0x01EED, 0x00000 }; +static unsigned int lc01EEE[] = { 0x01EEF, 0x00000 }; +static unsigned int lc01EF0[] = { 0x01EF1, 0x00000 }; +static unsigned int lc01EF2[] = { 0x01EF3, 0x00000 }; +static unsigned int lc01EF4[] = { 0x01EF5, 0x00000 }; +static unsigned int lc01EF6[] = { 0x01EF7, 0x00000 }; +static unsigned int lc01EF8[] = { 0x01EF9, 0x00000 }; +static unsigned int lc01F08[] = { 0x01F00, 0x00000 }; +static unsigned int lc01F09[] = { 0x01F01, 0x00000 }; +static unsigned int lc01F0A[] = { 0x01F02, 0x00000 }; +static unsigned int lc01F0B[] = { 0x01F03, 0x00000 }; +static unsigned int lc01F0C[] = { 0x01F04, 0x00000 }; +static unsigned int lc01F0D[] = { 0x01F05, 0x00000 }; +static unsigned int lc01F0E[] = { 0x01F06, 0x00000 }; +static unsigned int lc01F0F[] = { 0x01F07, 0x00000 }; +static unsigned int lc01F18[] = { 0x01F10, 0x00000 }; +static unsigned int lc01F19[] = { 0x01F11, 0x00000 }; +static unsigned int lc01F1A[] = { 0x01F12, 0x00000 }; +static unsigned int lc01F1B[] = { 0x01F13, 0x00000 }; +static unsigned int lc01F1C[] = { 0x01F14, 0x00000 }; +static unsigned int lc01F1D[] = { 0x01F15, 0x00000 }; +static unsigned int lc01F28[] = { 0x01F20, 0x00000 }; +static unsigned int lc01F29[] = { 0x01F21, 0x00000 }; +static unsigned int lc01F2A[] = { 0x01F22, 0x00000 }; +static unsigned int lc01F2B[] = { 0x01F23, 0x00000 }; +static unsigned int lc01F2C[] = { 0x01F24, 0x00000 }; +static unsigned int lc01F2D[] = { 0x01F25, 0x00000 }; +static unsigned int lc01F2E[] = { 0x01F26, 0x00000 }; +static unsigned int lc01F2F[] = { 0x01F27, 0x00000 }; +static unsigned int lc01F38[] = { 0x01F30, 0x00000 }; +static unsigned int lc01F39[] = { 0x01F31, 0x00000 }; +static unsigned int lc01F3A[] = { 0x01F32, 0x00000 }; +static unsigned int lc01F3B[] = { 0x01F33, 0x00000 }; +static unsigned int lc01F3C[] = { 0x01F34, 0x00000 }; +static unsigned int lc01F3D[] = { 0x01F35, 0x00000 }; +static unsigned int lc01F3E[] = { 0x01F36, 0x00000 }; +static unsigned int lc01F3F[] = { 0x01F37, 0x00000 }; +static unsigned int lc01F48[] = { 0x01F40, 0x00000 }; +static unsigned int lc01F49[] = { 0x01F41, 0x00000 }; +static unsigned int lc01F4A[] = { 0x01F42, 0x00000 }; +static unsigned int lc01F4B[] = { 0x01F43, 0x00000 }; +static unsigned int lc01F4C[] = { 0x01F44, 0x00000 }; +static unsigned int lc01F4D[] = { 0x01F45, 0x00000 }; +static unsigned int lc01F50[] = { 0x01F50, 0x00000 }; +static unsigned int lc01F52[] = { 0x01F52, 0x00000 }; +static unsigned int lc01F54[] = { 0x01F54, 0x00000 }; +static unsigned int lc01F56[] = { 0x01F56, 0x00000 }; +static unsigned int lc01F59[] = { 0x01F51, 0x00000 }; +static unsigned int lc01F5B[] = { 0x01F53, 0x00000 }; +static unsigned int lc01F5D[] = { 0x01F55, 0x00000 }; +static unsigned int lc01F5F[] = { 0x01F57, 0x00000 }; +static unsigned int lc01F68[] = { 0x01F60, 0x00000 }; +static unsigned int lc01F69[] = { 0x01F61, 0x00000 }; +static unsigned int lc01F6A[] = { 0x01F62, 0x00000 }; +static unsigned int lc01F6B[] = { 0x01F63, 0x00000 }; +static unsigned int lc01F6C[] = { 0x01F64, 0x00000 }; +static unsigned int lc01F6D[] = { 0x01F65, 0x00000 }; +static unsigned int lc01F6E[] = { 0x01F66, 0x00000 }; +static unsigned int lc01F6F[] = { 0x01F67, 0x00000 }; +static unsigned int lc01F80[] = { 0x01F80, 0x00000 }; +static unsigned int lc01F81[] = { 0x01F81, 0x00000 }; +static unsigned int lc01F82[] = { 0x01F82, 0x00000 }; +static unsigned int lc01F83[] = { 0x01F83, 0x00000 }; +static unsigned int lc01F84[] = { 0x01F84, 0x00000 }; +static unsigned int lc01F85[] = { 0x01F85, 0x00000 }; +static unsigned int lc01F86[] = { 0x01F86, 0x00000 }; +static unsigned int lc01F87[] = { 0x01F87, 0x00000 }; +static unsigned int lc01F88[] = { 0x01F80, 0x00000 }; +static unsigned int lc01F89[] = { 0x01F81, 0x00000 }; +static unsigned int lc01F8A[] = { 0x01F82, 0x00000 }; +static unsigned int lc01F8B[] = { 0x01F83, 0x00000 }; +static unsigned int lc01F8C[] = { 0x01F84, 0x00000 }; +static unsigned int lc01F8D[] = { 0x01F85, 0x00000 }; +static unsigned int lc01F8E[] = { 0x01F86, 0x00000 }; +static unsigned int lc01F8F[] = { 0x01F87, 0x00000 }; +static unsigned int lc01F90[] = { 0x01F90, 0x00000 }; +static unsigned int lc01F91[] = { 0x01F91, 0x00000 }; +static unsigned int lc01F92[] = { 0x01F92, 0x00000 }; +static unsigned int lc01F93[] = { 0x01F93, 0x00000 }; +static unsigned int lc01F94[] = { 0x01F94, 0x00000 }; +static unsigned int lc01F95[] = { 0x01F95, 0x00000 }; +static unsigned int lc01F96[] = { 0x01F96, 0x00000 }; +static unsigned int lc01F97[] = { 0x01F97, 0x00000 }; +static unsigned int lc01F98[] = { 0x01F90, 0x00000 }; +static unsigned int lc01F99[] = { 0x01F91, 0x00000 }; +static unsigned int lc01F9A[] = { 0x01F92, 0x00000 }; +static unsigned int lc01F9B[] = { 0x01F93, 0x00000 }; +static unsigned int lc01F9C[] = { 0x01F94, 0x00000 }; +static unsigned int lc01F9D[] = { 0x01F95, 0x00000 }; +static unsigned int lc01F9E[] = { 0x01F96, 0x00000 }; +static unsigned int lc01F9F[] = { 0x01F97, 0x00000 }; +static unsigned int lc01FA0[] = { 0x01FA0, 0x00000 }; +static unsigned int lc01FA1[] = { 0x01FA1, 0x00000 }; +static unsigned int lc01FA2[] = { 0x01FA2, 0x00000 }; +static unsigned int lc01FA3[] = { 0x01FA3, 0x00000 }; +static unsigned int lc01FA4[] = { 0x01FA4, 0x00000 }; +static unsigned int lc01FA5[] = { 0x01FA5, 0x00000 }; +static unsigned int lc01FA6[] = { 0x01FA6, 0x00000 }; +static unsigned int lc01FA7[] = { 0x01FA7, 0x00000 }; +static unsigned int lc01FA8[] = { 0x01FA0, 0x00000 }; +static unsigned int lc01FA9[] = { 0x01FA1, 0x00000 }; +static unsigned int lc01FAA[] = { 0x01FA2, 0x00000 }; +static unsigned int lc01FAB[] = { 0x01FA3, 0x00000 }; +static unsigned int lc01FAC[] = { 0x01FA4, 0x00000 }; +static unsigned int lc01FAD[] = { 0x01FA5, 0x00000 }; +static unsigned int lc01FAE[] = { 0x01FA6, 0x00000 }; +static unsigned int lc01FAF[] = { 0x01FA7, 0x00000 }; +static unsigned int lc01FB2[] = { 0x01FB2, 0x00000 }; +static unsigned int lc01FB3[] = { 0x01FB3, 0x00000 }; +static unsigned int lc01FB4[] = { 0x01FB4, 0x00000 }; +static unsigned int lc01FB6[] = { 0x01FB6, 0x00000 }; +static unsigned int lc01FB7[] = { 0x01FB7, 0x00000 }; +static unsigned int lc01FB8[] = { 0x01FB0, 0x00000 }; +static unsigned int lc01FB9[] = { 0x01FB1, 0x00000 }; +static unsigned int lc01FBA[] = { 0x01F70, 0x00000 }; +static unsigned int lc01FBB[] = { 0x01F71, 0x00000 }; +static unsigned int lc01FBC[] = { 0x01FB3, 0x00000 }; +static unsigned int lc01FC2[] = { 0x01FC2, 0x00000 }; +static unsigned int lc01FC3[] = { 0x01FC3, 0x00000 }; +static unsigned int lc01FC4[] = { 0x01FC4, 0x00000 }; +static unsigned int lc01FC6[] = { 0x01FC6, 0x00000 }; +static unsigned int lc01FC7[] = { 0x01FC7, 0x00000 }; +static unsigned int lc01FC8[] = { 0x01F72, 0x00000 }; +static unsigned int lc01FC9[] = { 0x01F73, 0x00000 }; +static unsigned int lc01FCA[] = { 0x01F74, 0x00000 }; +static unsigned int lc01FCB[] = { 0x01F75, 0x00000 }; +static unsigned int lc01FCC[] = { 0x01FC3, 0x00000 }; +static unsigned int lc01FD2[] = { 0x01FD2, 0x00000 }; +static unsigned int lc01FD3[] = { 0x01FD3, 0x00000 }; +static unsigned int lc01FD6[] = { 0x01FD6, 0x00000 }; +static unsigned int lc01FD7[] = { 0x01FD7, 0x00000 }; +static unsigned int lc01FD8[] = { 0x01FD0, 0x00000 }; +static unsigned int lc01FD9[] = { 0x01FD1, 0x00000 }; +static unsigned int lc01FDA[] = { 0x01F76, 0x00000 }; +static unsigned int lc01FDB[] = { 0x01F77, 0x00000 }; +static unsigned int lc01FE2[] = { 0x01FE2, 0x00000 }; +static unsigned int lc01FE3[] = { 0x01FE3, 0x00000 }; +static unsigned int lc01FE4[] = { 0x01FE4, 0x00000 }; +static unsigned int lc01FE6[] = { 0x01FE6, 0x00000 }; +static unsigned int lc01FE7[] = { 0x01FE7, 0x00000 }; +static unsigned int lc01FE8[] = { 0x01FE0, 0x00000 }; +static unsigned int lc01FE9[] = { 0x01FE1, 0x00000 }; +static unsigned int lc01FEA[] = { 0x01F7A, 0x00000 }; +static unsigned int lc01FEB[] = { 0x01F7B, 0x00000 }; +static unsigned int lc01FEC[] = { 0x01FE5, 0x00000 }; +static unsigned int lc01FF2[] = { 0x01FF2, 0x00000 }; +static unsigned int lc01FF3[] = { 0x01FF3, 0x00000 }; +static unsigned int lc01FF4[] = { 0x01FF4, 0x00000 }; +static unsigned int lc01FF6[] = { 0x01FF6, 0x00000 }; +static unsigned int lc01FF7[] = { 0x01FF7, 0x00000 }; +static unsigned int lc01FF8[] = { 0x01F78, 0x00000 }; +static unsigned int lc01FF9[] = { 0x01F79, 0x00000 }; +static unsigned int lc01FFA[] = { 0x01F7C, 0x00000 }; +static unsigned int lc01FFB[] = { 0x01F7D, 0x00000 }; +static unsigned int lc01FFC[] = { 0x01FF3, 0x00000 }; +static unsigned int lc02126[] = { 0x003C9, 0x00000 }; +static unsigned int lc0212A[] = { 0x0006B, 0x00000 }; +static unsigned int lc0212B[] = { 0x000E5, 0x00000 }; +static unsigned int lc02132[] = { 0x0214E, 0x00000 }; +static unsigned int lc02160[] = { 0x02170, 0x00000 }; +static unsigned int lc02161[] = { 0x02171, 0x00000 }; +static unsigned int lc02162[] = { 0x02172, 0x00000 }; +static unsigned int lc02163[] = { 0x02173, 0x00000 }; +static unsigned int lc02164[] = { 0x02174, 0x00000 }; +static unsigned int lc02165[] = { 0x02175, 0x00000 }; +static unsigned int lc02166[] = { 0x02176, 0x00000 }; +static unsigned int lc02167[] = { 0x02177, 0x00000 }; +static unsigned int lc02168[] = { 0x02178, 0x00000 }; +static unsigned int lc02169[] = { 0x02179, 0x00000 }; +static unsigned int lc0216A[] = { 0x0217A, 0x00000 }; +static unsigned int lc0216B[] = { 0x0217B, 0x00000 }; +static unsigned int lc0216C[] = { 0x0217C, 0x00000 }; +static unsigned int lc0216D[] = { 0x0217D, 0x00000 }; +static unsigned int lc0216E[] = { 0x0217E, 0x00000 }; +static unsigned int lc0216F[] = { 0x0217F, 0x00000 }; +static unsigned int lc02183[] = { 0x02184, 0x00000 }; +static unsigned int lc024B6[] = { 0x024D0, 0x00000 }; +static unsigned int lc024B7[] = { 0x024D1, 0x00000 }; +static unsigned int lc024B8[] = { 0x024D2, 0x00000 }; +static unsigned int lc024B9[] = { 0x024D3, 0x00000 }; +static unsigned int lc024BA[] = { 0x024D4, 0x00000 }; +static unsigned int lc024BB[] = { 0x024D5, 0x00000 }; +static unsigned int lc024BC[] = { 0x024D6, 0x00000 }; +static unsigned int lc024BD[] = { 0x024D7, 0x00000 }; +static unsigned int lc024BE[] = { 0x024D8, 0x00000 }; +static unsigned int lc024BF[] = { 0x024D9, 0x00000 }; +static unsigned int lc024C0[] = { 0x024DA, 0x00000 }; +static unsigned int lc024C1[] = { 0x024DB, 0x00000 }; +static unsigned int lc024C2[] = { 0x024DC, 0x00000 }; +static unsigned int lc024C3[] = { 0x024DD, 0x00000 }; +static unsigned int lc024C4[] = { 0x024DE, 0x00000 }; +static unsigned int lc024C5[] = { 0x024DF, 0x00000 }; +static unsigned int lc024C6[] = { 0x024E0, 0x00000 }; +static unsigned int lc024C7[] = { 0x024E1, 0x00000 }; +static unsigned int lc024C8[] = { 0x024E2, 0x00000 }; +static unsigned int lc024C9[] = { 0x024E3, 0x00000 }; +static unsigned int lc024CA[] = { 0x024E4, 0x00000 }; +static unsigned int lc024CB[] = { 0x024E5, 0x00000 }; +static unsigned int lc024CC[] = { 0x024E6, 0x00000 }; +static unsigned int lc024CD[] = { 0x024E7, 0x00000 }; +static unsigned int lc024CE[] = { 0x024E8, 0x00000 }; +static unsigned int lc024CF[] = { 0x024E9, 0x00000 }; +static unsigned int lc02C00[] = { 0x02C30, 0x00000 }; +static unsigned int lc02C01[] = { 0x02C31, 0x00000 }; +static unsigned int lc02C02[] = { 0x02C32, 0x00000 }; +static unsigned int lc02C03[] = { 0x02C33, 0x00000 }; +static unsigned int lc02C04[] = { 0x02C34, 0x00000 }; +static unsigned int lc02C05[] = { 0x02C35, 0x00000 }; +static unsigned int lc02C06[] = { 0x02C36, 0x00000 }; +static unsigned int lc02C07[] = { 0x02C37, 0x00000 }; +static unsigned int lc02C08[] = { 0x02C38, 0x00000 }; +static unsigned int lc02C09[] = { 0x02C39, 0x00000 }; +static unsigned int lc02C0A[] = { 0x02C3A, 0x00000 }; +static unsigned int lc02C0B[] = { 0x02C3B, 0x00000 }; +static unsigned int lc02C0C[] = { 0x02C3C, 0x00000 }; +static unsigned int lc02C0D[] = { 0x02C3D, 0x00000 }; +static unsigned int lc02C0E[] = { 0x02C3E, 0x00000 }; +static unsigned int lc02C0F[] = { 0x02C3F, 0x00000 }; +static unsigned int lc02C10[] = { 0x02C40, 0x00000 }; +static unsigned int lc02C11[] = { 0x02C41, 0x00000 }; +static unsigned int lc02C12[] = { 0x02C42, 0x00000 }; +static unsigned int lc02C13[] = { 0x02C43, 0x00000 }; +static unsigned int lc02C14[] = { 0x02C44, 0x00000 }; +static unsigned int lc02C15[] = { 0x02C45, 0x00000 }; +static unsigned int lc02C16[] = { 0x02C46, 0x00000 }; +static unsigned int lc02C17[] = { 0x02C47, 0x00000 }; +static unsigned int lc02C18[] = { 0x02C48, 0x00000 }; +static unsigned int lc02C19[] = { 0x02C49, 0x00000 }; +static unsigned int lc02C1A[] = { 0x02C4A, 0x00000 }; +static unsigned int lc02C1B[] = { 0x02C4B, 0x00000 }; +static unsigned int lc02C1C[] = { 0x02C4C, 0x00000 }; +static unsigned int lc02C1D[] = { 0x02C4D, 0x00000 }; +static unsigned int lc02C1E[] = { 0x02C4E, 0x00000 }; +static unsigned int lc02C1F[] = { 0x02C4F, 0x00000 }; +static unsigned int lc02C20[] = { 0x02C50, 0x00000 }; +static unsigned int lc02C21[] = { 0x02C51, 0x00000 }; +static unsigned int lc02C22[] = { 0x02C52, 0x00000 }; +static unsigned int lc02C23[] = { 0x02C53, 0x00000 }; +static unsigned int lc02C24[] = { 0x02C54, 0x00000 }; +static unsigned int lc02C25[] = { 0x02C55, 0x00000 }; +static unsigned int lc02C26[] = { 0x02C56, 0x00000 }; +static unsigned int lc02C27[] = { 0x02C57, 0x00000 }; +static unsigned int lc02C28[] = { 0x02C58, 0x00000 }; +static unsigned int lc02C29[] = { 0x02C59, 0x00000 }; +static unsigned int lc02C2A[] = { 0x02C5A, 0x00000 }; +static unsigned int lc02C2B[] = { 0x02C5B, 0x00000 }; +static unsigned int lc02C2C[] = { 0x02C5C, 0x00000 }; +static unsigned int lc02C2D[] = { 0x02C5D, 0x00000 }; +static unsigned int lc02C2E[] = { 0x02C5E, 0x00000 }; +static unsigned int lc02C60[] = { 0x02C61, 0x00000 }; +static unsigned int lc02C62[] = { 0x0026B, 0x00000 }; +static unsigned int lc02C63[] = { 0x01D7D, 0x00000 }; +static unsigned int lc02C64[] = { 0x0027D, 0x00000 }; +static unsigned int lc02C67[] = { 0x02C68, 0x00000 }; +static unsigned int lc02C69[] = { 0x02C6A, 0x00000 }; +static unsigned int lc02C6B[] = { 0x02C6C, 0x00000 }; +static unsigned int lc02C75[] = { 0x02C76, 0x00000 }; +static unsigned int lc02C80[] = { 0x02C81, 0x00000 }; +static unsigned int lc02C82[] = { 0x02C83, 0x00000 }; +static unsigned int lc02C84[] = { 0x02C85, 0x00000 }; +static unsigned int lc02C86[] = { 0x02C87, 0x00000 }; +static unsigned int lc02C88[] = { 0x02C89, 0x00000 }; +static unsigned int lc02C8A[] = { 0x02C8B, 0x00000 }; +static unsigned int lc02C8C[] = { 0x02C8D, 0x00000 }; +static unsigned int lc02C8E[] = { 0x02C8F, 0x00000 }; +static unsigned int lc02C90[] = { 0x02C91, 0x00000 }; +static unsigned int lc02C92[] = { 0x02C93, 0x00000 }; +static unsigned int lc02C94[] = { 0x02C95, 0x00000 }; +static unsigned int lc02C96[] = { 0x02C97, 0x00000 }; +static unsigned int lc02C98[] = { 0x02C99, 0x00000 }; +static unsigned int lc02C9A[] = { 0x02C9B, 0x00000 }; +static unsigned int lc02C9C[] = { 0x02C9D, 0x00000 }; +static unsigned int lc02C9E[] = { 0x02C9F, 0x00000 }; +static unsigned int lc02CA0[] = { 0x02CA1, 0x00000 }; +static unsigned int lc02CA2[] = { 0x02CA3, 0x00000 }; +static unsigned int lc02CA4[] = { 0x02CA5, 0x00000 }; +static unsigned int lc02CA6[] = { 0x02CA7, 0x00000 }; +static unsigned int lc02CA8[] = { 0x02CA9, 0x00000 }; +static unsigned int lc02CAA[] = { 0x02CAB, 0x00000 }; +static unsigned int lc02CAC[] = { 0x02CAD, 0x00000 }; +static unsigned int lc02CAE[] = { 0x02CAF, 0x00000 }; +static unsigned int lc02CB0[] = { 0x02CB1, 0x00000 }; +static unsigned int lc02CB2[] = { 0x02CB3, 0x00000 }; +static unsigned int lc02CB4[] = { 0x02CB5, 0x00000 }; +static unsigned int lc02CB6[] = { 0x02CB7, 0x00000 }; +static unsigned int lc02CB8[] = { 0x02CB9, 0x00000 }; +static unsigned int lc02CBA[] = { 0x02CBB, 0x00000 }; +static unsigned int lc02CBC[] = { 0x02CBD, 0x00000 }; +static unsigned int lc02CBE[] = { 0x02CBF, 0x00000 }; +static unsigned int lc02CC0[] = { 0x02CC1, 0x00000 }; +static unsigned int lc02CC2[] = { 0x02CC3, 0x00000 }; +static unsigned int lc02CC4[] = { 0x02CC5, 0x00000 }; +static unsigned int lc02CC6[] = { 0x02CC7, 0x00000 }; +static unsigned int lc02CC8[] = { 0x02CC9, 0x00000 }; +static unsigned int lc02CCA[] = { 0x02CCB, 0x00000 }; +static unsigned int lc02CCC[] = { 0x02CCD, 0x00000 }; +static unsigned int lc02CCE[] = { 0x02CCF, 0x00000 }; +static unsigned int lc02CD0[] = { 0x02CD1, 0x00000 }; +static unsigned int lc02CD2[] = { 0x02CD3, 0x00000 }; +static unsigned int lc02CD4[] = { 0x02CD5, 0x00000 }; +static unsigned int lc02CD6[] = { 0x02CD7, 0x00000 }; +static unsigned int lc02CD8[] = { 0x02CD9, 0x00000 }; +static unsigned int lc02CDA[] = { 0x02CDB, 0x00000 }; +static unsigned int lc02CDC[] = { 0x02CDD, 0x00000 }; +static unsigned int lc02CDE[] = { 0x02CDF, 0x00000 }; +static unsigned int lc02CE0[] = { 0x02CE1, 0x00000 }; +static unsigned int lc02CE2[] = { 0x02CE3, 0x00000 }; +static unsigned int lc0FB00[] = { 0x0FB00, 0x00000 }; +static unsigned int lc0FB01[] = { 0x0FB01, 0x00000 }; +static unsigned int lc0FB02[] = { 0x0FB02, 0x00000 }; +static unsigned int lc0FB03[] = { 0x0FB03, 0x00000 }; +static unsigned int lc0FB04[] = { 0x0FB04, 0x00000 }; +static unsigned int lc0FB05[] = { 0x0FB05, 0x00000 }; +static unsigned int lc0FB06[] = { 0x0FB06, 0x00000 }; +static unsigned int lc0FB13[] = { 0x0FB13, 0x00000 }; +static unsigned int lc0FB14[] = { 0x0FB14, 0x00000 }; +static unsigned int lc0FB15[] = { 0x0FB15, 0x00000 }; +static unsigned int lc0FB16[] = { 0x0FB16, 0x00000 }; +static unsigned int lc0FB17[] = { 0x0FB17, 0x00000 }; +static unsigned int lc0FF21[] = { 0x0FF41, 0x00000 }; +static unsigned int lc0FF22[] = { 0x0FF42, 0x00000 }; +static unsigned int lc0FF23[] = { 0x0FF43, 0x00000 }; +static unsigned int lc0FF24[] = { 0x0FF44, 0x00000 }; +static unsigned int lc0FF25[] = { 0x0FF45, 0x00000 }; +static unsigned int lc0FF26[] = { 0x0FF46, 0x00000 }; +static unsigned int lc0FF27[] = { 0x0FF47, 0x00000 }; +static unsigned int lc0FF28[] = { 0x0FF48, 0x00000 }; +static unsigned int lc0FF29[] = { 0x0FF49, 0x00000 }; +static unsigned int lc0FF2A[] = { 0x0FF4A, 0x00000 }; +static unsigned int lc0FF2B[] = { 0x0FF4B, 0x00000 }; +static unsigned int lc0FF2C[] = { 0x0FF4C, 0x00000 }; +static unsigned int lc0FF2D[] = { 0x0FF4D, 0x00000 }; +static unsigned int lc0FF2E[] = { 0x0FF4E, 0x00000 }; +static unsigned int lc0FF2F[] = { 0x0FF4F, 0x00000 }; +static unsigned int lc0FF30[] = { 0x0FF50, 0x00000 }; +static unsigned int lc0FF31[] = { 0x0FF51, 0x00000 }; +static unsigned int lc0FF32[] = { 0x0FF52, 0x00000 }; +static unsigned int lc0FF33[] = { 0x0FF53, 0x00000 }; +static unsigned int lc0FF34[] = { 0x0FF54, 0x00000 }; +static unsigned int lc0FF35[] = { 0x0FF55, 0x00000 }; +static unsigned int lc0FF36[] = { 0x0FF56, 0x00000 }; +static unsigned int lc0FF37[] = { 0x0FF57, 0x00000 }; +static unsigned int lc0FF38[] = { 0x0FF58, 0x00000 }; +static unsigned int lc0FF39[] = { 0x0FF59, 0x00000 }; +static unsigned int lc0FF3A[] = { 0x0FF5A, 0x00000 }; +static unsigned int lc10400[] = { 0x10428, 0x00000 }; +static unsigned int lc10401[] = { 0x10429, 0x00000 }; +static unsigned int lc10402[] = { 0x1042A, 0x00000 }; +static unsigned int lc10403[] = { 0x1042B, 0x00000 }; +static unsigned int lc10404[] = { 0x1042C, 0x00000 }; +static unsigned int lc10405[] = { 0x1042D, 0x00000 }; +static unsigned int lc10406[] = { 0x1042E, 0x00000 }; +static unsigned int lc10407[] = { 0x1042F, 0x00000 }; +static unsigned int lc10408[] = { 0x10430, 0x00000 }; +static unsigned int lc10409[] = { 0x10431, 0x00000 }; +static unsigned int lc1040A[] = { 0x10432, 0x00000 }; +static unsigned int lc1040B[] = { 0x10433, 0x00000 }; +static unsigned int lc1040C[] = { 0x10434, 0x00000 }; +static unsigned int lc1040D[] = { 0x10435, 0x00000 }; +static unsigned int lc1040E[] = { 0x10436, 0x00000 }; +static unsigned int lc1040F[] = { 0x10437, 0x00000 }; +static unsigned int lc10410[] = { 0x10438, 0x00000 }; +static unsigned int lc10411[] = { 0x10439, 0x00000 }; +static unsigned int lc10412[] = { 0x1043A, 0x00000 }; +static unsigned int lc10413[] = { 0x1043B, 0x00000 }; +static unsigned int lc10414[] = { 0x1043C, 0x00000 }; +static unsigned int lc10415[] = { 0x1043D, 0x00000 }; +static unsigned int lc10416[] = { 0x1043E, 0x00000 }; +static unsigned int lc10417[] = { 0x1043F, 0x00000 }; +static unsigned int lc10418[] = { 0x10440, 0x00000 }; +static unsigned int lc10419[] = { 0x10441, 0x00000 }; +static unsigned int lc1041A[] = { 0x10442, 0x00000 }; +static unsigned int lc1041B[] = { 0x10443, 0x00000 }; +static unsigned int lc1041C[] = { 0x10444, 0x00000 }; +static unsigned int lc1041D[] = { 0x10445, 0x00000 }; +static unsigned int lc1041E[] = { 0x10446, 0x00000 }; +static unsigned int lc1041F[] = { 0x10447, 0x00000 }; +static unsigned int lc10420[] = { 0x10448, 0x00000 }; +static unsigned int lc10421[] = { 0x10449, 0x00000 }; +static unsigned int lc10422[] = { 0x1044A, 0x00000 }; +static unsigned int lc10423[] = { 0x1044B, 0x00000 }; +static unsigned int lc10424[] = { 0x1044C, 0x00000 }; +static unsigned int lc10425[] = { 0x1044D, 0x00000 }; +static unsigned int lc10426[] = { 0x1044E, 0x00000 }; +static unsigned int lc10427[] = { 0x1044F, 0x00000 }; + +static unsigned int lowerCaseDirectTableSize = 2048; +static unsigned int *lowerCaseDirectTable[2048] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, lc00041, lc00042, lc00043, lc00044, lc00045, lc00046, lc00047, lc00048, lc00049, lc0004A, lc0004B, lc0004C, lc0004D, lc0004E, lc0004F, + lc00050, lc00051, lc00052, lc00053, lc00054, lc00055, lc00056, lc00057, lc00058, lc00059, lc0005A, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + lc000C0, lc000C1, lc000C2, lc000C3, lc000C4, lc000C5, lc000C6, lc000C7, lc000C8, lc000C9, lc000CA, lc000CB, lc000CC, lc000CD, lc000CE, lc000CF, + lc000D0, lc000D1, lc000D2, lc000D3, lc000D4, lc000D5, lc000D6, 0, lc000D8, lc000D9, lc000DA, lc000DB, lc000DC, lc000DD, lc000DE, lc000DF, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + lc00100, 0, lc00102, 0, lc00104, 0, lc00106, 0, lc00108, 0, lc0010A, 0, lc0010C, 0, lc0010E, 0, + lc00110, 0, lc00112, 0, lc00114, 0, lc00116, 0, lc00118, 0, lc0011A, 0, lc0011C, 0, lc0011E, 0, + lc00120, 0, lc00122, 0, lc00124, 0, lc00126, 0, lc00128, 0, lc0012A, 0, lc0012C, 0, lc0012E, 0, + lc00130, 0, lc00132, 0, lc00134, 0, lc00136, 0, 0, lc00139, 0, lc0013B, 0, lc0013D, 0, lc0013F, + 0, lc00141, 0, lc00143, 0, lc00145, 0, lc00147, 0, lc00149, lc0014A, 0, lc0014C, 0, lc0014E, 0, + lc00150, 0, lc00152, 0, lc00154, 0, lc00156, 0, lc00158, 0, lc0015A, 0, lc0015C, 0, lc0015E, 0, + lc00160, 0, lc00162, 0, lc00164, 0, lc00166, 0, lc00168, 0, lc0016A, 0, lc0016C, 0, lc0016E, 0, + lc00170, 0, lc00172, 0, lc00174, 0, lc00176, 0, lc00178, lc00179, 0, lc0017B, 0, lc0017D, 0, 0, + 0, lc00181, lc00182, 0, lc00184, 0, lc00186, lc00187, 0, lc00189, lc0018A, lc0018B, 0, 0, lc0018E, lc0018F, + lc00190, lc00191, 0, lc00193, lc00194, 0, lc00196, lc00197, lc00198, 0, 0, 0, lc0019C, lc0019D, 0, lc0019F, + lc001A0, 0, lc001A2, 0, lc001A4, 0, lc001A6, lc001A7, 0, lc001A9, 0, 0, lc001AC, 0, lc001AE, lc001AF, + 0, lc001B1, lc001B2, lc001B3, 0, lc001B5, 0, lc001B7, lc001B8, 0, 0, 0, lc001BC, 0, 0, 0, + 0, 0, 0, 0, lc001C4, lc001C5, 0, lc001C7, lc001C8, 0, lc001CA, lc001CB, 0, lc001CD, 0, lc001CF, + 0, lc001D1, 0, lc001D3, 0, lc001D5, 0, lc001D7, 0, lc001D9, 0, lc001DB, 0, 0, lc001DE, 0, + lc001E0, 0, lc001E2, 0, lc001E4, 0, lc001E6, 0, lc001E8, 0, lc001EA, 0, lc001EC, 0, lc001EE, 0, + lc001F0, lc001F1, lc001F2, 0, lc001F4, 0, lc001F6, lc001F7, lc001F8, 0, lc001FA, 0, lc001FC, 0, lc001FE, 0, + lc00200, 0, lc00202, 0, lc00204, 0, lc00206, 0, lc00208, 0, lc0020A, 0, lc0020C, 0, lc0020E, 0, + lc00210, 0, lc00212, 0, lc00214, 0, lc00216, 0, lc00218, 0, lc0021A, 0, lc0021C, 0, lc0021E, 0, + lc00220, 0, lc00222, 0, lc00224, 0, lc00226, 0, lc00228, 0, lc0022A, 0, lc0022C, 0, lc0022E, 0, + lc00230, 0, lc00232, 0, 0, 0, 0, 0, 0, 0, lc0023A, lc0023B, 0, lc0023D, lc0023E, 0, + 0, lc00241, 0, lc00243, lc00244, lc00245, lc00246, 0, lc00248, 0, lc0024A, 0, lc0024C, 0, lc0024E, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, lc00386, 0, lc00388, lc00389, lc0038A, 0, lc0038C, 0, lc0038E, lc0038F, + lc00390, lc00391, lc00392, lc00393, lc00394, lc00395, lc00396, lc00397, lc00398, lc00399, lc0039A, lc0039B, lc0039C, lc0039D, lc0039E, lc0039F, + lc003A0, lc003A1, 0, lc003A3, lc003A4, lc003A5, lc003A6, lc003A7, lc003A8, lc003A9, lc003AA, lc003AB, 0, 0, 0, 0, + lc003B0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, lc003D8, 0, lc003DA, 0, lc003DC, 0, lc003DE, 0, + lc003E0, 0, lc003E2, 0, lc003E4, 0, lc003E6, 0, lc003E8, 0, lc003EA, 0, lc003EC, 0, lc003EE, 0, + 0, 0, 0, 0, lc003F4, 0, 0, lc003F7, 0, lc003F9, lc003FA, 0, 0, lc003FD, lc003FE, lc003FF, + lc00400, lc00401, lc00402, lc00403, lc00404, lc00405, lc00406, lc00407, lc00408, lc00409, lc0040A, lc0040B, lc0040C, lc0040D, lc0040E, lc0040F, + lc00410, lc00411, lc00412, lc00413, lc00414, lc00415, lc00416, lc00417, lc00418, lc00419, lc0041A, lc0041B, lc0041C, lc0041D, lc0041E, lc0041F, + lc00420, lc00421, lc00422, lc00423, lc00424, lc00425, lc00426, lc00427, lc00428, lc00429, lc0042A, lc0042B, lc0042C, lc0042D, lc0042E, lc0042F, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + lc00460, 0, lc00462, 0, lc00464, 0, lc00466, 0, lc00468, 0, lc0046A, 0, lc0046C, 0, lc0046E, 0, + lc00470, 0, lc00472, 0, lc00474, 0, lc00476, 0, lc00478, 0, lc0047A, 0, lc0047C, 0, lc0047E, 0, + lc00480, 0, 0, 0, 0, 0, 0, 0, 0, 0, lc0048A, 0, lc0048C, 0, lc0048E, 0, + lc00490, 0, lc00492, 0, lc00494, 0, lc00496, 0, lc00498, 0, lc0049A, 0, lc0049C, 0, lc0049E, 0, + lc004A0, 0, lc004A2, 0, lc004A4, 0, lc004A6, 0, lc004A8, 0, lc004AA, 0, lc004AC, 0, lc004AE, 0, + lc004B0, 0, lc004B2, 0, lc004B4, 0, lc004B6, 0, lc004B8, 0, lc004BA, 0, lc004BC, 0, lc004BE, 0, + lc004C0, lc004C1, 0, lc004C3, 0, lc004C5, 0, lc004C7, 0, lc004C9, 0, lc004CB, 0, lc004CD, 0, 0, + lc004D0, 0, lc004D2, 0, lc004D4, 0, lc004D6, 0, lc004D8, 0, lc004DA, 0, lc004DC, 0, lc004DE, 0, + lc004E0, 0, lc004E2, 0, lc004E4, 0, lc004E6, 0, lc004E8, 0, lc004EA, 0, lc004EC, 0, lc004EE, 0, + lc004F0, 0, lc004F2, 0, lc004F4, 0, lc004F6, 0, lc004F8, 0, lc004FA, 0, lc004FC, 0, lc004FE, 0, + lc00500, 0, lc00502, 0, lc00504, 0, lc00506, 0, lc00508, 0, lc0050A, 0, lc0050C, 0, lc0050E, 0, + lc00510, 0, lc00512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, lc00531, lc00532, lc00533, lc00534, lc00535, lc00536, lc00537, lc00538, lc00539, lc0053A, lc0053B, lc0053C, lc0053D, lc0053E, lc0053F, + lc00540, lc00541, lc00542, lc00543, lc00544, lc00545, lc00546, lc00547, lc00548, lc00549, lc0054A, lc0054B, lc0054C, lc0054D, lc0054E, lc0054F, + lc00550, lc00551, lc00552, lc00553, lc00554, lc00555, lc00556, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, lc00587, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +struct CaseValue +{ + unsigned int ch; + unsigned int *dest; +}; +// static unsigned int lowerCaseTableSize = 997; +// static CaseValue lowerCaseTable[997] = { +static unsigned int lowerCaseTableSize = 541; +static CaseValue lowerCaseTable[541] = { +// { 0x00041, lc00041 }, { 0x00042, lc00042 }, { 0x00043, lc00043 }, { 0x00044, lc00044 }, { 0x00045, lc00045 }, { 0x00046, lc00046 }, { 0x00047, lc00047 }, { 0x00048, lc00048 }, +// { 0x00049, lc00049 }, { 0x0004A, lc0004A }, { 0x0004B, lc0004B }, { 0x0004C, lc0004C }, { 0x0004D, lc0004D }, { 0x0004E, lc0004E }, { 0x0004F, lc0004F }, { 0x00050, lc00050 }, +// { 0x00051, lc00051 }, { 0x00052, lc00052 }, { 0x00053, lc00053 }, { 0x00054, lc00054 }, { 0x00055, lc00055 }, { 0x00056, lc00056 }, { 0x00057, lc00057 }, { 0x00058, lc00058 }, +// { 0x00059, lc00059 }, { 0x0005A, lc0005A }, { 0x000C0, lc000C0 }, { 0x000C1, lc000C1 }, { 0x000C2, lc000C2 }, { 0x000C3, lc000C3 }, { 0x000C4, lc000C4 }, { 0x000C5, lc000C5 }, +// { 0x000C6, lc000C6 }, { 0x000C7, lc000C7 }, { 0x000C8, lc000C8 }, { 0x000C9, lc000C9 }, { 0x000CA, lc000CA }, { 0x000CB, lc000CB }, { 0x000CC, lc000CC }, { 0x000CD, lc000CD }, +// { 0x000CE, lc000CE }, { 0x000CF, lc000CF }, { 0x000D0, lc000D0 }, { 0x000D1, lc000D1 }, { 0x000D2, lc000D2 }, { 0x000D3, lc000D3 }, { 0x000D4, lc000D4 }, { 0x000D5, lc000D5 }, +// { 0x000D6, lc000D6 }, { 0x000D8, lc000D8 }, { 0x000D9, lc000D9 }, { 0x000DA, lc000DA }, { 0x000DB, lc000DB }, { 0x000DC, lc000DC }, { 0x000DD, lc000DD }, { 0x000DE, lc000DE }, +// { 0x000DF, lc000DF }, { 0x00100, lc00100 }, { 0x00102, lc00102 }, { 0x00104, lc00104 }, { 0x00106, lc00106 }, { 0x00108, lc00108 }, { 0x0010A, lc0010A }, { 0x0010C, lc0010C }, +// { 0x0010E, lc0010E }, { 0x00110, lc00110 }, { 0x00112, lc00112 }, { 0x00114, lc00114 }, { 0x00116, lc00116 }, { 0x00118, lc00118 }, { 0x0011A, lc0011A }, { 0x0011C, lc0011C }, +// { 0x0011E, lc0011E }, { 0x00120, lc00120 }, { 0x00122, lc00122 }, { 0x00124, lc00124 }, { 0x00126, lc00126 }, { 0x00128, lc00128 }, { 0x0012A, lc0012A }, { 0x0012C, lc0012C }, +// { 0x0012E, lc0012E }, { 0x00130, lc00130 }, { 0x00132, lc00132 }, { 0x00134, lc00134 }, { 0x00136, lc00136 }, { 0x00139, lc00139 }, { 0x0013B, lc0013B }, { 0x0013D, lc0013D }, +// { 0x0013F, lc0013F }, { 0x00141, lc00141 }, { 0x00143, lc00143 }, { 0x00145, lc00145 }, { 0x00147, lc00147 }, { 0x00149, lc00149 }, { 0x0014A, lc0014A }, { 0x0014C, lc0014C }, +// { 0x0014E, lc0014E }, { 0x00150, lc00150 }, { 0x00152, lc00152 }, { 0x00154, lc00154 }, { 0x00156, lc00156 }, { 0x00158, lc00158 }, { 0x0015A, lc0015A }, { 0x0015C, lc0015C }, +// { 0x0015E, lc0015E }, { 0x00160, lc00160 }, { 0x00162, lc00162 }, { 0x00164, lc00164 }, { 0x00166, lc00166 }, { 0x00168, lc00168 }, { 0x0016A, lc0016A }, { 0x0016C, lc0016C }, +// { 0x0016E, lc0016E }, { 0x00170, lc00170 }, { 0x00172, lc00172 }, { 0x00174, lc00174 }, { 0x00176, lc00176 }, { 0x00178, lc00178 }, { 0x00179, lc00179 }, { 0x0017B, lc0017B }, +// { 0x0017D, lc0017D }, { 0x00181, lc00181 }, { 0x00182, lc00182 }, { 0x00184, lc00184 }, { 0x00186, lc00186 }, { 0x00187, lc00187 }, { 0x00189, lc00189 }, { 0x0018A, lc0018A }, +// { 0x0018B, lc0018B }, { 0x0018E, lc0018E }, { 0x0018F, lc0018F }, { 0x00190, lc00190 }, { 0x00191, lc00191 }, { 0x00193, lc00193 }, { 0x00194, lc00194 }, { 0x00196, lc00196 }, +// { 0x00197, lc00197 }, { 0x00198, lc00198 }, { 0x0019C, lc0019C }, { 0x0019D, lc0019D }, { 0x0019F, lc0019F }, { 0x001A0, lc001A0 }, { 0x001A2, lc001A2 }, { 0x001A4, lc001A4 }, +// { 0x001A6, lc001A6 }, { 0x001A7, lc001A7 }, { 0x001A9, lc001A9 }, { 0x001AC, lc001AC }, { 0x001AE, lc001AE }, { 0x001AF, lc001AF }, { 0x001B1, lc001B1 }, { 0x001B2, lc001B2 }, +// { 0x001B3, lc001B3 }, { 0x001B5, lc001B5 }, { 0x001B7, lc001B7 }, { 0x001B8, lc001B8 }, { 0x001BC, lc001BC }, { 0x001C4, lc001C4 }, { 0x001C5, lc001C5 }, { 0x001C7, lc001C7 }, +// { 0x001C8, lc001C8 }, { 0x001CA, lc001CA }, { 0x001CB, lc001CB }, { 0x001CD, lc001CD }, { 0x001CF, lc001CF }, { 0x001D1, lc001D1 }, { 0x001D3, lc001D3 }, { 0x001D5, lc001D5 }, +// { 0x001D7, lc001D7 }, { 0x001D9, lc001D9 }, { 0x001DB, lc001DB }, { 0x001DE, lc001DE }, { 0x001E0, lc001E0 }, { 0x001E2, lc001E2 }, { 0x001E4, lc001E4 }, { 0x001E6, lc001E6 }, +// { 0x001E8, lc001E8 }, { 0x001EA, lc001EA }, { 0x001EC, lc001EC }, { 0x001EE, lc001EE }, { 0x001F0, lc001F0 }, { 0x001F1, lc001F1 }, { 0x001F2, lc001F2 }, { 0x001F4, lc001F4 }, +// { 0x001F6, lc001F6 }, { 0x001F7, lc001F7 }, { 0x001F8, lc001F8 }, { 0x001FA, lc001FA }, { 0x001FC, lc001FC }, { 0x001FE, lc001FE }, { 0x00200, lc00200 }, { 0x00202, lc00202 }, +// { 0x00204, lc00204 }, { 0x00206, lc00206 }, { 0x00208, lc00208 }, { 0x0020A, lc0020A }, { 0x0020C, lc0020C }, { 0x0020E, lc0020E }, { 0x00210, lc00210 }, { 0x00212, lc00212 }, +// { 0x00214, lc00214 }, { 0x00216, lc00216 }, { 0x00218, lc00218 }, { 0x0021A, lc0021A }, { 0x0021C, lc0021C }, { 0x0021E, lc0021E }, { 0x00220, lc00220 }, { 0x00222, lc00222 }, +// { 0x00224, lc00224 }, { 0x00226, lc00226 }, { 0x00228, lc00228 }, { 0x0022A, lc0022A }, { 0x0022C, lc0022C }, { 0x0022E, lc0022E }, { 0x00230, lc00230 }, { 0x00232, lc00232 }, +// { 0x0023A, lc0023A }, { 0x0023B, lc0023B }, { 0x0023D, lc0023D }, { 0x0023E, lc0023E }, { 0x00241, lc00241 }, { 0x00243, lc00243 }, { 0x00244, lc00244 }, { 0x00245, lc00245 }, +// { 0x00246, lc00246 }, { 0x00248, lc00248 }, { 0x0024A, lc0024A }, { 0x0024C, lc0024C }, { 0x0024E, lc0024E }, { 0x00386, lc00386 }, { 0x00388, lc00388 }, { 0x00389, lc00389 }, +// { 0x0038A, lc0038A }, { 0x0038C, lc0038C }, { 0x0038E, lc0038E }, { 0x0038F, lc0038F }, { 0x00390, lc00390 }, { 0x00391, lc00391 }, { 0x00392, lc00392 }, { 0x00393, lc00393 }, +// { 0x00394, lc00394 }, { 0x00395, lc00395 }, { 0x00396, lc00396 }, { 0x00397, lc00397 }, { 0x00398, lc00398 }, { 0x00399, lc00399 }, { 0x0039A, lc0039A }, { 0x0039B, lc0039B }, +// { 0x0039C, lc0039C }, { 0x0039D, lc0039D }, { 0x0039E, lc0039E }, { 0x0039F, lc0039F }, { 0x003A0, lc003A0 }, { 0x003A1, lc003A1 }, { 0x003A3, lc003A3 }, { 0x003A4, lc003A4 }, +// { 0x003A5, lc003A5 }, { 0x003A6, lc003A6 }, { 0x003A7, lc003A7 }, { 0x003A8, lc003A8 }, { 0x003A9, lc003A9 }, { 0x003AA, lc003AA }, { 0x003AB, lc003AB }, { 0x003B0, lc003B0 }, +// { 0x003D8, lc003D8 }, { 0x003DA, lc003DA }, { 0x003DC, lc003DC }, { 0x003DE, lc003DE }, { 0x003E0, lc003E0 }, { 0x003E2, lc003E2 }, { 0x003E4, lc003E4 }, { 0x003E6, lc003E6 }, +// { 0x003E8, lc003E8 }, { 0x003EA, lc003EA }, { 0x003EC, lc003EC }, { 0x003EE, lc003EE }, { 0x003F4, lc003F4 }, { 0x003F7, lc003F7 }, { 0x003F9, lc003F9 }, { 0x003FA, lc003FA }, +// { 0x003FD, lc003FD }, { 0x003FE, lc003FE }, { 0x003FF, lc003FF }, { 0x00400, lc00400 }, { 0x00401, lc00401 }, { 0x00402, lc00402 }, { 0x00403, lc00403 }, { 0x00404, lc00404 }, +// { 0x00405, lc00405 }, { 0x00406, lc00406 }, { 0x00407, lc00407 }, { 0x00408, lc00408 }, { 0x00409, lc00409 }, { 0x0040A, lc0040A }, { 0x0040B, lc0040B }, { 0x0040C, lc0040C }, +// { 0x0040D, lc0040D }, { 0x0040E, lc0040E }, { 0x0040F, lc0040F }, { 0x00410, lc00410 }, { 0x00411, lc00411 }, { 0x00412, lc00412 }, { 0x00413, lc00413 }, { 0x00414, lc00414 }, +// { 0x00415, lc00415 }, { 0x00416, lc00416 }, { 0x00417, lc00417 }, { 0x00418, lc00418 }, { 0x00419, lc00419 }, { 0x0041A, lc0041A }, { 0x0041B, lc0041B }, { 0x0041C, lc0041C }, +// { 0x0041D, lc0041D }, { 0x0041E, lc0041E }, { 0x0041F, lc0041F }, { 0x00420, lc00420 }, { 0x00421, lc00421 }, { 0x00422, lc00422 }, { 0x00423, lc00423 }, { 0x00424, lc00424 }, +// { 0x00425, lc00425 }, { 0x00426, lc00426 }, { 0x00427, lc00427 }, { 0x00428, lc00428 }, { 0x00429, lc00429 }, { 0x0042A, lc0042A }, { 0x0042B, lc0042B }, { 0x0042C, lc0042C }, +// { 0x0042D, lc0042D }, { 0x0042E, lc0042E }, { 0x0042F, lc0042F }, { 0x00460, lc00460 }, { 0x00462, lc00462 }, { 0x00464, lc00464 }, { 0x00466, lc00466 }, { 0x00468, lc00468 }, +// { 0x0046A, lc0046A }, { 0x0046C, lc0046C }, { 0x0046E, lc0046E }, { 0x00470, lc00470 }, { 0x00472, lc00472 }, { 0x00474, lc00474 }, { 0x00476, lc00476 }, { 0x00478, lc00478 }, +// { 0x0047A, lc0047A }, { 0x0047C, lc0047C }, { 0x0047E, lc0047E }, { 0x00480, lc00480 }, { 0x0048A, lc0048A }, { 0x0048C, lc0048C }, { 0x0048E, lc0048E }, { 0x00490, lc00490 }, +// { 0x00492, lc00492 }, { 0x00494, lc00494 }, { 0x00496, lc00496 }, { 0x00498, lc00498 }, { 0x0049A, lc0049A }, { 0x0049C, lc0049C }, { 0x0049E, lc0049E }, { 0x004A0, lc004A0 }, +// { 0x004A2, lc004A2 }, { 0x004A4, lc004A4 }, { 0x004A6, lc004A6 }, { 0x004A8, lc004A8 }, { 0x004AA, lc004AA }, { 0x004AC, lc004AC }, { 0x004AE, lc004AE }, { 0x004B0, lc004B0 }, +// { 0x004B2, lc004B2 }, { 0x004B4, lc004B4 }, { 0x004B6, lc004B6 }, { 0x004B8, lc004B8 }, { 0x004BA, lc004BA }, { 0x004BC, lc004BC }, { 0x004BE, lc004BE }, { 0x004C0, lc004C0 }, +// { 0x004C1, lc004C1 }, { 0x004C3, lc004C3 }, { 0x004C5, lc004C5 }, { 0x004C7, lc004C7 }, { 0x004C9, lc004C9 }, { 0x004CB, lc004CB }, { 0x004CD, lc004CD }, { 0x004D0, lc004D0 }, +// { 0x004D2, lc004D2 }, { 0x004D4, lc004D4 }, { 0x004D6, lc004D6 }, { 0x004D8, lc004D8 }, { 0x004DA, lc004DA }, { 0x004DC, lc004DC }, { 0x004DE, lc004DE }, { 0x004E0, lc004E0 }, +// { 0x004E2, lc004E2 }, { 0x004E4, lc004E4 }, { 0x004E6, lc004E6 }, { 0x004E8, lc004E8 }, { 0x004EA, lc004EA }, { 0x004EC, lc004EC }, { 0x004EE, lc004EE }, { 0x004F0, lc004F0 }, +// { 0x004F2, lc004F2 }, { 0x004F4, lc004F4 }, { 0x004F6, lc004F6 }, { 0x004F8, lc004F8 }, { 0x004FA, lc004FA }, { 0x004FC, lc004FC }, { 0x004FE, lc004FE }, { 0x00500, lc00500 }, +// { 0x00502, lc00502 }, { 0x00504, lc00504 }, { 0x00506, lc00506 }, { 0x00508, lc00508 }, { 0x0050A, lc0050A }, { 0x0050C, lc0050C }, { 0x0050E, lc0050E }, { 0x00510, lc00510 }, +// { 0x00512, lc00512 }, { 0x00531, lc00531 }, { 0x00532, lc00532 }, { 0x00533, lc00533 }, { 0x00534, lc00534 }, { 0x00535, lc00535 }, { 0x00536, lc00536 }, { 0x00537, lc00537 }, +// { 0x00538, lc00538 }, { 0x00539, lc00539 }, { 0x0053A, lc0053A }, { 0x0053B, lc0053B }, { 0x0053C, lc0053C }, { 0x0053D, lc0053D }, { 0x0053E, lc0053E }, { 0x0053F, lc0053F }, +// { 0x00540, lc00540 }, { 0x00541, lc00541 }, { 0x00542, lc00542 }, { 0x00543, lc00543 }, { 0x00544, lc00544 }, { 0x00545, lc00545 }, { 0x00546, lc00546 }, { 0x00547, lc00547 }, +// { 0x00548, lc00548 }, { 0x00549, lc00549 }, { 0x0054A, lc0054A }, { 0x0054B, lc0054B }, { 0x0054C, lc0054C }, { 0x0054D, lc0054D }, { 0x0054E, lc0054E }, { 0x0054F, lc0054F }, +// { 0x00550, lc00550 }, { 0x00551, lc00551 }, { 0x00552, lc00552 }, { 0x00553, lc00553 }, { 0x00554, lc00554 }, { 0x00555, lc00555 }, { 0x00556, lc00556 }, { 0x00587, lc00587 }, +{ 0x010A0, lc010A0 }, { 0x010A1, lc010A1 }, { 0x010A2, lc010A2 }, { 0x010A3, lc010A3 }, { 0x010A4, lc010A4 }, { 0x010A5, lc010A5 }, { 0x010A6, lc010A6 }, { 0x010A7, lc010A7 }, +{ 0x010A8, lc010A8 }, { 0x010A9, lc010A9 }, { 0x010AA, lc010AA }, { 0x010AB, lc010AB }, { 0x010AC, lc010AC }, { 0x010AD, lc010AD }, { 0x010AE, lc010AE }, { 0x010AF, lc010AF }, +{ 0x010B0, lc010B0 }, { 0x010B1, lc010B1 }, { 0x010B2, lc010B2 }, { 0x010B3, lc010B3 }, { 0x010B4, lc010B4 }, { 0x010B5, lc010B5 }, { 0x010B6, lc010B6 }, { 0x010B7, lc010B7 }, +{ 0x010B8, lc010B8 }, { 0x010B9, lc010B9 }, { 0x010BA, lc010BA }, { 0x010BB, lc010BB }, { 0x010BC, lc010BC }, { 0x010BD, lc010BD }, { 0x010BE, lc010BE }, { 0x010BF, lc010BF }, +{ 0x010C0, lc010C0 }, { 0x010C1, lc010C1 }, { 0x010C2, lc010C2 }, { 0x010C3, lc010C3 }, { 0x010C4, lc010C4 }, { 0x010C5, lc010C5 }, { 0x01E00, lc01E00 }, { 0x01E02, lc01E02 }, +{ 0x01E04, lc01E04 }, { 0x01E06, lc01E06 }, { 0x01E08, lc01E08 }, { 0x01E0A, lc01E0A }, { 0x01E0C, lc01E0C }, { 0x01E0E, lc01E0E }, { 0x01E10, lc01E10 }, { 0x01E12, lc01E12 }, +{ 0x01E14, lc01E14 }, { 0x01E16, lc01E16 }, { 0x01E18, lc01E18 }, { 0x01E1A, lc01E1A }, { 0x01E1C, lc01E1C }, { 0x01E1E, lc01E1E }, { 0x01E20, lc01E20 }, { 0x01E22, lc01E22 }, +{ 0x01E24, lc01E24 }, { 0x01E26, lc01E26 }, { 0x01E28, lc01E28 }, { 0x01E2A, lc01E2A }, { 0x01E2C, lc01E2C }, { 0x01E2E, lc01E2E }, { 0x01E30, lc01E30 }, { 0x01E32, lc01E32 }, +{ 0x01E34, lc01E34 }, { 0x01E36, lc01E36 }, { 0x01E38, lc01E38 }, { 0x01E3A, lc01E3A }, { 0x01E3C, lc01E3C }, { 0x01E3E, lc01E3E }, { 0x01E40, lc01E40 }, { 0x01E42, lc01E42 }, +{ 0x01E44, lc01E44 }, { 0x01E46, lc01E46 }, { 0x01E48, lc01E48 }, { 0x01E4A, lc01E4A }, { 0x01E4C, lc01E4C }, { 0x01E4E, lc01E4E }, { 0x01E50, lc01E50 }, { 0x01E52, lc01E52 }, +{ 0x01E54, lc01E54 }, { 0x01E56, lc01E56 }, { 0x01E58, lc01E58 }, { 0x01E5A, lc01E5A }, { 0x01E5C, lc01E5C }, { 0x01E5E, lc01E5E }, { 0x01E60, lc01E60 }, { 0x01E62, lc01E62 }, +{ 0x01E64, lc01E64 }, { 0x01E66, lc01E66 }, { 0x01E68, lc01E68 }, { 0x01E6A, lc01E6A }, { 0x01E6C, lc01E6C }, { 0x01E6E, lc01E6E }, { 0x01E70, lc01E70 }, { 0x01E72, lc01E72 }, +{ 0x01E74, lc01E74 }, { 0x01E76, lc01E76 }, { 0x01E78, lc01E78 }, { 0x01E7A, lc01E7A }, { 0x01E7C, lc01E7C }, { 0x01E7E, lc01E7E }, { 0x01E80, lc01E80 }, { 0x01E82, lc01E82 }, +{ 0x01E84, lc01E84 }, { 0x01E86, lc01E86 }, { 0x01E88, lc01E88 }, { 0x01E8A, lc01E8A }, { 0x01E8C, lc01E8C }, { 0x01E8E, lc01E8E }, { 0x01E90, lc01E90 }, { 0x01E92, lc01E92 }, +{ 0x01E94, lc01E94 }, { 0x01E96, lc01E96 }, { 0x01E97, lc01E97 }, { 0x01E98, lc01E98 }, { 0x01E99, lc01E99 }, { 0x01E9A, lc01E9A }, { 0x01EA0, lc01EA0 }, { 0x01EA2, lc01EA2 }, +{ 0x01EA4, lc01EA4 }, { 0x01EA6, lc01EA6 }, { 0x01EA8, lc01EA8 }, { 0x01EAA, lc01EAA }, { 0x01EAC, lc01EAC }, { 0x01EAE, lc01EAE }, { 0x01EB0, lc01EB0 }, { 0x01EB2, lc01EB2 }, +{ 0x01EB4, lc01EB4 }, { 0x01EB6, lc01EB6 }, { 0x01EB8, lc01EB8 }, { 0x01EBA, lc01EBA }, { 0x01EBC, lc01EBC }, { 0x01EBE, lc01EBE }, { 0x01EC0, lc01EC0 }, { 0x01EC2, lc01EC2 }, +{ 0x01EC4, lc01EC4 }, { 0x01EC6, lc01EC6 }, { 0x01EC8, lc01EC8 }, { 0x01ECA, lc01ECA }, { 0x01ECC, lc01ECC }, { 0x01ECE, lc01ECE }, { 0x01ED0, lc01ED0 }, { 0x01ED2, lc01ED2 }, +{ 0x01ED4, lc01ED4 }, { 0x01ED6, lc01ED6 }, { 0x01ED8, lc01ED8 }, { 0x01EDA, lc01EDA }, { 0x01EDC, lc01EDC }, { 0x01EDE, lc01EDE }, { 0x01EE0, lc01EE0 }, { 0x01EE2, lc01EE2 }, +{ 0x01EE4, lc01EE4 }, { 0x01EE6, lc01EE6 }, { 0x01EE8, lc01EE8 }, { 0x01EEA, lc01EEA }, { 0x01EEC, lc01EEC }, { 0x01EEE, lc01EEE }, { 0x01EF0, lc01EF0 }, { 0x01EF2, lc01EF2 }, +{ 0x01EF4, lc01EF4 }, { 0x01EF6, lc01EF6 }, { 0x01EF8, lc01EF8 }, { 0x01F08, lc01F08 }, { 0x01F09, lc01F09 }, { 0x01F0A, lc01F0A }, { 0x01F0B, lc01F0B }, { 0x01F0C, lc01F0C }, +{ 0x01F0D, lc01F0D }, { 0x01F0E, lc01F0E }, { 0x01F0F, lc01F0F }, { 0x01F18, lc01F18 }, { 0x01F19, lc01F19 }, { 0x01F1A, lc01F1A }, { 0x01F1B, lc01F1B }, { 0x01F1C, lc01F1C }, +{ 0x01F1D, lc01F1D }, { 0x01F28, lc01F28 }, { 0x01F29, lc01F29 }, { 0x01F2A, lc01F2A }, { 0x01F2B, lc01F2B }, { 0x01F2C, lc01F2C }, { 0x01F2D, lc01F2D }, { 0x01F2E, lc01F2E }, +{ 0x01F2F, lc01F2F }, { 0x01F38, lc01F38 }, { 0x01F39, lc01F39 }, { 0x01F3A, lc01F3A }, { 0x01F3B, lc01F3B }, { 0x01F3C, lc01F3C }, { 0x01F3D, lc01F3D }, { 0x01F3E, lc01F3E }, +{ 0x01F3F, lc01F3F }, { 0x01F48, lc01F48 }, { 0x01F49, lc01F49 }, { 0x01F4A, lc01F4A }, { 0x01F4B, lc01F4B }, { 0x01F4C, lc01F4C }, { 0x01F4D, lc01F4D }, { 0x01F50, lc01F50 }, +{ 0x01F52, lc01F52 }, { 0x01F54, lc01F54 }, { 0x01F56, lc01F56 }, { 0x01F59, lc01F59 }, { 0x01F5B, lc01F5B }, { 0x01F5D, lc01F5D }, { 0x01F5F, lc01F5F }, { 0x01F68, lc01F68 }, +{ 0x01F69, lc01F69 }, { 0x01F6A, lc01F6A }, { 0x01F6B, lc01F6B }, { 0x01F6C, lc01F6C }, { 0x01F6D, lc01F6D }, { 0x01F6E, lc01F6E }, { 0x01F6F, lc01F6F }, { 0x01F80, lc01F80 }, +{ 0x01F81, lc01F81 }, { 0x01F82, lc01F82 }, { 0x01F83, lc01F83 }, { 0x01F84, lc01F84 }, { 0x01F85, lc01F85 }, { 0x01F86, lc01F86 }, { 0x01F87, lc01F87 }, { 0x01F88, lc01F88 }, +{ 0x01F89, lc01F89 }, { 0x01F8A, lc01F8A }, { 0x01F8B, lc01F8B }, { 0x01F8C, lc01F8C }, { 0x01F8D, lc01F8D }, { 0x01F8E, lc01F8E }, { 0x01F8F, lc01F8F }, { 0x01F90, lc01F90 }, +{ 0x01F91, lc01F91 }, { 0x01F92, lc01F92 }, { 0x01F93, lc01F93 }, { 0x01F94, lc01F94 }, { 0x01F95, lc01F95 }, { 0x01F96, lc01F96 }, { 0x01F97, lc01F97 }, { 0x01F98, lc01F98 }, +{ 0x01F99, lc01F99 }, { 0x01F9A, lc01F9A }, { 0x01F9B, lc01F9B }, { 0x01F9C, lc01F9C }, { 0x01F9D, lc01F9D }, { 0x01F9E, lc01F9E }, { 0x01F9F, lc01F9F }, { 0x01FA0, lc01FA0 }, +{ 0x01FA1, lc01FA1 }, { 0x01FA2, lc01FA2 }, { 0x01FA3, lc01FA3 }, { 0x01FA4, lc01FA4 }, { 0x01FA5, lc01FA5 }, { 0x01FA6, lc01FA6 }, { 0x01FA7, lc01FA7 }, { 0x01FA8, lc01FA8 }, +{ 0x01FA9, lc01FA9 }, { 0x01FAA, lc01FAA }, { 0x01FAB, lc01FAB }, { 0x01FAC, lc01FAC }, { 0x01FAD, lc01FAD }, { 0x01FAE, lc01FAE }, { 0x01FAF, lc01FAF }, { 0x01FB2, lc01FB2 }, +{ 0x01FB3, lc01FB3 }, { 0x01FB4, lc01FB4 }, { 0x01FB6, lc01FB6 }, { 0x01FB7, lc01FB7 }, { 0x01FB8, lc01FB8 }, { 0x01FB9, lc01FB9 }, { 0x01FBA, lc01FBA }, { 0x01FBB, lc01FBB }, +{ 0x01FBC, lc01FBC }, { 0x01FC2, lc01FC2 }, { 0x01FC3, lc01FC3 }, { 0x01FC4, lc01FC4 }, { 0x01FC6, lc01FC6 }, { 0x01FC7, lc01FC7 }, { 0x01FC8, lc01FC8 }, { 0x01FC9, lc01FC9 }, +{ 0x01FCA, lc01FCA }, { 0x01FCB, lc01FCB }, { 0x01FCC, lc01FCC }, { 0x01FD2, lc01FD2 }, { 0x01FD3, lc01FD3 }, { 0x01FD6, lc01FD6 }, { 0x01FD7, lc01FD7 }, { 0x01FD8, lc01FD8 }, +{ 0x01FD9, lc01FD9 }, { 0x01FDA, lc01FDA }, { 0x01FDB, lc01FDB }, { 0x01FE2, lc01FE2 }, { 0x01FE3, lc01FE3 }, { 0x01FE4, lc01FE4 }, { 0x01FE6, lc01FE6 }, { 0x01FE7, lc01FE7 }, +{ 0x01FE8, lc01FE8 }, { 0x01FE9, lc01FE9 }, { 0x01FEA, lc01FEA }, { 0x01FEB, lc01FEB }, { 0x01FEC, lc01FEC }, { 0x01FF2, lc01FF2 }, { 0x01FF3, lc01FF3 }, { 0x01FF4, lc01FF4 }, +{ 0x01FF6, lc01FF6 }, { 0x01FF7, lc01FF7 }, { 0x01FF8, lc01FF8 }, { 0x01FF9, lc01FF9 }, { 0x01FFA, lc01FFA }, { 0x01FFB, lc01FFB }, { 0x01FFC, lc01FFC }, { 0x02126, lc02126 }, +{ 0x0212A, lc0212A }, { 0x0212B, lc0212B }, { 0x02132, lc02132 }, { 0x02160, lc02160 }, { 0x02161, lc02161 }, { 0x02162, lc02162 }, { 0x02163, lc02163 }, { 0x02164, lc02164 }, +{ 0x02165, lc02165 }, { 0x02166, lc02166 }, { 0x02167, lc02167 }, { 0x02168, lc02168 }, { 0x02169, lc02169 }, { 0x0216A, lc0216A }, { 0x0216B, lc0216B }, { 0x0216C, lc0216C }, +{ 0x0216D, lc0216D }, { 0x0216E, lc0216E }, { 0x0216F, lc0216F }, { 0x02183, lc02183 }, { 0x024B6, lc024B6 }, { 0x024B7, lc024B7 }, { 0x024B8, lc024B8 }, { 0x024B9, lc024B9 }, +{ 0x024BA, lc024BA }, { 0x024BB, lc024BB }, { 0x024BC, lc024BC }, { 0x024BD, lc024BD }, { 0x024BE, lc024BE }, { 0x024BF, lc024BF }, { 0x024C0, lc024C0 }, { 0x024C1, lc024C1 }, +{ 0x024C2, lc024C2 }, { 0x024C3, lc024C3 }, { 0x024C4, lc024C4 }, { 0x024C5, lc024C5 }, { 0x024C6, lc024C6 }, { 0x024C7, lc024C7 }, { 0x024C8, lc024C8 }, { 0x024C9, lc024C9 }, +{ 0x024CA, lc024CA }, { 0x024CB, lc024CB }, { 0x024CC, lc024CC }, { 0x024CD, lc024CD }, { 0x024CE, lc024CE }, { 0x024CF, lc024CF }, { 0x02C00, lc02C00 }, { 0x02C01, lc02C01 }, +{ 0x02C02, lc02C02 }, { 0x02C03, lc02C03 }, { 0x02C04, lc02C04 }, { 0x02C05, lc02C05 }, { 0x02C06, lc02C06 }, { 0x02C07, lc02C07 }, { 0x02C08, lc02C08 }, { 0x02C09, lc02C09 }, +{ 0x02C0A, lc02C0A }, { 0x02C0B, lc02C0B }, { 0x02C0C, lc02C0C }, { 0x02C0D, lc02C0D }, { 0x02C0E, lc02C0E }, { 0x02C0F, lc02C0F }, { 0x02C10, lc02C10 }, { 0x02C11, lc02C11 }, +{ 0x02C12, lc02C12 }, { 0x02C13, lc02C13 }, { 0x02C14, lc02C14 }, { 0x02C15, lc02C15 }, { 0x02C16, lc02C16 }, { 0x02C17, lc02C17 }, { 0x02C18, lc02C18 }, { 0x02C19, lc02C19 }, +{ 0x02C1A, lc02C1A }, { 0x02C1B, lc02C1B }, { 0x02C1C, lc02C1C }, { 0x02C1D, lc02C1D }, { 0x02C1E, lc02C1E }, { 0x02C1F, lc02C1F }, { 0x02C20, lc02C20 }, { 0x02C21, lc02C21 }, +{ 0x02C22, lc02C22 }, { 0x02C23, lc02C23 }, { 0x02C24, lc02C24 }, { 0x02C25, lc02C25 }, { 0x02C26, lc02C26 }, { 0x02C27, lc02C27 }, { 0x02C28, lc02C28 }, { 0x02C29, lc02C29 }, +{ 0x02C2A, lc02C2A }, { 0x02C2B, lc02C2B }, { 0x02C2C, lc02C2C }, { 0x02C2D, lc02C2D }, { 0x02C2E, lc02C2E }, { 0x02C60, lc02C60 }, { 0x02C62, lc02C62 }, { 0x02C63, lc02C63 }, +{ 0x02C64, lc02C64 }, { 0x02C67, lc02C67 }, { 0x02C69, lc02C69 }, { 0x02C6B, lc02C6B }, { 0x02C75, lc02C75 }, { 0x02C80, lc02C80 }, { 0x02C82, lc02C82 }, { 0x02C84, lc02C84 }, +{ 0x02C86, lc02C86 }, { 0x02C88, lc02C88 }, { 0x02C8A, lc02C8A }, { 0x02C8C, lc02C8C }, { 0x02C8E, lc02C8E }, { 0x02C90, lc02C90 }, { 0x02C92, lc02C92 }, { 0x02C94, lc02C94 }, +{ 0x02C96, lc02C96 }, { 0x02C98, lc02C98 }, { 0x02C9A, lc02C9A }, { 0x02C9C, lc02C9C }, { 0x02C9E, lc02C9E }, { 0x02CA0, lc02CA0 }, { 0x02CA2, lc02CA2 }, { 0x02CA4, lc02CA4 }, +{ 0x02CA6, lc02CA6 }, { 0x02CA8, lc02CA8 }, { 0x02CAA, lc02CAA }, { 0x02CAC, lc02CAC }, { 0x02CAE, lc02CAE }, { 0x02CB0, lc02CB0 }, { 0x02CB2, lc02CB2 }, { 0x02CB4, lc02CB4 }, +{ 0x02CB6, lc02CB6 }, { 0x02CB8, lc02CB8 }, { 0x02CBA, lc02CBA }, { 0x02CBC, lc02CBC }, { 0x02CBE, lc02CBE }, { 0x02CC0, lc02CC0 }, { 0x02CC2, lc02CC2 }, { 0x02CC4, lc02CC4 }, +{ 0x02CC6, lc02CC6 }, { 0x02CC8, lc02CC8 }, { 0x02CCA, lc02CCA }, { 0x02CCC, lc02CCC }, { 0x02CCE, lc02CCE }, { 0x02CD0, lc02CD0 }, { 0x02CD2, lc02CD2 }, { 0x02CD4, lc02CD4 }, +{ 0x02CD6, lc02CD6 }, { 0x02CD8, lc02CD8 }, { 0x02CDA, lc02CDA }, { 0x02CDC, lc02CDC }, { 0x02CDE, lc02CDE }, { 0x02CE0, lc02CE0 }, { 0x02CE2, lc02CE2 }, { 0x0FB00, lc0FB00 }, +{ 0x0FB01, lc0FB01 }, { 0x0FB02, lc0FB02 }, { 0x0FB03, lc0FB03 }, { 0x0FB04, lc0FB04 }, { 0x0FB05, lc0FB05 }, { 0x0FB06, lc0FB06 }, { 0x0FB13, lc0FB13 }, { 0x0FB14, lc0FB14 }, +{ 0x0FB15, lc0FB15 }, { 0x0FB16, lc0FB16 }, { 0x0FB17, lc0FB17 }, { 0x0FF21, lc0FF21 }, { 0x0FF22, lc0FF22 }, { 0x0FF23, lc0FF23 }, { 0x0FF24, lc0FF24 }, { 0x0FF25, lc0FF25 }, +{ 0x0FF26, lc0FF26 }, { 0x0FF27, lc0FF27 }, { 0x0FF28, lc0FF28 }, { 0x0FF29, lc0FF29 }, { 0x0FF2A, lc0FF2A }, { 0x0FF2B, lc0FF2B }, { 0x0FF2C, lc0FF2C }, { 0x0FF2D, lc0FF2D }, +{ 0x0FF2E, lc0FF2E }, { 0x0FF2F, lc0FF2F }, { 0x0FF30, lc0FF30 }, { 0x0FF31, lc0FF31 }, { 0x0FF32, lc0FF32 }, { 0x0FF33, lc0FF33 }, { 0x0FF34, lc0FF34 }, { 0x0FF35, lc0FF35 }, +{ 0x0FF36, lc0FF36 }, { 0x0FF37, lc0FF37 }, { 0x0FF38, lc0FF38 }, { 0x0FF39, lc0FF39 }, { 0x0FF3A, lc0FF3A }, { 0x10400, lc10400 }, { 0x10401, lc10401 }, { 0x10402, lc10402 }, +{ 0x10403, lc10403 }, { 0x10404, lc10404 }, { 0x10405, lc10405 }, { 0x10406, lc10406 }, { 0x10407, lc10407 }, { 0x10408, lc10408 }, { 0x10409, lc10409 }, { 0x1040A, lc1040A }, +{ 0x1040B, lc1040B }, { 0x1040C, lc1040C }, { 0x1040D, lc1040D }, { 0x1040E, lc1040E }, { 0x1040F, lc1040F }, { 0x10410, lc10410 }, { 0x10411, lc10411 }, { 0x10412, lc10412 }, +{ 0x10413, lc10413 }, { 0x10414, lc10414 }, { 0x10415, lc10415 }, { 0x10416, lc10416 }, { 0x10417, lc10417 }, { 0x10418, lc10418 }, { 0x10419, lc10419 }, { 0x1041A, lc1041A }, +{ 0x1041B, lc1041B }, { 0x1041C, lc1041C }, { 0x1041D, lc1041D }, { 0x1041E, lc1041E }, { 0x1041F, lc1041F }, { 0x10420, lc10420 }, { 0x10421, lc10421 }, { 0x10422, lc10422 }, +{ 0x10423, lc10423 }, { 0x10424, lc10424 }, { 0x10425, lc10425 }, { 0x10426, lc10426 }, { 0x10427, lc10427 } +}; + +unsigned int *LowerCaseTransform::getLowerCase(unsigned int ch) +{ + if(ch < lowerCaseDirectTableSize) { + return lowerCaseDirectTable[ch]; + } + + // Binary search in the lowerCaseTable table + unsigned int min = 0; + unsigned int max = lowerCaseTableSize; + unsigned int middle; + int cmp; + + while(min < max) { + middle = (max + min) >> 1; + + cmp = lowerCaseTable[middle].ch - ch; + if(cmp > 0) max = middle; + else if(cmp < 0) { + min = middle + 1; + } + else { + return lowerCaseTable[middle].dest; + } + } + + return 0; +} + +static unsigned int uc00061[] = { 0x00041, 0x00000 }; +static unsigned int uc00062[] = { 0x00042, 0x00000 }; +static unsigned int uc00063[] = { 0x00043, 0x00000 }; +static unsigned int uc00064[] = { 0x00044, 0x00000 }; +static unsigned int uc00065[] = { 0x00045, 0x00000 }; +static unsigned int uc00066[] = { 0x00046, 0x00000 }; +static unsigned int uc00067[] = { 0x00047, 0x00000 }; +static unsigned int uc00068[] = { 0x00048, 0x00000 }; +static unsigned int uc00069[] = { 0x00049, 0x00000 }; +static unsigned int uc0006A[] = { 0x0004A, 0x00000 }; +static unsigned int uc0006B[] = { 0x0004B, 0x00000 }; +static unsigned int uc0006C[] = { 0x0004C, 0x00000 }; +static unsigned int uc0006D[] = { 0x0004D, 0x00000 }; +static unsigned int uc0006E[] = { 0x0004E, 0x00000 }; +static unsigned int uc0006F[] = { 0x0004F, 0x00000 }; +static unsigned int uc00070[] = { 0x00050, 0x00000 }; +static unsigned int uc00071[] = { 0x00051, 0x00000 }; +static unsigned int uc00072[] = { 0x00052, 0x00000 }; +static unsigned int uc00073[] = { 0x00053, 0x00000 }; +static unsigned int uc00074[] = { 0x00054, 0x00000 }; +static unsigned int uc00075[] = { 0x00055, 0x00000 }; +static unsigned int uc00076[] = { 0x00056, 0x00000 }; +static unsigned int uc00077[] = { 0x00057, 0x00000 }; +static unsigned int uc00078[] = { 0x00058, 0x00000 }; +static unsigned int uc00079[] = { 0x00059, 0x00000 }; +static unsigned int uc0007A[] = { 0x0005A, 0x00000 }; +static unsigned int uc000B5[] = { 0x0039C, 0x00000 }; +static unsigned int uc000DF[] = { 0x00053, 0x00053, 0x00000 }; +static unsigned int uc000E0[] = { 0x000C0, 0x00000 }; +static unsigned int uc000E1[] = { 0x000C1, 0x00000 }; +static unsigned int uc000E2[] = { 0x000C2, 0x00000 }; +static unsigned int uc000E3[] = { 0x000C3, 0x00000 }; +static unsigned int uc000E4[] = { 0x000C4, 0x00000 }; +static unsigned int uc000E5[] = { 0x000C5, 0x00000 }; +static unsigned int uc000E6[] = { 0x000C6, 0x00000 }; +static unsigned int uc000E7[] = { 0x000C7, 0x00000 }; +static unsigned int uc000E8[] = { 0x000C8, 0x00000 }; +static unsigned int uc000E9[] = { 0x000C9, 0x00000 }; +static unsigned int uc000EA[] = { 0x000CA, 0x00000 }; +static unsigned int uc000EB[] = { 0x000CB, 0x00000 }; +static unsigned int uc000EC[] = { 0x000CC, 0x00000 }; +static unsigned int uc000ED[] = { 0x000CD, 0x00000 }; +static unsigned int uc000EE[] = { 0x000CE, 0x00000 }; +static unsigned int uc000EF[] = { 0x000CF, 0x00000 }; +static unsigned int uc000F0[] = { 0x000D0, 0x00000 }; +static unsigned int uc000F1[] = { 0x000D1, 0x00000 }; +static unsigned int uc000F2[] = { 0x000D2, 0x00000 }; +static unsigned int uc000F3[] = { 0x000D3, 0x00000 }; +static unsigned int uc000F4[] = { 0x000D4, 0x00000 }; +static unsigned int uc000F5[] = { 0x000D5, 0x00000 }; +static unsigned int uc000F6[] = { 0x000D6, 0x00000 }; +static unsigned int uc000F8[] = { 0x000D8, 0x00000 }; +static unsigned int uc000F9[] = { 0x000D9, 0x00000 }; +static unsigned int uc000FA[] = { 0x000DA, 0x00000 }; +static unsigned int uc000FB[] = { 0x000DB, 0x00000 }; +static unsigned int uc000FC[] = { 0x000DC, 0x00000 }; +static unsigned int uc000FD[] = { 0x000DD, 0x00000 }; +static unsigned int uc000FE[] = { 0x000DE, 0x00000 }; +static unsigned int uc000FF[] = { 0x00178, 0x00000 }; +static unsigned int uc00101[] = { 0x00100, 0x00000 }; +static unsigned int uc00103[] = { 0x00102, 0x00000 }; +static unsigned int uc00105[] = { 0x00104, 0x00000 }; +static unsigned int uc00107[] = { 0x00106, 0x00000 }; +static unsigned int uc00109[] = { 0x00108, 0x00000 }; +static unsigned int uc0010B[] = { 0x0010A, 0x00000 }; +static unsigned int uc0010D[] = { 0x0010C, 0x00000 }; +static unsigned int uc0010F[] = { 0x0010E, 0x00000 }; +static unsigned int uc00111[] = { 0x00110, 0x00000 }; +static unsigned int uc00113[] = { 0x00112, 0x00000 }; +static unsigned int uc00115[] = { 0x00114, 0x00000 }; +static unsigned int uc00117[] = { 0x00116, 0x00000 }; +static unsigned int uc00119[] = { 0x00118, 0x00000 }; +static unsigned int uc0011B[] = { 0x0011A, 0x00000 }; +static unsigned int uc0011D[] = { 0x0011C, 0x00000 }; +static unsigned int uc0011F[] = { 0x0011E, 0x00000 }; +static unsigned int uc00121[] = { 0x00120, 0x00000 }; +static unsigned int uc00123[] = { 0x00122, 0x00000 }; +static unsigned int uc00125[] = { 0x00124, 0x00000 }; +static unsigned int uc00127[] = { 0x00126, 0x00000 }; +static unsigned int uc00129[] = { 0x00128, 0x00000 }; +static unsigned int uc0012B[] = { 0x0012A, 0x00000 }; +static unsigned int uc0012D[] = { 0x0012C, 0x00000 }; +static unsigned int uc0012F[] = { 0x0012E, 0x00000 }; +static unsigned int uc00130[] = { 0x00130, 0x00000 }; +static unsigned int uc00131[] = { 0x00049, 0x00000 }; +static unsigned int uc00133[] = { 0x00132, 0x00000 }; +static unsigned int uc00135[] = { 0x00134, 0x00000 }; +static unsigned int uc00137[] = { 0x00136, 0x00000 }; +static unsigned int uc0013A[] = { 0x00139, 0x00000 }; +static unsigned int uc0013C[] = { 0x0013B, 0x00000 }; +static unsigned int uc0013E[] = { 0x0013D, 0x00000 }; +static unsigned int uc00140[] = { 0x0013F, 0x00000 }; +static unsigned int uc00142[] = { 0x00141, 0x00000 }; +static unsigned int uc00144[] = { 0x00143, 0x00000 }; +static unsigned int uc00146[] = { 0x00145, 0x00000 }; +static unsigned int uc00148[] = { 0x00147, 0x00000 }; +static unsigned int uc00149[] = { 0x002BC, 0x0004E, 0x00000 }; +static unsigned int uc0014B[] = { 0x0014A, 0x00000 }; +static unsigned int uc0014D[] = { 0x0014C, 0x00000 }; +static unsigned int uc0014F[] = { 0x0014E, 0x00000 }; +static unsigned int uc00151[] = { 0x00150, 0x00000 }; +static unsigned int uc00153[] = { 0x00152, 0x00000 }; +static unsigned int uc00155[] = { 0x00154, 0x00000 }; +static unsigned int uc00157[] = { 0x00156, 0x00000 }; +static unsigned int uc00159[] = { 0x00158, 0x00000 }; +static unsigned int uc0015B[] = { 0x0015A, 0x00000 }; +static unsigned int uc0015D[] = { 0x0015C, 0x00000 }; +static unsigned int uc0015F[] = { 0x0015E, 0x00000 }; +static unsigned int uc00161[] = { 0x00160, 0x00000 }; +static unsigned int uc00163[] = { 0x00162, 0x00000 }; +static unsigned int uc00165[] = { 0x00164, 0x00000 }; +static unsigned int uc00167[] = { 0x00166, 0x00000 }; +static unsigned int uc00169[] = { 0x00168, 0x00000 }; +static unsigned int uc0016B[] = { 0x0016A, 0x00000 }; +static unsigned int uc0016D[] = { 0x0016C, 0x00000 }; +static unsigned int uc0016F[] = { 0x0016E, 0x00000 }; +static unsigned int uc00171[] = { 0x00170, 0x00000 }; +static unsigned int uc00173[] = { 0x00172, 0x00000 }; +static unsigned int uc00175[] = { 0x00174, 0x00000 }; +static unsigned int uc00177[] = { 0x00176, 0x00000 }; +static unsigned int uc0017A[] = { 0x00179, 0x00000 }; +static unsigned int uc0017C[] = { 0x0017B, 0x00000 }; +static unsigned int uc0017E[] = { 0x0017D, 0x00000 }; +static unsigned int uc0017F[] = { 0x00053, 0x00000 }; +static unsigned int uc00180[] = { 0x00243, 0x00000 }; +static unsigned int uc00183[] = { 0x00182, 0x00000 }; +static unsigned int uc00185[] = { 0x00184, 0x00000 }; +static unsigned int uc00188[] = { 0x00187, 0x00000 }; +static unsigned int uc0018C[] = { 0x0018B, 0x00000 }; +static unsigned int uc00192[] = { 0x00191, 0x00000 }; +static unsigned int uc00195[] = { 0x001F6, 0x00000 }; +static unsigned int uc00199[] = { 0x00198, 0x00000 }; +static unsigned int uc0019A[] = { 0x0023D, 0x00000 }; +static unsigned int uc0019E[] = { 0x00220, 0x00000 }; +static unsigned int uc001A1[] = { 0x001A0, 0x00000 }; +static unsigned int uc001A3[] = { 0x001A2, 0x00000 }; +static unsigned int uc001A5[] = { 0x001A4, 0x00000 }; +static unsigned int uc001A8[] = { 0x001A7, 0x00000 }; +static unsigned int uc001AD[] = { 0x001AC, 0x00000 }; +static unsigned int uc001B0[] = { 0x001AF, 0x00000 }; +static unsigned int uc001B4[] = { 0x001B3, 0x00000 }; +static unsigned int uc001B6[] = { 0x001B5, 0x00000 }; +static unsigned int uc001B9[] = { 0x001B8, 0x00000 }; +static unsigned int uc001BD[] = { 0x001BC, 0x00000 }; +static unsigned int uc001BF[] = { 0x001F7, 0x00000 }; +static unsigned int uc001C5[] = { 0x001C4, 0x00000 }; +static unsigned int uc001C6[] = { 0x001C4, 0x00000 }; +static unsigned int uc001C8[] = { 0x001C7, 0x00000 }; +static unsigned int uc001C9[] = { 0x001C7, 0x00000 }; +static unsigned int uc001CB[] = { 0x001CA, 0x00000 }; +static unsigned int uc001CC[] = { 0x001CA, 0x00000 }; +static unsigned int uc001CE[] = { 0x001CD, 0x00000 }; +static unsigned int uc001D0[] = { 0x001CF, 0x00000 }; +static unsigned int uc001D2[] = { 0x001D1, 0x00000 }; +static unsigned int uc001D4[] = { 0x001D3, 0x00000 }; +static unsigned int uc001D6[] = { 0x001D5, 0x00000 }; +static unsigned int uc001D8[] = { 0x001D7, 0x00000 }; +static unsigned int uc001DA[] = { 0x001D9, 0x00000 }; +static unsigned int uc001DC[] = { 0x001DB, 0x00000 }; +static unsigned int uc001DD[] = { 0x0018E, 0x00000 }; +static unsigned int uc001DF[] = { 0x001DE, 0x00000 }; +static unsigned int uc001E1[] = { 0x001E0, 0x00000 }; +static unsigned int uc001E3[] = { 0x001E2, 0x00000 }; +static unsigned int uc001E5[] = { 0x001E4, 0x00000 }; +static unsigned int uc001E7[] = { 0x001E6, 0x00000 }; +static unsigned int uc001E9[] = { 0x001E8, 0x00000 }; +static unsigned int uc001EB[] = { 0x001EA, 0x00000 }; +static unsigned int uc001ED[] = { 0x001EC, 0x00000 }; +static unsigned int uc001EF[] = { 0x001EE, 0x00000 }; +static unsigned int uc001F0[] = { 0x0004A, 0x0030C, 0x00000 }; +static unsigned int uc001F2[] = { 0x001F1, 0x00000 }; +static unsigned int uc001F3[] = { 0x001F1, 0x00000 }; +static unsigned int uc001F5[] = { 0x001F4, 0x00000 }; +static unsigned int uc001F9[] = { 0x001F8, 0x00000 }; +static unsigned int uc001FB[] = { 0x001FA, 0x00000 }; +static unsigned int uc001FD[] = { 0x001FC, 0x00000 }; +static unsigned int uc001FF[] = { 0x001FE, 0x00000 }; +static unsigned int uc00201[] = { 0x00200, 0x00000 }; +static unsigned int uc00203[] = { 0x00202, 0x00000 }; +static unsigned int uc00205[] = { 0x00204, 0x00000 }; +static unsigned int uc00207[] = { 0x00206, 0x00000 }; +static unsigned int uc00209[] = { 0x00208, 0x00000 }; +static unsigned int uc0020B[] = { 0x0020A, 0x00000 }; +static unsigned int uc0020D[] = { 0x0020C, 0x00000 }; +static unsigned int uc0020F[] = { 0x0020E, 0x00000 }; +static unsigned int uc00211[] = { 0x00210, 0x00000 }; +static unsigned int uc00213[] = { 0x00212, 0x00000 }; +static unsigned int uc00215[] = { 0x00214, 0x00000 }; +static unsigned int uc00217[] = { 0x00216, 0x00000 }; +static unsigned int uc00219[] = { 0x00218, 0x00000 }; +static unsigned int uc0021B[] = { 0x0021A, 0x00000 }; +static unsigned int uc0021D[] = { 0x0021C, 0x00000 }; +static unsigned int uc0021F[] = { 0x0021E, 0x00000 }; +static unsigned int uc00223[] = { 0x00222, 0x00000 }; +static unsigned int uc00225[] = { 0x00224, 0x00000 }; +static unsigned int uc00227[] = { 0x00226, 0x00000 }; +static unsigned int uc00229[] = { 0x00228, 0x00000 }; +static unsigned int uc0022B[] = { 0x0022A, 0x00000 }; +static unsigned int uc0022D[] = { 0x0022C, 0x00000 }; +static unsigned int uc0022F[] = { 0x0022E, 0x00000 }; +static unsigned int uc00231[] = { 0x00230, 0x00000 }; +static unsigned int uc00233[] = { 0x00232, 0x00000 }; +static unsigned int uc0023C[] = { 0x0023B, 0x00000 }; +static unsigned int uc00242[] = { 0x00241, 0x00000 }; +static unsigned int uc00247[] = { 0x00246, 0x00000 }; +static unsigned int uc00249[] = { 0x00248, 0x00000 }; +static unsigned int uc0024B[] = { 0x0024A, 0x00000 }; +static unsigned int uc0024D[] = { 0x0024C, 0x00000 }; +static unsigned int uc0024F[] = { 0x0024E, 0x00000 }; +static unsigned int uc00253[] = { 0x00181, 0x00000 }; +static unsigned int uc00254[] = { 0x00186, 0x00000 }; +static unsigned int uc00256[] = { 0x00189, 0x00000 }; +static unsigned int uc00257[] = { 0x0018A, 0x00000 }; +static unsigned int uc00259[] = { 0x0018F, 0x00000 }; +static unsigned int uc0025B[] = { 0x00190, 0x00000 }; +static unsigned int uc00260[] = { 0x00193, 0x00000 }; +static unsigned int uc00263[] = { 0x00194, 0x00000 }; +static unsigned int uc00268[] = { 0x00197, 0x00000 }; +static unsigned int uc00269[] = { 0x00196, 0x00000 }; +static unsigned int uc0026B[] = { 0x02C62, 0x00000 }; +static unsigned int uc0026F[] = { 0x0019C, 0x00000 }; +static unsigned int uc00272[] = { 0x0019D, 0x00000 }; +static unsigned int uc00275[] = { 0x0019F, 0x00000 }; +static unsigned int uc0027D[] = { 0x02C64, 0x00000 }; +static unsigned int uc00280[] = { 0x001A6, 0x00000 }; +static unsigned int uc00283[] = { 0x001A9, 0x00000 }; +static unsigned int uc00288[] = { 0x001AE, 0x00000 }; +static unsigned int uc00289[] = { 0x00244, 0x00000 }; +static unsigned int uc0028A[] = { 0x001B1, 0x00000 }; +static unsigned int uc0028B[] = { 0x001B2, 0x00000 }; +static unsigned int uc0028C[] = { 0x00245, 0x00000 }; +static unsigned int uc00292[] = { 0x001B7, 0x00000 }; +static unsigned int uc00345[] = { 0x00399, 0x00000 }; +static unsigned int uc0037B[] = { 0x003FD, 0x00000 }; +static unsigned int uc0037C[] = { 0x003FE, 0x00000 }; +static unsigned int uc0037D[] = { 0x003FF, 0x00000 }; +static unsigned int uc00390[] = { 0x00399, 0x00308, 0x00301, 0x00000 }; +static unsigned int uc003AC[] = { 0x00386, 0x00000 }; +static unsigned int uc003AD[] = { 0x00388, 0x00000 }; +static unsigned int uc003AE[] = { 0x00389, 0x00000 }; +static unsigned int uc003AF[] = { 0x0038A, 0x00000 }; +static unsigned int uc003B0[] = { 0x003A5, 0x00308, 0x00301, 0x00000 }; +static unsigned int uc003B1[] = { 0x00391, 0x00000 }; +static unsigned int uc003B2[] = { 0x00392, 0x00000 }; +static unsigned int uc003B3[] = { 0x00393, 0x00000 }; +static unsigned int uc003B4[] = { 0x00394, 0x00000 }; +static unsigned int uc003B5[] = { 0x00395, 0x00000 }; +static unsigned int uc003B6[] = { 0x00396, 0x00000 }; +static unsigned int uc003B7[] = { 0x00397, 0x00000 }; +static unsigned int uc003B8[] = { 0x00398, 0x00000 }; +static unsigned int uc003B9[] = { 0x00399, 0x00000 }; +static unsigned int uc003BA[] = { 0x0039A, 0x00000 }; +static unsigned int uc003BB[] = { 0x0039B, 0x00000 }; +static unsigned int uc003BC[] = { 0x0039C, 0x00000 }; +static unsigned int uc003BD[] = { 0x0039D, 0x00000 }; +static unsigned int uc003BE[] = { 0x0039E, 0x00000 }; +static unsigned int uc003BF[] = { 0x0039F, 0x00000 }; +static unsigned int uc003C0[] = { 0x003A0, 0x00000 }; +static unsigned int uc003C1[] = { 0x003A1, 0x00000 }; +static unsigned int uc003C2[] = { 0x003A3, 0x00000 }; +static unsigned int uc003C3[] = { 0x003A3, 0x00000 }; +static unsigned int uc003C4[] = { 0x003A4, 0x00000 }; +static unsigned int uc003C5[] = { 0x003A5, 0x00000 }; +static unsigned int uc003C6[] = { 0x003A6, 0x00000 }; +static unsigned int uc003C7[] = { 0x003A7, 0x00000 }; +static unsigned int uc003C8[] = { 0x003A8, 0x00000 }; +static unsigned int uc003C9[] = { 0x003A9, 0x00000 }; +static unsigned int uc003CA[] = { 0x003AA, 0x00000 }; +static unsigned int uc003CB[] = { 0x003AB, 0x00000 }; +static unsigned int uc003CC[] = { 0x0038C, 0x00000 }; +static unsigned int uc003CD[] = { 0x0038E, 0x00000 }; +static unsigned int uc003CE[] = { 0x0038F, 0x00000 }; +static unsigned int uc003D0[] = { 0x00392, 0x00000 }; +static unsigned int uc003D1[] = { 0x00398, 0x00000 }; +static unsigned int uc003D5[] = { 0x003A6, 0x00000 }; +static unsigned int uc003D6[] = { 0x003A0, 0x00000 }; +static unsigned int uc003D9[] = { 0x003D8, 0x00000 }; +static unsigned int uc003DB[] = { 0x003DA, 0x00000 }; +static unsigned int uc003DD[] = { 0x003DC, 0x00000 }; +static unsigned int uc003DF[] = { 0x003DE, 0x00000 }; +static unsigned int uc003E1[] = { 0x003E0, 0x00000 }; +static unsigned int uc003E3[] = { 0x003E2, 0x00000 }; +static unsigned int uc003E5[] = { 0x003E4, 0x00000 }; +static unsigned int uc003E7[] = { 0x003E6, 0x00000 }; +static unsigned int uc003E9[] = { 0x003E8, 0x00000 }; +static unsigned int uc003EB[] = { 0x003EA, 0x00000 }; +static unsigned int uc003ED[] = { 0x003EC, 0x00000 }; +static unsigned int uc003EF[] = { 0x003EE, 0x00000 }; +static unsigned int uc003F0[] = { 0x0039A, 0x00000 }; +static unsigned int uc003F1[] = { 0x003A1, 0x00000 }; +static unsigned int uc003F2[] = { 0x003F9, 0x00000 }; +static unsigned int uc003F5[] = { 0x00395, 0x00000 }; +static unsigned int uc003F8[] = { 0x003F7, 0x00000 }; +static unsigned int uc003FB[] = { 0x003FA, 0x00000 }; +static unsigned int uc00430[] = { 0x00410, 0x00000 }; +static unsigned int uc00431[] = { 0x00411, 0x00000 }; +static unsigned int uc00432[] = { 0x00412, 0x00000 }; +static unsigned int uc00433[] = { 0x00413, 0x00000 }; +static unsigned int uc00434[] = { 0x00414, 0x00000 }; +static unsigned int uc00435[] = { 0x00415, 0x00000 }; +static unsigned int uc00436[] = { 0x00416, 0x00000 }; +static unsigned int uc00437[] = { 0x00417, 0x00000 }; +static unsigned int uc00438[] = { 0x00418, 0x00000 }; +static unsigned int uc00439[] = { 0x00419, 0x00000 }; +static unsigned int uc0043A[] = { 0x0041A, 0x00000 }; +static unsigned int uc0043B[] = { 0x0041B, 0x00000 }; +static unsigned int uc0043C[] = { 0x0041C, 0x00000 }; +static unsigned int uc0043D[] = { 0x0041D, 0x00000 }; +static unsigned int uc0043E[] = { 0x0041E, 0x00000 }; +static unsigned int uc0043F[] = { 0x0041F, 0x00000 }; +static unsigned int uc00440[] = { 0x00420, 0x00000 }; +static unsigned int uc00441[] = { 0x00421, 0x00000 }; +static unsigned int uc00442[] = { 0x00422, 0x00000 }; +static unsigned int uc00443[] = { 0x00423, 0x00000 }; +static unsigned int uc00444[] = { 0x00424, 0x00000 }; +static unsigned int uc00445[] = { 0x00425, 0x00000 }; +static unsigned int uc00446[] = { 0x00426, 0x00000 }; +static unsigned int uc00447[] = { 0x00427, 0x00000 }; +static unsigned int uc00448[] = { 0x00428, 0x00000 }; +static unsigned int uc00449[] = { 0x00429, 0x00000 }; +static unsigned int uc0044A[] = { 0x0042A, 0x00000 }; +static unsigned int uc0044B[] = { 0x0042B, 0x00000 }; +static unsigned int uc0044C[] = { 0x0042C, 0x00000 }; +static unsigned int uc0044D[] = { 0x0042D, 0x00000 }; +static unsigned int uc0044E[] = { 0x0042E, 0x00000 }; +static unsigned int uc0044F[] = { 0x0042F, 0x00000 }; +static unsigned int uc00450[] = { 0x00400, 0x00000 }; +static unsigned int uc00451[] = { 0x00401, 0x00000 }; +static unsigned int uc00452[] = { 0x00402, 0x00000 }; +static unsigned int uc00453[] = { 0x00403, 0x00000 }; +static unsigned int uc00454[] = { 0x00404, 0x00000 }; +static unsigned int uc00455[] = { 0x00405, 0x00000 }; +static unsigned int uc00456[] = { 0x00406, 0x00000 }; +static unsigned int uc00457[] = { 0x00407, 0x00000 }; +static unsigned int uc00458[] = { 0x00408, 0x00000 }; +static unsigned int uc00459[] = { 0x00409, 0x00000 }; +static unsigned int uc0045A[] = { 0x0040A, 0x00000 }; +static unsigned int uc0045B[] = { 0x0040B, 0x00000 }; +static unsigned int uc0045C[] = { 0x0040C, 0x00000 }; +static unsigned int uc0045D[] = { 0x0040D, 0x00000 }; +static unsigned int uc0045E[] = { 0x0040E, 0x00000 }; +static unsigned int uc0045F[] = { 0x0040F, 0x00000 }; +static unsigned int uc00461[] = { 0x00460, 0x00000 }; +static unsigned int uc00463[] = { 0x00462, 0x00000 }; +static unsigned int uc00465[] = { 0x00464, 0x00000 }; +static unsigned int uc00467[] = { 0x00466, 0x00000 }; +static unsigned int uc00469[] = { 0x00468, 0x00000 }; +static unsigned int uc0046B[] = { 0x0046A, 0x00000 }; +static unsigned int uc0046D[] = { 0x0046C, 0x00000 }; +static unsigned int uc0046F[] = { 0x0046E, 0x00000 }; +static unsigned int uc00471[] = { 0x00470, 0x00000 }; +static unsigned int uc00473[] = { 0x00472, 0x00000 }; +static unsigned int uc00475[] = { 0x00474, 0x00000 }; +static unsigned int uc00477[] = { 0x00476, 0x00000 }; +static unsigned int uc00479[] = { 0x00478, 0x00000 }; +static unsigned int uc0047B[] = { 0x0047A, 0x00000 }; +static unsigned int uc0047D[] = { 0x0047C, 0x00000 }; +static unsigned int uc0047F[] = { 0x0047E, 0x00000 }; +static unsigned int uc00481[] = { 0x00480, 0x00000 }; +static unsigned int uc0048B[] = { 0x0048A, 0x00000 }; +static unsigned int uc0048D[] = { 0x0048C, 0x00000 }; +static unsigned int uc0048F[] = { 0x0048E, 0x00000 }; +static unsigned int uc00491[] = { 0x00490, 0x00000 }; +static unsigned int uc00493[] = { 0x00492, 0x00000 }; +static unsigned int uc00495[] = { 0x00494, 0x00000 }; +static unsigned int uc00497[] = { 0x00496, 0x00000 }; +static unsigned int uc00499[] = { 0x00498, 0x00000 }; +static unsigned int uc0049B[] = { 0x0049A, 0x00000 }; +static unsigned int uc0049D[] = { 0x0049C, 0x00000 }; +static unsigned int uc0049F[] = { 0x0049E, 0x00000 }; +static unsigned int uc004A1[] = { 0x004A0, 0x00000 }; +static unsigned int uc004A3[] = { 0x004A2, 0x00000 }; +static unsigned int uc004A5[] = { 0x004A4, 0x00000 }; +static unsigned int uc004A7[] = { 0x004A6, 0x00000 }; +static unsigned int uc004A9[] = { 0x004A8, 0x00000 }; +static unsigned int uc004AB[] = { 0x004AA, 0x00000 }; +static unsigned int uc004AD[] = { 0x004AC, 0x00000 }; +static unsigned int uc004AF[] = { 0x004AE, 0x00000 }; +static unsigned int uc004B1[] = { 0x004B0, 0x00000 }; +static unsigned int uc004B3[] = { 0x004B2, 0x00000 }; +static unsigned int uc004B5[] = { 0x004B4, 0x00000 }; +static unsigned int uc004B7[] = { 0x004B6, 0x00000 }; +static unsigned int uc004B9[] = { 0x004B8, 0x00000 }; +static unsigned int uc004BB[] = { 0x004BA, 0x00000 }; +static unsigned int uc004BD[] = { 0x004BC, 0x00000 }; +static unsigned int uc004BF[] = { 0x004BE, 0x00000 }; +static unsigned int uc004C2[] = { 0x004C1, 0x00000 }; +static unsigned int uc004C4[] = { 0x004C3, 0x00000 }; +static unsigned int uc004C6[] = { 0x004C5, 0x00000 }; +static unsigned int uc004C8[] = { 0x004C7, 0x00000 }; +static unsigned int uc004CA[] = { 0x004C9, 0x00000 }; +static unsigned int uc004CC[] = { 0x004CB, 0x00000 }; +static unsigned int uc004CE[] = { 0x004CD, 0x00000 }; +static unsigned int uc004CF[] = { 0x004C0, 0x00000 }; +static unsigned int uc004D1[] = { 0x004D0, 0x00000 }; +static unsigned int uc004D3[] = { 0x004D2, 0x00000 }; +static unsigned int uc004D5[] = { 0x004D4, 0x00000 }; +static unsigned int uc004D7[] = { 0x004D6, 0x00000 }; +static unsigned int uc004D9[] = { 0x004D8, 0x00000 }; +static unsigned int uc004DB[] = { 0x004DA, 0x00000 }; +static unsigned int uc004DD[] = { 0x004DC, 0x00000 }; +static unsigned int uc004DF[] = { 0x004DE, 0x00000 }; +static unsigned int uc004E1[] = { 0x004E0, 0x00000 }; +static unsigned int uc004E3[] = { 0x004E2, 0x00000 }; +static unsigned int uc004E5[] = { 0x004E4, 0x00000 }; +static unsigned int uc004E7[] = { 0x004E6, 0x00000 }; +static unsigned int uc004E9[] = { 0x004E8, 0x00000 }; +static unsigned int uc004EB[] = { 0x004EA, 0x00000 }; +static unsigned int uc004ED[] = { 0x004EC, 0x00000 }; +static unsigned int uc004EF[] = { 0x004EE, 0x00000 }; +static unsigned int uc004F1[] = { 0x004F0, 0x00000 }; +static unsigned int uc004F3[] = { 0x004F2, 0x00000 }; +static unsigned int uc004F5[] = { 0x004F4, 0x00000 }; +static unsigned int uc004F7[] = { 0x004F6, 0x00000 }; +static unsigned int uc004F9[] = { 0x004F8, 0x00000 }; +static unsigned int uc004FB[] = { 0x004FA, 0x00000 }; +static unsigned int uc004FD[] = { 0x004FC, 0x00000 }; +static unsigned int uc004FF[] = { 0x004FE, 0x00000 }; +static unsigned int uc00501[] = { 0x00500, 0x00000 }; +static unsigned int uc00503[] = { 0x00502, 0x00000 }; +static unsigned int uc00505[] = { 0x00504, 0x00000 }; +static unsigned int uc00507[] = { 0x00506, 0x00000 }; +static unsigned int uc00509[] = { 0x00508, 0x00000 }; +static unsigned int uc0050B[] = { 0x0050A, 0x00000 }; +static unsigned int uc0050D[] = { 0x0050C, 0x00000 }; +static unsigned int uc0050F[] = { 0x0050E, 0x00000 }; +static unsigned int uc00511[] = { 0x00510, 0x00000 }; +static unsigned int uc00513[] = { 0x00512, 0x00000 }; +static unsigned int uc00561[] = { 0x00531, 0x00000 }; +static unsigned int uc00562[] = { 0x00532, 0x00000 }; +static unsigned int uc00563[] = { 0x00533, 0x00000 }; +static unsigned int uc00564[] = { 0x00534, 0x00000 }; +static unsigned int uc00565[] = { 0x00535, 0x00000 }; +static unsigned int uc00566[] = { 0x00536, 0x00000 }; +static unsigned int uc00567[] = { 0x00537, 0x00000 }; +static unsigned int uc00568[] = { 0x00538, 0x00000 }; +static unsigned int uc00569[] = { 0x00539, 0x00000 }; +static unsigned int uc0056A[] = { 0x0053A, 0x00000 }; +static unsigned int uc0056B[] = { 0x0053B, 0x00000 }; +static unsigned int uc0056C[] = { 0x0053C, 0x00000 }; +static unsigned int uc0056D[] = { 0x0053D, 0x00000 }; +static unsigned int uc0056E[] = { 0x0053E, 0x00000 }; +static unsigned int uc0056F[] = { 0x0053F, 0x00000 }; +static unsigned int uc00570[] = { 0x00540, 0x00000 }; +static unsigned int uc00571[] = { 0x00541, 0x00000 }; +static unsigned int uc00572[] = { 0x00542, 0x00000 }; +static unsigned int uc00573[] = { 0x00543, 0x00000 }; +static unsigned int uc00574[] = { 0x00544, 0x00000 }; +static unsigned int uc00575[] = { 0x00545, 0x00000 }; +static unsigned int uc00576[] = { 0x00546, 0x00000 }; +static unsigned int uc00577[] = { 0x00547, 0x00000 }; +static unsigned int uc00578[] = { 0x00548, 0x00000 }; +static unsigned int uc00579[] = { 0x00549, 0x00000 }; +static unsigned int uc0057A[] = { 0x0054A, 0x00000 }; +static unsigned int uc0057B[] = { 0x0054B, 0x00000 }; +static unsigned int uc0057C[] = { 0x0054C, 0x00000 }; +static unsigned int uc0057D[] = { 0x0054D, 0x00000 }; +static unsigned int uc0057E[] = { 0x0054E, 0x00000 }; +static unsigned int uc0057F[] = { 0x0054F, 0x00000 }; +static unsigned int uc00580[] = { 0x00550, 0x00000 }; +static unsigned int uc00581[] = { 0x00551, 0x00000 }; +static unsigned int uc00582[] = { 0x00552, 0x00000 }; +static unsigned int uc00583[] = { 0x00553, 0x00000 }; +static unsigned int uc00584[] = { 0x00554, 0x00000 }; +static unsigned int uc00585[] = { 0x00555, 0x00000 }; +static unsigned int uc00586[] = { 0x00556, 0x00000 }; +static unsigned int uc00587[] = { 0x00535, 0x00552, 0x00000 }; +static unsigned int uc01D7D[] = { 0x02C63, 0x00000 }; +static unsigned int uc01E01[] = { 0x01E00, 0x00000 }; +static unsigned int uc01E03[] = { 0x01E02, 0x00000 }; +static unsigned int uc01E05[] = { 0x01E04, 0x00000 }; +static unsigned int uc01E07[] = { 0x01E06, 0x00000 }; +static unsigned int uc01E09[] = { 0x01E08, 0x00000 }; +static unsigned int uc01E0B[] = { 0x01E0A, 0x00000 }; +static unsigned int uc01E0D[] = { 0x01E0C, 0x00000 }; +static unsigned int uc01E0F[] = { 0x01E0E, 0x00000 }; +static unsigned int uc01E11[] = { 0x01E10, 0x00000 }; +static unsigned int uc01E13[] = { 0x01E12, 0x00000 }; +static unsigned int uc01E15[] = { 0x01E14, 0x00000 }; +static unsigned int uc01E17[] = { 0x01E16, 0x00000 }; +static unsigned int uc01E19[] = { 0x01E18, 0x00000 }; +static unsigned int uc01E1B[] = { 0x01E1A, 0x00000 }; +static unsigned int uc01E1D[] = { 0x01E1C, 0x00000 }; +static unsigned int uc01E1F[] = { 0x01E1E, 0x00000 }; +static unsigned int uc01E21[] = { 0x01E20, 0x00000 }; +static unsigned int uc01E23[] = { 0x01E22, 0x00000 }; +static unsigned int uc01E25[] = { 0x01E24, 0x00000 }; +static unsigned int uc01E27[] = { 0x01E26, 0x00000 }; +static unsigned int uc01E29[] = { 0x01E28, 0x00000 }; +static unsigned int uc01E2B[] = { 0x01E2A, 0x00000 }; +static unsigned int uc01E2D[] = { 0x01E2C, 0x00000 }; +static unsigned int uc01E2F[] = { 0x01E2E, 0x00000 }; +static unsigned int uc01E31[] = { 0x01E30, 0x00000 }; +static unsigned int uc01E33[] = { 0x01E32, 0x00000 }; +static unsigned int uc01E35[] = { 0x01E34, 0x00000 }; +static unsigned int uc01E37[] = { 0x01E36, 0x00000 }; +static unsigned int uc01E39[] = { 0x01E38, 0x00000 }; +static unsigned int uc01E3B[] = { 0x01E3A, 0x00000 }; +static unsigned int uc01E3D[] = { 0x01E3C, 0x00000 }; +static unsigned int uc01E3F[] = { 0x01E3E, 0x00000 }; +static unsigned int uc01E41[] = { 0x01E40, 0x00000 }; +static unsigned int uc01E43[] = { 0x01E42, 0x00000 }; +static unsigned int uc01E45[] = { 0x01E44, 0x00000 }; +static unsigned int uc01E47[] = { 0x01E46, 0x00000 }; +static unsigned int uc01E49[] = { 0x01E48, 0x00000 }; +static unsigned int uc01E4B[] = { 0x01E4A, 0x00000 }; +static unsigned int uc01E4D[] = { 0x01E4C, 0x00000 }; +static unsigned int uc01E4F[] = { 0x01E4E, 0x00000 }; +static unsigned int uc01E51[] = { 0x01E50, 0x00000 }; +static unsigned int uc01E53[] = { 0x01E52, 0x00000 }; +static unsigned int uc01E55[] = { 0x01E54, 0x00000 }; +static unsigned int uc01E57[] = { 0x01E56, 0x00000 }; +static unsigned int uc01E59[] = { 0x01E58, 0x00000 }; +static unsigned int uc01E5B[] = { 0x01E5A, 0x00000 }; +static unsigned int uc01E5D[] = { 0x01E5C, 0x00000 }; +static unsigned int uc01E5F[] = { 0x01E5E, 0x00000 }; +static unsigned int uc01E61[] = { 0x01E60, 0x00000 }; +static unsigned int uc01E63[] = { 0x01E62, 0x00000 }; +static unsigned int uc01E65[] = { 0x01E64, 0x00000 }; +static unsigned int uc01E67[] = { 0x01E66, 0x00000 }; +static unsigned int uc01E69[] = { 0x01E68, 0x00000 }; +static unsigned int uc01E6B[] = { 0x01E6A, 0x00000 }; +static unsigned int uc01E6D[] = { 0x01E6C, 0x00000 }; +static unsigned int uc01E6F[] = { 0x01E6E, 0x00000 }; +static unsigned int uc01E71[] = { 0x01E70, 0x00000 }; +static unsigned int uc01E73[] = { 0x01E72, 0x00000 }; +static unsigned int uc01E75[] = { 0x01E74, 0x00000 }; +static unsigned int uc01E77[] = { 0x01E76, 0x00000 }; +static unsigned int uc01E79[] = { 0x01E78, 0x00000 }; +static unsigned int uc01E7B[] = { 0x01E7A, 0x00000 }; +static unsigned int uc01E7D[] = { 0x01E7C, 0x00000 }; +static unsigned int uc01E7F[] = { 0x01E7E, 0x00000 }; +static unsigned int uc01E81[] = { 0x01E80, 0x00000 }; +static unsigned int uc01E83[] = { 0x01E82, 0x00000 }; +static unsigned int uc01E85[] = { 0x01E84, 0x00000 }; +static unsigned int uc01E87[] = { 0x01E86, 0x00000 }; +static unsigned int uc01E89[] = { 0x01E88, 0x00000 }; +static unsigned int uc01E8B[] = { 0x01E8A, 0x00000 }; +static unsigned int uc01E8D[] = { 0x01E8C, 0x00000 }; +static unsigned int uc01E8F[] = { 0x01E8E, 0x00000 }; +static unsigned int uc01E91[] = { 0x01E90, 0x00000 }; +static unsigned int uc01E93[] = { 0x01E92, 0x00000 }; +static unsigned int uc01E95[] = { 0x01E94, 0x00000 }; +static unsigned int uc01E96[] = { 0x00048, 0x00331, 0x00000 }; +static unsigned int uc01E97[] = { 0x00054, 0x00308, 0x00000 }; +static unsigned int uc01E98[] = { 0x00057, 0x0030A, 0x00000 }; +static unsigned int uc01E99[] = { 0x00059, 0x0030A, 0x00000 }; +static unsigned int uc01E9A[] = { 0x00041, 0x002BE, 0x00000 }; +static unsigned int uc01E9B[] = { 0x01E60, 0x00000 }; +static unsigned int uc01EA1[] = { 0x01EA0, 0x00000 }; +static unsigned int uc01EA3[] = { 0x01EA2, 0x00000 }; +static unsigned int uc01EA5[] = { 0x01EA4, 0x00000 }; +static unsigned int uc01EA7[] = { 0x01EA6, 0x00000 }; +static unsigned int uc01EA9[] = { 0x01EA8, 0x00000 }; +static unsigned int uc01EAB[] = { 0x01EAA, 0x00000 }; +static unsigned int uc01EAD[] = { 0x01EAC, 0x00000 }; +static unsigned int uc01EAF[] = { 0x01EAE, 0x00000 }; +static unsigned int uc01EB1[] = { 0x01EB0, 0x00000 }; +static unsigned int uc01EB3[] = { 0x01EB2, 0x00000 }; +static unsigned int uc01EB5[] = { 0x01EB4, 0x00000 }; +static unsigned int uc01EB7[] = { 0x01EB6, 0x00000 }; +static unsigned int uc01EB9[] = { 0x01EB8, 0x00000 }; +static unsigned int uc01EBB[] = { 0x01EBA, 0x00000 }; +static unsigned int uc01EBD[] = { 0x01EBC, 0x00000 }; +static unsigned int uc01EBF[] = { 0x01EBE, 0x00000 }; +static unsigned int uc01EC1[] = { 0x01EC0, 0x00000 }; +static unsigned int uc01EC3[] = { 0x01EC2, 0x00000 }; +static unsigned int uc01EC5[] = { 0x01EC4, 0x00000 }; +static unsigned int uc01EC7[] = { 0x01EC6, 0x00000 }; +static unsigned int uc01EC9[] = { 0x01EC8, 0x00000 }; +static unsigned int uc01ECB[] = { 0x01ECA, 0x00000 }; +static unsigned int uc01ECD[] = { 0x01ECC, 0x00000 }; +static unsigned int uc01ECF[] = { 0x01ECE, 0x00000 }; +static unsigned int uc01ED1[] = { 0x01ED0, 0x00000 }; +static unsigned int uc01ED3[] = { 0x01ED2, 0x00000 }; +static unsigned int uc01ED5[] = { 0x01ED4, 0x00000 }; +static unsigned int uc01ED7[] = { 0x01ED6, 0x00000 }; +static unsigned int uc01ED9[] = { 0x01ED8, 0x00000 }; +static unsigned int uc01EDB[] = { 0x01EDA, 0x00000 }; +static unsigned int uc01EDD[] = { 0x01EDC, 0x00000 }; +static unsigned int uc01EDF[] = { 0x01EDE, 0x00000 }; +static unsigned int uc01EE1[] = { 0x01EE0, 0x00000 }; +static unsigned int uc01EE3[] = { 0x01EE2, 0x00000 }; +static unsigned int uc01EE5[] = { 0x01EE4, 0x00000 }; +static unsigned int uc01EE7[] = { 0x01EE6, 0x00000 }; +static unsigned int uc01EE9[] = { 0x01EE8, 0x00000 }; +static unsigned int uc01EEB[] = { 0x01EEA, 0x00000 }; +static unsigned int uc01EED[] = { 0x01EEC, 0x00000 }; +static unsigned int uc01EEF[] = { 0x01EEE, 0x00000 }; +static unsigned int uc01EF1[] = { 0x01EF0, 0x00000 }; +static unsigned int uc01EF3[] = { 0x01EF2, 0x00000 }; +static unsigned int uc01EF5[] = { 0x01EF4, 0x00000 }; +static unsigned int uc01EF7[] = { 0x01EF6, 0x00000 }; +static unsigned int uc01EF9[] = { 0x01EF8, 0x00000 }; +static unsigned int uc01F00[] = { 0x01F08, 0x00000 }; +static unsigned int uc01F01[] = { 0x01F09, 0x00000 }; +static unsigned int uc01F02[] = { 0x01F0A, 0x00000 }; +static unsigned int uc01F03[] = { 0x01F0B, 0x00000 }; +static unsigned int uc01F04[] = { 0x01F0C, 0x00000 }; +static unsigned int uc01F05[] = { 0x01F0D, 0x00000 }; +static unsigned int uc01F06[] = { 0x01F0E, 0x00000 }; +static unsigned int uc01F07[] = { 0x01F0F, 0x00000 }; +static unsigned int uc01F10[] = { 0x01F18, 0x00000 }; +static unsigned int uc01F11[] = { 0x01F19, 0x00000 }; +static unsigned int uc01F12[] = { 0x01F1A, 0x00000 }; +static unsigned int uc01F13[] = { 0x01F1B, 0x00000 }; +static unsigned int uc01F14[] = { 0x01F1C, 0x00000 }; +static unsigned int uc01F15[] = { 0x01F1D, 0x00000 }; +static unsigned int uc01F20[] = { 0x01F28, 0x00000 }; +static unsigned int uc01F21[] = { 0x01F29, 0x00000 }; +static unsigned int uc01F22[] = { 0x01F2A, 0x00000 }; +static unsigned int uc01F23[] = { 0x01F2B, 0x00000 }; +static unsigned int uc01F24[] = { 0x01F2C, 0x00000 }; +static unsigned int uc01F25[] = { 0x01F2D, 0x00000 }; +static unsigned int uc01F26[] = { 0x01F2E, 0x00000 }; +static unsigned int uc01F27[] = { 0x01F2F, 0x00000 }; +static unsigned int uc01F30[] = { 0x01F38, 0x00000 }; +static unsigned int uc01F31[] = { 0x01F39, 0x00000 }; +static unsigned int uc01F32[] = { 0x01F3A, 0x00000 }; +static unsigned int uc01F33[] = { 0x01F3B, 0x00000 }; +static unsigned int uc01F34[] = { 0x01F3C, 0x00000 }; +static unsigned int uc01F35[] = { 0x01F3D, 0x00000 }; +static unsigned int uc01F36[] = { 0x01F3E, 0x00000 }; +static unsigned int uc01F37[] = { 0x01F3F, 0x00000 }; +static unsigned int uc01F40[] = { 0x01F48, 0x00000 }; +static unsigned int uc01F41[] = { 0x01F49, 0x00000 }; +static unsigned int uc01F42[] = { 0x01F4A, 0x00000 }; +static unsigned int uc01F43[] = { 0x01F4B, 0x00000 }; +static unsigned int uc01F44[] = { 0x01F4C, 0x00000 }; +static unsigned int uc01F45[] = { 0x01F4D, 0x00000 }; +static unsigned int uc01F50[] = { 0x003A5, 0x00313, 0x00000 }; +static unsigned int uc01F51[] = { 0x01F59, 0x00000 }; +static unsigned int uc01F52[] = { 0x003A5, 0x00313, 0x00300, 0x00000 }; +static unsigned int uc01F53[] = { 0x01F5B, 0x00000 }; +static unsigned int uc01F54[] = { 0x003A5, 0x00313, 0x00301, 0x00000 }; +static unsigned int uc01F55[] = { 0x01F5D, 0x00000 }; +static unsigned int uc01F56[] = { 0x003A5, 0x00313, 0x00342, 0x00000 }; +static unsigned int uc01F57[] = { 0x01F5F, 0x00000 }; +static unsigned int uc01F60[] = { 0x01F68, 0x00000 }; +static unsigned int uc01F61[] = { 0x01F69, 0x00000 }; +static unsigned int uc01F62[] = { 0x01F6A, 0x00000 }; +static unsigned int uc01F63[] = { 0x01F6B, 0x00000 }; +static unsigned int uc01F64[] = { 0x01F6C, 0x00000 }; +static unsigned int uc01F65[] = { 0x01F6D, 0x00000 }; +static unsigned int uc01F66[] = { 0x01F6E, 0x00000 }; +static unsigned int uc01F67[] = { 0x01F6F, 0x00000 }; +static unsigned int uc01F70[] = { 0x01FBA, 0x00000 }; +static unsigned int uc01F71[] = { 0x01FBB, 0x00000 }; +static unsigned int uc01F72[] = { 0x01FC8, 0x00000 }; +static unsigned int uc01F73[] = { 0x01FC9, 0x00000 }; +static unsigned int uc01F74[] = { 0x01FCA, 0x00000 }; +static unsigned int uc01F75[] = { 0x01FCB, 0x00000 }; +static unsigned int uc01F76[] = { 0x01FDA, 0x00000 }; +static unsigned int uc01F77[] = { 0x01FDB, 0x00000 }; +static unsigned int uc01F78[] = { 0x01FF8, 0x00000 }; +static unsigned int uc01F79[] = { 0x01FF9, 0x00000 }; +static unsigned int uc01F7A[] = { 0x01FEA, 0x00000 }; +static unsigned int uc01F7B[] = { 0x01FEB, 0x00000 }; +static unsigned int uc01F7C[] = { 0x01FFA, 0x00000 }; +static unsigned int uc01F7D[] = { 0x01FFB, 0x00000 }; +static unsigned int uc01F80[] = { 0x01F08, 0x00399, 0x00000 }; +static unsigned int uc01F81[] = { 0x01F09, 0x00399, 0x00000 }; +static unsigned int uc01F82[] = { 0x01F0A, 0x00399, 0x00000 }; +static unsigned int uc01F83[] = { 0x01F0B, 0x00399, 0x00000 }; +static unsigned int uc01F84[] = { 0x01F0C, 0x00399, 0x00000 }; +static unsigned int uc01F85[] = { 0x01F0D, 0x00399, 0x00000 }; +static unsigned int uc01F86[] = { 0x01F0E, 0x00399, 0x00000 }; +static unsigned int uc01F87[] = { 0x01F0F, 0x00399, 0x00000 }; +static unsigned int uc01F88[] = { 0x01F08, 0x00399, 0x00000 }; +static unsigned int uc01F89[] = { 0x01F09, 0x00399, 0x00000 }; +static unsigned int uc01F8A[] = { 0x01F0A, 0x00399, 0x00000 }; +static unsigned int uc01F8B[] = { 0x01F0B, 0x00399, 0x00000 }; +static unsigned int uc01F8C[] = { 0x01F0C, 0x00399, 0x00000 }; +static unsigned int uc01F8D[] = { 0x01F0D, 0x00399, 0x00000 }; +static unsigned int uc01F8E[] = { 0x01F0E, 0x00399, 0x00000 }; +static unsigned int uc01F8F[] = { 0x01F0F, 0x00399, 0x00000 }; +static unsigned int uc01F90[] = { 0x01F28, 0x00399, 0x00000 }; +static unsigned int uc01F91[] = { 0x01F29, 0x00399, 0x00000 }; +static unsigned int uc01F92[] = { 0x01F2A, 0x00399, 0x00000 }; +static unsigned int uc01F93[] = { 0x01F2B, 0x00399, 0x00000 }; +static unsigned int uc01F94[] = { 0x01F2C, 0x00399, 0x00000 }; +static unsigned int uc01F95[] = { 0x01F2D, 0x00399, 0x00000 }; +static unsigned int uc01F96[] = { 0x01F2E, 0x00399, 0x00000 }; +static unsigned int uc01F97[] = { 0x01F2F, 0x00399, 0x00000 }; +static unsigned int uc01F98[] = { 0x01F28, 0x00399, 0x00000 }; +static unsigned int uc01F99[] = { 0x01F29, 0x00399, 0x00000 }; +static unsigned int uc01F9A[] = { 0x01F2A, 0x00399, 0x00000 }; +static unsigned int uc01F9B[] = { 0x01F2B, 0x00399, 0x00000 }; +static unsigned int uc01F9C[] = { 0x01F2C, 0x00399, 0x00000 }; +static unsigned int uc01F9D[] = { 0x01F2D, 0x00399, 0x00000 }; +static unsigned int uc01F9E[] = { 0x01F2E, 0x00399, 0x00000 }; +static unsigned int uc01F9F[] = { 0x01F2F, 0x00399, 0x00000 }; +static unsigned int uc01FA0[] = { 0x01F68, 0x00399, 0x00000 }; +static unsigned int uc01FA1[] = { 0x01F69, 0x00399, 0x00000 }; +static unsigned int uc01FA2[] = { 0x01F6A, 0x00399, 0x00000 }; +static unsigned int uc01FA3[] = { 0x01F6B, 0x00399, 0x00000 }; +static unsigned int uc01FA4[] = { 0x01F6C, 0x00399, 0x00000 }; +static unsigned int uc01FA5[] = { 0x01F6D, 0x00399, 0x00000 }; +static unsigned int uc01FA6[] = { 0x01F6E, 0x00399, 0x00000 }; +static unsigned int uc01FA7[] = { 0x01F6F, 0x00399, 0x00000 }; +static unsigned int uc01FA8[] = { 0x01F68, 0x00399, 0x00000 }; +static unsigned int uc01FA9[] = { 0x01F69, 0x00399, 0x00000 }; +static unsigned int uc01FAA[] = { 0x01F6A, 0x00399, 0x00000 }; +static unsigned int uc01FAB[] = { 0x01F6B, 0x00399, 0x00000 }; +static unsigned int uc01FAC[] = { 0x01F6C, 0x00399, 0x00000 }; +static unsigned int uc01FAD[] = { 0x01F6D, 0x00399, 0x00000 }; +static unsigned int uc01FAE[] = { 0x01F6E, 0x00399, 0x00000 }; +static unsigned int uc01FAF[] = { 0x01F6F, 0x00399, 0x00000 }; +static unsigned int uc01FB0[] = { 0x01FB8, 0x00000 }; +static unsigned int uc01FB1[] = { 0x01FB9, 0x00000 }; +static unsigned int uc01FB2[] = { 0x01FBA, 0x00399, 0x00000 }; +static unsigned int uc01FB3[] = { 0x00391, 0x00399, 0x00000 }; +static unsigned int uc01FB4[] = { 0x00386, 0x00399, 0x00000 }; +static unsigned int uc01FB6[] = { 0x00391, 0x00342, 0x00000 }; +static unsigned int uc01FB7[] = { 0x00391, 0x00342, 0x00399, 0x00000 }; +static unsigned int uc01FBC[] = { 0x00391, 0x00399, 0x00000 }; +static unsigned int uc01FBE[] = { 0x00399, 0x00000 }; +static unsigned int uc01FC2[] = { 0x01FCA, 0x00399, 0x00000 }; +static unsigned int uc01FC3[] = { 0x00397, 0x00399, 0x00000 }; +static unsigned int uc01FC4[] = { 0x00389, 0x00399, 0x00000 }; +static unsigned int uc01FC6[] = { 0x00397, 0x00342, 0x00000 }; +static unsigned int uc01FC7[] = { 0x00397, 0x00342, 0x00399, 0x00000 }; +static unsigned int uc01FCC[] = { 0x00397, 0x00399, 0x00000 }; +static unsigned int uc01FD0[] = { 0x01FD8, 0x00000 }; +static unsigned int uc01FD1[] = { 0x01FD9, 0x00000 }; +static unsigned int uc01FD2[] = { 0x00399, 0x00308, 0x00300, 0x00000 }; +static unsigned int uc01FD3[] = { 0x00399, 0x00308, 0x00301, 0x00000 }; +static unsigned int uc01FD6[] = { 0x00399, 0x00342, 0x00000 }; +static unsigned int uc01FD7[] = { 0x00399, 0x00308, 0x00342, 0x00000 }; +static unsigned int uc01FE0[] = { 0x01FE8, 0x00000 }; +static unsigned int uc01FE1[] = { 0x01FE9, 0x00000 }; +static unsigned int uc01FE2[] = { 0x003A5, 0x00308, 0x00300, 0x00000 }; +static unsigned int uc01FE3[] = { 0x003A5, 0x00308, 0x00301, 0x00000 }; +static unsigned int uc01FE4[] = { 0x003A1, 0x00313, 0x00000 }; +static unsigned int uc01FE5[] = { 0x01FEC, 0x00000 }; +static unsigned int uc01FE6[] = { 0x003A5, 0x00342, 0x00000 }; +static unsigned int uc01FE7[] = { 0x003A5, 0x00308, 0x00342, 0x00000 }; +static unsigned int uc01FF2[] = { 0x01FFA, 0x00399, 0x00000 }; +static unsigned int uc01FF3[] = { 0x003A9, 0x00399, 0x00000 }; +static unsigned int uc01FF4[] = { 0x0038F, 0x00399, 0x00000 }; +static unsigned int uc01FF6[] = { 0x003A9, 0x00342, 0x00000 }; +static unsigned int uc01FF7[] = { 0x003A9, 0x00342, 0x00399, 0x00000 }; +static unsigned int uc01FFC[] = { 0x003A9, 0x00399, 0x00000 }; +static unsigned int uc0214E[] = { 0x02132, 0x00000 }; +static unsigned int uc02170[] = { 0x02160, 0x00000 }; +static unsigned int uc02171[] = { 0x02161, 0x00000 }; +static unsigned int uc02172[] = { 0x02162, 0x00000 }; +static unsigned int uc02173[] = { 0x02163, 0x00000 }; +static unsigned int uc02174[] = { 0x02164, 0x00000 }; +static unsigned int uc02175[] = { 0x02165, 0x00000 }; +static unsigned int uc02176[] = { 0x02166, 0x00000 }; +static unsigned int uc02177[] = { 0x02167, 0x00000 }; +static unsigned int uc02178[] = { 0x02168, 0x00000 }; +static unsigned int uc02179[] = { 0x02169, 0x00000 }; +static unsigned int uc0217A[] = { 0x0216A, 0x00000 }; +static unsigned int uc0217B[] = { 0x0216B, 0x00000 }; +static unsigned int uc0217C[] = { 0x0216C, 0x00000 }; +static unsigned int uc0217D[] = { 0x0216D, 0x00000 }; +static unsigned int uc0217E[] = { 0x0216E, 0x00000 }; +static unsigned int uc0217F[] = { 0x0216F, 0x00000 }; +static unsigned int uc02184[] = { 0x02183, 0x00000 }; +static unsigned int uc024D0[] = { 0x024B6, 0x00000 }; +static unsigned int uc024D1[] = { 0x024B7, 0x00000 }; +static unsigned int uc024D2[] = { 0x024B8, 0x00000 }; +static unsigned int uc024D3[] = { 0x024B9, 0x00000 }; +static unsigned int uc024D4[] = { 0x024BA, 0x00000 }; +static unsigned int uc024D5[] = { 0x024BB, 0x00000 }; +static unsigned int uc024D6[] = { 0x024BC, 0x00000 }; +static unsigned int uc024D7[] = { 0x024BD, 0x00000 }; +static unsigned int uc024D8[] = { 0x024BE, 0x00000 }; +static unsigned int uc024D9[] = { 0x024BF, 0x00000 }; +static unsigned int uc024DA[] = { 0x024C0, 0x00000 }; +static unsigned int uc024DB[] = { 0x024C1, 0x00000 }; +static unsigned int uc024DC[] = { 0x024C2, 0x00000 }; +static unsigned int uc024DD[] = { 0x024C3, 0x00000 }; +static unsigned int uc024DE[] = { 0x024C4, 0x00000 }; +static unsigned int uc024DF[] = { 0x024C5, 0x00000 }; +static unsigned int uc024E0[] = { 0x024C6, 0x00000 }; +static unsigned int uc024E1[] = { 0x024C7, 0x00000 }; +static unsigned int uc024E2[] = { 0x024C8, 0x00000 }; +static unsigned int uc024E3[] = { 0x024C9, 0x00000 }; +static unsigned int uc024E4[] = { 0x024CA, 0x00000 }; +static unsigned int uc024E5[] = { 0x024CB, 0x00000 }; +static unsigned int uc024E6[] = { 0x024CC, 0x00000 }; +static unsigned int uc024E7[] = { 0x024CD, 0x00000 }; +static unsigned int uc024E8[] = { 0x024CE, 0x00000 }; +static unsigned int uc024E9[] = { 0x024CF, 0x00000 }; +static unsigned int uc02C30[] = { 0x02C00, 0x00000 }; +static unsigned int uc02C31[] = { 0x02C01, 0x00000 }; +static unsigned int uc02C32[] = { 0x02C02, 0x00000 }; +static unsigned int uc02C33[] = { 0x02C03, 0x00000 }; +static unsigned int uc02C34[] = { 0x02C04, 0x00000 }; +static unsigned int uc02C35[] = { 0x02C05, 0x00000 }; +static unsigned int uc02C36[] = { 0x02C06, 0x00000 }; +static unsigned int uc02C37[] = { 0x02C07, 0x00000 }; +static unsigned int uc02C38[] = { 0x02C08, 0x00000 }; +static unsigned int uc02C39[] = { 0x02C09, 0x00000 }; +static unsigned int uc02C3A[] = { 0x02C0A, 0x00000 }; +static unsigned int uc02C3B[] = { 0x02C0B, 0x00000 }; +static unsigned int uc02C3C[] = { 0x02C0C, 0x00000 }; +static unsigned int uc02C3D[] = { 0x02C0D, 0x00000 }; +static unsigned int uc02C3E[] = { 0x02C0E, 0x00000 }; +static unsigned int uc02C3F[] = { 0x02C0F, 0x00000 }; +static unsigned int uc02C40[] = { 0x02C10, 0x00000 }; +static unsigned int uc02C41[] = { 0x02C11, 0x00000 }; +static unsigned int uc02C42[] = { 0x02C12, 0x00000 }; +static unsigned int uc02C43[] = { 0x02C13, 0x00000 }; +static unsigned int uc02C44[] = { 0x02C14, 0x00000 }; +static unsigned int uc02C45[] = { 0x02C15, 0x00000 }; +static unsigned int uc02C46[] = { 0x02C16, 0x00000 }; +static unsigned int uc02C47[] = { 0x02C17, 0x00000 }; +static unsigned int uc02C48[] = { 0x02C18, 0x00000 }; +static unsigned int uc02C49[] = { 0x02C19, 0x00000 }; +static unsigned int uc02C4A[] = { 0x02C1A, 0x00000 }; +static unsigned int uc02C4B[] = { 0x02C1B, 0x00000 }; +static unsigned int uc02C4C[] = { 0x02C1C, 0x00000 }; +static unsigned int uc02C4D[] = { 0x02C1D, 0x00000 }; +static unsigned int uc02C4E[] = { 0x02C1E, 0x00000 }; +static unsigned int uc02C4F[] = { 0x02C1F, 0x00000 }; +static unsigned int uc02C50[] = { 0x02C20, 0x00000 }; +static unsigned int uc02C51[] = { 0x02C21, 0x00000 }; +static unsigned int uc02C52[] = { 0x02C22, 0x00000 }; +static unsigned int uc02C53[] = { 0x02C23, 0x00000 }; +static unsigned int uc02C54[] = { 0x02C24, 0x00000 }; +static unsigned int uc02C55[] = { 0x02C25, 0x00000 }; +static unsigned int uc02C56[] = { 0x02C26, 0x00000 }; +static unsigned int uc02C57[] = { 0x02C27, 0x00000 }; +static unsigned int uc02C58[] = { 0x02C28, 0x00000 }; +static unsigned int uc02C59[] = { 0x02C29, 0x00000 }; +static unsigned int uc02C5A[] = { 0x02C2A, 0x00000 }; +static unsigned int uc02C5B[] = { 0x02C2B, 0x00000 }; +static unsigned int uc02C5C[] = { 0x02C2C, 0x00000 }; +static unsigned int uc02C5D[] = { 0x02C2D, 0x00000 }; +static unsigned int uc02C5E[] = { 0x02C2E, 0x00000 }; +static unsigned int uc02C61[] = { 0x02C60, 0x00000 }; +static unsigned int uc02C65[] = { 0x0023A, 0x00000 }; +static unsigned int uc02C66[] = { 0x0023E, 0x00000 }; +static unsigned int uc02C68[] = { 0x02C67, 0x00000 }; +static unsigned int uc02C6A[] = { 0x02C69, 0x00000 }; +static unsigned int uc02C6C[] = { 0x02C6B, 0x00000 }; +static unsigned int uc02C76[] = { 0x02C75, 0x00000 }; +static unsigned int uc02C81[] = { 0x02C80, 0x00000 }; +static unsigned int uc02C83[] = { 0x02C82, 0x00000 }; +static unsigned int uc02C85[] = { 0x02C84, 0x00000 }; +static unsigned int uc02C87[] = { 0x02C86, 0x00000 }; +static unsigned int uc02C89[] = { 0x02C88, 0x00000 }; +static unsigned int uc02C8B[] = { 0x02C8A, 0x00000 }; +static unsigned int uc02C8D[] = { 0x02C8C, 0x00000 }; +static unsigned int uc02C8F[] = { 0x02C8E, 0x00000 }; +static unsigned int uc02C91[] = { 0x02C90, 0x00000 }; +static unsigned int uc02C93[] = { 0x02C92, 0x00000 }; +static unsigned int uc02C95[] = { 0x02C94, 0x00000 }; +static unsigned int uc02C97[] = { 0x02C96, 0x00000 }; +static unsigned int uc02C99[] = { 0x02C98, 0x00000 }; +static unsigned int uc02C9B[] = { 0x02C9A, 0x00000 }; +static unsigned int uc02C9D[] = { 0x02C9C, 0x00000 }; +static unsigned int uc02C9F[] = { 0x02C9E, 0x00000 }; +static unsigned int uc02CA1[] = { 0x02CA0, 0x00000 }; +static unsigned int uc02CA3[] = { 0x02CA2, 0x00000 }; +static unsigned int uc02CA5[] = { 0x02CA4, 0x00000 }; +static unsigned int uc02CA7[] = { 0x02CA6, 0x00000 }; +static unsigned int uc02CA9[] = { 0x02CA8, 0x00000 }; +static unsigned int uc02CAB[] = { 0x02CAA, 0x00000 }; +static unsigned int uc02CAD[] = { 0x02CAC, 0x00000 }; +static unsigned int uc02CAF[] = { 0x02CAE, 0x00000 }; +static unsigned int uc02CB1[] = { 0x02CB0, 0x00000 }; +static unsigned int uc02CB3[] = { 0x02CB2, 0x00000 }; +static unsigned int uc02CB5[] = { 0x02CB4, 0x00000 }; +static unsigned int uc02CB7[] = { 0x02CB6, 0x00000 }; +static unsigned int uc02CB9[] = { 0x02CB8, 0x00000 }; +static unsigned int uc02CBB[] = { 0x02CBA, 0x00000 }; +static unsigned int uc02CBD[] = { 0x02CBC, 0x00000 }; +static unsigned int uc02CBF[] = { 0x02CBE, 0x00000 }; +static unsigned int uc02CC1[] = { 0x02CC0, 0x00000 }; +static unsigned int uc02CC3[] = { 0x02CC2, 0x00000 }; +static unsigned int uc02CC5[] = { 0x02CC4, 0x00000 }; +static unsigned int uc02CC7[] = { 0x02CC6, 0x00000 }; +static unsigned int uc02CC9[] = { 0x02CC8, 0x00000 }; +static unsigned int uc02CCB[] = { 0x02CCA, 0x00000 }; +static unsigned int uc02CCD[] = { 0x02CCC, 0x00000 }; +static unsigned int uc02CCF[] = { 0x02CCE, 0x00000 }; +static unsigned int uc02CD1[] = { 0x02CD0, 0x00000 }; +static unsigned int uc02CD3[] = { 0x02CD2, 0x00000 }; +static unsigned int uc02CD5[] = { 0x02CD4, 0x00000 }; +static unsigned int uc02CD7[] = { 0x02CD6, 0x00000 }; +static unsigned int uc02CD9[] = { 0x02CD8, 0x00000 }; +static unsigned int uc02CDB[] = { 0x02CDA, 0x00000 }; +static unsigned int uc02CDD[] = { 0x02CDC, 0x00000 }; +static unsigned int uc02CDF[] = { 0x02CDE, 0x00000 }; +static unsigned int uc02CE1[] = { 0x02CE0, 0x00000 }; +static unsigned int uc02CE3[] = { 0x02CE2, 0x00000 }; +static unsigned int uc02D00[] = { 0x010A0, 0x00000 }; +static unsigned int uc02D01[] = { 0x010A1, 0x00000 }; +static unsigned int uc02D02[] = { 0x010A2, 0x00000 }; +static unsigned int uc02D03[] = { 0x010A3, 0x00000 }; +static unsigned int uc02D04[] = { 0x010A4, 0x00000 }; +static unsigned int uc02D05[] = { 0x010A5, 0x00000 }; +static unsigned int uc02D06[] = { 0x010A6, 0x00000 }; +static unsigned int uc02D07[] = { 0x010A7, 0x00000 }; +static unsigned int uc02D08[] = { 0x010A8, 0x00000 }; +static unsigned int uc02D09[] = { 0x010A9, 0x00000 }; +static unsigned int uc02D0A[] = { 0x010AA, 0x00000 }; +static unsigned int uc02D0B[] = { 0x010AB, 0x00000 }; +static unsigned int uc02D0C[] = { 0x010AC, 0x00000 }; +static unsigned int uc02D0D[] = { 0x010AD, 0x00000 }; +static unsigned int uc02D0E[] = { 0x010AE, 0x00000 }; +static unsigned int uc02D0F[] = { 0x010AF, 0x00000 }; +static unsigned int uc02D10[] = { 0x010B0, 0x00000 }; +static unsigned int uc02D11[] = { 0x010B1, 0x00000 }; +static unsigned int uc02D12[] = { 0x010B2, 0x00000 }; +static unsigned int uc02D13[] = { 0x010B3, 0x00000 }; +static unsigned int uc02D14[] = { 0x010B4, 0x00000 }; +static unsigned int uc02D15[] = { 0x010B5, 0x00000 }; +static unsigned int uc02D16[] = { 0x010B6, 0x00000 }; +static unsigned int uc02D17[] = { 0x010B7, 0x00000 }; +static unsigned int uc02D18[] = { 0x010B8, 0x00000 }; +static unsigned int uc02D19[] = { 0x010B9, 0x00000 }; +static unsigned int uc02D1A[] = { 0x010BA, 0x00000 }; +static unsigned int uc02D1B[] = { 0x010BB, 0x00000 }; +static unsigned int uc02D1C[] = { 0x010BC, 0x00000 }; +static unsigned int uc02D1D[] = { 0x010BD, 0x00000 }; +static unsigned int uc02D1E[] = { 0x010BE, 0x00000 }; +static unsigned int uc02D1F[] = { 0x010BF, 0x00000 }; +static unsigned int uc02D20[] = { 0x010C0, 0x00000 }; +static unsigned int uc02D21[] = { 0x010C1, 0x00000 }; +static unsigned int uc02D22[] = { 0x010C2, 0x00000 }; +static unsigned int uc02D23[] = { 0x010C3, 0x00000 }; +static unsigned int uc02D24[] = { 0x010C4, 0x00000 }; +static unsigned int uc02D25[] = { 0x010C5, 0x00000 }; +static unsigned int uc0FB00[] = { 0x00046, 0x00046, 0x00000 }; +static unsigned int uc0FB01[] = { 0x00046, 0x00049, 0x00000 }; +static unsigned int uc0FB02[] = { 0x00046, 0x0004C, 0x00000 }; +static unsigned int uc0FB03[] = { 0x00046, 0x00046, 0x00049, 0x00000 }; +static unsigned int uc0FB04[] = { 0x00046, 0x00046, 0x0004C, 0x00000 }; +static unsigned int uc0FB05[] = { 0x00053, 0x00054, 0x00000 }; +static unsigned int uc0FB06[] = { 0x00053, 0x00054, 0x00000 }; +static unsigned int uc0FB13[] = { 0x00544, 0x00546, 0x00000 }; +static unsigned int uc0FB14[] = { 0x00544, 0x00535, 0x00000 }; +static unsigned int uc0FB15[] = { 0x00544, 0x0053B, 0x00000 }; +static unsigned int uc0FB16[] = { 0x0054E, 0x00546, 0x00000 }; +static unsigned int uc0FB17[] = { 0x00544, 0x0053D, 0x00000 }; +static unsigned int uc0FF41[] = { 0x0FF21, 0x00000 }; +static unsigned int uc0FF42[] = { 0x0FF22, 0x00000 }; +static unsigned int uc0FF43[] = { 0x0FF23, 0x00000 }; +static unsigned int uc0FF44[] = { 0x0FF24, 0x00000 }; +static unsigned int uc0FF45[] = { 0x0FF25, 0x00000 }; +static unsigned int uc0FF46[] = { 0x0FF26, 0x00000 }; +static unsigned int uc0FF47[] = { 0x0FF27, 0x00000 }; +static unsigned int uc0FF48[] = { 0x0FF28, 0x00000 }; +static unsigned int uc0FF49[] = { 0x0FF29, 0x00000 }; +static unsigned int uc0FF4A[] = { 0x0FF2A, 0x00000 }; +static unsigned int uc0FF4B[] = { 0x0FF2B, 0x00000 }; +static unsigned int uc0FF4C[] = { 0x0FF2C, 0x00000 }; +static unsigned int uc0FF4D[] = { 0x0FF2D, 0x00000 }; +static unsigned int uc0FF4E[] = { 0x0FF2E, 0x00000 }; +static unsigned int uc0FF4F[] = { 0x0FF2F, 0x00000 }; +static unsigned int uc0FF50[] = { 0x0FF30, 0x00000 }; +static unsigned int uc0FF51[] = { 0x0FF31, 0x00000 }; +static unsigned int uc0FF52[] = { 0x0FF32, 0x00000 }; +static unsigned int uc0FF53[] = { 0x0FF33, 0x00000 }; +static unsigned int uc0FF54[] = { 0x0FF34, 0x00000 }; +static unsigned int uc0FF55[] = { 0x0FF35, 0x00000 }; +static unsigned int uc0FF56[] = { 0x0FF36, 0x00000 }; +static unsigned int uc0FF57[] = { 0x0FF37, 0x00000 }; +static unsigned int uc0FF58[] = { 0x0FF38, 0x00000 }; +static unsigned int uc0FF59[] = { 0x0FF39, 0x00000 }; +static unsigned int uc0FF5A[] = { 0x0FF3A, 0x00000 }; +static unsigned int uc10428[] = { 0x10400, 0x00000 }; +static unsigned int uc10429[] = { 0x10401, 0x00000 }; +static unsigned int uc1042A[] = { 0x10402, 0x00000 }; +static unsigned int uc1042B[] = { 0x10403, 0x00000 }; +static unsigned int uc1042C[] = { 0x10404, 0x00000 }; +static unsigned int uc1042D[] = { 0x10405, 0x00000 }; +static unsigned int uc1042E[] = { 0x10406, 0x00000 }; +static unsigned int uc1042F[] = { 0x10407, 0x00000 }; +static unsigned int uc10430[] = { 0x10408, 0x00000 }; +static unsigned int uc10431[] = { 0x10409, 0x00000 }; +static unsigned int uc10432[] = { 0x1040A, 0x00000 }; +static unsigned int uc10433[] = { 0x1040B, 0x00000 }; +static unsigned int uc10434[] = { 0x1040C, 0x00000 }; +static unsigned int uc10435[] = { 0x1040D, 0x00000 }; +static unsigned int uc10436[] = { 0x1040E, 0x00000 }; +static unsigned int uc10437[] = { 0x1040F, 0x00000 }; +static unsigned int uc10438[] = { 0x10410, 0x00000 }; +static unsigned int uc10439[] = { 0x10411, 0x00000 }; +static unsigned int uc1043A[] = { 0x10412, 0x00000 }; +static unsigned int uc1043B[] = { 0x10413, 0x00000 }; +static unsigned int uc1043C[] = { 0x10414, 0x00000 }; +static unsigned int uc1043D[] = { 0x10415, 0x00000 }; +static unsigned int uc1043E[] = { 0x10416, 0x00000 }; +static unsigned int uc1043F[] = { 0x10417, 0x00000 }; +static unsigned int uc10440[] = { 0x10418, 0x00000 }; +static unsigned int uc10441[] = { 0x10419, 0x00000 }; +static unsigned int uc10442[] = { 0x1041A, 0x00000 }; +static unsigned int uc10443[] = { 0x1041B, 0x00000 }; +static unsigned int uc10444[] = { 0x1041C, 0x00000 }; +static unsigned int uc10445[] = { 0x1041D, 0x00000 }; +static unsigned int uc10446[] = { 0x1041E, 0x00000 }; +static unsigned int uc10447[] = { 0x1041F, 0x00000 }; +static unsigned int uc10448[] = { 0x10420, 0x00000 }; +static unsigned int uc10449[] = { 0x10421, 0x00000 }; +static unsigned int uc1044A[] = { 0x10422, 0x00000 }; +static unsigned int uc1044B[] = { 0x10423, 0x00000 }; +static unsigned int uc1044C[] = { 0x10424, 0x00000 }; +static unsigned int uc1044D[] = { 0x10425, 0x00000 }; +static unsigned int uc1044E[] = { 0x10426, 0x00000 }; +static unsigned int uc1044F[] = { 0x10427, 0x00000 }; + +static unsigned int upperCaseDirectTableSize = 2048; +static unsigned int *upperCaseDirectTable[2048] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, uc00061, uc00062, uc00063, uc00064, uc00065, uc00066, uc00067, uc00068, uc00069, uc0006A, uc0006B, uc0006C, uc0006D, uc0006E, uc0006F, + uc00070, uc00071, uc00072, uc00073, uc00074, uc00075, uc00076, uc00077, uc00078, uc00079, uc0007A, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, uc000B5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, uc000DF, + uc000E0, uc000E1, uc000E2, uc000E3, uc000E4, uc000E5, uc000E6, uc000E7, uc000E8, uc000E9, uc000EA, uc000EB, uc000EC, uc000ED, uc000EE, uc000EF, + uc000F0, uc000F1, uc000F2, uc000F3, uc000F4, uc000F5, uc000F6, 0, uc000F8, uc000F9, uc000FA, uc000FB, uc000FC, uc000FD, uc000FE, uc000FF, + 0, uc00101, 0, uc00103, 0, uc00105, 0, uc00107, 0, uc00109, 0, uc0010B, 0, uc0010D, 0, uc0010F, + 0, uc00111, 0, uc00113, 0, uc00115, 0, uc00117, 0, uc00119, 0, uc0011B, 0, uc0011D, 0, uc0011F, + 0, uc00121, 0, uc00123, 0, uc00125, 0, uc00127, 0, uc00129, 0, uc0012B, 0, uc0012D, 0, uc0012F, + uc00130, uc00131, 0, uc00133, 0, uc00135, 0, uc00137, 0, 0, uc0013A, 0, uc0013C, 0, uc0013E, 0, + uc00140, 0, uc00142, 0, uc00144, 0, uc00146, 0, uc00148, uc00149, 0, uc0014B, 0, uc0014D, 0, uc0014F, + 0, uc00151, 0, uc00153, 0, uc00155, 0, uc00157, 0, uc00159, 0, uc0015B, 0, uc0015D, 0, uc0015F, + 0, uc00161, 0, uc00163, 0, uc00165, 0, uc00167, 0, uc00169, 0, uc0016B, 0, uc0016D, 0, uc0016F, + 0, uc00171, 0, uc00173, 0, uc00175, 0, uc00177, 0, 0, uc0017A, 0, uc0017C, 0, uc0017E, uc0017F, + uc00180, 0, 0, uc00183, 0, uc00185, 0, 0, uc00188, 0, 0, 0, uc0018C, 0, 0, 0, + 0, 0, uc00192, 0, 0, uc00195, 0, 0, 0, uc00199, uc0019A, 0, 0, 0, uc0019E, 0, + 0, uc001A1, 0, uc001A3, 0, uc001A5, 0, 0, uc001A8, 0, 0, 0, 0, uc001AD, 0, 0, + uc001B0, 0, 0, 0, uc001B4, 0, uc001B6, 0, 0, uc001B9, 0, 0, 0, uc001BD, 0, uc001BF, + 0, 0, 0, 0, 0, uc001C5, uc001C6, 0, uc001C8, uc001C9, 0, uc001CB, uc001CC, 0, uc001CE, 0, + uc001D0, 0, uc001D2, 0, uc001D4, 0, uc001D6, 0, uc001D8, 0, uc001DA, 0, uc001DC, uc001DD, 0, uc001DF, + 0, uc001E1, 0, uc001E3, 0, uc001E5, 0, uc001E7, 0, uc001E9, 0, uc001EB, 0, uc001ED, 0, uc001EF, + uc001F0, 0, uc001F2, uc001F3, 0, uc001F5, 0, 0, 0, uc001F9, 0, uc001FB, 0, uc001FD, 0, uc001FF, + 0, uc00201, 0, uc00203, 0, uc00205, 0, uc00207, 0, uc00209, 0, uc0020B, 0, uc0020D, 0, uc0020F, + 0, uc00211, 0, uc00213, 0, uc00215, 0, uc00217, 0, uc00219, 0, uc0021B, 0, uc0021D, 0, uc0021F, + 0, 0, 0, uc00223, 0, uc00225, 0, uc00227, 0, uc00229, 0, uc0022B, 0, uc0022D, 0, uc0022F, + 0, uc00231, 0, uc00233, 0, 0, 0, 0, 0, 0, 0, 0, uc0023C, 0, 0, 0, + 0, 0, uc00242, 0, 0, 0, 0, uc00247, 0, uc00249, 0, uc0024B, 0, uc0024D, 0, uc0024F, + 0, 0, 0, uc00253, uc00254, 0, uc00256, uc00257, 0, uc00259, 0, uc0025B, 0, 0, 0, 0, + uc00260, 0, 0, uc00263, 0, 0, 0, 0, uc00268, uc00269, 0, uc0026B, 0, 0, 0, uc0026F, + 0, 0, uc00272, 0, 0, uc00275, 0, 0, 0, 0, 0, 0, 0, uc0027D, 0, 0, + uc00280, 0, 0, uc00283, 0, 0, 0, 0, uc00288, uc00289, uc0028A, uc0028B, uc0028C, 0, 0, 0, + 0, 0, uc00292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, uc00345, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, uc0037B, uc0037C, uc0037D, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + uc00390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, uc003AC, uc003AD, uc003AE, uc003AF, + uc003B0, uc003B1, uc003B2, uc003B3, uc003B4, uc003B5, uc003B6, uc003B7, uc003B8, uc003B9, uc003BA, uc003BB, uc003BC, uc003BD, uc003BE, uc003BF, + uc003C0, uc003C1, uc003C2, uc003C3, uc003C4, uc003C5, uc003C6, uc003C7, uc003C8, uc003C9, uc003CA, uc003CB, uc003CC, uc003CD, uc003CE, 0, + uc003D0, uc003D1, 0, 0, 0, uc003D5, uc003D6, 0, 0, uc003D9, 0, uc003DB, 0, uc003DD, 0, uc003DF, + 0, uc003E1, 0, uc003E3, 0, uc003E5, 0, uc003E7, 0, uc003E9, 0, uc003EB, 0, uc003ED, 0, uc003EF, + uc003F0, uc003F1, uc003F2, 0, 0, uc003F5, 0, 0, uc003F8, 0, 0, uc003FB, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + uc00430, uc00431, uc00432, uc00433, uc00434, uc00435, uc00436, uc00437, uc00438, uc00439, uc0043A, uc0043B, uc0043C, uc0043D, uc0043E, uc0043F, + uc00440, uc00441, uc00442, uc00443, uc00444, uc00445, uc00446, uc00447, uc00448, uc00449, uc0044A, uc0044B, uc0044C, uc0044D, uc0044E, uc0044F, + uc00450, uc00451, uc00452, uc00453, uc00454, uc00455, uc00456, uc00457, uc00458, uc00459, uc0045A, uc0045B, uc0045C, uc0045D, uc0045E, uc0045F, + 0, uc00461, 0, uc00463, 0, uc00465, 0, uc00467, 0, uc00469, 0, uc0046B, 0, uc0046D, 0, uc0046F, + 0, uc00471, 0, uc00473, 0, uc00475, 0, uc00477, 0, uc00479, 0, uc0047B, 0, uc0047D, 0, uc0047F, + 0, uc00481, 0, 0, 0, 0, 0, 0, 0, 0, 0, uc0048B, 0, uc0048D, 0, uc0048F, + 0, uc00491, 0, uc00493, 0, uc00495, 0, uc00497, 0, uc00499, 0, uc0049B, 0, uc0049D, 0, uc0049F, + 0, uc004A1, 0, uc004A3, 0, uc004A5, 0, uc004A7, 0, uc004A9, 0, uc004AB, 0, uc004AD, 0, uc004AF, + 0, uc004B1, 0, uc004B3, 0, uc004B5, 0, uc004B7, 0, uc004B9, 0, uc004BB, 0, uc004BD, 0, uc004BF, + 0, 0, uc004C2, 0, uc004C4, 0, uc004C6, 0, uc004C8, 0, uc004CA, 0, uc004CC, 0, uc004CE, uc004CF, + 0, uc004D1, 0, uc004D3, 0, uc004D5, 0, uc004D7, 0, uc004D9, 0, uc004DB, 0, uc004DD, 0, uc004DF, + 0, uc004E1, 0, uc004E3, 0, uc004E5, 0, uc004E7, 0, uc004E9, 0, uc004EB, 0, uc004ED, 0, uc004EF, + 0, uc004F1, 0, uc004F3, 0, uc004F5, 0, uc004F7, 0, uc004F9, 0, uc004FB, 0, uc004FD, 0, uc004FF, + 0, uc00501, 0, uc00503, 0, uc00505, 0, uc00507, 0, uc00509, 0, uc0050B, 0, uc0050D, 0, uc0050F, + 0, uc00511, 0, uc00513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, uc00561, uc00562, uc00563, uc00564, uc00565, uc00566, uc00567, uc00568, uc00569, uc0056A, uc0056B, uc0056C, uc0056D, uc0056E, uc0056F, + uc00570, uc00571, uc00572, uc00573, uc00574, uc00575, uc00576, uc00577, uc00578, uc00579, uc0057A, uc0057B, uc0057C, uc0057D, uc0057E, uc0057F, + uc00580, uc00581, uc00582, uc00583, uc00584, uc00585, uc00586, uc00587, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +// static unsigned int upperCaseTableSize = 1007; +// static CaseValue upperCaseTable[1007] = { +static unsigned int upperCaseTableSize = 540; +static CaseValue upperCaseTable[540] = { +// { 0x00061, uc00061 }, { 0x00062, uc00062 }, { 0x00063, uc00063 }, { 0x00064, uc00064 }, { 0x00065, uc00065 }, { 0x00066, uc00066 }, { 0x00067, uc00067 }, { 0x00068, uc00068 }, +// { 0x00069, uc00069 }, { 0x0006A, uc0006A }, { 0x0006B, uc0006B }, { 0x0006C, uc0006C }, { 0x0006D, uc0006D }, { 0x0006E, uc0006E }, { 0x0006F, uc0006F }, { 0x00070, uc00070 }, +// { 0x00071, uc00071 }, { 0x00072, uc00072 }, { 0x00073, uc00073 }, { 0x00074, uc00074 }, { 0x00075, uc00075 }, { 0x00076, uc00076 }, { 0x00077, uc00077 }, { 0x00078, uc00078 }, +// { 0x00079, uc00079 }, { 0x0007A, uc0007A }, { 0x000B5, uc000B5 }, { 0x000DF, uc000DF }, { 0x000E0, uc000E0 }, { 0x000E1, uc000E1 }, { 0x000E2, uc000E2 }, { 0x000E3, uc000E3 }, +// { 0x000E4, uc000E4 }, { 0x000E5, uc000E5 }, { 0x000E6, uc000E6 }, { 0x000E7, uc000E7 }, { 0x000E8, uc000E8 }, { 0x000E9, uc000E9 }, { 0x000EA, uc000EA }, { 0x000EB, uc000EB }, +// { 0x000EC, uc000EC }, { 0x000ED, uc000ED }, { 0x000EE, uc000EE }, { 0x000EF, uc000EF }, { 0x000F0, uc000F0 }, { 0x000F1, uc000F1 }, { 0x000F2, uc000F2 }, { 0x000F3, uc000F3 }, +// { 0x000F4, uc000F4 }, { 0x000F5, uc000F5 }, { 0x000F6, uc000F6 }, { 0x000F8, uc000F8 }, { 0x000F9, uc000F9 }, { 0x000FA, uc000FA }, { 0x000FB, uc000FB }, { 0x000FC, uc000FC }, +// { 0x000FD, uc000FD }, { 0x000FE, uc000FE }, { 0x000FF, uc000FF }, { 0x00101, uc00101 }, { 0x00103, uc00103 }, { 0x00105, uc00105 }, { 0x00107, uc00107 }, { 0x00109, uc00109 }, +// { 0x0010B, uc0010B }, { 0x0010D, uc0010D }, { 0x0010F, uc0010F }, { 0x00111, uc00111 }, { 0x00113, uc00113 }, { 0x00115, uc00115 }, { 0x00117, uc00117 }, { 0x00119, uc00119 }, +// { 0x0011B, uc0011B }, { 0x0011D, uc0011D }, { 0x0011F, uc0011F }, { 0x00121, uc00121 }, { 0x00123, uc00123 }, { 0x00125, uc00125 }, { 0x00127, uc00127 }, { 0x00129, uc00129 }, +// { 0x0012B, uc0012B }, { 0x0012D, uc0012D }, { 0x0012F, uc0012F }, { 0x00130, uc00130 }, { 0x00131, uc00131 }, { 0x00133, uc00133 }, { 0x00135, uc00135 }, { 0x00137, uc00137 }, +// { 0x0013A, uc0013A }, { 0x0013C, uc0013C }, { 0x0013E, uc0013E }, { 0x00140, uc00140 }, { 0x00142, uc00142 }, { 0x00144, uc00144 }, { 0x00146, uc00146 }, { 0x00148, uc00148 }, +// { 0x00149, uc00149 }, { 0x0014B, uc0014B }, { 0x0014D, uc0014D }, { 0x0014F, uc0014F }, { 0x00151, uc00151 }, { 0x00153, uc00153 }, { 0x00155, uc00155 }, { 0x00157, uc00157 }, +// { 0x00159, uc00159 }, { 0x0015B, uc0015B }, { 0x0015D, uc0015D }, { 0x0015F, uc0015F }, { 0x00161, uc00161 }, { 0x00163, uc00163 }, { 0x00165, uc00165 }, { 0x00167, uc00167 }, +// { 0x00169, uc00169 }, { 0x0016B, uc0016B }, { 0x0016D, uc0016D }, { 0x0016F, uc0016F }, { 0x00171, uc00171 }, { 0x00173, uc00173 }, { 0x00175, uc00175 }, { 0x00177, uc00177 }, +// { 0x0017A, uc0017A }, { 0x0017C, uc0017C }, { 0x0017E, uc0017E }, { 0x0017F, uc0017F }, { 0x00180, uc00180 }, { 0x00183, uc00183 }, { 0x00185, uc00185 }, { 0x00188, uc00188 }, +// { 0x0018C, uc0018C }, { 0x00192, uc00192 }, { 0x00195, uc00195 }, { 0x00199, uc00199 }, { 0x0019A, uc0019A }, { 0x0019E, uc0019E }, { 0x001A1, uc001A1 }, { 0x001A3, uc001A3 }, +// { 0x001A5, uc001A5 }, { 0x001A8, uc001A8 }, { 0x001AD, uc001AD }, { 0x001B0, uc001B0 }, { 0x001B4, uc001B4 }, { 0x001B6, uc001B6 }, { 0x001B9, uc001B9 }, { 0x001BD, uc001BD }, +// { 0x001BF, uc001BF }, { 0x001C5, uc001C5 }, { 0x001C6, uc001C6 }, { 0x001C8, uc001C8 }, { 0x001C9, uc001C9 }, { 0x001CB, uc001CB }, { 0x001CC, uc001CC }, { 0x001CE, uc001CE }, +// { 0x001D0, uc001D0 }, { 0x001D2, uc001D2 }, { 0x001D4, uc001D4 }, { 0x001D6, uc001D6 }, { 0x001D8, uc001D8 }, { 0x001DA, uc001DA }, { 0x001DC, uc001DC }, { 0x001DD, uc001DD }, +// { 0x001DF, uc001DF }, { 0x001E1, uc001E1 }, { 0x001E3, uc001E3 }, { 0x001E5, uc001E5 }, { 0x001E7, uc001E7 }, { 0x001E9, uc001E9 }, { 0x001EB, uc001EB }, { 0x001ED, uc001ED }, +// { 0x001EF, uc001EF }, { 0x001F0, uc001F0 }, { 0x001F2, uc001F2 }, { 0x001F3, uc001F3 }, { 0x001F5, uc001F5 }, { 0x001F9, uc001F9 }, { 0x001FB, uc001FB }, { 0x001FD, uc001FD }, +// { 0x001FF, uc001FF }, { 0x00201, uc00201 }, { 0x00203, uc00203 }, { 0x00205, uc00205 }, { 0x00207, uc00207 }, { 0x00209, uc00209 }, { 0x0020B, uc0020B }, { 0x0020D, uc0020D }, +// { 0x0020F, uc0020F }, { 0x00211, uc00211 }, { 0x00213, uc00213 }, { 0x00215, uc00215 }, { 0x00217, uc00217 }, { 0x00219, uc00219 }, { 0x0021B, uc0021B }, { 0x0021D, uc0021D }, +// { 0x0021F, uc0021F }, { 0x00223, uc00223 }, { 0x00225, uc00225 }, { 0x00227, uc00227 }, { 0x00229, uc00229 }, { 0x0022B, uc0022B }, { 0x0022D, uc0022D }, { 0x0022F, uc0022F }, +// { 0x00231, uc00231 }, { 0x00233, uc00233 }, { 0x0023C, uc0023C }, { 0x00242, uc00242 }, { 0x00247, uc00247 }, { 0x00249, uc00249 }, { 0x0024B, uc0024B }, { 0x0024D, uc0024D }, +// { 0x0024F, uc0024F }, { 0x00253, uc00253 }, { 0x00254, uc00254 }, { 0x00256, uc00256 }, { 0x00257, uc00257 }, { 0x00259, uc00259 }, { 0x0025B, uc0025B }, { 0x00260, uc00260 }, +// { 0x00263, uc00263 }, { 0x00268, uc00268 }, { 0x00269, uc00269 }, { 0x0026B, uc0026B }, { 0x0026F, uc0026F }, { 0x00272, uc00272 }, { 0x00275, uc00275 }, { 0x0027D, uc0027D }, +// { 0x00280, uc00280 }, { 0x00283, uc00283 }, { 0x00288, uc00288 }, { 0x00289, uc00289 }, { 0x0028A, uc0028A }, { 0x0028B, uc0028B }, { 0x0028C, uc0028C }, { 0x00292, uc00292 }, +// { 0x00345, uc00345 }, { 0x0037B, uc0037B }, { 0x0037C, uc0037C }, { 0x0037D, uc0037D }, { 0x00390, uc00390 }, { 0x003AC, uc003AC }, { 0x003AD, uc003AD }, { 0x003AE, uc003AE }, +// { 0x003AF, uc003AF }, { 0x003B0, uc003B0 }, { 0x003B1, uc003B1 }, { 0x003B2, uc003B2 }, { 0x003B3, uc003B3 }, { 0x003B4, uc003B4 }, { 0x003B5, uc003B5 }, { 0x003B6, uc003B6 }, +// { 0x003B7, uc003B7 }, { 0x003B8, uc003B8 }, { 0x003B9, uc003B9 }, { 0x003BA, uc003BA }, { 0x003BB, uc003BB }, { 0x003BC, uc003BC }, { 0x003BD, uc003BD }, { 0x003BE, uc003BE }, +// { 0x003BF, uc003BF }, { 0x003C0, uc003C0 }, { 0x003C1, uc003C1 }, { 0x003C2, uc003C2 }, { 0x003C3, uc003C3 }, { 0x003C4, uc003C4 }, { 0x003C5, uc003C5 }, { 0x003C6, uc003C6 }, +// { 0x003C7, uc003C7 }, { 0x003C8, uc003C8 }, { 0x003C9, uc003C9 }, { 0x003CA, uc003CA }, { 0x003CB, uc003CB }, { 0x003CC, uc003CC }, { 0x003CD, uc003CD }, { 0x003CE, uc003CE }, +// { 0x003D0, uc003D0 }, { 0x003D1, uc003D1 }, { 0x003D5, uc003D5 }, { 0x003D6, uc003D6 }, { 0x003D9, uc003D9 }, { 0x003DB, uc003DB }, { 0x003DD, uc003DD }, { 0x003DF, uc003DF }, +// { 0x003E1, uc003E1 }, { 0x003E3, uc003E3 }, { 0x003E5, uc003E5 }, { 0x003E7, uc003E7 }, { 0x003E9, uc003E9 }, { 0x003EB, uc003EB }, { 0x003ED, uc003ED }, { 0x003EF, uc003EF }, +// { 0x003F0, uc003F0 }, { 0x003F1, uc003F1 }, { 0x003F2, uc003F2 }, { 0x003F5, uc003F5 }, { 0x003F8, uc003F8 }, { 0x003FB, uc003FB }, { 0x00430, uc00430 }, { 0x00431, uc00431 }, +// { 0x00432, uc00432 }, { 0x00433, uc00433 }, { 0x00434, uc00434 }, { 0x00435, uc00435 }, { 0x00436, uc00436 }, { 0x00437, uc00437 }, { 0x00438, uc00438 }, { 0x00439, uc00439 }, +// { 0x0043A, uc0043A }, { 0x0043B, uc0043B }, { 0x0043C, uc0043C }, { 0x0043D, uc0043D }, { 0x0043E, uc0043E }, { 0x0043F, uc0043F }, { 0x00440, uc00440 }, { 0x00441, uc00441 }, +// { 0x00442, uc00442 }, { 0x00443, uc00443 }, { 0x00444, uc00444 }, { 0x00445, uc00445 }, { 0x00446, uc00446 }, { 0x00447, uc00447 }, { 0x00448, uc00448 }, { 0x00449, uc00449 }, +// { 0x0044A, uc0044A }, { 0x0044B, uc0044B }, { 0x0044C, uc0044C }, { 0x0044D, uc0044D }, { 0x0044E, uc0044E }, { 0x0044F, uc0044F }, { 0x00450, uc00450 }, { 0x00451, uc00451 }, +// { 0x00452, uc00452 }, { 0x00453, uc00453 }, { 0x00454, uc00454 }, { 0x00455, uc00455 }, { 0x00456, uc00456 }, { 0x00457, uc00457 }, { 0x00458, uc00458 }, { 0x00459, uc00459 }, +// { 0x0045A, uc0045A }, { 0x0045B, uc0045B }, { 0x0045C, uc0045C }, { 0x0045D, uc0045D }, { 0x0045E, uc0045E }, { 0x0045F, uc0045F }, { 0x00461, uc00461 }, { 0x00463, uc00463 }, +// { 0x00465, uc00465 }, { 0x00467, uc00467 }, { 0x00469, uc00469 }, { 0x0046B, uc0046B }, { 0x0046D, uc0046D }, { 0x0046F, uc0046F }, { 0x00471, uc00471 }, { 0x00473, uc00473 }, +// { 0x00475, uc00475 }, { 0x00477, uc00477 }, { 0x00479, uc00479 }, { 0x0047B, uc0047B }, { 0x0047D, uc0047D }, { 0x0047F, uc0047F }, { 0x00481, uc00481 }, { 0x0048B, uc0048B }, +// { 0x0048D, uc0048D }, { 0x0048F, uc0048F }, { 0x00491, uc00491 }, { 0x00493, uc00493 }, { 0x00495, uc00495 }, { 0x00497, uc00497 }, { 0x00499, uc00499 }, { 0x0049B, uc0049B }, +// { 0x0049D, uc0049D }, { 0x0049F, uc0049F }, { 0x004A1, uc004A1 }, { 0x004A3, uc004A3 }, { 0x004A5, uc004A5 }, { 0x004A7, uc004A7 }, { 0x004A9, uc004A9 }, { 0x004AB, uc004AB }, +// { 0x004AD, uc004AD }, { 0x004AF, uc004AF }, { 0x004B1, uc004B1 }, { 0x004B3, uc004B3 }, { 0x004B5, uc004B5 }, { 0x004B7, uc004B7 }, { 0x004B9, uc004B9 }, { 0x004BB, uc004BB }, +// { 0x004BD, uc004BD }, { 0x004BF, uc004BF }, { 0x004C2, uc004C2 }, { 0x004C4, uc004C4 }, { 0x004C6, uc004C6 }, { 0x004C8, uc004C8 }, { 0x004CA, uc004CA }, { 0x004CC, uc004CC }, +// { 0x004CE, uc004CE }, { 0x004CF, uc004CF }, { 0x004D1, uc004D1 }, { 0x004D3, uc004D3 }, { 0x004D5, uc004D5 }, { 0x004D7, uc004D7 }, { 0x004D9, uc004D9 }, { 0x004DB, uc004DB }, +// { 0x004DD, uc004DD }, { 0x004DF, uc004DF }, { 0x004E1, uc004E1 }, { 0x004E3, uc004E3 }, { 0x004E5, uc004E5 }, { 0x004E7, uc004E7 }, { 0x004E9, uc004E9 }, { 0x004EB, uc004EB }, +// { 0x004ED, uc004ED }, { 0x004EF, uc004EF }, { 0x004F1, uc004F1 }, { 0x004F3, uc004F3 }, { 0x004F5, uc004F5 }, { 0x004F7, uc004F7 }, { 0x004F9, uc004F9 }, { 0x004FB, uc004FB }, +// { 0x004FD, uc004FD }, { 0x004FF, uc004FF }, { 0x00501, uc00501 }, { 0x00503, uc00503 }, { 0x00505, uc00505 }, { 0x00507, uc00507 }, { 0x00509, uc00509 }, { 0x0050B, uc0050B }, +// { 0x0050D, uc0050D }, { 0x0050F, uc0050F }, { 0x00511, uc00511 }, { 0x00513, uc00513 }, { 0x00561, uc00561 }, { 0x00562, uc00562 }, { 0x00563, uc00563 }, { 0x00564, uc00564 }, +// { 0x00565, uc00565 }, { 0x00566, uc00566 }, { 0x00567, uc00567 }, { 0x00568, uc00568 }, { 0x00569, uc00569 }, { 0x0056A, uc0056A }, { 0x0056B, uc0056B }, { 0x0056C, uc0056C }, +// { 0x0056D, uc0056D }, { 0x0056E, uc0056E }, { 0x0056F, uc0056F }, { 0x00570, uc00570 }, { 0x00571, uc00571 }, { 0x00572, uc00572 }, { 0x00573, uc00573 }, { 0x00574, uc00574 }, +// { 0x00575, uc00575 }, { 0x00576, uc00576 }, { 0x00577, uc00577 }, { 0x00578, uc00578 }, { 0x00579, uc00579 }, { 0x0057A, uc0057A }, { 0x0057B, uc0057B }, { 0x0057C, uc0057C }, +// { 0x0057D, uc0057D }, { 0x0057E, uc0057E }, { 0x0057F, uc0057F }, { 0x00580, uc00580 }, { 0x00581, uc00581 }, { 0x00582, uc00582 }, { 0x00583, uc00583 }, { 0x00584, uc00584 }, +// { 0x00585, uc00585 }, { 0x00586, uc00586 }, { 0x00587, uc00587 }, + { 0x01D7D, uc01D7D }, { 0x01E01, uc01E01 }, { 0x01E03, uc01E03 }, { 0x01E05, uc01E05 }, { 0x01E07, uc01E07 }, +{ 0x01E09, uc01E09 }, { 0x01E0B, uc01E0B }, { 0x01E0D, uc01E0D }, { 0x01E0F, uc01E0F }, { 0x01E11, uc01E11 }, { 0x01E13, uc01E13 }, { 0x01E15, uc01E15 }, { 0x01E17, uc01E17 }, +{ 0x01E19, uc01E19 }, { 0x01E1B, uc01E1B }, { 0x01E1D, uc01E1D }, { 0x01E1F, uc01E1F }, { 0x01E21, uc01E21 }, { 0x01E23, uc01E23 }, { 0x01E25, uc01E25 }, { 0x01E27, uc01E27 }, +{ 0x01E29, uc01E29 }, { 0x01E2B, uc01E2B }, { 0x01E2D, uc01E2D }, { 0x01E2F, uc01E2F }, { 0x01E31, uc01E31 }, { 0x01E33, uc01E33 }, { 0x01E35, uc01E35 }, { 0x01E37, uc01E37 }, +{ 0x01E39, uc01E39 }, { 0x01E3B, uc01E3B }, { 0x01E3D, uc01E3D }, { 0x01E3F, uc01E3F }, { 0x01E41, uc01E41 }, { 0x01E43, uc01E43 }, { 0x01E45, uc01E45 }, { 0x01E47, uc01E47 }, +{ 0x01E49, uc01E49 }, { 0x01E4B, uc01E4B }, { 0x01E4D, uc01E4D }, { 0x01E4F, uc01E4F }, { 0x01E51, uc01E51 }, { 0x01E53, uc01E53 }, { 0x01E55, uc01E55 }, { 0x01E57, uc01E57 }, +{ 0x01E59, uc01E59 }, { 0x01E5B, uc01E5B }, { 0x01E5D, uc01E5D }, { 0x01E5F, uc01E5F }, { 0x01E61, uc01E61 }, { 0x01E63, uc01E63 }, { 0x01E65, uc01E65 }, { 0x01E67, uc01E67 }, +{ 0x01E69, uc01E69 }, { 0x01E6B, uc01E6B }, { 0x01E6D, uc01E6D }, { 0x01E6F, uc01E6F }, { 0x01E71, uc01E71 }, { 0x01E73, uc01E73 }, { 0x01E75, uc01E75 }, { 0x01E77, uc01E77 }, +{ 0x01E79, uc01E79 }, { 0x01E7B, uc01E7B }, { 0x01E7D, uc01E7D }, { 0x01E7F, uc01E7F }, { 0x01E81, uc01E81 }, { 0x01E83, uc01E83 }, { 0x01E85, uc01E85 }, { 0x01E87, uc01E87 }, +{ 0x01E89, uc01E89 }, { 0x01E8B, uc01E8B }, { 0x01E8D, uc01E8D }, { 0x01E8F, uc01E8F }, { 0x01E91, uc01E91 }, { 0x01E93, uc01E93 }, { 0x01E95, uc01E95 }, { 0x01E96, uc01E96 }, +{ 0x01E97, uc01E97 }, { 0x01E98, uc01E98 }, { 0x01E99, uc01E99 }, { 0x01E9A, uc01E9A }, { 0x01E9B, uc01E9B }, { 0x01EA1, uc01EA1 }, { 0x01EA3, uc01EA3 }, { 0x01EA5, uc01EA5 }, +{ 0x01EA7, uc01EA7 }, { 0x01EA9, uc01EA9 }, { 0x01EAB, uc01EAB }, { 0x01EAD, uc01EAD }, { 0x01EAF, uc01EAF }, { 0x01EB1, uc01EB1 }, { 0x01EB3, uc01EB3 }, { 0x01EB5, uc01EB5 }, +{ 0x01EB7, uc01EB7 }, { 0x01EB9, uc01EB9 }, { 0x01EBB, uc01EBB }, { 0x01EBD, uc01EBD }, { 0x01EBF, uc01EBF }, { 0x01EC1, uc01EC1 }, { 0x01EC3, uc01EC3 }, { 0x01EC5, uc01EC5 }, +{ 0x01EC7, uc01EC7 }, { 0x01EC9, uc01EC9 }, { 0x01ECB, uc01ECB }, { 0x01ECD, uc01ECD }, { 0x01ECF, uc01ECF }, { 0x01ED1, uc01ED1 }, { 0x01ED3, uc01ED3 }, { 0x01ED5, uc01ED5 }, +{ 0x01ED7, uc01ED7 }, { 0x01ED9, uc01ED9 }, { 0x01EDB, uc01EDB }, { 0x01EDD, uc01EDD }, { 0x01EDF, uc01EDF }, { 0x01EE1, uc01EE1 }, { 0x01EE3, uc01EE3 }, { 0x01EE5, uc01EE5 }, +{ 0x01EE7, uc01EE7 }, { 0x01EE9, uc01EE9 }, { 0x01EEB, uc01EEB }, { 0x01EED, uc01EED }, { 0x01EEF, uc01EEF }, { 0x01EF1, uc01EF1 }, { 0x01EF3, uc01EF3 }, { 0x01EF5, uc01EF5 }, +{ 0x01EF7, uc01EF7 }, { 0x01EF9, uc01EF9 }, { 0x01F00, uc01F00 }, { 0x01F01, uc01F01 }, { 0x01F02, uc01F02 }, { 0x01F03, uc01F03 }, { 0x01F04, uc01F04 }, { 0x01F05, uc01F05 }, +{ 0x01F06, uc01F06 }, { 0x01F07, uc01F07 }, { 0x01F10, uc01F10 }, { 0x01F11, uc01F11 }, { 0x01F12, uc01F12 }, { 0x01F13, uc01F13 }, { 0x01F14, uc01F14 }, { 0x01F15, uc01F15 }, +{ 0x01F20, uc01F20 }, { 0x01F21, uc01F21 }, { 0x01F22, uc01F22 }, { 0x01F23, uc01F23 }, { 0x01F24, uc01F24 }, { 0x01F25, uc01F25 }, { 0x01F26, uc01F26 }, { 0x01F27, uc01F27 }, +{ 0x01F30, uc01F30 }, { 0x01F31, uc01F31 }, { 0x01F32, uc01F32 }, { 0x01F33, uc01F33 }, { 0x01F34, uc01F34 }, { 0x01F35, uc01F35 }, { 0x01F36, uc01F36 }, { 0x01F37, uc01F37 }, +{ 0x01F40, uc01F40 }, { 0x01F41, uc01F41 }, { 0x01F42, uc01F42 }, { 0x01F43, uc01F43 }, { 0x01F44, uc01F44 }, { 0x01F45, uc01F45 }, { 0x01F50, uc01F50 }, { 0x01F51, uc01F51 }, +{ 0x01F52, uc01F52 }, { 0x01F53, uc01F53 }, { 0x01F54, uc01F54 }, { 0x01F55, uc01F55 }, { 0x01F56, uc01F56 }, { 0x01F57, uc01F57 }, { 0x01F60, uc01F60 }, { 0x01F61, uc01F61 }, +{ 0x01F62, uc01F62 }, { 0x01F63, uc01F63 }, { 0x01F64, uc01F64 }, { 0x01F65, uc01F65 }, { 0x01F66, uc01F66 }, { 0x01F67, uc01F67 }, { 0x01F70, uc01F70 }, { 0x01F71, uc01F71 }, +{ 0x01F72, uc01F72 }, { 0x01F73, uc01F73 }, { 0x01F74, uc01F74 }, { 0x01F75, uc01F75 }, { 0x01F76, uc01F76 }, { 0x01F77, uc01F77 }, { 0x01F78, uc01F78 }, { 0x01F79, uc01F79 }, +{ 0x01F7A, uc01F7A }, { 0x01F7B, uc01F7B }, { 0x01F7C, uc01F7C }, { 0x01F7D, uc01F7D }, { 0x01F80, uc01F80 }, { 0x01F81, uc01F81 }, { 0x01F82, uc01F82 }, { 0x01F83, uc01F83 }, +{ 0x01F84, uc01F84 }, { 0x01F85, uc01F85 }, { 0x01F86, uc01F86 }, { 0x01F87, uc01F87 }, { 0x01F88, uc01F88 }, { 0x01F89, uc01F89 }, { 0x01F8A, uc01F8A }, { 0x01F8B, uc01F8B }, +{ 0x01F8C, uc01F8C }, { 0x01F8D, uc01F8D }, { 0x01F8E, uc01F8E }, { 0x01F8F, uc01F8F }, { 0x01F90, uc01F90 }, { 0x01F91, uc01F91 }, { 0x01F92, uc01F92 }, { 0x01F93, uc01F93 }, +{ 0x01F94, uc01F94 }, { 0x01F95, uc01F95 }, { 0x01F96, uc01F96 }, { 0x01F97, uc01F97 }, { 0x01F98, uc01F98 }, { 0x01F99, uc01F99 }, { 0x01F9A, uc01F9A }, { 0x01F9B, uc01F9B }, +{ 0x01F9C, uc01F9C }, { 0x01F9D, uc01F9D }, { 0x01F9E, uc01F9E }, { 0x01F9F, uc01F9F }, { 0x01FA0, uc01FA0 }, { 0x01FA1, uc01FA1 }, { 0x01FA2, uc01FA2 }, { 0x01FA3, uc01FA3 }, +{ 0x01FA4, uc01FA4 }, { 0x01FA5, uc01FA5 }, { 0x01FA6, uc01FA6 }, { 0x01FA7, uc01FA7 }, { 0x01FA8, uc01FA8 }, { 0x01FA9, uc01FA9 }, { 0x01FAA, uc01FAA }, { 0x01FAB, uc01FAB }, +{ 0x01FAC, uc01FAC }, { 0x01FAD, uc01FAD }, { 0x01FAE, uc01FAE }, { 0x01FAF, uc01FAF }, { 0x01FB0, uc01FB0 }, { 0x01FB1, uc01FB1 }, { 0x01FB2, uc01FB2 }, { 0x01FB3, uc01FB3 }, +{ 0x01FB4, uc01FB4 }, { 0x01FB6, uc01FB6 }, { 0x01FB7, uc01FB7 }, { 0x01FBC, uc01FBC }, { 0x01FBE, uc01FBE }, { 0x01FC2, uc01FC2 }, { 0x01FC3, uc01FC3 }, { 0x01FC4, uc01FC4 }, +{ 0x01FC6, uc01FC6 }, { 0x01FC7, uc01FC7 }, { 0x01FCC, uc01FCC }, { 0x01FD0, uc01FD0 }, { 0x01FD1, uc01FD1 }, { 0x01FD2, uc01FD2 }, { 0x01FD3, uc01FD3 }, { 0x01FD6, uc01FD6 }, +{ 0x01FD7, uc01FD7 }, { 0x01FE0, uc01FE0 }, { 0x01FE1, uc01FE1 }, { 0x01FE2, uc01FE2 }, { 0x01FE3, uc01FE3 }, { 0x01FE4, uc01FE4 }, { 0x01FE5, uc01FE5 }, { 0x01FE6, uc01FE6 }, +{ 0x01FE7, uc01FE7 }, { 0x01FF2, uc01FF2 }, { 0x01FF3, uc01FF3 }, { 0x01FF4, uc01FF4 }, { 0x01FF6, uc01FF6 }, { 0x01FF7, uc01FF7 }, { 0x01FFC, uc01FFC }, { 0x0214E, uc0214E }, +{ 0x02170, uc02170 }, { 0x02171, uc02171 }, { 0x02172, uc02172 }, { 0x02173, uc02173 }, { 0x02174, uc02174 }, { 0x02175, uc02175 }, { 0x02176, uc02176 }, { 0x02177, uc02177 }, +{ 0x02178, uc02178 }, { 0x02179, uc02179 }, { 0x0217A, uc0217A }, { 0x0217B, uc0217B }, { 0x0217C, uc0217C }, { 0x0217D, uc0217D }, { 0x0217E, uc0217E }, { 0x0217F, uc0217F }, +{ 0x02184, uc02184 }, { 0x024D0, uc024D0 }, { 0x024D1, uc024D1 }, { 0x024D2, uc024D2 }, { 0x024D3, uc024D3 }, { 0x024D4, uc024D4 }, { 0x024D5, uc024D5 }, { 0x024D6, uc024D6 }, +{ 0x024D7, uc024D7 }, { 0x024D8, uc024D8 }, { 0x024D9, uc024D9 }, { 0x024DA, uc024DA }, { 0x024DB, uc024DB }, { 0x024DC, uc024DC }, { 0x024DD, uc024DD }, { 0x024DE, uc024DE }, +{ 0x024DF, uc024DF }, { 0x024E0, uc024E0 }, { 0x024E1, uc024E1 }, { 0x024E2, uc024E2 }, { 0x024E3, uc024E3 }, { 0x024E4, uc024E4 }, { 0x024E5, uc024E5 }, { 0x024E6, uc024E6 }, +{ 0x024E7, uc024E7 }, { 0x024E8, uc024E8 }, { 0x024E9, uc024E9 }, { 0x02C30, uc02C30 }, { 0x02C31, uc02C31 }, { 0x02C32, uc02C32 }, { 0x02C33, uc02C33 }, { 0x02C34, uc02C34 }, +{ 0x02C35, uc02C35 }, { 0x02C36, uc02C36 }, { 0x02C37, uc02C37 }, { 0x02C38, uc02C38 }, { 0x02C39, uc02C39 }, { 0x02C3A, uc02C3A }, { 0x02C3B, uc02C3B }, { 0x02C3C, uc02C3C }, +{ 0x02C3D, uc02C3D }, { 0x02C3E, uc02C3E }, { 0x02C3F, uc02C3F }, { 0x02C40, uc02C40 }, { 0x02C41, uc02C41 }, { 0x02C42, uc02C42 }, { 0x02C43, uc02C43 }, { 0x02C44, uc02C44 }, +{ 0x02C45, uc02C45 }, { 0x02C46, uc02C46 }, { 0x02C47, uc02C47 }, { 0x02C48, uc02C48 }, { 0x02C49, uc02C49 }, { 0x02C4A, uc02C4A }, { 0x02C4B, uc02C4B }, { 0x02C4C, uc02C4C }, +{ 0x02C4D, uc02C4D }, { 0x02C4E, uc02C4E }, { 0x02C4F, uc02C4F }, { 0x02C50, uc02C50 }, { 0x02C51, uc02C51 }, { 0x02C52, uc02C52 }, { 0x02C53, uc02C53 }, { 0x02C54, uc02C54 }, +{ 0x02C55, uc02C55 }, { 0x02C56, uc02C56 }, { 0x02C57, uc02C57 }, { 0x02C58, uc02C58 }, { 0x02C59, uc02C59 }, { 0x02C5A, uc02C5A }, { 0x02C5B, uc02C5B }, { 0x02C5C, uc02C5C }, +{ 0x02C5D, uc02C5D }, { 0x02C5E, uc02C5E }, { 0x02C61, uc02C61 }, { 0x02C65, uc02C65 }, { 0x02C66, uc02C66 }, { 0x02C68, uc02C68 }, { 0x02C6A, uc02C6A }, { 0x02C6C, uc02C6C }, +{ 0x02C76, uc02C76 }, { 0x02C81, uc02C81 }, { 0x02C83, uc02C83 }, { 0x02C85, uc02C85 }, { 0x02C87, uc02C87 }, { 0x02C89, uc02C89 }, { 0x02C8B, uc02C8B }, { 0x02C8D, uc02C8D }, +{ 0x02C8F, uc02C8F }, { 0x02C91, uc02C91 }, { 0x02C93, uc02C93 }, { 0x02C95, uc02C95 }, { 0x02C97, uc02C97 }, { 0x02C99, uc02C99 }, { 0x02C9B, uc02C9B }, { 0x02C9D, uc02C9D }, +{ 0x02C9F, uc02C9F }, { 0x02CA1, uc02CA1 }, { 0x02CA3, uc02CA3 }, { 0x02CA5, uc02CA5 }, { 0x02CA7, uc02CA7 }, { 0x02CA9, uc02CA9 }, { 0x02CAB, uc02CAB }, { 0x02CAD, uc02CAD }, +{ 0x02CAF, uc02CAF }, { 0x02CB1, uc02CB1 }, { 0x02CB3, uc02CB3 }, { 0x02CB5, uc02CB5 }, { 0x02CB7, uc02CB7 }, { 0x02CB9, uc02CB9 }, { 0x02CBB, uc02CBB }, { 0x02CBD, uc02CBD }, +{ 0x02CBF, uc02CBF }, { 0x02CC1, uc02CC1 }, { 0x02CC3, uc02CC3 }, { 0x02CC5, uc02CC5 }, { 0x02CC7, uc02CC7 }, { 0x02CC9, uc02CC9 }, { 0x02CCB, uc02CCB }, { 0x02CCD, uc02CCD }, +{ 0x02CCF, uc02CCF }, { 0x02CD1, uc02CD1 }, { 0x02CD3, uc02CD3 }, { 0x02CD5, uc02CD5 }, { 0x02CD7, uc02CD7 }, { 0x02CD9, uc02CD9 }, { 0x02CDB, uc02CDB }, { 0x02CDD, uc02CDD }, +{ 0x02CDF, uc02CDF }, { 0x02CE1, uc02CE1 }, { 0x02CE3, uc02CE3 }, { 0x02D00, uc02D00 }, { 0x02D01, uc02D01 }, { 0x02D02, uc02D02 }, { 0x02D03, uc02D03 }, { 0x02D04, uc02D04 }, +{ 0x02D05, uc02D05 }, { 0x02D06, uc02D06 }, { 0x02D07, uc02D07 }, { 0x02D08, uc02D08 }, { 0x02D09, uc02D09 }, { 0x02D0A, uc02D0A }, { 0x02D0B, uc02D0B }, { 0x02D0C, uc02D0C }, +{ 0x02D0D, uc02D0D }, { 0x02D0E, uc02D0E }, { 0x02D0F, uc02D0F }, { 0x02D10, uc02D10 }, { 0x02D11, uc02D11 }, { 0x02D12, uc02D12 }, { 0x02D13, uc02D13 }, { 0x02D14, uc02D14 }, +{ 0x02D15, uc02D15 }, { 0x02D16, uc02D16 }, { 0x02D17, uc02D17 }, { 0x02D18, uc02D18 }, { 0x02D19, uc02D19 }, { 0x02D1A, uc02D1A }, { 0x02D1B, uc02D1B }, { 0x02D1C, uc02D1C }, +{ 0x02D1D, uc02D1D }, { 0x02D1E, uc02D1E }, { 0x02D1F, uc02D1F }, { 0x02D20, uc02D20 }, { 0x02D21, uc02D21 }, { 0x02D22, uc02D22 }, { 0x02D23, uc02D23 }, { 0x02D24, uc02D24 }, +{ 0x02D25, uc02D25 }, { 0x0FB00, uc0FB00 }, { 0x0FB01, uc0FB01 }, { 0x0FB02, uc0FB02 }, { 0x0FB03, uc0FB03 }, { 0x0FB04, uc0FB04 }, { 0x0FB05, uc0FB05 }, { 0x0FB06, uc0FB06 }, +{ 0x0FB13, uc0FB13 }, { 0x0FB14, uc0FB14 }, { 0x0FB15, uc0FB15 }, { 0x0FB16, uc0FB16 }, { 0x0FB17, uc0FB17 }, { 0x0FF41, uc0FF41 }, { 0x0FF42, uc0FF42 }, { 0x0FF43, uc0FF43 }, +{ 0x0FF44, uc0FF44 }, { 0x0FF45, uc0FF45 }, { 0x0FF46, uc0FF46 }, { 0x0FF47, uc0FF47 }, { 0x0FF48, uc0FF48 }, { 0x0FF49, uc0FF49 }, { 0x0FF4A, uc0FF4A }, { 0x0FF4B, uc0FF4B }, +{ 0x0FF4C, uc0FF4C }, { 0x0FF4D, uc0FF4D }, { 0x0FF4E, uc0FF4E }, { 0x0FF4F, uc0FF4F }, { 0x0FF50, uc0FF50 }, { 0x0FF51, uc0FF51 }, { 0x0FF52, uc0FF52 }, { 0x0FF53, uc0FF53 }, +{ 0x0FF54, uc0FF54 }, { 0x0FF55, uc0FF55 }, { 0x0FF56, uc0FF56 }, { 0x0FF57, uc0FF57 }, { 0x0FF58, uc0FF58 }, { 0x0FF59, uc0FF59 }, { 0x0FF5A, uc0FF5A }, { 0x10428, uc10428 }, +{ 0x10429, uc10429 }, { 0x1042A, uc1042A }, { 0x1042B, uc1042B }, { 0x1042C, uc1042C }, { 0x1042D, uc1042D }, { 0x1042E, uc1042E }, { 0x1042F, uc1042F }, { 0x10430, uc10430 }, +{ 0x10431, uc10431 }, { 0x10432, uc10432 }, { 0x10433, uc10433 }, { 0x10434, uc10434 }, { 0x10435, uc10435 }, { 0x10436, uc10436 }, { 0x10437, uc10437 }, { 0x10438, uc10438 }, +{ 0x10439, uc10439 }, { 0x1043A, uc1043A }, { 0x1043B, uc1043B }, { 0x1043C, uc1043C }, { 0x1043D, uc1043D }, { 0x1043E, uc1043E }, { 0x1043F, uc1043F }, { 0x10440, uc10440 }, +{ 0x10441, uc10441 }, { 0x10442, uc10442 }, { 0x10443, uc10443 }, { 0x10444, uc10444 }, { 0x10445, uc10445 }, { 0x10446, uc10446 }, { 0x10447, uc10447 }, { 0x10448, uc10448 }, +{ 0x10449, uc10449 }, { 0x1044A, uc1044A }, { 0x1044B, uc1044B }, { 0x1044C, uc1044C }, { 0x1044D, uc1044D }, { 0x1044E, uc1044E }, { 0x1044F, uc1044F }, +}; + +unsigned int *UpperCaseTransform::getUpperCase(unsigned int ch) +{ + if(ch < upperCaseDirectTableSize) { + return upperCaseDirectTable[ch]; + } + + // Binary search in the upperCaseTable table + unsigned int min = 0; + unsigned int max = upperCaseTableSize; + unsigned int middle; + int cmp; + + while(min < max) { + middle = (max + min) >> 1; + + cmp = upperCaseTable[middle].ch - ch; + if(cmp > 0) max = middle; + else if(cmp < 0) { + min = middle + 1; + } + else { + return upperCaseTable[middle].dest; + } + } + + return 0; +} diff --git a/src/utils/UTF8Str.cpp b/src/utils/UTF8Str.cpp new file mode 100644 index 00000000..623a5653 --- /dev/null +++ b/src/utils/UTF8Str.cpp @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: UTF8Str.cpp,v 1.7 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include + +UTF8Str::UTF8Str(const XMLCh* const toTranscode) +{ + if(toTranscode == 0) { + fUTF8Form = new XMLByte[1]; + fUTF8Form[0] = 0; + } + else { + XERCES_CPP_NAMESPACE_QUALIFIER XMLUTF8Transcoder t(0, 512); + size_t l = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(toTranscode); + const unsigned int needed = l * 3 + 1; // 3 bytes per XMLCh is the worst case, + '\0' + fUTF8Form = new XMLByte[needed]; + unsigned int charsEaten= 0; + t.transcodeTo(toTranscode, l+1, fUTF8Form, needed, charsEaten, XERCES_CPP_NAMESPACE_QUALIFIER XMLTranscoder::UnRep_Throw); + } +} diff --git a/src/utils/XMLChCompare.cpp b/src/utils/XMLChCompare.cpp new file mode 100644 index 00000000..74790127 --- /dev/null +++ b/src/utils/XMLChCompare.cpp @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XMLChCompare.cpp,v 1.7 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include + +bool QNameSort::operator() (const std::pair lhs, const std::pair rhs) const { + return XPath2Utils::equals(lhs.first, rhs.first) ? XERCES_CPP_NAMESPACE_QUALIFIER XMLString::compareString(lhs.second, rhs.second) < 0: XERCES_CPP_NAMESPACE_QUALIFIER XMLString::compareString(lhs.first, rhs.first) < 0; +} + +bool XMLChSort::operator() (const XMLCh* lhs, const XMLCh* rhs) const { + return XERCES_CPP_NAMESPACE_QUALIFIER XMLString::compareString(lhs, rhs) < 0; +} diff --git a/src/utils/XPath2NSUtils.cpp b/src/utils/XPath2NSUtils.cpp new file mode 100644 index 00000000..b3a29a41 --- /dev/null +++ b/src/utils/XPath2NSUtils.cpp @@ -0,0 +1,222 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XPath2NSUtils.cpp,v 1.7 2006/11/01 16:37:22 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include + +const XERCES_CPP_NAMESPACE_QUALIFIER DOMElement *XPath2NSUtils::returnOwnerElement(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node) +{ + if(!node == 0) { + //this is to ensure that we have an element node + const XERCES_CPP_NAMESPACE_QUALIFIER DOMElement *parent; + if(node->getNodeType() == XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ATTRIBUTE_NODE) { + parent = static_cast(node)->getOwnerElement(); + } + else if(node->getNodeType() != XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ELEMENT_NODE) { + parent = static_cast(node->getParentNode()); + } + else { + parent = static_cast(node); + } + + return parent; + } else { + return 0; + } +} + + +const XMLCh* XPath2NSUtils::getLocalName(const XMLCh* name) +{ + unsigned int len=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(name); + + for(unsigned int i = 0; i < len; i++) { + if(name[i] == XERCES_CPP_NAMESPACE_QUALIFIER chColon) { + return name+i+1; + } + } + return name; +} + +const XMLCh* XPath2NSUtils::getLocalName(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node) +{ + + const XMLCh* result = node->getLocalName(); + if(result == NULL) { + result = node->getNodeName(); + } + return result; +} + + +const XMLCh* XPath2NSUtils::getPrefix(const XMLCh* name, XPath2MemoryManager* memMgr) +{ + unsigned int len=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(name); + + for(unsigned int i = 0; i < len; i++) { + if(name[i] == XERCES_CPP_NAMESPACE_QUALIFIER chColon) { + return XPath2Utils::subString(name, 0, i, memMgr); + } + } + return XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString; +} + +const XMLCh* XPath2NSUtils::getPrefix(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node, + const DynamicContext* context) +{ + const XMLCh* result=node->getPrefix(); + + if(result == 0) { + result = context->getPrefixBoundToUri(node->getNamespaceURI()); + } + + return result; +} + +const XMLCh* XPath2NSUtils::qualifyName(const XMLCh* prefix, const XMLCh* name, XPath2MemoryManager* memMgr) +{ + if (prefix != NULL) { + XMLCh colon[2] = {XERCES_CPP_NAMESPACE_QUALIFIER chColon, XERCES_CPP_NAMESPACE_QUALIFIER chNull}; + return XPath2Utils::concatStrings(prefix, colon, name, memMgr); + } else { + return name; + } +} + +const XMLCh* XPath2NSUtils::qualifyName(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node, const DynamicContext* context) +{ + const XMLCh *prefix = XPath2NSUtils::getPrefix(node, context); + + if(prefix != 0 && *prefix!=0) { + XMLCh colon[2] = {XERCES_CPP_NAMESPACE_QUALIFIER chColon, XERCES_CPP_NAMESPACE_QUALIFIER chNull}; + return XPath2Utils::concatStrings(prefix, colon, getLocalName(node), context->getMemoryManager()); + } else { + return getLocalName(node); + } +} + +XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *XPath2NSUtils::getParent(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node) +{ + if(node->getNodeType() == XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ATTRIBUTE_NODE) { + return (static_cast(node))->getOwnerElement(); + } + else { + return node->getParentNode(); + } +} + +const XMLCh* XPath2NSUtils::getExpandedName(const XMLCh* namespaceURI, const XMLCh* name, XPath2MemoryManager* memMgr) +{ + XMLCh separator[2] = {XERCES_CPP_NAMESPACE_QUALIFIER chOpenAngle, XERCES_CPP_NAMESPACE_QUALIFIER chNull}; + return XPath2Utils::concatStrings(namespaceURI, separator, name, memMgr); +} + + +namespaceMapType XPath2NSUtils::createNamespaceMap(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *contextNode, XPath2MemoryManager* memMgr) +{ + namespaceMapType namespaceMap; + + //If this isn't an element, then return nothing + if(contextNode->getNodeType() != XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ELEMENT_NODE) { + return namespaceMap; + }//if + + //We always add the default namespace + namespaceMap[XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXMLString]=XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXMLURIName; + + const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *tmpNode = contextNode; + while(tmpNode != 0) { + //For each element, go through the attributes, and add any namespace bindings.. + addBindings(tmpNode, &namespaceMap, memMgr); + + tmpNode = tmpNode->getParentNode(); + }//while + + return namespaceMap; + +}//createNamespaceMap + + +std::vector< std::pair< XMLCh*, XMLCh*> > XPath2NSUtils::getBindingsForNode(XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *node) { + + std::vector< std::pair< XMLCh*, XMLCh*> > bindings; + + return bindings; + +} + +void XPath2NSUtils::addBindings(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *AttrNode, namespaceMapType *namespaceMap, XPath2MemoryManager* memMgr) +{ + //add in the prefix binding for this element + + const XMLCh* prefix = AttrNode->getPrefix(); + if(prefix != 0) { + namespaceMapType::iterator tmpIter = namespaceMap->find(prefix); + if(tmpIter == namespaceMap->end()) { + (*namespaceMap)[prefix] = AttrNode->getNamespaceURI(); + }//if + } + + + XERCES_CPP_NAMESPACE_QUALIFIER DOMNamedNodeMap *attrs = AttrNode->getAttributes(); + + if (attrs != 0) { + for (unsigned int cnt = 0; cnt < attrs->getLength(); cnt++) { + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *tmpAttr = attrs->item(cnt); + + //Check to see if this attribute starts with xmlns + const XMLCh* attrName = tmpAttr->getNodeName(); + + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::startsWith(attrName, XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXMLNSString) == false) { + continue; + }//if + + //Get uri + const XMLCh* uri = tmpAttr->getNodeValue(); + + //Figure out prefix + const XMLCh* prefix = 0; + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(attrName) != 5) { + //A prefix was given + + //If the name doesn't start with xmlns: (and its not xmlns) then skip it + //XXX: Is this necessary/allowed? + if(attrName[5] != XERCES_CPP_NAMESPACE_QUALIFIER chColon) { + continue; + }//if + + prefix = XPath2Utils::subString(attrName, 6, XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(attrName)-6, memMgr); + }//if + + //If the prefix wasn't empty, then the uri can't be empty + //In other words, consider the case of "" being a valid uri for a default binding + //when namespace 1.1 comes in this is not true!!!!REVISIT + if(prefix != 0 && uri == 0) { + continue; + }//if + + //Add namespace, if not already there / shadowed + namespaceMapType::iterator tmpIter = namespaceMap->find(prefix); + if(tmpIter == namespaceMap->end()) { + (*namespaceMap)[prefix] = uri; + }//if + }//for + }//if (attrs != 0) +}//addBindings diff --git a/src/utils/XPath2Utils.cpp b/src/utils/XPath2Utils.cpp new file mode 100644 index 00000000..a17efd52 --- /dev/null +++ b/src/utils/XPath2Utils.cpp @@ -0,0 +1,412 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XPath2Utils.cpp,v 1.14 2006/11/01 16:37:23 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include "../exceptions/MiscException.hpp" +#include +#include + +#include + +#if defined(WIN32) && !defined(__CYGWIN__) +#define snprintf _snprintf +#endif + +const XMLCh* XPath2Utils::escapeURI(const XMLCh* const str, bool escapeRes, XPath2MemoryManager* memMgr) +{ + + if(XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(str) == 0) { + return 0; + } + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer buf(1023, memMgr); + + const XMLCh *cptr; + + for (cptr = str; *cptr; cptr++) { + // here we compare 16-bit XMLCh's to zero-padded 8-bit chars, so it + // magically works + if ((*cptr >= 'A' && *cptr <= 'Z') || + (*cptr >= 'a' && *cptr <= 'z') || + (*cptr >= '0' && *cptr <= '9') || + *cptr == '%' || *cptr == '#' || + *cptr == '-' || *cptr == '_' || *cptr == '.' || + *cptr == '!' || *cptr == '~' || *cptr == '*' || + *cptr == '\''|| *cptr == '(' || *cptr == ')' || + (!escapeRes && + (*cptr == ';' || *cptr == '/' || *cptr == '?' || + *cptr == ':' || *cptr == '@' || *cptr == '&' || + *cptr == '=' || *cptr == '+' || *cptr == '$' || + *cptr == ',' || *cptr == '[' || *cptr == ']' ))) { + + buf.append(*cptr); + + } else { + + buf.append(X("%")); + // if the upper 8 bits of the XMLCh are less than 10 (covers all of 8-bit ascii) + if ((*cptr >> 4) < 10) + buf.append((XMLCh)('0' + (*cptr >> 4))); + else // covers extended ascii + buf.append((XMLCh)('A' - 10 + (*cptr >> 4))); + + // bitwise-and the 16-bit XMLCh with octal F, 11111111 + // we are checking the lower 8-bits + if ((*cptr & 0xF) < 10) + buf.append((XMLCh)('0' + (*cptr & 0xF))); + else + buf.append((XMLCh)('A' - 10 + (*cptr & 0xF))); + } + + }//for + + return memMgr->getPooledString(buf.getRawBuffer()); +} + +bool XPath2Utils::isValidURI(const XMLCh* const str, XPath2MemoryManager* memMgr) +{ + // XMLSchema specs say: "Spaces are, in principle, allowed in the lexical space of anyURI, however, + // their use is highly discouraged (unless they are encoded by %20)" + // Xerces complains if a space is found, so let's encode it + const XMLCh escSpace[]={ XERCES_CPP_NAMESPACE_QUALIFIER chPercent, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_2, XERCES_CPP_NAMESPACE_QUALIFIER chDigit_0, XERCES_CPP_NAMESPACE_QUALIFIER chNull }; + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer buff(1023, memMgr); + const XMLCh* pCursor=str; + while(*pCursor) + { + if(*pCursor==XERCES_CPP_NAMESPACE_QUALIFIER chSpace) + buff.append(escSpace); + else + buff.append(*pCursor); + pCursor++; + } + return XERCES_CPP_NAMESPACE_QUALIFIER XMLUri::isValidURI(true, buff.getRawBuffer()); +} + +const XMLCh* XPath2Utils::concatStrings(const XMLCh* src1, const XMLCh src, XPath2MemoryManager* memMgr) { + XMLCh dummy[2] = {src, XERCES_CPP_NAMESPACE_QUALIFIER chNull}; + return XPath2Utils::concatStrings(src1, dummy, memMgr); +} + +const XMLCh* XPath2Utils::concatStrings(const XMLCh* src1, const XMLCh* src2, XPath2MemoryManager* memMgr) { + + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer buffer(1023, memMgr); + buffer.set(src1); + buffer.append(src2); + + return memMgr->getPooledString(buffer.getRawBuffer()); +} + +const XMLCh* XPath2Utils::concatStrings(const XMLCh* src1, const XMLCh* src2, const XMLCh* src3, XPath2MemoryManager* memMgr) { + + XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer buffer(1023, memMgr); + buffer.set(src1); + buffer.append(src2); + buffer.append(src3); + + return memMgr->getPooledString(buffer.getRawBuffer()); +} + +const XMLCh* XPath2Utils::asStr(const XMLCh ch, XPath2MemoryManager* memMgr) { + + XMLCh newStr[2] = {ch, XERCES_CPP_NAMESPACE_QUALIFIER chNull}; + return memMgr->getPooledString(newStr); +} + +const XMLCh* XPath2Utils::subString(const XMLCh* src, unsigned int offset, unsigned int count, XPath2MemoryManager* memMgr) { + + if (src == 0) { + XQThrow2(MiscException,X("XPath2Utils:subString"),X("Cannot take substring of null string")); + } + + XMLCh *newStr = new XMLCh [ count + 1 ]; + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::subString(newStr, src, offset, offset + count); + const XMLCh* retval=memMgr->getPooledString(newStr); + delete[] newStr; + return retval; +} + +const XMLCh* XPath2Utils::deleteData( const XMLCh* const target, unsigned int offset, unsigned int count, XPath2MemoryManager* memMgr) { + + if (target == 0) { + return 0; + } + + unsigned int targetSize = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(target); + unsigned int newSize = targetSize - count; + AutoDelete stringGuard(new XMLCh [newSize + 1]); + XMLCh *newString = stringGuard; + + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::copyNString(newString, target, offset);// * sizeof(XMLCh)); + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::copyNString(newString + offset, target + offset + count, ( targetSize - offset - count));//*sizeof(XMLCh)); + newString[newSize] = 0; + const XMLCh* retval = memMgr->getPooledString(newString); + return retval; +} + +const XMLCh* XPath2Utils::toLower( const XMLCh* const target, XPath2MemoryManager* memMgr) { + XMLCh *newStr = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::replicate(target); + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::lowerCase(newStr); + const XMLCh* retval=memMgr->getPooledString(newStr); + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::release(&newStr); + return retval; +} + +const XMLCh* XPath2Utils::toUpper( const XMLCh* const target, XPath2MemoryManager* memMgr) { + XMLCh *newStr = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::replicate(target); + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::upperCase(newStr); + const XMLCh* retval=memMgr->getPooledString(newStr); + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::release(&newStr); + return retval; +} + +const XMLCh* XPath2Utils::toCollapsedWS(const XMLCh* const target, XPath2MemoryManager* memMgr) { + XMLCh *newStr = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::replicate(target); + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::collapseWS(newStr); + const XMLCh* retval=memMgr->getPooledString(newStr); + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::release(&newStr); + return retval; +} + +const XMLCh* XPath2Utils::normalizeEOL(const XMLCh* const src, XPath2MemoryManager* memMgr) { + int len=XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(src); + int j=0; + XMLCh* dst=(XMLCh*)memMgr->allocate((len+1)*sizeof(XMLCh*)); + // A.2.3 End-of-Line Handling + // For [XML 1.0] processing, all of the following must be translated to a single #xA character: + // 1. the two-character sequence #xD #xA + // 2. any #xD character that is not immediately followed by #xA. + for(int i=0;i XPath2Utils::getVal(const XMLCh* values, XPath2MemoryManager* memMgr){ + + std::vector valList; + bool munchWS = true; // munch initial WS + unsigned int start = 0; + + + /* XPath requires this bizarre WS separated splitting of the string, as the + string can hold many id's. */ + int valuesLen = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::stringLen(values); + + + + for(int i = 0; i < valuesLen; i++) { + switch(values[i]) { + case 0x0020: + case 0x0009: + case 0x000d: + case 0x000a: { + if(!munchWS) { + munchWS = true; + // Found the end of a value, so add it to a vector. + valList.push_back(subString(values, start, i-start, memMgr)); + } + break; + } + default: { + if(munchWS) { + //found the start of an ID + start = i; + munchWS = false; + } + } + + } + } + if(!munchWS) { + // Found the end of a value, so add it to the list of values. + valList.push_back(subString(values, start, valuesLen-start, memMgr)); + } + return valList; +} + +bool XPath2Utils::containsString(std::vector values, const XMLCh* val) { + for (std::vector::const_iterator it=values.begin();it!=values.end();it++) + if (XPath2Utils::equals(val, *it)) + return true; + return false; +} + +int XPath2Utils::indexNode(const XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *indexNode) +{ + + int index = -1; + + switch(indexNode->getNodeType()) { + + case XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ATTRIBUTE_NODE: + case XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::DOCUMENT_NODE: + index = 1; + break; + + case XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ELEMENT_NODE: { + const XMLCh* name = XPath2NSUtils::getLocalName( indexNode ); + const XMLCh* nspace = indexNode->getNamespaceURI(); + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *parent = indexNode->getParentNode(); + + if(parent == 0) { + return 1; // if the node nas no parent, it's index is one. + } + + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *child = parent->getFirstChild(); + assert(child != 0); + index = 1; + + while(child != indexNode) { + if(child->getNodeType() == XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ELEMENT_NODE + && XPath2Utils::equals(name, XPath2NSUtils::getLocalName( child ) ) + && XPath2Utils::equals(nspace, child->getNamespaceURI() ) ) { + index++; + } + child = child->getNextSibling(); + assert(child != 0); + } + break; + } + + case XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::TEXT_NODE: + case XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::COMMENT_NODE: { + short type = indexNode->getNodeType(); + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *parent = indexNode->getParentNode(); + if(parent == 0) { + return 1; // if a node has no parent, it's index is 1 + } + + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode *child = parent->getFirstChild(); + assert(child != 0); + index = 1; + + while(child != indexNode) { + if(child->getNodeType() == type) { + index++; + } + child = child->getNextSibling(); + assert(child != 0); + } + break; + } + default: + assert("n" == "Unhandled node type in XPath2Utils::indexNode"); + XQThrow2(MiscException,X("XPath2Utils::indexNode"), X("Unhandled node type")); + } + + + return index; +} + +/*static*/ void XPath2Utils::setElementType(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* pDoc, XERCES_CPP_NAMESPACE_QUALIFIER DOMElement *node, const XMLCh* uri, const XMLCh* name) +{ + XERCES_CPP_NAMESPACE_QUALIFIER DOMTypeInfoImpl* pInfo=new (pDoc) XERCES_CPP_NAMESPACE_QUALIFIER DOMTypeInfoImpl(uri,name); + pInfo->setNumericProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Validity,XERCES_CPP_NAMESPACE_QUALIFIER PSVIItem::VALIDITY_VALID); + ((XERCES_CPP_NAMESPACE_QUALIFIER DOMElementNSImpl*)node)->setTypeInfo(pInfo); +} + +/*static*/ void XPath2Utils::copyElementType(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* doc, XERCES_CPP_NAMESPACE_QUALIFIER DOMElement* destNode, const XERCES_CPP_NAMESPACE_QUALIFIER DOMElement* srcNode) +{ + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl* pDoc=(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl*)doc; + try + { + XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo* psviType=(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo*)const_cast(srcNode)->getInterface(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXercescInterfacePSVITypeInfo); + if(psviType && psviType->getNumericProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Validity)==XERCES_CPP_NAMESPACE_QUALIFIER PSVIItem::VALIDITY_VALID) + { + XERCES_CPP_NAMESPACE_QUALIFIER DOMTypeInfoImpl* pTypeInfo=new (pDoc) XERCES_CPP_NAMESPACE_QUALIFIER DOMTypeInfoImpl; + pTypeInfo->setNumericProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Validity, XERCES_CPP_NAMESPACE_QUALIFIER PSVIItem::VALIDITY_VALID); + pTypeInfo->setNumericProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Nil, psviType->getNumericProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Nil)); + pTypeInfo->setStringProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Type_Definition_Namespace, + pDoc->getPooledString(psviType->getStringProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Type_Definition_Namespace))); + pTypeInfo->setStringProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Type_Definition_Name, + pDoc->getPooledString(psviType->getStringProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Type_Definition_Name))); + pTypeInfo->setStringProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Member_Type_Definition_Namespace, + pDoc->getPooledString(psviType->getStringProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Member_Type_Definition_Namespace))); + pTypeInfo->setStringProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Member_Type_Definition_Name, + pDoc->getPooledString(psviType->getStringProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Member_Type_Definition_Name))); + ((XERCES_CPP_NAMESPACE_QUALIFIER DOMElementNSImpl*)destNode)->setTypeInfo(pTypeInfo); + } + } catch(XERCES_CPP_NAMESPACE_QUALIFIER DOMException&) { + } + XERCES_CPP_NAMESPACE_QUALIFIER DOMNamedNodeMap* pDestAttributes=destNode->getAttributes(); + XERCES_CPP_NAMESPACE_QUALIFIER DOMNamedNodeMap* pSrcAttributes=srcNode->getAttributes(); + for(XMLSize_t i=0;igetLength();i++) + { + XERCES_CPP_NAMESPACE_QUALIFIER DOMAttr* pSrcAttr=(XERCES_CPP_NAMESPACE_QUALIFIER DOMAttr*)pSrcAttributes->item(i); + XERCES_CPP_NAMESPACE_QUALIFIER DOMAttr* pDstAttr=(XERCES_CPP_NAMESPACE_QUALIFIER DOMAttr*)pDestAttributes->getNamedItemNS(pSrcAttr->getNamespaceURI(), pSrcAttr->getLocalName()); + if(pDstAttr!=NULL) + copyAttributeType(pDoc, pDstAttr, pSrcAttr); + } + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* pDestChild=destNode->getFirstChild(); + XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* pSrcChild=srcNode->getFirstChild(); + while(pDestChild!=NULL && pSrcChild!=NULL) + { + if(pDestChild->getNodeType()==XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ELEMENT_NODE && + pSrcChild->getNodeType()==XERCES_CPP_NAMESPACE_QUALIFIER DOMNode::ELEMENT_NODE) + { + copyElementType(pDoc, (XERCES_CPP_NAMESPACE_QUALIFIER DOMElement*)pDestChild, (XERCES_CPP_NAMESPACE_QUALIFIER DOMElement*)pSrcChild); + } + pDestChild=pDestChild->getNextSibling(); + pSrcChild=pSrcChild->getNextSibling(); + } +} + +/*static*/ void XPath2Utils::copyAttributeType(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* doc, XERCES_CPP_NAMESPACE_QUALIFIER DOMAttr* destNode, const XERCES_CPP_NAMESPACE_QUALIFIER DOMAttr* srcNode) +{ + XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl* pDoc=(XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl*)doc; + try + { + XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo* psviType=(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo*)const_cast(srcNode)->getInterface(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXercescInterfacePSVITypeInfo); + if(psviType && psviType->getNumericProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Validity)==XERCES_CPP_NAMESPACE_QUALIFIER PSVIItem::VALIDITY_VALID) + { + XERCES_CPP_NAMESPACE_QUALIFIER DOMTypeInfoImpl* pTypeInfo=new (pDoc) XERCES_CPP_NAMESPACE_QUALIFIER DOMTypeInfoImpl; + pTypeInfo->setNumericProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Validity, XERCES_CPP_NAMESPACE_QUALIFIER PSVIItem::VALIDITY_VALID); + pTypeInfo->setStringProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Type_Definition_Namespace, + pDoc->getPooledString(psviType->getStringProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Type_Definition_Namespace))); + pTypeInfo->setStringProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Type_Definition_Name, + pDoc->getPooledString(psviType->getStringProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Type_Definition_Name))); + pTypeInfo->setStringProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Member_Type_Definition_Namespace, + pDoc->getPooledString(psviType->getStringProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Member_Type_Definition_Namespace))); + pTypeInfo->setStringProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Member_Type_Definition_Name, + pDoc->getPooledString(psviType->getStringProperty(XERCES_CPP_NAMESPACE_QUALIFIER DOMPSVITypeInfo::PSVI_Member_Type_Definition_Name))); + ((XERCES_CPP_NAMESPACE_QUALIFIER DOMAttrImpl*)destNode)->setTypeInfo(pTypeInfo); + } + } catch(XERCES_CPP_NAMESPACE_QUALIFIER DOMException&) { + } +} diff --git a/src/utils/XQillaPlatformUtils.cpp b/src/utils/XQillaPlatformUtils.cpp new file mode 100644 index 00000000..3a6d7ce4 --- /dev/null +++ b/src/utils/XQillaPlatformUtils.cpp @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: XQillaPlatformUtils.cpp,v 1.9.2.1 2006/12/08 15:19:12 jpcs Exp $ + */ + +#include "../config/xqilla_config.h" + +#include +#include +#include +#include +#include +#include +#include + +#include "../dom-api/XQillaImplementation.hpp" +#include "DateUtils.hpp" + +#include +#include +#include + +XERCES_CPP_NAMESPACE_USE; + +static int gInitFlag = 0; + +void XQillaPlatformUtils::initialize(MemoryManager *memMgr) { + // Make sure we haven't already been initialized. Note that this is not + // thread safe and is not intended for that. + if(gInitFlag++ == 0) { + XMLPlatformUtils::Initialize(XMLUni::fgXercescDefaultLocale, 0, 0, memMgr, /*toInitStatics*/true); + XQillaImplementation::initialize(); + m_apm_mt_initialize(); + DateUtils::initialize(); + + // Expand the Xerces Built-in registry to include xs:anyAtomicType + DatatypeValidator* dv = new AnyAtomicTypeDatatypeValidator(); + dv->setTypeName(AnyAtomicType::fgDT_ANYATOMICTYPE_XERCESHASH); + DatatypeValidatorFactory::getBuiltInRegistry()-> + put((void*) AnyAtomicType::fgDT_ANYATOMICTYPE_XERCESHASH, dv); + } +} + +void XQillaPlatformUtils::terminate() { + if(gInitFlag == 0) { + return; + } + + if(--gInitFlag == 0) { + m_apm_free_all_mem_mt(); + DateUtils::terminate(); + m_apm_mt_terminate(); + XQillaImplementation::terminate(); + XMLPlatformUtils::Terminate(); + } +} + +void XQillaPlatformUtils::enableExtendedPrecision(bool bEnable) +{ + if(bEnable) + { + ATDecimalOrDerivedImpl::g_nSignificantDigits=50; + ATFloatOrDerivedImpl::g_nSignificantDigits=25; + ATDoubleOrDerivedImpl::g_nSignificantDigits=25; + } + else + { + ATDecimalOrDerivedImpl::g_nSignificantDigits=18; + ATFloatOrDerivedImpl::g_nSignificantDigits=7; + ATDoubleOrDerivedImpl::g_nSignificantDigits=16; + } +} diff --git a/src/utils/XStr.cpp b/src/utils/XStr.cpp new file mode 100644 index 00000000..25887416 --- /dev/null +++ b/src/utils/XStr.cpp @@ -0,0 +1,13 @@ +#include "../config/xqilla_config.h" +#include +#include + +XStr::XStr(const char* const toTranscode) +{ + fUnicodeForm = XERCES_CPP_NAMESPACE_QUALIFIER XMLString::transcode(toTranscode); +} + +XStr::~XStr() +{ + XERCES_CPP_NAMESPACE_QUALIFIER XMLString::release(&fUnicodeForm); +} diff --git a/src/xqts/TestSuiteParser.cpp b/src/xqts/TestSuiteParser.cpp new file mode 100644 index 00000000..df584014 --- /dev/null +++ b/src/xqts/TestSuiteParser.cpp @@ -0,0 +1,297 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: TestSuiteParser.cpp,v 1.9 2006/11/01 16:37:23 jpcs Exp $ + */ + +#ifdef _MSC_VER +#pragma warning(disable: 4786) +#endif + +#include +#include +#include + +#include + +#include +#include +#include + +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif +using namespace std; + +TestSuiteParser::TestSuiteParser(const string &pathToTestSuite, TestSuiteRunner *runner) + : m_runner(runner) +{ + string szXQTSLocation=string("file:///")+pathToTestSuite; + + for(string::iterator i=szXQTSLocation.begin();i!=szXQTSLocation.end();i++) { + if(*i==' ') { + i=szXQTSLocation.erase(i); + szXQTSLocation=szXQTSLocation.insert(i-szXQTSLocation.begin(),"%20"); + i=szXQTSLocation.begin(); + } + else if(*i=='\\') *i='/'; + } + + if(*(szXQTSLocation.end()-1)!='/') + szXQTSLocation+='/'; + + m_urlXQTSDirectory.setURL(X(szXQTSLocation.c_str())); + m_bReadingChars=false; +} + +void TestSuiteParser::run() +{ + SAX2XMLReader* parser=XMLReaderFactory::createXMLReader(); + try { + parser->setContentHandler(this); + parser->setErrorHandler(this); + XMLURL url(m_urlXQTSDirectory,"XQTSCatalog.xml"); + URLInputSource is(url); + parser->parse(is); + } + catch(const XMLException& e) { + cerr << "Error while reading test catalog: " << UTF8(e.getMessage()) << endl; + } + delete parser; +} + +void TestSuiteParser::error(const SAXParseException& exc) +{ + cerr << "ERROR parsing catalog: " << UTF8(exc.getMessage()) << endl; +} + +void TestSuiteParser::fatalError(const SAXParseException& exc) +{ + cerr << "FATAL ERROR parsing catalog: " << UTF8(exc.getMessage()) << endl; +} + +void TestSuiteParser::startElement +( + const XMLCh* const uri, + const XMLCh* const localname, + const XMLCh* const qname, + const Attributes& attributes +) +{ + static XMLCh g_szName[] = { chLatin_n, chLatin_a, chLatin_m, chLatin_e, chNull }; + static XMLCh g_szPath[] = { chLatin_F, chLatin_i, chLatin_l, chLatin_e, chLatin_P, chLatin_a, chLatin_t, chLatin_h, chNull }; + static XMLCh g_szVar[] = { chLatin_v, chLatin_a, chLatin_r, chLatin_i, chLatin_a, chLatin_b, chLatin_l, chLatin_e, chNull }; + static XMLCh g_szDotXQ[] = { chPeriod, chLatin_x, chLatin_q, chNull }; + static XMLCh g_szComp[] = { chLatin_c, chLatin_o, chLatin_m, chLatin_p, chLatin_a, chLatin_r, chLatin_e, chNull }; + string szName=UTF8(localname); + string szURI=UTF8(uri); + if(szURI=="http://www.w3.org/2005/02/query-test-XQTSCatalog") + { + if(szName=="test-suite") { + m_runner->getResultListener()->reportVersion(UTF8(attributes.getValue(X("version")))); + + m_urlXQTSQueriesDirectory.setURL(m_urlXQTSDirectory, attributes.getValue(X("XQueryQueryOffsetPath"))); + m_urlXQTSResultsDirectory.setURL(m_urlXQTSDirectory, attributes.getValue(X("ResultOffsetPath"))); + } + else if(szName=="test-group") { + m_runner->startTestGroup(UTF8(attributes.getValue(g_szName))); + } + else if(szName=="test-case") + { + m_testCase.name = UTF8(attributes.getValue(g_szName)); + m_testCase.queryURL = ""; + m_testCase.contextItem = ""; + m_testCase.defaultCollection = ""; + m_testCase.inputURIVars.clear(); + m_testCase.inputVars.clear(); + m_testCase.extraVars.clear(); + m_testCase.expectedErrors.clear(); + m_testCase.outputFiles.clear(); + m_testCase.moduleFiles.clear(); + + m_szVariableBoundToInput=m_szCompareMethod=""; + m_urlQuery=XMLURL(); + XMLBuffer buff; + buff.set(attributes.getValue(g_szPath)); + buff.append('/'); + m_urlBasePath.setURL(m_urlXQTSQueriesDirectory, buff.getRawBuffer()); + m_urlBasePathReferenceFiles.setURL(m_urlXQTSResultsDirectory, buff.getRawBuffer()); + } + else if(szName=="query") + { + XMLBuffer buff; + const XMLCh* name=attributes.getValue(g_szName); + buff.set(name); + if(!XMLString::endsWith(name,g_szDotXQ)) + buff.append(g_szDotXQ); + m_urlQuery.setURL(m_urlBasePath,buff.getRawBuffer()); + m_testCase.queryURL = UTF8(m_urlQuery.getURLText()); + + Janitor stream((BinFileInputStream*)URLInputSource(m_urlQuery).makeStream()); + unsigned int dwSize=stream->getSize(); + m_testCase.query.resize(dwSize); + stream->readBytes((XMLByte*)m_testCase.query.c_str(), dwSize); + } + else if(szName=="input-query") + { + XMLBuffer buff; + const XMLCh* name=attributes.getValue(g_szName); + buff.set(name); + if(!XMLString::endsWith(name,g_szDotXQ)) + buff.append(g_szDotXQ); + XMLURL urlQuery(m_urlBasePath,buff.getRawBuffer()); + string varQuery = UTF8(urlQuery.getURLText()); + + m_testCase.extraVars[UTF8(attributes.getValue(g_szVar))]=varQuery; + } + else if(szName=="input-file") + { + m_bReadingChars=true; + m_szChars=""; + m_szVariableBoundToInput=UTF8(attributes.getValue(g_szVar)); + } + else if(szName=="input-URI") + { + m_bReadingChars=true; + m_szChars=""; + m_szVariableBoundToInput=UTF8(attributes.getValue(g_szVar)); + } + else if(szName=="contextItem") + { + m_bReadingChars=true; + m_szChars=""; + } + else if(szName=="defaultCollection") + { + m_bReadingChars=true; + m_szChars=""; + } + else if(szName=="output-file") + { + m_bReadingChars=true; + m_szChars=""; + m_szCompareMethod=UTF8(attributes.getValue(g_szComp)); + } + else if(szName=="expected-error") + { + m_bReadingChars=true; + m_szChars=""; + } + else if(szName=="source") { + XMLURL realFile(m_urlXQTSDirectory, attributes.getValue(X("FileName"))); + m_runner->addSource(UTF8(attributes.getValue(X("ID"))), UTF8(realFile.getURLText()), UTF8(attributes.getValue(X("schema")))); + } + else if(szName=="schema") { + XMLURL realFile(m_urlXQTSDirectory, attributes.getValue(X("FileName"))); + m_runner->addSchema(UTF8(attributes.getValue(X("ID"))), UTF8(realFile.getURLText()), UTF8(attributes.getValue(X("uri")))); + } + else if(szName=="module") { + if(attributes.getValue(X("FileName"))!=NULL) + { + XMLURL realFile(m_urlXQTSDirectory, attributes.getValue(X("FileName"))); + m_runner->addModule(UTF8(attributes.getValue(X("ID"))), UTF8(realFile.getURLText())); + } + else + { + m_bReadingChars=true; + m_szChars=""; + m_szNamespace=UTF8(attributes.getValue(X("namespace"))); + } + } + else if(szName=="collection") { + m_szCollectionID = UTF8(attributes.getValue(X("ID"))); + } + else if(!m_szCollectionID.empty() && szName=="input-document") { + m_bReadingChars=true; + m_szChars=""; + } + } +} + +void TestSuiteParser::characters +( + const XMLCh* const chars + , const unsigned int length +) +{ + XMLBuffer buff; + buff.set(chars,length); + if(m_bReadingChars) + m_szChars+=UTF8(buff.getRawBuffer()); +} + +void TestSuiteParser::endElement +( + const XMLCh* const uri, + const XMLCh* const localname, + const XMLCh* const qname +) +{ + string szName=UTF8(localname); + string szURI=UTF8(uri); + if(szURI=="http://www.w3.org/2005/02/query-test-XQTSCatalog") + { + if(szName == "test-group") { + m_runner->endTestGroup(); + } + else if(szName == "test-case") { + m_runner->runTestCase(m_testCase); + } + else if(szName == "input-file") + { + m_bReadingChars=false; + m_testCase.inputVars[m_szVariableBoundToInput]=m_szChars; + m_szVariableBoundToInput=""; + } + else if(szName=="input-URI") + { + m_bReadingChars=false; + m_testCase.inputURIVars[m_szVariableBoundToInput]=m_szChars; + m_szVariableBoundToInput=""; + } + else if(szName=="contextItem") + { + m_bReadingChars=false; + m_testCase.contextItem=m_szChars; + } + else if(szName=="defaultCollection") + { + m_bReadingChars=false; + m_testCase.defaultCollection=m_szChars; + } + else if(szName == "output-file") + { + m_bReadingChars=false; + m_szChars=UTF8(XMLURL(m_urlBasePathReferenceFiles, m_szChars.c_str()).getURLText()); + m_testCase.outputFiles[m_szChars]=m_szCompareMethod; + m_szCompareMethod=""; + } + else if(szName == "expected-error") + { + m_bReadingChars=false; + m_testCase.expectedErrors.push_back(m_szChars); + } + else if(szName == "module") + { + m_bReadingChars=false; + m_testCase.moduleFiles.push_back(std::pair(m_szNamespace, m_szChars)); + } + else if(szName=="collection") { + m_szCollectionID = ""; + } + else if(!m_szCollectionID.empty() && szName=="input-document") { + m_bReadingChars=false; + m_runner->addCollection(m_szCollectionID, m_szChars); + } + } +} diff --git a/src/xqts/TestSuiteResultListener.cpp b/src/xqts/TestSuiteResultListener.cpp new file mode 100644 index 00000000..68f60a93 --- /dev/null +++ b/src/xqts/TestSuiteResultListener.cpp @@ -0,0 +1,647 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: TestSuiteResultListener.cpp,v 1.14 2006/11/01 16:37:23 jpcs Exp $ + */ +#ifdef _MSC_VER +#pragma warning(disable: 4786) +#endif + + +#include +#include + +#include +#include +#include +#ifdef _MSC_VER +#define snprintf _snprintf +#endif + +#include +#include +#include +#include + +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif +using namespace std; + +KnownErrorChecker::KnownErrorChecker(TestSuiteResultListener *results) + : results_(results) +{ +} + +void KnownErrorChecker::startTestGroup(const std::string &name) +{ + results_->startTestGroup(name); +} + +void KnownErrorChecker::endTestGroup() +{ + results_->endTestGroup(); +} + +void KnownErrorChecker::reportPass(const TestCase &testCase, const string &comment) +{ + map::iterator i = errors_.find(testCase.name); + if(i != errors_.end() && i->second.reason != "inspect") { + nowPass_.push_back(testCase.name); + errors_.erase(i); + } + + results_->reportPass(testCase, comment); +} + +void KnownErrorChecker::reportInspect(const TestCase &testCase, const string &actualResult, + const std::list &expectedResult, const string &comment) +{ + string newComment = comment; + map::iterator i = errors_.find(testCase.name); + if(i != errors_.end()) { + if(i->second.action == "skip") { + results_->reportSkip(testCase, i->second.comment); + return; + } + else if(i->second.action == "pass") { + results_->reportPass(testCase, i->second.comment); + return; + } + else { + newComment = i->second.comment; + } + } + errors_[testCase.name].reason = "inspect"; + + results_->reportInspect(testCase, actualResult, expectedResult, newComment); +} + +void KnownErrorChecker::reportSkip(const TestCase &testCase, const std::string &comment) +{ + results_->reportSkip(testCase, comment); +} + +void KnownErrorChecker::reportFail(const TestCase &testCase, const string &actualResult, + const std::list &expectedResult, const string &comment) +{ + string newComment = comment; + map::iterator i = errors_.find(testCase.name); + if(i == errors_.end()) { + nowFail_.push_back(testCase.name); + } + else if(i->second.action == "skip") { + results_->reportSkip(testCase, i->second.comment); + return; + } + else if(i->second.action == "pass") { + results_->reportPass(testCase, i->second.comment); + return; + } + else { + newComment = i->second.comment; + } + errors_[testCase.name].reason = "result failure"; + + results_->reportFail(testCase, actualResult, expectedResult, newComment); +} + +void KnownErrorChecker::reportFailNoError(const TestCase &testCase, const string &actualResult, + const string &comment) +{ + string newComment = comment; + map::iterator i = errors_.find(testCase.name); + if(i == errors_.end()) { + nowFail_.push_back(testCase.name); + } + else if(i->second.action == "skip") { + results_->reportSkip(testCase, i->second.comment); + return; + } + else if(i->second.action == "pass") { + results_->reportPass(testCase, i->second.comment); + return; + } + else { + newComment = i->second.comment; + } + errors_[testCase.name].reason = "no error failure"; + + results_->reportFailNoError(testCase, actualResult, newComment); +} + +void KnownErrorChecker::reportFailUnexpectedError(const TestCase &testCase, const string &unexpectedError, + const string &comment) +{ + string newComment = comment; + map::iterator i = errors_.find(testCase.name); + if(i == errors_.end()) { + nowFail_.push_back(testCase.name); + } + else if(i->second.action == "skip") { + results_->reportSkip(testCase, i->second.comment); + return; + } + else if(i->second.action == "pass") { + results_->reportPass(testCase, i->second.comment); + return; + } + else { + newComment = i->second.comment; + } + errors_[testCase.name].reason = "error failure"; + + results_->reportFailUnexpectedError(testCase, unexpectedError, newComment); +} + +bool KnownErrorChecker::printReport() const +{ + if(!nowFail_.empty() || !nowPass_.empty()) { + cout << "************************************************************************" << endl; + if(!nowFail_.empty()) { + cout << nowFail_.size() << " unexpected failures:" << endl; + for(vector::const_iterator i = nowFail_.begin(); i != nowFail_.end(); ++i) { + cout << "\t" << *i << endl; + } + } + + if(!nowPass_.empty()) { + cout << nowPass_.size() << " unexpected passes:" << endl; + for(vector::const_iterator j = nowPass_.begin(); j != nowPass_.end(); ++j) { + cout << "\t" << *j << endl; + } + } + } + + return nowFail_.empty(); +} + +class ErrorFileHandler : public HandlerBase +{ +public: + ErrorFileHandler(map &errors) + : errors_(errors) {} + + virtual void startElement(const XMLCh* const name, AttributeList &attributes) + { + string szName = UTF8(name); + if(szName == "error") { + KnownErrorChecker::Error &error = errors_[UTF8(attributes.getValue("id"))]; + error.reason = UTF8(attributes.getValue("reason")); + error.comment = UTF8(attributes.getValue("comment")); + error.action = UTF8(attributes.getValue("action")); + } + } + +private: + map &errors_; +}; + + +bool KnownErrorChecker::loadErrors(const std::string &errorFile) +{ + try { + SAXParser parser; + ErrorFileHandler handler(errors_); + parser.setDocumentHandler(&handler); + LocalFileInputSource is(X(errorFile.c_str())); + parser.parse(is); + } + catch(const XMLException& e) { + cout << "Error while reading error file: " << UTF8(e.getMessage()) << endl; + return false; + } + + return true; +} + +bool KnownErrorChecker::saveErrors(const std::string &errorFile) const +{ + ofstream file(errorFile.c_str()); + if(!file.is_open()) return false; + + file << "" << endl; + + for(map::const_iterator i = errors_.begin(); + i != errors_.end(); ++i) { + file << " first + << "\" reason=\"" << i->second.reason << "\""; + + if(i->second.action != "") + file << " action=\"" << i->second.action << "\""; + + if(i->second.comment != "") + file << " comment=\"" << i->second.comment << "\""; + + file << "/>" << endl; + } + + file << "" << endl; + + file.close(); + + return true; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +ConsoleResultListener::ConsoleResultListener() + : m_nTotalTests(0), + m_nPassedTests(0), + m_nSkippedTests(0), + m_nInspectTests(0), + testDepth_(0), + needNewline_(false) +{ +} + +void ConsoleResultListener::startTestGroup(const string &name) +{ + if(needNewline_) cout << endl; + + string indent(testDepth_ * 2, ' '); + cout << indent << name << ": " << flush; + ++testDepth_; + needNewline_ = true; + + if(m_szFullTestName != "") + m_szFullTestName += ":"; + m_szFullTestName += name; +} + +void ConsoleResultListener::endTestGroup() +{ + if(needNewline_) cout << endl; + --testDepth_; + needNewline_ = false; + + int nColonPos = m_szFullTestName.find_last_of(":"); + if(nColonPos != -1) + m_szFullTestName = string(m_szFullTestName.c_str(), nColonPos); + else + m_szFullTestName = ""; +} + +void ConsoleResultListener::reportPass(const TestCase &testCase, const string &comment) +{ + ++m_nTotalTests; + ++m_nPassedTests; + + cout << "." << flush; +} + +void ConsoleResultListener::reportInspect(const TestCase &testCase, const string &actualResult, + const std::list &expectedResult, const string &comment) +{ + ++m_nTotalTests; + ++m_nInspectTests; + + cout << "," << flush; + + errorStream_ << "************************************************************************" << endl; + errorStream_ << "* For inspection:" << endl; + testCaseToErrorStream(testCase); + errorStream_ << "********** Actual result: **********" << endl; + errorStream_ << actualResult << endl;; + errorStream_ << endl; + for(std::list::const_iterator it=expectedResult.begin();it!=expectedResult.end();it++) + { + errorStream_ << "********** Expected result: **********" << endl;; + errorStream_ << *it << endl; + errorStream_ << endl; + } +} + +void ConsoleResultListener::reportSkip(const TestCase &testCase, const std::string &comment) +{ + ++m_nTotalTests; + ++m_nSkippedTests; + + cout << "^" << flush; +} + +void ConsoleResultListener::reportFail(const TestCase &testCase, const string &actualResult, + const std::list &expectedResult, const string &comment) +{ + ++m_nTotalTests; + + cout << "!" << flush; + + errorStream_ << "************************************************************************" << endl; + testCaseToErrorStream(testCase); + errorStream_ << "********** Actual result: **********" << endl; + errorStream_ << actualResult << endl;; + errorStream_ << endl; + for(std::list::const_iterator it=expectedResult.begin();it!=expectedResult.end();it++) + { + errorStream_ << "********** Expected result: **********" << endl;; + errorStream_ << *it << endl; + errorStream_ << endl; + } +} + +void ConsoleResultListener::reportFailNoError(const TestCase &testCase, const string &actualResult, + const string &comment) +{ + ++m_nTotalTests; + + cout << "!" << flush; + + errorStream_ << "************************************************************************" << endl; + testCaseToErrorStream(testCase); + errorStream_ << "********** Actual result: **********" << endl; + errorStream_ << actualResult << endl;; + errorStream_ << endl; +} + +void ConsoleResultListener::reportFailUnexpectedError(const TestCase &testCase, const string &unexpectedError, + const string &comment) +{ + ++m_nTotalTests; + + cout << "!" << flush; + + errorStream_ << "************************************************************************" << endl; + testCaseToErrorStream(testCase); + errorStream_ << "********** Actual error: **********" << endl; + errorStream_ << unexpectedError << endl;; + errorStream_ << endl; +} + +bool ConsoleResultListener::printReport() const +{ + cout << "************************************************************************" << endl; + cout << m_nTotalTests << " Tests, " + << m_nPassedTests << " passed, " + << (m_nTotalTests - m_nPassedTests - m_nSkippedTests - m_nInspectTests) << " failed, " + << m_nSkippedTests << " skipped, " + << m_nInspectTests << " for inspection"; + cout << " (" << ((float)m_nPassedTests)/(m_nTotalTests-m_nSkippedTests-m_nInspectTests)*100 << "%)" << endl; + + cerr << errorStream_.str(); + + return (m_nTotalTests - m_nPassedTests - m_nSkippedTests - m_nInspectTests) == 0; +} + +void ConsoleResultListener::testCaseToErrorStream(const TestCase &testCase) +{ + errorStream_ << "* Test-case '" << m_szFullTestName << ":" << testCase.name << "':" << endl; + errorStream_ << "* Query URL: " << testCase.queryURL << endl; + if(!testCase.contextItem.empty()) + errorStream_ << "* Context Item: " << testCase.contextItem << endl; + if(!testCase.defaultCollection.empty()) + errorStream_ << "* Default collection: " << testCase.defaultCollection << endl; + std::map::const_iterator i; + std::list >::const_iterator j; + for(i = testCase.inputVars.begin(); i != testCase.inputVars.end(); ++i) { + errorStream_ << "* Input: " << i->first << " -> " << i->second << endl; + } + + for(i = testCase.inputURIVars.begin(); i != testCase.inputURIVars.end(); ++i) { + errorStream_ << "* Input URI: " << i->first << " -> " << i->second << endl; + } + + for(i = testCase.extraVars.begin(); i != testCase.extraVars.end(); ++i) { + errorStream_ << "* Variable: " << i->first << " -> " << i->second << endl; + } + + for(j = testCase.moduleFiles.begin(); j != testCase.moduleFiles.end(); ++j) { + errorStream_ << "* Module: " << j->first << " -> " << j->second << endl; + } + + for(i = testCase.outputFiles.begin(); i != testCase.outputFiles.end(); ++i) { + errorStream_ << "* Output: " << i->second << " -> " << i->first << endl; + } + + if(!testCase.expectedErrors.empty()) { + errorStream_ << "* Errors:"; + for(std::list::const_iterator k = testCase.expectedErrors.begin(); + k != testCase.expectedErrors.end(); ++k) { + errorStream_ << " " << *k; + } + errorStream_ << endl; + } + + errorStream_ << endl; + errorStream_ << "********** Query: **********" << endl; + errorStream_ << testCase.query << endl; + errorStream_ << endl; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +XMLReportResultListener::XMLReportResultListener() + : anonymous_(false) +{ +} + +void XMLReportResultListener::startTestGroup(const std::string &name) +{ +} + +void XMLReportResultListener::endTestGroup() +{ +} + +void XMLReportResultListener::reportPass(const TestCase &testCase, const string &comment) +{ + outputStream_ << " " << endl; +} + +void XMLReportResultListener::reportInspect(const TestCase &testCase, const std::string &actualResult, + const std::list &expectedResult, const string &comment) +{ + outputStream_ << " " << endl; +} + +void XMLReportResultListener::reportSkip(const TestCase &testCase, const std::string &comment) +{ + outputStream_ << " " << endl; +} + +void XMLReportResultListener::reportFail(const TestCase &testCase, const std::string &actualResult, + const std::list &expectedResult, const string &comment) +{ + outputStream_ << " " << endl; +} + +void XMLReportResultListener::reportFailNoError(const TestCase &testCase, const std::string &actualResult, + const string &comment) +{ + outputStream_ << " " << endl; +} + +void XMLReportResultListener::reportFailUnexpectedError(const TestCase &testCase, const std::string &unexpectedError, + const string &comment) +{ + outputStream_ << " " << endl; +} + +void XMLReportResultListener::setImplementation(const std::string &name, const std::string &version, const std::string &description) +{ + implName_ = name; + implVersion_ = version; + implDescription_ = description; +} + +void XMLReportResultListener::setOrganization(const std::string &name, const std::string &website) +{ + orgName_ = name; + orgWebsite_ = website; +} + +void XMLReportResultListener::setSubmittor(const std::string &name, const std::string &email) +{ + submittorName_ = name; + submittorEmail_ = email; +} + +void XMLReportResultListener::setTestRun(const std::string &transformation, const std::string &comments) +{ + testTransformation_ = transformation; + testComments_ = comments; +} + +void XMLReportResultListener::setAnonymous(bool anon) +{ + anonymous_ = anon; +} + +void XMLReportResultListener::addImplementationDefinedItem(const std::string &name, const std::string &value) +{ + implDefinedItems_[name] = value; +} + +void XMLReportResultListener::addFeature(const std::string &name, bool supported) +{ + features_[name] = supported; +} + +void XMLReportResultListener::addContextProperty(const std::string &name, const std::string &contextType, const std::string &value) +{ + contextProperties_[name].first = contextType; + contextProperties_[name].second = value; +} + +void XMLReportResultListener::printReport() const +{ + cout << "" << endl; + cout << endl; + cout << " " << endl; + cout << endl; + cout << " " << endl; + cout << endl; + cout << " " << endl; + cout << endl; + if(implDescription_ != "") { + cout << " " << implDescription_ << "" << endl; + cout << endl; + } + + if(!implDefinedItems_.empty()) { + cout << " " << endl; + for(map::const_iterator i = implDefinedItems_.begin(); i != implDefinedItems_.end(); ++i) { + cout << " first << "\" value=\"" << i->second << "\"/>" << endl; + } + cout << " " << endl; + cout << endl; + } + + if(!features_.empty()) { + cout << " " << endl; + for(map::const_iterator i = features_.begin(); i != features_.end(); ++i) { + cout << " first << "\" supported=\"" << (i->second ? "true" : "false") << "\"/>" << endl; + } + cout << " " << endl; + cout << endl; + } + + if(!contextProperties_.empty()) { + cout << " " << endl; + for(map >::const_iterator i = contextProperties_.begin(); i != contextProperties_.end(); ++i) { + cout << " first << "\" context-type=\"" << i->second.first << "\" value=\"" << i->second.second << "\"/>" << endl; + } + cout << " " << endl; + cout << endl; + } + + cout << " " << endl; + cout << endl; + cout << " XQuery" << endl; + cout << endl; + + time_t currentTime = ::time(0); + struct tm *curLocalDate = ::localtime(¤tTime); + char szDate[256]; + snprintf(szDate, 256,"%04d-%02d-%02d",curLocalDate->tm_year+1900, curLocalDate->tm_mon+1, curLocalDate->tm_mday); + + cout << " " << endl; + cout << " " << endl; + if(testTransformation_ != "") + cout << " " << testTransformation_ << "" << endl; + cout << "

XML and fragment comparisons are performed by serializing the results,"; + cout << " re-parsing them, and using a custom deep-equal like function. This function currently ignores"; + cout << " any text nodes that consist entirely of whitespace.

" << endl; + if(testComments_ != "") + cout << " " << testComments_ << "" << endl; + cout << "
" << endl; + cout << endl; + cout << outputStream_.str(); + cout << endl; + cout << "
" << endl; +} diff --git a/src/xqts/TestSuiteRunner.cpp b/src/xqts/TestSuiteRunner.cpp new file mode 100644 index 00000000..6f387c3a --- /dev/null +++ b/src/xqts/TestSuiteRunner.cpp @@ -0,0 +1,279 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: TestSuiteRunner.cpp,v 1.8 2006/11/01 16:37:23 jpcs Exp $ + */ + +#ifdef _MSC_VER +#pragma warning(disable: 4786) +#endif + +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif +using namespace std; + +string loadExpectedResult(const string &file); +bool compareNodes(DOMNode* node1, DOMNode* node2); + +void TestSuiteRunner::testResults(const TestCase &testCase, const std::string &xmlResult) const +{ + if(testCase.outputFiles.empty() && !testCase.expectedErrors.empty()) { + m_results->reportFailNoError(testCase, xmlResult, ""); + } + else { + bool passed = false; + std::string compareMethod, outputResult; + std::list allExpectedResults; + for(std::map::const_iterator i=testCase.outputFiles.begin();i!=testCase.outputFiles.end();i++) { + compareMethod=(*i).second; + string expectedResult = loadExpectedResult((*i).first); + + if(compareMethod=="Text" || compareMethod=="Fragment" || compareMethod=="XML") { + outputResult = xmlResult; + if(compareMethod=="Text" || compareMethod=="Fragment") { + expectedResult=""+expectedResult+""; + outputResult=""+outputResult+""; + } + // force XML 1.1 parsing + outputResult = "" + outputResult; + expectedResult = "" + expectedResult; + + try { + XercesDOMParser parser; + parser.setDoNamespaces(true); + + MemBufInputSource memSrc1((XMLByte*)outputResult.c_str(), outputResult.size(), "", false); + parser.parse(memSrc1); + DOMDocument* doc1 = parser.getDocument(); + + MemBufInputSource memSrc2((XMLByte*)expectedResult.c_str(), expectedResult.size(), "", false); + parser.parse(memSrc2); + DOMDocument* doc2 = parser.getDocument(); + passed = compareNodes(doc1, doc2); + } + catch(...) {} + } + else if(compareMethod == "Inspect") { + // Try if they match + if(expectedResult==xmlResult) + passed=true; + } + else { + // TODO + cout << "Test-case '" << testCase.name << "': Unsupported comparison method " << compareMethod << endl; + } + allExpectedResults.push_back(expectedResult); + if(passed) break; + } + + if(passed) { + m_results->reportPass(testCase, ""); + } + else if(compareMethod == "Inspect") { + m_results->reportInspect(testCase, xmlResult, allExpectedResults, ""); + } + else { + m_results->reportFail(testCase, outputResult, allExpectedResults, ""); + } + } +} + +void TestSuiteRunner::testErrors(const TestCase &testCase, const std::string &actualError) const +{ + if(testCase.expectedErrors.empty()) { + m_results->reportFailUnexpectedError(testCase, actualError, ""); + } + else { + bool bFound = false; + for(list::const_iterator i=testCase.expectedErrors.begin();i!=testCase.expectedErrors.end();i++) { + if(*i=="*" || actualError.find(*i) != string::npos) { + bFound = true; + break; + } + } + + if(bFound) { + m_results->reportPass(testCase, ""); + } + else { + m_results->reportFailUnexpectedError(testCase, actualError, ""); + } + } +} + +string loadExpectedResult(const string &file) { + string expectedResult; + + Janitor stream((BinFileInputStream*)URLInputSource(file.c_str()).makeStream()); + unsigned int dwSize=stream->getSize(); + expectedResult.resize(dwSize); + stream->readBytes((XMLByte*)expectedResult.c_str(), dwSize); + if(dwSize>3 && + ((unsigned char)expectedResult[0])==0xEF && + ((unsigned char)expectedResult[1])==0xBB && + ((unsigned char)expectedResult[2])==0xBF) + expectedResult.erase(0,3); + + for(string::iterator c=expectedResult.begin();c!=expectedResult.end();c++) + if(*c==0xD) + c=expectedResult.erase(c)-1; + while(expectedResult.size()>0 && expectedResult[expectedResult.size()-1]==0xA) + expectedResult.erase(expectedResult.size()-1); + + return expectedResult; +} + +bool isIgnorableWS(DOMNode* node) +{ + if(node!=NULL && + node->getNodeType()==DOMNode::TEXT_NODE && + XMLString::isAllWhiteSpace(node->getNodeValue()) && + (node->getPreviousSibling()==NULL || (node->getPreviousSibling()!=NULL && + ( + node->getPreviousSibling()->getNodeType()==DOMNode::ELEMENT_NODE || + node->getPreviousSibling()->getNodeType()==DOMNode::PROCESSING_INSTRUCTION_NODE || + node->getPreviousSibling()->getNodeType()==DOMNode::COMMENT_NODE + ) + )) && + (node->getNextSibling()==NULL || (node->getNextSibling()!=NULL && + ( + node->getNextSibling()->getNodeType()==DOMNode::ELEMENT_NODE || + node->getNextSibling()->getNodeType()==DOMNode::PROCESSING_INSTRUCTION_NODE || + node->getNextSibling()->getNodeType()==DOMNode::COMMENT_NODE + ) + ))) + return true; + return false; + } + +bool compareNodes(DOMNode* node1, DOMNode* node2) +{ + if(node1->getNodeType()!=node2->getNodeType()) + { + //TRACE(_T("node type %d (%s value %s) != node type %d (%s value %s)\n"),node1->getNodeType(), node1->getNodeName(), node1->getNodeValue(), node2->getNodeType(), node2->getNodeName(), node2->getNodeValue()); + return false; + } + if(node1->hasChildNodes() != node2->hasChildNodes()) + { + //TRACE(_T("node %s has %d children != node %s has %d children\n"),node1->getNodeName(), node1->hasChildNodes(), node2->getNodeName(), node2->hasChildNodes()); + return false; + } + if(node1->getNodeType()==DOMNode::ELEMENT_NODE) + { + DOMElement* e1=(DOMElement*)node1; + DOMElement* e2=(DOMElement*)node2; + if(!XMLString::equals(e1->getNamespaceURI(), e2->getNamespaceURI())) + { + //TRACE(_T("node %s namespace %s != node %s namespace %s\n"),e1->getNodeName(), e1->getNamespaceURI(), e2->getNodeName(), e2->getNamespaceURI()); + return false; + } + if(!XMLString::equals(e1->getLocalName(), e2->getLocalName())) + { + //TRACE(_T("node %s local part %s != node %s local part %s\n"),e1->getNodeName(), e1->getLocalName(), e2->getNodeName(), e2->getLocalName()); + return false; + } + DOMNamedNodeMap* map1=e1->getAttributes(); + DOMNamedNodeMap* map2=e2->getAttributes(); + // remove namespace nodes + unsigned int i; + for(i=0;igetLength();i++) + { + if(XMLString::equals(map1->item(i)->getNamespaceURI(),XMLUni::fgXMLNSURIName)) + { + map1->removeNamedItemNS(map1->item(i)->getNamespaceURI(), map1->item(i)->getLocalName()); + i--; + } + } + for(i=0;igetLength();i++) + { + if(XMLString::equals(map2->item(i)->getNamespaceURI(),XMLUni::fgXMLNSURIName)) + { + map2->removeNamedItemNS(map2->item(i)->getNamespaceURI(), map2->item(i)->getLocalName()); + i--; + } + } + if(map1->getLength()!=map2->getLength()) + return false; + for(i=0;igetLength();i++) + { + DOMNode* a1=map1->item(i); + DOMNode* a2=map2->getNamedItemNS(a1->getNamespaceURI(),a1->getLocalName()); + if(a2==NULL) + { + //TRACE(_T("node %s has attribute {%s}%s != node %s hasn't\n"),node1->getNodeName(), a1->getNamespaceURI(), a1->getLocalName(), node2->getNodeName()); + return false; + } + if(!compareNodes(a1,a2)) + return false; + } + } + else + { + if(!XMLString::equals(node1->getNodeName(),node2->getNodeName())) + { + //TRACE(_T("node %s != node %s\n"), node1->getNodeValue(), node2->getNodeValue()); + return false; + } + if(!XMLString::equals(node1->getNodeValue(),node2->getNodeValue())) + { + //TRACE(_T("node %s value %s != node %s value %s\n"),node1->getNodeName(), node1->getNodeValue(),node2->getNodeName(), node2->getNodeValue()); + return false; + } + } + DOMNode* n1=node1->getFirstChild(); + DOMNode* n2=node2->getFirstChild(); + while(n1 && n2) + { + if(isIgnorableWS(n1)) + { + //TRACE(_T("skipping ws node %s value '%s'\n"),n1->getNodeName(), n1->getNodeValue()); + n1=n1->getNextSibling(); + } + if(isIgnorableWS(n2)) + { + //TRACE(_T("skipping ws node %s value '%s'\n"),n2->getNodeName(), n2->getNodeValue()); + n2=n2->getNextSibling(); + } + if(n1==NULL || n2==NULL) + break; + + if(!compareNodes(n1, n2)) + return false; + n1=n1->getNextSibling(); + n2=n2->getNextSibling(); + } + if(isIgnorableWS(n1)) + { + //TRACE(_T("skipping ws node %s value '%s'\n"),n1->getNodeName(), n1->getNodeValue()); + n1=n1->getNextSibling(); + } + if(isIgnorableWS(n2)) + { + //TRACE(_T("skipping ws node %s value '%s'\n"),n2->getNodeName(), n2->getNodeValue()); + n2=n2->getNextSibling(); + } + + if(n1!=NULL || n2!=NULL) + return false; + return true; +} diff --git a/tests/xqts/runner.cpp b/tests/xqts/runner.cpp new file mode 100644 index 00000000..b6aae37d --- /dev/null +++ b/tests/xqts/runner.cpp @@ -0,0 +1,463 @@ +/* + * Copyright (c) 2001-2006 + * DecisionSoft Limited. All rights reserved. + * Copyright (c) 2004-2006 + * Progress Software Corporation. All rights reserved. + * Copyright (c) 2004-2006 + * Oracle. All rights reserved. + * + * See the file LICENSE for redistribution information. + * + * $Id: runner.cpp,v 1.27 2006/11/01 16:37:23 jpcs Exp $ + */ + +#ifdef _MSC_VER +#pragma warning(disable: 4786) +#endif + +#include +#include +#include + +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#if defined(XERCES_HAS_CPP_NAMESPACE) +XERCES_CPP_NAMESPACE_USE +#endif +using namespace std; + +class XQillaTestSuiteRunner : public TestSuiteRunner, private XMLEntityResolver, private ModuleResolver, private URIResolver +{ +public: + XQillaTestSuiteRunner(const string &singleTest, TestSuiteResultListener *results); + + virtual void addSource(const string &id, const string &filename, const string &schema); + virtual void addSchema(const string &id, const string &filename, const string &uri); + virtual void addModule(const string &id, const string &filename); + virtual void addCollection(const string &id, const string &filename); + + virtual void startTestGroup(const string &name); + virtual void endTestGroup(); + + virtual void runTestCase(const TestCase &testCase); + +private: + virtual InputSource* resolveEntity(XMLResourceIdentifier* resourceIdentifier); + virtual bool resolveModuleLocation(VectorOfStrings* result, const XMLCh* nsUri, const StaticContext* context); + virtual bool resolveDocument(Sequence &result, const XMLCh* uri, DynamicContext* context); + virtual bool resolveCollection(Sequence &result, const XMLCh* uri, DynamicContext* context); + virtual bool resolveDefaultCollection(Sequence &result, DynamicContext* context); + +private: + string m_szSingleTest; + string m_szFullTestName; + const TestCase* m_pCurTestCase; + + // id -> filename + map m_inputFiles; + // schemaURL -> filename + map m_schemaFiles; + // id -> filename + map m_moduleFiles; + // id -> list of inputFiles ID + map > m_collections; +}; + +void usage(const char *progname) +{ + const char *name = progname; + while(*progname != 0) { + if(*progname == '/' || *progname == '\\') { + ++progname; + name = progname; + } else { + ++progname; + } + } + + cout << "Usage: " << name << " [options] ()?" << endl << endl; + cout << "-e : Use the given file as a known error file" << endl; + cout << "-E : Output an error file" << endl; + cout << "-h : Show this display" << endl; + cout << "-x : Output results as XML" << endl; +} + +int main(int argc, char *argv[]) +{ + string testSuitePath; + string singleTest; + string errorFile; + string outputErrorFile; + bool xmlResults = false; + + for(int i = 1; i < argc; ++i) { + if(*argv[i] == '-' && argv[i][2] == '\0' ){ + + switch(argv[i][1]) { + case 'h': { + usage(argv[0]); + return 0; + } + case 'e': { + i++; + if(i == argc) { + cout << "Missing argument to option 'e'" << endl; + return 1; + } + errorFile = argv[i]; + break; + } + case 'E': { + i++; + if(i == argc) { + cout << "Missing argument to option 'E'" << endl; + return 1; + } + outputErrorFile = argv[i]; + break; + } + case 'x': { + xmlResults = true; + break; + } + default: { + cout << "Unknown option: " << argv[i] << endl; + usage(argv[0]); + return 1; + } + } + } + else if(testSuitePath == "") { + testSuitePath = argv[i]; + } + else if(singleTest == "") { + singleTest = argv[i]; + } + else { + usage(argv[0]); + return 1; + } + } + + if(testSuitePath == "") { + cout << "Test suite path not specified!" << endl; + usage(argv[0]); + return 1; + } + + XQillaPlatformUtils::enableExtendedPrecision(false); + XQilla xqilla; + + Janitor results(0); + if(xmlResults) { + results.reset(new XMLReportResultListener()); + XMLReportResultListener *xmlreport = (XMLReportResultListener*)results.get(); + xmlreport->setImplementation("XQilla", "1.0"); + xmlreport->setOrganization("XQilla", "http://xqilla.sourceforge.net"); + + xmlreport->addImplementationDefinedItem("expressionUnicode", "UTF-16"); + xmlreport->addImplementationDefinedItem("implicitTimezone", "Defined by the system clock"); + xmlreport->addImplementationDefinedItem("XMLVersion", "1.1"); + xmlreport->addImplementationDefinedItem("axes", "Full axis support"); + xmlreport->addImplementationDefinedItem("defaultOrderEmpty", "empty least"); + xmlreport->addImplementationDefinedItem("normalizationForms", "NFC, NFD, NFKC, NFKD"); + xmlreport->addImplementationDefinedItem("docProcessing", "schema validation"); + + xmlreport->addFeature("Minimal Conformance", true); + xmlreport->addFeature("Schema Import", true); + xmlreport->addFeature("Schema Validation", true); + xmlreport->addFeature("Static Typing", false); + xmlreport->addFeature("Static Typing Extensions", false); + xmlreport->addFeature("Full Axis", true); + xmlreport->addFeature("Module", true); + xmlreport->addFeature("Serialization", false); + xmlreport->addFeature("Trivial XML Embedding", false); + } + else { + results.reset(new ConsoleResultListener()); + } + + KnownErrorChecker knownErrors(results.get()); + if(errorFile != "" && !knownErrors.loadErrors(errorFile)) { + return 1; + } + + XQillaTestSuiteRunner runner(singleTest, &knownErrors); + TestSuiteParser parser(testSuitePath, &runner); + + parser.run(); + + bool passed = true; + if(xmlResults) { + ((XMLReportResultListener*)results.get())->printReport(); + } + else { + passed = ((ConsoleResultListener*)results.get())->printReport(); + } + + if(errorFile != "") { + passed = knownErrors.printReport(); + } + + if(outputErrorFile != "" && !knownErrors.saveErrors(outputErrorFile)) { + cout << "Unable to open error file: " << outputErrorFile << endl; + return 1; + } + + return passed ? 0 : 1; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +string serializeXMLResults(const Sequence &result, const DynamicContext *context); + +XQillaTestSuiteRunner::XQillaTestSuiteRunner(const string &singleTest, TestSuiteResultListener *results) + : TestSuiteRunner(results), + m_szSingleTest(singleTest), + m_pCurTestCase(NULL) +{ +} + +void XQillaTestSuiteRunner::startTestGroup(const string &name) +{ + if(m_szFullTestName != "") + m_szFullTestName += ":"; + m_szFullTestName += name; + + m_results->startTestGroup(name); +} + +void XQillaTestSuiteRunner::endTestGroup() +{ + int nColonPos = m_szFullTestName.find_last_of(":"); + if(nColonPos != -1) + m_szFullTestName = string(m_szFullTestName.c_str(), nColonPos); + else + m_szFullTestName = ""; + + m_results->endTestGroup(); +} + +void XQillaTestSuiteRunner::addSource(const string &id, const string &filename, const string &schema) +{ + m_inputFiles[id] = filename; +} + +void XQillaTestSuiteRunner::addSchema(const string &id, const string &filename, const string &uri) +{ + m_schemaFiles[uri] = filename; +} + +void XQillaTestSuiteRunner::addModule(const string &id, const string &filename) +{ + m_moduleFiles[id] = filename; +} + +void XQillaTestSuiteRunner::addCollection(const string &id, const string &filename) +{ + m_collections[id].push_back(filename); +} + +void XQillaTestSuiteRunner::runTestCase(const TestCase &testCase) +{ + if(m_szSingleTest != "" && + testCase.name.find(m_szSingleTest) == string::npos && + m_szFullTestName.find(m_szSingleTest) == string::npos) { + m_results->reportSkip(testCase, "Not run"); + return; + } + + if(m_szFullTestName.substr(0,21)=="Optional:StaticTyping") { + m_results->reportSkip(testCase, "Static typing not supported"); + return; + } + if(m_szFullTestName.substr(0,26)=="Optional:TrivialEmbedding") { + m_results->reportSkip(testCase, "TrivialEmbedding not supported"); + return; + } + + XQilla xqilla; + + m_pCurTestCase=&testCase; + Janitor context(xqilla.createContext()); + try { + context->setImplicitTimezone(context->getItemFactory()-> + createDurationOrDerived(FunctionConstructor::XMLChXPath2DatatypesURI, + ATDurationOrDerived::fgDT_DAYTIMEDURATION, + X("PT0S"), context.get())); + context->setXMLEntityResolver(this); + context->setModuleResolver(this); + context->registerURIResolver(this); + + Janitor pParsedQuery(xqilla.parseFromURI(X(testCase.queryURL.c_str()), XQilla::XQUERY, context.get(), XQilla::NO_ADOPT_CONTEXT)); + + map::const_iterator v; + for(v=testCase.extraVars.begin();v!=testCase.extraVars.end();v++) { + XQQuery* pInnerQuery = xqilla.parseFromURI(X(v->second.c_str()), XQilla::XQUERY, context.get()); + Sequence doc=pInnerQuery->execute(context.get())->toSequence(context.get()); + context->getVariableStore()->setGlobalVar(X(v->first.c_str()),doc,context.get(), 0); + } + for(v=testCase.inputVars.begin();v!=testCase.inputVars.end();v++) { + Sequence doc=context->resolveDocument(X(v->second.c_str()), 0); + context->getVariableStore()->setGlobalVar(X(v->first.c_str()),doc,context.get(), 0); + } + for(v=testCase.inputURIVars.begin();v!=testCase.inputURIVars.end();v++) { + Item::Ptr uri = context->getItemFactory()->createString(X(v->second.c_str()),context.get()); + context->getVariableStore()->setGlobalVar(X(v->first.c_str()), uri, context.get(), 0); + } + if(!testCase.contextItem.empty()) + { + Sequence doc=context->resolveDocument(X(testCase.contextItem.c_str()), 0); + context->setContextItem(doc.first()); + } + context->setContextPosition(1); + context->setContextSize(1); + time_t curTime; + context->setCurrentTime(time(&curTime)); + + Sequence result=pParsedQuery->execute(context.get())->toSequence(context.get()); + + testResults(testCase, serializeXMLResults(result, context.get())); + } + catch(XQException& e) { + ostringstream oss; +// if(e.getXQueryLine() == 0) { +// oss << "No line number:" << std::endl << UTF8(e.getError()) << std::endl; +// oss << "at " << UTF8(e.getXQueryFile()) << ":" << e.getXQueryLine() << ":" << e.getXQueryColumn() << std::endl; +// oss << "at " << e.getCppFile() << ":" << e.getCppLine() << std::endl; +// m_results->reportFailUnexpectedError(testCase, oss.str(), "XXX"); +// } +// else if(e.getXQueryColumn() == 0) { +// oss << "No column number:" << std::endl << UTF8(e.getError()) << std::endl; +// oss << "at " << UTF8(e.getXQueryFile()) << ":" << e.getXQueryLine() << ":" << e.getXQueryColumn() << std::endl; +// oss << "at " << e.getCppFile() << ":" << e.getCppLine() << std::endl; +// m_results->reportFailUnexpectedError(testCase, oss.str(), "XXX"); +// } +// else if(e.getXQueryFile() == 0) { +// oss << "No file name:" << std::endl << UTF8(e.getError()) << std::endl; +// oss << "at " << UTF8(e.getXQueryFile()) << ":" << e.getXQueryLine() << ":" << e.getXQueryColumn() << std::endl; +// oss << "at " << e.getCppFile() << ":" << e.getCppLine() << std::endl; +// m_results->reportFailUnexpectedError(testCase, oss.str(), "XXX"); +// } +// else { + oss << UTF8(e.getError()) << std::endl; + oss << "at " << UTF8(e.getXQueryFile()) << ":" << e.getXQueryLine() << ":" << e.getXQueryColumn() << std::endl; + oss << "at " << e.getCppFile() << ":" << e.getCppLine() << std::endl; + testErrors(testCase, oss.str()); +// } + } + catch(DOMException &de) { + testErrors(testCase, string("DOMException: ") + UTF8(de.getMessage())); + } + catch(...) { + testErrors(testCase, "[Unknown exception]"); + } + m_pCurTestCase=NULL; +} + +InputSource* XQillaTestSuiteRunner::resolveEntity(XMLResourceIdentifier* resourceIdentifier) +{ + const XMLCh* systemId=resourceIdentifier->getSystemId(); + if((systemId==NULL || *systemId==0) && + resourceIdentifier->getResourceIdentifierType()==XMLResourceIdentifier::SchemaGrammar) { + + map::const_iterator i = + m_schemaFiles.find(UTF8(resourceIdentifier->getNameSpace())); + if(i != m_schemaFiles.end()) { + return new URLInputSource(X(i->second.c_str())); + } + } + else if(resourceIdentifier->getResourceIdentifierType()==XMLResourceIdentifier::UnKnown) { + list >::const_iterator i; + for(i=m_pCurTestCase->moduleFiles.begin(); i!=m_pCurTestCase->moduleFiles.end(); i++) + { + if(i->first == UTF8(resourceIdentifier->getNameSpace()) && + i->second == UTF8(resourceIdentifier->getSystemId())) + { + map::const_iterator i2 = m_moduleFiles.find(i->second); + if(i2 != m_moduleFiles.end()) { + string file=i2->second+".xq"; + return new URLInputSource(X(file.c_str())); + } + } + } + } + return NULL; +} + +bool XQillaTestSuiteRunner::resolveModuleLocation(VectorOfStrings* result, const XMLCh* nsUri, const StaticContext* context) +{ + bool bFound=false; + list >::const_iterator i; + for(i=m_pCurTestCase->moduleFiles.begin(); i!=m_pCurTestCase->moduleFiles.end(); i++) + { + if(i->first == UTF8(nsUri)) + { + result->push_back(context->getMemoryManager()->getPooledString(i->second.c_str())); + bFound=true; + } + } + return bFound; +} + +bool XQillaTestSuiteRunner::resolveDocument(Sequence &result, const XMLCh* uri, DynamicContext* context) +{ + std::map::iterator it=m_inputFiles.find(UTF8(uri)); + if(it!=m_inputFiles.end()) + { + result=context->resolveDocument(X(it->second.c_str()), 0); + return true; + } + return false; +} + +bool XQillaTestSuiteRunner::resolveCollection(Sequence &result, const XMLCh* uri, DynamicContext* context) +{ + std::map >::iterator it=m_collections.find(UTF8(uri)); + if(it!=m_collections.end()) + { + for(std::list::iterator s=it->second.begin();s!=it->second.end();s++) + { + result.joinSequence(context->resolveDocument(X(s->c_str()), 0)); + } + return true; + } + return false; +} + +bool XQillaTestSuiteRunner::resolveDefaultCollection(Sequence &result, DynamicContext* context) +{ + if(!m_pCurTestCase->defaultCollection.empty()) + return resolveCollection(result, X(m_pCurTestCase->defaultCollection.c_str()), context); + return false; +} + +string serializeXMLResults(const Sequence &result, const DynamicContext *context) { + MemBufFormatTarget strTarget; + { + XMLFormatter formatter("UTF-8", "1.0", &strTarget, XMLFormatter::NoEscapes, XMLFormatter::UnRep_CharRef); + for(unsigned int i=0;i0 && !item->isNode() && !result.item(i-1)->isNode()) + formatter << X(" "); + if(item->isNode()) + formatter << XMLFormatter::NoEscapes; + else + formatter << XMLFormatter::CharEscapes; + formatter << item->asString(context); + } + } + return (char*)strTarget.getRawBuffer(); +} diff --git a/tests/xqts/xqts_testsuite/errors.xml b/tests/xqts/xqts_testsuite/errors.xml new file mode 100644 index 00000000..08c61804 --- /dev/null +++ b/tests/xqts/xqts_testsuite/errors.xml @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wintools/README b/wintools/README new file mode 100644 index 00000000..13621f7f --- /dev/null +++ b/wintools/README @@ -0,0 +1,38 @@ +This directory and the tools here are used to generate Windows +project files for the main XQilla library and related projects. + +Both VC6 and Visual Studio 7.1 files are generated. The +latter can be opened using Visual Studio 2005 (8) as +well. + +The process: + +1. Source (including header) files are added to the file, + srcfiles.in. See that file for format. + Be sure to update that file when files are added or removed + from the project. + +2. Run the script, s_win32, which calls the 2 scripts, s_win32_dsp + and s_win32_vcproj to generate project files. These files + land in ../Win32Projects/{VC6,VC7.1} + +The scripts must be run on a Unix-style machine, most likely, +as they use bash and commands that are typicall available +on Unix. They *may* run under cygwin. + +Do not ever manually edit the output project files (*.dsp, +*.vcproj). If changes are required, edit the templates +and scripts and generate the changed projects. + +Details: + +The scripts use template project files (ending in ".src") +and do a lot of field substitution from configuration found +in these files: + lib_paths.sed + s_win32_* + +Todo: + +1. Generate srcfiles.in from Makefile.am to remove multiple +manual steps diff --git a/wintools/app_dsp.src b/wintools/app_dsp.src new file mode 100755 index 00000000..5898112c --- /dev/null +++ b/wintools/app_dsp.src @@ -0,0 +1,87 @@ +# Microsoft Developer Studio Project File - Name="@project_name@" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=@project_name@ - 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 "@project_name@.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 "@project_name@.mak" CFG="@project_name@ - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "@project_name@ - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "@project_name@ - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "@project_name@ - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "@outdir@\Release" +# PROP BASE Intermediate_Dir "@outdir@\Release\@project_name@" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "@outdir@\Release" +# PROP Intermediate_Dir "@outdir@\Release\@project_name@" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../../include" /I "@XERCES_WINHOME@/include" /I "@XERCES_WINHOME@/src"/I "@include@" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /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 /nologo /subsystem:console /machine:I386 +# ADD LINK32 /libpath:@outdir@/Release @XERCES_LIB@.lib @XQILLA_LIB@.lib /libpath:@XERCES_LIBHOME@/Release /nologo /out:@outdir@/Release/@project_name@.exe /subsystem:console /machine:I386 /nodefaultlib:"libcmt" + +!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "@outdir@\Debug" +# PROP BASE Intermediate_Dir "@outdir@\Debug\@project_name@" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "@outdir@\Debug" +# PROP Intermediate_Dir "@outdir@\Debug\@project_name@" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "." /I "../../include" /I "@XERCES_WINHOME@/include" /I "@XERCES_WINHOME@/src" /I "@include@" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /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 /libpath:@outdir@/Debug @XERCES_LIB@d.lib @XQILLA_LIB@d.lib /libpath:@XERCES_LIBHOME@/Debug /nologo /out:@outdir@/Debug/@project_name@.exe /pdb:"@outdir@/Debug/@project_name@.pdb" /subsystem:console /debug /machine:I386 /nodefaultlib:"libcmt" + +!ENDIF + +# Begin Target + +# Name "@project_name@ - Win32 Release" +# Name "@project_name@ - Win32 Debug" +@SOURCE_FILES@ +# End Target +# End Project diff --git a/wintools/app_vcproj.src b/wintools/app_vcproj.src new file mode 100644 index 00000000..1c75e417 --- /dev/null +++ b/wintools/app_vcproj.src @@ -0,0 +1,399 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +@SOURCE_FILES@ + + + + diff --git a/wintools/filter_dsp.end b/wintools/filter_dsp.end new file mode 100755 index 00000000..db25036e --- /dev/null +++ b/wintools/filter_dsp.end @@ -0,0 +1 @@ +# End Group diff --git a/wintools/filter_dsp.start b/wintools/filter_dsp.start new file mode 100755 index 00000000..f2d5b431 --- /dev/null +++ b/wintools/filter_dsp.start @@ -0,0 +1,3 @@ +# Begin Group "@filtname@" + +# PROP Default_Filter "" diff --git a/wintools/filter_vcproj.end b/wintools/filter_vcproj.end new file mode 100644 index 00000000..0f601151 --- /dev/null +++ b/wintools/filter_vcproj.end @@ -0,0 +1 @@ +
diff --git a/wintools/filter_vcproj.start b/wintools/filter_vcproj.start new file mode 100644 index 00000000..29d75f6f --- /dev/null +++ b/wintools/filter_vcproj.start @@ -0,0 +1,3 @@ + diff --git a/wintools/lib_paths.sed b/wintools/lib_paths.sed new file mode 100644 index 00000000..270e62fb --- /dev/null +++ b/wintools/lib_paths.sed @@ -0,0 +1,34 @@ +# $Id: lib_paths.sed,v 1.1 2006/01/13 21:12:31 gmfeinberg Exp $ +# Default path for XQilla library, and paths to +# Xerces +# +# +# XQilla libraries are named: +# xqilla{d}.{lib,dll,pdb} +# e.g. +# xqilla10.dll (release) or xqilla10d.dll (debug) +# +# Assume dependent libraries are in ../../../XXX_HOME, e.g. +# ../../../xerces-c-src_2_7_0 + +s!@XQILLA_LIB@!@XQILLA_LIB_BASE@@XQILLA_VERSION_MAJOR@@XQILLA_VERSION_MINOR@!g +s!@XQILLA_LIB_BASE@!xqilla!g + +s!@XQILLA_VERSION_MAJOR@!1!g +s!@XQILLA_VERSION_MINOR@!0!g +s!@XQILLA_VERSION_PATCH@!0!g + +# Xerces is assumed to be source (vs installation) +s!@XERCES_LIBHOME@!@XERCES_WINHOME@/Build/Win32/VC6!g +s!@XERCES_LIBHOME7@!@XERCES_WINHOME@/Build/Win32/VC7.1!g +# Xerces-c is in ../../../xerces-c-src +s!@XERCES_WINHOME@!../../../@XERCES_NAME@!g +s!@XERCES_NAME@!xerces-c-src!g +s!@XERCES_LIB@!xerces-c_@XERCES_VERSION_MAJOR@!g +s!@XERCES_DLL@!xerces-c_@XERCES_VERSION_MAJOR@_@XERCES_VERSION_MINOR@!g + +# Current Xerces version is 2.7 +s!@XERCES_VERSION_MAJOR@!2!g +s!@XERCES_VERSION_MINOR@!7!g +s!@XERCES_VERSION_PATCH@!0!g + diff --git a/wintools/s_win32 b/wintools/s_win32 new file mode 100755 index 00000000..bc1cd257 --- /dev/null +++ b/wintools/s_win32 @@ -0,0 +1,5 @@ +#!/bin/sh +# $Id: s_win32,v 1.1 2006/01/13 21:41:44 gmfeinberg Exp $ +# +sh ./s_win32_dsp +sh ./s_win32_vcproj diff --git a/wintools/s_win32_common b/wintools/s_win32_common new file mode 100644 index 00000000..31ae5762 --- /dev/null +++ b/wintools/s_win32_common @@ -0,0 +1,195 @@ +# +# $Id: s_win32_common,v 1.4 2006/09/26 14:41:01 gmfeinberg Exp $ +# +# Common functions used by both .dsp and .vcproj file generation +# + +# +# Generate simple file list, matching on module name and optional filter +# +add_files() +{ + sources="$1" + match="$2" + fmatch="$3" + srctemplate="$4" + filelist="$5" + nomatch="$6" + + for srcpath in `egrep "$match" $sources | egrep "$fmatch" | \ +egrep -v "$nomatch" | sed -e 's/[ ].*//'` + do + # take the path name and break it up, converting / to \\. + # so many backslashes needed because of shell quoting and + # sed quoting -- we'll end up with two backslashes for every + # forward slash, but we need that when feeding that to the + # later sed command. + set - `echo $srcpath | sed -e 's;\(.*\)/;../../\\1 ;' \ + -e 's;/;\\\\\\\\;g'` + srcdir="$1" + srcfile="$2" + sed -e "s/@srcdir@/$srcdir/g" \ + -e "s/@srcfile@/$srcfile/g" \ + < $srctemplate >> $filelist + done +} + +# +# Generate the file list for the project into the output file specified. +# Include grouped/filtered files, if specified +# +create_file_list() +{ + projname="$1" # name of the project/output file + match="$2" # the string used to egrep the $sources file + sources="$3" # a modified version of $SRCFILES to facilitate matches + srctemplate="$4" # template file for the src file fragments + filelist="$5" # output file for the list + + rm -f $filelist + + filtermatch="$match.filters=" + filters=`egrep $filtermatch $sources | sed -e "s/^$filtermatch//"` + if [ "$filters" != "" ] ; then + for filter in $filters + do + # start a filter + sed -e "s/@filtname@/$filter/g" \ + < $FILT_START >> $filelist + + # special-case "impl" subdirectories and add another level of + # grouping. This mechanism is hard-coded to "impl" subdirectories, + # and will not work for other subdirectories. + implmatch="/$filter/impl" + doimpl=`egrep $implmatch $sources` + if [ "$doimpl" != "" ] ; then + sed -e "s/@filtname@/impl/g" \ + < $FILT_START >> $filelist + add_files $sources $match $implmatch $srctemplate $filelist * + cat $FILT_END >> $filelist + else + implmatch="*" + fi + filtmatch="/$filter/" + # add files for that filter, removing any "impl" matches + add_files $sources $match $filtmatch $srctemplate $filelist $implmatch + + # end the filter + cat $FILT_END >> $filelist + done + else + # no filter, just add files (filter match is *) + add_files $sources $match "*" $srctemplate $filelist * + fi +} + +# +# function to create an individual project file +# +create_project() +{ + projname="$1" # name of the project (will be $projname.{dsp,vcproj}) + match="$2" # the string used to egrep the $sources file + sources="$3" # a modified version of $SRCFILES to facilitate matches + projtemplate="$4" # template file for the project + srctemplate="$5" # template file for the src file fragments + output=$6 # project output file name + + # destination targets for build components + # OUTDIR must be defined in the driving script + libDest="$OUTDIR/\$(ConfigurationName)" + binRelDest="$OUTDIR/\$(ConfigurationName)" + binDebugDest="$OUTDIR/\$(ConfigurationName)" + jarDest="$OUTDIR" + outdir="$OUTDIR" + # incl is a placeholder for additional includes. + # right now, it's redundant + incl="../../include" + + filelist=$output.insert + create_file_list $projname $match $sources \ + $srctemplate $filelist + + sed -e "/@SOURCE_FILES@/r$filelist" \ + -e "/@SOURCE_FILES@/d" \ + -e "s/@project_name@/$projname/g" \ + -e "s!@lib_dest@!$libDest!g" \ + -e "s!@bin_rel_dest@!$binRelDest!g" \ + -e "s!@bin_debug_dest@!$binDebugDest!g" \ + -e "s!@jar_dest@!$jarDest!g" \ + -e "s!@outdir@!$outdir!g" \ + -e "s!@include@!$incl!g" \ + -e "s/@XQILLA_VERSION_MAJOR@/$XQILLA_VERSION_MAJOR/g" \ + -e "s/@XQILLA_VERSION_MINOR@/$XQILLA_VERSION_MINOR/g" \ + -f lib_paths.sed \ + < $projtemplate > $output.new + + # Set the file mode to 644 because the IDE needs a writeable file + cmp $output.new $output > /dev/null 2>&1 || + (echo "Building $output" && rm -f $output && + cp $output.new $output && chmod 664 $output) + rm -f $filelist $output.new +} + + +generate_projects() +{ + TMPA=/tmp/swin32vcproj$$a + trap "rm -f $TMPA; exit 1" 1 2 3 15 + + # create a copy of the srcfiles with comments and empty lines removed. + # add a space at the end of each list of modules so that each module + # can be unambiguously matched e.g. ' dynamic ' + sed -e "s/#.*$//" \ + -e "/^[ ]*$/d" \ + -e "s/[ ][ ]*/ /" \ + -e "s/[ ]*$//" \ + -e "/[ ]/!d" \ + -e "s/$/ /" < $SRCFILES > $TMPA + + # + # get a list of all modules mentioned. Eliminate ".filters" lines + # + MODULES="`egrep -v '.filters' $TMPA | sed -e 's/^[^ ]* //' \ + | tr ' ' '\012' | sort | uniq`" + + for module in $MODULES + do + case "$module" in + lib ) + create_project xqilla " $module " $TMPA \ + $LIB_SRC $FILT_FILE_SRC $BUILDDIR/xqilla.$EXT + ;; + dll=* ) + dllname=`echo $module | sed -e 's/^dll=//'` + if [ -f $TEMPLATEDIR/$dllname.$EXT.src ] ; then + srcname=$TEMPLATEDIR/$dllname.$EXT.src + else + srcname=$DLL_SRC + fi + create_project $dllname " $module " $TMPA \ + $srcname $FILE_SRC $BUILDDIR/$dllname.$EXT + ;; + app=* ) + appname=`echo $module | sed -e 's/^app=//'` + if [ -f $TEMPLATEDIR/$appname.$EXT.src ] ; then + srcname=$TEMPLATEDIR/$appname.$EXT.src + else + srcname=$APP_SRC + fi + create_project $appname " $module " $TMPA \ + $srcname $FILE_SRC $BUILDDIR/$appname.$EXT + ;; + test=* ) + appname=`echo $module | sed -e 's/^test=//'` + create_project $appname " $module " $TMPA \ + $TEST_SRC $FILE_SRC $BUILDDIR/$appname.$EXT + ;; + * ) + echo "s_win32_common: module name $module in $SRCFILES is unknown type" + ;; + esac + done + rm -f $TMPA +} + diff --git a/wintools/s_win32_dsp b/wintools/s_win32_dsp new file mode 100644 index 00000000..685f500c --- /dev/null +++ b/wintools/s_win32_dsp @@ -0,0 +1,35 @@ +#!/bin/sh - +# $Id: s_win32_dsp,v 1.3 2006/09/26 14:41:01 gmfeinberg Exp $ +# +# Build Windows .dsp (VS6) project files + +BUILDDIR=../Win32Projects/VC6 +OUTDIR=../../build/windows/VC6 +TEMPLATEDIR=. +SRCFILES=srcfiles.in +# for now, do not parameterize the filter templates +FILT_START="filter_dsp.start" +FILT_END="filter_dsp.end" +# intput templates +LIB_SRC=$TEMPLATEDIR/xqilla_dsp.src +DLL_SRC=$TEMPLATEDIR/dll_dsp.src +APP_SRC=$TEMPLATEDIR/app_dsp.src +TEST_SRC=$TEMPLATEDIR/test_dsp.src +FILT_FILE_SRC=$TEMPLATEDIR/srcfile_dsp.src +FILE_SRC=$FILT_FILE_SRC +EXT=dsp + +# source dependencies +. s_win32_common + +generate_projects + +# don't do workspace yet +exit 0 + +f=$BUILDDIR/BDBXML_all.dsw +sed -f lib_paths.sed < $f.template | sed 's,/,\\,g' > $TMPA +cmp $TMPA $f > /dev/null 2>&1 || + (echo "$f" && rm -f $f && cp $TMPA $f && chmod 664 $f) + +rm -f $TMPA diff --git a/wintools/s_win32_vcproj b/wintools/s_win32_vcproj new file mode 100644 index 00000000..e79cf630 --- /dev/null +++ b/wintools/s_win32_vcproj @@ -0,0 +1,38 @@ +#!/bin/sh - +# $Id: s_win32_vcproj,v 1.2 2006/09/19 16:41:56 gmfeinberg Exp $ +# +# Build Windows .vcproj files for Visual Studio 7.1, which can +# be upgraded to Visual Studio 8 (2005) format by VS itself + +BUILDDIR=../Win32Projects/VC7.1 +OUTDIR=../../build/windows/VC7.1 +TEMPLATEDIR=. +SRCFILES=srcfiles.in +# for now, do not parameterize the filter templates +FILT_START="filter_vcproj.start" +FILT_END="filter_vcproj.end" +# intput templates +LIB_SRC=$TEMPLATEDIR/xqilla_vcproj.src +DLL_SRC=$TEMPLATEDIR/dll_vcproj.src +APP_SRC=$TEMPLATEDIR/app_vcproj.src +TEST_SRC=$TEMPLATEDIR/test_vcproj.src +FILT_FILE_SRC=$TEMPLATEDIR/srcfile_filt_vcproj.src +FILE_SRC=$TEMPLATEDIR/srcfile_vcproj.src +EXT=vcproj + +# source dependencies +. s_win32_common + +generate_projects + +# don't do solution yet +exit 0 + +# generate XQilla.sln from template +sed -f lib_paths.sed < $TEMPLATEDIR/XQilla.sln.template > $BUILDDIR/XQilla.sln.new +cmp $BUILDDIR/XQilla.sln.new $BUILDDIR/XQilla.sln > /dev/null 2>&1 || + (echo "Building XQilla.sln" && rm -f $BUILDDIR/XQilla.sln && + cp $BUILDDIR/XQilla.sln.new $BUILDDIR/XQilla.sln && chmod 664 $BUILDDIR/XQilla.sln) +#rm -f $BUILDDIR/XQilla.sln.new + +rm -f $TMPA diff --git a/wintools/srcfile_dsp.src b/wintools/srcfile_dsp.src new file mode 100755 index 00000000..408a55e2 --- /dev/null +++ b/wintools/srcfile_dsp.src @@ -0,0 +1,4 @@ +# Begin Source File + +SOURCE=@srcdir@\@srcfile@ +# End Source File diff --git a/wintools/srcfile_filt_vcproj.src b/wintools/srcfile_filt_vcproj.src new file mode 100644 index 00000000..02beacbd --- /dev/null +++ b/wintools/srcfile_filt_vcproj.src @@ -0,0 +1,3 @@ + + diff --git a/wintools/srcfile_vcproj.src b/wintools/srcfile_vcproj.src new file mode 100644 index 00000000..9ff82baa --- /dev/null +++ b/wintools/srcfile_vcproj.src @@ -0,0 +1,3 @@ + + diff --git a/wintools/srcfiles.in b/wintools/srcfiles.in new file mode 100644 index 00000000..910430b2 --- /dev/null +++ b/wintools/srcfiles.in @@ -0,0 +1,757 @@ +# $Id: srcfiles.in,v 1.17 2006/11/03 17:04:21 jpcs Exp $ +# +# This is an input file for scripts to build Windows projects. +# It lists the source files in the XQilla tree and notes which are +# used to build the Windows libraries. +# +# Please keep this list sorted alphabetically! +# +# Each non-blank, non-comment line is of the form +# filename module [ module ...] +# +# A single file can be used in more than one module, if appropriate, but +# this is not typical. +# +# The possible modules: +# +# app=NAME Linked into application NAME.exe (NAME.{dsp,vcproj}) +# dll=NAME Linked into dll NAME.dll (xqilla_NAME.{dsp,vcproj}) +# lib File is in the main Windows DLL/LIB (xqilla.{.dsp,vcproj}) +# +# Windows projects may be arranged hierarchically, with sub-folders. +# The project generation mechanism supports one level of hierarchy +# (more could be added, but work is required). +# If hierarchy is desired, add a line "module_name.filters=space separated +# folders": +# o folder names must match exactly and uniquely a directory in +# the module's source listing +# o all matching files will be placed in that folder +# +lib.filters=ast axis context dom-api exceptions framework fulltext functions items lexer mapm operators parser runtime schema simple-api utils xqts +src/ast/ASTNodeImpl.cpp lib +src/ast/AggregateFunction.cpp lib +src/ast/ConstantFoldingFunction.cpp lib +src/ast/ConvertFunctionArg.cpp lib +src/ast/NumericFunction.cpp lib +src/ast/StaticResolutionContext.cpp lib +src/ast/StaticType.cpp lib +src/ast/XPath1Compat.cpp lib +src/ast/XQAtomize.cpp lib +src/ast/XQCastAs.cpp lib +src/ast/XQCastableAs.cpp lib +src/ast/XQContextItem.cpp lib +src/ast/XQDOMConstructor.cpp lib +src/ast/XQDocumentConstructor.cpp lib +src/ast/XQElementConstructor.cpp lib +src/ast/XQAttributeConstructor.cpp lib +src/ast/XQPIConstructor.cpp lib +src/ast/XQCommentConstructor.cpp lib +src/ast/XQTextConstructor.cpp lib +src/ast/XQDebugHook.cpp lib +src/ast/XQDocumentOrder.cpp lib +src/ast/XQFLWOR.cpp lib +src/ast/XQFunction.cpp lib +src/ast/XQFunctionCall.cpp lib +src/ast/XQGlobalVariable.cpp lib +src/ast/XQIf.cpp lib +src/ast/XQInstanceOf.cpp lib +src/ast/XQLiteral.cpp lib +src/ast/XQNav.cpp lib +src/ast/XQOperator.cpp lib +src/ast/XQOrderingChange.cpp lib +src/ast/XQParenthesizedExpr.cpp lib +src/ast/XQPredicate.cpp lib +src/ast/XQQuantified.cpp lib +src/ast/XQSequence.cpp lib +src/ast/XQStep.cpp lib +src/ast/XQTreatAs.cpp lib +src/ast/XQTypeswitch.cpp lib +src/ast/XQValidate.cpp lib +src/ast/XQVariable.cpp lib +src/ast/XQVariableBinding.cpp lib +src/fulltext/FTContains.cpp lib +src/fulltext/FTWords.cpp lib +src/fulltext/FTOr.cpp lib +src/fulltext/FTAnd.cpp lib +src/fulltext/FTMildnot.cpp lib +src/fulltext/FTUnaryNot.cpp lib +src/fulltext/DefaultTokenizer.cpp lib +src/fulltext/DefaultTokenStore.cpp lib +src/fulltext/FTOrder.cpp lib +src/fulltext/FTDistance.cpp lib +src/fulltext/FTScope.cpp lib +src/fulltext/FTContent.cpp lib +src/fulltext/FTWindow.cpp lib +src/axis/AncestorAxis.cpp lib +src/axis/AncestorOrSelfAxis.cpp lib +src/axis/AttributeAxis.cpp lib +src/axis/Axis.cpp lib +src/axis/ChildAxis.cpp lib +src/axis/DescendantAxis.cpp lib +src/axis/DescendantOrSelfAxis.cpp lib +src/axis/FollowingAxis.cpp lib +src/axis/FollowingSiblingAxis.cpp lib +src/axis/NamespaceAxis.cpp lib +src/axis/NodeTest.cpp lib +src/axis/ParentAxis.cpp lib +src/axis/PrecedingAxis.cpp lib +src/axis/PrecedingSiblingAxis.cpp lib +src/axis/SelfAxis.cpp lib +src/config/xqilla_config.h lib +src/config/xqilla_config_win32.h lib +src/context/XQScopedNamespace.cpp lib +src/context/impl/CodepointCollation.cpp lib +src/context/impl/CollationImpl.cpp lib +src/context/impl/ItemFactoryImpl.cpp lib +src/context/impl/VarHashEntryImpl.cpp lib +src/context/impl/VarStoreImpl.cpp lib +src/context/impl/VarStoreImpl.hpp lib +src/context/impl/VarTypeStoreImpl.cpp lib +src/context/impl/VarTypeStoreImpl.hpp lib +src/context/impl/XQContextImpl.cpp lib +src/context/impl/XQDynamicContextImpl.cpp lib +src/context/impl/XQRemoteDebugger.cpp lib +src/dom-api/XPath2NodeSerializer.cpp lib +src/dom-api/XPath2NodeSerializer.hpp lib +src/dom-api/XQillaImplementation.cpp lib +src/dom-api/XQillaImplementation.hpp lib +src/dom-api/impl/XPath2ResultImpl.cpp lib +src/dom-api/impl/XPath2ResultImpl.hpp lib +src/dom-api/impl/XPathDocumentImpl.cpp lib +src/dom-api/impl/XPathDocumentImpl.hpp lib +src/dom-api/impl/XPathNamespaceImpl.cpp lib +src/dom-api/impl/XPathNamespaceImpl.hpp lib +src/dom-api/impl/XQillaBuilderImpl.cpp lib +src/dom-api/impl/XQillaBuilderImpl.hpp lib +src/dom-api/impl/XQillaDocumentImpl.cpp lib +src/dom-api/impl/XQillaDocumentImpl.hpp lib +src/dom-api/impl/XQillaExpressionImpl.cpp lib +src/dom-api/impl/XQillaExpressionImpl.hpp lib +src/dom-api/impl/XQillaNSResolverImpl.cpp lib +src/dom-api/impl/XQillaXMLGrammarPoolImpl.cpp lib +src/dom-api/impl/XQillaXMLGrammarPoolImpl.hpp lib +src/exceptions/InvalidLexicalSpaceException.hpp lib +src/exceptions/MiscException.hpp lib +src/exceptions/XQException.cpp lib +src/exceptions/XQillaException.cpp lib +src/framework/BaseMemoryManager.cpp lib +src/framework/ProxyMemoryManager.cpp lib +src/framework/ReferenceCounted.cpp lib +src/framework/StringPool.cpp lib +src/framework/XPath2MemoryManagerImpl.cpp lib +src/functions/FuncFactory.cpp lib +src/functions/FuncFactoryTemplate.hpp lib +src/functions/FunctionAbs.cpp lib +src/functions/FunctionAdjustDateTimeToTimezone.cpp lib +src/functions/FunctionAdjustDateToTimezone.cpp lib +src/functions/FunctionAdjustTimeToTimezone.cpp lib +src/functions/FunctionAvg.cpp lib +src/functions/FunctionBaseURI.cpp lib +src/functions/FunctionBoolean.cpp lib +src/functions/FunctionCeiling.cpp lib +src/functions/FunctionCodepointEqual.cpp lib +src/functions/FunctionCodepointsToString.cpp lib +src/functions/FunctionCollection.cpp lib +src/functions/FunctionCompare.cpp lib +src/functions/FunctionConcat.cpp lib +src/functions/FunctionConstructor.cpp lib +src/functions/FunctionContains.cpp lib +src/functions/FunctionCount.cpp lib +src/functions/FunctionCurrentDate.cpp lib +src/functions/FunctionCurrentDateTime.cpp lib +src/functions/FunctionCurrentTime.cpp lib +src/functions/FunctionData.cpp lib +src/functions/FunctionDateTime.cpp lib +src/functions/FunctionDayFromDate.cpp lib +src/functions/FunctionDayFromDateTime.cpp lib +src/functions/FunctionDaysFromDuration.cpp lib +src/functions/FunctionDeepEqual.cpp lib +src/functions/FunctionDefaultCollation.cpp lib +src/functions/FunctionDistinctValues.cpp lib +src/functions/FunctionDoc.cpp lib +src/functions/FunctionDocAvailable.cpp lib +src/functions/FunctionDocumentURI.cpp lib +src/functions/FunctionEmpty.cpp lib +src/functions/FunctionEncodeForUri.cpp lib +src/functions/FunctionEndsWith.cpp lib +src/functions/FunctionError.cpp lib +src/functions/FunctionEscapeHtmlUri.cpp lib +src/functions/FunctionExactlyOne.cpp lib +src/functions/FunctionExists.cpp lib +src/functions/FunctionFalse.cpp lib +src/functions/FunctionFloor.cpp lib +src/functions/FunctionHoursFromDateTime.cpp lib +src/functions/FunctionHoursFromDuration.cpp lib +src/functions/FunctionHoursFromTime.cpp lib +src/functions/FunctionId.cpp lib +src/functions/FunctionIdref.cpp lib +src/functions/FunctionImplicitTimezone.cpp lib +src/functions/FunctionInScopePrefixes.cpp lib +src/functions/FunctionIndexOf.cpp lib +src/functions/FunctionInsertBefore.cpp lib +src/functions/FunctionIriToUri.cpp lib +src/functions/FunctionLang.cpp lib +src/functions/FunctionLast.cpp lib +src/functions/FunctionLocalNameFromQName.cpp lib +src/functions/FunctionLocalname.cpp lib +src/functions/FunctionLookupImpl.cpp lib +src/functions/FunctionLookupImpl.hpp lib +src/functions/FunctionLowerCase.cpp lib +src/functions/FunctionMatches.cpp lib +src/functions/FunctionMax.cpp lib +src/functions/FunctionMin.cpp lib +src/functions/FunctionMinutesFromDateTime.cpp lib +src/functions/FunctionMinutesFromDuration.cpp lib +src/functions/FunctionMinutesFromTime.cpp lib +src/functions/FunctionMonthFromDate.cpp lib +src/functions/FunctionMonthFromDateTime.cpp lib +src/functions/FunctionMonthsFromDuration.cpp lib +src/functions/FunctionName.cpp lib +src/functions/FunctionNamespaceURIForPrefix.cpp lib +src/functions/FunctionNamespaceURIFromQName.cpp lib +src/functions/FunctionNamespaceUri.cpp lib +src/functions/FunctionNilled.cpp lib +src/functions/FunctionNodeName.cpp lib +src/functions/FunctionNormalizeSpace.cpp lib +src/functions/FunctionNormalizeUnicode.cpp lib +src/functions/FunctionNot.cpp lib +src/functions/FunctionNumber.cpp lib +src/functions/FunctionOneOrMore.cpp lib +src/functions/FunctionPosition.cpp lib +src/functions/FunctionPrefixFromQName.cpp lib +src/functions/FunctionQName.cpp lib +src/functions/FunctionRemove.cpp lib +src/functions/FunctionReplace.cpp lib +src/functions/FunctionResolveQName.cpp lib +src/functions/FunctionResolveURI.cpp lib +src/functions/FunctionReverse.cpp lib +src/functions/FunctionRoot.cpp lib +src/functions/FunctionRound.cpp lib +src/functions/FunctionRoundHalfToEven.cpp lib +src/functions/FunctionSecondsFromDateTime.cpp lib +src/functions/FunctionSecondsFromDuration.cpp lib +src/functions/FunctionSecondsFromTime.cpp lib +src/functions/FunctionStartsWith.cpp lib +src/functions/FunctionStaticBaseURI.cpp lib +src/functions/FunctionString.cpp lib +src/functions/FunctionStringJoin.cpp lib +src/functions/FunctionStringLength.cpp lib +src/functions/FunctionStringToCodepoints.cpp lib +src/functions/FunctionSubsequence.cpp lib +src/functions/FunctionSubstring.cpp lib +src/functions/FunctionSubstringAfter.cpp lib +src/functions/FunctionSubstringBefore.cpp lib +src/functions/FunctionSum.cpp lib +src/functions/FunctionTimezoneFromDate.cpp lib +src/functions/FunctionTimezoneFromDateTime.cpp lib +src/functions/FunctionTimezoneFromTime.cpp lib +src/functions/FunctionTokenize.cpp lib +src/functions/FunctionTrace.cpp lib +src/functions/FunctionTranslate.cpp lib +src/functions/FunctionTrue.cpp lib +src/functions/FunctionUnordered.cpp lib +src/functions/FunctionUpperCase.cpp lib +src/functions/FunctionYearFromDate.cpp lib +src/functions/FunctionYearFromDateTime.cpp lib +src/functions/FunctionYearsFromDuration.cpp lib +src/functions/FunctionZeroOrOne.cpp lib +src/functions/XQUserFunction.cpp lib +src/items/ATDurationOrDerived.cpp lib +src/items/ATQNameConstructor.cpp lib +src/items/ATUntypedAtomic.cpp lib +src/items/AnyAtomicType.cpp lib +src/items/AnyAtomicTypeConstructor.cpp lib +src/items/DatatypeFactory.cpp lib +src/items/DatatypeFactoryTemplate.hpp lib +src/items/DatatypeLookup.cpp lib +src/items/DateOrTimeType.cpp lib +src/items/Item.cpp lib +src/items/Node.cpp lib +src/items/Numeric.cpp lib +src/items/NumericTypeConstructor.cpp lib +src/items/Timezone.cpp lib +src/items/impl/ATAnySimpleTypeImpl.cpp lib +src/items/impl/ATAnySimpleTypeImpl.hpp lib +src/items/impl/ATAnyURIOrDerivedImpl.cpp lib +src/items/impl/ATAnyURIOrDerivedImpl.hpp lib +src/items/impl/ATBase64BinaryOrDerivedImpl.cpp lib +src/items/impl/ATBase64BinaryOrDerivedImpl.hpp lib +src/items/impl/ATBooleanOrDerivedImpl.cpp lib +src/items/impl/ATDateOrDerivedImpl.cpp lib +src/items/impl/ATDateTimeOrDerivedImpl.cpp lib +src/items/impl/ATDecimalOrDerivedImpl.cpp lib +src/items/impl/ATDoubleOrDerivedImpl.cpp lib +src/items/impl/ATDurationOrDerivedImpl.cpp lib +src/items/impl/ATFloatOrDerivedImpl.cpp lib +src/items/impl/ATGDayOrDerivedImpl.cpp lib +src/items/impl/ATGMonthDayOrDerivedImpl.cpp lib +src/items/impl/ATGMonthOrDerivedImpl.cpp lib +src/items/impl/ATGYearMonthOrDerivedImpl.cpp lib +src/items/impl/ATGYearOrDerivedImpl.cpp lib +src/items/impl/ATHexBinaryOrDerivedImpl.cpp lib +src/items/impl/ATHexBinaryOrDerivedImpl.hpp lib +src/items/impl/ATNotationOrDerivedImpl.cpp lib +src/items/impl/ATNotationOrDerivedImpl.hpp lib +src/items/impl/ATQNameOrDerivedImpl.cpp lib +src/items/impl/ATStringOrDerivedImpl.cpp lib +src/items/impl/ATStringOrDerivedImpl.hpp lib +src/items/impl/ATTimeOrDerivedImpl.cpp lib +src/items/impl/ATUntypedAtomicImpl.cpp lib +src/items/impl/ATUntypedAtomicImpl.hpp lib +src/items/impl/NodeImpl.cpp lib +src/lexer/FlexLexer.h lib +src/lexer/XQLexer.l lib +src/lexer/XQLexer.cpp lib +src/lexer/XQLexer.hpp lib +src/lexer/XQillaLexer.hpp lib +src/mapm/m_apm.cpp lib +src/mapm/m_apm_lc.h lib +src/mapm/mapm5sin.c lib +src/mapm/mapm_add.c lib +src/mapm/mapm_cpi.c lib +src/mapm/mapm_div.c lib +src/mapm/mapm_exp.c lib +src/mapm/mapm_fam.c lib +src/mapm/mapm_fft.c lib +src/mapm/mapm_flr.c lib +src/mapm/mapm_fpf.c lib +src/mapm/mapm_gcd.c lib +src/mapm/mapm_lg2.c lib +src/mapm/mapm_lg3.c lib +src/mapm/mapm_log.c lib +src/mapm/mapm_mt.cpp lib +src/mapm/mapm_mul.c lib +src/mapm/mapm_pow.c lib +src/mapm/mapm_rcp.c lib +src/mapm/mapm_rnd.c lib +src/mapm/mapm_set.c lib +src/mapm/mapm_sin.c lib +src/mapm/mapmasin.c lib +src/mapm/mapmasn0.c lib +src/mapm/mapmcbrt.c lib +src/mapm/mapmcnst.c lib +src/mapm/mapmfact.c lib +src/mapm/mapmfmul.c lib +src/mapm/mapmgues.c lib +src/mapm/mapmhasn.c lib +src/mapm/mapmhsin.c lib +src/mapm/mapmipwr.c lib +src/mapm/mapmistr.c lib +src/mapm/mapmpwr2.c lib +src/mapm/mapmrsin.c lib +src/mapm/mapmsqrt.c lib +src/mapm/mapmstck.c lib +src/mapm/mapmutil.c lib +src/mapm/mapmutl2.c lib +src/operators/And.cpp lib +src/operators/ArithmeticOperator.cpp lib +src/operators/ComparisonOperator.cpp lib +src/operators/Divide.cpp lib +src/operators/Equals.cpp lib +src/operators/Except.cpp lib +src/operators/GeneralComp.cpp lib +src/operators/GreaterThan.cpp lib +src/operators/GreaterThanEqual.cpp lib +src/operators/IntegerDivide.cpp lib +src/operators/Intersect.cpp lib +src/operators/LessThan.cpp lib +src/operators/LessThanEqual.cpp lib +src/operators/Minus.cpp lib +src/operators/Mod.cpp lib +src/operators/Multiply.cpp lib +src/operators/NodeComparison.cpp lib +src/operators/NotEquals.cpp lib +src/operators/Or.cpp lib +src/operators/OrderComparison.cpp lib +src/operators/Plus.cpp lib +src/operators/Range.cpp lib +src/operators/UnaryMinus.cpp lib +src/operators/Union.cpp lib +src/parser/QName.cpp lib +src/parser/XQParser.y lib +src/parser/XQParser.cpp lib +src/parser/XQParser.hpp lib +src/runtime/EmptyResult.cpp lib +src/runtime/LazySequenceResult.cpp lib +src/runtime/Result.cpp lib +src/runtime/ResultBuffer.cpp lib +src/runtime/ResultBufferImpl.cpp lib +src/runtime/ResultImpl.cpp lib +src/runtime/Sequence.cpp lib +src/runtime/SequenceResult.cpp lib +src/runtime/SingleResult.cpp lib +src/schema/AnyAtomicTypeDatatypeValidator.cpp lib +src/schema/DocumentCacheImpl.cpp lib +src/schema/SequenceType.cpp lib +src/simple-api/XQQuery.cpp lib +src/simple-api/XQilla.cpp lib +src/utils/ContextUtils.cpp lib +src/utils/DateUtils.cpp lib +src/utils/DateUtils.hpp lib +src/utils/NumUtils.cpp lib +src/utils/PrintAST.cpp lib +src/utils/UCANormalizer.cpp lib +src/utils/UCANormalizer1.cpp lib +src/utils/UCANormalizer2.cpp lib +src/utils/UCANormalizer3.cpp lib +src/utils/UCANormalizer4.cpp lib +src/utils/UTF8Str.cpp lib +src/utils/XMLChCompare.cpp lib +src/utils/XPath2NSUtils.cpp lib +src/utils/XPath2Utils.cpp lib +src/utils/XQillaPlatformUtils.cpp lib +src/utils/XStr.cpp lib +src/xqts/TestSuiteParser.cpp lib +src/xqts/TestSuiteResultListener.cpp lib +src/xqts/TestSuiteRunner.cpp lib +src/samples/xqilla/xqilla-commandline.cpp app=xqilla_cmd +src/samples/basic/basicXQillaUsage.cpp app=basicXQillaUsage +tests/xqts/runner.cpp app=xqtsRunner +include/xqilla/ast/ASTNode.hpp lib +include/xqilla/ast/ASTNodeImpl.hpp lib +include/xqilla/ast/AggregateFunction.hpp lib +include/xqilla/ast/ConstantFoldingFunction.hpp lib +include/xqilla/ast/ConvertFunctionArg.hpp lib +include/xqilla/ast/LocationInfo.hpp lib +include/xqilla/ast/NumericFunction.hpp lib +include/xqilla/ast/StaticResolutionContext.hpp lib +include/xqilla/ast/StaticType.hpp lib +include/xqilla/ast/XPath1Compat.hpp lib +include/xqilla/ast/XQAtomize.hpp lib +include/xqilla/ast/XQCastAs.hpp lib +include/xqilla/ast/XQCastableAs.hpp lib +include/xqilla/ast/XQContextItem.hpp lib +include/xqilla/ast/XQDOMConstructor.hpp lib +include/xqilla/ast/XQDocumentConstructor.hpp lib +include/xqilla/ast/XQElementConstructor.hpp lib +include/xqilla/ast/XQAttributeConstructor.hpp lib +include/xqilla/ast/XQPIConstructor.hpp lib +include/xqilla/ast/XQCommentConstructor.hpp lib +include/xqilla/ast/XQTextConstructor.hpp lib +include/xqilla/ast/XQDebugHook.hpp lib +include/xqilla/ast/XQDocumentOrder.hpp lib +include/xqilla/ast/XQFLWOR.hpp lib +include/xqilla/ast/XQFunction.hpp lib +include/xqilla/ast/XQFunctionCall.hpp lib +include/xqilla/ast/XQGlobalVariable.hpp lib +include/xqilla/ast/XQIf.hpp lib +include/xqilla/ast/XQInstanceOf.hpp lib +include/xqilla/ast/XQLiteral.hpp lib +include/xqilla/ast/XQNav.hpp lib +include/xqilla/ast/XQOperator.hpp lib +include/xqilla/ast/XQOrderingChange.hpp lib +include/xqilla/ast/XQParenthesizedExpr.hpp lib +include/xqilla/ast/XQPredicate.hpp lib +include/xqilla/ast/XQQuantified.hpp lib +include/xqilla/ast/XQSequence.hpp lib +include/xqilla/ast/XQStep.hpp lib +include/xqilla/ast/XQTreatAs.hpp lib +include/xqilla/ast/XQTypeswitch.hpp lib +include/xqilla/ast/XQValidate.hpp lib +include/xqilla/ast/XQVariable.hpp lib +include/xqilla/ast/XQVariableBinding.hpp lib +include/xqilla/axis/AncestorAxis.hpp lib +include/xqilla/axis/AncestorOrSelfAxis.hpp lib +include/xqilla/axis/AttributeAxis.hpp lib +include/xqilla/axis/Axis.hpp lib +include/xqilla/axis/ChildAxis.hpp lib +include/xqilla/axis/DescendantAxis.hpp lib +include/xqilla/axis/DescendantOrSelfAxis.hpp lib +include/xqilla/axis/FollowingAxis.hpp lib +include/xqilla/axis/FollowingSiblingAxis.hpp lib +include/xqilla/axis/NamespaceAxis.hpp lib +include/xqilla/axis/NodeTest.hpp lib +include/xqilla/axis/ParentAxis.hpp lib +include/xqilla/axis/PrecedingAxis.hpp lib +include/xqilla/axis/PrecedingSiblingAxis.hpp lib +include/xqilla/axis/SelfAxis.hpp lib +include/xqilla/context/Collation.hpp lib +include/xqilla/context/ContextHelpers.hpp lib +include/xqilla/context/DynamicContext.hpp lib +include/xqilla/context/ItemFactory.hpp lib +include/xqilla/context/Scope.hpp lib +include/xqilla/context/StaticContext.hpp lib +include/xqilla/context/URIResolver.hpp lib +include/xqilla/context/ModuleResolver.hpp lib +include/xqilla/context/VarHashEntry.hpp lib +include/xqilla/context/VariableStore.hpp lib +include/xqilla/context/VariableTypeStore.hpp lib +include/xqilla/context/XQDebugCallback.hpp lib +include/xqilla/context/XQScopedNamespace.hpp lib +include/xqilla/context/impl/CodepointCollation.hpp lib +include/xqilla/context/impl/CollationImpl.hpp lib +include/xqilla/context/impl/ItemFactoryImpl.hpp lib +include/xqilla/context/impl/VarHashEntryImpl.hpp lib +include/xqilla/context/impl/VariableStoreTemplate.hpp lib +include/xqilla/context/impl/XQContextImpl.hpp lib +include/xqilla/context/impl/XQDynamicContextImpl.hpp lib +include/xqilla/context/impl/XQRemoteDebugger.hpp lib +include/xqilla/dom-api/XPath2Result.hpp lib +include/xqilla/dom-api/XQillaExpression.hpp lib +include/xqilla/dom-api/XQillaNSResolver.hpp lib +include/xqilla/dom-api/impl/XQillaNSResolverImpl.hpp lib +include/xqilla/exceptions/ASTException.hpp lib +include/xqilla/exceptions/ContextException.hpp lib +include/xqilla/exceptions/DynamicErrorException.hpp lib +include/xqilla/exceptions/FunctionException.hpp lib +include/xqilla/exceptions/IllegalArgumentException.hpp lib +include/xqilla/exceptions/ItemException.hpp lib +include/xqilla/exceptions/NamespaceLookupException.hpp lib +include/xqilla/exceptions/QueryInterruptedException.hpp lib +include/xqilla/exceptions/QueryTimeoutException.hpp lib +include/xqilla/exceptions/StaticErrorException.hpp lib +include/xqilla/exceptions/TypeErrorException.hpp lib +include/xqilla/exceptions/TypeNotFoundException.hpp lib +include/xqilla/exceptions/XMLParseException.hpp lib +include/xqilla/exceptions/XPath2ErrorException.hpp lib +include/xqilla/exceptions/XPath2TypeCastException.hpp lib +include/xqilla/exceptions/XPath2TypeMatchException.hpp lib +include/xqilla/exceptions/XQException.hpp lib +include/xqilla/exceptions/XQillaException.hpp lib +include/xqilla/framework/BaseMemoryManager.hpp lib +include/xqilla/framework/ProxyMemoryManager.hpp lib +include/xqilla/framework/ReferenceCounted.hpp lib +include/xqilla/framework/StringPool.hpp lib +include/xqilla/framework/XPath2MemoryManager.hpp lib +include/xqilla/framework/XPath2MemoryManagerImpl.hpp lib +include/xqilla/framework/XQillaExport.hpp lib +include/xqilla/functions/FuncFactory.hpp lib +include/xqilla/functions/FunctionAbs.hpp lib +include/xqilla/functions/FunctionAdjustDateTimeToTimezone.hpp lib +include/xqilla/functions/FunctionAdjustDateToTimezone.hpp lib +include/xqilla/functions/FunctionAdjustTimeToTimezone.hpp lib +include/xqilla/functions/FunctionAvg.hpp lib +include/xqilla/functions/FunctionBaseURI.hpp lib +include/xqilla/functions/FunctionBoolean.hpp lib +include/xqilla/functions/FunctionCeiling.hpp lib +include/xqilla/functions/FunctionCodepointEqual.hpp lib +include/xqilla/functions/FunctionCodepointsToString.hpp lib +include/xqilla/functions/FunctionCollection.hpp lib +include/xqilla/functions/FunctionCompare.hpp lib +include/xqilla/functions/FunctionConcat.hpp lib +include/xqilla/functions/FunctionConstructor.hpp lib +include/xqilla/functions/FunctionContains.hpp lib +include/xqilla/functions/FunctionCount.hpp lib +include/xqilla/functions/FunctionCurrentDate.hpp lib +include/xqilla/functions/FunctionCurrentDateTime.hpp lib +include/xqilla/functions/FunctionCurrentTime.hpp lib +include/xqilla/functions/FunctionData.hpp lib +include/xqilla/functions/FunctionDateTime.hpp lib +include/xqilla/functions/FunctionDayFromDate.hpp lib +include/xqilla/functions/FunctionDayFromDateTime.hpp lib +include/xqilla/functions/FunctionDaysFromDuration.hpp lib +include/xqilla/functions/FunctionDeepEqual.hpp lib +include/xqilla/functions/FunctionDefaultCollation.hpp lib +include/xqilla/functions/FunctionDistinctValues.hpp lib +include/xqilla/functions/FunctionDoc.hpp lib +include/xqilla/functions/FunctionDocAvailable.hpp lib +include/xqilla/functions/FunctionDocumentURI.hpp lib +include/xqilla/functions/FunctionEmpty.hpp lib +include/xqilla/functions/FunctionEncodeForUri.hpp lib +include/xqilla/functions/FunctionEndsWith.hpp lib +include/xqilla/functions/FunctionError.hpp lib +include/xqilla/functions/FunctionEscapeHtmlUri.hpp lib +include/xqilla/functions/FunctionExactlyOne.hpp lib +include/xqilla/functions/FunctionExists.hpp lib +include/xqilla/functions/FunctionFalse.hpp lib +include/xqilla/functions/FunctionFloor.hpp lib +include/xqilla/functions/FunctionHoursFromDateTime.hpp lib +include/xqilla/functions/FunctionHoursFromDuration.hpp lib +include/xqilla/functions/FunctionHoursFromTime.hpp lib +include/xqilla/functions/FunctionId.hpp lib +include/xqilla/functions/FunctionIdref.hpp lib +include/xqilla/functions/FunctionImplicitTimezone.hpp lib +include/xqilla/functions/FunctionInScopePrefixes.hpp lib +include/xqilla/functions/FunctionIndexOf.hpp lib +include/xqilla/functions/FunctionInsertBefore.hpp lib +include/xqilla/functions/FunctionIriToUri.hpp lib +include/xqilla/functions/FunctionLang.hpp lib +include/xqilla/functions/FunctionLast.hpp lib +include/xqilla/functions/FunctionLocalNameFromQName.hpp lib +include/xqilla/functions/FunctionLocalname.hpp lib +include/xqilla/functions/FunctionLookup.hpp lib +include/xqilla/functions/FunctionLowerCase.hpp lib +include/xqilla/functions/FunctionMatches.hpp lib +include/xqilla/functions/FunctionMax.hpp lib +include/xqilla/functions/FunctionMin.hpp lib +include/xqilla/functions/FunctionMinutesFromDateTime.hpp lib +include/xqilla/functions/FunctionMinutesFromDuration.hpp lib +include/xqilla/functions/FunctionMinutesFromTime.hpp lib +include/xqilla/functions/FunctionMonthFromDate.hpp lib +include/xqilla/functions/FunctionMonthFromDateTime.hpp lib +include/xqilla/functions/FunctionMonthsFromDuration.hpp lib +include/xqilla/functions/FunctionName.hpp lib +include/xqilla/functions/FunctionNamespaceURIForPrefix.hpp lib +include/xqilla/functions/FunctionNamespaceURIFromQName.hpp lib +include/xqilla/functions/FunctionNamespaceUri.hpp lib +include/xqilla/functions/FunctionNilled.hpp lib +include/xqilla/functions/FunctionNodeName.hpp lib +include/xqilla/functions/FunctionNormalizeSpace.hpp lib +include/xqilla/functions/FunctionNormalizeUnicode.hpp lib +include/xqilla/functions/FunctionNot.hpp lib +include/xqilla/functions/FunctionNumber.hpp lib +include/xqilla/functions/FunctionOneOrMore.hpp lib +include/xqilla/functions/FunctionPosition.hpp lib +include/xqilla/functions/FunctionPrefixFromQName.hpp lib +include/xqilla/functions/FunctionQName.hpp lib +include/xqilla/functions/FunctionRemove.hpp lib +include/xqilla/functions/FunctionReplace.hpp lib +include/xqilla/functions/FunctionResolveQName.hpp lib +include/xqilla/functions/FunctionResolveURI.hpp lib +include/xqilla/functions/FunctionReverse.hpp lib +include/xqilla/functions/FunctionRoot.hpp lib +include/xqilla/functions/FunctionRound.hpp lib +include/xqilla/functions/FunctionRoundHalfToEven.hpp lib +include/xqilla/functions/FunctionSecondsFromDateTime.hpp lib +include/xqilla/functions/FunctionSecondsFromDuration.hpp lib +include/xqilla/functions/FunctionSecondsFromTime.hpp lib +include/xqilla/functions/FunctionStartsWith.hpp lib +include/xqilla/functions/FunctionStaticBaseURI.hpp lib +include/xqilla/functions/FunctionString.hpp lib +include/xqilla/functions/FunctionStringJoin.hpp lib +include/xqilla/functions/FunctionStringLength.hpp lib +include/xqilla/functions/FunctionStringToCodepoints.hpp lib +include/xqilla/functions/FunctionSubsequence.hpp lib +include/xqilla/functions/FunctionSubstring.hpp lib +include/xqilla/functions/FunctionSubstringAfter.hpp lib +include/xqilla/functions/FunctionSubstringBefore.hpp lib +include/xqilla/functions/FunctionSum.hpp lib +include/xqilla/functions/FunctionTimezoneFromDate.hpp lib +include/xqilla/functions/FunctionTimezoneFromDateTime.hpp lib +include/xqilla/functions/FunctionTimezoneFromTime.hpp lib +include/xqilla/functions/FunctionTokenize.hpp lib +include/xqilla/functions/FunctionTrace.hpp lib +include/xqilla/functions/FunctionTranslate.hpp lib +include/xqilla/functions/FunctionTrue.hpp lib +include/xqilla/functions/FunctionUnordered.hpp lib +include/xqilla/functions/FunctionUpperCase.hpp lib +include/xqilla/functions/FunctionYearFromDate.hpp lib +include/xqilla/functions/FunctionYearFromDateTime.hpp lib +include/xqilla/functions/FunctionYearsFromDuration.hpp lib +include/xqilla/functions/FunctionZeroOrOne.hpp lib +include/xqilla/functions/XQUserFunction.hpp lib +include/xqilla/fulltext/AllMatches.hpp lib +include/xqilla/fulltext/DefaultTokenizer.hpp lib +include/xqilla/fulltext/DefaultTokenStore.hpp lib +include/xqilla/fulltext/FTAnd.hpp lib +include/xqilla/fulltext/FTContains.hpp lib +include/xqilla/fulltext/FTContent.hpp lib +include/xqilla/fulltext/FTDistance.hpp lib +include/xqilla/fulltext/FTMildnot.hpp lib +include/xqilla/fulltext/FTOption.hpp lib +include/xqilla/fulltext/FTOr.hpp lib +include/xqilla/fulltext/FTOrder.hpp lib +include/xqilla/fulltext/FTRange.hpp lib +include/xqilla/fulltext/FTScope.hpp lib +include/xqilla/fulltext/FTSelection.hpp lib +include/xqilla/fulltext/FTUnaryNot.hpp lib +include/xqilla/fulltext/FTWindow.hpp lib +include/xqilla/fulltext/FTWords.hpp lib +include/xqilla/fulltext/Match.hpp lib +include/xqilla/fulltext/TokenInfo.hpp lib +include/xqilla/fulltext/Tokenizer.hpp lib +include/xqilla/fulltext/TokenStore.hpp lib +include/xqilla/items/ATAnySimpleType.hpp lib +include/xqilla/items/ATAnyURIOrDerived.hpp lib +include/xqilla/items/ATBase64BinaryOrDerived.hpp lib +include/xqilla/items/ATBooleanOrDerived.hpp lib +include/xqilla/items/ATDateOrDerived.hpp lib +include/xqilla/items/ATDateTimeOrDerived.hpp lib +include/xqilla/items/ATDecimalOrDerived.hpp lib +include/xqilla/items/ATDoubleOrDerived.hpp lib +include/xqilla/items/ATDurationOrDerived.hpp lib +include/xqilla/items/ATFloatOrDerived.hpp lib +include/xqilla/items/ATGDayOrDerived.hpp lib +include/xqilla/items/ATGMonthDayOrDerived.hpp lib +include/xqilla/items/ATGMonthOrDerived.hpp lib +include/xqilla/items/ATGYearMonthOrDerived.hpp lib +include/xqilla/items/ATGYearOrDerived.hpp lib +include/xqilla/items/ATHexBinaryOrDerived.hpp lib +include/xqilla/items/ATNotationOrDerived.hpp lib +include/xqilla/items/ATQNameConstructor.hpp lib +include/xqilla/items/ATQNameOrDerived.hpp lib +include/xqilla/items/ATStringOrDerived.hpp lib +include/xqilla/items/ATTimeOrDerived.hpp lib +include/xqilla/items/ATUntypedAtomic.hpp lib +include/xqilla/items/AnyAtomicType.hpp lib +include/xqilla/items/AnyAtomicTypeConstructor.hpp lib +include/xqilla/items/DatatypeFactory.hpp lib +include/xqilla/items/DatatypeLookup.hpp lib +include/xqilla/items/DateOrTimeType.hpp lib +include/xqilla/items/Item.hpp lib +include/xqilla/items/ItemConstructor.hpp lib +include/xqilla/items/Node.hpp lib +include/xqilla/items/Numeric.hpp lib +include/xqilla/items/NumericTypeConstructor.hpp lib +include/xqilla/items/Timezone.hpp lib +include/xqilla/items/impl/ATBooleanOrDerivedImpl.hpp lib +include/xqilla/items/impl/ATDecimalOrDerivedImpl.hpp lib +include/xqilla/items/impl/ATDoubleOrDerivedImpl.hpp lib +include/xqilla/items/impl/ATFloatOrDerivedImpl.hpp lib +include/xqilla/items/impl/ATQNameOrDerivedImpl.hpp lib +include/xqilla/items/impl/NodeImpl.hpp lib +include/xqilla/items/impl/ATDurationOrDerivedImpl.hpp lib +include/xqilla/items/impl/ATDateTimeOrDerivedImpl.hpp lib +include/xqilla/items/impl/ATDateOrDerivedImpl.hpp lib +include/xqilla/items/impl/ATTimeOrDerivedImpl.hpp lib +include/xqilla/items/impl/ATGDayOrDerivedImpl.hpp lib +include/xqilla/items/impl/ATGMonthDayOrDerivedImpl.hpp lib +include/xqilla/items/impl/ATGMonthOrDerivedImpl.hpp lib +include/xqilla/items/impl/ATGYearMonthOrDerivedImpl.hpp lib +include/xqilla/items/impl/ATGYearOrDerivedImpl.hpp lib +include/xqilla/mapm/m_apm.h lib +include/xqilla/operators/And.hpp lib +include/xqilla/operators/ArithmeticOperator.hpp lib +include/xqilla/operators/ComparisonOperator.hpp lib +include/xqilla/operators/Divide.hpp lib +include/xqilla/operators/Equals.hpp lib +include/xqilla/operators/Except.hpp lib +include/xqilla/operators/GeneralComp.hpp lib +include/xqilla/operators/GreaterThan.hpp lib +include/xqilla/operators/GreaterThanEqual.hpp lib +include/xqilla/operators/IntegerDivide.hpp lib +include/xqilla/operators/Intersect.hpp lib +include/xqilla/operators/LessThan.hpp lib +include/xqilla/operators/LessThanEqual.hpp lib +include/xqilla/operators/Minus.hpp lib +include/xqilla/operators/Mod.hpp lib +include/xqilla/operators/Multiply.hpp lib +include/xqilla/operators/NodeComparison.hpp lib +include/xqilla/operators/NotEquals.hpp lib +include/xqilla/operators/Or.hpp lib +include/xqilla/operators/OrderComparison.hpp lib +include/xqilla/operators/Plus.hpp lib +include/xqilla/operators/Range.hpp lib +include/xqilla/operators/UnaryMinus.hpp lib +include/xqilla/operators/Union.hpp lib +include/xqilla/parser/QName.hpp lib +include/xqilla/runtime/EmptyResult.hpp lib +include/xqilla/runtime/LazySequenceResult.hpp lib +include/xqilla/runtime/Result.hpp lib +include/xqilla/runtime/ResultBuffer.hpp lib +include/xqilla/runtime/ResultBufferImpl.hpp lib +include/xqilla/runtime/ResultImpl.hpp lib +include/xqilla/runtime/Sequence.hpp lib +include/xqilla/runtime/SequenceResult.hpp lib +include/xqilla/runtime/SingleResult.hpp lib +include/xqilla/schema/AnyAtomicTypeDatatypeValidator.hpp lib +include/xqilla/schema/DocumentCache.hpp lib +include/xqilla/schema/DocumentCacheImpl.hpp lib +include/xqilla/schema/SequenceType.hpp lib +include/xqilla/simple-api/XQQuery.hpp lib +include/xqilla/simple-api/XQilla.hpp lib +include/xqilla/utils/ContextUtils.hpp lib +include/xqilla/utils/NumUtils.hpp lib +include/xqilla/utils/PrintAST.hpp lib +include/xqilla/utils/UCANormalizer.hpp lib +include/xqilla/utils/UTF8Str.hpp lib +include/xqilla/utils/XMLChCompare.hpp lib +include/xqilla/utils/XPath2NSUtils.hpp lib +include/xqilla/utils/XPath2Utils.hpp lib +include/xqilla/utils/XQillaPlatformUtils.hpp lib +include/xqilla/utils/XStr.hpp lib +include/xqilla/xqilla-dom3.hpp lib +include/xqilla/xqilla-simple.hpp lib +include/xqilla/xqts/TestSuiteParser.hpp lib +include/xqilla/xqts/TestSuiteResultListener.hpp lib +include/xqilla/xqts/TestSuiteRunner.hpp lib diff --git a/wintools/xqilla_cmd.dsp.src b/wintools/xqilla_cmd.dsp.src new file mode 100755 index 00000000..fb842ad0 --- /dev/null +++ b/wintools/xqilla_cmd.dsp.src @@ -0,0 +1,87 @@ +# Microsoft Developer Studio Project File - Name="@project_name@" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=@project_name@ - 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 "@project_name@.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 "@project_name@.mak" CFG="@project_name@ - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "@project_name@ - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "@project_name@ - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "@project_name@ - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "@outdir@\Release" +# PROP BASE Intermediate_Dir "@outdir@\Release\@project_name@" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "@outdir@\Release" +# PROP Intermediate_Dir "@outdir@\Release\@project_name@" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../../include" /I "@XERCES_WINHOME@/include" /I "@XERCES_WINHOME@/src"/I "@include@" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /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 /nologo /subsystem:console /machine:I386 +# ADD LINK32 /libpath:@outdir@/Release @XERCES_LIB@.lib @XQILLA_LIB@.lib /libpath:@XERCES_LIBHOME@/Release /nologo /out:@outdir@/Release/xqilla.exe /subsystem:console /machine:I386 /nodefaultlib:"libcmt" + +!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "@outdir@\Debug" +# PROP BASE Intermediate_Dir "@outdir@\Debug\@project_name@" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "@outdir@\Debug" +# PROP Intermediate_Dir "@outdir@\Debug\@project_name@" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "." /I "../../include" /I "@XERCES_WINHOME@/include" /I "@XERCES_WINHOME@/src" /I "@include@" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /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 /libpath:@outdir@/Debug @XERCES_LIB@d.lib @XQILLA_LIB@d.lib /libpath:@XERCES_LIBHOME@/Debug /nologo /out:@outdir@/Debug/xqilla.exe /pdb:"@outdir@/Debug/xqilla.pdb" /subsystem:console /debug /machine:I386 /nodefaultlib:"libcmt" + +!ENDIF + +# Begin Target + +# Name "@project_name@ - Win32 Release" +# Name "@project_name@ - Win32 Debug" +@SOURCE_FILES@ +# End Target +# End Project diff --git a/wintools/xqilla_cmd.vcproj.src b/wintools/xqilla_cmd.vcproj.src new file mode 100644 index 00000000..513a12f0 --- /dev/null +++ b/wintools/xqilla_cmd.vcproj.src @@ -0,0 +1,399 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +@SOURCE_FILES@ + + + + diff --git a/wintools/xqilla_dsp.src b/wintools/xqilla_dsp.src new file mode 100755 index 00000000..0c4fe699 --- /dev/null +++ b/wintools/xqilla_dsp.src @@ -0,0 +1,93 @@ +# Microsoft Developer Studio Project File - Name="@project_name@" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=@project_name@ - 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 "@project_name@.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 "@project_name@.mak" CFG="@project_name@ - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "@project_name@ - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "@project_name@ - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "@project_name@ - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "@outdir@\Release" +# PROP BASE Intermediate_Dir "@outdir@\Release\@project_name@" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "@outdir@\Release" +# PROP Intermediate_Dir "@outdir@\Release\@project_name@" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XQILLA_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../include" /I "../../src/lexer" /I "@XERCES_WINHOME@/include" /I "@XERCES_WINHOME@/src" /I "@include@" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XQILLA_APIS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x410 /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 /libpath:"@outdir@/Release" @XERCES_LIB@.lib /nologo /base:"0x69000000" /dll /machine:I386 /out:"@outdir@/Release/@XQILLA_LIB@.dll" /implib:"@outdir@/Release/@XQILLA_LIB@.lib" /libpath:"@XERCES_WINHOME@/Build/Win32/VC6/Release" /OPT:REF +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "@outdir@\Debug" +# PROP BASE Intermediate_Dir "@outdir@\Debug\@project_name@" +# PROP BASE Target_Dir "" +# PROP Use_MFC 2 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "@outdir@\Debug" +# PROP Intermediate_Dir "@outdir@\Debug\@project_name@" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XQILLA_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "../../include" /I "../../src/lexer" /I "@XERCES_WINHOME@/include" /I "@XERCES_WINHOME@/src" /I "@include@" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "XQILLA_APIS" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x410 /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 /libpath:"@outdir@/Debug" @XERCES_LIB@D.lib /nologo /base:"0x69000000" /dll /debug /machine:I386 /out:"@outdir@/Debug/@XQILLA_LIB@d.dll" /implib:"@outdir@/Debug/@XQILLA_LIB@d.lib" /pdbtype:sept /pdb:"@outdir@/Debug/@XQILLA_LIB@.pdb" /libpath:"@XERCES_WINHOME@/Build/Win32/VC6/Debug" + +!ENDIF + +# Begin Target + +# Name "@project_name@ - Win32 Release" +# Name "@project_name@ - Win32 Debug" +@SOURCE_FILES@ +# End Target +# End Project diff --git a/wintools/xqilla_vcproj.src b/wintools/xqilla_vcproj.src new file mode 100644 index 00000000..155b7b05 --- /dev/null +++ b/wintools/xqilla_vcproj.src @@ -0,0 +1,407 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +@SOURCE_FILES@ + + + +